why so much for so little?

24
OOP with Java, D avid J. Barnes Creating and Using Object s 1 Why So Much for So Little? • We want to use computers to solve complex tasks. • Complex problems require powerful programming languages. • Powerful programming languages have more rules than simpler languages.

Upload: danyl

Post on 07-Jan-2016

36 views

Category:

Documents


0 download

DESCRIPTION

Why So Much for So Little?. We want to use computers to solve complex tasks. Complex problems require powerful programming languages. Powerful programming languages have more rules than simpler languages. What are Object-Oriented Languages?. Support an O-O view of problem solving. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 1

Why So Much for So Little?

• We want to use computers to solve complex tasks.

• Complex problems require powerful programming languages.

• Powerful programming languages have more rules than simpler languages.

Page 2: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 2

What are Object-Oriented Languages?

• Support an O-O view of problem solving.

• Objects categorized into classes.

• Objects interact with each other.– Objects have behavior.– Objects maintain state.

• Behavior and state are intimately related.

• Software reuse is facilitated.

Page 3: Why So Much for So Little?

OOP with Java, Eric Jul Creating and Using Objects 3

What are pure Object-Oriented Languages?

• Support an O-O view of problem solving exclusively. Examples include Smalltalk, Emerald.

• Hybrid OO languages allow mixing values and objects. Examples: Java, C++, Simula 68.

• Hybrid languages are considered messy by the OO purists.

Page 4: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 4

Modeling the Operation of a Port

• Classes and objects in the scenario.– The port.– Ships moving in and out.– Cargo and associated transportation.– Passengers, vehicles, car parks.– Customs officers, pilots.– Aspects of the natural environment.

Page 5: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 5

Interactions in the Port

• Transfer of cargo between ship and dock.

• Passengers embarking and disembarking.

• A pilot joining or leaving a ship.

• A ship requesting permission to enter.

• The weather affecting ship movements.

Page 6: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 6

Classes and Objects

• A class definition provides a description of a typical object within that class.– CargoShip, PassengerFerry.

• An individual object is an instance of a class.

• Definition of behavior and attributes.

Page 7: Why So Much for So Little?

OOP with Java, Eric Jul Attributes 7

Attributes

• Attributes store the state of an object.

• The state stored in an attribute is often a reference to another object.

• Simple state is, in hybrid languages, represented as values (non-object values).

Page 8: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 8

Class and Instances

• Liner might capture the common characteristics of ocean liners.– RMS Titanic and RMS Olympic might be two

instances of that class.

• Class definition is like a blueprint or template.– Color, size, pattern might vary, but instances of

the same class come from the same mold.

Page 9: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 9

Creating an Object

// An illustration of object creation.// (The ship class is assumed to preexist.)class ShipMain1 { public static void main(String[] args){ // Define a method variable to refer to // a Ship object. Ship argo;

// Construct a new Ship object. argo = new Ship(); }}

Page 10: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 10

Object Interactions

• Communication between people:– Information: “I am going to a party.”– Question: “What is the time?”– Order/Request: “Please buy me some gum.”

• Objects communicate in similar ways.– Passing messages to each other.– Actor/Agent, Client/Server relationships.

Page 11: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 11

Sending a Message to a Ship

// An illustration of message sending.class ShipMain2 { public static void main(String[] args){ // Define a method variable. // Make it refer to a new Ship object. Ship argo = new Ship();

// Ask the ship to report its position, // course and speed. argo.report(); }}

Page 12: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 12

Moving a Ship

// An illustration of ship movement.class ShipMain3 { public static void main(String[] args){ Ship argo = new Ship();

// Ask the ship to move. argo.move(); }}

Page 13: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 13

Passing Arguments with Messages

• The report and move messages convey implicit information.– The Ship uses its own internal state to respond.

• Some messages need to be accompanied by further explicit information.– “Change course to ...”– “Reduce speed to ...”

Page 14: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 14

Arguments

• Explicit information can be passed to an object in a message by adding arguments to the message.

• Arguments are objects containing information.

• In hybrid languages, such as Java, arguments can also be values.

Page 15: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 15

Passing Argumentsclass ShipMain4 { public static void main(String[] args){ Ship argo = new Ship();

argo.report(); argo.move(); // Ask it to change course, move and // report its new settings. argo.setCourse(90); argo.move(); argo.report(); }}

Page 16: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 16

Receiving Replies• Human communication often requires a

reply.– “What is the time?”– “Are there any free berths in the port?”– “What is the square-root of 2?”

• Similarly, we can request information from a Ship.

• We often store the answer somewhere.

Page 17: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 17

Simple Example of Reply• Ship’s speed is returned as a value – a double which here merely is a number, e.g., 17.3

• The value, we may assume, is in knots.

• The number is stored and used to request the ship to go one knot faster.

Page 18: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 18

Requesting a Ship’s Speedclass ShipMain5 { public static void main(String[] args){ Ship argo = new Ship();

argo.report(); // Define a variable to hold the speed.

double currentSpeed; // Ask the ship what its current speed is. currentSpeed = argo.getSpeed(); // Increase the ship's speed. argo.setSpeed(currentSpeed+1);

argo.move(); argo.report(); }}

Page 19: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 19

Variables and Objects

• Variables and objects are different.

• A variable may refer to a single object.

• Different variables may refer to the same object - aliases.

• A variable may be switched from one object to another.

• A variable may be uninitialized.

Page 20: Why So Much for So Little?

OOP with Java, Eric Jul Creating and Using Objects 20

Variables Contain References

• A variable contains either a value or a reference to an object.

• A reference can be thought of as a pointer to an object.

• Illustrated graphically.

Page 21: Why So Much for So Little?

OOP with Java, David J. Barnes/Eric Jul

Creating and Using Objects 21

The Main Method's Class

• We (Barnes and Jul) choose never to create an object of the main method’s class.

• This approach is not followed by many other authorities.

• The main method is a static method.– Static methods have special properties that we

shall explore in due course.

• A messy hack—just live with it for now.

Page 22: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 22

Review

• O-O problem solving involves identifying classes, objects and object interactions.

• Objects maintain state and exhibit class-defined behavior.

• Instances of the same class behave in similar ways.

• Message passing illustrates object interaction.

Page 23: Why So Much for So Little?

OOP with Java, David J. Barnes

Creating and Using Objects 23

Review (cont.)

• Messages may contain additional information: in the form of arguments.

• A result may be returned as the result of a message.

• Variables and objects are distinct.– Variables switch between different objects.– An object may be simultaneously referred to by

different variables.

Page 24: Why So Much for So Little?

OOP with Java, David J. Barnes & Jul

Creating and Using Objects 24

Review (cont.)

• Variables contain references.

• In hybrid languages, variables may alternatively contain values.

• References can be thought of as pointers.