Object Oriented System Design Class Diagrams

Slides:



Advertisements
Similar presentations
UML Class Diagrams. Represent the (static) structure of the system GeneralIn JavaIn C++ NameNameName StateVariablesMembers BehaviorMethodsFunctions.
Advertisements

Stereotypes Stereotypes provide the capability to create a new kind of modeling element. –They can be used to classify or mark modeling elements. –A type.
UML Class Diagram. UML Class Diagrams2 Agenda What is a Class Diagram? Essential Elements of a UML Class Diagram Tips.
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
Inheritance. Extending Classes It’s possible to create a class by using another as a starting point  i.e. Start with the original class then add methods,
Design Patterns in Java Appendix D UML at a Glance Summary prepared by Kirk Scott 1.
What is UML? A modeling language standardized by the OMG (Object Management Group), and widely used in OO analysis and design A modeling language is a.
7M701 1 Class Diagram advanced concepts. 7M701 2 Characteristics of Object Oriented Design (OOD) objectData and operations (functions) are combined 
Class Diagram & Object Diagram
7M822 UML Class Diagrams advanced concepts 15 September 2008.
Modelling classes Drawing a Class Diagram. Class diagram First pick the classes –Choose relevant nouns, which have attributes and operations. Find the.
Unified Modeling Language
The Unified Modeling Language (UML) Class Diagrams.
Object-Oriented Analysis and Design
UML Diagrams: Class Diagrams The Static Analysis Model Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
CS3773 Software Engineering Lecture 04 UML Class Diagram.
Unit 1 INTRODUCTION TO MODELING AND CLASS MODEL Ref : L7-UML.PDF.
Design Class Diagrams (DCDs)
Chapter 16 Applying UML and Patterns Craig Larman
1 Class Diagrams: Advanced Concepts. 2 Overview Class diagrams are the most commonly used diagrams in UML. Class diagrams are the most commonly used diagrams.
The Static Analysis Model Class Diagrams Prof. Hany H. Ammar, CSEE, WVU, and Dept. of Computer Science, Faculty of Computers and Information, Cairo University.
UML Diagrams: The Static Model Class Diagrams. The Static Model Define the static structure of the logical model Represent classes, class hierarchies.
UML Class Diagram Trisha Cummings. What we will be covering What is a Class Diagram? Essential Elements of a UML Class Diagram UML Packages Logical Distribution.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Advanced UML Class Diagrams.
NJIT UML Class Diagrams Chapter 16 Applying UML and Patterns Craig Larman.
UML Class Diagrams 1 These lecture slides are copyright (C) Marty Stepp, They may not be rehosted, sold, or modified without expressed permission.
An Introduction to the Unified Modeling Language
UML The Unified Modeling Language A Practical Introduction Al-Ayham Saleh Aleppo University
Appendix D UML at a Glance Summary prepared by Kirk Scott 1.
Design Model Lecture p6 T120B pavasario sem.
Object Oriented Analysis: Associations. 2 Object Oriented Modeling BUAD/American University Class Relationships u Classes have relationships between each.
Repetition af Domæne model. Artifact influence emphasizing the Domain Model.
Object Oriented Analysis and Design Class and Object Diagrams.
Database Design – Lecture 12 Object Oriented Database Design cont’d.
CS212: Object Oriented Analysis and Design Lecture 33: Class and Sequence Diagram.
Chapter 16 UML Class Diagrams 1CS6359 Fall 2012 John Cole.
Chapter 16 UML Class Diagrams.
Object Modeling THETOPPERSWAY.COM. Object Modelling Technique(OMT)  Building a model of an application domain and then adding implementation.
Class Diagram Lecture # 1. Class diagram A Class Diagram is a diagram describing the structure of a system shows the system's classes Attributes operations.
UML Fundamental Elements. Structural Elements Represent abstractions in our system. Elements that encapsulate the system's set of behaviors. Structural.
Class Diagrams Revisited. Parameterized Classes Parameterized Classes - are used to represent relationships between templates.
Software Modelling Class Diagram. Class Diagrams The main building block in object oriented modeling They are used both for general conceptual modeling.
CHAPTER
Object-Orientated Analysis, Design and Programming
UML Diagrams: Class Diagrams The Static Analysis Model
Unified Modeling Language
A Review or Brief Introduction
Course Outcomes of Object Oriented Modeling Design (17630,C604)
Object-Oriented Analysis and Design
Chapter 16 UML Class Diagrams.
Class Diagrams.
GRASP: Visibility and Design
Collaborations and Hierarchies
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING
UML Diagrams: The Static Model Class Diagrams
Object Oriented Analysis and Design
Object Oriented Design Model
Chapter 10: Visibility Chapter 18 in Applying UML and Patterns Book.
Software Engineering Lecture #11.
Chapter 20 Applying UML and Patterns Craig Larman
UML Class Diagram.
CIS 375 Bruce R. Maxim UM-Dearborn
Understand and Use Object Oriented Methods
Business Analysis More on Classes Chris Russell O2.41
Copyright 2007 Oxford Consulting, Ltd
Class Diagrams Class diagram is basically a graphical representation of the static view of the system and represents different aspects of the application.
CIS 375 Bruce R. Maxim UM-Dearborn
2 UML for OOAD 2.1 What is UML? 2.2 Classes in UML
The generalization of class
Object Oriented System Design Responsibilities
Presentation transcript:

