1 Chapter 10: Data Abstraction and Object Orientation Aaron Bloomfield CS 415 Fall 2005.

Slides:



Advertisements
Similar presentations
Chapter 1 OO using C++. Abstract Data Types Before we begin we should know how to accomplish the goal of the program We should know all the input and.
Advertisements

1 Object-Oriented Programming (Section ) CSCI 431 Programming Languages Fall 2003 A compilation of material developed by Felix Hernandez-Campos.
CS 211 Inheritance AAA.
Chapter 8 Inheritance Part 2. © 2004 Pearson Addison-Wesley. All rights reserved8-2 Outline Creating Subclasses Overriding Methods Class Hierarchies Inheritance.
Inheritance Inheritance Reserved word protected Reserved word super
CS 326 Programming Languages, Concepts and Implementation Instructor: Mircea Nicolescu Lecture 18.
OOP in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Aalborg Media Lab 23-Jun-15 Inheritance Lecture 10 Chapter 8.
1 COMP 144 Programming Language Concepts Felix Hernandez-Campos Lecture 24: Dynamic Binding COMP 144 Programming Language Concepts Spring 2002 Felix Hernandez-Campos.
Data Abstraction and Object- Oriented Programming CS351 – Programming Paradigms.
OOP in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Inheritance and Polymorphism CS351 – Programming Paradigms.
CS221 - Computer Science II Polymorphism 1 Inheritance "Question: What is the object oriented way of getting rich? Answer: Inheritance.“ “Inheritance is.
Shallow Versus Deep Copy and Pointers Shallow copy: when two or more pointers of the same types point to the same memory – They point to the same data.
OOP Languages: Java vs C++
Programming Languages and Paradigms Object-Oriented Programming.
CSM-Java Programming-I Spring,2005 Introduction to Objects and Classes Lesson - 1.
C++ Object Oriented 1. Class and Object The main purpose of C++ programming is to add object orientation to the C programming language and classes are.
CSE 425: Object-Oriented Programming II Implementation of OO Languages Efficient use of instructions and program storage –E.g., a C++ object is stored.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Taken from slides of Starting Out with C++ Early Objects Seventh Edition.
Chapter 15 – Inheritance, Virtual Functions, and Polymorphism
C++ Programming. Table of Contents History What is C++? Development of C++ Standardized C++ What are the features of C++? What is Object Orientation?
“is a”  Define a new class DerivedClass which extends BaseClass class BaseClass { // class contents } class DerivedClass : BaseClass { // class.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
OOPs Object oriented programming. Based on ADT principles  Representation of type and operations in a single unit  Available for other units to create.
Introduction to Object Oriented Programming. Object Oriented Programming Technique used to develop programs revolving around the real world entities In.
Object Oriented Programming: Java Edition By: Samuel Robinson.
Programming Languages and Paradigms Object-Oriented Programming (Part II)
CS212: Object Oriented Analysis and Design Lecture 6: Friends, Constructor and destructors.
Object Oriented Programming with C++/ Session 6 / 1 of 44 Multiple Inheritance and Polymorphism Session 6.
CSCI-383 Object-Oriented Programming & Design Lecture 13.
Programming Languages and Paradigms Object-Oriented Programming.
OOP and Dynamic Method Binding Chapter 9. Object Oriented Programming Skipping most of this chapter Focus on 9.4, Dynamic method binding – Polymorphism.
Inheritance in the Java programming language J. W. Rider.
Copyright 2004 Scott/Jones Publishing Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 7 Structured Data and Classes.
Copyright 2006 Oxford Consulting, Ltd1 February Polymorphism Polymorphism Polymorphism is a major strength of an object centered paradigm Same.
Lecture 10 Concepts of Programming Languages Arne Kutzner Hanyang University / Seoul Korea.
CS451 - Lecture 2 1 CS451 Lecture 2: Introduction to Object Orientation Yugi Lee STB #555 (816) * Acknowledgement:
Classes. Constructor A constructor is a special method whose purpose is to construct and initialize objects. Constructor name must be the same as the.
Object-Oriented Programming Chapter Chapter
(1) ICS 313: Programming Language Theory Chapter 12: Object Oriented Programming.
OOPs Object oriented programming. Abstract data types  Representationof type and operations in a single unit  Available for other units to create variables.
Object Oriented Programming
CS-1030 Dr. Mark L. Hornick 1 Basic C++ State the difference between a function/class declaration and a function/class definition. Explain the purpose.
ISBN Object-Oriented Programming Chapter Chapter
Copyright © 2005 Elsevier Object-Oriented Programming Control or PROCESS abstraction is a very old idea (subroutines!), though few languages provide it.
Java Programming, Second Edition Chapter Twelve Advanced Inheritance Concepts.
Classes, Interfaces and Packages
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Assignment 3 is due Sunday, the 8 th at 7pm. Problems with assn 3? Discuss at your team meeting tonight.
Recap Introduction to Inheritance Inheritance in C++ IS-A Relationship Polymorphism in Inheritance Classes in Inheritance Visibility Rules Constructor.
Inheritance in C++ Bryce Boe 2012/08/28 CS32, Summer 2012 B.
Terms and Rules II Professor Evan Korth New York University (All rights reserved)
1 Lecture 23: Dynamic Binding (Section ) CSCI 431 Programming Languages Fall 2002 A compilation of material developed by Felix Hernandez-Campos.
Copyright © 2009 Elsevier Chapter 9 :: Data Abstraction and Object Orientation Programming Language Pragmatics Michael L. Scott.
ISBN Chapter 12 Support for Object-Oriented Programming.
Design issues for Object-Oriented Languages
Inheritance Modern object-oriented (OO) programming languages provide 3 capabilities: encapsulation inheritance polymorphism which can improve the design,
Andy Wang Object Oriented Programming in C++ COP 3330
Chapter 9 :: Data Abstraction and Object Orientation
Inheritance and Polymorphism
Inheritance Modern object-oriented (OO) programming languages provide 3 capabilities: encapsulation inheritance polymorphism which can improve the design,
Copyright © 2009 Elsevier Chapter 9 :: Data Abstraction and Object Orientation Programming Language Pragmatics Michael L. Scott.
Chapter 9 :: Data Abstraction and Object Orientation
More Object-Oriented Programming
Chapter 9 :: Data Abstraction and Object Orientation
Polymorphism Polymorphism
Parameter Passing Actual vs formal parameters
Lecture 10 Concepts of Programming Languages
Chapter 10 :: Object Orientated Programming
C++ Object Oriented 1.
Presentation transcript:

1 Chapter 10: Data Abstraction and Object Orientation Aaron Bloomfield CS 415 Fall 2005

2 Fundamental OO Concepts Encapsulation Inheritance Dynamic Method Binding

3 Encapsulation –Encapsulation allows the programmer to group data and the subroutines that operate on them together in one place, and to hide irrelevant details from the user. Information Hiding –Making objects and algorithms invisible to portions of the system that do not need them.

4 Modules If a module M exports a type T, the rest of the program can only pass T to subroutines exported from M. –T is said to be an opaque type. var Database : module exports (tuple with (:=, name)) … type tuple = record var name : packed array of char … end tuple … What can the code outside the Database module do?

5 Module Changing Body is Changed Private Part of Header is Changed Public Part of Header is Changed

6 Classes can limit visibility Private Protected Public Package (in some languages, e.g. Java)

7 Derived class can restrict visibility Private –Protected and public members of base class are private in derived class. Protected –Protected and public members of base class are protected in derived class. Public –Protected and public members of base class are protected and public in derived class. Private members of base class aren’t visible in derived class.

8 Initialization and Finalization

9 Four Important Issues Choosing a Constructor References and Values Execution Order Garbage Collection –We’ve seen that already

10 Choosing a Constructor Object-Oriented Languages allow classes to have zero, one or more different constructors. Two ways to distinguish between constructors –Different Names –Different Number and Types of Arguements

11 Constructors Eiffel code: class COMPLEX creation new_cartesian, new_polar … new_cartesian(x_val, y_va; : REAL) is … new_polar(rho, theta : REAL) is … class mydata { public: mydata(string data); mydata(int data); mydata(); };

12 References and Values C++ vs. Java –Java uses reference, C++ you can specify Reference –Every object is created explicitly so it is easy to make sure the correct constructor is called. –More elegant, but requires allocation from heap and extra indirections on every access of the object. Value –More efficient but harder to control initialization

13 Execution Order If class B is derived from class A, A constructor is called before B constructor –To get arguments to the A constructor, you must use an intializer list class foo : bar {... } foo::foo (foo_params) : bar(bar_params) { … –The part after the colon is a call to bar’s constructor

14 Destructors and Garbage Collection When an object is destroyed, the destructor is called for the derived class first, then the destructors of the base classes are called. –Reverse order of derivation Destructors purpose is to return allocated space back to the heap Many languages provide automatic garbage collection –Java, Smalltalk, Eiffel, etc.

15 Java’s finalize() method In Java, you can override the finalize() method This allows code to be executed when the object is about to be deleted –But you shouldn’t extend the object’s lifetime by doing this –As the finalize() method is only called once per object

16 Dynamic Method Binding

17 Polymorphism A derived class (D) has all the members of its base class (C) –Class D can be used anytime class C is expected. –If class D does not hide any publicly visible members of C then D is a subtype of C. If class D is used in place of class C, this is a form of polymorphism.

18 Polymorphism Example class person { … class student : public person { … class professor : public person { … student s; professor p; … person *x = &s; person *y = &p;

19 Dynamic vs. Static binding Static method binding uses the type of the reference: s.print_mailing_label(); p.print_mailing_label(); Dynamic method binding uses the class of the object that is referred/pointed to: x->print_mailing_label(); y->print_mailing_label();

20 Which one does Java use? public class Foo { public String toString() { return "Foo's toString()"; } public static void main (String args[]) { Object bar = new Foo(); System.out.println (bar); } } Java uses dynamic binding

21 Dynamic method binding Dynamic method binding: calls to virtual methods are dispatched to the appropriate implementation at run time based on the class of the object –Simula: virtual methods listed at beginning of class declaration CLASS Person; VIRTUAL: PROCEDURE PrintMailingLabel; BEGIN … END Person;

22 Dynamic method binding –C++: keyword “virtual” prefixes function declaration class person { public: virtual void print_mailing_label (); … } This requires keeping a virtual method table along with each object –More on this in a bit…

23 Abstract Methods Bodyless virtual methods In C++: called pure virtual method, created by following a procedure declaration with an assignment to zero. class person { … public: virtual void print_mailing_label() = 0;

24 Abstract Classes Class that contains one or more abstract methods –Java: called an interface (which has only abstract methods) Generally not possible to declare object of an abstract class b/c it would be missing at least one member –But you can do so in C++ Serves as a base for concrete classes. –Concrete class must provide a definition for every abstract method it inherits Application to dynamic method binding: allows code that calls methods of objects of a base class, assuming that the concrete methods will be invoked at run time.

25 Member Lookup: vtable In dynamic binding each object is represented with a record whose first field contains the address of a virtual method table (vtable) for that object’s class Our objects are being more complicated for the compiler to manage –Virtual method tables –Reference counts –Etc…

26 Member Lookup- vtable

27 Single Inheritance

28 Multiple Inheritance

29 Multiple Inheritance Derived class with two or more base classes E.g. - Student class C++: class student : public person, public gp_list_node { … }

30 Multiple Inheritance Supported in C++, Eiffel, CLOS Single Inheritance only in Simula, Smalltalk, Modula- 3, Ada 95 & Oberon Java provides limited support – more on this later

31 Why use MI? Involves a number of tradeoffs –Complexity vs. Simplicity –Efficiency vs. Scalability How do you decide? –Does it satisfy the “is a” relationship? –Is object creation speed a constraint?

32 Multiple inheritance types Normal (non-repeated) Repeated Shared Mix-in

33 Normal (non-repeated) MI Recall “views” of objects –data members –vtables Compile-time constant offset d

34

35 Efficiency (or lack thereof) May have to determine view dynamically Results in less time-efficient code An example implementation may have: –3 extra cycles, 1 extra memory access over single inheritance –5 extra cycles, 3 extra memory accesses over static methods

36 Semantic Ambiguities What if two base classes have implementations of a shared method? –Won’t work in Eiffel or C++ –In other languages, you must call methods explicitly, i.e. class::method()

37 Semantic Ambiguities What if the relationship below occurs? This is repeated multiple inheritance –As one of the ancestors is repeated in the parent class of one of the descendents gp_list_nodeperson student gp_list_node student_prof professor

38 Replicated Multiple Inheritance Default in C++ Ex. gp_list_node Can only directly access one level deep –To access a student view of gp_list_node, you must first assign a student_prof pointer into a student or professor pointer

39

40 Shared Multiple Inheritance Default in Eiffel Ex. Person Still have problem when inheriting overridden methods

41

42 Mix-in Inheritance Only one base class can contain method definitions –The other base class(es) contain only abstract methods Only type of MI supported in Java, but not necessarily MI Traditional Java inheritance uses keyword extends Mix-in (interface) inheritance in Java uses keyword implements –Done via interfaces

43 Java Interfaces public class String extends Object implements Serializable, CharSequence, Comparable; Java interfaces can contain definition prototypes and static variables