Sie sind auf Seite 1von 47

Copyright 2002, Systems and Computer Engineering,

Carleton University. 94.204-02-Object.ppt


1
94.204* Object-Oriented Software
Development

Unit 2

Fundamentals of Object-Oriented
Programming in Java:
Objects and Classes







Revised January 2002
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
2
What is an Object?

Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
3
What is an Object?
How many people thought:
An object is a chunk of code consisting of
data and the methods/functions that
manipulate that data?

Thats o.k., but we can do better...
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
4
What is an Object?
An object is a software machine that:
is capable of performing, on request,
one or more specialized functions (i.e.,
it provides services)
has explicit interfaces through which it
interacts with other objects (provides
(and requests!) services)
hides its implementation from other
objects

Bran Selic, V.P. R & D,
ObjecTime Limited
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
5
What is an Object?
This definition includes:
abstract data types (stacks, queues,
complex numbers, customer records)
acknowledge-timeout-retry protocols
for computer communications software
finite state machines
layers & subsystems in large systems

The object paradigm is based on the idea
that we can construct software by assembling
communities of interacting objects
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
6
Properties of Objects
An object has:
state
behaviours
identity
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
7
Classes
A class defines the characteristics that are
common to a group of similar objects
defines the variables that hold the
objects state
defines the methods that describe the
objects behaviours


Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
8
Classes
A class is used as a template or pattern to
create new objects (instances of the class)

Every object is an instance of a class
each object has its own name (identity)
each object has its own variables (state)
all instances of the class share the
methods defined by the class
(behaviours)
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
9
Example: A Complex Number Class
Suppose we want to create and manipulate
complex numbers
a complex number is a value of the
form:

a + bi

where i
2
= -1
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
10
Example: A Complex Number Class
Using an OO programming language, we
define a class that allows us to create and
manipulate objects that represent complex
number values
Initial design: what state and behaviours are
common to all complex numbers?

State
real part
imaginary part
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
11
Example: A Complex Number Class
Behaviours
initialize a new complex number
mathematical operations (add two
complex numbers, etc.)
relational operations (equal, not equal,
etc.)
set the values of the real and imaginary
parts
get the values of the real and imaginary
parts
others...
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
12
I mplementing a Complex Number
Class in J ava
An overview of a typical Java
implementation, contained in the file
Complex.java

public class Complex
implements Cloneable
{
// State (instance variables)
// Behaviour(instance methods)
// constructors
// accessors
// mutators
// operations/messages
}
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
13
I mplementing State
An objects state is contained in instance
variables

// State

private double real;
private double imag;

Each object created from this class will have
separate occurrences of the instance variables
real = 5
imag = 9
real = 2
imag = 7
5 + 9i 2 + 7i
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
14
I mplementing Behaviour :
Constructors
Constructors are methods that describe the initial state
of an object created of this class.

public Complex()
{
real = 0.0; imag = 0.0;
}
public Complex(double rp)
{
real = rp; imag = 0.0;
}
public Complex(double rp,
double ip)
{
real = rp; imag = ip;
}
Default Constructor
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
15
I mplementing Behaviour :
Constructors
Constructors are invoked only when the
object is created. They cannot be called
otherwise.

Complex c1, c2, c3;

c1 = new Complex();
c2 = new Complex(5.2);
c3 = new Complex(-8.5, 9.1);





Constructors initialise the state of an object
upon creation.


real = 0
imag = 0
c1
real = -8.5
imag = 9.1
c3
real = 5.2
imag = 0
c2
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
16
I mplementing Behaviour :
Accessor Methods
Objects often have methods that return
information about their state
Called accessors or getters (because the
method name begins with get)
getReal/Imag() returns the real/imag part of
the Complex object

public double getReal()
{
return real;
}
public double getImag()
{
return imag;
}

Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
17
I mplementing Behaviour :
Mutator Methods
Objects often have methods that change
aspects of their state
called mutators or setters (because the
method name begins with set)
setReal/Imag() changes the real/imag part of
the Complex object

public void setReal(double rp)
{
real = rp;
}
public void setImag(double ip)
{
imag = ip;
}
Exercise : Suggest another mutator ?
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
18
I mplementing Behaviour :
Operations
Unlike C++, Java does not let us overload
the + operator to perform addition of complex
numbers
Instead, we define a plus() method as one of
the arithmetic operations supported by the
Complex class:

public Complex plus(Complex c)
{
Complex sum =
new Complex(real + c.real,
imag + c.imag);
return sum;
}
Well explain how this method works later...
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
19
I mplementing Behaviour :
Message Passing
The last category of behaviours
Operations leads us to the bigger picture !
The example of Complex.java
considers only a single class in isolation



