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