next up previous contents
Next: UML Examples Up: Introduction to UML and Previous: Introduction to UML and   Contents

UML Notation [4]

Class Definition:




\begin{picture}(190,320)(50,480)\thicklines
\put( 50,480){\framebox (190,320)...
...kebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{\twlrm +publicAttribute}}}
\end{picture}

class ClassName {
  int attribute2;
  int attribute3=10;
  private int privateAttribute;
  protected int protectedAttribute;
  public int publicAttribute;
  static int classAttribute;

  void method1() { }
  int method2() {return 0;}
  void method3(int parameter) {}
  private void privateMethod() {}
  protected void protectedMethod() {}
  public void publicMethod() {} 
  static void classMethod() {}
}



Static Structure Diagrams [5]



Abstract Class Definition:




\begin{picture}(150,100)(70,700)\thicklines
\put( 70,700){\framebox (150,100)...
...\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{\em abstractMethod()}}}
\end{picture}

abstract class AbstractClassName {
  abstract void abstractMethod();
}



Generalization/Specialization (``is a''):




\begin{picture}(285,100)(30,700)\thicklines
\put(130,770){\framebox (85,30){}...
...10){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{\twlrm SubClassY}}}
\end{picture}

class SuperClass {}
class SubClassX extends SuperClass {}
class SubClassY extends SuperClass {}



Realization(``realizes''):




\begin{picture}(320,190)(30,610)\thicklines
\put(345,645){\circle{10}}
\put( ...
...\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{\twlrm InterfaceName}}}
\end{picture}

interface InterfaceName {
  public void operation();
}
class Implementor implements InterfaceName {
  public void operation() {}
}



Static Structure Diagrams [6]



Navigability (``has a'') where the Association is ``uses'':




\begin{picture}(360,70)(70,710)\thicklines
\put(300,710){\framebox (130,70){}...
...230,750){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{\twlrm uses}}}
\end{picture}

class Client {
  Server s;
  void clientMethod() {
    s.serverOperation();
  }
}
class Server {
  void serverOperation() {}
}



Aggregation (should be dark diamond):




\begin{picture}(65,140)(90,660)\thicklines
\put( 90,760){\framebox (65,40){}}...
...00,775){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{\twlrm Whole}}}
\end{picture}

class Part {}
class Whole {
  Part part1;
  Part part2;
  Part part3;
  Part part4;
}

$\bullet$ Aggregation creates and hides sub-parts



Static Structure Diagrams [7]



Composition (is a clear diamond):




\begin{picture}(65,140)(90,660)\thicklines
\put( 90,760){\framebox (65,40){}}...
...ut(125,705){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{\twlrm *}}}
\end{picture}

class Container {
  java.util.Vector v;

  void addChild(Object o) { v.addElement(o); }
}

$\bullet$ Composition is a container that receives objects from the outside



Multiplicity:




\begin{picture}(240,134)(50,680)\thicklines
\put(210,780){\framebox (55,30){}...
...\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{\twlrm exactly three}}}
\end{picture}

class Parent {
  java.util.Vector v1;
  java.util.Vector v2;
  Object o1;
  Object o2;
  Object o3;
}



Static Structure Diagrams [8]



Package:




\begin{picture}(460,320)(80,480)\thicklines
\put( 80,800){\line( 0,-1){320}}
...
...\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{\twlrm MyClass7.java}}}
\end{picture}

package gui.framework;
class MyClass1 {}

package gui.servers;
import gui.framework;
class MyClass3 extends MyClass1 {}



Dynamic Execution Diagrams [9]



Collaboration Diagram:




\begin{picture}(530,360)(10,440)\thicklines
\put(135,760){\framebox (85,40){}...
...65){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{\twlrm 7: size()}}}
\end{picture}



$\bullet$ firstMessage() in Class1, triggers 7 method calls

$\bullet$ classMethod() is a static call to Class2: Class2.classMethod()

$\bullet$ create() in UML is construction: ``new''

$\bullet$ apply a method to an instance: id2.message1(99)

$\bullet$ 4 is an ``if'' statement: [some boolean condition]

$\bullet$ 5b is the ``else'' to the 5a ``if''

$\bullet$ ``for'' loop: 6*: [i:=1..10]

$\bullet$ ``while'' loop (not shown): #*: [some boolean condition]

$\bullet$ 7: size() applied to collection of objects, not an individual object



Dynamic Execution Diagrams [10]



class Class1 {
  private Class2 id2;
  private Class2 id3 = new Class2();
  private Class2 id4 = new Class2();
  private java.util.Vector v = new java.util.Vector();
  public Class1() {
    v.addElement(new Class2()); 
    v.addElement(new Class2()); 
    v.addElement(new Class2()); 
  }
  public void firstMessage() {
    boolean test = true;
    boolean test2 = true;
    Class2.classMethod();      // 1:
    id2 = new Class2();        // 2:
    id2.message1(99);          // 3:
    if (test) id2.message2();  // 4:
    if (test2)                 
      id2.message3();          // 5a:
    else
      id3.message4();          // 5b:
    for (int i=1; i<=10; i++)
      id4.message5();          // 6:
    int size = v.size();       // 7:
  }
}
class Class2 {
   public static void classMethod() {}
   public void message1(int parameter){}
   public void message2(){}
   public void message3(){}
   public void message4(){}
   public void message5(){}
}
class Class3 {
  private Class1 id1 = new Class1();
  public Class3() {
    id1.firstMessage();
  }
}



Dynamic Execution Diagrams [11]



Sequence Diagram:




\begin{picture}(290,120)(60,680)\thicklines
\put(250,760){\framebox (100,40){...
...5){\makebox(0,0)[lb]{\raisebox{0pt}[0pt][0pt]{\twlrm message2()}}}
\end{picture}

class Sequence1 {
  private Sequence2 id2 = new Sequence2();
  public void message1() { id2.message2(); }
}
class Sequence2 {
  public void message2() {}
}
class Sequence3 {
  private Sequence1 id1 = new Sequence1();
  public Sequence3() {
    id1.message1();
  }
}



$\bullet$ Collaboration Diagram uses numbers to illustrate triggering events

$\bullet$ Sequence Diagram uses vertical time line to illustrate triggering events


next up previous contents
Next: UML Examples Up: Introduction to UML and Previous: Introduction to UML and   Contents
Ted Billard 2006-09-26