Top Banner
Object-Oriented Programming
32

Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

Mar 31, 2015

Download

Documents

Hugo Fowler
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

Object-Oriented Programming

Page 2: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

2

Object-Oriented Programming

• An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain ways to events

• An object-oriented program consists of a set of objects, which can vary dynamically, and which execute by acting and reacting to each other, in much the same way that a real-world process proceeds by the interaction of real-world objects

Page 3: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

3

Object-Oriented Programming

• Need to reuse software components as much as possible

• Need to maintain the independence of different components (Encapsulation and Abstraction)

• Need to modify program behavior with minimum changes to existing code (Inheritance)

Page 4: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

4

Modification for Reuse

• Extension of data and/or operations

• Restriction of data and/or operations

• Redefinition of one or more of the operations

• Abstraction, or the collection of similar operations from two different components into a new component

• Polymorphization, or the extension of the type of data that operations can apply to

Page 5: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

5

Modification for Reuse

• Modifiability of components for reuse and maintaining the independence of different components sometimes be mutually incompatible

Page 6: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

6

Objects

• An object occupies memory and has a (modifiable) local state represented by local variables, which are not directly accessible to other objects

• An object has a set of functions and procedures through which the local state can be accessed and changed. These are called methods

Page 7: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

7

Classes

• Objects can be declared by creating a pattern for the local state and methods

• This pattern is called a class, and it is essentially just like a data type

• An object is said to be an instance of a class

• The local variables representing an object’s state are called instance variables

Page 8: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

8

An Examplepublic class Complex{ public Complex() { re = 0; im = 0; } public Complex (double realpart, double imagpart) { re = realpart; im = imagpart; } public double realpart() { return re; } public double imaginarypart() { return im; } public Complex add( Complex c ) { return new Complex(re + c.realpart(), im + c.imaginarypart()); } public Complex multiply (Complex c) { return new Complex(re * c.realpart() - im * c.imaginarypart(), re * c.imaginarypart() + im * c.realpart()); } private double re, im;}

Page 9: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

9

An Examplepublic class Complex{ public Complex() { radius = 0; angle = 0; } public Complex (double realpart, double imagpart) { radius = Math.sqrt(realpart*realpart + imagpart*imagpart); angle = Math.atan2(imagpart,realpart); } public double realpart() { return radius * Math.cos(angle); } public double imaginarypart() { return radius * Math.sin(angle); } public Complex add( Complex c ) { return new Complex(realpart() + c.realpart(), imaginarypart() + c.imaginarypart()); } public Complex multiply (Complex c) { return new Complex(realpart() * c.realpart() - imaginarypart() * c.imaginarypart(), realpart() * c.imaginarypart() + imaginarypart() * c.realpart()); } private double radius, angle;}

Page 10: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

10

An Example

public class ComplexUser{ public static void main(String[] args) { Complex z,w; z = new Complex (1,2); w = new Complex (-1,1); z = z.add(w).multiply(z); System.out.println(z.realpart()); System.out.println(z.imaginarypart()); }}

automatic garbage collection is needed

binary operation

is not symmetric

Page 11: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

11

An Example

public class LinkableObject{ public LinkableObject() { link = null; } public LinkableObject(LinkableObject link) { this.link = link; } public LinkableObject next() { return link; } public void linkTo( LinkableObject p) { link = p; } private LinkableObject link;}

Page 12: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

12

An Exampletypedef struct ComplexStruct * Complex;struct ComplexStruct{ double re, im; double (*realpart) (Complex this); double (*imaginarypart) (Complex this); Complex (*add) (Complex this, Complex c); Complex (*multiply) (Complex this, Complex c);};typedef struct LinkStruct * LinkableObject;struct LinkStruct{ LinkableObject link; LinkableObject (*next) (LinkableObject this); void (*linkTo) (LinkableObject this, LinkableObject link);};

z = z.add(z.w);

no constructor

no protection

Page 13: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

13

Inheritance

• Inheritance is the major mechanism in object-oriented languages that allows the sharing of data and operations among classes, as well as the ability to redefine these operations without modifying existing code

public class B extends A{ … }

subclass

superclass

Page 14: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

14

An Examplepublic class Queue{ … public void enqueue(int x) { … } public void dequeue() { … } public int front() { … } public bool empty () { … }}

public class Deque extends Queue{ … public void addFront(int x) { … } public void deleteRear() { … }}

Page 15: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

15

Subtypes

• Class definitions are also type definitions

• Subtype principle: an object of a subtype may be used anywhere an object of its supertype is legal

• The subtype principle expresses the is-a relation: If A is a subclass of B, then every object belonging to A also belonging to B, or every A “is-a” B

Page 16: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

16

An Example

Queue q;Deque d;

d = new Deque();q = d;

