1-2 - People.cs.uchicago.edu

advertisement

Introduction to Object-Oriented

Programming

April 3, 1998

CS 102-02

Lecture 1-3

CS102-02 Lecture 1-3

Before You Write a Program...

• Decide on data

– What input does your program need?

– What data will it manipulate?

– What information will it produce?

• Actions

– Things your program does

April 3, 1998 CS102-02 Lecture 1-3

Types of Data

• Related data

– Automobiles

– Whole numbers

– Fractions

– Sentences

April 3, 1998 CS102-02 Lecture 1-3

How Do Actions and Data Relate?

• Actions can act on data

– Square root procedures act on numbers

– Problem: Need different actions for different data

• Actions and data can coexist

– Objects combine both data and actions into one package

April 3, 1998 CS102-02 Lecture 1-3

Driving a Car

• When you step on the gas in a car, do you think:

– “I’m calling the accelerate procedure and passing it a pink Chevy Malibu and a pedal position.”

– Or, “Chevy Malibus ‘know’ how to accelerate already and I’m just asking the car to do its thing.”?

April 3, 1998 CS102-02 Lecture 1-3

The World is Full of Objects I

• Some objects in the world, and what they can do:

Object

Chevy Malibus

Microscopes

Hotels

Actions

Stop, go, turn

Focus, insert slide, remove slide

Make up rooms, check in guests

April 3, 1998 CS102-02 Lecture 1-3

The World is Full of Objects II

• Some objects in the world, and what they know:

Object

Chevy Malibus

Microscopes

Hotels

Data

Gas level, coolant level, top speed

Slide light on?

Number of conference rooms

April 3, 1998 CS102-02 Lecture 1-3

How are Objects Related?

So, Nat'ralists observe, a Flea

Hath smaller Fleas that on them prey,

And these have smaller Fleas to bite 'em,

And so proceed ad infinitum.

-J. Swift

April 3, 1998 CS102-02 Lecture 1-3

Object Relationships

• Objects can contain other objects

– Composition

– “Has a” (or “hath” if you’re an English author) relationship

• Objects are more specific versions of other objects

– Inheritance

– “Is a” relationship

April 3, 1998 CS102-02 Lecture 1-3

April 3, 1998

Planes

Inheritance

Vehicles

Trains Automobiles

Ford Chrysler GM

Chevrolet

Malibu

CS102-02 Lecture 1-3

April 3, 1998

Same Car, Different View

Vehicles

Planes Trains

Sports Car

Automobiles

Truck Sedan

Inexpensive Expensive

Chevy Malibu Lexus LS400

CS102-02 Lecture 1-3

The Welcome Applet

// A first program in Java

// import Applet class import java.applet.Applet;

// import Graphics class import java.awt.Graphics; public class Welcome extends Applet { public void paint( Graphics g ) { g.drawString( "Welcome to Java Programming!", 25, 25 );

}

}

A “Welcome” is a kind of

“Applet”

April 3, 1998 CS102-02 Lecture 1-3

Reuse, Reuse, Reuse

“Writing good software is hard, so avoid it whenever possible.”

Me

• O-O concepts make it easy to reuse

– Inheritance: Someone else creates the general, and you add specifics

– Composition: Put the puzzle pieces together

April 3, 1998 CS102-02 Lecture 1-3

Building an Airport

• What actions do airports know how to perform?

• What attributes do airports have?

• Are airports a kind of something?

• What kinds of airports are there?

• Do airports have logical subparts?

April 3, 1998 CS102-02 Lecture 1-3

“Just Like Summer Vacation, --

No Class”

• A class is a specification of :

– Structure (the data, a.k.a. instance variables)

– Actions (methods)

– Inheritance (parents, or derived structure and actions) for objects.

April 3, 1998 CS102-02 Lecture 1-3

Examples of Classes

• Related groups of things constitute a class

• Share the same structure, actions (behavior) and similarly derived

– Aardvarks

– Airports

– Applets

April 3, 1998 CS102-02 Lecture 1-3

Classes in Java

If you’ll need a group of related objects, create a class: class Point { int x, y; }

Define a class with: class classname {

Class definition (some data and/or some actions)

}

April 3, 1998 CS102-02 Lecture 1-3

Classes Have Data

• Airport class

– Gates

– Runways

– Airlines

