Download OO Intro

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Introduction to Object-Oriented
Programming
CS 102-02
Lecture 1-3
March 31, 2000
CS102-01
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
March 31, 2000
CS102-01
Lecture 1.3
Types of Data
• Related data
–
–
–
–
Automobiles
Whole numbers
Fractions
Sentences
March 31, 2000
CS102-01
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
March 31, 2000
CS102-01
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.”?
March 31, 2000
CS102-01
Lecture 1.3
The World is Full of Objects I
• Some objects in the world, and what they
can do:
Object
Actions
Chevy Malibus
Stop, go, turn
Microscopes
Focus, insert slide, remove slide
Hotels
Make up rooms, check in guests
March 31, 2000
CS102-01
Lecture 1.3
The World is Full of Objects II
• Some objects in the world, and what they
know:
Object
Data
Chevy Malibus
Gas level, coolant level, top speed
Microscopes
Slide light on?
Hotels
Number of conference rooms
March 31, 2000
CS102-01
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
March 31, 2000
CS102-01
Lecture 1.3
Inheritance
Vehicles
Planes
Trains
Ford
Automobiles
Chrysler
GM
Chevrolet
Malibu
March 31, 2000
CS102-01
Lecture 1.3
Same Car, Different View
Vehicles
Planes
March 31, 2000
Trains
Automobiles
Sports Car
Truck
CS102-01
Sedan
Inexpensive
Expensive
Chevy Malibu
Lexus LS400
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”
March 31, 2000
CS102-01
Lecture 1.3
Reuse, Reuse, Reuse
“Writing good software is hard, so avoid it
whenever possible.”
- Kurt Fenstermacher
• O-O concepts make it easy to reuse
– Inheritance: Someone else creates the general,
and you add specifics
– Composition: Put the puzzle pieces together
March 31, 2000
CS102-01
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?
March 31, 2000
CS102-01
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.
March 31, 2000
CS102-01
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
March 31, 2000
CS102-01
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)
}
March 31, 2000
CS102-01
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;
private int minute;
private int second;
March 31, 2000
CS102-01
// 0 - 23
// 0 - 59
// 0 - 59
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
March 31, 2000
CS102-01
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
March 31, 2000
CS102-01
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”
March 31, 2000
CS102-01
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
March 31, 2000
CS102-01
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?
March 31, 2000
You want a
new what?
CS102-01
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!
March 31, 2000
CS102-01
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
March 31, 2000
CS102-01
Lecture 1.3
Building Time
public class Time1 {
private int hour;
private int minute;
private int second;
// 0 - 23
// 0 - 59
// 0 - 59
Constructors
have the
same name as
// Time1 constructor initializes each
the class
// 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
March 31, 2000
CS102-01
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, ...
March 31, 2000
CS102-01
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, ...
March 31, 2000
CS102-01
Lecture 1.3
Hiding Data in Java
public class Time1 {
private int hour;
private int minute;
private int second;
// 0 - 23
// 0 - 59
// 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”
March 31, 2000
CS102-01
Lecture 1.3
Hiding Time
public class Time1 {
private int hour;
private int minute;
private int second;
// 0 - 23
// 0 - 59
// 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
March 31, 2000
One of our reasons for data
hiding
CS102-01
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
March 31, 2000
CS102-01
Lecture 1.3
Object Oriented Means… II
• Hiding data: Only the essentials are visible
to the outside world
• Modularity: Group related abstractions
together
March 31, 2000
CS102-01
Lecture 1.3