Lecture 14: More Inheritance & Genericity

Size: px
Start display at page:

Download "Lecture 14: More Inheritance & Genericity"

Transcription

1 Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer October 2006 February 2007 MP1 Lecture 14: More Inheritance & Genericity 2 Genericity: summary 1 Type extension mechanism Reconciles flexibility with type safety Enables us to have parameterized classes Useful for container data structures: lists, arrays, trees, Type now a bit more general than class Intro. to Programming, lecture 14: More Inheritance & Genericity 3 1

2 (Reminder) A generic class Formal generic parameter class LIST [G ] feature ext (x : G ) is last : G is To use the class: obtain a generic derivation, e.g. cities: LIST [CITY ] Actual generic parameter Intro. to Programming, lecture 14: More Inheritance & Genericity 4 (Reminder) Using generic derivations cities : LIST [CITY ] people : LIST [PERSON] c : CITY p : PERSON cities.ext (c) people.ext (p) STATIC TYPING: The compiler will reject: people.ext (c) cities.ext (p) c := cities.last c.add_tram_line (Line8 ) Intro. to Programming, lecture 14: More Inheritance & Genericity 5 (Reminder) Using genericity LIST [CITY ] LIST [LIST [CITY ]] A type is no longer exactly the same thing as a class! (But every type remains based on a class.) Intro. to Programming, lecture 14: More Inheritance & Genericity 6 2

3 Genericity: summary 1 Type extension mechanism Reconciles flexibility with type safety Enables us to have parameterized classes Useful for container data structures: lists, arrays, trees, Type now a bit more general than class Intro. to Programming, lecture 14: More Inheritance & Genericity 7 Definition: Type We use types to declare entities, as in x : SOME_TYPE With the mechanisms defined so far, a type is one of: A non-generic class e.g. METRO_STATION A generic derivation, i.e. the name of a class followed by a list of types, the actual generic parameters, in brackets e.g. LIST [METRO_STATION] LIST [ARRAY [METRO_STATION]] Intro. to Programming, lecture 14: More Inheritance & Genericity 8 Genericity + inheritance 1: Constrained genericity class VECTOR [G ] feature plus alias "+" (other: VECTOR [G]): VECTOR [G] is -- Sum of current vector and other require lower = other.lower upper = other.upper local a, b, c: G do See next Other features, in particular item to access an element Intro. to Programming, lecture 14: More Inheritance & Genericity 9 3

4 Adding two vectors u + v = w 2 i1 a + b = c Intro. to Programming, lecture 14: More Inheritance & Genericity 10 Constrained genericity Body of plus alias "+": create Result.make (lower, upper) from i := lower until i > upper loop a := item (i ) b := other.item (i ) c := a + b -- Requires + operation on G! Result.put (c, i ) i := i + 1 Intro. to Programming, lecture 14: More Inheritance & Genericity 11 The solution Declare class VECTOR as class VECTOR [G > NUMERIC ] feature The rest as before Class NUMERIC (from the Kernel Library) provides features plus alias "+", minus alias "-"and so on. Intro. to Programming, lecture 14: More Inheritance & Genericity 12 4

5 Improving the solution Make VECTOR itself a descant of NUMERIC, effecting the corresponding features: class VECTOR [G > NUMERIC ] inherit NUMERIC feature Rest as before, including infix "+" Then it is possible to define v : VECTOR [INTEGER ] vv : VECTOR [VECTOR [INTEGER ]] vvv : VECTOR [VECTOR [VECTOR [INTEGER ]]] Intro. to Programming, lecture 14: More Inheritance & Genericity 13 Exting the basic notion of class Inheritance SET_OF_ CARS SET_OF_ PERSONS Genericity LIST_OF_ CITIES LIST_OF_ CARS LIST_OF_ PERSONS LINKED_LIST_ OF_CITIES LINKED_LIST_ OF_CARS Intro. to Programming, lecture 14: More Inheritance & Genericity 14 Genericity + Inheritance 2: Polymorphic data structure class LIST [G ] feature last : G is ext (x : G) is fl (SQUARE) fl: LIST [FIGURE] r: RECTANGLE (TRIANGLE) s: SQUARE t: TRIANGLE p: POLYGON (POLYGON) (RECTANGLE) fl.ext (p); fl.ext (t); fl.ext (s); fl.ext (r) fl.last.display Intro. to Programming, lecture 14: More Inheritance & Genericity 15 5

