Browse Source

Update Lerntagebuch.md

main
fdai7720 1 year ago
parent
commit
d11ee23345
  1. 286
      Lerntagebuch.md

286
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 ### Lernziel
-Allgemeine Prinzipien der Programmierung -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 ### 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 ### 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
Loading…
Cancel
Save