Beginning Java Objects: Chapter 3 Objects and Classes
Objects as Attributes
When we first discussed the attributes and methods associated with the
Student class, we stated that some of the attributes could be
represented by built-in data types provided by the Java language, whereas
the types of a few others (advisor, courseLoad,
and transcript) were left undefined. Let's now put what we
learned about abstract data types to good use. Rather than declaring the
Student class's advisor attribute as simply a
String representing the advisor's name, we'll declare it to be
of an abstract data type — namely, type Professor,
another user-defined class/type:
(We'll still leave the courseLoad and transcript
attributes' data types undefined for the time being; we'll see how to
handle these attributes a bit later.) By having declared the
advisor attribute to be of type Professor, we've
just enabled a Student object to maintain a handle on its
actual Professor advisor object. The Professor
class, in turn, might be defined to have attributes as follows:
(We will leave the type of teachingAssignments open for the
time being.) Again, by having declared the studentAdvisee
attribute to be of type Student, we've just given a
Professor object a way to hold onto its actual
Student advisee object.
The methods of the Professor class might be as follows:
- transferToDepartment
- adviseStudent
- agreeToTeachCourse
- assignGrades
A few noteworthy points about the Professor class:
- It is likely that a professor will be advising several students
simultaneously, so having an attribute like
studentAdvisee
that can only track a single Student object is not terribly
useful. We'll discuss techniques for handling this in Chapter 6, when we
talk about collections, which we'll also see as being useful for
defining the teachingAssignments attribute of
Professor and the courseLoad and
transcript attributes of Student.
- The
worksFor attribute represents the department to which
a professor is assigned. We can choose to represent this as either a simple
String representing the department name — for example,
'MATH' — or as a reference to a Department
object — specifically, the Department object
representing the 'real-world' Math Department. As we'll see in Part 2 of
this book, the decision of whether or not we need to invent an abstract
data type to represent a particular real-world concept is not always clear-
cut.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|