Objects, Classes, and Basic Class Diagrams

Slides:



Advertisements
Similar presentations
Analysis Modeling Static Modeling.
Advertisements

CS 340 UML Class Diagrams. A model is an abstraction of a system, specifying the modeled system from a certain viewpoint and at a certain level of abstraction.
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
7M701 1 Class Diagram advanced concepts. 7M701 2 Characteristics of Object Oriented Design (OOD) objectData and operations (functions) are combined 
1 Object-Oriented Modeling Using UML CS 3331 Fall 2009.
Generalizable Element Namespace Model Element name visibility isSpecification Classifier isRoot Constraint Body Coming up: Class Syntax Basic Class Diagrams.
The Unified Modeling Language (UML) Class Diagrams.
Practical Object-Oriented Design with UML 2e Slide 1/1 ©The McGraw-Hill Companies, 2004 PRACTICAL OBJECT-ORIENTED DESIGN WITH UML 2e Chapter 2: Modelling.
1 A Student Guide to Object- Orientated Systems Chapter 4 Objects and Classes: the basic concepts.
OBJECT AND CLASES: THE BASIC CONCEPTS Pertemuan 8 Matakuliah: Konsep object-oriented Tahun: 2009.
Generalizable Element Namespace Model Element name visibility isSpecification Classifier isRoot Constraint Body Coming up: Class Syntax Basic Class Diagrams.
Generalizable Element Namespace Model Element name visibility isSpecification Classifier isRoot Constraint Body Coming up: Class Syntax Basic Class Diagrams.
Generalizable Element Namespace Model Element name visibility isSpecification Classifier isRoot Constraint Body Objects, Classes, and Basic Class Diagrams.
Generalizable Element Namespace Model Element name visibility isSpecification Classifier isRoot Constraint Body Coming up: Introduction to Objects Objects,
Conceptual Data Modeling. What Is a Conceptual Data Model? A detailed model that shows the overall structure of organizational data A detailed model.
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 20 Object-Oriented.
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.
Activity & Class Modeling Labs Discussion p3 T120B pavasario sem.
Today in OOAD  The Domain Model Artifact UML Classes  EU-Bid Domain Model Exercise  EU-Lease Domain Model Assignment Guest Speaker  Kate Cunningham,
The Static Analysis Model Class Diagrams Prof. Hany H. Ammar, CSEE, WVU, and Dept. of Computer Science, Faculty of Computers and Information, Cairo University.
What is a Structural Model?
Design Model Lecture p6 T120B pavasario sem.
Domain Classes – Part 1.  Analyze Requirements as per Use Case Model  Domain Model (Conceptual Class Diagram)  Interaction (Sequence) Diagrams  System.
Chapter 16 UML Class Diagrams 1CS6359 Fall 2012 John Cole.
Generalizable Element Namespace Model Element name visibility isSpecification Classifier isRoot Constraint Body Coming up: Unified Modeling Language Introduction.
Object Modeling THETOPPERSWAY.COM. Object Modelling Technique(OMT)  Building a model of an application domain and then adding implementation.
Generalizable Element Namespace Model Element name visibility isSpecification Classifier isRoot Constraint Body Coming up: Unified Modeling Language Introduction.
Object Oriented Programming and Data Abstraction Earl Huff Rowan University.
Generalizable Element Namespace Model Element name visibility isSpecification Classifier isRoot Constraint Body Introduction to the Unified Modeling Language.
WELCOME TO OUR PRESENTATION UNIFIED MODELING LANGUAGE (UML)
5 Systems Analysis and Design in a Changing World, Fourth Edition.
5 Chapter 5: Modeling Systems Requirements: Events and Things Systems Analysis and Design in a Changing World.
Data Modeling Using the Entity- Relationship (ER) Model
Modeling with UML – Class Diagrams
CHAPTER
UML Diagrams: Class Diagrams The Static Analysis Model
Chapter 9 Domain Models.
DATA REQIREMENT ANALYSIS
Evolution of UML.
Visit for more Learning Resources
Chapter 5: Structural Modeling
Course Outcomes of Object Oriented Modeling Design (17630,C604)
Object-Oriented Analysis and Design
Introduction to the Unified Modeling Language
Unified Modeling Language
Class diagram Description
OO Domain Modeling With UML Class Diagrams and CRC Cards
Today’s Objectives Define the Problem Domain
UML Unified Modelling Language
UML Class Diagrams: Basic Concepts
Object Oriented Analysis and Design
Use Cases CS/SWE 421 Introduction to Software Engineering Dan Fleck
Systems Analysis and Design With UML 2
UML Class Diagram.
Introduction to the Unified Modeling Language
Chapter 20 Object-Oriented Analysis and Design
Object-Oriented Knowledge Representation
Appendix A Object-Oriented Analysis and Design
Introduction to the Unified Modeling Language
SYS466 Domain Classes – Part 1.
Understand and Use Object Oriented Methods
Objects, Classes, and Basic Class Diagrams
Systems Analysis – ITEC 3155 Modeling System Requirements – Part 2
Class Diagrams Class diagram is basically a graphical representation of the static view of the system and represents different aspects of the application.
Chapter 22 Object-Oriented Systems Analysis and Design and UML
CIS 375 Bruce R. Maxim UM-Dearborn
Object Oriented System Design Class Diagrams
The generalization of class
UML  UML stands for Unified Modeling Language. It is a standard which is mainly used for creating object- oriented, meaningful documentation models for.
Presentation transcript:

