UMBC 1 Static and Dynamic Behavior CMSC 432 Shon Vick.

Slides:



Advertisements
Similar presentations
More on Classes Inheritance and Polymorphism
Advertisements

Engr 691 Special Topics in Engineering Science Software Architecture Spring Semester 2004 Lecture Notes.
Overriding CMPS Overriding Recall, a method in a child class overrides a method in the parent class, if it has the same name and type signature.
A subclass can add new private instance variables A subclass can add new public, private or static methods A subclass can override inherited methods A.
Module 8 “Polymorphism and Inheritance”. Outline Understanding Inheritance Inheritance Diagrams Constructors in Derived Classes Type Compatibility Polymorphism.
Polymorphism.
1 COSC2767: Object-Oriented Programming Haibin Zhu, Ph. D. Associate Professor of CS, Nipissing University.
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.
ACM/JETT Workshop - August 4-5, :Inheritance and Interfaces.
1 Chapter 7 l Inheritance Basics l Programming with Inheritance l Dynamic Binding and Polymorphism Inheritance.
Inheritance and Polymorphism Recitation 04/10/2009 CS 180 Department of Computer Science, Purdue University.
ECE122 L22: Polymorphism Using Inheritance April 26, 2007 ECE 122 Engineering Problem Solving with Java Lecture 22 Polymorphism using Inheritance.
Static and Dynamic Behavior Fall 2005 OOPD John Anthony.
C++ fundamentals.
CSCI-383 Object-Oriented Programming & Design Lecture 15.
(c) University of Washington03-1 CSC 143 Java Inheritance Reading: Ch. 10.
CSSE501 Object-Oriented Development. Chapter 5: Messages, Instances and Initialization  This chapter examines OOP run-time features: Object Creation.
Engr 691 Special Topics in Engineering Science Software Architecture Spring Semester 2004 Lecture Notes.
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.
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.
Static and Dynamic Behavior CMPS Power of OOP Derives from the ability of objects to change their behavior dynamically at run time. Static – refers.
Chapter 9: Polymorphism Coming up: Creating Objects Revisited.
1 COSC3557: Object-Oriented Programming Haibin Zhu, Ph. D. Associate Professor of CS, Nipissing University.
Method Overriding Remember inheritance: when a child class inherits methods, variables, etc from a parent class. Example: public class Dictionary extends.
CSSE501 Object-Oriented Development. Chapter 12: Implications of Substitution  In this chapter we will investigate some of the implications of the principle.
CSCI-383 Object-Oriented Programming & Design Lecture 13.
Inheritance and Polymorphism Daniel Liang, Introduction to Java Programming.
Guided Notes Ch. 9 ADT and Modules Ch. 10 Object-Oriented Programming PHP support for OOP and Assignment 4 Term project proposal C++ and Java Designer.
OOP and Dynamic Method Binding Chapter 9. Object Oriented Programming Skipping most of this chapter Focus on 9.4, Dynamic method binding – Polymorphism.
CSCI 383 Object-Oriented Programming & Design Lecture 17 Martin van Bommel.
CSSE501 Object-Oriented Development. Chapter 11: Static and Dynamic Behavior  In this chapter we will examine the differences between static and dynamic.
Inheritance - Polymorphism ITI 1121 Nour El Kadri.
RIT Computer Science Dept. Goals l Inheritance l Modifiers: private, public, protected l Polymorphism.
Parameters… Classes Cont Mrs. C. Furman October 13, 2008.
CS221 - Computer Science II Polymorphism 1. CS221 - Computer Science II Polymorphism 2 Outline  Explanation of polymorphism.  Using polymorphism to.
Chapter 3 Inheritance and Polymorphism Goals: 1.Superclasses and subclasses 2.Inheritance Hierarchy 3.Polymorphism 4.Type Compatibility 5.Abstract Classes.
Sadegh Aliakbary Sharif University of Technology Spring 2011.
 Objects versus Class  Three main concepts of OOP ◦ Encapsulation ◦ Inheritance ◦ Polymorphism  Method ◦ Parameterized ◦ Value-Returning.
