Git-Lab ermöglicht das parallele Arbeiten in Team an einem Projekt. So haben alle Beteiligten immer Zugriff auf die neuste Projekt-Version. Sollte es Probleme mit der aktuellen Softwareversion geben, kann jederzeit auf eine ältere, funktionierende Version zurückgegriffen werden.
Git-Lab ermöglicht das parallele Arbeiten in Team an einem Projekt. So haben alle Beteiligten immer Zugriff auf die neuste Projekt-Version. Sollte es Probleme mit der aktuellen Softwareversion geben, kann jederzeit auf eine ältere, funktionierende Version zurückgegriffen werden.
@ -34,9 +35,50 @@ mit 'git push' wird mein aktueller Projektstand in GitLab hochgeladen. Dies ist
- Weitere Unterteilung in prozdurale, objektorientierte und funktionale Programmiersprachen
- Weitere Unterteilung in prozdurale, objektorientierte und funktionale Programmiersprachen
- typisierte und typenlose Programmiersprachen
- typisierte und typenlose Programmiersprachen
- Prinzipien der Programmierung "STUPID" vs. " SOLID" sowie weitere Prinizipien (z.B.: KISS, YAGNI, ...)
- Prinzipien der Programmierung "STUPID" vs. " SOLID" sowie weitere Prinizipien (z.B.: KISS, YAGNI, ...)
### Erkenntnis
### Erkenntnis
Für unser Gruppenprojekt wird sich am Besten eine objektorientierte Programmiersprache eigenen, da diese für gute Struckturierung und bessere Testbarkeit sorgen. So können die anderen Gruppenmitglieder leichter nachvollziehen, was gemacht wurde und Programmteile auch wiederverwenden.
Für unser Gruppenprojekt wird sich am Besten eine objektorientierte Programmiersprache eigenen, da diese für gute Struckturierung und bessere Testbarkeit sorgen. So können die anderen Gruppenmitglieder leichter nachvollziehen, was gemacht wurde und Programmteile auch wiederverwenden.
### Wiederholung
### Wiederholung
Bei imperativen Programmiersprachen, wie z.B. Java, laufen Programme in einer vorgegeben Reihenfolge ab. Hier werden genaue Schritt-für-Schritt-Anleitungen benötigt. Bei der deklarativen Programmierung stehen hingegen die Beschreibungen der Probleme im Vordergrund, sodass der Lösungsweg automatisch ermittelt werden kann. Die Programme der deklarativen Programmierung sind meist kürzer als die der Imperativen und Beweise sind leichter durchführbar.
Bei imperativen Programmiersprachen, wie z.B. Java, laufen Programme in einer vorgegeben Reihenfolge ab. Hier werden genaue Schritt-für-Schritt-Anleitungen benötigt. Bei der deklarativen Programmierung stehen hingegen die Beschreibungen der Probleme im Vordergrund, sodass der Lösungsweg automatisch ermittelt werden kann. Die Programme der deklarativen Programmierung sind meist kürzer als die der Imperativen und Beweise sind leichter durchführbar.
## SU 03 (09.11.2022)
### Lernziele
- Entwurfsmuster (design patterns)
- Ursprung in der Architektur
- Erprobte Lösungen für Wiederkehrende Aufgaben
- Im Code schwer identifizierbar
- Vorgang beim Anwendungsentwurf
- Makro-Design (Grobentwurf)
- Wie soll die Struktur des Programms sein?
- Wird eine grafische Oberfläche benötigt?
- Werden mehrere Seiten benötigt? Wenn ja, wie viele?
- Mikro-Design (Beziehung der Codebestandteile zueinander)
- Auf welche Seite wird man weitergeleitet?
- Was soll an den einzelnen Stellen genau passieren?
- Verschiedene Beispiele von Erzeugungs-, Struktur- und Verhaltensmustern
- Geschichte der Programmierwerkzeuge
- Erstes Programmiertes Gerät war ein Bohrer
- Textübersetzung in Binär-Code durch Rechner wurde möglich
- Syntax-Highlighting mit unterschiedlichen Farben war noch nicht möglich
- Highlighting durch Fettschreibung
- IDE (Integrated Development Enviroment)
- Funktionen und Automatisierungen:
- Syntax-Highlighting möglich
- Syntax-Vervollständigung
- Navigation von Ordner zu Ordner
- automatische Codeformatierung
- Fehler-Lokalisierung: Fehlermeldungen werden ausgegeben
- Debugging: während Codeausführung anhalten, um Status anzusehen, evtl. Änderungen von Variablen-Werten möglich
- Automatisierte Refactorings
- Safe actions: automatische Code-Formatierung sowie Compilierung beim Speichern
- Unterschied einfache und komplexe Refactorings
- Beispiele von IDEs (Eclipse, Netbeans, Visual Studio Code,...)
### Erkenntnis
Durch automatisierte Refactorings ist es möglich Variablen-Namen noch im Nachhinein zu ändern. Die Änderung wird automatisch an allen Stellen der Methode übernommen.
### Wiederholung
Bei einfachen Refactorings beschränkt sich die Änderung der Variablen-Namen auf die aktuelle Datei. Bei komplexen Refactorings werden die Änderungen der Signatur in einer Methode über mehrere Dateien automatisch übernommen und geändert. Dabei wird die Signatur so geändert, dass der Code weiter Compilierbar bleibt und das Verhalten nicht geändert wird.