SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
UML Tutorial:
                               Part 1 -- Class Diagrams.
                                             Robert C. Martin
My next several columns will be a running tutorial of UML. The 1.0 version of UML was released
on the 13th of January, 1997. The 1.1 release should be out before the end of the year. This col-
umn will track the progress of UML and present the issues that the three amigos (Grady Booch,
Jim Rumbaugh, and Ivar Jacobson) are dealing with.

Introduction
UML stands for Unified Modeling Language. It represents a unification of the concepts and nota-
tions presented by the three amigos in their respective books1. The goal is for UML to become a
common language for creating models of object oriented computer software.
In its current form UML is comprised of two major components: a Meta-model and a notation. In
the future, some form of method or process may also be added to; or associated with, UML.

The Meta-model
UML is unique in that it has a standard data representation. This representation is called the meta-
model. The meta-model is a description of UML in UML. It describes the objects, attributes, and
relationships necessary to represent the concepts of UML within a software application.
This provides CASE manufacturers with a standard and unambiguous way to represent UML
models. Hopefully it will allow for easy transport of UML models between tools. It may also
make it easier to write ancillary tools for browsing, summarizing, and modifying UML models.
A deeper discussion of the metamodel is beyond the scope of this column. Interested readers can
learn more about it by downloading the UML documents from the rational web site2.

The Notation
The UML notation is rich and full bodied. It is comprised of two major subdivisions. There is a
notation for modeling the static elements of a design such as classes, attributes, and relationships.
There is also a notation for modeling the dynamic elements of a design such as objects, messages,
and finite state machines.
In this article we will present some of the aspects of the static modeling notation. Static models
are presented in diagrams called: Class Diagrams.

Class Diagrams.
The purpose of a class diagram is to depict the classes within a model. In an object oriented appli-
cation, classes have attributes (member variables), operations (member functions) and relation-

   1. Object Oriented Analysis and Design, Grady Booch, Benjamin Cummings, 1994.
      Object Oriented Modeling and Design, James Rumbaugh, et. al., Prentice Hall, 1991
      Object Oriented Software Engineering, Ivar Jacobson, et. al., Addison Wesley, 1992
   2. http://www.rational.com
ships with other classes. The UML class diagram can depict all these things quite easily. The
fundamental element of the class diagram is an icon the represents a class. This icon is shown in
Figure 1.

                               Figure 1: The Class Icon


                                              Class
                                          Attribute
                                          operation()



A class icon is simply a rectangle divided into three compartments. The topmost compartment
contains the name of the class. The middle compartment contains a list of attributes (member vari-
ables), and the bottom compartment contains a list of operations (member functions). In many
diagrams, the bottom two compartments are omitted. Even when they are present, they typically
do not show every attribute and operations. The goal is to show only those attributes and opera-
tions that are useful for the particular diagram.
This ability to abbreviate an icon is one of the hallmarks of UML. Each diagram has a particular
purpose. That purpose may be to highlight on particular part of the system, or it may be to illumi-
nate the system in general. The class icons in such diagrams are abbreviated as necessary. There is
typically never a need to show every attribute and operation of a class on any diagram. Figure 2
shows a typical UML description of a class that represents a circle.

                                 Figure 2: Circle class


                                        Circle
                                itsRadius:double
                                itsCenter:Point
                                Area():double
                                Circumference():double
                                SetCenter(Point)
                                SetRadius(double)



Notice that each member variable is followed by a colon and by the type of the variable. If the
type is redundant, or otherwise unnecessary, it can be omitted. Notice also that the return values
follow the member functions in a similar fashion. Again, these can be omitted. Finally, notice that
the member function arguments are just types. I could have named them too, and used colons to
separate them from their types; or I could have omitted the arguments altogether.

Composition Relationships
Each instance of type Circle seems to contain an instance of type Point. This is a relationship
known as composition. It can be depicted in UML using a class relationship. Figure 3 shows the
composition relationship.
Figure 3: Circle contains Point




                       Circle                                         Point



