35
The Object Model Nazim H. Madhavji UWO 1 (c) N.H. Madhavji, 14 August, 2014

The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

Embed Size (px)

Citation preview

Page 1: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 1

The Object Model

Nazim H. MadhavjiUWO

Page 2: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 2

Key sources of material

• Chapter 2, OO Analysis and Design with Applications, 3rd Ed., Grady Booch, et al., Addison Wesley, 2011.

• Personal thoughts.

Page 3: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 3

Key topics covered

• The Evolution of the Object Model• Foundations of the Object Model• Elements of the Object Model

Page 4: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 4

The Evolution of the Object Model

• Please read the text book for complementary details; here we shall cover: Algorithmic/Structured languages vs. OO languages

Page 5: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 5

Algorithmic/Structured languages vs. OO languages

• Algorithmic languages were so called because “algorithms” (actions, instructions, etc.) were the primary basis underlying the design and code of programs in these languages.

• OO languages have “objects” and “classes” of objects as the primary basis.

Page 6: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 6

Algorithmic/Structured languages• Programs in algorithmic (a.k.a “structured”) languages (such as Algol 60,

Pascal, etc.) were basically tree-structured.• Relatively small(er) programs (“programming-in-the-small”).• Independent development of parts of the same program manually

managed.

PROGRAM X (I/O parameters);<mainline data structures><Sequence of (possibly) nested PROCEDURES and FUNCTIONs>

BEGIN<mainline statements: ASSIGNMENT; SELECTION; LOOPs; CALL; JUMP; etc.>

END.

Page 7: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 7

Modular languages

• More sophisticated (a.k.a “modular”) languages (such as Modula, Modula-2, Ada, C) facilitated development of a large “system” as a set of “modules”.

• This suited “programming-in-the-large” – for development by teams. Say, programmer 1 develops module M1, and programmer 2 develops module M2, etc.

• Modules could be developed independently and concurrently.– Separately compiled– Loaded (integrated) to form a whole system

Page 8: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 8

Modular languages

• A module had two parts: interface part and implementation part. The implementation part was hidden from the users of a given module; they could only read/use the interface part.

• The modules M1 and M2, etc., interacted with each other through their interfaces.

• A module interface had “exports” and “imports”. • Exported items from module M1 need to be declared in the

interface part of M1. – Data structures exported showed their internal structure in the

interface part. – Procedures/functions exported showed the parameters so that the

user of module M1 can make proper calls.

Page 9: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 9

Modular languages

• Items imported in module M1 (from module M2, etc.) need to be specified in the interface part of module M1 and must be exported from the exporting module’s interface (M2, etc.).

• Each module was essentially like a tree-structured Pascal program.

Page 10: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 10

Interface and Implementation Modules

INTERFACE MODULE M1.EXPORT A, B, X;FROM M2 IMPORT P, Q; (*P and Q need to be made visible through the

interface of Module M2 *)<visible declarations: A: int; B: real; PROCEDURE X (....);

END M1. IMPLEMENTATION MODULE M1.

<hidden data declarations>; Procedure X (....); BEGIN .... END; (*hidden from the user*)

BEGIN .... END M1.

Page 11: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 11

Modular languages and scaling up

• While modular languages enabled programmers to do independent development (of large-scale systems) and collaborate through module interaction, the increasing domain complexity was still a challenge. – Modules could not be nested so scaling up to very large-scale

development was a problem. – Fundamentally, viewing a real-world problem in an

algorithmic way was getting more and more difficult as system complexity increased.

– There was a need to represent the application domain more directly in the system design in order to handle system complexity.

Page 12: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 12

From Modular to OO languages

• Object-oriented languages (e.g., Java, C++) turned this around (to the extent it has been able to) by structuring systems based on classes (as representation of real-world things) and objects as instances of classes. See OO history (Chapter 2)– Algorithms are encapsulated in classes as “operations” (a.k.a

methods) on the objects. – Objects in different classes interact with each other through calls

(messages) from methods in one class to methods in other classes.

– Specialisation (reuse) of a parent class is done through inheritance; this did not exist in modular/structured languages.

Page 13: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 13

From Modular to OO languages

• The OO paradigm builds upon the structured paradigm, does not abandon it. – The basic elements of structured languages are all there:

declarations, procedures and functions, calls, execution statements, assignment, etc.

– However, be warned that different OO language designers have tended to call the same thing differently in different OO languages (Smalltalk, C++, Eiffel, Object Pascal, CLU, Java, etc.).

– As programmers in OO languages, you need to know the different terminology used by different OO languages. (For an overview of various OO languages see Appendix A of the book by Booch et al, 3rd. Ed.).

Page 14: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 14

Small to moderate-sized OO programs

Page 15: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 15

Large-sized OO systems

Note encapsulation ofSmall objects (classes)into large objects(packages). Enablesscaling up to designingand developing largeSystems.

Page 16: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 16

Foundations of the Object Model

• For a historical exposé on the various influencing and concurrent factors in the development of OO languages and paradigm, see Section 2.2 (Foundations of the Object Model), pg. 37-40 in Booch et al., 3rd ed.

• We will focus on the meanings of: OO Programming (OOP), OO Design (OOD) and OO Analysis (OOA)

Page 17: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 17

OOP -- Object-oriented programming

