View
214
Download
0
Category
Preview:
Citation preview
EinführungRalf Lämmel AG Softwaresprachen
Objektorientierte Programmierung und
Modellierung
Mechanik dieser Lehrveranstaltung
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Was ist OOPM?
Einführungsveranstaltung Informatik
Besucher aus den Curricula Inf/WI/CV u.a.
Monströse Veranstaltung mit 11 ECTS
3
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Zentrale Herausforderungen(BlaBlaBla …)
Konstruktive, positive HerangehensweiseEigenverantwortlichkeit bei der StudienorganisationWertschätzung eines UniversitätsstudiumsKontinuierliche Arbeit über das SemesterMitarbeit im Team, in Übung, im PraktikumWenig Computerspiele o.ä. in den VorlesungenAusschöpfung der Kommunikationskanäle und Informationsquellen
4
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 5
Ausstieg aus dem (Informatik-) Studium ist kein Versagen!
(siehe Beispiel)
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Struktur OOPM
6
8 LP Präsenzstudium: 90 Stunden Eigenstudium: 150 Stunden
Vorlesung4 SWS
Übung2 SWS
Programmierpraktikum2 SWS
Präsenzstudium: 30 Stunden Eigenstudium: 60 Stunden
3 LP
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Kommunikationskanäle /Informationsquellen
Webseite: http://www.softlang.org/course:oopmKLIPS: Emails an Studierende und PrüfungsanmeldungVor Ort bei Vorlesung, Übung, PraktikumPrivate Facebook-GruppeEmails an Lehrkräfte bei persönlichen BelangenWenig empfohlenes Lehrbuch (siehe Webseite)Modulhandbuch und StudienordnungFachschaft, Prüfungsamt, Mentor, ...(Suchmaschinen, Wikipedia, Stackoverflow, …)
7
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
http://www.softlang.org/course:oopm
8
- Was ist das Team für den Kurs? - Was sind die Vorlesungstermine? - Was sind die Übungsaufgaben? - Was sind die Prüfungsmodalitäten? - ...
Inhalt dieser Lehrveranstaltung
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
OOPM Veranstaltung = eine Art von Einführung in die Informatik
OOPM
Objektorientierte
Programmierung und
Modellierung
10
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Was ist das Programmieren in OOPM?
11
Programmieren = Programmerstellung
Was ist also ein Programm?
Eine mögliche Definition: Ein Programm ist eine Repräsentation einer Eingabe/Ausgabe-Funktion, welche durch einen Rechner interpretiert werden kann.
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
ggT als eine E/A-Funktion in der Programmiersprache Java
12
public static int ggT(int x, int y) {while (x != y) {
if (x > y) x = x - y;
else y = y - x; } return x;}
Eingabe
Ausgabe
ggT(6,5) = 1 ggT(6,4) = 2 ggT(9,6) = 3
ggT(12,8) = 4 ...
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Vom Begriff des Programms zum Begriff der Sprache
Sprache = Menge von Programmen einschl. Interpretation
Maschinensprache: Programme sind direkt interpretierbar durch Hardware bzw. (virtuelle) Maschine.
Programmiersprache: Interpretation muss eine extra Abstraktionsstufe überbrücken -- etwa durch Kompilation.
13
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 14
Quelle: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
TIOBE Index für Oktober 2017October Headline: Swift is losing popularity
In the beginning of this year the programming language Swift peaked at a rating of 2.3% in the TIOBE index and even reached a top 10 position. But now it is back at position 16 and constantly declining month after month. Until recently it was quite common to program Android apps in Java and iOS apps in Swift/Objective-C. This is quite cumbersome because you have to maintain two code bases that are doing almost the same. So frameworks for mobile hybrid apps were developed and now that they have grown mature these are becoming very popular. Market leaders in this area are Microsoft's Xamarin (C#), Apache's Cordova (JavaScript) and Ionic (JavaScript). The consequences of all of this are that languages such as C# and JavaScript are gaining popularity at the cost of languages such as Java and Swift. The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. It is important to note that the TIOBE index is not about the best programming language or the language in which most lines of code have been written. The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system.
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 16
Der Familienbaum für Programmiersprachen
Quelle: http://thomasinterestingblog.wordpress.com/2011/11/26/the-family-tree-of-programming-languages/
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 17
Programmierparadigmen
• Prozedurale (imperative) Programmierung
• Funktionale Programmierung
• Logische Programmierung
• Objektorientierte Programmierung
• Multi-Paradigmen-Programmierung
Zugrundeliegende Prinzipien charakterisieren Programmierparadigmen.
Objekte
Mathematische Logik
Prozeduren und Variablen
Mathematische Funktionen
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Abstraktionsstufen bei Java
18
http://www.javaworld.com/javaworld
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
ggT in JVM (Java Virtual Machine)
19
public static int ggT(int, int); 0: iload_0 1: iload_1 2: if_icmpeq 24 5: iload_0 6: iload_1 7: if_icmple 17 10: iload_0 11: iload_1 12: isub 13: istore_0 14: goto 0
17: iload_1 18: iload_0 19: isub 20: istore_1 21: goto 0 24: iload_0 25: ireturn
kellerbasiert, nicht-strukturiert,
...
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
OO-Paradigma
Objekte = Datenkapseln = Zustand + Verhalten Objekte werden in Klassen klassifiziert.
Personen, Konten, Lehrveranstaltungen, ... Objekte können miteinander verbunden sein.Klassen können in Beziehungen stehen.
20
Nachricht
Daten
Methode
Methoden- auswahl
Methode
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Wo kommen die Programme her?
Probleme: Kontenverwaltung, Videokompression, ...
Programme: (Effektive) Problemlösungen
Spezifikationen: (“Gute”) Problembeschreibungen
Modelle: Abstraktionen von Problemlösungen u.a.
21
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Spezifikationen bzw.
ProblembeschreibungenEigenschaften
unzweideutig vollständigdetailliert
Beispiel: ggTEingabe: x, y positive ganze ZahlenAusgabe: z positive ganze ZahlSpezifikation über x, y, z: z ist ein Teiler von x und y, wobei für jeden anderen solchen Teiler z’ gellten muss dass z’ < z.
22
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Einschub: Begriff des Algorithmus (vergl. Programm)
Ein Algorithmus ist eine detaillierte, endliche Beschreibung zur schrittweisen Lösung eines Problems in endlich vielen Schritten.
Das ist in etwa ein abstrakterer Begriff für Programm; Algorithmen sind eventuell in Pseudocode notiert und Konventionen kommen zur Anwendung für die Definition von Ausführbarkeit.
Vergl.: Programme mögen eventuell ...... nicht terminieren,... das gegebene Problem nicht lösen,… ohne Problembeschreibung existieren.
23
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Algorithmus für “!” (Fakultät)
Eingabe: natürliche ZahlAusgabe: natürliche ZahlVerfahren:1. Weise Eingabe an Variable n zu.2. Initialisiere r mit 1.3. Wenn n = 0 dann gehe nach 7.4. Weise n * r an r zu.5. Dekrementiere n.6. Gehe nach 3.7. Gib r als Ausgabe aus.
24
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Algorithmische Lösbarkeit
Ein Problem ist algorithmisch lösbar, wenn ein Algorithmus existiert der für beliebige Eingaben die korrekte Ausgabe in endlicher Zeit liefert, vorausgesetzt man gibt dem Algorithmus genug Zeit und Speicher.
Ein Problem ist algorithmisch nicht lösbar, wenn kein solcher Algorithmus existiert. Z.B. das Halteproblem (Entscheidung über die Terminierung eines Programmes in einer Turing-vollständigen Sprache) ist algorithmisch nicht lösbar.
25
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Was machen wir mit komplexen Programmen?
Probleme: Kontenverwaltung, Videokompression, ...
Programme: (Effektive) Problemlösungen
Spezifikationen: (“Gute”) Problembeschreibungen
Modelle: Abstraktionen von Problemlösungen u.a.
26
OO ist ein Paradigma für Programme und Modelle. Damit ist OOPM erklärt!
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 27
Beispielproblem: Bankanwendung
Was sind die wesentlichen Arten von Objekten (Klassen) in einer Bankanwendung? Was sind die Beziehungen zwischen den Klassen?
Ein Modell abstrahiert von einer Problemlösung.
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Ein Klassendiagramm (UML-Modell) für eine Bankanwendung
28
Attribute eines Kontos
Verhalten eines Kontos
Eine Klasse für das grundlegende “Konzept”
eines Kontos
Eine Klasse für fortgeschrittene Konten
mit Kredit
Beziehung zwischen den Konzepten:
Klassenvererbung
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Beispielproblem: CAD (Computer Aided Design)
Formen (“shapes”)
Rechtecke
Kreise
Verhalten
Bewegen
Zeichnen
29
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Ein Klassendiagramm (UML-Modell) für die CAD-Anwendung
30
Mit Modellen verschwimmt (im positiven Sinne) die starre Grenze zwischen Problembeschreibungen und -lösungen.
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Sprache = Menge von Programmen oder Modellen (einschliesslich der Interpretation)
Maschinensprache: Programme sind direkt interpretierbar durch Hardware bzw. (virtuelle) Maschine.
Programmiersprache: Interpretation muss eine extra Abstraktionsstufe überbrücken, etwa durch Kompilation.
Modellierungsprache: Ausführbarkeit nicht mehr notwendig gegeben. Interpretation kann “anders” definiert sein.
31
Das Suchproblem
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Das Such-Problem
Eingabe: Ein Feld a mit n Elementen vom Typ t.Ein Wert x vom Typ t.
Ausgabe: Ein Boolescher Wert:
true: Es gibt ein 0 <= i < n so dass a[i] == xfalse: sonst
Alternative: Gib (ersten) Index i zurück.
33
Wir nehmen nichts weiter an als dass wir Gleichheit für t
bestimmen können.
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Einfache Suchalgorithmen
Dimensionen der Variationen:
Effizienz (Laufzeit-Komplexität)
Annahmen über Eigenschaften des Feldes
Annahmen über Operationen (Gleichheitstest, etc.)
34
Das Sortierproblem
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau 36
23 57
Eine unsortierte Liste
2 3 5 7
Die sortierte Liste
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Das Sortier-Problem
Eingabe: Ein Feld a mit n Elementen des Typs t
Annahme: Vergleichbarkeit (<,=) für Typ t
Ausgabe:
Ein Feld b
b ist sortiert.
b ist eine Permutation von a
37
Beachte: Dies ist eine Problembeschreibung (im
Gegensatz zu einer Lösung).
(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau
Das Problem des Testens auf Sortiertheit
Eingabe:
Ein Feld a mit n Elementen vom Typ t.
Ausgabe:
Ein Boolescher Wert:
true: a[i-1] <= a[i] für alle i mit 1 <= i < n
false: sonst
38
http://www.bambinipronto.com.au/
(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau
Das Problemdes Testens auf Permutation
Eingabe: Feld a und b gleicher Länge
Annahme: Gleicheitstest für Typ t verfügbar.
Ausgabe:
Gibt es eine 1:1 Abbildung von a auf b?
Ausgangs- und Bildelement sind jeweils gleich.
39
1
3
2
3
1
2
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Permutationstest
40
// Assume all elements of the arrays to be distinctpublic static boolean isPermutation(int[] a, int[] b) {
if (a.length != b.length)return false;
for (int x : a) {boolean found = false;for (int y : b)
if (x == y) {found = true;break;
}if (!found)
return false;}return true;
}
Dies kann wesentlich eleganter beschrieben werden wenn wir
Label-basiertes Break/Continue verwenden.
Vorbedingung
Siehe package algorithm.sorting
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Warum (Suchen und) Sortieren in OOPM?
Grundlegende Technik in der Programmierung
Hervorragende Eignung für weitere Themen:
Laufzeitanalyse (Laufzeitkomplexität)
Speicherplatzanalyse (Speicherkomplexität)
Iterative vs. rekursive Lösungen
Verifikation
41
(C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau
Zusammenfassung Mechanik dieser LehrveranstaltungInhalt dieser Lehrveranstaltung
Programmierung mit Java und eventuell PythonModellierung mit UML, EBNF, u.a.Wir werden auch spezifizieren, analysieren, verifizieren.
Ausblick SortierverfahrenStrukturierte ProgrammierungAnforderungsspezifikationAlgebraische SpezifikationObjektorientierung…
Recommended