Modul 226A
OOP ohne Vererbung, Klassen-, Objekt- und Sequenzdiagramme
Modul 226 A - OOP ohne Vererbung
Übersicht
Klassenkonzept
Objekte, Klassen, Attribute, Methoden
Sequenzdiagramm
Interaktionsrahmen, Nachrichten, Fragmente
Arrays
Elemente hinzufügen, manipulieren, löschen
Assoziationen
Assoziation, Aggregation, Komposition
Methoden überladen
Einfache Methoden überladen
ArrayList
initialisieren, nützliche Methoden, Funktionsweise
Klassenkonzept
Kurzfassung
Was ist ein Objekt?
Ein Objekt oder auch Instanz genannt, ist ein bestimmtes Exemplar einer Klasse.
Ein Objekt beinhaltet Attribute (Eigenschaften) sowie Methoden.
Was ist eine Klasse?
Eine Klasse ist wie ein Bauplan für ein Objekt.
Der Bauplan definiert, was für Attribute sowie Methoden die Objekte besitzen.
Aus einer Klasse können Objekte instanziiert werden.
Was sind Attribute und Methoden?
Attribute sind die Eigenschaften eines Objektes. Sie beschreiben den Gegenstand vollständig.
Methoden beschreiben die Operationen (Funktionen), welche mit dem Objekt durchgeführt werden können.
Assoziationen
Kurzfassung
Binäre Assoziation
Eine binäre Assoziation ist eine Beziehung zwischen zwei Klassen, welche auf eine bestimmte Art miteinander verknüpft sind.
Aggregation
Sobald man die Fragestellung mit hat beantworten kann, handelt es sich um eine Aggregation.
Die Aggregation wird als weiss ausgefüllte Raute dargestellt.
Komposition
Das Teil kann ohne sein Ganzes nicht existieren.
Die schwarz ausgefüllte Raute stellt die Komposition dar.
Binäre Assoziation
Eine binäre Assoziation ist eine Beziehung zwischen zwei Klassen.
Mit einem ausgefüllten Dreieck wird die Leserichtung angegeben.
Die Definition der Navigationsrichtung erfolgt durch einen Pfeil.
Ein Kreuz weist darauf hin, dass über dieses Ende nicht navigiert werden kann.
Multiplizitäten binärer Assoziationen
Multiplizitäten einer Assoziation geben an, wie viele Objekte der einen Klasse mit der anderen Klasse in Verbindung stehen.
Werden Multiplizitäten angegeben, so muss man diese immer an beiden Enden notieren.
Multiplizität | Beschreibung |
---|---|
0 | keins |
1 | genau eins |
* | beliebig viele |
0..* | keins oder beliebig viele |
1..* | eins oder beliebig viele |
4..20 | 4 bis 20 |
1,5,7 | eins, fünf oder sieben |
Aggregation
Die Aggregation ist eine spezielle Assoziation, welche immer dann angewendet wird, wenn eine Ganzes-Teile Beziehung vorliegt.
Dabei ist eine Klasse das Ganze und die andere Klasse einen Teil davon.
Sobald man die Fragestellung mit hat beantworten kann, handelt es sich um eine Aggregation.
Komposition
Die Komposition ist der Spezialfall einer Aggregation, bei der das Teil ohne sein Ganzes nicht existieren kann.
Ein Teil kann höchstens zu einem Ganzen gehören.
Sequenzdiagramm
Kurzfassung
Interaktionsrahmen
Ein Sequenzdiagramm wird innerhalb eines Interkationsrahmen gezeichnet.
Nachrichten
Synchrone Nachrichten werden mit einer geschlossenen Pfeilspitze symbolisiert,
asynchrone Nachrichten mit einer offenen Pfeilspitze.
Fragmente
Mit Fragmenten können Bedingungen oder Optionen dargestellt werden.
Interaktionsrahmen
Ein Sequenzdiagramm wird innerhalb eines Interaktionsrahmen gezeichnet.
Der name ist eindeutig und beginnt mit dem Kürzel sd.
Lebenslinie
Jedes Objekt besitzt eine Lebenslinie, welche gestrichelt angezeigt wird.
Objektnamen werden unterschrichten.
Die Verschiedenen Objekte sind nebeneinander angeordnet.
Personen werden als Strichmännchen und Systeme (bzw. Objekte von Klassen) als Rechtecke dargestellt.
Die Lebenszeit eines Objektes endet mit einem Kreuz am Ende der Lebenslinie.
Aktivitäten
Wenn ein Objekt eine Aktivität durchführt, dann wird dies durch einen Aktivitätsbalken dargestellt.
Die restliche Zeit (gestrichelte Zeit) ist die passive Zeit.
Synchrone Nachrichten
Synchrone Nachrichten werden durch eine Linie mit einer geschlossenen Pfeilspitze symbolisiert.
Rückmeldungen werden durch eine gestrichelte Linie mit einem offenem Pfeil dargestellt.
Antworten können auch Rückgabewerte enthalten.
Asynchrone Nachrichten
Asynchrone Nachrichten werden durch eine Linie mit einer offenen Pfeilspitze dargestellt.
Der Sender der Nachricht wartet nicht auf eine Antwort, sondern führt seine Aktionen weiter durch.
Fragmente
Mit Fragmenten können Bedingungen oder Optionen dargestellt werden.
Alternativen
Die Alternative bietet zwei Möglichkeiten an, welche an eine Bedingung geküpft ist.
Die Bedingung wird in eckigen Klammern definiert.
Die Alternative ist mit der Selektion if else vergleichbar.
Die Beiden Alternativen werden durch eine gestrichelte Linie getrennt.
Option
Die Option wird verwendet, wenn der else Zweig nicht benötigt wird.
Parallele Ausführung
Die Parallele Ausführung wird verwendet, wenn die Nachrichten parallel oder in beliebiger Reihenfolge gesendet werden soll.
Schleifen
loop(*) beliebig viele Wiederholungen
loop(10) Genau 10 Wiederholungen
loop(1, 5) Mindestens 1, maximal 5 Wiederholungen
loop(Bedingung) Solange die Bedingung true ist
Arrays
Kurzfassung
Eindimensionale Arrays
int [] values = new int[10];
int i;
for (i = 0; i < 10; i++) {
values[i] = i * 10;
}
// RESULT
index i: 0 1 2 3 4 5 6 7 8 9
values[i]: 0 10 20 30 40 50 60 70 80 90
Zweidimensionale Arrays
int [][] table = {
{5,3,7,2},
{8,6,9,1},
{2,7,3,4}
};
for (int i = 0; i < table.length; i++) {
for (int z = 0; z < table[0].length; z++) {
System.out.print(table[i][z] + " ");
}
System.out.println();
}
Dreidimensionale Arrays
float [][][] tables = new float[3][3][4];
...
...
tables [1][1][3] = 45.55;
Arraylist
Kurzfassung
Unterschied Array und ArrayList
Die Grösse eines Arrays kann nicht verändert werden.
Wichtige Methoden
.get().set() .remove()
.size()
Loops
for loops sowie for each möglich
Arraylists sind dynamische Arrays die während der Laufzeit beliebig viele Elemente aufnhemen sowie auch wieder abgeben können.
Die ArrayList Klasse befindet sich in dem Paket java.util (import java.util.ArrayList;)
ArrayList initzialisieren
Methode 1
// Syntax
ArrayList<Type> obj = new ArrayList<Type>();
// Beispiel:
ArrayList<Integer> intArray = new ArrayList<Integer>();
Methode 2
Wichtig:
Für diese Methode wird das Packet java.util.Arrays benötigt
// Syntax
ArrayList<Type> obj = new ArrayList<Type>(
Arrays.asList(Obj A, Obj C,..));
// Beispiel
ArrayList<Integer> intArray = new ArrayList<Integer>(
Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8));
System.out.println(intArray);
// RESULT
[1, 2, 3, 4, 5, 6, 7, 8]
Wichtige Methoden
Elemente an bestimmter Position verändern
ArrayList<Integer> intArray = new ArrayList<Integer>();
intArray.add(1);
intArray.add(2);
intArray.add(3);
intArray.set(1, 1000);
System.out.println(intArray);
// RESULT
[1, 1000, 3]
Elemente entfernen
ArrayList<Integer> intArray = new ArrayList<Integer>();
intArray.add(1);
intArray.add(2);
intArray.add(3);
intArray.add(4);
intArray.add(5);
intArray.add(6);
intArray.set(1, 1000);
intArray.remove(4);
System.out.println(intArray);
// RESULT
[1, 1000, 3, 4, 6]
Anzahl Elemente in einer ArrayList herausfinden
ArrayList<Integer> intArray = new ArrayList<Integer>();
intArray.add(1);
intArray.add(2);
intArray.add(3);
intArray.add(4);
intArray.add(5);
intArray.add(6);
intArray.set(1, 1000);
intArray.remove(4);
System.out.println(intArray.size());
// RESULT
5
Element an einer bestimmten Position zurückgeben
ArrayList<Integer> intArray = new ArrayList<Integer>();
intArray.add(1);
intArray.add(2);
intArray.add(3);
intArray.add(4);
intArray.add(5);
intArray.add(6);
System.out.println(intArray.get(5));
// RESULT
6
Methoden überladen
Kurzfassung
Eigenschaften einer Methode
- Methodenname
- Parameterliste
- Rückgabewert
Konstruktor
auch ein Konstruktor kann überladen werden.
Class Person {
private String name = "Meier";
public String getName() {
return this.name;
}
}
Class Overloading {
public void ausgabe(Person personParam) {
System.out.println(personParam.getName());
}
public void ausgabe(int intParam) {
System.out.println(intParam);
}
}