Alles Flashcards
Typsicherheit
- Es gibt Programmiersprachen mit oder ohne Typsicherheit
- Bei Variablen-, Funktions-, Methoden- oder Prozedurdeklaration wird der (Daten)Typ festgelegt
- Kompiler/Interpreter weiß, ob Anweisungen gültig sind
- Mehr Wartbarkeit bei größeren Programmen
- Jedoch weniger Flexibilität
Syntax
- Jede Programmiersprache benötigt eine Syntax
- Syntax besteht aus
- Wortschatz. (Bsp. Wortschatz für Addition: (1, 2, 3, 4, 5, 6, 7, 8, 9, 0, +, = )
- Grammatik. (Bsp. Syntax für Addition: oder beides syntaktisch korrekt)
- Backus Naur Form (Möglichkeit, Wortschatz und Grammatik zu schreiben)
Objektorientierte Programmierung
Wertemanagement
- Einfache Datentypen, zusammengesetzte Datentypen (Listen, Arrays) und komplexe Datentypen (Klassen)
- Klasse kapselt interne Struktur (Attribute)
- Zugriff nur auf Methoden
- Übergabe mit by reference
Objektorientierte Programmierung
Spezialität
Vererbung
- Hohe Wiederverwendbarkeit durch Vererbung
- Geerbte Methoden lassen sich anpassen/ersetzen [Bsp.: super.getName();]
- Vererbung ist auch mehrstufig erlaubt
- Teilweise auch Multiple Vererbung möglich (je nach Sprache)
Funktionale Programmiersprachen
Modularisierung
- Funktionale Programmiersprachen kennen nur Funktionen zur Modularisierung
- Funktionen besitzen einen Rückgabe Datentyp und eine(n) Eingabeparameter
- <datentyp> <name> (<datentyp> <name>, ...) { }</name></datentyp></name></datentyp>
Bibliotheken
- Jemand anderes schreibt eine Bibliothek
- Man selbst oder jemand anderes nutzt die Bibliothek
- Nebeneffekt: Nebenläufige Ausgaben
- Modulbibliotheken oft wichtiger, als korrekte Programmiersprache
Parallele Programmierung und Objektorientierung
- Was ist parallel?
- Unterscheidung zwischen Programmablauf und Objektstruktur schwierig
- Reentranter Code (Selber Code wird von zwei Threads [nacheinander] durchlaufen)
- Exklusiven Zugriff sichern (Globaler Speicher und Attribute)
- Asynchrone Kommunikation
- Callback
Datenlebenszeit
- Lokale Variablen sind solange gültig, bis Block verlassen wird
- Globale Variablen sind bis Ende der Laufzeit gültig
- Bei automatischer Speicherverwaltung werden Referenzen gezählt, wie oft Variablen auf Speicher zeigen
- Sind keine Referenzen vorhanden, wird Speicher durch Garbage Collector freigegeben
- Bei Laufzeitumgebungen sind mögliche Lebenszeiten: Application, Session, Request, View
Mocks
- Sind primitive Testobjekte für Unit Tests
- Schnittstelle zu Umgebung von Teilsystemen von objektorientierten Softwaresystemen ermittelbar
- Simulation der Schnittstellen durch geeignete Objekte
- Austausch der Schnittstellenobjekte durch Factories oder Injection
- Folgen dem Delegate Pattern, Factory Pattern oder Injection
Datensichtbarkeit
- Legt Sichtbarkeit von Variablen, Funktionen, Methoden oder Prozeduren fest
- Globale Sichtbarkeit = sichtbar von jeder Stelle im Programm
- Lokale Sichtbarkeit = sichtbar nur vom aktuellen Modul
- Bps.: public, private, protected, package private, friend
Von Vererbung hin zu Delegation
- Sicht als modellierte Realität (Vererbung denkbar)
- Sicht als Datentyp (Datenobjekt als Datentyp)
- Sicht als Schnittstellenprovider (Funktionalität in Klasse für saubere Schnittstelle)
- Sicht als Nachrichtennetz (Methodenaufruf ist eine Nachricht)
Funktionale Programmiersprachen
Wertemanagement
- Nur lokale Variablen und Parameter
- Einfache Datentypen
- Referenzen auf Datenwerte (auf Funktionen / Lambda-Ausdruck)
- Felder und Strukturen
Aufbau Klassendiagramm
Klassenname
Attribute (+ Public, #Protected)
Methoden (- Private, ~Package)
Paradigmen der Einbettung in Laufzeitsysteme – Apps
Inversion of control
- Designpattern (Kann für Architektur verwendet werden)
- Hollywood Prinzip: „Don´t call us, we call you“
- Zugriff auf inhaltliche Dinge nicht erlaubt
- Sag mir deine Update-Methode, dann rufe ich diese auf, wenn erforderlich
- Grundprinzip: Observer Pattern
- Pattern muss nicht innerhalb der Programmiersprache gelöst werden
- Gutes Beispiel dafür, dass Design Pattern als Sprache gesehen, neue Möglichkeiten eröffnen
- Bsp.: Nummer einer Dame geben und auf Anruf warten
Datenübergabe zwischen Modulen
- By value
- Übergibt eine Kopie des Übergabeparameters (primitive Datentypen)
- By reference
- Parameterübergabe gibt nicht den Inhalt der Variable, sondern die Adresse im Speicherbereich.
Kompilieren
- Übersetzer/Kompiler erhält Quellcode
- Quellcode wird einmalig in Maschinensprache übersetzt
- Ausführbares Programm entsteht
- Danach kein Kompiler nötig (zur normalen Programmnutzung)
- Crosscompiler unterstützen mehrere Plattformarten
Datentypen
- Definieren erlaubte Wertemengen und Operationen
- Einfache Datentypen (Bsp.: int, char, double, bool)
- Zusammengesetzte Datentypen (Bsp.: Listen, Arrays, struct)
Datenmanagement
- Informatik repräsentiert eine Information in eine andere Repräsentation
- Bestandteil von Information sind Daten, die mit Programmen umgeformt werden
- (weitere) Kategorisierung von Programmiersprachen:
- Datensichtbarkeit
- Datenübergabe
- Datenlebenszeit
Prozedurale Programmiersprachen
Modularisierung
- Prozedur modularisiert Programmcode
- Datenwerte immer global erreichbar
- Keine Übergabeparameter, da alles global
Schema Anwendungsfalldiagramm
Agile Softwareentwicklung
Wieso erst seit ein paar Jahren?
- Es gab keine (Open Source)-Software zum automatischen Testen
- Ständiges Testen war zu teuer, da nur manuell getestet wurde
Schema Aktivitätsdiagramm
Objektorientierte Programmierung
Spezialität
Polymorphismus
- Betrachtet die Benutzung eines Objekts und der Attribute und Methoden der Klasse
- Nimmt, abhängig von der Verwendung, unterschiedliche Datentypen an (Überladung)
- Tritt in Verbindung mit Vererbung und Schnittstellen auf
- Erst bei Laufzeit klar, welche Methode tatsächlich aufgerufen wird
Designpattern
- Stellt dar, wie ein Teilobjekt in einer Software strukturiert wird.
- Ist ein Vorschlag wie Funktionalität umgesetzt werden kann.
Objektorientierte Programmierung
Datensichtbarkeit
- Kapselung der Daten um Sichtbarkeiten zu regeln
- Klassen ohne direkten Bezug können keine Daten sehen
- Bsp.: public, private, packagePrivate
UML (Unified Modelling Language) (allgemein)
- Unified Modelling Language (Vereinheitliche Modellierungs Sprache)
- Sammlung von Diagrammen
- Mehrere Diagramme, kein zwingender Zusammenhang
- Darstellung von Struktur und Verhalten
- Struktur: Definition von Klassen
- Verhalten: Wie soll das Programm reagieren?