The black diamond represents composition. It is placed on the Circle class because it is the
Circle that is composed of a Point. The arrowhead on the other end of the relationship
denotes that the relationship is navigable in only one direction. That is, Point does not know
about Circle. In UML relationships are presumed to be bidirectional unless the arrowhead is
present to restrict them. Had I omitted the arrowhead, it would have meant that Point knew
about Circle. At the code level, this would imply a #include “circle.h” within
point.h. For this reason, I tend to use a lot of arrowheads.
Composition relationships are a strong form of containment or aggregation. Aggregation is a
whole/part relationship. In this case, Circle is the whole, and Point is part of Circle. How-
ever, composition is more than just aggregation. Composition also indicates that the lifetime of
Point is dependent upon Circle. This means that if Circle is destroyed, Point will be
destroyed with it. For those of you who are familiar with the Booch-94 notation, this is the Has-
by-value relationship.
In C++ we would represent this as shown in Listing 1.

                                Listing 1: Circle class
 class Circle
 {
    public:
      void SetCenter(const Point&);
      void SetRadius(double);
      double Area() const;
      double Circumference() const;
    private:
      double itsRadius;
      Point itsCenter;
 };

In this case we have represented the composition relationship as a member variable. We could also
have used a pointer so long as the destructor of Circle deleted the pointer.

Inheritance
The inheritance relationship in UML is depicted by a peculiar triangular arrowhead. This arrow-
head, that looks rather like a slice of pizza, points to the base class. One or more lines proceed
from the base of the arrowhead connecting it to the derived classes.
Figure 4 shows the form of the inheritance relationship. In this diagram we see that Circle and
Square both derive from Shape. Note that the name of class Shape is shown in italics. This
indicates that Shape is an abstract class. Note also that the operations, Draw() and Erase()
are also shown in italics. This indicates that they are pure virtual.
Figure 4: Inheritance


                                              Shape
                                              {abstract}

                                           Draw()
                                           Erase()




                            Circle                                Square



Italics are not always very easy to see. Therefore, as shown in Figure 4, an abstract class can also
be marked with the {abstract} property. What’s more, though it is not a standard part of
UML, I will often write Draw()=0 in the operations compartment to denote a pure virtual func-
tion.

