Design Richtlinien
Klassen, Entitäten, Generalisierung, Information Expert Bla bla bla bla
Entitäten/Value Objects/Aggregation Dateien Generalisierung
Schichtenarchitektur ein häufig angewandtes Strukturierungsprinzip für die Architektur von Softwaresystemen Aspekte einer höheren Schicht nur solche tieferer Schichten verwenden dürfen die Trennung von Fachkonzept, Benutzungsoberfläche und Datenhaltung
Schichtenarchitektur Präsentationsschicht Benutzerschnittstelle Businessschicht Controller Entities Repositories Datenhaltungsschicht Daten Laden und Speichern
Problemstellung Schreibe ein Programm, das alle Daten von Studenten verwaltet. (CRUD-Operationen) Feature F1. Studenten einfügen F2. Studenten lesen F3. Studenten finden F4. Studenten löschen
Entitäten Objekt!= Entität? (eigentlich nicht!) ein Objekt hat eine Reihe ihm eigener dynamischer Funktionen, Operationen und Methoden Entitäten sind Objekte mit einer eindeutigen Identifizierung verwechselter Identitäten führt zu Datenfälschung
Entitäten
Value Objects Objekte, die keine eindeutige Identifizierung haben zb: Farben/Adressen Es kommt immer auf den Anwendungsfall an!
Value Objects
Aggregation die Zusammensetzung einer Entität aus einer Menge von Value Objects Repositories? StudentRepository AddressRepository
Dateien und Python benötigt man die open()-funktion Mit der open-funktion erzeugt man ein Dateiobjekt und liefert eine Referenz auf dieses Objekt als Ergebniswert zurück open(filename,mode) Mode: "r", "w", "a"
Dateien und Python Methoden write (str) readline () read () close () Exception IOError
Pickle Den Funktionen, die Pickle anbietet, kann man wirklich nahezu jedes Objekt anbieten, Pickle kann es speichern.
Dynamische Typisierung bezeichnet den Umstand, dass Typprüfungen vorrangig zur Laufzeit eines Programms durchgeführt werden Duck-Typing der Typ eines Objektes nicht durch seine Klasse beschrieben wird, sondern durch das Vorhandensein bestimmter Methoden oder Attribute
Duck-Typing 'Wenn ich einen Vogel sehe, der wie eine Ente läuft, wie eine Ente schwimmt und wie eine Ente schnattert, dann nenne ich diesen Vogel eine Ente.'
Duck-Typing
Duck-Typing
Vererbung beschreibt eine Beziehung zwischen einer allgemeinen Klasse (Basisklasse) und einer speziellen Klasse die spezialisierte Klasse ist vollständig konsistent mit der Basisklasse, enthält aber zusätzliche Informationen (Attribute, Methoden, Assoziationen) ein Objekt der spezialisierten Klasse kann überall dort verwendet werden, wo ein Objekt der Basisklasse erlaubt ist
Reuse von Cod Reused Code bestehender Code wird als Blackbox in das neue Programm übernommen (unmodified reuse) Adapted Code bestehender Code wird adaptiert und angepasst, das bedeutet man muss den Code verstehen (modified reuse)
Vererbung Überladen vs Überschreiben
Vererbung Überschreiben beschreibt eine Technik in der objektorientierten Programmierung, die es einer abgeleiteten Klasse erlaubt, eine eigene Implementierung einer von der Basisklasse geerbten Methode zu definieren Überladen Es gibt kein Überladen von Funktionen und Methoden in Python
FileRepositories
Methoden überschreiben
Ausnahmebehandlung Eine Ausnahme ist eine Ausnahmesituation (Fehler), die sich während der Ausführung eines Programmes einstellt. Lässt man diese zu, so stürzt das Programm ab! Fängt man diese ab (Ausnahmebehandlung), läuft das Programm weiter!
Exceptions allgemeiner Mechanismus zur Fehlerbehandlung
Exceptions allgemeiner Mechanismus zur Fehlerbehandlung SyntaxError es ist ein syntaktischer Fehler im Quelltext IOError eine Datei existiert nicht, man darf nicht schreiben, die Platte ist voll IndexError in einer Sequenz gibt es das angeforderte Element nicht KeyError ein Mapping hat den angeforderten Schlüssel nicht ValueError eine Operation kann mit diesem Wert nicht durchgeführt werden
Exceptions Exceptions kann man behandeln was hinter try kommt, wird ausgeführt, bis ein Fehler auftritt was hinter except kommt, wird nur ausgeführt, wenn im try-statement eine Exception der angegebenen Art aufgetreten ist
Exceptions hinter except können ein oder mehrere Exception-Typen stehen
Exceptions sind teuer try/catch-blöcke verändern das Laufzeitverhalten nicht, solange keine Exceptions ausgelöst werden sind teuer, wenn die Exception ausgelöst wird
Ausnahmebehandlung
Ausnahmebehandlung
Ausnahmebehandlung
Schichtenarchitektur