Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 43

Objects, Classes, and

Basic Class Diagrams


Model Namespace
Element
Classifier Generalizable
Element Constraint
name
isRoot visibility
isSpecification Body

CS/SWE 421
Introduction to Software Engineering

Dan Fleck
(Slides adapted from Dr. Stephen Clyde with permission)
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 Semester Instructor
Section
Student
Class Department
Grade 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, Interface Student class Student


Frank, Tim, …} {…} {…}
Coming up: Class Syntax
Class Syntax
 A box divided into Student
compartments major: String
– Name gpa: Real
standing: String
– Attributes
add(Class Section)
– Operations drop(Class Section)
– Responsibilities -- The set of students
– Used-defined known to the registration
compartments 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: Class Name Syntax
Exercise – Class Identification
 Identify meaningful classes in the Elevator
System

Coming up: Return to Objects – Object Syntax


Return to Objects – Object Syntax
 Object syntax is
similar to class syntax,
except joe: Student
– the name identifies major: String = “CS”
specific or generic gpa: Real = 4.0
object standing: String = “”
– the name includes the add(Class Section)
class that the object drop(Class Section)
belongs to
 Remember, individual
objects are instances
of classes
Coming up: Object Name Syntax
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
name: String = “Joe Jones”
same as ...

joe: Student name


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
Student object must major: String
be able to gpa: Real
encapsulate a standing: String
major, a GPA, and
a standing
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 name: String
GPA: Real takes> capacity: Integer
standing: String
add(Student)
add(Class Section)
drop(Student)
drop(Class Section)
checkPrerequisites(Students)

Course <has
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

g>
ri n
tak
es>

du
ld
he
is
teaches> Class
Instructor
Section
is
<works for

in
st
an
ce
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
Instructor
Section
is
<works for

in
st
an
ce
of
>
sponsors>
Department Course
Coming up: Navigation
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
Person Student
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
name: String GPA: Real
address: String standing: String

changeAddress(new_address) add(Class Section)


drop(Class Section)
Coming up: Generalization
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
– 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

g>
ri n
tak
es>

du
ld
he
0..8
1..*

is
teaches> Class
Instructor
1..3 0..6 Section
1..* is
<works for

in
st
an
ce
of
1 >
1 sponsors> 1..*
Department Course
Coming up: Multiplicity Constraints
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?
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

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
 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
1 1 *
Sauce Serving 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: Using a class diagram


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?
Class Exercise
 Lets create the WeGrow 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: 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?

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: More Questions


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

You might also like