Programmierung und - userpages.uni-koblenz.delaemmel/oopm/slides/intro.pdf · (C) Ralf Lämmel,...

Post on 07-Sep-2019

4 views 0 download

Transcript of Programmierung und - userpages.uni-koblenz.delaemmel/oopm/slides/intro.pdf · (C) Ralf Lämmel,...

EinführungRalf Lämmel

Objektorientierte Programmierung und

Modellierung

http://twitter.com/oopm

Do you really need to print these slides?

Please help saving trees!

Mechanik dieser Lehrveranstaltung

(C) Ralf Lämmel, OOPM, 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

4

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Zentrale Herausforderungen

Eigenverantwortlichkeit bei der Studienorganisation

Wertschätzung der Inhalte eines Universitätsstudiums

Konstruktive, positive Herangehensweise

5

BlaBlaBla ...

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Empfehlungen

Kontinuierliche ArbeitTeamarbeitMitarbeit in Übungen und PraktikaKeine Computerspiele o.ä. in den VorlesungenKommunikation und Information

6

Willkommen an der Uni! Vorsicht keine Verschulung!

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 7

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

Quelle: http://money.cnn.com/2014/10/16/technology/theranos-elizabeth-holmes/

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Struktur OOPM

8

!!!

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) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Kommunikationskanäle

Vor Ort bei Vorlesung, Übung, Praktikum

http://twitter.com/oopm

Private Facebook-Gruppe

(Newsgroup infko.oopm)

Persönliche / sehr dringende Dinge per email

9

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Informationsquellen

siehe Kommunikation Webseite(n) Lehrveranstaltung und KLIPS http://softlang.wikidot.com/course:oopmEvtl. empfohlenes Lehrbuch (siehe Webseite)Modulhandbuch und StudienordnungFachschaft, Prüfungsamt, Mentor, ...(Suchmaschinen, Wikipedia, …)

10

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

http://softlang.wikidot.com/course:oopm

11

- Was ist das Team für den Kurs? - Was sind die Vorlesungstermine? - Was sind die Übungsaufgaben? - Was sind die Prüfungsmodalitäten? - ...

Die Informatik als Wissenschaft

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 13

Informatik ist die „Wissenschaft der systematischen Verarbeitung von Informationen“.

[Duden Informatik. Ein Sachlexikon für Studium und Praxis, ISBN 3-411-05232-5, wie zitiert auf Wikipedia http://de.wikipedia.org/wiki/Informatik am 14.4.2014]

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Wofür steht der Begriff Informatik?

Ein Kunstwort:

Information + Mathematik

Abweichende englische Sicht:

Computer Science

14

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Was ist denn dann Information?

15

Abstrakte Sichtweise aus der Informationstheorie: “Information ist die durch Empfang einer Nachricht beim Empfänger eingetretene Verringerung der Unbestimmtheit.” [Shannon1948]

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Was ist denn dann Information?

16

Konkretere Sichtweise: Informationen werden als Daten repräsentiert und diese Daten wiederum werden als Nachrichten versendet und beim Empfänger schließlich wieder als Informationen interpretiert.

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Daten (Repräsentationen)

Bits, Bitfolgen, Bytes

Zeichen in ASCII Code / Unicode

Binäre Darstellung von Zahlen

jpeg für Bilder

mpeg für Musik

17

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Daten versus Information

Betrachte 4 Himmelsrichtungen: N, S, O, W.

Dies sind die möglichen Informationen.

Betrachte Bitfolgen der Länge 2.

Solche Daten dienen der Darstellung -- Struktur.

Betrachte Interpretationen von Bitfolgen.

00 = N, 01 = S, 10 = O, 11 = W -- Semantik.

18

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Einordnung der Informatik als Wissenschaft

Vergleiche Kategorien von Wissenschaften

Gesellschaftswissenschaften

Geschichte, Jura, Philospohie

Naturwissenschaften

Chemie, Physik, Biologie

Ingenieurwissenschaften

Elektronik, Maschinenbau, Informatik?

19

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Einordnung der Informatik als Wissenschaft

Carl Friedrich von Weizsäcker

Strukturwissenschaften

Informatik, Mathematik

20

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Interdisziplinäre Einbettung der Informatik

21

theoretische technische

praktische angewandte

Informatik

Mathematik

Datenverarbeitung

Physik/Elektrotechnik

Andere Disziplinen (Anwendungen)

1. Algorithmen!2. Datenstrukturen!3. Betriebssysteme!4. Datenbanken!5. Programmiersprachen!6. Softwaretechnik

Objekt-orientierte Programmierung und Modellierung

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

OOPM Veranstaltung = eine Art von Einführung in die Informatik

OOPM

Objektorientierte

Programmierung und

Modellierung

23

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Was ist das Programmieren in OOPM?

24

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) Ralf Lämmel, OOPM, Universität Koblenz-Landau

ggT als eine E/A-Funktion in der Programmiersprache Java

25

! 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) Ralf Lämmel, OOPM, 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.

26

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 27ht

tp://

peop

le.ma

ndriv

a.com

/~pr

igaux

/lang

uage

-stu

dy/d

iagra

m-lig

ht.pn

g

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Abstraktionsstufen bei Java

28

http://www.javaworld.com/javaworld

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

ggT in JVM (Java Virtual Machine)

29

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) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Was ist Objektorientierung in OOPM?

OO ist ein Programmierparadigma.

Andere Programmierparadigmen:

Imperative Programmierung

Deklarative Programmierung

Funktionale Programmierung

Logische Programmierung

30

Zugrundeliegende Prinzipien charakterisieren Programmierparadigmen.

Variablen mit Zuweisung

Funktionen

Logik

Objekte?

(C) Ralf Lämmel, OOPM, 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.

31

Nachricht

Daten

Methode

Methoden- auswahl

Methode

(C) Ralf Lämmel, OOPM, 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.

32

(C) Ralf Lämmel, OOPM, 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.

33

(C) Ralf Lämmel, OOPM, 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.

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.

34

(C) Ralf Lämmel, OOPM, 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.

35

(C) Ralf Lämmel, OOPM, 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.

36

(C) Ralf Lämmel, OOPM, 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.

37

OO ist ein Paradigma für Programme und Modelle. Damit ist OOPM erklärt!

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Modelle

Ein Modell abstrahiert von einer Problemlösung.

Beispiel:

Die wesentlichen Arten von Objekten (Klassen) in einer Bankanwendung zusammen mit den Beziehungen zwischen den Klassen.

38

Mit Modellen verschwimmt (im positiven Sinne) die starre Grenze zwischen Problembeschreibungen und -lösungen.

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Ein Klassendiagramm (UML-Modell) für eine Bankanwendung

39

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) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Beispielproblem: CAD (Computer Aided Design)

Formen (“shapes”)

Rechtecke

Kreise

Verhalten

Bewegen

Zeichnen

40

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Ein Klassendiagramm (UML-Modell) für die CAD-Anwendung

41

(C) Ralf Lämmel, OOPM, 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.

42

(C) Ralf Lämmel, OOPM, Universität Koblenz-Landau

Zusammenfassung Mechanik dieser LehrveranstaltungDie Informatik als Wissenschaft Objekt-orientierte Programmierung und Modellierung

Java als ProgrammierspracheUML als ModellierungspracheWir werden auch spezifizieren, analysieren, verifizieren.

Ausblick Strukturierte ProgrammierungTesten von ProgrammenNumerische AlgorithmenProgrammierung mit Feldern…