What is an object-oriented application ?
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
20
Message Passing
An application is a set of cooperating objects
that communicate with each other
Objects are not solitary!
Objects interact by passing messages to each
other
In Java, "message passing" is performed by
calling methods
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
21
Message Passing
A message is sent to an object using the dot
notation:
c1.setReal ( 2.3);
double I = c2.getReal( );

These look like simple function calls, BUT
To fully use the object orientation, a
programmer reads these statements this way:
send the setReal message with
argument 2.3 to the object referred to
by c1
send the getReal message to the object
referred to by c2
Often, we say that the setReal and getReal
methods are invoked (not called)
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
22
Message Passing
When an object receives a message, it looks
for the corresponding method (ie. with the
same signature) in its class.
The object then invokes and executes the
method
This is known as run-time binding or late
binding or dynamic binding
the method that is executed when a
message is sent to an object is
determined when the program is
executed, not when it is compiled
The static binding of the Pascal/C/C++
function call/return mechanism seems
simpler
...but the benefits of run-time binding
will become apparent when we look at
inheritance and polymorphism
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
23
Object Oriented Design
The general goal of OO design is to:
Decouple classes as much as possible
Must think ahead about how the
internal implementation of a class may
change
Want to avoid having those changes
propagated to users of the class
interface (i.e. the set of public
methods)
Ideally, the public interface should
never change
Accessor functions should be used to control
access to internal data structures
Lets the internal data representation
change without affecting the users of
the class (recall setA, getA, etc.)
Accessor functions can be much more
sophisticated than we have seen so far
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
24
Caveat: Misusing Setter and Getter
Methods
Novice OO programmers (especially those
with prior programming experience with a
non-OOP language) sometimes think of
objects as analogous to Pascal records or C
structs (i.e., aggregations of variables), with
setter and getter methods provided to
overcome information hiding
Example: An application needs to add two
complex numbers (see code on next slide)
getters are invoked to obtain the real
and imaginary values of the operands
complex addition is performed by the
application
setters are invoked to store the result
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
25
Caveat: Misusing Setter and Getter
Methods
// c1, c2, and c3 contain
references to
// Complex objects.
...
// c3 = c1 + c2
double r1 = c1.getReal();
double i1 = c1.getImag();
double r2 = c2.getReal();
double i2 = c2.getImag();
c3.setReal(r1 + r2);
c3.setImag(i1 + i2);
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
26
Caveat: Misusing Setter and Getter
Methods
The proper object-oriented approach is to
recognize that Complex objects should be
responsible for knowing how to add complex
numbers
class Complex should provide a method
that implements the required addition
behaviour (which is what our class
does, through the plus() method)
the application program requests a
complex number to add itself to another
complex number by sending it a
message:
c3 = c1.plus(c2);
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
27
c3 = c1.plus(c2);

4.9 + 0.0i
5.1 - 8.6i
c1
c2
Complex number c1: give me a new
complex number that contains the sum
of your value and the value of complex
number c2
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
28
Object-Oriented Programming
Languages
To be considered object-oriented, a
programming language must support
Encapsulation
Abstraction/information hiding
Inheritance
Polymorphism
How does Java stack up with regards to the
first three (well look at polymorphism later)?
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
29
How Does J ava Support
Encapsulation?
In each Complex object, the variables and
the methods that operate on those variables
are grouped into a single entity
Java source code promotes this view
instance variables and instance methods
defined in the same class definition
compare with C++
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
30
How Does J ava Support I nformation
Hiding?
Instance variables are declared private
a Complex objects private variables
can only be accessed by methods
defined in class Complex
they cannot be accessed by methods
defined in another class
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
31
How Does J ava Support I nformation
Hiding?
Instance methods are declared public
a Complex objects public methods can
be invoked by any object, but
the method signatures (name, parameter
list, return type) do not reveal the
methods algorithms and
implementation details (these are
hidden if you dont have source code)
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
32
I nformation Hiding in Classes
Always use private variables and provide
interface methods as required
Need this protection in case there are
constraints that must be imposed on the
variables
In the imaginary PairClass, what if
limits must be imposed on a and b?
setA and setB can do this without
affecting the interface (thus users) of
objects of the type PairClass

void setA (int val)
{
a = (val <= 25)?val:25;
}
What if a must now also be less than
75% of b?
No changes are reflected to the user.
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
33
How Does J ava Support I nheritance?
Unless otherwise specified, every class is a
subclass of class Object
it is also possible to specify
superclass/subclass relationships using
the extends keyword (later)
This means that class Complex is a
specialized form of class Object
class Complex inherits variables and
methods that are appropriate for all
objects, from class Object
class Complex defines additional
variables and methods that are
appropriate for all complex numbers
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
34
I ntroduction to UML
Unified Modeling Language
A graphical notation for OO software design
Model : An abstract representation of a
specification or design of a system from a
particular point of view
There are several models supported by
UML, including class
diagrams(architecture) and sequence
diagrams(behaviour)
Language : Consistent notation and syntax
Ranges from precise complete diagrams to
vague sketches
Adherence allows automated design tools
(eg. Automatic code generation)
Unified : Unifying the Three Amigos
Boochs OOD
Rumbaughs OMT
Jacobsens OOSE and Objectory
Alternative : Open Modeling Language

Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
35
UML Class Diagrams
Class Diagrams depict the architecture of an
OO application

