copyright © 2002, systems and computer engineering, carleton university. 94.204-02-object.ppt 1...

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

Upload: marcia-douglas

Post on 25-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

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?”

• That’s 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 object’s state

– defines the methods that describe the object’s 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 i2 = -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

Implementing a Complex Number Class in Java

• 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

Implementing State

•An object’s 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 = 5imag = 9

real = 2imag = 7

5 + 9i 2 + 7i

Copyright © 2002, Systems and Computer Engineering, Carleton University. 94.204-02-Object.ppt

14

Implementing 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

Implementing 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 = 0imag = 0

c1

real = -8.5imag = 9.1

c3

real = 5.2imag = 0

c2

Copyright © 2002, Systems and Computer Engineering, Carleton University. 94.204-02-Object.ppt

16

Implementing 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

Implementing 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

Implementing 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;

}

•We’ll explain how this method works later...

Copyright © 2002, Systems and Computer Engineering, Carleton University. 94.204-02-Object.ppt

19

Implementing 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.0i5.1 - 8.6i

c1

c2

Complex number c1: give me a new complex number that contains the sumof your value and the value of complexnumber 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 (we’ll look at polymorphism later)?

Copyright © 2002, Systems and Computer Engineering, Carleton University. 94.204-02-Object.ppt

29

How Does Java 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 Java Support Information Hiding?

•Instance variables are declared private

– a Complex object’s 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 Java Support Information Hiding?

•Instance methods are declared public

– a Complex object’s 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 don’t have source code)

Copyright © 2002, Systems and Computer Engineering, Carleton University. 94.204-02-Object.ppt

32

Information 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 Java Support Inheritance?

•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

Introduction 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”

• Booch’s OOD

• Rumbaugh’s OMT

• Jacobsen’s 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 = 5imag = 9

5 + 9ic1

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 Bookborrows 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

Identifying Objects

•We’re back to the original question posed in this unit :

What is an object ?

• It’s easy to watch someone or to read about it

– Easy to follow; logical; makes sense.

• It’s difficult when you first try it yourself from scratch.

– Don’t 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

Identifying 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

Identifying 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)

AssociationsBetween Classes