Objects, Classes, and Basic Class Diagrams CS/SWE 421 Introduction to Software Engineering Dan Fleck (Slides adapted from Dr. Stephen Clyde with permission) Additional information: http://www.rational.com/uml/resources.html Coming up: Introduction to Objects

Introduction to Objects Objects are the fundamental building blocks of object-oriented systems What is an object? It represents any “thing” It has a boundary in space and time It is an abstraction It encapsulates state and/or behavior It has identity Coming up: Introduction to Objects

Introduction to Objects What aren’t objects? Events (sometimes) Relationships between objects (most of the time) Behavior (most of the time) Constraints (most of the time) Coming up: Exercise - Object Hunt

Exercise - Object Hunt Part 1 - List examples of objects in the Third National Bank Elevator System Part 2 - List some concepts from this system that would not typically be modeled as objects Coming up: Introduction to Classes

Introduction to Classes Classes are abstractions that allow us to deal with whole collections of objects that share some commonalties Examples of classes in a Student Records Management System Course College Class Section Instructor Semester Student Class Grade Department Major Coming up: Three Perspectives

Three Perspectives Objects and classes, as well as all other modeling components in UML, can be interpreted from different perspectives: Three common perspectives: Analysis - description of the problem domain Specification - logical description of software system Implementation - description of software components and their deployment Coming up: Classes from different Perspectives

Classes from different Perspectives Meaning from three perspectives Analysis: sets of objects Specifications: interfaces to encapsulated software representations of objects Implementations: abstract data types Analysis Specification Implementation Student Student Student {Joe, Sue, Mary, Frank, Tim, …} Interface Student {…} class Student {…} Coming up: Class Syntax

Class Syntax A box divided into compartments Name Attributes Operations Responsibilities Used-defined compartments Student major: String gpa: Real standing: String add(Class Section) drop(Class Section) -- The set of students known to the registration system -- An exception occurs if gpa falls below 2.0 Coming up: Class Names

Class Names The name should be a noun or noun phrase The name should be singular and description of each object in the class The name should be meaningful from a problem-domain perspective “Student” is better than “Student Data” or “S-record” or any other implementation driven name Avoid jargon in the names Try to make the name descriptive of the class’s common properties Coming up: Exercise – Class Identification

Exercise – Class Identification Identify meaningful classes in the Elevator System Class ended here – 9/2/2008 Coming up: Return to Objects – Object Syntax

Return to Objects – Object Syntax Object syntax is similar to class syntax, except the name identifies specific or generic object the name includes the class that the object belongs to Remember, individual objects are instances of classes joe: Student major: String = “CS” gpa: Real = 4.0 standing: String = “” add(Class Section) drop(Class Section) Coming up: Attributes