Object Oriented System Design Class Diagrams More: http://perisic.com/oosd Object Oriented System Design Class Diagrams Marc Conrad D104 (Park Square Building) Email: Marc.Conrad@beds.ac.uk WWW: http://perisic.com/marc 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Static Models and Dynamic Models More: http://perisic.com/oosd Static Models and Dynamic Models Class diagrams model the static behaviour of objects, i.e. Attributes of objects Operation of objects Relationships between objects. (Dynamic behaviour is modelled in a state diagram) 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Example of a class diagram More: http://perisic.com/oosd Example of a class diagram 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Classes More: http://perisic.com/oosd Elements of a class diagram Classes Classes are the fundamental elements in a class diagram. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Structure of a class More: http://perisic.com/oosd Elements of a class diagram Structure of a class A class is displayed as a box with three compartments: name attributes operations 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Structure of a class More: http://perisic.com/oosd Elements of a class diagram Structure of a class A class is displayed as a box with three compartments: name attributes operations 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Structure of a class More: http://perisic.com/oosd Elements of a class diagram Structure of a class A class is displayed as a box with three compartments: name attributes operations 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Structure of a class More: http://perisic.com/oosd Elements of a class diagram Structure of a class A class is displayed as a box with three compartments: name attributes operations 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Attributes More: http://perisic.com/oosd Elements of a class diagram Attributes Attributes contain the information held by the object. They refer to primitive types such as string or numbers. “Attributes” containing references to other objects are not shown in the compartment but may appear as role names. They are also called reference attributes. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram roles and attributes More: http://perisic.com/oosd Elements of a class diagram roles and attributes A role name (will be implemented as a reference attribute in the Order class). Primitive types 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Operations More: http://perisic.com/oosd Elements of a class diagram Operations Operations (Methods) They refer to the behaviour of the object. Operations are implied by the sequence of events in a sequence diagram. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Operations & Attributes More: http://perisic.com/oosd Elements of a class diagram Operations & Attributes Operations and Attributes can be private, protected or public. This is reflected by the symbols: +, #, -. RationalRose uses other symbols. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram private/public More: http://perisic.com/oosd Elements of a class diagram private/public The RationalRose symbol for private. Same as “-number” The RationalRose symbol for public. Same as “+creditRating()” 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Relationships More: http://perisic.com/oosd Elements of a class diagram Relationships There are four types of relationships between classes: Association (unidirectional or bidirectional) Generalisation (inheritance) Dependencies & Aggregation 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Associations More: http://perisic.com/oosd Elements of a class diagram Associations Associations Associations are structural relationships between objects of different types. They show that knowledge of the relationship needs to be preserved for some duration. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Arrows on Associations More: http://perisic.com/oosd Elements of a class diagram Arrows on Associations Arrows on Associations. The arrow on an association indicates a visibility relationship. OrderLine is visible by Order. No arrow on an association means visibility in both directions. Order knows about Customer and Customer knows Order. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Multiplicities More: http://perisic.com/oosd Elements of a class diagram Multiplicities Numbers on an association indicate how many objects of a class are related to how many objects of another class. They are called multiplicities. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Multiplicities More: http://perisic.com/oosd Elements of a class diagram Multiplicities One Customer object can be associated to many Order objects. But it can also be associated to no Order object at all. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Multiplicities More: http://perisic.com/oosd Elements of a class diagram Multiplicities One Order object can have many OrderLine objects, but must have at least one. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Generalisation If two or more classes have some common attributes and methods, these attributes and methods can be collected and placed in a super class (parent class). Generalisation reflects the inheritance relationship known from C++ and Java. More: http://perisic.com/oosd Elements of a class diagram Generalisation 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Constraints More: http://perisic.com/oosd Elements of a class diagram Constraints Constraints A constraint is attached to an element. It has semantic influence on the element. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Constraints More: http://perisic.com/oosd Elements of a class diagram Constraints Pre-condition The condition of an operation before being executed. Post-condition The expected consequence of an operation. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Elements of a class diagram Constraints & Notes More: http://perisic.com/oosd Elements of a class diagram Constraints & Notes You can use the same symbol for constraints and notes use the same symbol (a rectangle with a flipped corner attached by a dotted line). However notes have no semantical meaning. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Element of a class diagram Notes and Constraints More: http://perisic.com/oosd Element of a class diagram Notes and Constraints Misinterpreting constraints as simple notes may lead to major problems 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