6 Example hierarchy * OPEN_ FIGURE extent* barycenter* * FIGURE display* rotate perimeter* * CLOSED_ FIGURE * deferred + effective ++ redefined perimeter+ perimeter+ + + SEGMENT POLYLINE POLYGON ELLIPSE TRIANGLE diagonal perimeter++ RECTANGLE side1 side2 perimeter++ SQUARE CIRCLE perimeter++ Intro. to Programming, lecture 14: More Inheritance & Genericity 16 Forcing a type: the problem fl.store ("FILE_NAME") -- Two years later: fl := retrieved ("FILE_NAME") See next x := fl.last -- [1] print (x.diagonal ) -- [2] What s wrong with this? If x is declared of type RECTANGLE, [1] is invalid. If x is declared of type FIGURE, [2] is invalid. Intro. to Programming, lecture 14: More Inheritance & Genericity 17 The solution: Assignment attempt fl.store ("FILE_NAME") -- Two years later: fl?= retrieved ("FILE_NAME") x := fl.last -- [1] print (x.diagonal) -- [2] But: If x is declared of type RECTANGLE, [1] is invalid. If x is declared of type FIGURE, [2] is invalid. Intro. to Programming, lecture 14: More Inheritance & Genericity 18 6

7 Assignment attempt f: FIGURE r: RECTANGLE fl.retrieve ("FILE_NAME") f := fl.last r?= f if r /= Void then print (r.diagonal) else print ("Too bad.") Intro. to Programming, lecture 14: More Inheritance & Genericity 19 Assignment attempt x?= y with x : A If y is attached to an object whose type conforms to A, perform normal reference assignment. Otherwise, make x void. Intro. to Programming, lecture 14: More Inheritance & Genericity 20 The role of deferred classes Express abstract concepts indepently of implementation Express common elements of various implementations Terminology: Effective = non-deferred (i.e. fully implemented) Intro. to Programming, lecture 14: More Inheritance & Genericity 21 7

8 A deferred feature In e.g. LIST: forth is require not after deferred ensure index = old index + 1 Intro. to Programming, lecture 14: More Inheritance & Genericity 22 Mixing deferred and effective features In the same class Effective! search (x: G) is -- Move to first position after current -- where x appears, or after if none. do from until after or else item = x loop forth Deferred! Programs with holes Intro. to Programming, lecture 14: More Inheritance & Genericity 23 Don t call us, we ll call you! A powerful form of reuse: The reusable element defines a general scheme Specific cases fill in the holes in that scheme Combine reuse with adaptation Intro. to Programming, lecture 14: More Inheritance & Genericity 24 8

9 Applications of deferred classes Analysis and design, top-down Taxonomy Capturing common behaviors Intro. to Programming, lecture 14: More Inheritance & Genericity 25 Deferred classes in EiffelBase CONTAINER * BOX * COLLECTION * TRAVERSABLE * FINITE * INFINITE * BAG * SET * HIERARCHICAL * LINEAR * BOUNDED * UNBOUNDED * COUNTABLE * RESIZABLE * INDEXABLE * CURSOR_ TABLE * ACTIVE * INTEGER_ * BILINEAR * INTERVAL * DISPENSER * SEQUENCE * STRUCTURE ARRAY STRING HASH_TABLE STACK * QUEUE * *: deferred Intro. to Programming, lecture 14: More Inheritance & Genericity 26 Java and.net solution Single inheritance only for classes Multiple inheritance from interfaces An interface is like a fully deferred class, with no implementations (do clauses), no attributes (and also no contracts) Intro. to Programming, lecture 14: More Inheritance & Genericity 27 9

10 Inheritance and assertions a1: A a1.r () C A r is require α ensure β Correct call: if a1.α then a1.r () else B r is require γ ensure δ Intro. to Programming, lecture 14: More Inheritance & Genericity 28 Assertion redeclaration rule Redefined version may not have require or ensure. May have nothing (assertions kept by default), or require else new_pre ensure then new_post Resulting assertions are: original_precondition or new_pre original_postcondition and new_post Intro. to Programming, lecture 14: More Inheritance & Genericity 29 Invariant accumulation Every class inherits all the invariant clauses of its parents. These clauses are conceptually and -ed. Intro. to Programming, lecture 14: More Inheritance & Genericity 30 10

11 What we have seen Intro. to Programming, lecture 14: More Inheritance & Genericity 31 What we have seen Genericity Combining inheritance with genericity Constrained genericity Forcing a type: the assignment attempt The relationship of contracts with inheritance Deferred classes and features Intro. to Programming, lecture 14: More Inheritance & Genericity 32 End of lecture 14 Intro. to Programming, lecture 14: More Inheritance & Genericity 33 11

- 9/10 - Inheritance

