Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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