diff --git a/Lerntagebuch.md b/Lerntagebuch.md index 8e675b5..7faa4fa 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -12,54 +12,248 @@ Der Künstler ist Kreativ, neugierig und sehr frei. Ebenso befasst er sich mit k --- -## SU (31.10.2023 +## SU (31.10.2023) ### Lernziel -Allgemeine Prinzipien der Programmierung --Arten der Programmierung -Do's and Don'ts, Stupidand Solid + + -Arten der Programmierung + + Do's and Don'ts, Stupidand Solid ### Erkenntnis -Wir haben in der Vorlesung die effetiven Methoden kenngelernt wie man am besten Programmiert. Ebenso haben wir über die Do's and Dont's geredet, also was man beim Programmieren machen sollte und was nicht. + Wir haben in der Vorlesung die effetiven Methoden kenngelernt wie man am besten Programmiert. Ebenso haben wir über die Do's and Dont's geredet, also was man beim Programmieren machen sollte und was nicht. ### Wiederholung -Besprochen wurden 7 Methoden -Imperative Programmierung: -•Es wird den Computer eine Reihenfolge vorglegt -(bsp:Kochrezepte, Prozess-Checklisten) -Deklarative Programmierung: -•Problemebene steht im Vordergrund und sind kürzer als imperative Programme -•Gibt Code Anweisung, die die Hardware mit bestimmten veraussetzungen ausführt -Programmiersprachen: Haskell, Lisp,XAML -(bsp: Korrektheitsbeweis) -Prozedurale Programmierung: -•eine Erweiterung zur Imperativen Programmierung ->Lässt sich jetzt besser in überschaubare Teile zerlegen -Programmiersprachen:Fortan, COBOL, C -Objektorientierte Programmierung: -•Hier wird sich an der Natur orientiert und Objektorientiert gearbeitet -(Landtier --> Saugetier --> Hund --> Hundrassen) -Programmiersprachen: C#, C++, Java -Funktionale Programmierung: -•vereinfachung des Programmes durch Funktionen -Programmiersprachen: Lips, F#, Scla: C++ -Typisierte Programmierung: -•Varialblen, Parameter und Rückgabewerte bekommen eine festgelegte Typisierung -Programmiersprachen: C, C++, Java, C# -typenlose Programmierung: -•Varialblen, Parameter und Rückgabewerte bekommen keine festgelegte Typisierung Programmiersprachen:sh, cmd, JavaScript - -Programmierprinziepien -Programmierprinziepien: lassen sich durch 2 Wörter am besten beschreiben. SOLID and STUPID --Separation of Concern: -•verschiedene Aufgaben einer Anwendung sollen hier in eigene Berreichen ausgelagert werden -•Übersicht zu behalten -•Teilösung besser verstehen --Open/Closed Principle: -•Quellcode soll vom Anfang ausgelegt sein -•Veränderungen sollen vermieden werden --Liskov Substitution: -•Wenn was im Programm ausgetauscht wird soll das so passieren dass keine Funktionen verloren gehen --Interface Segeration: -•Schnittstellen solle einfach und überschaubar gehalten werden --Dependency Inversion: -•man sollte unabhängig sein -•wenn man von einer Implementierung abhängig ist, kann man diese nicht mehr ohne weiteres variieren --> Somit immer Schnittstellen nutzen -### Kritik + Besprochen wurden 7 Methoden + + **Imperative Programmierung:** + + •Es wird den Computer eine Reihenfolge vorglegt + (bsp:Kochrezepte, Prozess-Checklisten) + Deklarative Programmierung: + •Problemebene steht im Vordergrund und sind kürzer als imperative Programme + •Gibt Code Anweisung, die die Hardware mit bestimmten veraussetzungen ausführt + + Programmiersprachen: + Haskell, Lisp,XAML (bsp: Korrektheitsbeweis) + + + **Prozedurale Programmierung:** + + •eine Erweiterung zur Imperativen Programmierung ->Lässt sich jetzt besser in überschaubare Teile zerlegen + Programmiersprachen:Fortan, COBOL, C + Objektorientierte Programmierung: + + •Hier wird sich an der Natur orientiert und Objektorientiert gearbeitet + (Landtier --> Saugetier --> Hund --> Hundrassen) + + Programmiersprachen: C#, C++, Java + + + **Funktionale Programmierung:** + •vereinfachung des Programmes durch Funktionen + + Programmiersprachen: Lips, F#, Scla: C++ + + + **Typisierte Programmierung:** + + •Varialblen, Parameter und Rückgabewerte bekommen eine festgelegte Typisierung + Programmiersprachen: C, C++, Java, C# + typenlose Programmierung: + + •Varialblen, Parameter und Rückgabewerte bekommen keine festgelegte Typisierung Programmiersprachen:sh, cmd, JavaScript + + **Programmierprinziepien:** lassen sich durch 2 Wörter am besten beschreiben. SOLID and STUPID + _-Separation of Concern:_ + + •verschiedene Aufgaben einer Anwendung sollen hier in eigene Berreichen ausgelagert werden + + •Übersicht zu behalten + + •Teilösung besser verstehen + + _-Open/Closed Principle:_ + + •Quellcode soll vom Anfang ausgelegt sein + + •Veränderungen sollen vermieden werden + + _-Liskov Substitution:_ + + •Wenn was im Programm ausgetauscht wird soll das so passieren dass keine Funktionen verloren gehen + + _-Interface Segeration:_ + + •Schnittstellen solle einfach und überschaubar gehalten werden + + _-Dependency Inversion:_ + + •man sollte unabhängig sein + + •wenn man von einer Implementierung abhängig ist, kann man diese nicht mehr ohne weiteres variieren --> Somit immer Schnittstellen nutzen + ### Kritik + + ## SU 02 07.11.2023 + + ### Lernziel + + -Entwurfsmuster + + -Erzeugungsmuster + + -Strukturmuster + + -Verhaltensmuster + + Intergrated Developement Enviroment + + ### Erkentniss + In der heutigen Vorlesung wurde verdeutlicht, dass Entwurfsmuster bewährte Lösungsansätze für wiederkehrende Designprobleme in der Softwareentwicklung + bieten. Diese Muster ermöglichen eine effiziente Kommunikation zwischen Entwicklern, erleichtern die Dokumentation und tragen zur Verbesserung der Code-Wartbarkeit bei. +Die Vor- und Nachteile von Entwurfsmustern wurden erläutert, wobei die hohe Einstiegshürde und die Schwierigkeiten bei der Umsetzung im Code als Herausforderungen hervorgehoben wurden. + +In Bezug auf Integrated Development Environments (IDEs) wurde betont, wie wichtig diese Werkzeuge für Entwickler sind. IDEs bieten Funktionen wie Syntax-Hervorhebung, Navigation, +automatische Code-Formatierung, Fehlerlokalisation und automatisierte Refactoring-Tools, die die Effizienz und Qualität der Softwareentwicklung steigern. Die Wahl einer IDE sollte von +den individuellen Anforderungen und dem Entwicklungsfokus abhängen. + +Die Erkenntnis besteht darin, dass Entwurfsmuster und gut ausgewählte IDEs wertvolle Hilfsmittel in der Softwareentwicklung sind, +die dazu beitragen, Probleme zu lösen, die Kommunikation zu erleichtern und die Produktivität zu steigern. Die richtige Wahl und effektive Nutzung +dieser Werkzeuge sind entscheidend für die Entwicklung hochwertiger Software. + +### Wiederholung + +**Entwurfsmuster** Defenition: + +• sind Lösungensschablonen für haefig auftretende Entwurfsprobleme +_Vorteile:_ + +•erprobte Lösungen für haeufig auftretende Probleme + +•Vor-Nachteile sind bekannt + +•erleichtern die Dokumentation + +_Nachteile:_ + +•hohe Einstiegshuerde +•im Code schwer indentifizierbar + +_Anwendung_ + +•kommt zum Einsatz beim entwerfen eines Programmes + +-Makro-Design (Grobentwurf) +-Mirco-Disign (Beziehung der Codebestandteile zu einander) + +**Erzeugungsmuster** + +•Für builder geignet ,wenn in einer Klasse viele Objekte sind -> +Car.creatNew().withengine(v6).withNumberofSeats(5).build(); + +•Fabrikmethode (factory method): + +•eine Adstraktionsebene hoeher als factory method; verwendung: Tests + +•einzelstueck (singelton): von einer Klasse soll nur ein einziges mal ein Objekt erzeugt werden + +•Multition: kontrolliert die Anzahl erzeugter Objekte, um ressourcensparende Programme zu imitieren + +**Strukurmuster** + +•adapter Schnittstille fuer klassen + +•Nachrüstschnittstellemuster + +•Die Brueke + +•Dekorierer + +•Fassade: Wird in der Oberflaecheroptimierung eingesetzt + +•Fliegengewicht: So ähnlich wie eine Fassade + +**Verhaltensmuster + +•Accumulator + +•Beobachter: Eingaben des Benutzers wird anyalysiert + +•Interator + +•Kommando + +•Nullobjekt + +•Strategie + +### Intergrated Developement Environment + +Syntax highlightning + +Syntax-Vervollständigung + +Navigation + +Complie-Parameter + +Code automatisch Formatieren + +Fehler-Lokalisierung + +automatische Refactoring + +Debuggin + +**IDE** Wenn eine IDE speziel für eine Progammiersprache gemacht ist diese Optimal. Der Nachtteil hier ist aber, dass man für eine weiter Programmiersprache eine IDE benötigt. + +Bekannte IDEs: + +•Eclipse + +•InteliJ + +•Netbeans + +•VS Code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +