Alles Flashcards

1
Q

Typsicherheit

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Syntax

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Objektorientierte Programmierung

Wertemanagement

A
  • Einfache Datentypen, zusammengesetzte Datentypen (Listen, Arrays) und komplexe Datentypen (Klassen)
  • Klasse kapselt interne Struktur (Attribute)
  • Zugriff nur auf Methoden
  • Übergabe mit by reference
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Objektorientierte Programmierung

Spezialität

Vererbung

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Funktionale Programmiersprachen

Modularisierung

A
  • 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>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Bibliotheken

A
  • Jemand anderes schreibt eine Bibliothek
  • Man selbst oder jemand anderes nutzt die Bibliothek
  • Nebeneffekt: Nebenläufige Ausgaben
  • Modulbibliotheken oft wichtiger, als korrekte Programmiersprache
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Parallele Programmierung und Objektorientierung

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Datenlebenszeit

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Mocks

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Datensichtbarkeit

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Von Vererbung hin zu Delegation

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Funktionale Programmiersprachen

Wertemanagement

A
  • Nur lokale Variablen und Parameter
  • Einfache Datentypen
  • Referenzen auf Datenwerte (auf Funktionen / Lambda-Ausdruck)
  • Felder und Strukturen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Aufbau Klassendiagramm

A

Klassenname

