49
CHAPTER 1. THE MENTAL LANDSCAPE
11
realized that the design of the data structures for a program was at least as important as the
design of subroutines and control structures. Top-down programming doesn’t give adequate
consideration to the data that the program manipulates.
Another problem with strict top-down programming is that it makes it difficult to reuse
work done for other projects. By starting with a particular problem and subdividing it into
convenient pieces, top-down programming tends to produce a design that is unique to that
problem. It is unlikely that you will be able to take a large chunk of programming from another
program and fit it into your project, at least not without extensive modification. Producing
high-quality programs is difficult and expensive, so programmers and the people who employ
them are always eager to reuse past work.
∗ ∗ ∗
So, in practice, top-down design is often combined with bottom-up design. In bottom-up
design, the approach is to start “at the bottom,” with problems that you already know how to
solve (and for which you might already have a reusable software component at hand). From
there, you can work upwards towards a solution to the overall problem.
The reusable components shouldbe as “modular” as possible. A module is a component of a
larger system that interacts with the rest of the system ina simple, well-defined,straightforward
manner. The idea is that a module can be “plugged into” a system. The details of what goes on
inside the module are not important to the system as a whole, as long as the module fulfills its
assigned role correctly. This is called information hiding, and it is one of the most important
principles of software engineering.
One common format for software modules is to contain some data, along with some sub-
routines for manipulating that data. For example, a mailing-list module might contain a list of
names and addresses along with a subroutine for adding a new name, a subroutine for printing
mailing labels, and so forth. In such modules, the data itself is often hidden inside the module;
aprogram that uses the module can then manipulate the data only indirectly, by calling the
subroutines provided by the module. This protects the data, since it can only be manipulated
in known, well-defined ways. And it makes it easier for programs to use the module, since they
don’t have to worry about the details of how the data is represented. Information about the
representation of the data is hidden.
Modules that could support this kind of information-hiding became common in program-
ming languages in the early 1980s. Since then, a more advanced form of the same idea has
more or less taken over software engineering. This latest approach is called object-oriented
programming, often abbreviated as OOP.
The centralconcept of object-oriented programming is the object, which is a kind of module
containing data and subroutines. The point-of-view in OOP is that an object is a kind of self-
sufficient entity that has an internal state (the data it contains) and that can respond to
messages (calls to its subroutines). A mailing list object, for example, has a state consisting
of a list of names and addresses. If you send it a message telling it to add a name, it will
respond by modifying its state to reflect the change. If you send it a message telling it to print
itself, it will respond by printing out its list of names and addresses.
The OOP approach to software engineering is to start by identifying the objects involved in
aproblem and the messages that those objects should respond to. The program that results is
acollection of objects, each with its own data and its own set of responsibilities. The objects
interact by sending messages to each other. There is not much “top-down” in the large-scale
design of such a program, and people used to more traditional programs can have a hard time
getting used to OOP. However, people who use OOP would claim that object-oriented programs
Online Remove password from protected PDF file If we need a password from you, it will not be read or stored. To hlep protect your PDF document in C# project, XDoc.PDF provides some PDF security settings.
change security on pdf; creating a secure pdf document VB Imaging - VB Code 93 Generator Tutorial with a higher density and data security compared with barcode on a certain page of PDF or Word use barcode relocation API solution to change barcode position
create pdf security; convert locked pdf to word online
45
CHAPTER 1. THE MENTAL LANDSCAPE
12
tend to be better models of the way the world itself works, and that they are therefore easier
to write, easier to understand, and more likely to be correct.
∗ ∗ ∗
You should think of objects as “knowing” how to respond to certain messages. Different
objects might respond to the same message in different ways. For example, a “print” message
would produce very different results, depending on the object it is sent to. This property of
objects—that different objects can respond to the same message in different ways—is called
polymorphism.
It is common for objects to bear a kind of “family resemblance” to one another. Objects
that contain the same type of data and that respond to the same messages in the same way
belong to the same class. (In actual programming, the class is primary; that is, a class is
created and then one or more objects are created using that class as a template.) But objects
can be similar without being in exactly the same class.
For example, consider a drawing program that lets the user draw lines, rectangles, ovals,
polygons, and curves on the screen. In the program, each visible object on the screen could be
represented by a software object in the program. There would be five classes of objects in the
program, one for each type of visible object that can be drawn. All the lines would belong to
one class, all the rectangles to another class, and so on. These classes are obviously related;
all of them represent “drawable objects.” They would, for example, all presumably be able to
respond to a “draw yourself” message. Another level of grouping, based on the data needed
to represent each type of object, is less obvious, but would be very useful in a program: We
can group polygons and curves together as “multipoint objects,” while lines, rectangles, and
ovals are “two-point objects.” (A line is determined by its endpoints, a rectangle by two of its
corners, and an oval by two corners of the rectangle that contains it.) We could diagram these
relationships as follows:
DrawableObject
MultipointObject
TwoPointObject
Polygon
Curve
Line
Rectangle
Oval
DrawableObject, MultipointObject, and TwoPointObject would be classes in the program.
MultipointObject and TwoPointObject would be subclasses of DrawableObject. The class
Line would be a subclass of TwoPointObject and (indirectly) of DrawableObject. A subclass of
aclass is saidto inherit the properties of that class. The subclass canaddto its inheritance and
it can even“override” part of that inheritance (by defininga different response to some method).
Nevertheless, lines, rectangles, and so on are drawable objects, and the class DrawableObject
expresses this relationship.
Inheritance is a powerful means for organizing a program. It is also related to the problem
of reusing software components. A class is the ultimate reusable component. Not only can it
be reused directly if it fits exactly into a program you are trying to write, but if it just almost
43
CHAPTER 1. THE MENTAL LANDSCAPE
13
fits, you can still reuse it by defining a subclass and making only the small changes necessary
to adapt it exactly to your needs.
So, OOP is meant to be both a superior program-development tool and a partial solution
to the software reuse problem. Objects, classes, and object-oriented programming will be
important themes throughout the rest of this text. You will start using objects that are built
into the Java language in the next chapter, and inChapter5you will begin creating your own
classes and objects.
1.6 The Modern User Interface
W
hen computers werefirst introduced,ordinary people—includingmost programmers—
(online)
couldn’t get near them. They were locked up in rooms with white-coated attendants who would
take your programs and data, feed them to the computer, and return the computer’s response
some time later. When timesharing—where the computer switches its attention rapidly from
one person to another—was invented in the 1960s, it became possible for several people to
interact directly with the computer at the same time. On a timesharing system, users sit at
“terminals” where they type commands to the computer, and the computer types back its re-
sponse. Early personal computers also used typed commands and responses, except that there
was only one person involved at a time. This type of interaction between a user and a computer
is called a command-line interface.
Today, of course, most people interact with computers in a completely different way. They
use a Graphical User Interface, or GUI. The computer draws interface components on the
screen. The components include things like windows, scroll bars, menus, buttons, and icons.
Usually, a mouse is used to manipulate such components. Assuming that you have not just
been teleported in from the 1970s, youare no doubt already familiar withthe basics of graphical
user interfaces!
Alot of GUI interface components have become fairly standard. That is, they have similar
appearance and behavior on many different computer platforms including Mac OS, Windows,
and Linux. Java programs, which are supposed to run on many different platforms without
modification to the program, can use all the standard GUI components. They might vary a
little in appearance from platform to platform, but their functionality should be identical on
any computer on which the program runs.
Shown below is an image of a very simple Java program—actually an “applet”, since it is
meant to appear on a Web page—that shows a few standard GUI interface components. There
are four components that the user can interact with: a button, a checkbox, a text field, and a
pop-up menu. These components are labeled. There are a few other components in the applet.
The labels themselves are components (even though you can’t interact with them). The right
half of the applet is a text area component, which can display multiple lines of text. And a
scrollbar component appears alongside the text area when the number of lines of text becomes
larger than will fit in the text area. And in fact, in Java terminology, the whole applet is itself
considered to be a “component.”
40
CHAPTER 1. THE MENTAL LANDSCAPE
14
Now, Java actually has two complete sets of GUI components. One of these, the AWT or
Abstract Windowing Toolkit, was available in the original version of Java. The other, which
is known as Swing, is included in Java version 1.2 or later, and is used in preference to the
AWT in most modern Java programs. The applet that is shown above uses components that
are part of Swing. If Java is not installed in your Web browser or if your browser uses a very old
version of Java, you might get an error when the browser tries to load the applet. Remember
that most of the applets in this textbook require Java 5.0 (or higher).
When a user interacts with the GUI components in this applet, an “event” is generated.
For example, clicking a push button generates an event, and pressing return while typing in a
text field generates an event. Each time an event is generated, a message is sent to the applet
telling it that the event has occurred, and the applet responds according to its program. In
fact, the program consists mainly of “event handlers” that tell the applet how to respond to
various types of events. In this example, the applet has been programmed to respond to each
event by displaying a message in the text area. In a more realistic example, the event handlers
would have more to do.
The use of the term “message” here is deliberate. Messages, as you saw in the previous sec-
tion, are sent to objects. In fact, Java GUI components are implemented as objects. Java
includes many predefined classes that represent various types of GUI components. Some of
these classes are subclasses of others. Here is a diagram showing some of Swing’s GUI classes
and their relationships:
JComponent
JLabel
JAbstractButton
JComboBox
JTextComponent
JButton
JToggleButton
JCheckBox
JRadioButton
JScrollbar
JTextField
JTextArea
Don’t worry about the details for now, but try to get some feel about how object-oriented
programming and inheritance are used here. Note that all the GUI classes are subclasses,
directly or indirectly, of a class called JComponent, which represents general properties that are
shared by all Swing components. Two of the direct subclasses of JComponent themselves have
subclasses. The classes JTextArea and JTextField, which have certain behaviors in common,
are grouped together as subclasses of JTextComponent. Similarly JButton and JToggleButton
49
CHAPTER 1. THE MENTAL LANDSCAPE
15
are subclasses of JAbstractButton, which represents properties common to both buttons and
checkboxes. (JComboBox, by the way, is the Swing class that represents pop-up menus.)
Just from this brief discussion, perhaps you can see how GUI programming can make effec-
tive use of object-oriented design. In fact, GUI’s, with their “visible objects,” are probably a
major factor contributing to the popularity of OOP.
Programming with GUI components and events is one of the most interesting aspects of
Java. However, we will spend several chapters on the basics before returning to this topic in
Chapter 6.
1.7 The Internet and Beyond
C
omputers can be connected together on networks. A computer on a network can
(online)
communicate with other computers on the same network by exchanging data and files or by
sending and receiving messages. Computers on a network can even work together on a large
computation.
Today, millions of computers throughout the world are connected to a single huge network
called the Internet. New computers are being connected to the Internet every day, both
by wireless communication and by physical connection using technologies such as DSL, cable
modems, or Ethernet.
There are elaborate protocols for communication over the Internet. A protocol is simply a
detailed specification of how communication is to proceed. For two computers to communicate
at all, they must both be using the same protocols. The most basic protocols on the Internet are
the Internet Protocol (IP), which specifies how data is to be physically transmitted from one
computer to another, and the Transmission Control Protocol (TCP), which ensures that
data sent using IP is received in its entirety and without error. These two protocols, which are
referred to collectively as TCP/IP, provide a foundation for communication. Other protocols
use TCP/IP to send specific types of information such as web pages, electronic mail, and data
files.
All communication over the Internet is in the form of packets. A packet consists of some
data being sent from one computer to another, along with addressing information that indicates
where on the Internet that data is supposed to go. Think of a packet as an envelope with an
address on the outside and a message on the inside. (The message is the data.) The packet
also includes a “return address,” that is, the address of the sender. A packet can hold only
alimited amount of data; longer messages must be divided among several packets, which are
then sent individually over the net and reassembled at their destination.
Every computer on the Internet has an IP address, a number that identifies it uniquely
among all the computers on the net. The IP address is used for addressing packets. A computer
can only send data to another computer on the Internet if it knows that computer’s IP address.
Since people prefer to use names rather than numbers, most computers are also identified by
names, called domain names. For example, the main computer of the Mathematics Depart-
ment at Hobart and William Smith Colleges has the domain name math.hws.edu. (Domain
names are just for convenience; your computer still needs to know IP addresses before it can
communicate. There are computers on the Internet whose job it is to translate domain names
to IP addresses. When you use a domain name, your computer sends a message to a domain
name server to find out the corresponding IP address. Then, your computer uses the IP address,
rather than the domain name, to communicate with the other computer.)
The Internet provides a number of services to the computers connected to it (and, of course,
49
CHAPTER 1. THE MENTAL LANDSCAPE
16
to the users of those computers). These services use TCP/IP to send various types of data over
the net. Among the most popular services are instant messaging, file sharing, electronic mail,
and the World-Wide Web. Each service has its own protocols, which are used to control
transmission of data over the network. Each service also has some sort of user interface, which
allows the user to view, send, and receive data through the service.
For example, the email service uses a protocol known as SMTP (Simple Mail Transfer
Protocol) to transfer email messages from one computer to another. Other protocols, such as
POP and IMAP, are used to fetch messages from an email account so that the recipient can
read them. A person who uses email, however, doesn’t need to understand or even know about
these protocols. Instead, they are used behind the scenes by computer programs to send and
receive email messages. These programs provide the user with an easy-to-use user interface to
the underlying network protocols.
The World-Wide Web is perhaps the most exciting of network services. The World-Wide
Web allows you to request pages of information that are stored on computers all over the
Internet. A Web page can contain links to other pages on the same computer from which it
was obtained or to other computers anywhere in the world. A computer that stores such pages
of information is called a web server. The user interface to the Web is the type of program
known as a web browser. Common web browsers include Internet Explorer and Firefox. You
use a Web browser to request a page of information. The browser sends a request for that
page to the computer on which the page is stored, and when a response is received from that
computer, the web browser displays it to you in a neatly formatted form. A web browser is just
auser interface to the Web. Behind the scenes, the web browser uses a protocol called HTTP
(HyperText Transfer Protocol) to send each page request and to receive the response from the
web server.
∗ ∗ ∗
Now just what, you might be thinking, does all this have to do with Java? In fact, Java
is intimately associated with the Internet and the World-Wide Web. As you have seen in the
previous section, special Java programs called applets are meant to be transmitted over the
Internet and displayed on Web pages. A Web server transmits a Java applet just as it would
transmit any other type of information. A Web browser that understands Java—that is, that
includes an interpreter for the Java Virtual Machine—can then run the applet right on the Web
page. Since applets are programs, they can do almost anything, including complex interaction
with the user. With Java, a Web page becomes more than just a passive display of information.
It becomes anything that programmers can imagine and implement.
But applets are only one aspect of Java’s relationship with the Internet, and not the major
one. In fact, as both Java and the Internet have matured, applets have become much less
important. At the same time, however, Java has increasingly been used to write complex,
stand-alone applications that do not depend on a Web browser. Many of these programs are
network-related. For example many of the largest and most complex web sites use web server
software that is written in Java. Java includes excellent support for network protocols, and
its platform independence makes it possible to write network programs that work on many
different types of computer. You will learn about Java’s network support inChapter11.
Its association with the Internet is not Java’s only advantage. But many good programming
languages have been invented only to be soon forgotten. Java has had the good luck to ride on
the coattails of the Internet’s immense and increasing popularity.
∗ ∗ ∗
As Javahas matured, its applications have reached far beyondthe Net. The standardversion
Documents you may be interested
Documents you may be interested