prof. dr. sonja prohaska - uni-leipzig.de · prof. dr. sonja prohaska computational evodevo group...

20
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f¨ ur Informatik Universit¨ at Leipzig 16. Dezember 2015

Upload: others

Post on 30-Apr-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Modellierung und Programmierung 1

Prof. Dr. Sonja Prohaska

Computational EvoDevo GroupInstitut fur InformatikUniversitat Leipzig

16. Dezember 2015

Page 2: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Modellierung – KonzeptEin Modell ist die formale Darstellung eins Ausschnitts der realenWelt, der auf das Wesentliche reduziert ist.Entwurf- und Zerlegungstechniken

I zielgerichteter Entwurf

top-down Analyse: schrittweise Vereinfachung einesProblems durch Zerlegung in Teilprobleme, Erstellen vonTeilprogrammen zur Losung von Teilproblemen,zusammenfugen der Teilprogramme zu einem Ganzen

I kompositioneller Entwurf

bottom-up Synthese: Zusammensetzen vonElementarkonstruktionen, sukzessive komplexereKonstruktionen, Annahern an die Losung

I objektorientierter Entwurf

Synthese der Entwurfstrategien: Daten in Form von Klassenund Objekten als elementaren Einheiten, Funktionalitat durchMethoden, Komposition liefert die Losung

Page 3: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Modellierung

I Objekte – Grundbausteine der objekorientiertenProgrammierung

I Aufbau:I Attributen: Daten – StrukturkomponentenI Methoden: Operationen – Funktionskomponenten

I Objekte kommunizieren uber Nachrichten (durch Aufrufenvon Methoden)

I sie senden, empfangen und reagieren auf Nachrichten

I Attributen und Methoden sind im Objekt (allgem. Modul)gekapselt

I Attribute sollten nicht offentlich zur Verfugung stehen

I stattdessen bieten offentlich zugangliche MethodenSchnittstellen an

Page 4: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

UML – Unified Modeling Language

ist eine umfangreiche, standardisierte, grafischeModellierungssprache zur Spezifikation, Konstruktion undDokumentation von Software-Teilen und anderen Systemen.Dabei werden Begriffe und Beziehungen spezifiziert/modelliertund graphisch als Diagramme dargestellt.Wir beschranken uns auf Klassendiagramme, sie stellen Klassenund ihre Beziehungen dar.

Page 5: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

KlassendiagrammeKlassen werden durch Rechtecke dargestellt, die folgenden Rubriken,werden durch eine horizontale Linie abgetrennt:

I Klassenname (fett)

I Attribute

[Sichtbarkeit] [Variablenname][: Datentyp]

I Klassenattribute unterstrichen

I Methoden

[Sichtbarkeit] [Methodenname]([Parameterliste]) [: Ruckgabetyp]

I Klassenmethoden unterstrichen

I 1 Klassenvariable

I 5 Instanzvariablen

I 1 Klassenmethode

I 3 Instanzmethoden+ fuettern(double): void

− rasse:− anzahl:

− alter:

+ getAnzahl():

+ impfen(String[]):

+ verkaufen():

void

void

void

String

int

int

− geschlecht:

− masse:

char

double

Milchvieh

String[]− impfungen:

Page 6: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Sichtbarkeit

UML keyword class package subclass world+ public offentlich yes yes yes yes# protected geschutzt yes yes yes no∼ no modifier Paket yes yes no no− private privat yes no no no

Page 7: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

abgeleitete Klassen – Spezialisierung

I ubergeordnete Klassen (Superklasse, Oberklasse, Elternklasse)

I untergeordnete Klassen (Subklasse, Unterklasse, Kindklasse)

I Deklaration einer abgeleiteten Klasse

I public class [Subklasse] extends [Superklasse] { ... }I Beispiel: public class Milchkuh exdends Milchvieh

I Superklasse → Subklasse: Spezialisierung

I Subklasse → Superklasse: Generalisierung

Page 8: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

UML Darstellung

neue Attribute

neue Methoden

ererbte Attribute

ererbte Methoden

+ fuettern(double): void

− rasse:− anzahl:

− alter:

+ getAnzahl():