Attribute (+ Public, #Protected)

Methoden (- Private, ~Package)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Paradigmen der Einbettung in Laufzeitsysteme – Apps

Inversion of control

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Datenübergabe zwischen Modulen

A
  • By value
    • Übergibt eine Kopie des Übergabeparameters (primitive Datentypen)
  • By reference
    • Parameterübergabe gibt nicht den Inhalt der Variable, sondern die Adresse im Speicherbereich.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Kompilieren

A
  • Ü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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Datentypen

A
  • Definieren erlaubte Wertemengen und Operationen
  • Einfache Datentypen (Bsp.: int, char, double, bool)
  • Zusammengesetzte Datentypen (Bsp.: Listen, Arrays, struct)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Datenmanagement

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Prozedurale Programmiersprachen

Modularisierung

A
  • Prozedur modularisiert Programmcode
  • Datenwerte immer global erreichbar
  • Keine Übergabeparameter, da alles global
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Schema Anwendungsfalldiagramm

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Agile Softwareentwicklung

Wieso erst seit ein paar Jahren?

A
  • Es gab keine (Open Source)-Software zum automatischen Testen
  • Ständiges Testen war zu teuer, da nur manuell getestet wurde
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Schema Aktivitätsdiagramm

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Objektorientierte Programmierung

Spezialität

Polymorphismus

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Designpattern

A
  • Stellt dar, wie ein Teilobjekt in einer Software strukturiert wird.
  • Ist ein Vorschlag wie Funktionalität umgesetzt werden kann.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Objektorientierte Programmierung

Datensichtbarkeit

A
  • Kapselung der Daten um Sichtbarkeiten zu regeln
  • Klassen ohne direkten Bezug können keine Daten sehen
  • Bsp.: public, private, packagePrivate
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

UML (Unified Modelling Language) (allgemein)

A
  • 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?
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Prozedurale Programmiersprachen

Spezialität

A
  • Zustand in globalen Variablen
  • Zustandsmaschinen gut umsetzbar
  • Bei Ruhezustand wird Speicher auf HDD kopiert. Globale Variablen somit gesichert.
28
Q

Delegate

A
  • Delegate auf Seiten des Clients
  • Kümmert sich um den Ablauf, wie etwas umgesetzt wird
  • Übernimmt die Kommunikation zu dem richtigen Server
29
Q

Interpretieren

A
  • Programmcode wird auf der jeweiligen Maschine interpretiert
  • Interpreter arbeitet Anweisung für Anweisung ab und interpretiert diese
  • Sich selbst modifizierende Programme möglich
  • Programmcode direkt wiederverwendbar
30
Q

Lambdaausdrücke in Java

A

?

31
Q

Singelton

A
  • Idee: es gibt nur eine Instanz von einem Objekt. Von überall sichtbar.
  • Hohe Effizienz
  • Wie eine globale Variable
  • Gefährlich: Nebenläufigkeit
32
Q

Objektorientierte Programmierung

Destruktor

A
  • Spezielle Methode einer Klasse
  • Wird vom System (Garbage Collector) aufgerufen, wenn Objekt nicht mehr benötigt wird
  • Gibt Speicher wieder frei
33
Q

Paradigmen der Einbettung in Laufzeitsysteme – Apps

Bibliotheken

A
  • Ablaufkontrolle liegt vollständig im nutzenden Programmcode
  • Programmcode in Bibliothek kann im laufenden Betrieb das Programm nicht verändern
34
Q

Schema Sequenzdiagramm

A
35
Q

Facade

A
  • Facade auf Seiten des Servers
  • Nimmt Anfragen entgegen und leitet diese an richtigen Adressaten weiter
36
Q

Maschinenplattform / Virtuelle Maschine / Emulator

Virtuelle Maschine

A
  • Unterstützen beliebige Betriebssysteme/Maschinen
  • Abstrahiert darunterliegende konkrete Maschine
  • Quellcode wird für virtuelle Maschine entwickelt
  • Bsp.: Java
37
Q

Unit Tests

A
  • Programmierte Tests für „kleine“ Einheiten
  • Benötigt umliegende Klassen/Objekte für Tests
  • Im Bereich der Fachlogik
  • Bsp.: Objekt wird getestet, Versucht setter und getter auszuführen
38
Q

Schema MVC (Model View Controller)

A
39
Q

Kontrollstrukturen

A
  • Dienen der Steuerung des Ablaufs in einem Programm
  • Bsp.: if - then- else, goto, for, while
40
Q

Objektorientierte Programmierung

Konstruktor

A
  • Baut die interne Struktur beim initialisieren auf
  • Konstruktor ist eine spezielle Methode, die nicht explizit aufgerufen werden kann
  • Bsp.: Notwendigkeit, wenn Klasse dauerhaft Zugriff auf Datei haben muss.
41
Q

Objektorientierte Programmierung (Allgemein)

A
  • Vermischt Prinzipien von funktionaler und prozeduraler Programmierung
  • Für Objekt: definierte Menge an Speicherwerten und Methoden werden festgelegt
  • Kein Aufruf aus zentralem Ablauf, sondern durch Delegation in gegenseitiger Verschachtelung
42
Q

Maschinenplattform / Virtuelle Maschine / Emulator

Maschinenplattform

A
  • Maschinencode wird direkt auf einer Maschine ausgeführt, für die entwickelt wurde
  • Meist, wenn auf derselben (Maschinen-)Plattform entwickelt wurde
  • Bsp.: Windows 64 Bit Programm wurde unter Windows 64 Bit entwickelt
43
Q

Interfaces

A
  • Unterschied Klasse – Interface
    • Interface stellt keinen Speicherplatz zur Verfügung
    • Kennt keine Attribute
  • Unterschied Abstrakte Klasse – Interface
    • Abstrakte Klasse ist eine Klasse, kann aber nicht instanziiert werden
    • Methoden sind zulässig, auch abstrakte Methoden (ohne Implementierung)
44
Q

Refactoring

A
  • Bestehenden Quellcode jeden Tag verbessern
  • Objektorientierung dient der Kapselung von Einheiten Reichweite von Änderungen überschaubar
  • Geringe Auswirkungen auf das gesamte System, da Reichweite nur in direkter Nachbarschaft
  • Weitere Codeteile durch Unit Tests abgesichert
45
Q

Funktionale Programmiersprachen

Ableitungen

A
  • Eignet sich sehr gut für rekursive Datentypen
  • Gefahr von Speicherüberlauf (Stack overflow)
  • Kaum Bibliotheken für Benutzeroberflächen
  • Heutige Verwendung: Funktionale Programmteile in prozeduralen oder objektorientierten Programmiersprachen, wo sinnvoll. Bsp.: Lambda in Java)
46
Q

Charakterisierung von Programmiersprachen

Kompiliert / Interpretiert

A

Kompiliert

