Objektorientierte. Programmierung und Modellierung. Einführung. Ralf Lämmel AG Softwaresprachen

Ähnliche Dokumente
Programmierung mit Feldern OOPM, Ralf Lämmel

Algorithmen und Datenstrukturen

Einführung in die Informatik I (autip)

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

Vorlesung Programmieren

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

Rekursive Funktionen

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Einführung in die Informatik 1

`# Online Read Programmieren: Software entwickeln fr Einsteiger: Lernen Sie die Grundlagen von Java, SQL und C++ (Codierung,... download books from

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4.

Übungsblatt 7. Thema: Sortieren, Objektorientierung

Die Programmiersprache C Eine Einführung

Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1

11. Rekursion, Komplexität von Algorithmen

Probeklausur: Programmierung WS04/05

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Algorithmen und Datenstrukturen

Exercise (Part II) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)

Funktionale Konzepte in objektorientierten Sprachen LAMBDAS / CLOSURES

Kasparov versus Deep Blue. Till Tantau. Institut für Theoretische Informatik Universität zu Lübeck

Software-Praktikum. Überblick und Zeitplan

Einführung in die Programmierung mit VBA

Level 1 German, 2014

Einführung in die Programmierung mit Java

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Programmier-Befehle - Woche 10

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung

10. Programmierungs-Phase: Objektorientierung Software Engineering

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

VBA-Programmierung: Zusammenfassung

Modellierung und Programmierung 1

Inhaltsverzeichnis. Was ist Informatik? 5. Programmierung 13. Einleitung. 1 Informatik Was ist Informatik? Teilgebiete der Informatik 8

Grundlagen von C# - 1

iid software tools QuickStartGuide iid USB base driver installation

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

0. Einführung & Motivation

II.3.1 Rekursive Algorithmen - 1 -

Algorithmen und Datenstrukturen

Vorlesung Programmieren

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Übersicht. Vorstellung des OO-Paradigmas

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Einführung in die Informatik

Einführung in die Informatik 2

(+ Online Read Programmieren: Software entwickeln fr Einsteiger: Lernen Sie die Grundlagen von Java, SQL und C++ (Codierung,... best free online book

Welche Informatik-Kenntnisse bringen Sie mit?

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -

Level 2 German, 2013

Teil 2.2: Lernen formaler Sprachen: Hypothesenräume

Informatik. Studiengang Chemische Technologie. Michael Roth Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013.

Praktikum Compilerbau Sitzung 9 Java Bytecode

Dynamische Programmiersprachen. David Schneider STUPS

Datenstrukturen und Algorithmen

There are 10 weeks this summer vacation the weeks beginning: June 23, June 30, July 7, July 14, July 21, Jul 28, Aug 4, Aug 11, Aug 18, Aug 25

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB

Abstrakte Datentypen.

Software. 7. Methoden. Software kann sehr komplex sein... Schwerpunkte. Grundproblem der SW-Entwicklung: Komplexität

Grundlagen der Informatik I (Studiengang Medieninformatik)

Algorithmen und Datenstrukturen

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion

Lösungsvorschlag Serie 2 Rekursion

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Einführung in die Informatik I Informatik I/A

Level 1 German, 2012

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

HTW IMI-B Informatik 1 Kara Worksheet 2 Seite: 1. Variables to store a true/false state: boolean movingright = true;

Vom Problem über den Algorithmus zum Programm

Funktionale Programmierung (in Clojure)

Einführung in Eclipse und Java

Einführung in die Informatik Turing Machines

Repetitorium Informatik (Java)

NVR Mobile Viewer for iphone/ipad/ipod Touch

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Einführung in die Programmierung

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Komplexität von Algorithmen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

Grundlagen der Programmierung

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Aufgabenblatt 4 IT-Security Angewandte Informatik WS 2016/17

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Bemerkung: Termine und Orte für die einzelnen Lehrveranstaltungen sind dem Stundenplan zu entnehmen.

HUMANGENETIK IN DER WELT VON HEUTE: 12 SALZBURGER VORLESUNGEN (GERMAN EDITION) BY FRIEDRICH VOGEL

^~ Read Angebotsbeschreibungen fr Online-Einkaufsportale zur automatischen Klassifizierung und Informationsextraktion... free books to read online no

Werkzeuge zur Programmentwicklung

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Level 1 German, 2016

Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015

Einführung in die Programmierung

Transkript:

Objektorientierte Einführung Ralf Lämmel AG Softwaresprachen Programmierung und Modellierung

Mechanik dieser Lehrveranstaltung

3 Was ist OOPM? Einführungsveranstaltung Informatik Besucher aus den Curricula Inf/WI/CV u.a. Monströse Veranstaltung mit 11 ECTS

4 Zentrale Herausforderungen (BlaBlaBla ) Konstruktive, positive Herangehensweise Eigenverantwortlichkeit bei der Studienorganisation Wertschätzung eines Universitätsstudiums Kontinuierliche Arbeit über das Semester Mitarbeit im Team, in Übung, im Praktikum Wenig Computerspiele o.ä. in den Vorlesungen Ausschöpfung der Kommunikationskanäle und Informationsquellen

5 Ausstieg aus dem (Informatik-) Studium ist kein Versagen! (siehe Beispiel)

6 Struktur OOPM Vorlesung 4 SWS 8 LP Präsenzstudium: 90 Stunden Eigenstudium: 150 Stunden Übung 2 SWS Programmierpraktikum 2 SWS Präsenzstudium: 30 Stunden Eigenstudium: 60 Stunden 3 LP

7 Kommunikationskanäle / Informationsquellen Webseite: http://www.softlang.org/course:oopm KLIPS: Emails an Studierende und Prüfungsanmeldung Vor Ort bei Vorlesung, Übung, Praktikum Private Facebook-Gruppe Emails an Lehrkräfte bei persönlichen Belangen Wenig empfohlenes Lehrbuch (siehe Webseite) Modulhandbuch und Studienordnung Fachschaft, Prüfungsamt, Mentor,... (Suchmaschinen, Wikipedia, Stackoverflow, )

8 http://www.softlang.org/course:oopm - 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

10 OOPM Veranstaltung = eine Art von Einführung in die Informatik OOPM Objektorientierte Programmierung und Modellierung

11 Was ist das Programmieren in OOPM? 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.

12 ggt als eine E/A-Funktion in der Programmiersprache Java Eingabe public static int ggt(int x, int y) { while (x!= y) { if (x > y) x = x - y; else y = y - x; } return x; } Ausgabe ggt(6,5) = 1 ggt(6,4) = 2 ggt(9,6) = 3 ggt(12,8) = 4...

13 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.

14 Quelle: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html TIOBE Index für Oktober 2017 October 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.

16 Quelle: http://thomasinterestingblog.wordpress.com/2011/11/26/the-family-tree-of-programming-languages/ Der Familienbaum für Programmiersprachen

17 Programmierparadigmen Prozedurale (imperative) Programmierung Prozeduren und Variablen Funktionale Programmierung Logische Programmierung Objektorientierte Programmierung Mathematische Funktionen Mathematische Logik Objekte Multi-Paradigmen-Programmierung Zugrundeliegende Prinzipien charakterisieren Programmierparadigmen.

18 Abstraktionsstufen bei Java http://www.javaworld.com/javaworld

19 ggt in JVM (Java Virtual Machine) 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, nichtstrukturiert,...

20 OO-Paradigma Methode Daten Methode Objekte = Datenkapseln = Zustand + Verhalten Nachricht Objekte werden in Klassen klassifiziert. Personen, Konten, Lehrveranstaltungen,... Objekte können miteinander verbunden sein. Klassen können in Beziehungen stehen. Methodenauswahl

21 Wo kommen die Programme her? Probleme: Kontenverwaltung, Videokompression,... Programme: (Effektive) Problemlösungen Spezifikationen: ( Gute ) Problembeschreibungen Modelle: Abstraktionen von Problemlösungen u.a.

22 Eigenschaften unzweideutig vollständig detailliert Beispiel: ggt Spezifikationen bzw. Problembeschreibungen Eingabe: x, y positive ganze Zahlen Ausgabe: z positive ganze Zahl Spezifikation ü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.

23 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.

24 Algorithmus für! (Fakultät) Eingabe: natürliche Zahl Ausgabe: natürliche Zahl Verfahren: 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.

25 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 Turingvollständigen Sprache) ist algorithmisch nicht lösbar.

26 Was machen wir mit komplexen Programmen? Probleme: Kontenverwaltung, Videokompression,... Programme: (Effektive) Problemlösungen Spezifikationen: ( Gute ) Problembeschreibungen Modelle: Abstraktionen von Problemlösungen u.a. OO ist ein Paradigma für Programme und Modelle. Damit ist OOPM erklärt!

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.

28 Ein Klassendiagramm (UML-Modell) für eine Bankanwendung Eine Klasse für das grundlegende Konzept eines Kontos Attribute eines Kontos Verhalten eines Kontos Eine Klasse für fortgeschrittene Konten mit Kredit Beziehung zwischen den Konzepten: Klassenvererbung

29 Beispielproblem: CAD (Computer Aided Design) Formen ( shapes ) Rechtecke Kreise Verhalten Bewegen Zeichnen

30 Ein Klassendiagramm (UML-Modell) für die CAD-Anwendung Mit Modellen verschwimmt (im positiven Sinne) die starre Grenze zwischen Problembeschreibungen und -lösungen.

31 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.

Das Suchproblem

33 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] == x false: sonst Alternative: Gib (ersten) Index i zurück. Wir nehmen nichts weiter an als dass wir Gleichheit für t bestimmen können.

34 Einfache Suchalgorithmen Dimensionen der Variationen: Effizienz (Laufzeit-Komplexität) Annahmen über Eigenschaften des Feldes Annahmen über Operationen (Gleichheitstest, etc.)

Das Sortierproblem

36 Eine unsortierte Liste 7 3 2 5 2 3 5 7 Die sortierte Liste

37 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. Beachte: Dies ist eine Problembeschreibung (im Gegensatz zu einer Lösung). b ist eine Permutation von a

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 38 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 http://www.bambinipronto.com.au/ false: sonst

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 39 Das Problem des 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. 1 3 2 3 1 2

Permutationstest // Assume all elements of the arrays to be distinct public 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; (C) 2007-2018, Ralf Lämmel, Universität Koblenz-Landau } if (!found) return false; return true; 40 Vorbedingung Dies kann wesentlich eleganter beschrieben werden wenn wir Label-basiertes Break/Continue verwenden. Siehe package algorithm.sorting

41 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

Zusammenfassung Mechanik dieser Lehrveranstaltung Inhalt dieser Lehrveranstaltung Programmierung mit Java und eventuell Python Modellierung mit UML, EBNF, u.a. Wir werden auch spezifizieren, analysieren, verifizieren. Ausblick Sortierverfahren Strukturierte Programmierung Anforderungsspezifikation Algebraische Spezifikation Objektorientierung