q.enqueue(2).dequeue();q.addFront(2); // error

Page 17: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

17

Class Hierarchy

• Inheritance establishes a hierarchy of classes

• At the top of Java’s class hierarchy is the class Object, which establishes behavior that is common to all of Java’s objects

• By definition in Java all classes implicitly extend class Object

• Two examples of methods in Object are equals and toString

Page 18: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

18

An Example

String s = “Hello”;String t = new String(“Hello”);// s == t is false, but s.equals(t) is true// the default is the same as ==

Complex z = new Complex(1, 1);System.out.println(z);// the default prints the class name and an// internal index. This example prints // something like Complex@73d6a5

Page 19: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

19

An Examplepublic class Complex{ // … public boolean equals( Complex c ) { return re == c.realpart() && im == c.imaginarypart(); }

public String toString () { return re + “ + ” + im + “I”; } }

Complex z = new Complex(1, 1);Complex x = new Complex(1, 1);if (x.equals(z)) System.out.println(“ok!”); // ok!System.out.println(z); // 1.0 + 1.0i

Page 20: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

20

An Example – Version 1public class Point{ public Point (double x, double y) { this.x = x; this.y = y; } // ... private double x; private double y;}public class Circle{ public Circle( Point c, double r) { center = c; radius = r; } //... public double area() { return Math.PI * radius * radius; } private Point center; private double radius;}

Page 21: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

21

An Example – Version 1

public class Rectangle{ public Rectangle (Point c, double w, double h) { center = c; width = w; height = h; } // ... public double area() { return width * height; }

private Point center; private double width; private double height;}

Page 22: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

22

An Example – Version 2

public abstract class ClosedFigure{ public ClosedFigure (Point c) { center = c; } // ... public abstract double area();

private Point center;}

Page 23: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

23

An Example – Version 2

public class Circle extends ClosedFigure{ public Circle( Point c, double r) { super(c); radius = r; } //... public double area() { return Math.PI * radius * radius; } private double radius;}public class Rectangle extends ClosedFigure{ public Rectangle (Point c, double w, double h) { super(c); width = w; height = h; } // ... public double area() { return width * height; } private double width; private double height;}

Page 24: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

24

An Example – Version 3

public abstract class ClosedFigure{ public ClosedFigure (Point c) { center = c; } // ... public abstract double area(); protected Point center; // can be accessed by subclasses}

public class Circle extends ClosedFigure{ public Circle( Point c, double r) { center = c; radius = r; } //...}

Page 25: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

25

An Example – Version 3

Point x, y;ClosedFigure f;Rectangle r;Circle c;x = new Point(0, 0);y = new Point(1, -1);r = new Rectangle(x, 1, 1);c = new Circle(y, 1);f = r;f.area(); // 1.0f = c;f.area(); // 3.141592 …

Page 26: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

26

Inheritance Graph

• Inheritance hierarchy can be viewed as an inheritance graph

ClosedFigure

Rectangle Circle

ClosedFigure

Polygon Ellipse

Rectangle CircleTriangle

Square

Java provides only singleclass inheritance

Page 27: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

27

Multiple Class Inheritance

A

B C

D

B C

D

A A

shared inheritance repeated inheritance

Page 28: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

28

An Examplepublic class LinkableObject{ public LinkableObject( Object d ) { link = null; item = d; } public LinkableObject( Object d, LinkableObject link) { this.link = link; item = d; }

public LinkableObject next() { return link; }

public void linkTo( LinkableObject p) { link = p; }

public Object data() { return item; }

private LinkableObject link; private Object item;}

Page 29: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

29

An Example

LinkableObject r = new LinkableObject(new Double(1.2));LinkableObject i = new LinkableObject(new Integer(42));LinkableObject c = new LinkableObject(new Complex(1, -1));

Page 30: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

30

An Examplepublic class Queue{ public Queue() { rear = null; }

public boolean empty() { return rear == null; } public LinkableObject front() { return rear.next(); } public void dequeue() { if (front() == rear) rear = null; else rear.linkTo(front().next()); } public void enqueue( LinkableObject item) { if (empty()) { rear = item; rear.linkTo(item); } else { item.linkTo(front()); rear.linkTo(item); rear = item; } }

private LinkableObject rear;}

Page 31: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

31

An Example

Queue q = new Queue();q.enqueue(r);q.enqueue(i);q.enqueue(c);q.dequeue();System.out.println(q.front().data()); // prints 42

Page 32: Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.

32

Multiple Interface Inheritance

interface LinkableObject{ LinkableObject next(); void Linkto( LinkableObject p);}

class LinkableComplex extends Complex implements LinkableObject{ private LinkableObject link; public LinkableObject next() { return link; } public void linkTo(LinkableObject p) { link = p; } public LinkableComplex(double re, double im) { super(re, im); link = null; }}