Vorteile

  • Liegt nach Kompilierung in maschinenlesbarem Format vor. -> schneller, benötigt weniger Speicher
  • Kunde hat keinen Zugriff auf Code (Copyright)

Nachteile

  • benötigt Kompiler
  • Maschinencode kann nur Maschine lesen
  • Nur für die kompilierte Zielplattform

Interpretiert

Vorteile

  • Durch minifier wird Code kleiner
  • Durch Obfusikation wird Code unleserlich gemacht
  • Man kann zur Laufzeit Quelltext verändern

Nachteile

  • Benötigt Interpreter
  • Wird zur Laufzeit interpretiert
  • In der Regel langsamer
  • Quellcode liegt dem Kunden vor
47
Q

Prozedurale Programmiersprachen

Wertemanagement

A
  • Alle Datenwerte sind global erreichbar
  • Trennung in Bereich Daten und operierende Prozeduren
  • Datenübergabe by reference nicht notwendig
  • Einfache Datentypen
  • Zusammengesetzte Datentypen
48
Q

Schema Observer (Klassendiagramm)

A
49
Q

Semantik

A
  • Bezieht sich auf den Sinngehalt
  • Ist nicht immer eindeutig (Bsp.: 4711 oder 0815, Zahlen oder andere Bedeutung?)
  • Man sollte sich auf eine Sinnhaftigkeit einigen (Bsp.: Maurer interpretiert Plan von Architekten)
50
Q

MVVM (Model View ViewModel)

A
  • Nutzt funktionale Trennung des MVC und Datenbindung, um lose Kollung zu erreichen
  • Model: Datenzugriffsschicht für Inhalte (Anzeige/Manipulation)
  • View: GUI Elemente, leitet Eingaben an ViewModel weiter
  • ViewModel: UI-Logik und Bindeglied zwischen View und Model. Darf keine Kenntnis der View besitzen.
51
Q

Annotationen

A
  • PO(J)O
  • Technik -> Domain
  • Aspektorientierung
52
Q

Objektorientierte Programmierung

Modularisierung

A
  • Klassen besitzen Attribute und Methoden
  • Eine Instanz des Datentyps wird als Objekt bezeichnet
  • Nach Aufruf des Konstruktors wird ein neues Objekt im Speicher angelegt
  • Objekte delegieren gegenseitig
53
Q

Dreischichtarchitektur

A

Präsentationsschicht

  • Bsp.: Windows Fenster in Windowssystemumgebung
  • Kennt Persistenzschicht nicht

Businesslogik

  • Beschreibt mein Geschäft
  • Fachlogik

Persistenzschicht

  • Kommuniziert mit Datenbank
54
Q

Paradigmen der Einbettung in Laufzeitsysteme – Apps

Unterschied Application / App

A
  • Application ist eine Standalone Anwendung, nahe am Rechner mit eigener Methode
  • App ist eine Anwendung in einer Laufzeitumgebung. Kleinere Anwendungen nutzen Funktionen von Ökosystem
55
Q

Paradigmen der Einbettung in Laufzeitsysteme – Apps

Frameworks

A
  • Komplexe Strukturen werden durch den Programmcode genutzt
  • Ablaufkontrolle weitreichend beim Programmcode
  • Beinhaltet Objekte und Klassen
  • Holt Bibliothek von Klassen, die miteinander etwas zu tun haben
  • Baut Speicher und Funktion auf
56
Q

Paradigmen der Einbettung in Laufzeitsysteme – Apps

Laufzeitsysteme

A
  • Programmcode klinkt sich als Gastsystem in laufendes LZS ein
  • Ablaufkontrolle weitreichend beim LZS (LZS kann auf meine App Einfluss nehmen)
  • Lifecycle für Gastsystem ist zu beachten (Wo/wann steige ich in mein Programm ein? main Methode)
  • Bsp.: Lifecycle „Servlet“ (Java Umfeld für WebServices Anfragen)
57
Q

Paradigmen der Einbettung in Laufzeitsysteme – Apps

Context and Dependency Injection

