- Java ist auch eine Insel (Web-Version)
- Effective Java (Deutsche Ausgabe)
- Clean Code (Deutsche Ausgabe)
- Design Pattern der Gang of four (Deutsche Ausgabe)
git init
(Git initialisieren)
git add .
(ganzes Verzeichnis adden)
git remote add origin [email protected]:user/repository.git
(Git remote adden)
git status
(Status abfragen)
git commit -am "Message"
(committen und commit-Message absetzen)
git push origin master
(nach master pushen)
git tag -a tagname -m "Message"
(commit taggen)
git clone [email protected]:user/repository.git
(Repository clonen)
git pull origin master
(Repository pullen)
Klassen, Vererbung, Konstruktoren, Member, Getter/Setter, Membermethoden
Collection, List, Map
JUnit
Maven
1. Was sind Design Pattern?
2. Wozu benötige ich Design Pattern?
3. Klassifikation von Design Patterns
4. Auseinandersetzung mit MVC (im Kontext der Desktopentwicklung)
5. Auseinandersetzung mit Observer- und State-Pattern
- mit den Themen der Aufgabenstellung auseinandergesetzt
- ein Projekt Graphic erstellt und nach Github gepusht
- Entwurf einer Klassenstruktur für primitive Grafikelemente (Punkt, Linie, Ellipse und Rechteck)
- Entsprechende Member und Zugriffsmethoden entwickeln
- Entwurf einer Klasse, die Instanzen dieser Primitiven zu einer Zeichnung zusammenfasst, inklusive Member und Methoden
- Schreiben von Tests, um sicherzustellen, dass die Methoden der entworfenen Klassen wie vorgesehen arbeiten
- keine
-
Klassen im Projekt angelegt
public class Vector{}
public class Line{}
public class Oval{}
public class Rectangular{}
public class Drawing{}
-
Vector: zwei Membervariablen angelegt
private int x
private int y
-
Line: zwei Membervariablen angelegt
private Vector start
private Vector end
-
Oval: drei Membervariablen angelegt
private Vector center
private int height
private int width
-
Rectangle: drei Membervariablen angelegt
private Vector start
private int height
private int width
-
mittels
Alt+Einf
Konstruktoren, Getter und Setter in den Klassen erstellt- am Beispiel Vector.java:
- Leeren Konstruktor:
public Vector() {}
- Konstruktor:
public Vector( int x , int y ) { setX(x) ; setY(y) ; }
- Getter für x:
public int getX() { return x ; }
- Setter für x:
public void setX(int x) { this.x = x ; }
- Setter und Getter für y
- Leeren Konstruktor:
- am Beispiel Vector.java:
-
Interface aegelegt
public interface Primitive{}
-
Primitive an alle fünf Klassen vererben
- am Beispiel Vector.java:
public class Vector implements Primitive{}
- am Beispiel Vector.java:
-
Drawing: ArrayList 'primitives' und sechs Methoden erstellt
List<Primitive> primitives = new ArrayList();
add(Primitive primitive)
getSize()
remove(Primitive primitive)
remove(int index)
getPrimitive(int index)
undo()
-
Tests für die jeweiligen Klassen mittel
Strg+Shift+T
erstellt- am Beispiel VectorTest.java:
class VectorTest {}
- mit
void constructorTest() {}
Konstruktor testen - mit
void defaultConstructorTest() {}
leeren Konstruktoren testen - mit
void setterTest() {}
Setter testen
- am Beispiel VectorTest.java:
-
Replacing für Drawing-Klasse mittels
Strg+Shift+T
erstelltvoid addTest() {}
- Funktioniert das Hinzufüge von Elementen ordnungsgemäß?void testRemoveDrawing() {}
- Funktioniert das Entfernen von Elementen ordnungsgemäß?void testGetDrawing() {}
- Funktioniert Aufruf anhand vom Index?void testUndo() {}
- Funktioniert das Entfernen des letzten Elements?
- Besprechung und Diskussion der Aufgabenstellung und Ergebnisse des Vortages
- Versionsverwaltung Git verwenden, um Projekte zu klonen
- Design Pattern 'Observer Pattern' im Projekt implementieren
- Git Anwendungshandbuch
- JUnit 5 User Guide
- Design Pattern der Gang of four (Deutsche Ausgabe)
-
Interfaces GraphicObserver und GraphicObservable angelegt
public interface GraphicObserver{}
public interface GraphicObservable{}
-
Drawing: ArrayList und drei @Override-Methoden angelegt:
List<GraphicObserver> graphicObservers = new ArrayList();
public void addObserver(GraphicObserver graphicObserver) { observers.add(graphicObserver); }
public void removeObserver(GraphicObserver graphicObserver) { observers.remove(graphicObserver); }
public void notifyObserver() { for (int i = 0 ; i < observers.size(); i++) { observers.get(i).update(); } }
-
GraphicObserver: update()-Methode aufrufen
void update()
-
GraphicObservable: drei Methoden aufrufen
addObserver(GraphicObserver graphicObserver)
removeObserver(GraphicObserver graphicObserver)
notifyObserver()
-
Replacing angelegt
void testObservable() {}
- Funktioniert update() in GraphicObservable ordnungsgemäß?
- Besprechung und Diskussion der Aufgabenstellung und Ergebnisse des Vortages
- Namensgebungen überdenken
- Tests überarbeiten
- testObservable erweitert: Werden add und remove korrekt gezählt und an Observer übermittelt?
- alle Tests sind grün
- Namensgebung überarbeitet (englische Variablen-, Methoden- und Klassennamen)
- diese README.md zur Dokumentation angelegt
- Besprechung und Diskussion der Ergebnisse der Vorwoche
- Entwurf einer Menüführung für das Projekt Graphic
- Implementierung der Menüfühung
- Entwurf für die Menüführung
- Interface MenuState angelegt
- Klassen Menu, MainMenu und DrawableMenu angelegt
- Besprechung und Diskussion der Ergebnisse des Vortages
- Entwurf eines Menüsystems mithilfe von UML
- Implementierung des Menüs anhand des UML-Diagramms
- Funktionalität der Menüpunkte herstellen
- Überschreibung der toString-Methode der Primitive
- in Java-Insel lesen: Kapitel 17.1, 17.2, 17.4.4, 17.4.5 und 17.10
- mithilfe eines UML-Diagramms ein Menüsystem entworfen
- Implementierung des Menüs
- Funktionalität der Menüpunkte hergestellt
- Überschreibung der toString-Methode der Primitive
- in Java-Insel Kapitel 17.1, 17.2, 17.4.4 und 17.4.5 gelesen
- in Java-Insel lesen: Kapitel 17.10
- Beispiele zum Abspeichern und Laden anschauen
- in Java-Insel Kapitel 17.10 gelesen
- einige Beispiele ausprobiert: FileOutputStream und FileInputStream
- Save-Funktion im Projekt implementiert
- in Java-Insel lesen
- Save-Funktion im Projekt implementieren
- Interface MenuOperation angelegt
- Load-Funktion im Projekt implementiert
- Remove-Funktion nach Index implementiert
- in Java-Insel zu OOP gelesen