• OOP is a way of writing programs organized as cooperative collections of objects, each of which represents an instance of some class, and whose classes are all members of a hierarchy of classes united via inheritance relationships.– Object-oriented programming uses objects, not algorithms, as its

fundamental logical building blocks (”part of’ hierarchy ).– Each object is an instance of some class.– Classes may be related to one another via inheritance

relationships (the “is a” hierarchy). • A language that supports the above three elements is an

OO language. •

Page 18: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 18

OOD -- Object-oriented design

• While OOP emphasises proper and effective use of particular OO *language* mechanisms, OOD emphasises proper and effective *structuring* of a complex system. In this course (cs3307) we are concerned with this latter, design issue.

• OOD is a method of design encompassing the process of object-oriented decomposition and a notation for depicting both logical and physical as well as static and dynamic models of the system under design.

Page 19: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 19

OOD -- Object-oriented design

• The difference between OOD and structured design is that OOD uses class and object abstractions to logically structure systems; whereas, structured design uses algorithmic abstractions.

Page 20: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 20

OOA -- Object-oriented analysis

• OOA is a method of analysis that examines requirements from the perspective of the classes and objects found in the vocabulary of the problem domain.

• Helps identify what should be part of the system and what should not be included, and what interactions system should have with things outside the system. This is also called “boundary analysis”.

Page 21: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 21

OO Programming (OOP), OO Design (OOD) and OO Analysis (OOA)

RequirementsEngineering

SoftwareDesign Programming

OOA OOD OOP

• These three notions are all important and complementary in software/systems engineering.

• OOA produces models used to start OOD the models of which can then be used to implement a system using OOP.

Page 22: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 22

Elements of the Object Model

• There are four fundamental elements of this model:– Abstraction– Encapsulation– Modularity– Hierarchy

• Without any of these four elements, it is unthinkable to be able to build large OO systems.

Page 23: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 23

Elements of the Object Model

• Three relatively minor elements of this model are:– Typing– Concurrency– Persistence

• These elements are useful but not essential in all the systems at the design level.

Page 24: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 24

Abstraction

• An abstraction focuses on the outside view of an object and so serves to separate an object’s essential behavior from its implementation.

Page 25: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 25

Encapsulation

• Abstraction and encapsulation are complementary: – Abstraction focuses on the observable behavior of

an object – Encapsulation focuses on the implementation that

gives rise to this behavior

Page 26: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 26

Encapsulation

• The abstraction of an object should precede the decisions about its implementation.

• Once an implementation is selected, it should be treated as a secret of the abstraction and hidden from most clients.

Page 27: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 27

Encapsulation

• Encapsulation is achieved through information hiding (not just data hiding): – hides all the secrets of an object that do not

necessary for the clients to know:• structure of an object is hidden, • Implementation of its methods.

• No part of a complex system should depend on the internal details of any other part”.

Page 28: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 28

Modularity

• Modularity is the property of a system that has been decomposed into a set of cohesive and loosely coupled modules.– High cohesion within a module. – Low coupling across modules.

• Modularity and encapsulation go hand in hand.

Page 29: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 29

Hierarchy

• Abstraction, encapsulation and modularity are all useful for dealing with complexity; yet they are not adequate.

• In complex systems, we end up making a set of abstractions, e.g.:– Person (Male doctor | Female doctor)– Male doctor Male & (GP |specialist)

Page 30: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 30

Hierarchy

• A set of abstractions often forms a hierarchy• Identifying these hierarchies in our design can

help deal with problem complexity.• Hierarchy is thus a ranking or ordering of

abstractions.

Page 31: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 31

Hierarchy

• Two important hierarchies to note:– class structure (the “is a” hierarchy) – object structure (the “part of’ hierarchy).

• Single inheritance and Multiple inheritance– “is a” relationship among classes in the hierarchy

Page 32: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 32

Typing

– Type is a precise characterization of structural or behavioral properties which a collection of entities all share. E.g.: the Integer type (1,2,3 ....)

– Typing is used to enforce constraints on operations. • Objects of different types may not be interchanged, or• interchanged in very restricted ways.

– E.g.: operations on variables of mixed types in an expression

– NHM: Data types are important (of course) but they tend to be at the programming (a.o.t. Design) level.

Page 33: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 33

Concurrency

• An automated system may have to handle many different events simultaneously.

• Other problems may involve computation that exceeds the capacity of any single processor.

• May need to: – distribute the solution across a set of computers . – Or do multitasking (time-sharing) on a signle

computer.• May need to model this at design time.

Page 34: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 34

Persistence

• An object takes up space and time during its life.• Persistence encompasses the following:– Transient results in expression evaluation– Local variables in procedure activations– Global variables that outlive a procedure’s life – Data that exists between executions of a program– Data that exists between various versions of a program– Data that outlives the program

• Important to think of these issues in system design.

Page 35: The Object Model Nazim H. Madhavji UWO 1(c) N.H. Madhavji, 14 August, 2014

(c) N.H. Madhavji, 14 August, 2014 35

Summary

• OOA, OOD and OOP address the issues of programming-in-the-large.

• There are several different programming paradigms: procedure-oriented, object-oriented, logic-oriented, rule-oriented, and constraint-oriented.

• Key OO system design properties:– Abstraction; Encapsulation; Modularity; Hierarchy

• Other properties include: Typing, Concurrency and Persistence.