How to make a class diagram. More: http://perisic.com/oosd How to make a class diagram. Identify all the classes participating in the software solution (analysis & sequence diagrams). Draw them in a class diagram. Identify the attributes. Identify the methods (from the sequence diagram). Add associations, generalisations, aggregations and dependencies. Add other stuff (roles, constraints, ...) 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Class diagrams and Interaction diagrams. More: http://perisic.com/oosd Class diagrams and Interaction diagrams. In practice class diagrams and interaction diagrams are usually created in parallel. Many classes, methods, etc. may be sketched out in a class diagram prior to drawing a sequence diagram. Note also that a conceptual model and/or the analysis model can be used as starting points for the class diagram. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Example (how to make a class diagram) 1. Identify classes More: http://perisic.com/oosd Example (how to make a class diagram) 1. Identify classes We investigate the "return item" Use Case of the Recycling machine. From the analysis we find the following classes: Customer Panel Deposit item receiver Receipt basis Deposit item Receipt printer Can, Bottle, Crate 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Example (how to make a class diagram) 2. Draw them in a class diagram More: http://perisic.com/oosd Example (how to make a class diagram) 2. Draw them in a class diagram 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Example (how to make a class diagram) 3. Identify attributes More: http://perisic.com/oosd Example (how to make a class diagram) 3. Identify attributes Classes which contain data are in the Deposit item hierarchy. For checking & classifying an item we need the weight and size of a Can, Bottle, and Crate. For collecting the data at the Receipt basis each Deposit Item gets a number and a value. Underlined atteributes show class (static) variables. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Example (how to make a class diagram) 4. Identify methods More: http://perisic.com/oosd Example (how to make a class diagram) 4. Identify methods The return item use case suggests the following two methods for the Customer Panel: itemReceived(slot : Integer) printReceipt() Following the sequence of events in the sequence diagram we obtain then: Deposit item receiver: classifyItem(), createReceiptBasis(), printReceipt() Receipt basis: addItem(), computeSum(), Receipt printer: print(). We don't show accessor and modifier methods in order to keep the diagram simple. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Example (how to make a class diagram) 5. Add associations More: http://perisic.com/oosd Example (how to make a class diagram) 5. Add associations Associations show navigability between classes 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Relationships between classes More: http://perisic.com/oosd Relationships between classes There are four possible relationships between classes. Association Dependency Generalisation Aggregation 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Relationships between classes More: http://perisic.com/oosd Relationships between classes There are four possible relationships between classes. Association Dependency Generalisation Aggregation Association and dependency are in the context of visibility. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Relationships between classes More: http://perisic.com/oosd Relationships between classes There are four possible relationships between classes. Association Dependency Generalisation Aggregation Generalisation and aggregation may be considered as special versions of association. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Visibility Why do we consider visibility? More: http://perisic.com/oosd Visibility Why do we consider visibility? Object Oriented design is about sending messages between objects. For an object A to send a message to an object B, B must be visible to A. Example: The Deposit Item Receiver cannot send a message to the Printer, if it is not visible for the Deposit Item Receiver 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Visibility There are four types of visibility: More: http://perisic.com/oosd Visibility There are four types of visibility: Attribute visibility - B is a (reference) attribute to A. Parameter visibility – B is a parameter of a method of A. Locally declared visibility – B is declared as a local object in a method of A. Global visibility – B is in some way globally visible. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

More: http://perisic.com/oosd Attribute Visibility Attribute visibility from A to B exists when B is a (reference) attribute of A. It persists as long as A and B exist. It is a very common form of visibility in object-oriented systems. In the implementation usually A has a reference (Java) or a pointer (C++) variable of B. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Attribute Visibility – Example More: http://perisic.com/oosd Attribute Visibility – Example Deposit item receiver is referenced by the Customer Panel. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Attribute visibility – Example 2 More: http://perisic.com/oosd Attribute visibility – Example 2 The role name already suggests a name for the reference in the implementation, e.g. (Java) public class Order { OrderLine [] line_items; ... } 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

