The Development of an Object-Oriented Software Development...

20
Department of Computer Engineering 1 Sharif University of Object-Oriented Design Lecturer: Raman Ramsin Lecture 16: Design Workflow

Transcript of The Development of an Object-Oriented Software Development...

Page 1: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Department of Computer Engineering 1 Sharif University of

Technology

Object-Oriented Design

Lecturer: Raman Ramsin

Lecture 16: Design Workflow

Page 2: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 2

Sharif University of Technology

Design Workflow

The design workflow is about determining how the functionality specified in the analysis model will be implemented.

The design workflow is the primary modeling activity in the last part of the Elaboration phase and the first part of the Construction phase.

The design model contains:

design subsystems;

design classes;

interfaces;

use case realizations-design;

a deployment diagram (first-cut).

Page 3: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 3

Sharif University of Technology

Trace Relationships

Page 4: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 4

Sharif University of Technology

Design Workflow: Design a Class

The Design Workflow consists of the following activities:

Architectural Design

Design a Use Case

Design a Class

Design a Subsystem

Page 5: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 5

Sharif University of Technology

Design Classes

Design classes are the building blocks of the design model.

Design classes are developed during the USDP activity Design a Class.

Design classes are classes whose specifications have been completed to such a degree that they can be implemented.

Page 6: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 6

Sharif University of Technology

Design Classes: Sources

Design classes come from two sources:

the problem domain:

a refinement of analysis classes;

one analysis class may become one or more design classes;

the solution domain:

utility class libraries;

middleware;

GUI libraries;

reusable components;

implementation-specific details.

Page 7: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 7

Sharif University of Technology

Design Classes: Sources

Page 8: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 8

Sharif University of Technology

Design Classes: Anatomy

Design classes have complete specifications:

complete set of attributes including:

name;

type;

default value when appropriate;

visibility;

operations:

name;

names and types of all parameters;

optional parameter values if appropriate;

return type;

visibility.

Page 9: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 9

Sharif University of Technology

Design Classes: Anatomy

Page 10: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 10

Sharif University of Technology

Design Classes: Well-formedness

The public operations of the class define a contract with its clients.

Completeness - the class does no less than its clients may reasonably expect.

Sufficiency - the class does no more than its clients may reasonably expect.

Primitiveness - services should be simple, atomic, and unique.

Page 11: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 11

Sharif University of Technology

Design Classes: Well-formedness (Contd.)

High cohesion:

each class should embody a single, well-defined abstract concept;

all the operations should support the intent of the class.

Low coupling:

a class should be coupled to just enough other classes to fulfill its responsibilities;

only couple two classes when there is a true semantic relationship between them;

avoid coupling classes just to reuse some code.

Page 12: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 12

Sharif University of Technology

Inheritance

Only use inheritance when there is a clear "is a" relationship between two classes or to reuse code.

Disadvantages:

it is the strongest possible coupling between two classes;

encapsulation is weak within an inheritance hierarchy, leading to the "fragile base class" problem: changes in the base class ripple down the hierarchy;

very inflexible in most languages - the relationship is decided at compile time and fixed at runtime.

Page 13: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 13

Sharif University of Technology

Inheritance and Aggregation

Subclasses should always represent "is kind of" rather than "is role played by" - always use aggregation to represent "is role played by".

Page 14: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 14

Sharif University of Technology

Multiple Inheritance

Multiple inheritance allows a class to have more than one parent.

Of all the common OO languages only C++ has multiple inheritance.

Design guidelines:

the multiple parent classes must all be semantically disjoint;

there must be an "is kind of" relationship between a class and all of its parents;

the substitutability principle must apply to the class and its parents;

the parents should themselves have no parent in common;

use mixins - a mixin is a simple class designed to be mixed in with others in multiple inheritance; this is a safe and powerful idiom.

Page 15: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 15

Sharif University of Technology

Inheritance versus Interface Realization

Inheritance:

you get interface - the public operations;

you get implementation - the attributes, associations, protected and private members.

Interface realization: you only get interface.

Use inheritance when you want to inherit some implementation.

Use interface realization when you want to define a contract .

Page 16: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 16

Sharif University of Technology

Templates

Templates allow you to "parameterize" a type

create a template by defining a type in terms of formal parameters;

instantiate the template by binding specific values for the parameters.

Of all the commonly used OO languages, only C++ and Java currently support templates.

Explicit binding uses a dependency stereotyped «bind»:

show the actual values on the relationship;

each template instantiation can be named.

Page 17: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 17

Sharif University of Technology

Templates: Example

Page 18: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 18

Sharif University of Technology

Templates: Implicit Binding

Implicit binding:

specify the actual values on the class inside angle brackets « »;

template instantiations cannot be named - names are constructed from the template name and the argument list.

Page 19: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 19

Sharif University of Technology

Nested Classes

Defined as a class inside another class.

The nested class exists in the namespace of the outer class - only the outer class can create and use instances of the nested class.

Nested classes are known as inner classes in Java, and are used extensively for event handling in GUI classes.

Page 20: The Development of an Object-Oriented Software Development Methodologysharif.edu/~ramsin/index_files/oodlecture16.pdf · 2011. 12. 9. · Object-Oriented Design – Lecture 16 Department

Object-Oriented Design – Lecture 16

Department of Computer Engineering 20

Sharif University of Technology

Reference

Arlow, J., Neustadt, I., UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design, 2nd Ed. Addison-Wesley, 2005.