• Class data goes inside the class definition, usually at the very beginning: public class Time1 { private int hour; // 0 - 23 private int minute; // 0 - 59 private int second; // 0 - 59

April 3, 1998 CS102-02 Lecture 1-3

Classes Know Actions

• Classes aren’t just data, but actions too

– At the airport

• Delivering baggage

• Preparing for plane’s arrival

– Class actions are called methods

April 3, 1998 CS102-02 Lecture 1-3

Types

• Type is similar to class: a collection of data and actions

• Usually, we’ll consider type and class to be the same thing

– In Java there are interfaces and classes

April 3, 1998 CS102-02 Lecture 1-3

Abstract Data Types

• ADTs (from HTP 6.16) are implemented in

Java with classes

– An airport class represents the abstract notion of a class

– The Platonic “form”

April 3, 1998 CS102-02 Lecture 1-3

Objects are Instances

Airport : O’Hare :: Class : Object

• Classes are the overarching concepts

– Concept “airport” is an abstract notion

• Objects are instances of those classes

– O’Hare, LAX and Heathrow are concrete instances of airports

April 3, 1998 CS102-02 Lecture 1-3

Creating an Object

Give the variable a name

Some airport specification

Use new :

Airport peotone = new Airport(“Peotone, IL”);

What type of variable is it?

You want a new what ?

April 3, 1998 CS102-02 Lecture 1-3

Java Object Magic

• Creating objects is easy in Java

– Forget about memory ‘cuz Java’s simple

• Want another airport, just call new again!

April 3, 1998 CS102-02 Lecture 1-3

Creating Instances from Classes

• Real-world

– Spend money to hire construction crews

– Lay asphalt

– Build roads

• In Java, build airports with constructors

– Special methods defined in a class which set up new objects

– Same name as class

April 3, 1998 CS102-02 Lecture 1-3

Building Time public class Time1 { private int hour; // 0 - 23 private int minute; // 0 - 59 private int second; // 0 - 59

Constructors have the

// Time1 constructor initializes each

// instance variable to zero. Ensures

// that each Time1 object starts in a

// consistent state.

public Time1() { setTime( 0, 0, 0 ); } same name as the class

Anybody can create a new Time1 object

April 3, 1998 CS102-02 Lecture 1-3

Hiding (a.k.a. Encapsulating) Data

• Airport operations

– Do you know:

• Outer marker?

• NDB?

• ATIS Frequency for O’Hare?

• Use the airport because you only need to know a little

– Parking lot, ticket counter, baggage claim, ...

April 3, 1998 CS102-02 Lecture 1-3

Why Hide Data?

• Can’t break it

– What if you could change the tower frequency?

– Double-check data

• Easier for you

– What if you couldn’t get on a plane without knowing how to operate a jetway?

• Inner workings can change

– Change the guts of the airport, but don’t change the ticket counter, baggage claim, ...

April 3, 1998 CS102-02 Lecture 1-3

Hiding Data in Java public class Time1 { private int hour; // 0 - 23 private int minute; // 0 - 59 private int second; // 0 - 59

// Time1 constructor initializes each instance variable

// to zero. Ensures that each Time1 object starts in a

// consistent state.

public Time1() { setTime( 0, 0, 0 ); }

Nobody can mess with hour , minute or second

Nobody can set hour = “ABC” or minute = “456.45”

April 3, 1998 CS102-02 Lecture 1-3

Hiding Time public class Time1 { private int hour; // 0 - 23 private int minute; // 0 - 59 private int second; // 0 - 59

// Time1 constructor initializes each

// instance variable to zero. Ensures

// that each Time1 object starts in a

// consistent state.

public Time1() { setTime( 0, 0, 0 ); }

Anybody can create a new Time1 object

April 3, 1998

One of our reasons for data hiding

CS102-02 Lecture 1-3

Airport

Modules

Modular Design

Passenger

Terminal

Maintenance

& Storage

• View related abstractions together

• Modules are useful only if they’re loosely connected

– Passenger Terminal and Maintenance, not a

Door and its hinges

April 3, 1998 CS102-02 Lecture 1-3

Modularity in Java

• Java has two ways to separate modules:

– Classes

• Use class to define

• Separate classes with access modifiers

– Packages

• Group related classes together

• Optionally, declare a package using package in the first line of the file package transportation.airport;

• Without package , code is part of the default package

April 3, 1998 CS102-02 Lecture 1-3

Object-Oriented Means… I

• Objects: Combining data and actions under one roof

• Hierarchies: An ranking of abstractions

– Inheritance: The “is a” hierarchy

– Composition: The “part of” hierarchy

• Abstraction: What distinguishes an object from other kinds objects, given a particular perspective

April 3, 1998 CS102-02 Lecture 1-3

Object Oriented Means… II

• Hiding data: Only the essentials are visible to the outside world

• Modularity: Group related abstractions together

April 3, 1998 CS102-02 Lecture 1-3

Download