Download presentation
Presentation is loading. Please wait.
Published byMorris Warren Modified over 9 years ago
1
Object Oriented Programming Chapter 7 Programming Languages by Ravi Sethi
2
7.1 What Is An Object Object-oriented program - Description or simulation of application Object-oriented programming is done by adopting or extending an existing program. Object - Entities in simulation –An object can represent any entity in solution of problem –An object interacts by sending messages –A computation is characterized in terms of observable behavior of objects
3
7.2 Object Oriented Thinking Vocabulary of object-oriented programming –Object : Collection of data and operations –Class: Description of a set of objects; objects with common properties[type of an object] –Subclass: Subset of class, with additional properties; nested class –Superclass: Main class that subclasses fall under –Instance: Technical term for an object of class –Method: Procedure body implementing an operation –Message: Procedure call; request to execute method
4
A class can have inheritance. –Single inheritance: Subclass has one superclass (Java) –Multiple inheritance: Subclass has more than one superclass (C++) A message can carry parameters. An object will execute a method when gets a message[way responds]. A class definition specifies the properties of an object. It includes methods it can execute and variables for the object.
5
Object Oriented Thinking (cont.) When storage is allocated for a variable of the class, we call that an instance.
6
7.3 Inheritance Children of a class hierarchy inherit the methods and variables of ancestor methods. Object determines how it will implement a message. Information hiding facilitates two kinds of changes: –Implementation change : If all interactions with an object are through it’s interface, then algorithms and data structures are hidden behind the interface can be changed
7
Inheritance change : If all interactions are through the interface to a superclass, then program can be extended by adding a subclass. Object-oriented programming often done by adopting or extending an existing program. Subclass is a derived class and superclass is a base class. A method in a subclass overrides an inherited method of the same name.
8
7.4 Object-Oriented Programming in C++ C++ provides a transition path from C to object oriented programming. Declaring a class : –Constructor: Member function with same name as class; called automatically when lifetime of an object of the class begins[used as an initialization method] –Body of member function can appear within the declaration or separate
9
Three keywords for controlling the visibility of members names. –Public: visible to outside code –Private: not visible to outside code –Keyword: visible through inheritance only Base and Derived Classes –Derived class: an extension of a base class Public Base Classes –Identified by the keyword public
10
–class : public { }; –Members of a public base class retain their visibility in the derived class Virtual Functions –Allow a derived class to supply the function body. –Are taken from derived class where possible Initialization and Inheritance –Code for initialization belongs in the constructor for a class
11
Object-Oriented Programming in C++(cont) –Constructor of a base class is called before the derived class –The destructor in derived class is called before the destructor in the base class
12
EXAMPLE A prime example of object orientation would be a program that draws diagrams. The object would be shapes. Can classify a shape based on its properties. Classification of shape objects –Figure 7.2 Page 257 –Figure 7.3 Page 258
13
Class Shape –Subclass Box –Subclass Line –Subclass Text –Subclass Ellipse Subclass Circle Methods of Shape would be –initialize, draw, offset, setwidth, setheight, and setalign
14
Variables of Object Shape –width, height, align Methods for each class Figure 7.6 Page 261 Since class box, ellipse, line, text are subclasses of Shape; they will inherit the methods and variables from Shape What methods and variables would class circle inherit? Remember that Method Draw from Class box overrides Method Draw from Class Shape
15
Implementation of Shape(s) Implementation of Class Shape Figure 7.10 page 271
16
7.5 AN EXTENDED C++ EXAMPLE This section illustrates inheritance in C++ by developing a program to find prime numbers. A prime number is divisible only by itself and 1. Primes: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
17
A Prime Number Sieve Sieve method is used to compute primes. The underlying idea is that n is a prime if n is not a multiple of any prime p smaller than n. Objects used: counter(n) and filter(n)
18
A Base Class class Item { public : Item *source; Item(Item *src) { source = src; } virtual int out() { return 0;} };
19
Derived Classes class Counter : public Item { int value; public : int out() { return value++; } Counter(int v) : Item(0) { value = v; } };
20
Initialization of Derived and Base Classes Counter(int v) : Item(0) { value = v; } Counter (int v) has an integer argument. : Item(0) passes the null pointer 0 as an argument to the constructor of the base class. { value = v; } is the body of the constructor in the derived class.
21
7.6 DERIVED CLASSES AND INFORMATION HIDING Inheritance is in terms of an is-a relation on objects. Hiding inherited members can interfere with a fundamental property, the ability of a derived object to appear wherever a base object is expected. Example : list and stack
22
Public Base Classes Syntax for a public base class : class : public { }; Members of a public base class retain their accessibility in the derived class.
23
Public Base Classes An object of a derived class has an is-a relation with objects of its public base class.
24
Private Base Classes Syntax for a private base class : class : private { }; A derived class simply shares the code of the private base class. Such code sharing is called implementation inheritance.
25
Private Base Classes All members derived by from become private members of. Nonprivate inherited members can be made visible by writing their full names in the derived class.
26
Privacy Principle The private members of a class are accessible only to member functions of the class. Functions in a derived class cannot access the private members of its base class.
27
Privacy Principle class List { cell *rear; public : List(); int empty(); protected : void add(int); void push(int); int get(); };
28
Privacy Principle class Queue : public List { public : Queue(); int get() { return List :: get(); } void put(int x) { add(x) ;} };
29
Privacy Principle A complete listing of the members of class queue. Public Functions –Queue added constructor function –get added –put added –List :: empty inherited
30
Privacy Principle Protected functions –add inherited –push inherited –List :: get inherited Private Variables ( accessible to functions added by Queue ) –none
31
Privacy Principle Private Variables ( accessible only to inherited functions ) –rear inherited
32
7.7 OBJECTS IN SMALLTALK Smalltalk is built on the concepts of objects and messages. Everything is an object. Data is private to an object. An object has a notion of self.
33
System classes Numbers, data structures, and input/output are provided by built-in system classes. Superclass and subclass vs. base class and derived class
34
Elements of a Class Definition Instance is a technical term for an object of a class Variables and methods –Class methods are used primarily to create instances. –Class variables are used to share information between instances.
35
A View of Class Stack in Smalltalk class Stack superclass Object instance variables contents class methods new ^ super new initialize
36
A View of Class Stack in Smalltalk instance methods push: anElement contents addLast: anElement pop ^ contents removeLast initialize contents := OrderedCollection new
37
Instance Variables and Privacy An instance variable belongs to an instance. Its value can be changed only by operations belonging to the instance. How are the private variables initialized? Class variables are shared by all instances of a class. Global variables are shared by all instances of all classes.
38
Syntax of Messages Unary messages contents size Keyword messages aStack push: 54 Binary messages operators: +, -
39
Expression Evaluation Evaluation proceeds from left to right. Unary messages --- highest precedence Binary messages --- all with the same precedence Keyword messages --- lowest precedence
40
Expression Evaluation Examples – contents size = 0 ( contents size ) = 0 – ( ( w*w ) + ( h*h ) ) sqrt w*w + h*h = ( ( w*w ) + h ) * h )
41
Expression Evaluation The assignment symbol is <-- or :=. A sequence of expressions is separated by dots or periods. w := width / 2. h := height / 2. r := ( ( w*w ) + ( h*h ) ) sqrt
42
Returning Values Return value operator : ^ Return value operator has lower precedence than other messages. isEmpty ^ contents size = 0 ^ ( ( contents size ) = 0 )
43
Conditionals and Blocks An expression sequence enclosed within square brackets, [ and ], is called a block. x > y if True: [ max := x ] if False: [ max := y ] Blocks are objects.
44
7.8 SMALLTALK OBJECTS HAVE A SELF The inheritance rules for Smalltalk Single inheritance means that each class has at most one superclass. The root of hierarchy is class object. A subclass inherits variables and methods from its superclass. A subclass can declare fresh variable names, different from the inherited variables.
45
Methods in the subclass override inherited methods. The rules for methods ensure that an object of a subclass can respond to all the messages that an object of a superclass can.
46
Messages to self Classes and objects can invoke one of their own methods by sending a message to the special name self. pop Self isEmpty if True: [ self error : ‘stack empty’ ] if False: [ ^ contents removeLast ]
47
Messages to super When a subclass overrides an inherited method, the special name super allows the overridden method to be used. new ^ super new initialize
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.