440 likes | 561 Vues
Object-Oriented Programming Concepts. Recap from last lecture. Variables and types int count Assignments count = 55 Arithmetic expressions result = count/5 + max Control flow if – then – else while – do do – while For SubPrograms Methods. Programming.
E N D
Recap from last lecture • Variables and types • int count • Assignments • count = 55 • Arithmetic expressions • result = count/5 + max • Control flow • if – then – else • while – do • do –while • For • SubPrograms • Methods
Programming • Programming consists of two steps: • design (the architects) • coding (the construction workers) • Object oriented design • Object oriented programming
What Is an Object? • Real world examples: bicycle; dog; dinosaur; table; rectangle; color. • Objects have two characteristics: state (attributes) and behavior • Software objects maintain its state in variablesor data, and implement the behavior using methods. An Object
What Is an Object? • Real-world objects can be represented using software objects: e.g., electronic dinosaur, bicycle • Software objects may correspond to abstract concepts: e.g., an event A Bicycle Object
What Is an Object? • Methods to brake, change the pedal cadence, and change gears. • Concept of encapsulation: hiding internal details from other objects: you do not need to know how the gear mechanism works. • In Java, both methods and variables can be hidden A Bicycle Object
What Are Messages? • Software objects interact and communicate with each other using messages(method invocation) A message with parameters
What Are Messages? Three components comprise a message: 1.The object to whom the message is addressed (Your Bicycle) 2.The name of the method to perform (changeGears) 3.Any parameters needed by the method (lower gear)
What Are Classes? • A class is a blueprint or prototype that defines the variables and the methods common to all objects of a certain kind. • Instantiation of a class: create an instance (object) according to the blueprint specification.
What Are Classes? • Consist of public API and private implementation details
Object vs Class • Each object has its own instance variables: e.g., each bicycle has its own (x,y) position.
Object vs Class • Usually no memory is allocated to a class until instantiation, whereupon memory is allocated to an object of the type. • Except when there are class variables. All objects of the same class share the same class variables: e.g., extinct variable of dinosaur class; tax rate of certain class of goods.
What Is Inheritance? • A class inherits state and behavior from its superclass. • A subclass can define additional variables and methods. • A subclass can override methods of superclass (e.g., change gear method might be changed if an additional gear is provided.) • Can have more than one layer of hierarchy Software Reuse
What is an Interface? Definition: An interface is a device that unrelated objects use to interact with each other. An object can implement multiple interfaces. Interface B Object Object 1 Interface C Interface A
0 x: p1: 0 y: p2: Primitive and Reference Data Type Point p1, p2; p1 = new Point(); p2 = p1; int x; x = 5; 5 x: Primitive Data Type Reference Data Type
Brief Introduction to Classes A point in 2-D space: public class SimplePoint { public int x = 0; public int y = 0; } Upon instantiation
Brief Introduction to Classes A simple rectangle class: public class SimpleRectangle { public int width = 0; public int height = 0; public SimplePoint origin = new SimplePoint(); } Reference type vs primitive type
A Brief Introduction to Classes A Point Class with a constructor: public class Point { public int x = 0; public int y = 0; // a constructor! public Point(int x, int y) { this.x = x; this.y = y; } } new Point(44,78);
A Brief Introduction to Classes More sophisticated Rectangle Class: public class Rectangle { public int width = 0; public int height = 0; public Point origin; // four constructors public Rectangle() { origin = new Point(0, 0); } public Rectangle(Point p) { origin = p; }
A Brief Introduction to Classes public Rectangle(int w, int h) { this(new Point(0, 0), w, h); } public Rectangle(Point p, int w, int h) { origin = p; width = w; height = h; } // a method for moving the rectangle public void move(int x, int y) { origin.x = x; origin.y = y; }
A Brief Introduction to Classes // a method for computing the area of the rectangle public int area() { return width * height; } // clean up! protected void finalize() throws Throwable { origin = null; super.finalize(); } }
Class Declaration Variable Instance Variable Class Variable Constructor Method Instance Method Class Method Cleanup Rectangle2.java Basic Structures of a Class
Creating Classes • A blueprint or prototype that you can use to create many objects. • Type for objects. classDeclaration { classBody }
The Class Declaration • Simplest class declaration class NameOfClass { . . . } e.g., class ImaginaryNumber{ . . . } Start with capital letter by convention
The Class Declaration Class declaration can say more about the class: • declare what the class's superclass is • declare whether the class is public, abstract, or final (if not specified, then default) • list the interfaces implemented by the class
Declaring a Class's Superclass • All class has a superclass. If not specified, superclass is Object class by default • To specify an object's superclass explicitly, class NameOfClass extends SuperClassName{ . . . } e.g., class ImaginaryNumber extends Number { . . . } Part of java.lang package
Declare whether the Class is Public, Final, or Abstract Modifier class NameOfClass { . . . } • Default: accessible only by classes within same package • Public: accessible by classes everywhere • Final: the class cannot be further subclassed. • Abstract: some methods are defined but unimplemented; must be further subclassed before instantiation.
Listing the Interfaces Implemented by a Class • An interface declares a set of methods and constants without specifying the implementation for any of the methods. e.g., class ImaginaryNumber extends NumberimplementsArithmetic { . . . } Contains unimplemented methods such as add(), substract()
The Class Body • Contains two different sections: variable declarations and methods. classDeclaration { memberVariableDeclarations methodDeclarations } e.g.,class TicketOuttaHere { Float price; String destination; Date departureDate; void signMeUp(Float forPrice, String forDest, Date forDate) { price = forPrice; destination = forDest; departureDate = forDate; } }
Declaring Member Variables All variables must have a type; “class”is also a type • amember variable declaration typevariableName; e.g., class IntegerClass { intanInteger; . . . // define methods here . . . } IntegerClassanIntergerObject; anIntegerObject = new IntegerClass(); Lowercase by convention
Statement for Member Variable Declaration [accessSpecifier] [static] [final] [transient][volatile] type variableName • accessSpecifier defines which other classes have access to the variable (public, private, or protected) • static indicates that the variable is a class member variable, not an instance member variable. • final indicates that the variable is a constant: class Avo { final double AVOGADRO = 6.023e23;} • transient variables are not part of the object's persistent state • volatilemeans that the variable is modified asynchronously By convention, all capitals
Managing Inheritance All classes inherit from the Object class.
Creating Subclasses class SubClass extends SuperClass { . . . } • A Java class can have only one direct superclass. Java does not support multiple inheritance.
What Member Variables Does a Subclass Inherit? • Rule: A subclass inherits all of the member variables within its superclass that are accessible to that subclass. • Member variables declared as public or protected. Do not inheritprivatemember variables. • Member variables declared with no access modifier so long as subclass is in the same package • If subclass declares a member variable with the same name, the member variable of the superclass is hidden.
Hiding Member Variables class Super { Number aNumber; } class Sub extends Super { Float aNumber; }
What Methods Does a Subclass Inherit? • Rule: A subclass inherits all of the methods within its superclass that are accessible to that subclass. • publicor protected methods, but not privatemethods • no access modifier but in the same package • If subclass declares a method with the same name, the method of the superclass isoverridden.
Overriding Methods • A subclass can either completely override the implementation for an inherited method or the subclass can enhance the method by adding functionality to it.
Replacing a Superclass's Method Implementation An example: Thread class has an empty implementation of run(). class BackgroundThread extends Thread { void run() { . . . } }
Adding to a Superclass's Method Implementation Another Example: want to preserve initialization done by superclass in constructor: class MyWindow extends Window { public MyWindow(Frame parent) { super(parent); . . . // MyWindow-specific initialization here . . . } } Superclass constructor
Methods a Subclass Cannot Override • A subclass cannot override methods that are declared final in the superclass.
Methods a Subclass Must Override • Subclass must override methods that are declared abstract in the superclass, or the subclass itself must be abstract.
Being a Descendent of Object • Every class in the Java system is a descendent (direct or indirect) of the Object class. • Your class may want to override: • clone • equals • finalize • toString • Your class cannot override (they are final): • getClass • notify • notifyAll • wait • hashCode
Summary You should know • Objects are created from classes • An object's class is its type • Difference between reference and primitive types. You also should have a general understanding or a feeling for the following: • How to create an object from a class • What constructors are • What the code for a class looks like • What member variables are • How to initialize objects • What methods look like