27
Polymorphie in objektorientierten Programmiersprachen Johannes Diemke [email protected] 27. Februar 2014 Johannes Diemke Polymorphie 27. Februar 2014 1 / 17

Polymorphie

Embed Size (px)

DESCRIPTION

Slides of a trial lecture about polymorphism held at the University of Applied Sciences.

Citation preview

Page 1: Polymorphie

Polymorphiein objektorientierten Programmiersprachen

Johannes Diemke

[email protected]

27. Februar 2014

Johannes Diemke Polymorphie 27. Februar 2014 1 / 17

Page 2: Polymorphie

Motivation

Wir entwickeln ein Hochschulinformationssystem (HIS)

Aufgaben eines HIS:

StudierendenverwaltungLehrendenverwaltungPrufungsmanagementLehrraummanagement. . .

Johannes Diemke Polymorphie 27. Februar 2014 2 / 17

Page 3: Polymorphie

Motivation

Wir entwickeln ein Hochschulinformationssystem (HIS)

Aufgaben eines HIS:

StudierendenverwaltungLehrendenverwaltungPrufungsmanagementLehrraummanagement. . .

Johannes Diemke Polymorphie 27. Februar 2014 2 / 17

Page 4: Polymorphie

Anforderungen

Anforderung an das HIS (1. Iteration)

In einem ersten Schritt wollen wir ProfessorInnen verwalten:

Anlegen neuer ProfessorInnenAusgeben aller ProfessorInnen

Welches objektorientierte Konzept fallt Ihnen fur die Implementierungein?

Name Vorname

Fachbereich

+Professor(vorname:String,nachname:String, fb:String)+setVorname(vorname:String)+getVorname() : String+setName(name:String)+getName() : String+setFachbereich(fb:String)+getFachbereich() : String

#vorname:String#name:String#fachbereich:String

Professor

Johannes Diemke Polymorphie 27. Februar 2014 3 / 17

Page 5: Polymorphie

Anforderungen

Anforderung an das HIS (1. Iteration)

In einem ersten Schritt wollen wir ProfessorInnen verwalten:

Anlegen neuer ProfessorInnenAusgeben aller ProfessorInnen

Welches objektorientierte Konzept fallt Ihnen fur die Implementierungein?

Name Vorname

Fachbereich

+Professor(vorname:String,nachname:String, fb:String)+setVorname(vorname:String)+getVorname() : String+setName(name:String)+getName() : String+setFachbereich(fb:String)+getFachbereich() : String

#vorname:String#name:String#fachbereich:String

Professor

Johannes Diemke Polymorphie 27. Februar 2014 3 / 17

Page 6: Polymorphie

Anforderungen

Anforderung an das HIS (1. Iteration)

In einem ersten Schritt wollen wir ProfessorInnen verwalten:

Anlegen neuer ProfessorInnenAusgeben aller ProfessorInnen

Welches objektorientierte Konzept fallt Ihnen fur die Implementierungein?

Name Vorname

Fachbereich

+Professor(vorname:String,nachname:String, fb:String)+setVorname(vorname:String)+getVorname() : String+setName(name:String)+getName() : String+setFachbereich(fb:String)+getFachbereich() : String

#vorname:String#name:String#fachbereich:String

Professor

Johannes Diemke Polymorphie 27. Februar 2014 3 / 17

Page 7: Polymorphie

Klassen in Java

Johannes Diemke Polymorphie 27. Februar 2014 4 / 17

Page 8: Polymorphie

HIS in Java

Ausgabe

Professor[Sheldon Cooper, FB: Theoretische Physik]

Professor[Egon Spengler, FB: Parapsychologie]

Johannes Diemke Polymorphie 27. Februar 2014 5 / 17

Page 9: Polymorphie

HIS in Java

Ausgabe

Professor[Sheldon Cooper, FB: Theoretische Physik]

Professor[Egon Spengler, FB: Parapsychologie]

Johannes Diemke Polymorphie 27. Februar 2014 5 / 17

Page 10: Polymorphie

Weitere Anforderungen

Anforderung an das HIS (2. Iteration)

In einem zweiten Schritt wollen wir zusatzlich StudentInnenverwalten:

Anlegen neuer StudentInnenAusgeben aller StudentInnen und ProfessorInnen

Was fallt Ihnen auf?Welches objektorientierte Konzept fallt Ihnen ein?

Name Vorname

Fachbereich

Name Vorname

MatrikelNr

Johannes Diemke Polymorphie 27. Februar 2014 6 / 17

Page 11: Polymorphie

Weitere Anforderungen

Anforderung an das HIS (2. Iteration)

In einem zweiten Schritt wollen wir zusatzlich StudentInnenverwalten:

Anlegen neuer StudentInnenAusgeben aller StudentInnen und ProfessorInnen

Was fallt Ihnen auf?Welches objektorientierte Konzept fallt Ihnen ein?

Name Vorname

Fachbereich

Name Vorname

MatrikelNr

Johannes Diemke Polymorphie 27. Februar 2014 6 / 17

Page 12: Polymorphie

Vererbung (Inheritance)

+Person(vorname:String,nachname:String)+setVorname(vorname:String)+getVorname() : String+setName(name:String)+getName() : String

#vorname:String#name:String

Person

