Title: Introduction to Object-Oriented Programming
1Introduction to Object-Oriented Programming
2Before 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
3Types of Data
- Related data
- Automobiles
- Whole numbers
- Fractions
- Sentences
4How 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
5Driving a Car
- When you step on the gas in a car, do you think
- Im calling the accelerate procedure and passing
it a pink Chevy Malibu and a pedal position. - Or, Chevy Malibus know how to accelerate
already and Im just asking the car to do its
thing.?
6The 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
7The 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
8How 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
9Object Relationships
- Objects can contain other objects
- Composition
- Has a (or hath if youre an English author)
relationship - Objects are more specific versions of other
objects - Inheritance
- Is a relationship
10Inheritance
11Same Car, Different View
12The 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
13Reuse, 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
14Building 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?
15Just 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.
16Examples of Classes
- Related groups of things constitute a class
- Share the same structure, actions (behavior) and
similarly derived - Aardvarks
- Airports
- Applets
17Classes in Java
If youll 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)
18Classes 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
19Classes Know Actions
- Classes arent just data, but actions too
- At the airport
- Delivering baggage
- Preparing for planes arrival
- Class actions are called methods
20Types
- Type is similar to class a collection of data
and actions - Usually, well consider type and class to be the
same thing - In Java there are interfaces and classes
21Abstract 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
22Objects are Instances
Airport OHare Class Object
- Classes are the overarching concepts
- Concept airport is an abstract notion
- Objects are instances of those classes
- OHare, LAX and Heathrow are concrete instances
of airports
23Creating 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?
24Java Object Magic
- Creating objects is easy in Java
- Forget about memory cuz Javas simple
- Want another airport, just call new again!
25Creating 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
26Building 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 )
Constructors have the same name as the class
Anybody can create a new Time1 object
27Hiding (a.k.a. Encapsulating) Data
- Airport operations
- Do you know
- Outer marker?
- NDB?
- ATIS Frequency for OHare?
- Use the airport because you only need to know a
little - Parking lot, ticket counter, baggage claim, ...
28Why Hide Data?
- Cant break it
- What if you could change the tower frequency?
- Double-check data
- Easier for you
- What if you couldnt get on a plane without
knowing how to operate a jetway? - Inner workings can change
- Change the guts of the airport, but dont change
the ticket counter, baggage claim, ...
29Hiding 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
30Hiding 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
One of our reasons for data hiding
31Modular Design
Airport Modules
Passenger Terminal
Maintenance Storage
- View related abstractions together
- Modules are useful only if theyre loosely
connected - Passenger Terminal and Maintenance, not a Door
and its hinges
32Modularity 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
33Object-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
34Object Oriented Means II
- Hiding data Only the essentials are visible to
the outside world - Modularity Group related abstractions together