Class Definition:
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:
abstract class AbstractClassName {
abstract void abstractMethod();
}
Generalization/Specialization (``is a''):
class SuperClass {}
class SubClassX extends SuperClass {}
class SubClassY extends SuperClass {}
Realization(``realizes''):
interface InterfaceName {
public void operation();
}
class Implementor implements InterfaceName {
public void operation() {}
}
Static Structure Diagrams [6]
Navigability (``has a'') where the Association is ``uses'':
class Client {
Server s;
void clientMethod() {
s.serverOperation();
}
}
class Server {
void serverOperation() {}
}
Aggregation (should be dark diamond):
class Part {}
class Whole {
Part part1;
Part part2;
Part part3;
Part part4;
}
Aggregation creates and hides sub-parts
Static Structure Diagrams [7]
Composition (is a clear diamond):
class Container {
java.util.Vector v;
void addChild(Object o) { v.addElement(o); }
}
Composition is a container that receives objects from the outside
Multiplicity:
class Parent {
java.util.Vector v1;
java.util.Vector v2;
Object o1;
Object o2;
Object o3;
}
Static Structure Diagrams [8]
Package:
package gui.framework;
class MyClass1 {}
package gui.servers;
import gui.framework;
class MyClass3 extends MyClass1 {}
Dynamic Execution Diagrams [9]
Collaboration Diagram:
firstMessage() in Class1, triggers 7 method calls
classMethod() is a static call to Class2: Class2.classMethod()
create() in UML is construction: ``new''
apply a method to an instance: id2.message1(99)
4 is an ``if'' statement: [some boolean condition]
5b is the ``else'' to the 5a ``if''
``for'' loop: 6*: [i:=1..10]
``while'' loop (not shown): #*: [some boolean condition]
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:
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();
}
}
Collaboration Diagram uses numbers to illustrate triggering events
Sequence Diagram uses vertical time line to illustrate triggering events