object-oriented programming concepts

44
1 Object-Oriented Programming Concepts

Upload: miles

Post on 13-Jan-2016

30 views

Category:

Documents


0 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Object-Oriented Programming Concepts

1

Object-Oriented Programming Concepts

Page 2: Object-Oriented Programming Concepts

2

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

Page 3: Object-Oriented Programming Concepts

3

Programming

• Programming consists of two steps: • design (the architects)

• coding (the construction workers)

– Object oriented design– Object oriented programming

Page 4: Object-Oriented Programming Concepts

4

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

Page 5: Object-Oriented Programming Concepts

5

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

Page 6: Object-Oriented Programming Concepts

6

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

Page 7: Object-Oriented Programming Concepts

7

What Are Messages?

• Software objects interact and communicate with each other using messages (method invocation)

A message with parameters

Page 8: Object-Oriented Programming Concepts

8

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)

Page 9: Object-Oriented Programming Concepts

9

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.

Page 10: Object-Oriented Programming Concepts

10

What Are Classes?

• Consist of public API and private implementation details

Page 11: Object-Oriented Programming Concepts

11

Object vs Class

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

Page 12: Object-Oriented Programming Concepts

12

Object vs Class

• Usually no memory is allocated to a class untilinstantiation, whereupon memory is allocated to an objectof 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.

Page 13: Object-Oriented Programming Concepts

13

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

Page 14: Object-Oriented Programming Concepts

14

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.

Object 1Interface A

Interface B

Interface C

Object

Page 15: Object-Oriented Programming Concepts

15

Primitive and Reference Data Type

int x;x = 5;

x: 5

Point p1, p2;p1 = new Point();p2 = p1;

p1:

p2:

x: 0

y: 0Primitive Data

TypeReference Data Type

Page 16: Object-Oriented Programming Concepts

16

Brief Introduction to Classes

A point in 2-D space:

public class SimplePoint {

public int x = 0;

public int y = 0;

}

Upon instantiation

Page 17: Object-Oriented Programming Concepts

17

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 vsprimitive type

Page 18: Object-Oriented Programming Concepts

18

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

Page 19: Object-Oriented Programming Concepts

19

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

Page 20: Object-Oriented Programming Concepts

20

A Brief Introduction to Classespublic 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 rectanglepublic void move(int x, int y) { origin.x = x; origin.y = y; }

Page 21: Object-Oriented Programming Concepts

21

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

}

}

Page 22: Object-Oriented Programming Concepts

22

Basic Structures of a Class

• Class Declaration• Variable

• Instance Variable

• Class Variable

• Constructor• Method

• Instance Method

• Class Method

• Cleanup• Rectangle2.java

Page 23: Object-Oriented Programming Concepts

23

Creating Classes

• A blueprint or prototype that you can use to create many objects.

• Type for objects.

classDeclaration {

classBody

}

Page 24: Object-Oriented Programming Concepts

24

The Class Declaration

• Simplest class declaration

class NameOfClass {

. . .}

e.g., class ImaginaryNumber{

. . .}

Start with capital letter by convention

Page 25: Object-Oriented Programming Concepts

25

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

Page 26: Object-Oriented Programming Concepts

26

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

Page 27: Object-Oriented Programming Concepts

27

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.

Page 28: Object-Oriented Programming Concepts

28

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 Number implements Arithmetic {

. . .

}

Contains unimplementedmethods such as add(), substract()

Page 29: Object-Oriented Programming Concepts

29

The Class Declaration

Page 30: Object-Oriented Programming Concepts

30

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;

}

}

Page 31: Object-Oriented Programming Concepts

31

Declaring Member Variables

• a member variable declaration

type variableName;

e.g., class IntegerClass { int anInteger; . . . // define methods here . . . }

IntegerClass anIntergerObject; anIntegerObject = new IntegerClass();

Lowercase by convention

All variables must have a type; “class”is also a type

Page 32: Object-Oriented Programming Concepts

32

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

• volatile means that the variable is modified asynchronously

By convention, all capitals

Page 33: Object-Oriented Programming Concepts

33

Managing Inheritance

All classes inherit from the Object class.

Page 34: Object-Oriented Programming Concepts

34

Creating Subclasses

class SubClass extends SuperClass {

. . .

}

• A Java class can have only one direct superclass. Java does not support multiple inheritance.

Page 35: Object-Oriented Programming Concepts

35

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.

Page 36: Object-Oriented Programming Concepts

36

Hiding Member Variables

class Super {

Number aNumber;

}

class Sub extends Super {

Float aNumber;

}

Page 37: Object-Oriented Programming Concepts

37

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.

Page 38: Object-Oriented Programming Concepts

38

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.

Page 39: Object-Oriented Programming Concepts

39

Replacing a Superclass's Method Implementation

An example: Thread class has an empty implementation of run().

class BackgroundThread extends Thread {

void run() {

. . .

}

}

Page 40: Object-Oriented Programming Concepts

40

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

Page 41: Object-Oriented Programming Concepts

41

Methods a Subclass Cannot Override

• A subclass cannot override methods that are declared final in the superclass.

Page 42: Object-Oriented Programming Concepts

42

Methods a Subclass Must Override

• Subclass must override methods that are declared abstract in the superclass, or the subclass itself must be abstract.

Page 43: Object-Oriented Programming Concepts

43

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

Page 44: Object-Oriented Programming Concepts

44

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