More: http://perisic.com/oosd Parameter visibility Parameter visibility exists when B is passed as a parameter to a method of A. It is a relatively temporary visibility because it persists only in the scope of the method. It is common to transform parameter visibility into attribute visibility (see example). 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Parameter visibility – example More: http://perisic.com/oosd Parameter visibility (example): Deposit item is passed as a parameter in the addItem method of the Receipt basis. The parameter item will then become an attribute of Receipt basis. Parameter visibility – example 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Locally Declared Visibility More: http://perisic.com/oosd Locally Declared Visibility Locally declared visibility from A to B exists when B is declared as a local object within a method of A. Two common means: Create a new local instance and assign it to a local variable. Assign the return object from a method invocation to a local variable. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Locally Declared Visibility – Example More: http://perisic.com/oosd Locally Declared Visibility – Example The classifyItem() method generates an instance of Deposit item (Can, Bottle or Crate, depended of the slot) and returns it. In this method the Deposit item is locally visible. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

More: http://perisic.com/oosd Global Visibility Global visibility from A to B exists when B is global to A. In object oriented systems it is the least common form of visibility. Global visibility can be implemented via the return value of a class (static) method. the return value of a non-member function (C++). as a public static attribute in Java. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Global Visibility – Example More: http://perisic.com/oosd Global Visibility – Example As the printer is unique in the system and may be used also by other classes than Deposit item receiver (e.g. in the daily report use case) we can design it as a global object. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Visibility, Association & Dependency More: http://perisic.com/oosd Visibility, Association & Dependency Attribute visibility between classes is always considered as an association. UML uses a solid arrow to denote associations: Parameter, local, and global visibility is considered as a dependency. UML uses as dashed arrow for dependencies: 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Revised example: Marc Conrad http://perisic.com/marc More: http://perisic.com/oosd Revised example: 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

More: http://perisic.com/oosd Generalisation Generalisation -- used to refer to inheritance in OOSD, that is, a subclasse inherits attributes and methods from a superclass, and in turn. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Aggregation and Composition More: http://perisic.com/oosd Aggregation and Composition Aggregation is a kind of association used to model whole-part relationships between things – A "has a" relationship. The whole is generally called the composite (the parts have no standard name) Aggregation is shown with a hollow or filled diamond: Composite Aggregation: Shared Aggregation: Aggregation is a property of an association role (as multiplicity, name, multiplicity) Finger Hand Car Engine 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Composite Aggregation vs. Shared Aggregation More: http://perisic.com/oosd Composite Aggregation vs. Shared Aggregation Composite aggregation (also known as composition) means that the composite solely owns the part. Shared aggregation means that the part may be in many composite instances. Finger Hand Engine Car 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

When to show aggregation? More: http://perisic.com/oosd When to show aggregation? Show aggregation when: The lifetime of the part is bound within the lifetime of the composite. There is an obvious whole-part physical or logical assembly. Some properties of the composite propagate to the parts. Operations applied to the composite propagate to the parts. Rule of thumb: If in doubt, leave it out. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Aggregation (Example) More: http://perisic.com/oosd Aggregation (Example) The Deposit item may be considered as part of a composite Receipt basis. 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

Abstract classes & Interfaces. More: http://perisic.com/oosd Abstract classes & Interfaces. If every member of a type T must also be a member of a subtype, then type T is called an abstract type, and the type name is italized in the class diagram If an abstract type is implemented in software as a class during the design phase, it will usually be represented by an abstract class, meaning that no instances may be created for the class. An abstract method is one that is declared in an abstract class, but not implemented; in the UML it is also notated with italics. Classes containing only abstract methods are known as interfaces (denoted by a dotted generalisation arrow). 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc

More: http://perisic.com/oosd Abstract classes Deposit item may be considered as an abstract class as it only exists as a Can, Bottle, or Crate. Therefore Deposit item is italized. Can weight size Bottle Customer panel itemReceived(slot : Integer) printReceipt() Receipt basis addItem(item : Deposit Item) computeSum() Deposit item number value 1..* Crate Deposit item receiver classifyItem(slot : Integer) : Deposit item createReceiptBasis() Receipt printer print() 07/05/2019 10:40:10 Marc Conrad http://perisic.com/marc