- 9/10 - Inheritance -9/10 - Inheritance Inheritance in Eiffel Class may redefine ( override ) inherited features. Redefinition is explicit In line with Uniform Access principle, may redefine inherited function into attribute.

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 12: Introduction to inheritance and genericity On the menu for today (& next

More information

Lecture 13: Introduction to inheritance and genericity

Lecture 13: Introduction to inheritance and genericity Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 13: Introduction to inheritance and genericity On the menu for today (& next

More information

Eiffel: Analysis, Design and Programming

Eiffel: Analysis, Design and Programming Eiffel: Analysis, Design and Programming Bertrand Meyer (Nadia Polikarpova) Chair of Software Engineering - 8 - Inheritance 2 Overview Basics Redefinition Polymorphism and dynamic binding Inheritance and

More information

Genericity & Inheritance

Genericity & Inheritance Chair of Software Engineering Genericity & Inheritance Bertrand Meyer ETH Zurich, Switzerland Eiffel Software, Santa Barbara Epita, Paris, 31 March 2010 On the menu Two fundamental mechanisms for expressiveness

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 10 News Mock exam in 2 weeks (December 6 th, 7 th ) You have to be present

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 7 News (Reminder) Mock exam next week! Ø Attance is highly recommed

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 14: Container Data Structures Topics for this lecture Containers and genericity

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 10 1 Today Ø Multiple inheritance 2 Inheritance is never the only way Given the classes Ø TRAIN_CAR,

More information

Containers and genericity. A standardized naming scheme. Cursor properties. Lists. Adding a cell. A specific implementation: (singly) linked lists

Containers and genericity. A standardized naming scheme. Cursor properties. Lists. Adding a cell. A specific implementation: (singly) linked lists Topics for this lecture Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Containers and genericity Container operations Prof. Dr. Bertrand Meyer Lists October

More information

Lecture 21: Undo/Redo

Lecture 21: Undo/Redo Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer October 2006 February 2007 Lecture 21: Undo/Redo 2 Further reference Chapter 21 of my

More information

Assignment 7: Inheritance

Assignment 7: Inheritance Assignment 7: Inheritance ETH Zurich Hand-out: 11 December 2006 Due: 19 December 2006 Calvin and Hobbes c Bill Watterson 1 Dynamic exercise Goal Understand the effects of dynamic binding. Summary Have

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 18: Undo/Redo Further reference Chapter 21 of Bertrand Meyer, Object-Oriented

More information

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout 1 Last update: 2 November 2004 Trusted Components Reuse, Contracts and Patterns Prof. Dr. Bertrand Meyer Dr. Karine Arnout 2 Lecture 12: Componentization Agenda for today 3 Componentization Componentizability

More information

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout 1 Last update: 2 November 2004 Trusted Components Reuse, Contracts and Patterns Prof. Dr. Bertrand Meyer Dr. Karine Arnout 2 Lecture 8: Design by Contract (1/2) Agenda for today 3 Design by Contract: definition

More information

Lecture 8: Control Structures I

Lecture 8: Control Structures I Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 8: Control Structures I Intro. to Programming, lecture 8: Control structures

More information

Introduction to Programming. Lecture 20: More about inheritance. Multiple inheritance. Composite figures. Bertrand Meyer

Introduction to Programming. Lecture 20: More about inheritance. Multiple inheritance. Composite figures. Bertrand Meyer 1 2 Introduction to Programming ertrand Meyer Lecture 20: More about ance Last revised 10 January 2004 Multiple ance 3 Simpler examples of multiple ance 4 llow a class to have two or more parents. UNIVERSITY_

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 12: More on references and the dynamic model Purpose of this lecture Few really

More information

1. Quality issues (5 points)

1. Quality issues (5 points) ETH Zurich Computer Science Course: Advanced Topics in Object Technology, by Bertrand Meyer Summer semester 2003 Exam (prepared by Karine Arnout) 2 July 2003 10:00 to 12:00 Name:.. Id-Nr:.. No notes, computers,

More information

Software Architecture 4. July 2005

Software Architecture 4. July 2005 Chair of Software Engineering Bertrand Meyer Software Architecture 4. July 2005 Name, First name:... I confirm with my signature, that I was able to take this exam under regular conditions and that I have

More information

From Eiffel and Design by Contract to Trusted Components

From Eiffel and Design by Contract to Trusted Components From Eiffel and Design by Contract to Trusted Components Bertrand Meyer ETH Zürich / Eiffel Software Budapest, December 2003 1 My background Since 1985: Founder (now Chief Architect) of Eiffel Software,

More information

Control flow in Eiffel

Control flow in Eiffel Announcements Assignment will be posted this week.» We ll make sure you have enough time to it! A little more Eiffel, Genericity and ADTs Week 3, Lecture 4 January 16 Section N Review What is the definition

More information

Universe Type System for Eiffel. Annetta Schaad

Universe Type System for Eiffel. Annetta Schaad Universe Type System for Eiffel Annetta Schaad Semester Project Report Software Component Technology Group Department of Computer Science ETH Zurich http://sct.inf.ethz.ch/ SS 2006 Supervised by: Dipl.-Ing.

More information

10 Feature adaptation

10 Feature adaptation 10 Feature adaptation Draft 5.02.00-0, 15 August 2005 (Santa Barbara). Extracted from ongoing work on future third edition of Eiffel: The Language. Copyright Bertrand Meyer 1986-2005. Access restricted

More information

CS 445: Data Structures Final Examination: Study Guide

CS 445: Data Structures Final Examination: Study Guide CS 445: Data Structures Final Examination: Study Guide Java prerequisites Classes, objects, and references Access modifiers Arguments and parameters Garbage collection Self-test questions: Appendix C Designing

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 4: The Interface of a Class Client, supplier Definitions A client of a software

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 6 Today Conditional Loop Abstractions Exporting s 2 Structured programming

More information

Object-Oriented Software Construction

Object-Oriented Software Construction 1 Object-Oriented Software Construction Bertrand Meyer 2 Lecture 21: Typing issues, covariance The America Conjecture 3 (Pierre America at TOOLS Europe 1990) One can have at most two of the three properties

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 5 Today Attributes, formal arguments, and local variables Control structures

More information

Multiple & Repeated! Inheritance!

Multiple & Repeated! Inheritance! Multiple & Repeated Inheritance 21-1 Multiple Inheritance Example Combining two abstractions into one» COMPARABLE and NUMERIC are both useful abstractions > Some abstractions make use of both while others

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 9 Today Ø Feedback on the mock exam Ø Recursion Ø Recursion Recursion

More information

Topic 2. Collections

Topic 2. Collections Topic 2 Collections Objectives Define the concepts and terminology related to collections Discuss the abstract design of collections 2-2 Collections Collection: a group of items that we wish to treat as

More information

Multiple & Repeated Inheritance

Multiple & Repeated Inheritance Multiple & Repeated Inheritance 21-1 Multiple Inheritance Example Combining two abstractions into one» COMPARABLE and NUMERIC are both useful abstractions > Some abstractions make use of both while others

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 2 Organizational Assignments Testat One assignment per week Will be

More information

Inheritance and Polymorphism

Inheritance and Polymorphism Object Oriented Programming Designed and Presented by Dr. Ayman Elshenawy Elsefy Dept. of Systems & Computer Eng.. Al-Azhar University Website: eaymanelshenawy.wordpress.com Email : eaymanelshenawy@azhar.edu.eg

More information

A Eiffel: The Essentials

A Eiffel: The Essentials A Eiffel: The Essentials This appix addresses people who are familiar with the object-oriented approach but not know Eiffel very well. It introduces all the concepts needed to understand the core of this

More information

Object-Oriented Software Construction

Object-Oriented Software Construction 1 Object-Oriented Software Construction Bertrand Meyer 2 Lecture 5: Objects The basic structure: The class 3 A class is an implementation of an ADT. It is both: A module. A type. Much of the conceptual

More information

Lecture #13: Type Inference and Unification. Typing In the Language ML. Type Inference. Doing Type Inference

Lecture #13: Type Inference and Unification. Typing In the Language ML. Type Inference. Doing Type Inference Lecture #13: Type Inference and Unification Typing In the Language ML Examples from the language ML: fun map f [] = [] map f (a :: y) = (f a) :: (map f y) fun reduce f init [] = init reduce f init (a ::

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 3: Dealing with Objects II Programming languages The programming language is

More information

ECE 3574: Dynamic Polymorphism using Inheritance

ECE 3574: Dynamic Polymorphism using Inheritance 1 ECE 3574: Dynamic Polymorphism using Inheritance Changwoo Min 2 Administrivia Survey on class will be out tonight or tomorrow night Please, let me share your idea to improve the class! 3 Meeting 10:

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 5 Today Ø Attributes, formal arguments, and local variables Ø Control

More information

Object-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018

Object-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018 Object-oriented programming 1 and data-structures CS/ENGRD 2110 SUMMER 2018 Lecture 4: OO Principles - Polymorphism http://courses.cs.cornell.edu/cs2110/2018su Lecture 3 Recap 2 Good design principles.

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 43 Dynamic Binding (Polymorphism): Part III Welcome to Module

More information

Einführung in die Programmierung Introduction to Programming

Einführung in die Programmierung Introduction to Programming Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Lecture 8: Control Structures I In this (double) lecture The notion of algorithm Basic

More information

Lecture #23: Conversion and Type Inference

Lecture #23: Conversion and Type Inference Lecture #23: Conversion and Type Inference Administrivia. Due date for Project #2 moved to midnight tonight. Midterm mean 20, median 21 (my expectation: 17.5). Last modified: Fri Oct 20 10:46:40 2006 CS164:

More information

Conversion vs. Subtyping. Lecture #23: Conversion and Type Inference. Integer Conversions. Conversions: Implicit vs. Explicit. Object x = "Hello";

Conversion vs. Subtyping. Lecture #23: Conversion and Type Inference. Integer Conversions. Conversions: Implicit vs. Explicit. Object x = Hello; Lecture #23: Conversion and Type Inference Administrivia. Due date for Project #2 moved to midnight tonight. Midterm mean 20, median 21 (my expectation: 17.5). In Java, this is legal: Object x = "Hello";

More information

Object-Oriented Software Construction

Object-Oriented Software Construction 1 Object-Oriented Software Construction Bertrand Meyer Reading assignment 2 OOSC2 Chapter 10: Genericity 3 Lecture 4: Abstract Data Types Abstract Data Types (ADT 4 Why use the objects? The need for data

More information

Dice in Google SketchUp

Dice in Google SketchUp A die (the singular of dice) looks so simple. But if you want the holes placed exactly and consistently, you need to create some extra geometry to use as guides. Plus, using components for the holes is

More information

Object-Oriented Design principles Designing for reuse

Object-Oriented Design principles Designing for reuse Programming in the Large Bertrand Meyer Lesson 18 Object-Oriented Design principles Designing for reuse Last update: 7 June 2004 Operands and options Two possible kinds of argument to a feature: Operands:

More information

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 2: Review of Object Orientation

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 2: Review of Object Orientation Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 2: Review of Object Orientation 2.1 What is Object Orientation? Procedural paradigm: Software is organized

More information

The COURSE Class. class COURSE. create -- Declare commands that can be used as constructors make. feature -- Attributes title: STRING fee: REAL

The COURSE Class. class COURSE. create -- Declare commands that can be used as constructors make. feature -- Attributes title: STRING fee: REAL The COURSE Class Inheritance Readings: OOSCS2 Chapters 14 16 EECS3311: Software Design Fall 2017 CHEN-WEI WANG class COURSE create -- Declare commands that can be used as constructors make feature -- Attributes

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 24 October 29, 2018 Arrays, Java ASM Chapter 21 and 22 Announcements HW6: Java Programming (Pennstagram) Due TOMORROW at 11:59pm Reminder: please complete

More information

CS/ENGRD 2110 FALL Lecture 7: Interfaces and Abstract Classes

CS/ENGRD 2110 FALL Lecture 7: Interfaces and Abstract Classes CS/ENGRD 2110 FALL 2017 Lecture 7: Interfaces and Abstract Classes http://courses.cs.cornell.edu/cs2110 1 Announcements 2 A2 is due tomorrow night (17 February) Get started on A3 a method every other day.

More information

Static program checking and verification

Static program checking and verification Chair of Software Engineering Software Engineering Prof. Dr. Bertrand Meyer March 2007 June 2007 Slides: Based on KSE06 With kind permission of Peter Müller Static program checking and verification Correctness

More information

The architecture of Eiffel software 3.1 OVERVIEW classes clusters systems

The architecture of Eiffel software 3.1 OVERVIEW classes clusters systems 3 Draft 5.02.00-0, 15 August 2005 (Santa Barbara). Extracted from ongoing work on future third edition of Eiffel: The Language. Copyright Bertrand Meyer 1986-2005. Access restricted to purchasers of the

More information

Inheritance and Interfaces

Inheritance and Interfaces Inheritance and Interfaces Object Orientated Programming in Java Benjamin Kenwright Outline Review What is Inheritance? Why we need Inheritance? Syntax, Formatting,.. What is an Interface? Today s Practical

More information

Inheritance. OOP: Inheritance 1

Inheritance. OOP: Inheritance 1 Inheritance Reuse Extension and intension Class specialization and class extension Inheritance The protected keyword revisited Inheritance and methods Method redefinition An widely used inheritance example

More information

Semantic Analysis. Lecture 9. February 7, 2018

Semantic Analysis. Lecture 9. February 7, 2018 Semantic Analysis Lecture 9 February 7, 2018 Midterm 1 Compiler Stages 12 / 14 COOL Programming 10 / 12 Regular Languages 26 / 30 Context-free Languages 17 / 21 Parsing 20 / 23 Extra Credit 4 / 6 Average

More information

Lecture 5: Inheritance

Lecture 5: Inheritance McGill University Computer Science Department COMP 322 : Introduction to C++ Winter 2009 Lecture 5: Inheritance Sami Zhioua March 11 th, 2009 1 Inheritance Inheritance is a form of software reusability

More information

Singleton Pattern Creational. » Ensure a class has only one instance» Provide a global point of access

Singleton Pattern Creational. » Ensure a class has only one instance» Provide a global point of access Singleton Pattern Creational Intent» Ensure a class has only one instance» Provide a global point of access Motivation Some classes must only have one instance file system, window manager Applicability»

More information

Java: advanced object-oriented features

Java: advanced object-oriented features Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Java: advanced object-oriented features Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Packages

More information

n HW5 out, due Tuesday October 30 th n Part 1: Questions on material we ll cover today n Part 2: BFS using your graph from HW4

n HW5 out, due Tuesday October 30 th n Part 1: Questions on material we ll cover today n Part 2: BFS using your graph from HW4 Subtype, Subtyping vs. Subclassing, Liskov Substitution Principle Announcements n HW5 out, due Tuesday October 30 th n Part 1: Questions on material we ll cover today n Part 2: BFS using your graph from

More information

Nature abhors a void. Bertrand Meyer. Software Engineering

Nature abhors a void. Bertrand Meyer. Software Engineering Nature abhors a void Bertrand Meyer The basic O-O operation x.f (args) Semantics: apply the feature f, with given args if any, to the object to which x is attached and the basic issue studied here: How

More information

Software Paradigms (Lesson 3) Object-Oriented Paradigm (2)

Software Paradigms (Lesson 3) Object-Oriented Paradigm (2) Software Paradigms (Lesson 3) Object-Oriented Paradigm (2) Table of Contents 1 Reusing Classes... 2 1.1 Composition... 2 1.2 Inheritance... 4 1.2.1 Extending Classes... 5 1.2.2 Method Overriding... 7 1.2.3

More information

Topic 7: Algebraic Data Types

Topic 7: Algebraic Data Types Topic 7: Algebraic Data Types 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 5.5, 5.7, 5.8, 5.10, 5.11, 5.12, 5.14 14.4, 14.5, 14.6 14.9, 14.11,

More information

Inheritance. Finally, the final keyword. A widely example using inheritance. OOP: Inheritance 1

Inheritance. Finally, the final keyword. A widely example using inheritance. OOP: Inheritance 1 Inheritance Reuse of code Extension and intension Class specialization and class extension Inheritance The protected keyword revisited Inheritance and methods Method redefinition The composite design pattern

More information

Software Design and Analysis for Engineers

Software Design and Analysis for Engineers Software Design and Analysis for Engineers by Dr. Lesley Shannon Email: lshannon@ensc.sfu.ca Course Website: http://www.ensc.sfu.ca/~lshannon/courses/ensc251 Simon Fraser University Slide Set: 2 Date:

More information

Typed Scheme: Scheme with Static Types

Typed Scheme: Scheme with Static Types Typed Scheme: Scheme with Static Types Version 4.1.1 Sam Tobin-Hochstadt October 5, 2008 Typed Scheme is a Scheme-like language, with a type system that supports common Scheme programming idioms. Explicit

More information

CS159. Nathan Sprague

CS159. Nathan Sprague CS159 Nathan Sprague What s wrong with the following code? 1 /* ************************************************** 2 * Return the mean, or -1 if the array has length 0. 3 ***************************************************

More information

The Compiler So Far. Lexical analysis Detects inputs with illegal tokens. Overview of Semantic Analysis

The Compiler So Far. Lexical analysis Detects inputs with illegal tokens. Overview of Semantic Analysis The Compiler So Far Overview of Semantic Analysis Adapted from Lectures by Profs. Alex Aiken and George Necula (UCB) Lexical analysis Detects inputs with illegal tokens Parsing Detects inputs with ill-formed

More information

(Refer Slide Time: 1:27)

(Refer Slide Time: 1:27) Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 1 Introduction to Data Structures and Algorithms Welcome to data

More information

BON Business Object Notation Based on slides by Prof. Paige

BON Business Object Notation Based on slides by Prof. Paige BON Business Object Notation Based on slides by Prof. Paige 17-1 What is it? Notation for modeling object oriented software» Static: specifies classes, class relationships» Dynamic: behavioural properties

More information

Exceptions and Design

Exceptions and Design Exceptions and Exceptions and Table of contents 1 Error Handling Overview Exceptions RuntimeExceptions 2 Exceptions and Overview Exceptions RuntimeExceptions Exceptions Exceptions and Overview Exceptions

More information

Lecture 19: Topological sort Part 1: Problem and math basis. Topological sort. The problem. Why we are doing this!

Lecture 19: Topological sort Part 1: Problem and math basis. Topological sort. The problem. Why we are doing this! Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. r. Bertrand Meyer October 006 February 007 Lecture 9: Topological sort Part : Problem and math basis Intro.

More information

Data Structures and Algorithms Design Goals Implementation Goals Design Principles Design Techniques. Version 03.s 2-1

Data Structures and Algorithms Design Goals Implementation Goals Design Principles Design Techniques. Version 03.s 2-1 Design Principles Data Structures and Algorithms Design Goals Implementation Goals Design Principles Design Techniques 2-1 Data Structures Data Structure - A systematic way of organizing and accessing

More information

ITI Introduction to Computing II

ITI Introduction to Computing II ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Inheritance Introduction Generalization/specialization Version of January 20, 2014 Abstract

More information

Object-Oriented Software Engineering. Chapter 2: Review of Object Orientation

Object-Oriented Software Engineering. Chapter 2: Review of Object Orientation Object-Oriented Software Engineering Chapter 2: Review of Object Orientation 2.1 What is Object Orientation? Procedural paradigm: Software is organized around the notion of procedures Procedural abstraction

More information

Singleton Pattern Creational

Singleton Pattern Creational Singleton Pattern Creational Intent» Ensure a class has only one instance» Provide a global point of access Motivation Some classes must only have one instance file system, window manager Applicability»

More information

Outline. Subtype Polymorphism, Subtyping vs. Subclassing, Liskov Substitution Principle. Benefits of Subtype Polymorphism. Subtype Polymorphism

Outline. Subtype Polymorphism, Subtyping vs. Subclassing, Liskov Substitution Principle. Benefits of Subtype Polymorphism. Subtype Polymorphism Subtype, Subtyping vs. Subclassing, Liskov Substitution Principle Outline Subtype polymorphism Subtyping vs. subclassing Liskov Substitution Principle (LSP) Function subtyping Java subtyping Composition:

More information

Object-Oriented Concepts and Design Principles

Object-Oriented Concepts and Design Principles Object-Oriented Concepts and Design Principles Signature Specifying an object operation or method involves declaring its name, the objects it takes as parameters and its return value. Known as an operation

More information

Reasoning About Imperative Programs. COS 441 Slides 10

Reasoning About Imperative Programs. COS 441 Slides 10 Reasoning About Imperative Programs COS 441 Slides 10 The last few weeks Agenda reasoning about functional programming It s very simple and very uniform: substitution of equal expressions for equal expressions

More information

Java: exceptions and genericity

Java: exceptions and genericity Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Java: exceptions and genericity Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Exceptions Exceptions

More information

CSc 520 Principles of Programming Languages

CSc 520 Principles of Programming Languages CSc 520 Principles of Programming Languages 16 : Types Polymorphism Christian Collberg collberg+520@gmail.com Department of Computer Science University of Arizona Copyright c 2008 Christian Collberg [1]

More information

Anatomy of a Compiler. Overview of Semantic Analysis. The Compiler So Far. Why a Separate Semantic Analysis?

Anatomy of a Compiler. Overview of Semantic Analysis. The Compiler So Far. Why a Separate Semantic Analysis? Anatomy of a Compiler Program (character stream) Lexical Analyzer (Scanner) Syntax Analyzer (Parser) Semantic Analysis Parse Tree Intermediate Code Generator Intermediate Code Optimizer Code Generator

More information

CS 231 Data Structures and Algorithms Fall Recursion and Binary Trees Lecture 21 October 24, Prof. Zadia Codabux

CS 231 Data Structures and Algorithms Fall Recursion and Binary Trees Lecture 21 October 24, Prof. Zadia Codabux CS 231 Data Structures and Algorithms Fall 2018 Recursion and Binary Trees Lecture 21 October 24, 2018 Prof. Zadia Codabux 1 Agenda ArrayQueue.java Recursion Binary Tree Terminologies Traversal 2 Administrative

More information

Data Structures (INE2011)

Data Structures (INE2011) Data Structures (INE2011) Electronics and Communication Engineering Hanyang University Haewoon Nam ( hnam@hanyang.ac.kr ) Lecture 1 1 Data Structures Data? Songs in a smartphone Photos in a camera Files

More information

CS/ENGRD 2110 SPRING Lecture 7: Interfaces and Abstract Classes

CS/ENGRD 2110 SPRING Lecture 7: Interfaces and Abstract Classes CS/ENGRD 2110 SPRING 2019 Lecture 7: Interfaces and Abstract Classes http://courses.cs.cornell.edu/cs2110 1 Announcements 2 A2 is due Thursday night (14 February) Go back to Lecture 6 & discuss method

More information

CS1102: Macros and Recursion

CS1102: Macros and Recursion CS1102: Macros and Recursion Kathi Fisler, WPI October 5, 2009 This lecture looks at several more macro examples. It aims to show you when you can use recursion safely with macros and when you can t. 1

More information

Absolute C++ Walter Savitch

Absolute C++ Walter Savitch Absolute C++ sixth edition Walter Savitch Global edition This page intentionally left blank Absolute C++, Global Edition Cover Title Page Copyright Page Preface Acknowledgments Brief Contents Contents

More information

Java Object Oriented Design. CSC207 Fall 2014

Java Object Oriented Design. CSC207 Fall 2014 Java Object Oriented Design CSC207 Fall 2014 Design Problem Design an application where the user can draw different shapes Lines Circles Rectangles Just high level design, don t write any detailed code

More information

+ Abstract Data Types

+ Abstract Data Types Linked Lists Abstract Data Types An Abstract Data Type (ADT) is: a set of values a set of operations Sounds familiar, right? I gave a similar definition for a data structure. Abstract Data Types Abstract

More information

ITI Introduction to Computing II

ITI Introduction to Computing II ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Inheritance Introduction Generalization/specialization Version of January 21, 2013 Abstract

More information

CSCI-1200 Computer Science II Fall 2006 Lecture 23 C++ Inheritance and Polymorphism

CSCI-1200 Computer Science II Fall 2006 Lecture 23 C++ Inheritance and Polymorphism CSCI-1200 Computer Science II Fall 2006 Lecture 23 C++ Inheritance and Polymorphism Review from Lecture 22 Added parent pointers to the TreeNode to implement increment and decrement operations on tree

More information

JAVA: A Primer. By: Amrita Rajagopal

JAVA: A Primer. By: Amrita Rajagopal JAVA: A Primer By: Amrita Rajagopal 1 Some facts about JAVA JAVA is an Object Oriented Programming language (OOP) Everything in Java is an object application-- a Java program that executes independently

More information

CSE 452: Programming Languages. Previous Lecture. From ADTs to OOP. Data Abstraction and Object-Orientation

CSE 452: Programming Languages. Previous Lecture. From ADTs to OOP. Data Abstraction and Object-Orientation CSE 452: Programming Languages Data Abstraction and Object-Orientation Previous Lecture Abstraction Abstraction is the elimination of the irrelevant and the amplification of the essential Robert C Martin

More information

Chapter 11. Categories of languages that support OOP: 1. OOP support is added to an existing language

Chapter 11. Categories of languages that support OOP: 1. OOP support is added to an existing language Categories of languages that support OOP: 1. OOP support is added to an existing language - C++ (also supports procedural and dataoriented programming) - Ada 95 (also supports procedural and dataoriented

More information

CS450 - Structure of Higher Level Languages

CS450 - Structure of Higher Level Languages Spring 2018 Streams February 24, 2018 Introduction Streams are abstract sequences. They are potentially infinite we will see that their most interesting and powerful uses come in handling infinite sequences.

More information

COS226 - Spring 2018 Class Meeting # 13 March 26, 2018 Inheritance & Polymorphism

COS226 - Spring 2018 Class Meeting # 13 March 26, 2018 Inheritance & Polymorphism COS226 - Spring 2018 Class Meeting # 13 March 26, 2018 Inheritance & Polymorphism Ibrahim Albluwi Composition A GuitarString has a RingBuffer. A MarkovModel has a Symbol Table. A Symbol Table has a Binary

More information

CS4215 Programming Language Implementation. Martin Henz

CS4215 Programming Language Implementation. Martin Henz CS4215 Programming Language Implementation Martin Henz Thursday 26 January, 2012 2 Chapter 4 The Language simpl In this chapter, we are exting the language epl in order to provide a more powerful programming

More information

INTERFACES IN JAVA. Prof. Chris Jermaine

INTERFACES IN JAVA. Prof. Chris Jermaine INTERFACES IN JAVA Prof. Chris Jermaine cmj4@cs.rice.edu 1 Now On To Interfaces in Java Java gives the ability to declare an interface Like a, except: Can t declare any member variables (well, you can,

More information