Implementierung

Auch während der Implementierungsphase gibt es einige Aspekte, die man beachten sollte, um z.B. gut dokumentierten und lesbaren Code im Team zu erstellen. Einige davon sollen hier exemplarisch betrachtet werden.

Javadoc-Kommentare

Wenn man den Code um entsprechende Kommentare ergänzt, kann man daraus automatisch Dokumentation erstellen. Dazu muss man z.B. in BlueJ nur zwischen Quelltext- und Dokumentationsansicht wechseln. In Entwicklungsumgebungen wie Nebeans gibt es einen entsprechenden Menüpunkt, um Dokumentation zu erstellen.

Eine kurze Übersicht findest Du z.B. bei Wikipedia, eine ausführlichere Anleitung z.B. bei Oracle.

Aufgabe

Ergänze eine von Dir programmierte Klasse um Javadoc-Kommentare, erzeuge die Dokumentation und betrachte diese.

Style-Guide

Damit der Quellcode innerhalb eines Projekts unabhängig vom Programmierer gut lesbar ist, sollte man sich darauf einigen, wie der Code genau formatiert werden sollte. Dazu zählen also Regeln zur Einrückung, zu Zeilenumbrüchen, aber auch z.B. Regeln zur Bildung von Variablennamen. Ein ausführliches Beispiel findest Du z.B. für Google-Java-Code.

Aufgabe

Formuliere - z.B. kursintern - Regeln, nach denen Code in Zukunft erstellt werden soll.

Versionsverwaltung mit Git

Git ist eine freie Software zur verteilten Versionsverwaltung von Dateien, die durch Linus Torvalds initiiert wurde. Der Name Git bedeutet umgangssprachlich im Englischen Blödmann.

Eine Versionsverwaltung ist ein System, das zur Erfassung von Änderungen an Dokumenten oder Dateien verwendet wird. Alle Versionen werden in einem Archiv gesichert und können später wiederhergestellt werden. Versionsverwaltungssysteme werden typischerweise in der Softwareentwicklung eingesetzt, um Quelltexte zu verwalten. (Quelle: Wikipedia)

Ein gutes Einführungsvideo findest Du auf Youtube. (Ein weiterführendes Tutorial findest Du z.B. hier)

Aufgabe

  1. Betrachte das Youtube-Tutorial und bearbeite parallel dazu ein kleines Greenfoot-Beispielprojekt. Du kannst in der Schule eine Portable-Version von Git benutzen. TortoiseGit - wie im Video demonstriert - benötigst Du nicht. (Falls Du über einen Proxy der Schule im Internet bist, musst Du evtl. Deine .gitconfig-Datei im Benutzerverzeichnis anpassen, so dass sie Einträge der folgenden Art enthält:
    [http]
        proxy = http://proxy.fmsg.lan:3128
    [https]
        proxy = https://proxy.fmsg.lan:3128 )
  2. Beschreibe die unten dargestellte Grafik mit Hilfe der Begriffe: Repository, commit, Hashwert, Stage/Index (ist synonym), Branch, push, pull, Remote-Repository, Lokales Repository, Workspace, Checkout, Merge, Clone. (Tipp: Manche Begriffe lassen sich nicht direkt auf die Grafik beziehen, aber dennoch in deren Kontext anwenden)
  3. Erstelle eine eigene, ähnliche Grafik und erzeuge ein entsprechendes Repository.
Quelle: seibert-media.net
Befehle aus dem Youtube-Tutorial

Git-unabhängige Befehle:

pwd: aktuellen Ordner anzeigen
mkdir name: Verzeichnis erstellen
cd .. : einen Ordner höher gehen
cd <ordner>: in Ordner wechseln

Basic:

git init: Repository in aktuellem Ordner erstellen
git add <datei>/--all : Datei selektieren
git commit -m "message" : Commit abschicken

Log:

git log: Commits auflisten
git log --all: Commits auflisten
git log --all --graph --oneline: alle Commits als Graph auflisten
--> log ende: Leertaste, q

Checkout + Branches:

git checkout <commitHash>: auf Commit zurückspringen
git checkout –b „name“: neuen Branch erstellen
git checkout <branch>: zu Branch wechseln
git merge <branch>: Branch in aktuellen Branch mergen
-->merge Commit quit: :q + Enter

Remote (z.B. GitHub):

git clone <GitHubRepoLink> <Zielordner>: GitHub Repo in Zielodner klonen
git push: lokales Repo in GitHub laden
git pull: GitHub Repo in lokales Repo laden

Other:

git diff <datei>: alle Änderungen der Datei auflisten
git status: alle geänderten Dateien anzeigen
git reset --hard HEAD: zum letzten Commit zurücksetzen
git rm <datei>: Datei löschen
git stash: aktuellen Zustand zwischenspeichern(vorher alle Dateien adden)
git stash pop: stash wiederherstellen

Pairprogramming

Während Werkzeuge wie Git oder SVN dazu genutzt werden, um mit mehreren Personen gleichzeitig an unterschiedlichen Projektteilen verteilt zu arbeiten, geht es beim Pairprogramming darum gleichzeitig an einem Projektteil gemeinsam zu arbeiten.

Aufgabe

Überlege welche Vor- und Nachteilen Pairprogramming haben kann. Vergleiche mit dem Artikel bei Wikipedia.

Übungsprojekt

Einigt euch in der Gruppe oder im ganzen Kurs auf ein Projekt, das ihr gemeinsam erstellen bzw. erweitern möchtet. Es kann sich dazu anbieten ein Entwurfsmuster anzuwenden oder ein im entsprechenden Kapitel erstelltes Projekt als Grundlage zu nehmen.

Wendet ein Styleguide, Javadoc-Kommentare, Git - und falls sinnvoll Pairprogramming - an.