A
  • Designpattern
  • CDI bietet Möglichkeit, zur Laufzeit von einer Klasse aus, abhängige Klassen in eine nutzende Klasse von außen zu injizieren
  • Vorteil: Entkopplung
  • Constructor Injektion
  • Setter Injection
  • Interface Injection (Über Annotation. Biete Möglichkeit um zu schauen, was verwendet werden soll. Bsp.: Interface, welcher Logger benutzt werden soll)
  • Problem: Codenavigation in IDE´s (Wegen Rückverfolgbarkeit nicht zurückspringen)
58
Q

Prozedurale Programmiersprachen

Ableitungen

A
  • Hoher Abstimmungsaufwand bei verteilten Teams
  • Hohe Komplexität und wenig Klarheit für den Einzelnen
  • Never change a running system –> Seiteneffekte unbekannt
  • Wird genutzt für arbeiten „am System“ (direkt in den Speicher)
59
Q

Maschinenplattform / Virtuelle Maschine / Emulator

Emulator

A
  • Zielmaschine wird auf Entwicklungsmaschine emuliert
  • Ähnlich zu Virtuellen Maschine
  • existiert jedoch in tatsächlicher Hardwareform
  • Maschinencode wird langsamer abgearbeitet als bei virtuellen Maschinen
60
Q

Domain Driven Design

A
  • Schwerpunkt des Softwaredesigns liegt auf Fachlichkeit und Fachlogik
  • Entwurf komplexer fachlicher Zusammenhänge sollte auf Modell dem Fachmodell basieren
  • Bsp.: Designpattern „ActiveRecord“
61
Q

Programmieren

A
  • Einzelne Bereiche werden in Module/Prozeduren/Funktionen/Methoden zerteilt
  • Schritte: Programmieren, Definieren eines Moduls, Benutzen des Moduls, (Deklarieren [beschreibt Datentyp])
  • (Programm-)Einstiegspunkte sind zu klären
62
Q

Closures in JavaScript

A
  • Eine Closure (oder Funktionsabschluss) ist eine anonyme Funktion, die Zugriffe auf ihren Erstellungskontext enthält. Beim Aufruf greift die Funktion dann auf diesen Erstellungskontext zu. Dieser Kontext (Speicherbereich, Zustand) ist außerhalb der Funktion nicht referenzierbar, d. h. nicht sichtbar.
  • Eine Closure beinhaltet zugleich Referenz auf die Funktion und den von ihr verwendeten Teil des Erstellungskontexts – die Funktion und die zugehörige Speicherstruktur sind in einer Referenz untrennbar abgeschlossen (closed term). Es ist vergleichbar mit einem Objekt mit „private“-Attributen und „public“- Methode(n): es enthält eine (implizite) Identität, einen Zustand und ein Verhalten.
  • In der Programmiersprachen-Syntax wird dies oft durch zwei verschachtelte Funktionen erreicht – die Hauptfunktion wird von einer weiteren Funktion eingeschlossen („abgeschlossen“). Diese „Abschluss“-Funktion enthält die benötigte Speicherstruktur (siehe Beispiele unten) und liefert die Referenz – die Closure.
63
Q

Verteile Objekte

A
  • Stub (Zigarrenstummel)
  • Skeleton (hat sich nicht durchgesetzt)
  • Best practise
    • Trennung von Datenverteilung & Methodenverteilung
64
Q

Funktionale Programmiersprachen

Spezialität

A
  • Vorteile
    • Explizite Datenweitergabe seltenes Auftreten von unerwarteten Seiteneffekten. Kapselung der Daten ist stark.
    • Rekursion erlaubt natürlichen Umgang mit rekursiven Datenstrukturen
  • Mit Rekursion wird Gedanke der Delegation gelebt
    • Prüfen ob Funktion etwas erledigen kann
    • Wenn ja, dann wird Funktion ausgeführt
    • Wenn nicht, dann wird mit anderen Startbedingungen delegiert
65
Q

Objektorientierte Programmierung

Ableitungen

A
  • Sichtweise entspricht unserer menschlichen Erlebniswelt
  • OOA (Objekt orientierte Analyse) / OOD (Objekt orientiertes Design)[als Ergänzung zur OOA]