Advanced Design and Programming - Cheatsheet.pdf

Advanced Design and Programming - Cheatsheet
Advanced Design and Programming - Cheatsheet Erzeugungsmuster: Singleton, Factory Definition: Erzeugungsmuster verwalten die Instanziierung von Objekten, Singleton stellt sicher, dass eine Klasse nur eine Instanz hat, Factory erzeugt Objekte auf Basis von Parametern oder Eingaben. Details: Singleton: Nur eine Instaz einer Klasse, oft für Konfigurationsklassen genutzt. Factory Method: Erzeugt Objek...

© StudySmarter 2024, all rights reserved.

Advanced Design and Programming - Cheatsheet

Erzeugungsmuster: Singleton, Factory

Definition:

Erzeugungsmuster verwalten die Instanziierung von Objekten, Singleton stellt sicher, dass eine Klasse nur eine Instanz hat, Factory erzeugt Objekte auf Basis von Parametern oder Eingaben.

Details:

  • Singleton: Nur eine Instaz einer Klasse, oft für Konfigurationsklassen genutzt.
  • Factory Method: Erzeugt Objekte durch Aufruf einer Methode, ermöglicht flexible und erweiterbare Objektgenerierung.
  • Abstract Factory: Bietet eine Schnittstelle zur Erstellung verwandter Objekte, ohne deren konkrete Klassen zu spezifizieren.
  • Vorteile: Erhöht Modularität und unterstützt die Trennung von Implementierung und Nutzung.
  • Nachteile: Kann zu schwer verständlichem Code führen, da die Instanziierung nicht explizit erscheint.

Verhaltensmuster: Observer

Definition:

Ein Verhaltensmuster, bei dem ein Objekt (Subject) eine Liste von abhängigen Objekten (Observer) verwaltet und diese über Zustandsänderungen benachrichtigt.

Details:

  • Subject: Verwaltet Observer und benachrichtigt sie bei Zustandsänderungen.
  • Observer: Wird über Zustandsänderungen im Subject informiert und reagiert darauf.
  • Methoden: \texttt{attach()}, \texttt{detach()}, \texttt{notify()}.
  • Schnittstellen: \texttt{Subject}, \texttt{Observer}.
  • Vorteile: Entkopplung von Subject und Observer, einfache Erweiterbarkeit.
  • Nachteile: Komplexität kann bei vielen Observern steigen, Performance-Overhead möglich.

Fortgeschrittene OOP-Konzepte

Definition:

Fortgeschrittene OOP-Konzepte befassen sich mit komplexeren Aspekten und Techniken der objektorientierten Programmierung, die über die Grundlagen hinausgehen.

Details:

  • Vererbung: Hierarchie, Mehrfachvererbung, Diamond Problem
  • Abstrakte Klassen: Definition, Unterschiede zu Interfaces
  • Interfaces: Implementierung, Bedeutung, Vergleich mit abstrakten Klassen
  • Polymorphie: Dynamisches Binden, Überschreiben vs. Überladen
  • Design Patterns: Singleton, Factory, Observer, MVC
  • Exception Handling in OOP: Ausnahmebehandlung und Fehlerfallmanagement
  • Reflection: Laufzeit-Typüberprüfung und -manipulation
  • Generics: Typsicherheit, Anwendung in Sammlungen
  • Solid Principles: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion

Generics und Lambda-Ausdrücke

Definition:

Generics ermöglichen es, Klassen, Schnittstellen und Methoden mit Typenparametern zu definieren. Lambda-Ausdrücke ermöglichen es, anonyme Funktionen zu definieren und zu verwenden.

Details:

  • Generics erhöhen die Typsicherheit und Wiederverwendbarkeit von Code.
  • Syntax Generics: Klasse oder Methode(T param)
  • Beispiel Generics: List stringList = new ArrayList<>();
  • Lambda-Ausdrücke bieten eine prägnante Syntax für Implementierungen funktionaler Schnittstellen.
  • Syntax Lambda: (Parameter) -> Ausdruck oder (Parameter) -> {Anweisung}
  • Beispiel Lambda: list.sort((a, b) -> a.compareTo(b));

Parallele Programmierung: Synchronisationstechniken

Definition:

Techniken, um die Koordination und Konsistenz von parallel laufenden Prozessen oder Threads sicherzustellen.

Details:

  • Mutex (Mutual Exclusion): Verhindert gleichzeitigen Zugriff auf eine Ressource
  • Semaphore: Zählt verfügbare Ressourcen, kontrolliert Zugriff mehrerer Konsumenten
  • Spinlock: Aktives Warten auf die Freigabe einer Ressource, oft in Multithread-Systemen genutzt
  • Barrier: Synchronisationspunkt, an dem alle Threads warten, bis alle den Punkt erreicht haben
  • Condition Variable: Wartet auf eine bestimmte Bedingung oder signalisiert diese
  • Lock-free and Wait-free Algorithms: Techniken, bei denen keine Locks verwendet werden, um Deadlocks zu vermeiden
  • Atomic Operations: Unteilbare Operationen, die keine Zwischenzustände erlauben

Schichtenarchitektur vs. Mikroservices

Definition:

Schichtenarchitektur: Eine Softwarearchitektur, bei der das System in verschiedene Schichten unterteilt ist, wobei jede Schicht eine bestimmte Funktion erfüllt. Mikroservices: Eine Architekturmethode, bei der eine Anwendung aus kleinen, unabhängigen Diensten besteht, die jeweils eine spezifische geschäftliche Funktion haben.

Details:

  • Schichtenarchitektur: Aufteilung in Präsentationsschicht, Logikschicht, Datenschicht.
  • Mikroservices: Unabhängige Bereitstellung, Skalierbarkeit, Nutzung verschiedener Technologien pro Service.
  • Schichten bieten Modularität, klare Zuständigkeiten.
  • Mikroservices erfordern aufwendigere Kommunikation, Datenmanagement.
  • Schichtenarchitektur einfacher zu implementieren, Mikroservices bieten bessere Skalierbarkeit.

Automatisierte Testframeworks

Definition:

Automatisierte Testframeworks ermöglichen die automatisierte Ausführung von Unit-, Integrations-, System- und Abnahmetests.

Details:

  • Ermöglichen schnelle Rückmeldung über Codequalität und Funktionalität.
  • Nutzung von Assertions zur Validierung der Testergebnisse.
  • Testabdeckung erhöht den Software-Vertrauenslevel.
  • Beliebte Frameworks: JUnit (Java), pytest (Python), NUnit (.NET).
  • Continuous Integration/Continuous Deployment (CI/CD) Integration.
  • \textit{Test Driven Development} (TDD) unterstützend.
  • Reduzierung menschlicher Fehler und Zeitaufwand.

Refactoring: Code-Smells und Tools

Definition:

Verbesserung des bestehenden Codes ohne dessen Funktionalität zu ändern. Identifizierung und Behebung von Code-Smells.

Details:

  • Code-Smells: Anzeichen für potenziell schlechte Codequalität. Beispiele: Duplizierter Code, lange Methoden, große Klassen, Switch Anweisungen.
  • Refaktorisierungstechniken: Extrahiere Methode, Variablennamen umbenennen, Klassen aufteilen, Parameterlisten reduzieren.
  • Tools: IntelliJ IDEA, Eclipse, Visual Studio, SonarQube zur Erkennung von Code-Smells und automatischen Refaktorisierungen.
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden