440 likes | 579 Vues
This recap covers fundamental concepts of Object-Oriented Programming (OOP) introduced in the last lecture. It includes key topics such as variables, data types, arithmetic expressions, control flow (if, while, and for loops), and the definition and characteristics of objects. The importance of encapsulation, class and object differentiation, inheritance, and interfaces are explored. Real-world examples illustrate how software objects can represent actual entities and abstract concepts. This guide serves as a concise summary for understanding OOP principles in 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