the object modeltinelli/classes/022/... · abstraction in oo design • an object's...
TRANSCRIPT
![Page 1: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/1.jpg)
The University of Iowa22C:22 (CS:2820)
Object-Oriented Software Development
Fall 2013
The Object Modelby
Cesare Tinelli
Tuesday, 10 September 13
![Page 2: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/2.jpg)
• Built on the best ideas from previous technologies
• Influenced by major trends in software engineering:
1. increased focus on programming-in-the-large
2. evolution of high-level programming languages
The Object Modelof Development
Tuesday, 10 September 13
![Page 3: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/3.jpg)
Object in Object-OrientedProgramming Languages
Entity that
• combines features of
• procedures: performs computations
• data: stores local state
• is characterized by certain invariants
Tuesday, 10 September 13
![Page 4: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/4.jpg)
Essence of OO Programming
• Programs are organized as cooperative collections of objects
• Each object is an instance of some class
• Classes are related via an inheritance relationship
Tuesday, 10 September 13
![Page 5: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/5.jpg)
OO Analysis
• Builds a model of the real-world using an object-oriented view
• Examines requirements in terms of classes and objects found in the problem domain
Tuesday, 10 September 13
![Page 6: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/6.jpg)
OO Design
• Leads to an object-oriented decomposition
• Uses various notations (e.g., UML diagrams) to express various views of the system being designed:
• logical (classes and objects) vs. physical structure (modules and processes)
• static vs. dynamic aspects
Tuesday, 10 September 13
![Page 7: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/7.jpg)
OO Software Development
• The products of OO Analysis serve as starting points for OO Design
• The products of OO Design serve as blueprints for an OO implementation
Tuesday, 10 September 13
![Page 8: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/8.jpg)
The Object Modelof Development
Is built on the synergy among:
• abstraction
• encapsulation
• modularity
• hierarchy
• typing
• concurrency
• persistence
Tuesday, 10 September 13
![Page 9: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/9.jpg)
Abstraction
• The process of identifying similarities between objects, situations or processes and ignoring their differences
• A description, or specification, of something that emphasizes some details or properties while ignoring others
• It focuses on the essential characteristics of something relative to a viewer's perspective
Tuesday, 10 September 13
![Page 10: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/10.jpg)
Abstraction
• Main trait: it can be understood and analyzed independently on how it is realized
• Quality: it is relative to its viewers/users and their current needs
Establishing the right set of abstractions for a problem domain is
the main challenge of design
Tuesday, 10 September 13
![Page 11: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/11.jpg)
Abstraction in OO Design
• We can characterize the behavior of an object, the server, in terms of the services it provides to other objects, the clients
Server
clientclient
clientclient
client
client
Tuesday, 10 September 13
![Page 12: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/12.jpg)
Abstraction in OO Design
• An object's abstraction defines a contract that
• other objects depend on and
• must be honored by the object
• The contract establishes all assumptions a client may make about the behavior of the server
Tuesday, 10 September 13
![Page 13: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/13.jpg)
Design by Contract
• Each service (operation) provided by an object has a set of
• preconditions, to be satisfied by the client when invoking the service
• postconditions, guaranteed by the server upon completion of the service
• invariants, properties maintained between operations
Tuesday, 10 September 13
![Page 14: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/14.jpg)
Abstraction Examples
• Temperature sensor
• Point on a grid
• Bank account
Tuesday, 10 September 13
![Page 15: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/15.jpg)
The Object Modelof Development
Is built on the synergy among:
✓abstraction
• encapsulation
• modularity
• hierarchy
• typing
• concurrency
• persistence
Tuesday, 10 September 13
![Page 16: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/16.jpg)
Encapsulation
• The abstraction of an object should precede any decisions about its implementation
• Implementation details should not be accessible to clients
• Encapsulation is the process of hiding such details
Tuesday, 10 September 13
![Page 17: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/17.jpg)
Encapsulation• Achieved in OO languages by hiding the
internals of an object (attributes and method implementations)
• It greatly facilitates changes that do not impact the abstraction (i.e., the object's contract)
• Leads to a clear separation of concerns (contract vs way to honor it)
• Localizes design decisions likely to change
Tuesday, 10 September 13
![Page 18: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/18.jpg)
Encapsulation in OO Languages
• interface captures outside view of the object and its essential behavior
• implementation provides a representation of the abstraction and the mechanisms to achieve its behavior
Classes of objects described in two parts:
Tuesday, 10 September 13
![Page 19: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/19.jpg)
Encapsulation Examples
• Heater Controller
• Point on plane
• Queue
Tuesday, 10 September 13
![Page 20: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/20.jpg)
The Object Modelof Development
Is built on the synergy among:
✓abstraction
✓encapsulation
• modularity
• hierarchy
• typing
• concurrency
• persistence
Tuesday, 10 September 13
![Page 21: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/21.jpg)
Modularity
• Modularization divides a software systems into components, modules
• Modules
‣ may have connections to other modules
‣ but can be compiled separately
‣ encapsulate sets of classes and objects
‣ have an interface and an implementation
Tuesday, 10 September 13
![Page 22: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/22.jpg)
Crucial Point
• Classes and objects define a system's logical structure
• Modules define a system's physical structure
• The two structures are by and large orthogonal
Tuesday, 10 September 13
![Page 23: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/23.jpg)
Module Decomposition• Decomposing a system into module
presents challenging design decisions
• There is a tension between the desire to encapsulate abstractions vs need to expose some of them to other modules
• General approach:
‣ group together logically related classes and objects and
‣ expose only those that are strictly necessary to other modules
Tuesday, 10 September 13
![Page 24: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/24.jpg)
Modularity
• Desiderata of module decomposition:
‣ Modules
‣ designed and implemented independently
‣ simple enough to be fully understandable
‣ Ability to change a module's implementation without
‣ knowing that of other modules
‣ affecting their behavior
‣ Reuse
Tuesday, 10 September 13
![Page 25: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/25.jpg)
The Object Modelof Development
Is built on the synergy among:
✓abstraction
✓encapsulation
✓modularity
• hierarchy
• typing
• concurrency
• persistence
Tuesday, 10 September 13
![Page 26: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/26.jpg)
Hierarchy
• A (partial) ordering of abstractions
• Most important hierarchies
‣ "is a" relation (class structure)
‣ "part of" relation (object structure)
Tuesday, 10 September 13
![Page 27: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/27.jpg)
Class Structure
• The "is a" relation we consider is one that relates classes
• Examples
A dog is a mammal
A dog is a pet
Fido is a dog (Fido is not a class)
Tuesday, 10 September 13
![Page 28: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/28.jpg)
Class StructureWhen a B is an A we also say that
• B is a subclass of A:
‣ every instance of B is an instance of A
• B extends (or specializes) A:
‣ B has all features and behaviors of A, and possibly more
• B inherits from A:
‣ B inherits A's features and behaviors
Tuesday, 10 September 13
![Page 29: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/29.jpg)
Class StructureWhen a B is an A we also say, symmetrically, that
• A is a superclass of B:
‣ every instance of B is an instance of A
• A is extended by (or generalizes) B:
‣ B has all features and behaviors of A, and possibly more
Tuesday, 10 September 13
![Page 30: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/30.jpg)
Inheritance Hierarchies
• Single inheritance:‣ each class extends (inherits from) at
most one class
‣ the hierarchy is a tree, or a forest
• Multiple inheritance:‣ each class extends one or more classes
‣ the hierarchy is graph
Tuesday, 10 September 13
![Page 31: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/31.jpg)
Inheritance
A
B
FED
C
Q
R
VUT
SP
Single inheritance Multiple inheritance
is a
Tuesday, 10 September 13
![Page 32: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/32.jpg)
The Object Modelof Development
Is built on the synergy among:
✓abstraction
✓encapsulation
✓modularity
✓hierarchy
• typing
• concurrency
• persistence
Tuesday, 10 September 13
![Page 33: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/33.jpg)
Typing in Programming Languages
• A type is a collection of values with same structural or behavioral properties
‣ Ex: integer, string, integer list, integer array, integer and string pair, ...
• The type system of a language
• imposes a division of values into types
• defines typing restrictions for each operation (allowed input types, resulting output type)
Tuesday, 10 September 13
![Page 34: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/34.jpg)
Types in Programming Languages
• A language is typed if it enforces a type system
• It is untyped otherwise, that is, if it allows operations to be applicable to any values
• Note:
• Most highly-level languages are typed to some degree (strongly/weakly typed)
• All assembly languages are untyped
Tuesday, 10 September 13
![Page 35: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/35.jpg)
Types in OO Programming Languages
• Every class defines a type, consisting of all objects that are instances of that class
• However, not all types are classes. E.g.:
‣ Java's basic types (int, bool, ...)
‣ Java's interfaces
‣ Traits in Scala
Tuesday, 10 September 13
![Page 36: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/36.jpg)
Static vs Dynamic Typing
• Statically typed languages enforce typing restrictions at compile time:
‣ the type of each expression denoting a value is determined and checked before running the program
• Dynamically typed languages enforce typing restrictions at run time:
‣ types are determined and checked as expressions are evaluated
Tuesday, 10 September 13
![Page 37: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/37.jpg)
Static vs Dynamic Typing
• In statically typed languages types are associated to expressions in the source code
‣ C++, Java, Scala, ML, Haskell,...
• In dynamically typed languages types are associated to values in memory
‣ Python, Ruby, Perl, Javascript, ...
Tuesday, 10 September 13
![Page 38: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/38.jpg)
Enhanced Type Systems
• Overloading: same name for different operations
‣ E.g.: + for integer addition, string concatenation, list append in Scala
• Subtypes: types extending others‣ E.g.: subclassing in OO languages
• Subtype polymorphism: same name for inherited operations
‣ E.g.: inherited methods in OO languages
Tuesday, 10 September 13
![Page 39: The Object Modeltinelli/classes/022/... · Abstraction in OO Design • An object's abstraction defines a contract that • other objects depend on and • must be honored by the](https://reader030.vdocuments.us/reader030/viewer/2022040516/5e75f2e1829ff44bc613cea6/html5/thumbnails/39.jpg)
Enhanced Type Systems
• Parametric types: structured types with components of arbitrary type
‣ E.g.: List[X], Array[X], List[(X,Y)] for any types X, Y in Scala
• Parametric polymorphism: generic operations for parametric types
‣ E.g.: reverse: (l:List[X]) List[X], head:(l:List[X]) X in Scala
Tuesday, 10 September 13