Aggregation / Association
The weak form of aggregation is denoted with an open diamond. This relationship denotes that
the aggregate class (the class with the white diamond touching it) is in some way the “whole”, and
the other class in the relationship is somehow “part” of that whole.

                                  Figure 5: Aggregation


                                                                        Shape
                                                             *
                     Window                                             {abstrac
                                                     itsShapes



Figure 5 shows an aggregation relationship. In this case, the Window class contains many Shape
instances. In UML the ends of a relationship are referred to as its “roles”. Notice that the role at
the Shape end of the aggregation is marked with a “*”. This indicates that the Window contains
many Shape instances. Notice also that the role has been named. This is the name that Window
knows its Shape instances by. i.e. it is the name of the instance variable within Window that
holds all the Shapes.
Listing 2 shows how Figure 5 might be implemented in C++

                        Listing 2: Window contains Shapes
 class Window
 {
     public:
       //...
     private:
       vector<Shape*> itsShapes;
 };

There are other forms of containment that do not have whole / part implications. For example,
Each Window refers back to its parent Frame. This is not aggregation since it is not reasonable to
consider a parent Frame to be part of a child Window. We use the association relationship to
depict this.
                                 Figure 6: Associations




                                                       Frame
                                itsParent




                                                      Window



Figure 6 shows how we draw an association. An association is nothing but a line drawn between
the participating classes. In Figure 6 the association has an arrowhead to denote that Frame does
not know anything about Window. Once again note the name on the role. This relationship will
almost certainly be implemented with a pointer of some kind.
What is the difference between an aggregation and an association? The difference is one of impli-
cation. Aggregation denotes whole/part relationships whereas associations do not. However, there
is not likely to be much difference in the way that the two relationships are implemented. That is,
it would be very difficult to look at the code and determine whether a particular relationship ought
to be aggregation or association. For this reason, it is pretty safe to ignore the aggregation rela-
tionship altogether. As the amigos said in the UML 0.8 document: “...if you don’t understand
[aggregation] don’t use it.”
Aggregation and Association both correspond to the Has-by-reference relationship from the
Booch-94 notation.
Dependency
Sometimes the relationship between a two classes is very weak. They are not implemented with
member variables at all. Rather they might be implemented as member function arguments. Con-
sider, for example, the Draw function of the Shape class. Suppose that this function takes an
argument of type DrawingContext.

                                    Figure 7: Dependency


                                                                            Shape
                                                            *
                   Window
                                                    itsShapes Draw(DrawingContext&)




        itsContext



              DrawingContext



Figure 7 shows a dashed arrow between the Shape class and the DrawingContext class. This
is the dependency relationship. In Booch94 this was called a ‘using’ relationship. This relation-
ship simply means that Shape somehow depends upon DrawingContext. In C++ this almost
always results in a #include.

Interfaces
There are classes that have nothing but pure virtual functions. In Java such entities are not classes
at all; they are a special language element called an interface. UML has followed the Java
example and has created some special syntactic elements for such entities.
The primary icon for an interface is just like a class except that it has a special denotation called a
stereotype. Figure 8 shows this icon. Note the «type» string at the top of the class. The two sur-
rounding characters “«»” are called guillemets (pronounced Gee-may). A word or phrase sur-
rounded by guillemets is called a “stereotype”. Stereotypes are one of the mechanisms that can be
used to extend UML. When a stereotype is used above the name of a class it indicates that this
class is a special kind of class that conforms to a rather rigid specification.
The «type» stereotype indicates that the class is an interface. This means that it has no member
variables, and that all of its member functions are pure virtual.
UML supplies a shortcut for «type» classes. Figure 9 shows how the “lollypop” notation can be
used to represent an interface. Notice that the dependency between Shape and DrawingCon-
text is shown as usual. The class WindowsDC is derived from, or conforms to, the Drawing-
context interface. This is a shorthand notation for an inheritance relationship between
Figure 8: Type class

                                             «type»
                                        DrawingContext

                                  SetPoint(int,int,bool)
                                  ClearScreen()
                                  GetVerticalSize():int
                                  GetHorizontalSize():in
                                  t

WindowsDC and DrawingContext.

                             Figure 9: Interface Lollypop




                   Shape                                              WindowsDC
                                               DrawingContext

Conclusion
In this article we have explored a few of the notational elements that UML supplies for static soft-
ware design. In future columns we will expand upon this notation by showing how to use it for
solving some real software problems. We will also examine UML’s contingent of tools for model-
ing dynamic design.

Más contenido relacionado

La actualidad más candente

Uml Omg Fundamental Certification 2
Uml Omg Fundamental Certification 2Uml Omg Fundamental Certification 2
Uml Omg Fundamental Certification 2Ricardo Quintero
 
Object and class relationships
Object and class relationshipsObject and class relationships
Object and class relationshipsPooja mittal
 
Uml Presentation
Uml PresentationUml Presentation
Uml Presentationmewaseem
 
Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3Ricardo Quintero
 
UML Diagram Assignment Help, UML Diagram Homework Help
UML Diagram Assignment Help, UML Diagram Homework HelpUML Diagram Assignment Help, UML Diagram Homework Help
UML Diagram Assignment Help, UML Diagram Homework HelpJacob William
 
Lecture-03 Introduction to UML
Lecture-03 Introduction to UMLLecture-03 Introduction to UML
Lecture-03 Introduction to UMLartgreen
 
Lecture12 software design class diagram
Lecture12 software design class diagramLecture12 software design class diagram
Lecture12 software design class diagramShahid Riaz
 
UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...
UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...
UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...Niloy Biswas
 
INTRODUCTION TO UML DIAGRAMS
INTRODUCTION TO UML DIAGRAMSINTRODUCTION TO UML DIAGRAMS
INTRODUCTION TO UML DIAGRAMSAshita Agrawal
 
UML Diagram @ Software engineering discussion
UML Diagram @ Software engineering discussionUML Diagram @ Software engineering discussion
UML Diagram @ Software engineering discussionCherryBerry2
 
Object Oriented Modeling and Design with UML
Object Oriented Modeling and Design with UMLObject Oriented Modeling and Design with UML
Object Oriented Modeling and Design with UMLMalek Sumaiya
 
Uml class diagram and packages ppt for dot net
Uml class diagram and packages ppt for dot netUml class diagram and packages ppt for dot net
Uml class diagram and packages ppt for dot netmekhap
 

La actualidad más candente (19)

Uml Omg Fundamental Certification 2
Uml Omg Fundamental Certification 2Uml Omg Fundamental Certification 2
Uml Omg Fundamental Certification 2
 
Uml - An Overview
Uml - An OverviewUml - An Overview
Uml - An Overview
 
Types of UML diagrams
Types of UML diagramsTypes of UML diagrams
Types of UML diagrams
 
Object and class relationships
Object and class relationshipsObject and class relationships
Object and class relationships
 
Uml Presentation
Uml PresentationUml Presentation
Uml Presentation
 
Class diagram
Class diagramClass diagram
Class diagram
 
Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3Uml Omg Fundamental Certification 3
Uml Omg Fundamental Certification 3
 
UML Diagram Assignment Help, UML Diagram Homework Help
UML Diagram Assignment Help, UML Diagram Homework HelpUML Diagram Assignment Help, UML Diagram Homework Help
UML Diagram Assignment Help, UML Diagram Homework Help
 
Lecture-03 Introduction to UML
Lecture-03 Introduction to UMLLecture-03 Introduction to UML
Lecture-03 Introduction to UML
 
Class diagram
Class diagramClass diagram
Class diagram
 
Lecture12 software design class diagram
Lecture12 software design class diagramLecture12 software design class diagram
Lecture12 software design class diagram
 
UML Diagrams
UML DiagramsUML Diagrams
UML Diagrams
 
UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...
UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...
UML Diagram - Use-Case diagram, Activity Diagram, Sequence Diagram, Er Diagra...
 
Claas diagram
Claas diagramClaas diagram
Claas diagram
 
Uml lecture
Uml lectureUml lecture
Uml lecture
 
INTRODUCTION TO UML DIAGRAMS
INTRODUCTION TO UML DIAGRAMSINTRODUCTION TO UML DIAGRAMS
INTRODUCTION TO UML DIAGRAMS
 
UML Diagram @ Software engineering discussion
UML Diagram @ Software engineering discussionUML Diagram @ Software engineering discussion
UML Diagram @ Software engineering discussion
 
Object Oriented Modeling and Design with UML
Object Oriented Modeling and Design with UMLObject Oriented Modeling and Design with UML
Object Oriented Modeling and Design with UML
 
Uml class diagram and packages ppt for dot net
Uml class diagram and packages ppt for dot netUml class diagram and packages ppt for dot net
Uml class diagram and packages ppt for dot net
 

Destacado

First draft slides
First draft slidesFirst draft slides
First draft slidesswair
 
Master Law and Politics of International Security - Thesis Maria Sofia Cossar...
Master Law and Politics of International Security - Thesis Maria Sofia Cossar...Master Law and Politics of International Security - Thesis Maria Sofia Cossar...
Master Law and Politics of International Security - Thesis Maria Sofia Cossar...Sofi Cossar
 
Innovar para el aprendizaje
Innovar para el aprendizajeInnovar para el aprendizaje
Innovar para el aprendizajeleonavicario193
 
Innovar para el aprendizaje
Innovar para el aprendizajeInnovar para el aprendizaje
Innovar para el aprendizajeleonavicario193
 

Destacado (7)

Dduisb u8
Dduisb u8Dduisb u8
Dduisb u8
 
Wahid
WahidWahid
Wahid
 
First draft slides
First draft slidesFirst draft slides
First draft slides
 
Master Law and Politics of International Security - Thesis Maria Sofia Cossar...
Master Law and Politics of International Security - Thesis Maria Sofia Cossar...Master Law and Politics of International Security - Thesis Maria Sofia Cossar...
Master Law and Politics of International Security - Thesis Maria Sofia Cossar...
 
Innovar para el aprendizaje
Innovar para el aprendizajeInnovar para el aprendizaje
Innovar para el aprendizaje
 
gallery nights 2011
gallery nights 2011gallery nights 2011
gallery nights 2011
 
Innovar para el aprendizaje
Innovar para el aprendizajeInnovar para el aprendizaje
Innovar para el aprendizaje
 

Similar a Uml classdiagrams

Object oriented modelling
Object oriented modellingObject oriented modelling
Object oriented modellingsujithmv1
 
UML-Advanced Software Engineering
UML-Advanced Software EngineeringUML-Advanced Software Engineering
UML-Advanced Software EngineeringAmit Singh
 
Fundamentals of Software Engineering
Fundamentals of Software Engineering Fundamentals of Software Engineering
Fundamentals of Software Engineering Madhar Khan Pathan
 
Unified Modelling Language
Unified Modelling LanguageUnified Modelling Language
Unified Modelling LanguageJismy .K.Jose
 
Introduction to UML, a guide to learn.pdf
Introduction to UML, a guide to learn.pdfIntroduction to UML, a guide to learn.pdf
Introduction to UML, a guide to learn.pdfTARGARYEN001
 
Lecture#02, building blocks of uml ASE
Lecture#02, building blocks of uml ASELecture#02, building blocks of uml ASE
Lecture#02, building blocks of uml ASEbabak danyal
 
Diagramming the Class Diagram: Toward a Unified Modeling Methodology
Diagramming the Class Diagram: Toward a Unified Modeling Methodology Diagramming the Class Diagram: Toward a Unified Modeling Methodology
Diagramming the Class Diagram: Toward a Unified Modeling Methodology IJCSIS Research Publications
 
Introduction To Uml
Introduction To UmlIntroduction To Uml
Introduction To Umlguest514814
 
2012.10 - DDI Lifecycle - Moving Forward - 3
2012.10 - DDI Lifecycle - Moving Forward - 32012.10 - DDI Lifecycle - Moving Forward - 3
2012.10 - DDI Lifecycle - Moving Forward - 3Dr.-Ing. Thomas Hartmann
 
Unified Modeling Language
Unified Modeling LanguageUnified Modeling Language
Unified Modeling Languagesurana college
 

Similar a Uml classdiagrams (20)

Class Diagram
Class DiagramClass Diagram
Class Diagram
 
Ooad static diagram
Ooad static diagramOoad static diagram
Ooad static diagram
 
Object oriented modelling
Object oriented modellingObject oriented modelling
Object oriented modelling
 
Uml introduciton
Uml introducitonUml introduciton
Uml introduciton
 
ooAD
ooADooAD
ooAD
 
UML-Advanced Software Engineering
UML-Advanced Software EngineeringUML-Advanced Software Engineering
UML-Advanced Software Engineering
 
Fundamentals of Software Engineering
Fundamentals of Software Engineering Fundamentals of Software Engineering
Fundamentals of Software Engineering
 
Unified Modelling Language
Unified Modelling LanguageUnified Modelling Language
Unified Modelling Language
 
Introduction to UML, a guide to learn.pdf
Introduction to UML, a guide to learn.pdfIntroduction to UML, a guide to learn.pdf
Introduction to UML, a guide to learn.pdf
 
Lecture#02, building blocks of uml ASE
Lecture#02, building blocks of uml ASELecture#02, building blocks of uml ASE
Lecture#02, building blocks of uml ASE
 
Experiment no
Experiment noExperiment no
Experiment no
 
Uml basics
Uml basicsUml basics
Uml basics
 
Uml basics
Uml basicsUml basics
Uml basics
 
Diagramming the Class Diagram: Toward a Unified Modeling Methodology
Diagramming the Class Diagram: Toward a Unified Modeling Methodology Diagramming the Class Diagram: Toward a Unified Modeling Methodology
Diagramming the Class Diagram: Toward a Unified Modeling Methodology
 
Chapter 2.pptx
Chapter 2.pptxChapter 2.pptx
Chapter 2.pptx
 
Introduction To Uml
Introduction To UmlIntroduction To Uml
Introduction To Uml
 
Uml
UmlUml
Uml
 
2012.10 - DDI Lifecycle - Moving Forward - 3
2012.10 - DDI Lifecycle - Moving Forward - 32012.10 - DDI Lifecycle - Moving Forward - 3
2012.10 - DDI Lifecycle - Moving Forward - 3
 
Unified Modeling Language
Unified Modeling LanguageUnified Modeling Language
Unified Modeling Language
 
Uml report
Uml reportUml report
Uml report
 

Último

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 

Último (20)

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 

Uml classdiagrams

  • 1. UML Tutorial: Part 1 -- Class Diagrams. Robert C. Martin My next several columns will be a running tutorial of UML. The 1.0 version of UML was released on the 13th of January, 1997. The 1.1 release should be out before the end of the year. This col- umn will track the progress of UML and present the issues that the three amigos (Grady Booch, Jim Rumbaugh, and Ivar Jacobson) are dealing with. Introduction UML stands for Unified Modeling Language. It represents a unification of the concepts and nota- tions presented by the three amigos in their respective books1. The goal is for UML to become a common language for creating models of object oriented computer software. In its current form UML is comprised of two major components: a Meta-model and a notation. In the future, some form of method or process may also be added to; or associated with, UML. The Meta-model UML is unique in that it has a standard data representation. This representation is called the meta- model. The meta-model is a description of UML in UML. It describes the objects, attributes, and relationships necessary to represent the concepts of UML within a software application. This provides CASE manufacturers with a standard and unambiguous way to represent UML models. Hopefully it will allow for easy transport of UML models between tools. It may also make it easier to write ancillary tools for browsing, summarizing, and modifying UML models. A deeper discussion of the metamodel is beyond the scope of this column. Interested readers can learn more about it by downloading the UML documents from the rational web site2. The Notation The UML notation is rich and full bodied. It is comprised of two major subdivisions. There is a notation for modeling the static elements of a design such as classes, attributes, and relationships. There is also a notation for modeling the dynamic elements of a design such as objects, messages, and finite state machines. In this article we will present some of the aspects of the static modeling notation. Static models are presented in diagrams called: Class Diagrams. Class Diagrams. The purpose of a class diagram is to depict the classes within a model. In an object oriented appli- cation, classes have attributes (member variables), operations (member functions) and relation- 1. Object Oriented Analysis and Design, Grady Booch, Benjamin Cummings, 1994. Object Oriented Modeling and Design, James Rumbaugh, et. al., Prentice Hall, 1991 Object Oriented Software Engineering, Ivar Jacobson, et. al., Addison Wesley, 1992 2. http://www.rational.com
  • 2. ships with other classes. The UML class diagram can depict all these things quite easily. The fundamental element of the class diagram is an icon the represents a class. This icon is shown in Figure 1. Figure 1: The Class Icon Class Attribute operation() A class icon is simply a rectangle divided into three compartments. The topmost compartment contains the name of the class. The middle compartment contains a list of attributes (member vari- ables), and the bottom compartment contains a list of operations (member functions). In many diagrams, the bottom two compartments are omitted. Even when they are present, they typically do not show every attribute and operations. The goal is to show only those attributes and opera- tions that are useful for the particular diagram. This ability to abbreviate an icon is one of the hallmarks of UML. Each diagram has a particular purpose. That purpose may be to highlight on particular part of the system, or it may be to illumi- nate the system in general. The class icons in such diagrams are abbreviated as necessary. There is typically never a need to show every attribute and operation of a class on any diagram. Figure 2 shows a typical UML description of a class that represents a circle. Figure 2: Circle class Circle itsRadius:double itsCenter:Point Area():double Circumference():double SetCenter(Point) SetRadius(double) Notice that each member variable is followed by a colon and by the type of the variable. If the type is redundant, or otherwise unnecessary, it can be omitted. Notice also that the return values follow the member functions in a similar fashion. Again, these can be omitted. Finally, notice that the member function arguments are just types. I could have named them too, and used colons to separate them from their types; or I could have omitted the arguments altogether. Composition Relationships Each instance of type Circle seems to contain an instance of type Point. This is a relationship known as composition. It can be depicted in UML using a class relationship. Figure 3 shows the composition relationship.
  • 3. Figure 3: Circle contains Point Circle Point The black diamond represents composition. It is placed on the Circle class because it is the Circle that is composed of a Point. The arrowhead on the other end of the relationship denotes that the relationship is navigable in only one direction. That is, Point does not know about Circle. In UML relationships are presumed to be bidirectional unless the arrowhead is present to restrict them. Had I omitted the arrowhead, it would have meant that Point knew about Circle. At the code level, this would imply a #include “circle.h” within point.h. For this reason, I tend to use a lot of arrowheads. Composition relationships are a strong form of containment or aggregation. Aggregation is a whole/part relationship. In this case, Circle is the whole, and Point is part of Circle. How- ever, composition is more than just aggregation. Composition also indicates that the lifetime of Point is dependent upon Circle. This means that if Circle is destroyed, Point will be destroyed with it. For those of you who are familiar with the Booch-94 notation, this is the Has- by-value relationship. In C++ we would represent this as shown in Listing 1. Listing 1: Circle class class Circle { public: void SetCenter(const Point&); void SetRadius(double); double Area() const; double Circumference() const; private: double itsRadius; Point itsCenter; }; In this case we have represented the composition relationship as a member variable. We could also have used a pointer so long as the destructor of Circle deleted the pointer. Inheritance The inheritance relationship in UML is depicted by a peculiar triangular arrowhead. This arrow- head, that looks rather like a slice of pizza, points to the base class. One or more lines proceed from the base of the arrowhead connecting it to the derived classes. Figure 4 shows the form of the inheritance relationship. In this diagram we see that Circle and Square both derive from Shape. Note that the name of class Shape is shown in italics. This indicates that Shape is an abstract class. Note also that the operations, Draw() and Erase() are also shown in italics. This indicates that they are pure virtual.
  • 4. Figure 4: Inheritance Shape {abstract} Draw() Erase() Circle Square Italics are not always very easy to see. Therefore, as shown in Figure 4, an abstract class can also be marked with the {abstract} property. What’s more, though it is not a standard part of UML, I will often write Draw()=0 in the operations compartment to denote a pure virtual func- tion. Aggregation / Association The weak form of aggregation is denoted with an open diamond. This relationship denotes that the aggregate class (the class with the white diamond touching it) is in some way the “whole”, and the other class in the relationship is somehow “part” of that whole. Figure 5: Aggregation Shape * Window {abstrac itsShapes Figure 5 shows an aggregation relationship. In this case, the Window class contains many Shape instances. In UML the ends of a relationship are referred to as its “roles”. Notice that the role at the Shape end of the aggregation is marked with a “*”. This indicates that the Window contains many Shape instances. Notice also that the role has been named. This is the name that Window knows its Shape instances by. i.e. it is the name of the instance variable within Window that holds all the Shapes.
  • 5. Listing 2 shows how Figure 5 might be implemented in C++ Listing 2: Window contains Shapes class Window { public: //... private: vector<Shape*> itsShapes; }; There are other forms of containment that do not have whole / part implications. For example, Each Window refers back to its parent Frame. This is not aggregation since it is not reasonable to consider a parent Frame to be part of a child Window. We use the association relationship to depict this. Figure 6: Associations Frame itsParent Window Figure 6 shows how we draw an association. An association is nothing but a line drawn between the participating classes. In Figure 6 the association has an arrowhead to denote that Frame does not know anything about Window. Once again note the name on the role. This relationship will almost certainly be implemented with a pointer of some kind. What is the difference between an aggregation and an association? The difference is one of impli- cation. Aggregation denotes whole/part relationships whereas associations do not. However, there is not likely to be much difference in the way that the two relationships are implemented. That is, it would be very difficult to look at the code and determine whether a particular relationship ought to be aggregation or association. For this reason, it is pretty safe to ignore the aggregation rela- tionship altogether. As the amigos said in the UML 0.8 document: “...if you don’t understand [aggregation] don’t use it.” Aggregation and Association both correspond to the Has-by-reference relationship from the Booch-94 notation.
  • 6. Dependency Sometimes the relationship between a two classes is very weak. They are not implemented with member variables at all. Rather they might be implemented as member function arguments. Con- sider, for example, the Draw function of the Shape class. Suppose that this function takes an argument of type DrawingContext. Figure 7: Dependency Shape * Window itsShapes Draw(DrawingContext&) itsContext DrawingContext Figure 7 shows a dashed arrow between the Shape class and the DrawingContext class. This is the dependency relationship. In Booch94 this was called a ‘using’ relationship. This relation- ship simply means that Shape somehow depends upon DrawingContext. In C++ this almost always results in a #include. Interfaces There are classes that have nothing but pure virtual functions. In Java such entities are not classes at all; they are a special language element called an interface. UML has followed the Java example and has created some special syntactic elements for such entities. The primary icon for an interface is just like a class except that it has a special denotation called a stereotype. Figure 8 shows this icon. Note the «type» string at the top of the class. The two sur- rounding characters “«»” are called guillemets (pronounced Gee-may). A word or phrase sur- rounded by guillemets is called a “stereotype”. Stereotypes are one of the mechanisms that can be used to extend UML. When a stereotype is used above the name of a class it indicates that this class is a special kind of class that conforms to a rather rigid specification. The «type» stereotype indicates that the class is an interface. This means that it has no member variables, and that all of its member functions are pure virtual. UML supplies a shortcut for «type» classes. Figure 9 shows how the “lollypop” notation can be used to represent an interface. Notice that the dependency between Shape and DrawingCon- text is shown as usual. The class WindowsDC is derived from, or conforms to, the Drawing- context interface. This is a shorthand notation for an inheritance relationship between
  • 7. Figure 8: Type class «type» DrawingContext SetPoint(int,int,bool) ClearScreen() GetVerticalSize():int GetHorizontalSize():in t WindowsDC and DrawingContext. Figure 9: Interface Lollypop Shape WindowsDC DrawingContext Conclusion In this article we have explored a few of the notational elements that UML supplies for static soft- ware design. In future columns we will expand upon this notation by showing how to use it for solving some real software problems. We will also examine UML’s contingent of tools for model- ing dynamic design.