Introduction to Java Class Diagrams
Classes class Account { … } Account
Attributes class Account { float balance = 0; float limit; } Account balance: float = 0 limit: float [visibility] attributeName [multiplicity] [: type [ = initialValue ] ]
Visibility class Account { private float balance = 0; private float limit; } Account - balance: float = 0 - limit: float + public - private # protected ~ package
Operations (methods) class Account { private float balance = 0; private float limit; public void deposit(float amount) public void withdraw(float amount) } Account - balance: float = 0 - limit: float [visibility] methodName( [parameter: type]* ) [ : returnType] + deposit( amount: float ) + withdraw( amount: float )
Class scope class Person { private static int numPeople; private String name; public String getName() public static int getNumPeople() } Person - numPeople: int - name: String + getName() : String + getNumPeople() : int
Composition A comprises local objects that die when A dies class Basket { Item item = new Item(); } BasketItem
Aggregation comprised of sharable objects class Computer { Device dev; Computer(Device dev) { this.dev = dev; } ComputerDevice
Multiplicities class Basket { Item item = new Item(); } BasketItem 1
Multiplicities class Basket { Item[] item = new Item[5]; } BasketItem 5
Multiplicities class Basket { // may or may not exist Item item; } BasketItem 0..1 i..j means i <= # objects <= j
Multiplicities class Basket { List itemList = newArrayList (); } BasketItem 0..* * means no a priori upper limit
Generalization (is a) class Person { … } class Employee extends Person { … } Person Employee
Realization interface Person { … } class Employee implements Person { … } Person Employee Person