+Professor(vorname:String,nachname:String, fb:String)+setFachbereich(fb:String)+getFachbereich() : String

#fachbereich:String

Professor

+Student(vorname:String,nachname:String,mn:String)+setMatrikelNr(mn:String)+getMatrikelNr() : String

#matrikelNr :String

Student

Wie hilft das bei der Programmierung?

Johannes Diemke Polymorphie 27. Februar 2014 7 / 17

Page 13: Polymorphie

Vererbung (Inheritance)

+Person(vorname:String,nachname:String)+setVorname(vorname:String)+getVorname() : String+setName(name:String)+getName() : String

#vorname:String#name:String

Person

+Professor(vorname:String,nachname:String, fb:String)+setFachbereich(fb:String)+getFachbereich() : String

#fachbereich:String

Professor

+Student(vorname:String,nachname:String,mn:String)+setMatrikelNr(mn:String)+getMatrikelNr() : String

#matrikelNr :String

Student

Wie hilft das bei der Programmierung?

Johannes Diemke Polymorphie 27. Februar 2014 7 / 17

Page 14: Polymorphie

Vererbung (Inheritance)

Kinder erben Methoden und Felder von Elternklasse

Vermeidet Wiederholungen (Copy Paste)

Erhoht Wartbarkeit

Anderungen nur an einer Stelle

Methoden konnen in Kindklassen uberschrieben werden

Spezialisiertes Verhalten

+toString() : String

Person

+toString() : String

Student

„is-a“-Beziehung

Johannes Diemke Polymorphie 27. Februar 2014 8 / 17

Page 15: Polymorphie

Vererbung (Inheritance)

Kinder erben Methoden und Felder von Elternklasse

Vermeidet Wiederholungen (Copy Paste)

Erhoht Wartbarkeit

Anderungen nur an einer Stelle

Methoden konnen in Kindklassen uberschrieben werden

Spezialisiertes Verhalten

+toString() : String

Person

+toString() : String

Student

„is-a“-Beziehung

Johannes Diemke Polymorphie 27. Februar 2014 8 / 17

Page 16: Polymorphie

Vererbung in Java

Johannes Diemke Polymorphie 27. Februar 2014 9 / 17

Page 17: Polymorphie

Vererbung in Java

Johannes Diemke Polymorphie 27. Februar 2014 10 / 17

Page 18: Polymorphie

Vererbung in Java

Johannes Diemke Polymorphie 27. Februar 2014 11 / 17

Page 19: Polymorphie

HIS in Java (Version 2)

Ausgabe

Professor[Sheldon Cooper, FB: Theoretische Physik]

Professor[Egon Spengler, FB: Paraspychologie]

Student[Peter Venkman, MN: 8546120]

Johannes Diemke Polymorphie 27. Februar 2014 12 / 17

Page 20: Polymorphie

HIS in Java (Version 2)

Ausgabe

Professor[Sheldon Cooper, FB: Theoretische Physik]

Professor[Egon Spengler, FB: Paraspychologie]

Student[Peter Venkman, MN: 8546120]

Johannes Diemke Polymorphie 27. Februar 2014 12 / 17

Page 21: Polymorphie

Polymorphie

+toString() : String

Person

+toString() : String

Student

„is-a“-Beziehung

”Vielgestaltigkeit“ (griechisch: polys

”viel“, morphe

”Form“)

Eine Unterklasse (etwas Spezielles) kann eine Oberklasse (etwasAllgemeines) vertreten

Automatischer Aufruf der richtigen Methode (spate Bindung)

Johannes Diemke Polymorphie 27. Februar 2014 13 / 17

Page 22: Polymorphie

Polymorphie

+toString() : String

Person

+toString() : String

Student

„is-a“-Beziehung

Frage

Welche Implementierung von toString() wird aufgerufen?

Antwort

Die Implementierung aus der Student Klasse.

Johannes Diemke Polymorphie 27. Februar 2014 14 / 17

Page 23: Polymorphie

Polymorphie

+toString() : String

Person

+toString() : String

Student

„is-a“-Beziehung

Frage

Welche Implementierung von toString() wird aufgerufen?

Antwort

Die Implementierung aus der Student Klasse.

Johannes Diemke Polymorphie 27. Februar 2014 14 / 17

Page 24: Polymorphie

Polymorphie

Frage

Haben Sie eine Idee wie sich mittels Polymorphie die Ausgabe allerStudentInnen und ProfessorInnen vereinfachen lasst?

Johannes Diemke Polymorphie 27. Februar 2014 15 / 17

Page 25: Polymorphie

HIS in Java (Version 3)

Ausgabe

Professor[Sheldon Cooper, FB: Theoretische Physik]

Professor[Egon Spengler, FB: Parapsychologie]

Student[Peter Venkman, MN: 8546120]

Johannes Diemke Polymorphie 27. Februar 2014 16 / 17

Page 26: Polymorphie

HIS in Java (Version 3)

Ausgabe

Professor[Sheldon Cooper, FB: Theoretische Physik]

Professor[Egon Spengler, FB: Parapsychologie]

Student[Peter Venkman, MN: 8546120]

Johannes Diemke Polymorphie 27. Februar 2014 16 / 17

Page 27: Polymorphie

Vielen Dank fur Ihre Aufmerksamkeit!

Johannes Diemke Polymorphie 27. Februar 2014 17 / 17