310 likes | 331 Views
Introduction to Object-Oriented Programming. CS 102-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. Types of Data. Related data Automobiles
E N D
Introduction to Object-Oriented Programming CS 102-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
Types of Data • Related data • Automobiles • Whole numbers • Fractions • Sentences
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
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.”?
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
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
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
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”
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
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?
“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.
Examples of Classes • Related groups of things constitute a class • Share the same structure, actions (behavior) and similarly derived • Aardvarks • Airports • Applets
Classes in Java If you’ll need a group of related objects, create a class: class Point { int x, y; } Define a class with: classclassname{ Class definition (some data and/or some actions) }
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
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
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
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”
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
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?
Java Object Magic • Creating objects is easy in Java • Forget about memory ‘cuz Java’s simple • Want another airport, just call new again!
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
Building 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
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, ...
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, ...
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”
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 One of our reasons for data hiding
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
Object Oriented Means… II • Hiding data: Only the essentials are visible to the outside world • Modularity: Group related abstractions together