From ad37a3de68ac05bf2f72999cc4f3434d083d1536 Mon Sep 17 00:00:00 2001 From: fdai7437 Date: Sun, 26 Nov 2023 20:07:36 +0100 Subject: [PATCH] =?UTF-8?q?SU=5F03=5Fvollst=C3=A4ndig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lerntagebuch.md | 206 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 159 insertions(+), 47 deletions(-) diff --git a/Lerntagebuch.md b/Lerntagebuch.md index 9295199..8fef993 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -2,52 +2,56 @@ ## SU 01 (21.10.2021) -### Lernziel - *Mein Lernziel für diese Woche bestand aus: + ### Lernziel + ### Mein Lernziel für diese Woche bestand aus: - **Sich mit Organisation und Lernplan vertraut zu machen - **Wer ist ein Programmierer? Künstler oder Handwerker? - **Wo liegen Unterschiede zwischen Laien und Profi? - **Folgen der Nichtbeachtung der Prinzipien kennenlernen. - **Werte kennenzulernen an denen man Clean Code erkennen kann. - **Tugenden kennenzulernen, die zu Clean Code gehören. - **Einen GitLab account einzurichten und einen neuen Projekt erstellen. - **Sich mit git vertraut zu machen. + Sich mit Organisation und Lernplan vertraut zu machen + Wer ist ein Programmierer? Künstler oder Handwerker? + Wo liegen Unterschiede zwischen Laien und Profi? + Folgen der Nichtbeachtung der Prinzipien kennenlernen. + Werte kennenzulernen an denen man Clean Code erkennen kann. + Tugenden kennenzulernen, die zu Clean Code gehören. + Einen GitLab account einzurichten und einen neuen Projekt erstellen. + Sich mit git vertraut zu machen. -### Erkenntnis + ### Erkenntnis - *Ich habe erfahren, was mich im Laufe des Semesters erwartet und welche Anforderungen ich erfüllen müsste um erfolgreich den Kurs zu bestehen. Ich habe die Prinzipien kennengelernt, die einem Programmieren helfen erfolgreich und effektiv zu sein und die Folgen der Nichtbeachtung dieser Prinzipien. - *Beim Praktikum habe ich gelernt, wie man einen account beim GitLab erstellt und mithilfe von Terminal und git-Befehlen ein neues Repository erstellt. + Ich habe erfahren, was mich im Laufe des Semesters erwartet und welche Anforderungen ich erfüllen müsste um erfolgreich den Kurs zu bestehen. Ich habe die Prinzipien kennengelernt, die einem Programmierer helfen erfolgreich und effektiv zu sein und die Folgen der Nichtbeachtung dieser Prinzipien. + + Beim Praktikum habe ich gelernt, wie man einen account beim GitLab erstellt und mithilfe von Terminal und git-Befehlen ein neues Repository erstellt. -### Wiederholung + ### Wiederholung - *Diese Woche gab es keine Wiederholung, da wir zum ersten Mal Unterricht hatten. + Diese Woche gab es keine Wiederholung, da wir zum ersten Mal Unterricht hatten. -### Kritik + ### Kritik - *Es gibt keine Kritik + Es gibt keine Kritik -### Mitteilung an die Dozierenden + ### Mitteilung an die Dozierenden - *Es gibt keine Mitteilung an die Dozierenden + Es gibt keine Mitteilung an die Dozierenden ## SU 02 (31.10.2021) -### Lernziel - *Mein Lernziel für diese Woche bestand aus: + ### Lernziel + #### Mein Lernziel für diese Woche bestand aus: - **Programmierparadigmen: - ***Imperative Programmierung: + #### Programmierparadigmen: + + ##### Imperative Programmierung: Programm besteht aus der Reihe der Anweisungen, die vorgeben in welcher Reihenfolge was vom PC getan werden soll. Sehr hardwernah Programm ist gut nachvollziehbar - ***Deklarative Programmiersprachen: + + ##### Deklarative Programmiersprachen: Die Beschreibung des Problems steht im Vordergrund z.B Haskell, List, Prolog, XAML (SQL...) Vorteil: die sind kürzer, als imperative Sprachen mathematische Beweise lassen sich leichten durchführen Es gibt keine Nebenwirkungen aufgrund der Transparenz - ***Prozedurale Programmierung: + + ##### Prozedurale Programmierung: Weiterentwicklung der imperativen Sprachen aufeinander folgende Befehle mit Zelregung des Algorythmus. Diese Zerlegung heisst Funktionen Aufrufen von Unterprogrammen und das Durchleiten von Werten und die Rückgabe von Werten @@ -55,7 +59,8 @@ Es gibt immer ein Zentraler Einstiegspunkt in einem Programm Fehlerzustände werden über spezielle Rückgabewerte kommuniziert Beispiele: Cobol, C... - ***Objektorientierte Programmierung: + + ##### Objektorientierte Programmierung: Es ist eine Technik, welche Objekte, Klassen und Vererbung unterstützt Merkmale: @@ -65,7 +70,8 @@ Vorteil: Das Programm ist besser struckturiert durch einteilen auf klassen (die kannn man unabhängig entwickeln und mitenander kommunizieren) Wiederverwendbarkeit von Programmteilen bessere Testbarkeit (Unittests - kleinere Teile unabhängig von Rest des Programms testen) - ***Funktionale Programmierung: + + ##### Funktionale Programmierung: Erweiterung der deklaratieven Programmierung ineinander verschachtelete Funktionsaufrufe Funktionen sind den anderen Datenobjekten gleichberechtigt @@ -76,52 +82,158 @@ Generierung neuer Funktionen zur Laufzeit geignet für nebenläufige Prozesse Randbedingung: nur für Berechnungen - ***typisierte Programmiersprachen: + + ##### typisierte Programmiersprachen: jede Wariable, Parameter und Rückgabewerte haben einen vordefinirten Typ. Die festlegung ist implizit oder explizit C, C++, Java, go, C#, Python, Haskell, TypeScript Vorteile: fail fast Vervollständigung durch IDE Nachteile: Typen müssen zum Programmierzeitpunkt bekannt sein nachtägliche Änderungen können bestehenden Code brechen - ***Typenlose Programmiersprachen: + + ##### Typenlose Programmiersprachen: jede Wariable, Parameter und Rückgabewerte werden nicht festgelegt Beispiele: JS, Assemler x86 Vorteile: nur faktische Kompatibilität implizite Konvertierung Nachteile: Typenfehler treten erst zum Laufzeit auf - **Prinzipien der Programmierung: - ***SOLID und STUPID + ### Prinzipien der Programmierung: + + SOLID und STU + + KISS Keep it Simle and S + + FCoH Favor Composition over Inheritance + + SLA Single Layer of Abstra + + YAGNI You Ain't Gonna Ne + + IOC Inversion of Co + + DI Dependency Injection + + + ### Erkenntnis - ***KISS Keep it Simle and Stupid - - ***FCoH Favor Composition over Inheritance + Ich habe mehrere Programmiersprachen unter die Lupe genommen und deren Merkmale,Aufgaben- und Anwendungsfelder, sowie Nach- und Vorteile kennengelernt. Durch die Anwendung der Programmierprinzipien lernt man einen lesbaren, effizienten Code zu schreiben, der auch in der Zukunft leicht zu bearbeiten sein soll. + + ### Wiederholung - ***SLA Single Layer of Abstraction + Ich habe den Umgang mit git wiederholt. + + ### Kritik - ***YAGNI You Ain't Gonna Need It + Es gibt keine Kritik - ***IOC Inversion of Control + ### Mitteilung an die Dozierenden - ***DI Dependency Injection + Struckturierte Betrachtung der Programmiersprachen und Programmierprinzipien finden Sie im Ordner "Programmierparadigmen.md" -### Erkenntnis +## SU_03 - *Ich habe mehrere Programmiersprachen unter die Lupe genommen und deren Merkmale,Aufgaben- und Anwendungsfelder, sowie Nach- und Vorteile kennengelernt. Durch die Anwendung der Programmierprinzipien lernt man einen lesbaren, effizienten Code zu schreiben, der auch in der Zukunft leicht zu bearbeiten sein soll. + ### Lernziele: -### Wiederholung + Wir haben die Kenntnisse der Markup Sprache als Voraussetzung definiert. - *Ich habe den Umgang mit git wiederholt. - -### Kritik + Bücherempfehlung + Entwurfmuster: beispielhabe Lösungsanzätze + ursprünglich aus der Architektur + mit der Verbreitung der OOP adaptiert + + ### Vorteile: + + erprobte Lösungen für Wiederkehrende Aufgaben + Vor- und Nachteile sind bekannt + erleichtern die Kommunikation (funktioniert so gut wie nie. Durch DP haben selben Kontext) + Dokumentation (DP enthalten vorgefertigte Lösungen) + + ### Nachteile: + + hohe Einstiegshürde (Lernaufwand und es dauert eine Weile) + im Code schwer identifizierbar - *Es gibt keine Kritik + ### Wo helfen die DP: -### Mitteilung an die Dozierenden + Makro-Design (auf Architekturebene), (Grobentwurf).ModulebeneArchitekt, Team - *Struckturierte Betrachtung der Programmiersprachen und Programmierprinzipien finden Sie im Ordner "Programmierparadigmen.md" + Mikro-Design (wie die Codebestandteile zueinander stehen) + ### 3 verschiedene Kategorien: + + #### Erzeugungsmuster: Erbauer (builder) + Fabrkimethode (factory method) + Abstrakte Fabrik (abctract factory) + Eizelstück (singleton) + Multiton + + #### Strukturmuster: Adapter + retrofit interface pattern + Die Brücke + Dekorierer + Fassade + Fliegengewicht + + + #### Verhaltensmuster: Accumulator + Beobachter + Iterator + Kommando + Nullobjekt + Strategie + + + + ### IDE Intergrated Development Environment + + Geschichte + alle die an einem Projekt beteiligt sind müssen gleiche Patameter für Compiler haben + Folgende Parameter, die zutreffen: Syntax highlighting + Syntax Vervollständigung + Navigation + Debuging etc. + + ### Einteilung: Sprache + Plattform + + ### Beispiele: Eclipse, VS Code ... + + ### Einfache und komplexe Refactorings (eine oder mehrere Dateien) + + ### Debugging: Beobachtung des Programms während der Laufzeit (Reihenfolge der Prozeduren und Werte der Tabelle) + + ### Praktik: Wir haben die Übung mit dem Debugger durchgeführt + + ### Erkenntnis + + Wir haben die Vor- und Nachteile der IDE kennengelernt. Ihre Einsatzmöglichkeiten und auch die Möglichkeit den Code zu debuggen. + + ### Wiederholung + + keine + + ### Kritik + + keine + + ### Mitteilung an die Dozierenden + + keine + + +## SU_04 + + ### Lernziele + + ### Erkenntnis + + ### Wiederholung + + ### Kritik + + ### Mitteilung an die Dozierenden