+ impfen(String[]):

+ verkaufen():

void

void

void

String

int

int

− geschlecht:

− masse:

char

double

Milchvieh

String[]− impfungen:

Generalisierung

Spezialisierung

Subklasseabgeleitete Klasse

− milchleistung:

− milchqualitaet:

double

int

Milchkuh

+ trockenstellen()

double+ melken()

void

SuperklasseBasisklasse

Klassendiagramm

Vererbung

− geschlecht

− masse:

− impfungen

MilchkuhPeppi

− milchleistung

− milchqualitaet

+ melken()

+ trockenstellen()

+ getAnzahl()

31Holstein

− anzahl− rasse

− alter 15 Monate

w

644 kg

MKS, BTV

1

37,9 l

+ impfen()

+ fuettern()

+ verkaufen()

Milchkuh

Friedl Milchkuh

Zenzi

Resi Milchkuh

Objekt

Page 9: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Vererbung (inheritance)

I abgeleitete Klassen erben von der Basisklasse alle fur siesichtbaren (public and protected) Instanzvariablen und-methoden

I also, nicht Klassenvariablen, -methoden, Konstruktoren

I in der UML wird die Vererbungsbeziehung durch einen Pfeilmit einer leeren, dreieckigen Spitze dargestellt

I sie zeigt von der abgeleiteten Klasse zur Basisklasse

I Beispiel: Ein Objekt der Subklasse Milchkuh besitzt allepublic und protected Attribute der Superklasse Milchvieh

I die Subklasse kann fur sie sichtbare Methoden (mit Ausnahmeder Konstruktoren) der Superklasse ausfuhren.

I in Java ist nur einfachen, (aber wiederholte) Vererbung erlauft

I die Klassenhierarchie ist eine Baumstruktur (beliebiger Tiefe)

Page 10: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

super – Zugriff auf die Superklasse

Zugriff auf Konstruktor der Superklasse

I ein Konstruktor einer Subklasse muss als erstes einenKonstruktor der Superklasse aufrufen

I Syntax:

Superklasse: [Constructor]( [Parameter1],... [Parametern] )

Subklasse: super( [Argument1],... [Argumentn] );

I die Argumentenliste muss der Paramenterliste entsprechen

Hinweis: analog kann ein Konstruktor einen Konstruktor der selben Klasse aufrufenthis( [Argument1],... [Argumentn] ); oder this( , [Argument2],... [Argumentn] );

Zugriff auf Attribute und Methoden der Superklasse

I Syntax: super.[Attribut] bzw. super.[Methode]

auch moglich: super.super.[Attribut|Methode]

Page 11: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Uberschreiben von Methodenman spricht vom “Uberschreiben” einer Methode, wenn

I innerhalb einer Subklasse

eine neue Methode mit identischem Namen und identischenSchnittstellen (d.h. Ruckgabetype und Parameterliste)

zu einer bereits existierenden Methode aus der Superklasse

angelegt wird.

I Objekte der Superklasse rufen Methode der Superklasse auf

I Objekte der Subklasse, und davon abeleitete Klassen

rufen die Methode der Subklasse auf

...

+ fuettern(double): void

Milchkuh

...

+ fuettern(double): void

...

+ fuettern(double): void

...

Ueberschreiben

der Methode

fuettern()

Milchvieh

mit 20 kg Heu

mit 120 kg Gras

BulleKalb

mit 8 l Milchersatz

Superklasse

Subklasse

mit 20 kg Heu

Page 12: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Polymorphimus und dynamische Bindung

Polymorphismus, vom griechischen, dt. “Vielgestaltigkeit”; dieMoglichkeit verschiedene Form oder Gestalt anzunehmen

I in der OOP: die Fahigkeit einer Variable auf verschiedeneObjekte unterschiedlicher Klassen der selben Hirarchiezuzugreifen

I Deklaration und Definition: Superklasse als Datentyp

I Polymorphismus: in Superklasse und alle abgeleitetenKlassen

Page 13: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Abstrakte Klasse(wem’s noch nicht kompliziert genug ist)

I auch “Wurzelklasse” (engl. root class) genannt

