Unified Modeling Language

From Citizendium
Revision as of 11:56, 17 November 2008 by imported>Eric Evers
Jump to navigation Jump to search

Unified Modeling Language

UML is a standard for diagramming program design and development.

The main types of diagrams that belong to UML are:

class diagrams --------- to show the relationships between objects and classes
sequence diagrams ------ to show time dependency of information flow 
                         Example
collaboration diagrams - to show time dependency of information flow between objects
use case diagrams ------ to show a high level example of system functionality as it relates to 
                          information flow between a system and its users
state diagrams --------- to show how messages change the state of objects over time
component diagrams ----- to show how objects are contained
deployment diagrams ---- to show time dependencies in deployment
entity relationship diagrams -

James Rumbaugh, Ivar Jacobson and Grady Booch are together considered the main contributors to UML historically. Together they formed Rational Software.

Class Diagrams use implements, composition and aggregation relationships.

----------------------------------------------------
Implementation example:  A fedora is a (type of) hat. 
Arrowhead type:          Unfilled closed triangle.
Arrow direction:         From example to category.
+--------+
| hat    |
+--------+
   / \
    |
    |
+--------+
| fedora |
+--------+
 
------------------------------------------------------------------
Composition example:  A heart is a non-removable part of a person. 
Arrowhead type:       Solid diamond.
Arrow direction:      From part to whole.
+--------+
| person |
+--------+
    ♦
    |
    |
+--------+
| heart  |
+--------+
----------------------------------------------------------
Aggregation example:  A hat is a removable part of a person. 
Arrowhead type:       Unfilled-diamond(lozenge).
Arrow direction:      From part to whole.
+--------+
| person |
+--------+
    ◊
    |
    |
+--------+
|  hat   |
+--------+
----------------------------------------------------------
Inner Class example:  Tree_search is an inner class of tree.  
Arrowhead type:       Oplus(plus in a circle).
Arrow direction:      From part to whole.
Purpose:              Tree_search is a Search, but Tree_Search 
                      is an inner class of tree.
                      Only trees need a tree_search class 
                      so it is hidden. Some languages do not
                      support inner classes. Java does.
+--------+   +---------+
| tree   |   | search  |
+--------+   +---------+
    ⊕        / \
    |         |
    |         |
+-------------+
| tree_search |
+-------------+