Attributes Attributes represent characteristics or properties of objects They are place holders or slots that hold values The values they hold are other objects The name of an attribute communicates its meaning An attribute can be defined for individual objects or classes of objects If defined for a class, then every object in the class has that attribute (place holder) Coming up: Attributes from an Analysis Perspective

Attributes from an Analysis Perspective An attribute relates an object to some other object It has the same semantics as an association joe: Student Is basically the same as ... name: String = “Joe Jones” name joe: Student Joe Jones : String 1 Coming up: Attributes from a Specification Perspective

Attributes from a Specification Perspective An attribute represents an obligation to provide or manage a certain (single) piece of information For example, each Student object must be able to encapsulate a major, a GPA, and a standing Student major: String gpa: Real standing: String Coming up: Attributes from an Implementation Perspective

Attribute Syntax [visibility] name [multiplicity] [:type] [=initial-value] [{property-string}] visibility: public “+”, protected “#”, or private “-” name: capitalize first letter of each word that makes up the name, except for the first multiplicity: number, range, or sequence of number or ranges. type: build-in type or any user-defined class initial-value: any constant and user-defined object property-string: e.g, changeable, addOnly, frozen Coming up: Exercise – Attributes

Operations Meaning from three perspectives Analysis: Ways in which objects interaction Specification: An obligation to provide a service Implementation: A function member, a method Coming up: Operations

Operations Student Class Section major: String GPA: Real standing: String name: String capacity: Integer takes> add(Student) drop(Student) checkPrerequisites(Students) add(Class Section) drop(Class Section) <has Course Prerequisite Coming up: Operation Syntax

Operation Syntax [visibility] name [(parameter-list)] [:return-type] [{property-strong}] visibility: “+”, “#”, “-” name: verb or verb phase, capitalize first letter of every word, except first parameter-list: coma separated list of parameters return-type: primitive type or user-defined type property-string: isQuery, sequential, guarded, concurrent Coming up: Type of Relationships in Class Diagrams

Type of Relationships in Class Diagrams A consolidated snippet of the UML Meta-model Relation Generalization Association Dependency Binary Association N-ary Association Aggregation Coming up: Associations

Associations An association is a structural relationship that specifies that objects of class may be connected to objects of another class Meaning from three perspectives Analysis: Links between objects Specification: Obligation to provide a connection between objects Implementation: Object pointers, references, linking structures, etc. Coming up: Associations

Associations is registered for> Student Semester takes> is held during> teaches> Class Section Instructor <works for is instance of> sponsors> Department Course Coming up: Association Names

Association Names Associations may be named The names should communicate the meaning of the links The names are typically verb phases The name should include an arrow indicating the direction in which the name should be read Coming up: Navigation

Navigation The navigation of associations can be uni-directional bi-directional unspecified teaches> Class Section Instructor <works for is instance of> sponsors> Department Course Coming up: Navigation

Navigation The navigation of association without an arrowhead is assumed to be undefined Navigation has little value when modeling from a conceptual perspective Why? Navigation is more important from specification and implementation perspectives Navigation provides information that helps optimize a design. Coming up: N-ary Associations

Generalization Generalization is another kind of relationship in UML – see Meta Model From an analysis perspective, it is a pure generalization/specialization concept, i.e., the specialization is a subset of the generalization Graduate Student Person Student Coming up: Generalization

Generalization From a specification/implementation perspective, generalization can represent sub-typing, inheritance, type capability, and substitutability (depends on the language) Student Person major: String GPA: Real standing: String The notations of sub-typing, interface inheritance, type capability, and substitutability are closely related, but are distinct ideas. Their subtle differences probably go beyond the scope of this course. name: String address: String add(Class Section) drop(Class Section) changeAddress(new_address) Coming up: Exercise – Simple Associations

Exercise – Simple Associations From an analysis perspective: Identify meaningful associations and generalization/specializations among classes in the Elevator System Coming up: Class Diagrams

Class Diagrams Class Diagrams describe They can also include the types of objects in a system their properties (attributes and operations) relationships between objects They can also include Grouping concepts like packages Constraints Various kinds of annotations Coming up: Class Diagrams