(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.
Chapter 10: Introduction to Inheritance. Objectives Learn about the concept of inheritance Extend classes Override superclass methods Call constructors.
Method Overriding Remember inheritance: when a child class inherits methods, variables, etc from a parent class. Example: public class Dictionary extends.
Inheritance and Class Hierarchies Chapter 3. Chapter 3: Inheritance and Class Hierarchies2 Chapter Objectives To understand inheritance and how it facilitates.
Chapter 11: Advanced Inheritance Concepts. Objectives Create and use abstract classes Use dynamic method binding Create arrays of subclass objects Use.
Peyman Dodangeh Sharif University of Technology Fall 2014.
CMSC 202 Polymorphism. 10/20102 Topics Binding (early and late) Upcasting and downcasting Extensibility The final modifier with  methods  classes.
Polymorphism and Virtual Functions One name many shapes behaviour Unit - 07.
COP INTERMEDIATE JAVA Inheritance, Polymorphism, Interfaces.
1 n Object Oriented Programming. 2 Introduction n procedure-oriented programming consists of writing a list of instructions and organizing these instructions.
CSCI-383 Object-Oriented Programming & Design Lecture 17.
BY:- TOPS Technologies
CSCI 383 Object-Oriented Programming & Design Lecture 15 Martin van Bommel.
Polymorphic Variables CMPS2143. The Polymorphic Variable A polymorphic variable is a variable that can reference more than one type of object (that is,
1 Topic 5 Polymorphism "“Inheritance is new code that reuses old code. Polymorphism is old code that reuses new code.”
Java Programming Fifth Edition Chapter 9 Introduction to Inheritance.
Design issues for Object-Oriented Languages
Inheritance Modern object-oriented (OO) programming languages provide 3 capabilities: encapsulation inheritance polymorphism which can improve the design,
Polymorphism in Methods
Modern Programming Tools And Techniques-I
Advanced Programming in Java
Csci 490 / Engr 596 Special Topics / Special Projects Software Design and Scala Programming Spring Semester 2010 Lecture Notes.
Types of Programming Languages
CMSC 202 Polymorphism.
Topic 5 Polymorphism "“Inheritance is new code that reuses old code. Polymorphism is old code that reuses new code.”
Workshop for Programming And Systems Management Teachers
Review of Previous Lesson
Advanced Programming in Java
Static Binding Static binding chooses the function in the class of the base class pointer, ignoring any versions in the class of the object actually.
Presentation transcript:

UMBC 1 Static and Dynamic Behavior CMSC 432 Shon Vick

UMBC 2 Summary  In Chapter 11 Budd examines how the differences in static and dynamic features effect object-oriented programming languages.  Static versus Dynamic Typing  Static and Dynamic Classes in Statically Typed Languages  Static and Dynamic Method Binding in Statically Typed Languages

UMBC 3 What do the terms Static and Dynamic Mean?  In Programming languages:  Static almost always means fixed or bound at compile time, and cannot thereafter be changed.  Dynamic almost always means not fixed or bound until run time, and therefore can change during the course of execution

UMBC 4 Static and Dynamic Typing  In a statically typed programming language (Java or Pascal), for example, variables have declared typed -- fixed at compile time.  In a dynamically typed programming language (Smalltalk or CLOS), a variable is just a name.  Types are associated with values, not variables.  A variable can hold different types during the course of execution.

UMBC 5 Arguments for and Against  Static and Dynamically typed languages have existed as long as there have been programming languages. Arguments for and against:  Static typing allows better error detection, more work at compile time and hence faster execution time.  Dynamic typing allows greater flexibility, easier to write (for example, no declaration statements).  Both arguments have some validity, and hence both types of languages will continue to exist in the future.

UMBC 6 The Polymorphic Variable  The addition of object-oriented ideas in a statically typed languages adds a new twist.  Recall the argument for substitution: an instance of a child class should be allowed to be assigned to a variable of the parent class var pet : Mammal; fido : Dog; felice: Cat; begin pet := fido; // legal pet := felice; // legal fido := pet; // not legal!

UMBC 7 Static Class and Dynamic Class  In a statically typed language we say the class of the declaration is the static class for the variable, while the class of the value it currently holds is the dynamic class.  Most statically typed OO languages constrain the dynamic class to be a child class of the static class. var pet : Mammal; fido : Dog begin pet := fido; // static class is Mammal, // dynamic class is Dog end ;

UMBC 8 Importance of Static Class  In a statically typed object-oriented language, the legality of a message is determined at compile time, based on the static class.  A message can produce a compile error, even if no run-time error could possibly arise: class Mammal { } class Dog extends Mammal { void speak() { System.out.println("woof"); } // will generate error, Mammals don't speak Mammal pet = new Dog; pet.speak();

UMBC 9 Reverse Polymorphism  Polymorphism says we can assign a value from a child class to an instance of the parent class, but can this assignment then be reversed? Under what conditions?  Problem of reverse polymorphism var pet : Mammal; fido : Dog; felice : Cat; begin pet := fido; // legal fido := pet; // is this legal? end;

UMBC 10 Closer To Home HashMap hm = new HashMap(); String name = “Spike”; Dog spike = new Dog(“Spike”); // … Dog d = hm.get(“Spike”); Dog d = (Dog) hm.get(“Spike”);

UMBC 11 An Aside  Is it possible with this Hashmap (or any of the other collection classes in java.util? No! Read erics/ for next time. erics/ LinkedList stringList = new LinkedList (); LinkedList integerList = new LinkedList (); integerList.add(new Integer(1)); integerList.add(new Integer(2)); stringList.add(new String("I am a String")); // causes a compilation error stringList.add(new Integer(1));

UMBC 12 Returning to Reverse Polymorphism  There are two specific problems associated with the question of reverse polymorphism. 1. The problem of identity - can I tell if a value declared as an instance of a parent class actually holds a value from a subclass. (instanceof in Java) 2. The task of assignment - can I then assign the value from the parent class to a variable declared as the subclass. (casting)  In some languages mechanisms are provided to address these two problems together, while in other languages they are separated.

UMBC 13 The Container Problem  The task of reverse polymorphism is often encountered in connection with a collection of values - we have a list of items from the parent class (say a list of Mammals), and when we extract a value we need to know if it is a more specific type.  Generally occurs in languages with a single inheritance tree, where the only type we may have associated with a value is the class ``Object''.  Solving this problem generally requires values to have ``self knowledge'' of their own type. In some languages they do, in some languages values do not.

UMBC 14 Static and Dynamic Method Binding  Should the binding for information be associated with the static class of a variable or the dynamic class.  Alice holds a small Mammal - asks Bill ``does this animal give birth to live young''.  Static answer - All mammals give birth to live young - therefore yes.  What if the Mammal is a platypus? Dynamic answer - Platypus lay eggs, therefore no.  Even statically typed OOP languages can use dynamic binding. But may use static type to determine legality of operation

UMBC 15 Documenting Method Binding  In many languages dynamic binding is the default. If a child class overrides a method in the parent, using the same type signature, then the selected method will be determined by the dynamic type.  In other languages (C++, Delphi, C#) the programmer must indicate which methods are dynamically bound and which are statically type. In C#, for example, this is done using the virtual keyword.

UMBC 16 An Example class Animal { public: virtual void speak () { cout << "Animal Speak !\n"; } void reply () { cout << "Animal Reply !\n"; } }; class Dog : Animal { public: override void speak () { cout << "woof !\n"; } void reply () { cout << "woof again!\n"; } }; class Bird : Animal { public: virtual void speak () { cout << "tweet !\n"; } }; Animal a; Dog b; b.speak(); woof ! a = b; a.speak(); woof ! Bird c; c.speak(); tweet ! a = c; a.speak(); tweet !

UMBC 17 References  An Introduction to Object Oriented Programming (3rd Edition), Addison Wesley, Reading, Massachusetts, An Introduction to Object Oriented Programming (3rd Edition), Addison Wesley, Reading, Massachusetts,  Articles/releases/generics/ Articles/releases/generics/