310 likes | 416 Vues
This lecture introduces key concepts of object-oriented programming (OOP), focusing on data, actions, and objects. Learn how to decide on data, actions, types of data, and the relationships between objects. Understand how actions and data coexist and the role of classes and inheritance in OOP. Explore creating objects, instances, and classes in Java, and how classes encapsulate data and actions. Gain insights into reusability through OOP concepts like inheritance and composition. Examples include programming classes for airports, airdromes, and aardvarks.
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