I kann an oberster Stelle in der Hirarchie stehen

I ist nicht instanzierbar, d.h. es konnen keine Objekte dieserKlasse angelegt werden

I stellen eine Zusammenfassung der Attribute und Methodendar, die allen Subklassen gmein sind

I abstrakte Methoden mussen deklariert aber noch nichtdefiniert sein

I Wozu? um zu erzwingen, dass Subklassen entsprechendeMethoden definieren

I abstrakte Klassen werden in UML gekennzeichnet durchI kursiver Schriftschnitt fur Klassenname, Variablen und

Methoden oderI das Wort abstract in geschweiften Klammern unterhalb des

Klassennamens

Page 14: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Drei Beispiel

I TestDerived

aus Ivor Horton’s Beginning Java 7, Kapitel 6, pages 226-236I gutes Einstiegsbeispiel

I AnimalFriends

von Prof. Sonja ProhaskaI Erweiterung des obigen BeispielsI ohne DokumentationI mit nutzlichen Kommentaren

I Boote

von Dr. Monika Meiler, passen zum SkriptI gutes Beispiel fur abstrakte KlassenI sehr gutes Beispiel fur automatische Dokumentation

Page 15: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Methode toString()

I bisher: zum Umwandeln von primitiven Datentypen zu String

I Syntax: toString(x), wobei x von primitivem Datentyp

I bisher: impliziter Aufruf toString() durch print()

I Syntax: print(x) eigentlich print(toString(x))

I jetzt neu: zum Umwandeln von Objekten in String

I x.toString(), wobei x ein Objekt ist

I toString() ist eine Methode der universellen Superklasse

I sie wird an alle Klassen vererbt und gibt eine String zuruck:

[Name der Klasse]@[HashCode]

I der besondere Nutzen besteht darin, die Methode zuuberschreiben, und eine eigene Stringrepresentation von Objektender Klasse zu erzeugen

Schlagen sie selbst folgende Methoden der Klasse Object nach

I getClass()

I getName()

Page 16: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Klassenbeziehungen darstellen mit UMLVererbung (Generalisierung)

I Objekte gehen aus anderen Objekte durch Generalisierung oderSpezialisierung hervor. Attribute und Methoden werden vererbt.

I UML: ein Pfeil mit offener Pfeilspitze zeigt in Richtung generellererKlasse

Assoziation

I Objekte stehen miteinander in Beziehung und konnen miteinanderkommunizieren.

I UML: eine verbindende Linie (evtl. mit Pfeilspitze)

I Aggregation und Komposition sind Spezialfalle der Assoziation

Page 17: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Klassenbeziehungen darstellen mit UML

Komposition

I (Teil)objekte sind existenzabhangig vom aggregierten Objekt (demGanzen)

I UML: verbindende Linie, ausgefullte Raute auf seiten desaggregierten Objekts

I hier ist die Multiplizitat immer 1

Aggregation

I (Teil)objekte stehen lose mit dem aggregierten Objekt in Verbindung

I UML: verbindende Linie, offene Raute auf seiten des aggregiertenObjekts

Page 18: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Multiplizitat

Die Enden der Assoziationsbeziehungen konnen mit Multiplizitatendekoriert werden.

Multiplizitat

I Intervall von nicht-negativen, ganzen Zahlen,

I welches die untere und obere Schranke

I der Anzahl an Werten (bzw. Objekten) angibt

I Beispiele:

0..2 in der Mathematik [0, 2]

1..* in der Mathematik [1,∞]

Page 19: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Beispieldiagramm

Page 20: Prof. Dr. Sonja Prohaska - uni-leipzig.de · Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut f ur Informatik Universit at Leipzig 16. Dezember 2015. Modellierung { Konzept

Nutzliches

Package erstellen

I Unterverzeichnis [Paketname] anlegen

I alle Klassen eines Paketes in dieses Verzeichnis kopieren

I In alle Datein an oberster Stelle “pakage [Paketname];”einfugen

I ubersetzung der Klassen wie ublich:

javac [Hauptprogramm].java

Dokumentation erstellenjavadoc

Konsolenoutput umlenkenjava [Programm] > [OutputFile]