Class


Complex
Complex
-real
-imag
Complex

+setImag()
+getImag(..)
+add(..)
Complex
-real:double
-imag:double
+setImag(double)
+getImag():double
+add(Complex:c):Complex
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
36
UML Class Diagrams
Objects : An instance of a class








In our notes, you will also see objects
represented by ovals, along with squares for
Java reference variables



c1:Complex

-real:5
-imag:9
c2:Complex

real = 5
imag = 9
5 + 9i
c1
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
37
UML Class Diagrams
Assocation : Represents an interaction between
objects from two classes.

(Pooley & Stevens) Class A and Class B are
associated if an object of class B has to know about an
object of Class B
An object of Class A sends a message to an
object of Class B
An object of Class A creates an object of Class
B
An object of Class A has an attribute whose
value are (collections of) objects of Class B
An object of Class A receives a message with
an object of class B as an argument.



NOTE: Associations are numerous. Class diagrams
often show only those associations that help convey
important information.
ClassA
ClassB
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
38
UML Class Diagrams
Associations can be annotated :
Label
Roles
Navigability
Multiplicity
Specialized Associations (Inheritance,
Aggregation/Composition Later)

Person Book
borrows
n
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
39
Exercise : Airline Reservation System
Problem : Identify the major objects for an
imaginary airline reservation system. For
each object, list major state and behaviour
attributes.



Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
40
I dentifying Objects

Were back to the original question posed in
this unit :
What is an object ?

Its easy to watch someone or to read about
it
Easy to follow; logical; makes sense.
Its difficult when you first try it yourself
from scratch.
Dont worry about being correct or
perfect first time around. Inevitably,
there will be more/different objects as
you delve deeper.
There will always be compromises and
tradeoffs.
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
41
I dentifying Objects

What is an object ?
A software machine with state and
behaviour that cooperates and
communicates with other objects.

What is a class ?
Description of similar objects

Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
42
I dentifying Objects

Basic Strategies :
1. Identify purpose Capture the essence
of the system in a short statement.
2. List the major features of system,
those that directly satisfy the purpose.
3. Identify classes of objects in the
features.
Look for nouns : A person, place,
thing,
But also : roles, role-players,
transactions, containers, software
controllers,
Anything with state and
behaviour.
4. Identify associations corresponding
to verbs
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
43
Exercise : Airline Reservation System
Purpose : The application shall schedule
flights and make passenger reservations.

Features :
Scheduling flights
List of airports
Add/delete/modify airports
List of flights with their descriptions
Add/delete/modify/list flights

Making reservations
Check whether flight is full
Lists of passengers
Add/delete/modify passengers
List of reservations
Add/delete/modify reservations.
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
44
Exercise : Airline Reservation System
Purpose : The application shall schedule
flights and make passenger reservations.

Features :
Scheduling flights
List of airports
Add/delete/modify airports
List of flights with their descriptions
Add/delete/modify/list flights

Making reservations
Check whether flight is full
List of passengers
Add/delete/modify passengers
List of reservations.
Add/delete/modify reservations
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
45
Exercise : Airline Reservation System
Classes of Objects
Airports
Flights with their descriptions
Date, To/From, Arrival/Departure,
Capacity
Check whether it is full
Passengers
Name, Address
Reservations
Date made
Passenger
List
Add/modify/delete/list


Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
46
Exercise : Airline Reservation System
Two opportunities for improvement based
on the separation of role and role-player.

1) Separate Passenger into two classes :
Person (name & address)
Passenger (number & person)
Why ? Because the same person can be
a passenger on more than one flights

2) Separate Flight into two classes :
Flight description (from/to,
departure/arrival, capacity)
Scheduled Flight (date & flight
description)
Why ? Because the same flight happens
every day/week.
Copyright 2002, Systems and Computer Engineering,
Carleton University. 94.204-02-Object.ppt
47
Exercise : Airline Reservation System
Classes of Objects (Revised)
Airports
Flight Descriptions
To/From, Arrival/Departure,
Capacity
Scheduled Flight
Date & Flight Description
Person
Name, Address
Passenger
Number & Person
Reservations
Date made
Passenger
Scheduled Flight
Lists (Add/modify/delete/list)
Associations
Between Classes

Das könnte Ihnen auch gefallen