Advanced Programming Techniques - Cheatsheet.pdf

Advanced Programming Techniques - Cheatsheet
Advanced Programming Techniques - Cheatsheet Verwendung von abstrakten Klassen und Interfaces Definition: Verwendung von abstrakten Klassen und Interfaces zur Definition von Schnittstellen und gemeinsamen Verhalten in der objektorientierten Programmierung. Details: Abstrakte Klassen: Können nicht instanziiert werden, dienen als Basisklassen. Können abstrakte (ohne Implementierung) und nicht-abstra...

© StudySmarter 2024, all rights reserved.

Advanced Programming Techniques - Cheatsheet

Verwendung von abstrakten Klassen und Interfaces

Definition:

Verwendung von abstrakten Klassen und Interfaces zur Definition von Schnittstellen und gemeinsamen Verhalten in der objektorientierten Programmierung.

Details:

  • Abstrakte Klassen: Können nicht instanziiert werden, dienen als Basisklassen.
  • Können abstrakte (ohne Implementierung) und nicht-abstrakte Methoden enthalten.
  • Interfaces: Definieren nur Methoden und Konstanten, keine Implementationen.
  • Eine Klasse kann mehrere Interfaces implementieren, aber nur von einer abstrakten Klasse erben.
  • Nützlich zur Gewährleistung der Austauschbarkeit und Erweiterbarkeit von Komponenten.

Entwurfsmuster: Singleton, Factory, Adapter, Dekorator, Beobachter, Zustandsmuster

Definition:

Entwurfsmuster: Singleton, Factory, Adapter, Dekorator, Beobachter, Zustandsmuster

Details:

  • Singleton: Stellt sicher, dass eine Klasse nur eine Instanz hat und bietet einen globalen Zugriffspunkt darauf.
  • Factory: Erzeugungsmuster; eine Methode/Funktion zur Erstellung von Objekten ohne Angabe der konkreten Klasse.
  • Adapter: Strukturmuster; passt die Schnittstelle einer Klasse an die einer anderen Klasse an.
  • Dekorator: Fügt einer bestehenden Klasse zur Laufzeit Verantwortung hinzu, ohne ihre Struktur zu ändern.
  • Beobachter: Verhaltensmuster; ein Objekt (Beobachter) wird über Zustandsänderungen eines anderen Objekts (Subjekt) informiert.
  • Zustandsmuster: Verändert das Verhalten eines Objekts, wenn sich dessen Zustand ändert, und verwendet Zustandsklassen zur Durchführung zustandsabhängiger Operationen.

Lambda-Ausdrücke und Closures

Definition:

Anonyme Funktion, ohne Namen, direkt verwendet. Closure: Funktion mit Zugriff auf Umgebung, in der sie erstellt wurde.

Details:

  • Syntax Lambda-Ausdruck: (Parameter) => Ausdruck
  • Kann überall dort verwendet werden, wo eine Funktion benötigt wird
  • Häufig in höheren Funktionen
  • Closure speichert Variablen aus ihrer Erzeugungsumgebung
  • Beispiel Closure: Funktion innerhalb einer Funktion, Zugriff auf äußere Variablen

Höhere Ordnung Funktionen

Definition:

Funktionen, die andere Funktionen als Parameter nehmen oder zurückgeben.

Details:

  • Verwende Expressions wie map, filter und reduce.
  • Implementiere mit lambda-Funktionen für Kurzdefinitionen.
  • Erlauben funktionale Programmierungsparadigmen.
  • Syntaktisch abhängig von der Programmiersprache.
  • Ermöglicht flexiblere und wiederverwendbare Codesegmente.

Thread-Management und Synchronisationsmechanismen

Definition:

Verwaltung und Synchronisation von Threads, um parallele Ausführungen zu ermöglichen und Race Conditions zu vermeiden.

Details:

  • Thread-Erstellung: \texttt{std::thread} in C++ oder \texttt{Thread} API in Java
  • Synchronisationsmechanismen: Mutex (\texttt{std::mutex}), Semaphore (\texttt{std::counting\textunderscore semaphore}), Bedingungsvariablen (\texttt{std::condition\textunderscore variable})
  • Deadlocks vermeiden: Reihenfolge der Sperren beachten, Deadlock-Detection und -Prevention-Algorithmen
  • Wichtige Begriffe: Kontextwechsel, Thread-Pool, Thread-Sicherheit

Asynchrone Programmierung und Event-Loops

Definition:

Form der Programmierung zur parallelen Ausführung von Operationen ohne blockierende Wartezeiten.

Details:

  • Event-Loop: zentrale Komponente, die Ereignisse verwaltet und ausführt
  • Wichtig für I/O-intensive Anwendungen
  • Promise: Objekt zur Verwaltung asynchroner Ergebnisse
  • async/await: syntaktischer Zucker für Promises
  • Concurrency über Task-Scheduling realisiert
  • Nutzung in Sprachen wie JavaScript, Python (asyncio)

Client-Server-Architekturen und RPC

Definition:

Client-Server-Architekturen: ein Modell zur Verteilung von Aufgaben zwischen Service-Anbietern (Server) und Service-Nutzern (Client). Remote Procedure Calls (RPC): Methode zur Kommunikation zwischen Programmen auf verschiedenen Rechnern, Aufruf von Methoden als wären sie lokal.

Details:

  • Client-Server-Architekturen:
    • Trennung von Aufgaben und Zuständigkeiten
    • Clients stellen Anfragen, Server antworten
    • Zentrale Verwaltung und Wartung auf dem Server
  • Remote Procedure Calls (RPC):
    • Transparenter Methodenaufruf über Netzwerke
    • Nutzung von Stubs und Skeletons zur Abstraktion
    • Verarbeitung von Parametern und Rückgaben
    • Fehlerbehandlung (z.B. Netzwerkausfälle)

Verteilte Transaktionen und Konsistenzmodelle

Definition:

Verteilte Transaktionen gewährleisten atomare Operationen über mehrere verteilte Knoten, um Konsistenz zu bewahren. Konsistenzmodelle definieren Regeln für die Sichtbarkeit und Reihenfolge von Änderungen in einem verteilten System.

Details:

  • ACID-Eigenschaften: Atomarität, Konsistenz, Isolation, Dauerhaftigkeit
  • 2-Phasen-Commit: Vorbereitung und Commit/Abort
  • Konsistenzmodelle: Strikte, sequentielle, kausale Konsistenz
  • CAP-Theorem: Konsistenz, Verfügbarkeit, Partitionstoleranz (nur zwei von drei möglich)
  • Eventual Consistency: Änderungen werden irgendwann sichtbar
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