ObjectOriented Programming Concepts 1 Recap from last lecture

Object-Oriented Programming Concepts 1

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 • Sub. Programs – Methods 2

Programming • Programming consists of two steps: • design (the architects) • coding (the construction workers) – Object oriented design – Object oriented programming 3

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 variables or data, and implement the behavior using methods. An Object 4

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 5

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 6

What Are Messages? • Software objects interact and communicate with each other using messages (method invocation) A message with parameters 7

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 (change. Gears) 3. Any parameters needed by the method (lower gear) 8

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. 9

What Are Classes? • Consist of public API and private implementation details 10

Object vs Class • Each object has its own instance variables: e. g. , each bicycle has its own (x, y) position. 11

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. 12

What Is Inheritance? Software Reuse • 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 13

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 1 Interface C Interface A 14

Primitive and Reference Data Type Point p 1, p 2; p 1 = new Point(); p 2 = p 1; int x; x = 5; x: 5 Primitive Data Type p 1: p 2: x: 0 y: 0 Reference Data Type 15

Brief Introduction to Classes A point in 2 -D space: public class Simple. Point { public int x = 0; public int y = 0; } Upon instantiation 16

Brief Introduction to Classes A simple rectangle class: public class Simple. Rectangle { public int width = 0; public int height = 0; public Simple. Point origin = new Simple. Point(); } Reference type vs primitive type 17

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); 18

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; } 19

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; } 20

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(); } } 21

Basic Structures of a Class • Class Declaration • Variable • Instance Variable • Class Variable • Constructor • Method • Instance Method • Class Method • Cleanup 22

Creating Classes • A blueprint or prototype that you can use to create many objects. • Type for objects. class. Declaration { class. Body } 23

The Class Declaration • Simplest class declaration Start with capital letter by convention class Name. Of. Class {. . . } e. g. , class Imaginary. Number{. . . } 24

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 25

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 Name. Of. Class extends Super. Class. Name{. . . } Part of java. lang package e. g. , class Imaginary. Number extends Number {. . . } 26

Declare whether the Class is Public, Final, or Abstract Modifier class Name. Of. Class {. . . } • • 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. 27

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. Contains unimplemented methods such as add(), substract() e. g. , class Imaginary. Number extends Number implements Arithmetic {. . . } 28

The Class Declaration 29

The Class Body • Contains two different sections: variable declarations and methods. class. Declaration { member. Variable. Declarations method. Declarations } e. g. , class Ticket. Outta. Here { Float price; String destination; Date departure. Date; void sign. Me. Up(Float for. Price, String for. Dest, Date for. Date) { price = for. Price; destination = for. Dest; departure. Date = for. Date; } } 30

Declaring Member Variables All variables must have a type; “class”is also a type • a member variable declaration type variable. Name; Lowercase by convention e. g. , class Integer. Class { int an. Integer; . . . // define methods here. . . } Integer. Class an. Interger. Object; an. Integer. Object = new Integer. Class(); 31
![Statement for Member Variable Declaration [access. Specifier] [static] [final] [transient][volatile] type variable. Name • Statement for Member Variable Declaration [access. Specifier] [static] [final] [transient][volatile] type variable. Name •](http://slidetodoc.com/presentation_image/c09e1b3437a9c982013a7636f7b914e3/image-32.jpg)
Statement for Member Variable Declaration [access. Specifier] [static] [final] [transient][volatile] type variable. Name • access. Specifier 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. By convention, all capitals • final indicates that the variable is a constant: class Avo { final double AVOGADRO = 6. 023 e 23; } • transient variables are not part of the object's persistent state • volatile means that the variable is modified asynchronously 32

Managing Inheritance All classes inherit from the Object class. 33

Creating Subclasses class Sub. Class extends Super. Class {. . . } • A Java class can have only one direct superclass. Java does not support multiple inheritance. 34

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 inherit private member 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. 35

Hiding Member Variables class Super { Number a. Number; } class Sub extends Super { Float a. Number; } 36

What Methods Does a Subclass Inherit? • Rule: A subclass inherits all of the methods within its superclass that are accessible to that subclass. – public or protected methods, but not private methods – no access modifier but in the same package – If subclass declares a method with the same name, the method of the superclass is overridden. 37

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. 38

Replacing a Superclass's Method Implementation An example: Thread class has an empty implementation of run(). class Background. Thread extends Thread { void run() {. . . } } 39

Adding to a Superclass's Method Implementation Another Example: want to preserve initialization done by superclass in constructor: class My. Window extends Window { public My. Window(Frame parent) { super(parent); Superclass constructor. . . // My. Window-specific initialization here. . . } } 40

Methods a Subclass Cannot Override • A subclass cannot override methods that are declared final in the superclass. 41

Methods a Subclass Must Override • Subclass must override methods that are declared abstract in the superclass, or the subclass itself must be abstract. 42

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 to. String • Your class cannot override (they are final): – – – get. Class notify. All wait hash. Code 43

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 44
- Slides: 44