INHERITANCE, SUBTYPING, PROTOTYPES in Object-Oriented Languages. Orlin Grigorov McMaster University CAS 706, Fall 2006
|
|
|
- Junior Page
- 9 years ago
- Views:
Transcription
1 INHERITANCE, SUBTYPING, PROTOTYPES in Object-Oriented Languages Orlin Grigorov McMaster University CAS 706, Fall 2006
2 Two kinds of OO programming languages CLASS-BASED Classes Instances Inheritance PROTOTYPE-BASED No distinction between classes and instances Objects (similar to instances) Prototypes (cloning existing objects) e.g. Java, C++, C# e.g. JavaScript, Lua
3 Outline Inheritance Single Multiple Interfaces Mixins Subtyping Prototypes
4 Inheritance
5 Inheritance (definition) Refers to the fact that the definition of a new class can assume (or rely upon the existence of) another definition. Alternatively, it makes a previously defined structure available for incorporation in a new one. A method of code sharing; If one class inherits from another, the inheriting class specializes a class which is more general. Logical relationship between classes (specialization/generalization); Enables subtypes to be produced given a definition of a supertype. Type-based account;
6 Inheritance (terminology) Subclass or child class or derived class: inherits all properties of its parent class, as well as adds other properties of its own. Think of it as: An extension of the parent class (larger set of properties); A contraction of the parent class (more specialized) Superclass or parent class or base class: a class that is one level higher in the class hierarchy than its child classes.
7 Inheritance is is a kind of relation * The relation applies to classes, not instances! Food Fruit Meat Apple Orange Chicken Pork
8 Reasons to use inheritance Code reuse Because a child class can inherit behaviour from a parent class, the code does not need to be rewritten for the child. Concept reuse If a child overrides behaviour defined in the parent, although no code is shared, they share the definition of the method
9 Inheritance in various languages C++ class B : public A {.. } C# class B : A {.. } CLOS (defclass B (A) () ) JAVA class B extends A {.. } Object Pascal type Python class B(A): def init (self):... Ruby B = object (A)... end; class B < A... end
10 Inheritance in various languages (cont.): Java, Smalltalk, Objective-C, Delphi Pascal: TREES Require every class to inherit from an existing parent class; A single root that is ancestor to all objects (termed Object in Smalltalk and Objective-C, TObject in Delphi Pascal); Any behaviour provided by the root inherited in all objects; Thus, every object is guaranteed to possess a common minimal level of functionality. -continues-
11 Inheritance in various languages (cont.): DISADVANTAGE: combines all classes into a tightly coupled unit. C++ and Apple Pascal: FOREST Do not require every class to inherit from a parent; Not forced to carry a large library of classes, only a few of which may be used in any one program;..but no programmer-defined functionality that all objects are guaranteed to possess.
12 Tree vs. Forest Tree Advantages: Single class hierarchy; Standardization: the functionality of the root is inherited by all objects all have some basic functionality. Disadvantages: Tight coupling; Larger libraries. Forest Advantages: Many smaller hierarchies; Smaller libraries of classes for application, less coupling possible. Disadvantages: No shared functionality among all objects.
13 Single Inheritance A class can have only a single superclass; The data and behavior of a particular superclass is available to the subclass; Advantages: Simple to include in the design Code re-use is very simple to obtain
14 Single Inheritance (cont.) There is only 1 root class There is only a linear sequence of classes between Apple and Food Apple Fruit Food
15 Single Inheritance (cont.) Property: it is always transitive Food Fruit Fruit Apple
16 Single Inheritance (cont.) Disadvantages: Some models cannot be accurately modeled using Single Inheritance; Leads to duplicate code; Electronic Device DVD Player VCR Player DVD buttons VCR buttons
17 Multiple Inheritance A class can inherit from anywhere in a class hierarchy; A child class can have more than one parent; Provides more realistic framework; e.g. A child has two biological parents. Available in some OO languages, such as C++ and Eiffel
18 Multiple Inheritance (cont.) Structure is a lattice or Directed Acyclic Graph Problems: Replication of inherited slots; Meaning of the program of the program can be different depending on search algorithm. A B C D
19 example (demonstrates concept, will not compile) class A { abstract void printme(); } A class B extends A { void printme() { -- B -- } } B C class C extends A { void printme() { -- C -- } } D class D extends B, C {} A d = new D(); d.printme(); //problem, which one?!
20 C++, resolve manually: option 1 Explicitly qualify the call by prefixing it with the name of the intended superclass using the scope resolution operator: d.b::printme(); OR d.c::printme();
21 C++, resolve manually: option 2 Add a new method foo to class D: class D : public B, public C { void foo(void) { B::printMe(); //one, the other, C::printMe(); //both or neither } } Similar solution in Eiffel: use feature renaming, see next slide
22 Eiffel class D inherit B rename printme as printme_b select printme_b end; C rename printme as printme_c end... end This makes printme_b as the version of printme inherited from B. It also becomes the one that will be used in D.
23 C++: virtual Follows each inheritance path separately. so a D object would actually contain two separate A objects; If the inheritance from A to B and from A to C are both marked virtual, creates only one A object. class B : virtual A Uses of A's members work correctly.
24 Perl Perl handles this by specifying the inheritance classes as an ordered list. Class B and its ancestors would be checked before class C and its ancestors, so the method in A would be inherited through B.
25 Python Python had to deal with this upon the introduction of new-style classes, all of which have a common ancestor, object. Python creates a list of the classes that would be searched in left-first depth-first order (D, B, A, C, A) and then removes all but the last occurrence of any repeated classes. Thus, the method resolution order is: D, B, C, A.
26 Interfaces: Java Allows only single inheritance; Allows the multiple inheritance of interfaces. Interface Abstract class In interfaces you cannot attach any behaviour, but can implement multiple interfaces; whereas in abstract classes you can define behaviour, but inherit only one abstract class. Also in Objective-C (protocols), PHP, C#.
27 Interfaces: example in Java interface B { void printme(); } interface C { void printme(); } class A {... } class D extends A implements B { void printme() { -- B -- } }
28 Alternative solution: Linearization 1. Flatten the inheritance structure into a linear chain without duplicates; 2. Search the chain in order to find slots (like in single inheritance); B and C both define x printme(); One will be masked off by the algorithm. * The selection is arbitrary unless more information is given. B x A D x C The order, in which the algorithm encounters superclasses is important; Programmer can set the order though.
29 Linearization: problem Inherited classes are not guaranteed communication with their direct ancestors; The algorithm can insert unrelated classes between an inheriting class and one of its direct ancestors: A A B C D B D C Consequence: A cannot communicate directly with C, and B cannot communicate directly with D
30 Linearization: implementation Visit each node and put it into a list; Once the whole graph is traversed and all nodes collected remove all duplicates. 2 ways to remove them: Starting from the front...or the back.
31 Mixins Referred to as abstract subclasses ; They represent specification that may be applied to various parent classes to extend them with the same set of features. Available in Lisp, Scala, Ruby, Smallscript and CLOS. Has been ported to Java as well. Alternative approach to multiple inheritance.
32 Mixins: example in Scala class Point2D(xc: Int, yc: Int) { val x = xc; val y = yc; //plus methods for manipulating 2D points } class ColouredPoint2D(u: Int, v: Int, c: String) extends Point2D(u, v) { var colour = c; def setcolour(newcol: String): Unit = colour = newcol; } class Point3D(xc: Int, yc: Int, zc: Int) extends Point2D(xc, yc) { val z = zc; //plus methods for manipulating 3D points } class ColouredPoint3D(xc: Int, yc: Int, zc: Int, col: String) extends Point3D(xc, yc, zc) with ColouredPoint2D(xc, yc, col);
33 Mixins: example in Scala (cont.) Point2D ColouredPoint2D Point3D ColouredPoint3D ColouredPoint2D
34 Subtyping
35 Subtyping Subtyping consists of the rules by which objects of one type (class) are determined to be acceptable in contexts that expect another type (class). The rules determine the legality of programs Subtyping should be based on the behaviour of objects.
36 Subtyping RULES: 1) If instances of class B meet the external interface of class A, then B should be a subtype of A. 2) One can use an instance of class B whenever an instance of class A is needed. Guarantee: always the same behaviour!
37 Subtyping vs. Interface Inheritance Subtyping If B is a subtype of A, safe to use B instead of A always the same behaviour. Interface Inheritance If B has simply inherited the interface of A, then it is legal to use B instead of A, but no guarantee that it will do what you want.
38 Subtyping should not be equated with Inheritance Stack DEQueue Consider Stack as a subtype of DEQueue (double-ended queue) In Trellis/Owl, Simula and Sather, class Stack is a subtype of DEQueue iff Stack is a subclass of DEQueue. If Stack is re-implemented, so that it becomes selfcontained and inherits from no parent class, then the assumption that Stack is a subtype of DEQueue will no longer be legal. Implementation hierarchy need not be the same as the type hierarchy.
39 Subtyping should not be equated with Inheritance (cont.) Stack inherits from DEQueue, but is not a subtype of it (excludes the operation that adds elements to the back of the queue). DEQueue is a subtype of Stack, but does not inherit from Stack. Stack (abstraction) subtype of DEQueue (abstraction) implements Stack (implementation) subtype of inherits from implements DEQueue (implementation)
40 Subtyping in various languages Statically typed languages: subtyping rules are extremely important as they determine the legality of programs. e.g. C++, Java Dynamically typed languages: subtyping rules affect the result of type predicates. e.g. CLOS, Smalltalk
41 Prototypes
42 Prototypes Object-Oriented programming without classes! No distinction between classes and instances. There are only objects, which are similar to instances. e.g.javascript, Lua, Self, Kevo, NewtonScript, Mica, Obliq, Factor, Io, Lisaac, REBOL, Agora, Cecil and many others. prototype-based programming object-based programming
43 Prototypes (cont.) Create new objects by cloning, not instantiation. Analogy: Building an object in a class-based language is like building a house from a plan, while building an object in a prototype-based language is like building a house like the neighbors.
44 Side by side: Java and JavaScript Java public class Employee { public String name; public String dept; public Employee () { this.name = ""; this.dept = "general"; } } public class Manager extends Employee { public Employee[] reports; public Manager () { this.reports = new Employee[0]; } } public class WorkerBee extends Employee { public String[] projects; public WorkerBee() { this.projects = new String[0]; } } JavaScript function Employee () { this.name = ""; this.dept = "general"; } function Manager () { this.reports = []; } Manager.prototype = new Employee; function WorkerBee() { this.projects = []; } WorkerBee.prototype= new Employee;
45 Java vs. JavaScript Class-based Class and instance are distinct entities. Define a class with a class definition; instantiate a class with constructor methods. Create a single object with the new operator. Construct an object hierarchy by using class definitions to define subclasses of existing classes. Inherit properties by following the class chain. Class definition specifies all properties of all instances of a class. No way to add properties dynamically at runtime. All objects are instances. Define and create a set of objects with constructor functions. The same. Prototype-based Construct an object hierarchy by assigning an object as the prototype associated with a constructor function. Inherit properties by following the prototype chain. Constructor function or prototype specifies an initial set of properties. Can add or remove properties dynamically to individual objects or to the entire set of objects.
46 References Budd, Timothy. An Introduction to Object-Oriented Programming. 3rd ed. Addison-Wesley, Craig, Iain. The Interpretation of Object-Oriented Programming Languages. Springer, "Multiple Inheritance." Wikipedia. 13 Nov < "Prototype-Based Programming." Wikipedia. 13 Nov < Merizzi, Nicholas. "Object Oriented, Classes, Objects, Inheritance, and Typing." Jan Nov Sykes, Ed. "Object Oriented Languages." 13 Nov
47 END Time for questions and discussions
48 Cut slides follow..
49 Abstract Classes Serve as place holders in an inheritance graph; Define only properties and behaviours required by many other classes; Cannot be instantiated! e.g. AST for expressions Expression abstract : doesn t make sense to instantiate Constant Intconst Variable Unaryop Application Boolconst Floatconst.. Stringconst Binaryop.
50 Abstract Classes in various languages Some languages, like Java and Dylan, allow abstract classes (and methods) to be explicitly marked. Java: public abstract class A { public abstract void b(..);.. } Similar marking scheme in Dylan. In Eiffel: distinction achieved by means of the deferred annotation, which means that implementation of a feature is deferred until a later class.
51 Abstract Classes in various languages (cont.) In C++, a method can be defined as being virtual void. The method is a virtual void, but.. its implementation is deferred to the subclasses of the class. virtual int add1(int y) = 0 The =0 is the void part of virtual void. No class annotation for an abstract class in C++.
Announcements FORTRAN ALGOL COBOL. Simula & Smalltalk. Programming Languages
Announcements Programming Languages! Monday evening GBA section has been shut down " If you were assigned to this section, please find a different section " If you cannot attend a different section, please
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo
History OOP languages Year Language 1967 Simula-67 1983 Smalltalk
History OOP languages Intro 1 Year Language reported dates vary for some languages... design Vs delievered 1957 Fortran High level programming language 1958 Lisp 1959 Cobol 1960 Algol Structured Programming
CSCI 253. Object Oriented Programming (OOP) Overview. George Blankenship 1. Object Oriented Design: Java Review OOP George Blankenship.
CSCI 253 Object Oriented Design: Java Review OOP George Blankenship George Blankenship 1 Object Oriented Programming (OOP) OO Principles Abstraction Encapsulation Abstract Data Type (ADT) Implementation
The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1
The Java Series Java Essentials I What is Java? Basic Language Constructs Slide 1 What is Java? A general purpose Object Oriented programming language. Created by Sun Microsystems. It s a general purpose
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
Structural Design Patterns Used in Data Structures Implementation
Structural Design Patterns Used in Data Structures Implementation Niculescu Virginia Department of Computer Science Babeş-Bolyai University, Cluj-Napoca email address: [email protected] November,
Data Abstraction and Hierarchy
Data Abstraction and Hierarchy * This research was supported by the NEC Professorship of Software Science and Engineering. Barbara Liskov Affiliation: MIT Laboratory for Computer Science Cambridge, MA,
Object Oriented Databases. OOAD Fall 2012 Arjun Gopalakrishna Bhavya Udayashankar
Object Oriented Databases OOAD Fall 2012 Arjun Gopalakrishna Bhavya Udayashankar Executive Summary The presentation on Object Oriented Databases gives a basic introduction to the concepts governing OODBs
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS David L. Spooner Computer Science Department Rensselaer Polytechnic Institute Troy, New York 12180 The object-oriented programming
MCI-Java: A Modified Java Virtual Machine Approach to Multiple Code Inheritance
This is pre-print of a paper that will appear in the Proceedings of: 3 rd Virtual Machine Research & Technology Symposium Usenix VM 4, May 6-7, 24, San Jose, alifornia. MI-Java: Modified Java Virtual Machine
Inheritance, overloading and overriding
Inheritance, overloading and overriding Recall with inheritance the behavior and data associated with the child classes are always an extension of the behavior and data associated with the parent class
Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007
Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Description of Class Mutation Mutation Operators for Java
Description of Class Mutation Mutation Operators for Java Yu-Seung Ma Electronics and Telecommunications Research Institute, Korea [email protected] Jeff Offutt Software Engineering George Mason University
CSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
language 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
Parsing Technology and its role in Legacy Modernization. A Metaware White Paper
Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks
CS-XXX: Graduate Programming Languages. Lecture 25 Multiple Inheritance and Interfaces. Dan Grossman 2012
CS-XXX: Graduate Programming Languages Lecture 25 Multiple Inheritance and Interfaces Dan Grossman 2012 Multiple Inheritance Why not allow class C extends C1,C2,...{...} (and C C1 and C C2)? What everyone
Scoping (Readings 7.1,7.4,7.6) Parameter passing methods (7.5) Building symbol tables (7.6)
Semantic Analysis Scoping (Readings 7.1,7.4,7.6) Static Dynamic Parameter passing methods (7.5) Building symbol tables (7.6) How to use them to find multiply-declared and undeclared variables Type checking
Overview. Elements of Programming Languages. Advanced constructs. Motivating inner class example
Overview Elements of Programming Languages Lecture 12: Object-oriented functional programming James Cheney University of Edinburgh November 6, 2015 We ve now covered: basics of functional and imperative
COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms.
COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms 1 Activation Records activation declaration location Recall that an activation
Object Instance Profiling
Object Instance Profiling Lubomír Bulej 1,2, Lukáš Marek 1, Petr Tůma 1 Technical report No. 2009/7, November 2009 Version 1.0, November 2009 1 Distributed Systems Research Group, Department of Software
Case studies: Outline. Requirement Engineering. Case Study: Automated Banking System. UML and Case Studies ITNP090 - Object Oriented Software Design
I. Automated Banking System Case studies: Outline Requirements Engineering: OO and incremental software development 1. case study: withdraw money a. use cases b. identifying class/object (class diagram)
Obfuscation: know your enemy
Obfuscation: know your enemy Ninon EYROLLES [email protected] Serge GUELTON [email protected] Prelude Prelude Plan 1 Introduction What is obfuscation? 2 Control flow obfuscation 3 Data flow
2! Multimedia Programming with! Python and SDL
2 Multimedia Programming with Python and SDL 2.1 Introduction to Python 2.2 SDL/Pygame: Multimedia/Game Frameworks for Python Literature: G. van Rossum and F. L. Drake, Jr., An Introduction to Python -
Chapter 8 The Enhanced Entity- Relationship (EER) Model
Chapter 8 The Enhanced Entity- Relationship (EER) Model Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8 Outline Subclasses, Superclasses, and Inheritance Specialization
Neural Pascal. A Language for Neural Network Programming. 1. Introduction
eural Pascal A Language for eural etwork Programming H.Peter Gumm Dept. of Computer Science SUY at ew Paltz ew Paltz,.Y. 12561 [email protected] Ferdinand B. Hergert Siemens Corporate Research and
Concepts and terminology in the Simula Programming Language
Concepts and terminology in the Simula Programming Language An introduction for new readers of Simula literature Stein Krogdahl Department of Informatics University of Oslo, Norway April 2010 Introduction
Languages september 12, 2015 Éric Lévénez 1999-2015 <http://www.levenez.com/lang/> FORTRAN III end-1958 FORTRAN II 1957. FORTRAN I october 1956
1954 1957 FORTRAN november 1954 FORTRAN I october 1956 FORTRAN II 1957 FORTRAN III end-1958 B-O 1957 Flow-Matic 1958 COBOL 1959 JOVIAL 1959 IAL 1958 ALGOL 58 1958 Lisp 1958 Lisp 1 1959 Languages september
Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science [email protected] Names, Bindings, and Scopes A name is a symbolic identifier used
Object-based vs. Class-based Languages
Abstract Object-based vs. Class-based Languages Luca Cardelli Digital Equipment Corporation Systems Research Center PLDIÕ96 Tutorial Class-based object-oriented programming languages take object generators
CS 111 Classes I 1. Software Organization View to this point:
CS 111 Classes I 1 Software Organization View to this point: Data Objects and primitive types Primitive types operators (+, /,,*, %). int, float, double, char, boolean Memory location holds the data Objects
Krishna Institute of Engineering & Technology, Ghaziabad Department of Computer Application MCA-213 : DATA STRUCTURES USING C
Tutorial#1 Q 1:- Explain the terms data, elementary item, entity, primary key, domain, attribute and information? Also give examples in support of your answer? Q 2:- What is a Data Type? Differentiate
Java Interfaces. Recall: A List Interface. Another Java Interface Example. Interface Notes. Why an interface construct? Interfaces & Java Types
Interfaces & Java Types Lecture 10 CS211 Fall 2005 Java Interfaces So far, we have mostly talked about interfaces informally, in the English sense of the word An interface describes how a client interacts
High-Level Programming Languages. Nell Dale & John Lewis (adaptation by Michael Goldwasser)
High-Level Programming Languages Nell Dale & John Lewis (adaptation by Michael Goldwasser) Low-Level Languages What are disadvantages of low-level languages? (e.g., machine code or assembly code) Programming
CMSC 132: Object-Oriented Programming II. Design Patterns I. Department of Computer Science University of Maryland, College Park
CMSC 132: Object-Oriented Programming II Design Patterns I Department of Computer Science University of Maryland, College Park Design Patterns Descriptions of reusable solutions to common software design
Write Barrier Removal by Static Analysis
Write Barrier Removal by Static Analysis Karen Zee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 {kkz, [email protected] ABSTRACT We present
CompuScholar, Inc. Alignment to Utah's Computer Programming II Standards
CompuScholar, Inc. Alignment to Utah's Computer Programming II Standards Course Title: TeenCoder: Java Programming Course ISBN: 978 0 9887070 2 3 Course Year: 2015 Note: Citation(s) listed may represent
Habanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead
INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY
INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY A PATH FOR HORIZING YOUR INNOVATIVE WORK A REVIEW ON THE USAGE OF OLD AND NEW DATA STRUCTURE ARRAYS, LINKED LIST, STACK,
The Smalltalk Programming Language. Beatrice Åkerblom [email protected]
The Smalltalk Programming Language Beatrice Åkerblom [email protected] 'The best way to predict the future is to invent it' - Alan Kay. History of Smalltalk Influenced by Lisp and Simula Object-oriented
Java Software Structures
INTERNATIONAL EDITION Java Software Structures Designing and Using Data Structures FOURTH EDITION John Lewis Joseph Chase This page is intentionally left blank. Java Software Structures,International Edition
Advanced Data Structures
C++ Advanced Data Structures Chapter 8: Advanced C++ Topics Zhijiang Dong Dept. of Computer Science Middle Tennessee State University Chapter 8: Advanced C++ Topics C++ 1 C++ Syntax of 2 Chapter 8: Advanced
Chapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
Adding diagrams to Scaladoc
Adding diagrams to Scaladoc Damien Obrist Optional Semester Project École Polytechnique Fédérale de Lausanne Vlad Ureche Collaboration and Supervision Programming Methods Laboratory (LAMP) June 8, 2012
Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition
Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating
CSE 307: Principles of Programming Languages
Course Organization Introduction CSE 307: Principles of Programming Languages Spring 2015 R. Sekar Course Organization Introduction 1 / 34 Topics 1. Course Organization Info and Support Course Description
Visualizing Software Projects in JavaScript
Visualizing Software Projects in JavaScript Tim Disney Abstract Visualization techniques have been used to help programmers deepen their understanding of large software projects. However the existing visualization
Object Oriented Design
Object Oriented Design Kenneth M. Anderson Lecture 20 CSCI 5828: Foundations of Software Engineering OO Design 1 Object-Oriented Design Traditional procedural systems separate data and procedures, and
Lecture 7 Notes: Object-Oriented Programming (OOP) and Inheritance
Introduction to C++ January 19, 2011 Massachusetts Institute of Technology 6.096 Lecture 7 Notes: Object-Oriented Programming (OOP) and Inheritance We ve already seen how to define composite datatypes
Tutorial on Writing Modular Programs in Scala
Tutorial on Writing Modular Programs in Scala Martin Odersky and Gilles Dubochet 13 September 2006 Tutorial on Writing Modular Programs in Scala Martin Odersky and Gilles Dubochet 1 of 45 Welcome to the
CS1002: COMPUTER SCIENCE OO MODELLING & DESIGN: WEEK 5
This Week CS1002: COMPUTER SCIENCE OO MODELLING & DESIGN: WEEK 5 School of Computer Science University of St Andrews Graham Kirby Alan Dearle More on Java classes Constructors Modifiers cdn.videogum.com/img/thumbnails/photos/commenter.jpg
Application Centric Infrastructure Object-Oriented Data Model: Gain Advanced Network Control and Programmability
White Paper Application Centric Infrastructure Object-Oriented Data Model: Gain Advanced Network Control and Programmability What You Will Learn This document discusses application centric infrastructure
Lecture 1: Introduction
Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming
PHP Code Design. The data structure of a relational database can be represented with a Data Model diagram, also called an Entity-Relation diagram.
PHP Code Design PHP is a server-side, open-source, HTML-embedded scripting language used to drive many of the world s most popular web sites. All major web servers support PHP enabling normal HMTL pages
Going Interactive: Combining Ad-Hoc and Regression Testing
Going Interactive: Combining Ad-Hoc and Regression Testing Michael Kölling 1, Andrew Patterson 2 1 Mærsk Mc-Kinney Møller Institute, University of Southern Denmark, Denmark [email protected] 2 Deakin University,
DESIGN PATTERN GENERATOR FOR PYTHON
Project Number. GFP1405 DESIGN PATTERN GENERATOR FOR PYTHON A Major Qualifying Project Report: submitted to the faculty of the WORCESTER POLYTECHNIC INSTITUTE in partial fulfillment of the requirements
CS193j, Stanford Handout #10 OOP 3
CS193j, Stanford Handout #10 Summer, 2003 Manu Kumar OOP 3 Abstract Superclass Factor Common Code Up Several related classes with overlapping code Factor common code up into a common superclass Examples
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding
Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
Enumerated Types in Java
Enumerated Types in Java Paul A. Cairns School of Computing Science, Middlesex University, The Burroughs, Hendon, London, NW4 4BT e-mail: [email protected] tel: +44 (0) 181 362 6852 fax: +44 (0) 181 362
Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering
Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 2 GoF Design Patterns Creational 1 GoF Design Patterns Principles Emphasis on flexibility and reuse through decoupling of classes. The underlying
The Phases of an Object-Oriented Application
The Phases of an Object-Oriented Application Reprinted from the Feb 1992 issue of The Smalltalk Report Vol. 1, No. 5 By: Rebecca J. Wirfs-Brock There is never enough time to get it absolutely, perfectly
Chapter 13 Computer Programs and Programming Languages. Discovering Computers 2012. Your Interactive Guide to the Digital World
Chapter 13 Computer Programs and Programming Languages Discovering Computers 2012 Your Interactive Guide to the Digital World Objectives Overview Differentiate between machine and assembly languages Identify
SE 360 Advances in Software Development Object Oriented Development in Java. Polymorphism. Dr. Senem Kumova Metin
SE 360 Advances in Software Development Object Oriented Development in Java Polymorphism Dr. Senem Kumova Metin Modified lecture notes of Dr. Hüseyin Akcan Inheritance Object oriented programming languages
Lab Manual: Using Rational Rose
Lab Manual: Using Rational Rose 1. Use Case Diagram Creating actors 1. Right-click on the Use Case View package in the browser to make the shortcut menu visible. 2. Select the New:Actor menu option. A
Abstract. a http://www.eiffel.com
Abstract Eiffel Software a provides a compiler for the Eiffel programming language capable of generating C code or Common Intermediate Language byte code. The CLI code can be executed on the Common Language
PHP Object Oriented Classes and objects
Web Development II Department of Software and Computing Systems PHP Object Oriented Classes and objects Sergio Luján Mora Jaume Aragonés Ferrero Department of Software and Computing Systems DLSI - Universidad
International Journal of Software and Web Sciences (IJSWS) www.iasir.net
International Association of Scientific Innovation and Research (IASIR) (An Association Unifying the Sciences, Engineering, and Applied Research) ISSN (Print): 2279-0063 ISSN (Online): 2279-0071 International
Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.
Objectives To describe the services an operating system provides to users, processes, and other systems To discuss the various ways of structuring an operating system Chapter 2: Operating-System Structures
Programming Languages Featherweight Java David Walker
Programming Languages Featherweight Java David Walker Overview Featherweight Java (FJ), a minimal Javalike language. Models inheritance and subtyping. Immutable objects: no mutation of fields. Trivialized
Semester Review. CSC 301, Fall 2015
Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!
Lecture 9. Semantic Analysis Scoping and Symbol Table
Lecture 9. Semantic Analysis Scoping and Symbol Table Wei Le 2015.10 Outline Semantic analysis Scoping The Role of Symbol Table Implementing a Symbol Table Semantic Analysis Parser builds abstract syntax
Building Java Programs
Building Java Programs Chapter 9 Lecture 9-1: Inheritance reading: 9.1 The software crisis software engineering: The practice of developing, designing, documenting, testing large computer programs. Large-scale
1. What are Data Structures? Introduction to Data Structures. 2. What will we Study? CITS2200 Data Structures and Algorithms
1 What are ata Structures? ata Structures and lgorithms ata structures are software artifacts that allow data to be stored, organized and accessed Topic 1 They are more high-level than computer memory
Designing with Exceptions. CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219
Designing with Exceptions CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219 Testing vs. Debugging Testing Coding Does the code work properly YES NO 2 Debugging Testing
LINKED DATA STRUCTURES
LINKED DATA STRUCTURES 1 Linked Lists A linked list is a structure in which objects refer to the same kind of object, and where: the objects, called nodes, are linked in a linear sequence. we keep a reference
Functional Programming
FP 2005 1.1 3 Functional Programming WOLFRAM KAHL [email protected] Department of Computing and Software McMaster University FP 2005 1.2 4 What Kinds of Programming Languages are There? Imperative telling
Xcode Project Management Guide. (Legacy)
Xcode Project Management Guide (Legacy) Contents Introduction 10 Organization of This Document 10 See Also 11 Part I: Project Organization 12 Overview of an Xcode Project 13 Components of an Xcode Project
Johannes Sametinger. C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria
OBJECT-ORIENTED DOCUMENTATION C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria Abstract Object-oriented programming improves the reusability of software
Static vs. Dynamic. Lecture 10: Static Semantics Overview 1. Typical Semantic Errors: Java, C++ Typical Tasks of the Semantic Analyzer
Lecture 10: Static Semantics Overview 1 Lexical analysis Produces tokens Detects & eliminates illegal tokens Parsing Produces trees Detects & eliminates ill-formed parse trees Static semantic analysis
Programming Languages
Programming Languages Programming languages bridge the gap between people and machines; for that matter, they also bridge the gap among people who would like to share algorithms in a way that immediately
INTRODUCTION TO COMPUTER PROGRAMMING. Richard Pierse. Class 7: Object-Oriented Programming. Introduction
INTRODUCTION TO COMPUTER PROGRAMMING Richard Pierse Class 7: Object-Oriented Programming Introduction One of the key issues in programming is the reusability of code. Suppose that you have written a program
Master of Sciences in Informatics Engineering Programming Paradigms 2005/2006. Final Examination. January 24 th, 2006
Master of Sciences in Informatics Engineering Programming Paradigms 2005/2006 Final Examination January 24 th, 2006 NAME: Please read all instructions carefully before start answering. The exam will be
Data Structures in the Java API
Data Structures in the Java API Vector From the java.util package. Vectors can resize themselves dynamically. Inserting elements into a Vector whose current size is less than its capacity is a relatively
Lecture 15: Inheritance
Lecture 15: Inheritance 2/27/2015 Guest Lecturer: Marvin Zhang Some (a lot of) material from these slides was borrowed from John DeNero. Announcements Homework 5 due Wednesday 3/4 @ 11:59pm Project 3 due
