W notacji UML klasa jest przedstawiona jako prostokąt podzielony na trzy części. W pierwszej części podana jest nazwa klasy i czasami package. W drugiej części podane są pola czyli atrybuty klasy. W ostatniej znajduje się lista operacji (metod).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public abstract class Book { private String title; protected double price; public Book(String title) { this.title = title; } static public String getAuthor() { return "Unnamed"; } abstract String getIndex(); private void countPages() { //TODO: do something } } |
Metody dostępu sa oznaczane symbolami. Symbolem minusa ( – ) oznacza się dostęp prywatny. Protected oznacza sie przez hash ( # ) a plusem ( + ) oznacza się dostęp publiczny. Metody abstrakcyjne pisze się kursywą. Gdy klasa jest abstrakcyjna to pisze się kursywą nazwę klasy. Nazwy metod i pól statycznych są podkreślone.
Często na diagramach pomija się niepotrzebne metody i pola, np. prywatne i konstruktory.
Dziedziczenie
Dziedziczenie oznaczone jest jako strzałka z pustym grotem poprowadzona od klasy dziedziczącej do super klasy.
1 2 3 4 5 6 7 8 9 10 |
public class Novel extends Book { public Novel(String title) { super(title); } public String getIndex() { return "Index"; } } |
Interfejs
Interejsy oznacza sie prawie tak samo jak przy dziedziczeniu. Jedyną różnicą jest linia, która w tym przypadku jest przerywana. Gdy klasa jest interfejsem wypisuje się to nad nazwą klasy w podwójnych nawiasach trójkątnych (<<interface>>
).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public interface Newspaper { public String getTitle(); public double getPrice(); } public class JavaExpress implements Newspaper{ public String getTitle() { return "Java Express"; } public double getPrice() { return 0.0d; } } |
Kompozycja
Prezentacja hierarchii klas musi zawierać informacje na temat tego, w jaki sposób jedne obiekty zawierają się w innych. Kompozycję oznacza sie linią ciągłą zakończoną rombem. Po drugiej stronie może być strzałka i ilość relacji.
1 2 3 4 5 6 7 8 9 |
public class Biblioteka { Novel novel; Book[] book; public Biblioteka() { } } |