Multiplicity Constraints is registered for> Student Semester 1..* 0..* 1 takes> is held during> 0..8 1..* teaches> Class Section Instructor 1..3 0..6 1..* <works for is instance of> 1 sponsors> 1 1..* Department Course Coming up: Questions

Questions From the previous diagram How many classes can a student take? Do you have to be registered in any classes to be a student? Do I need to teach this class to be an Instructor? Do I need to teach ANY classes? Coming up: Multiplicity Constraints

Multiplicity Constraints A multiplicity constraint can be a single number a “*”, meaning an arbitrarily large number or simply “many” a range, denoted by “min..max” a sequence of single numbers and ranges This is also called the cardinality constraint Coming up: Dependencies

Dependencies A consolidated snippet of the UML Meta-model Relation Generalization Association Dependency Binary Association N-ary Association Aggregation Coming up: Dependencies

Dependencies A dependency is a type of relationship It says that one modeling component “uses” another. If the later changes then, the former may have to change as well Student Prerequisite add(Course) drop(Course) Coming up: Dependencies

Dependencies Just think: uses! Meaning from three perspectives Analysis: physical or logical dependency between the connected classes Specification: a “uses” relationship at an interface level Implementation: a “uses” relationship at an implementation level. Just think: uses! Coming up: Dependencies

Dependencies Syntax: a dashed link with an straight-line arrowhead point to a component on which there is a dependency Dependencies can be defined among: classes, notes, packages, and other types of components Can dependencies go both ways? Any problems with having lots of dependencies? Coming up: Aggregations (is part of)

Aggregations (is part of) A consolidated snippet of the UML Meta-model Relation Generalization Association Dependency Binary Association N-ary Association Aggregation Coming up: Aggregation

Aggregation Aggregation: is a special kind of association that means “part of” Aggregations should focus on single type of composition (physical, organization, etc.) Crust 1 1 1 Sauce Serving 1 1 Pizza * Order 1..3 1 1 Cheese Serving 0..9 1 4..* Topping Serving Slice Coming up: Composition (very similar to aggregation)

Composition (very similar to aggregation) Think of composition as a stronger form of aggregation. Composition means something is a part of the whole, but cannot survive on it’s own. Room Building Coming up: Lets look at BookstoreExample4.jpg

Lets look at BookstoreExample4.jpg Does John McCain (who has 7 houses) have a problem using this system? If Barack Obama decides to create a Federal sales tax, how would we change the system? Why is there a display method in Item, Book, MusicCD and Software? An ItemOrder is part of how many Orders? Can you explain how a search works using this diagram? This is in the examples subdirectory Got here 1/28/2009 Coming up: Class Exercise

Class Exercise Lets create the WeGrow class diagram Class ended here 9/4/2008 Coming up: Validating a class diagram

Validating a class diagram One of the most important, and often overlooked issues is how to validate a class diagram. (Usually best for an diagram at the implementation perspective) Given a specification or a use-case, can you look at the class diagram and use attributes and methods to “execute” a use case? Lets try it for the WeGrow class diagram Coming up: Some User Stories for WeGrow

Some User Stories for WeGrow As an analyst I need to get a report on sales statistics on a per store basis. As a store manager I want to change prices for an item in my store only. As a sales clerk I want to determine the closest store that has the item in stock and request a transfer of the merchandise Yes, no, yes Coming up: Questions

Questions What’s the difference between an attribute and an association with another class? For example, should “grade” be an attribute or a link to another class called “Grade”? When during the software engineering life cycle should you build classes diagrams? Ended here on 2/6/08 Coming up: More Questions

More Questions How do you know when a class diagram is complete? How can you manage change control on all the class diagrams for project? What do you do with class diagrams after a system has been built and delivered? Coming up: Bonus Slide!

Bonus Slide! If you’re interested in Auto-generating UML, Netbeans has an option to do it. Install the UML plugin Right-click on a project Choose “Reverse Engineer” Go to the new UML project Select a package and choose to generate a new UML diagram End of presentation