Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Polymorphie
1. Polymorphie
in objektorientierten Programmiersprachen
Johannes Diemke
johannes.diemke@uni-oldenburg.de
27. Februar 2014
Johannes Diemke Polymorphie 27. Februar 2014 1 / 17
2. Motivation
Wir entwickeln ein Hochschulinformationssystem (HIS)
Aufgaben eines HIS:
Studierendenverwaltung
Lehrendenverwaltung
Prufungsmanagement
Lehrraummanagement
. . .
Johannes Diemke Polymorphie 27. Februar 2014 2 / 17
3. Motivation
Wir entwickeln ein Hochschulinformationssystem (HIS)
Aufgaben eines HIS:
Studierendenverwaltung
Lehrendenverwaltung
Prufungsmanagement
Lehrraummanagement
. . .
Johannes Diemke Polymorphie 27. Februar 2014 2 / 17
4. Anforderungen
Anforderung an das HIS (1. Iteration)
In einem ersten Schritt wollen wir ProfessorInnen verwalten:
Anlegen neuer ProfessorInnen
Ausgeben aller ProfessorInnen
Johannes Diemke Polymorphie 27. Februar 2014 3 / 17
5. Anforderungen
Anforderung an das HIS (1. Iteration)
In einem ersten Schritt wollen wir ProfessorInnen verwalten:
Anlegen neuer ProfessorInnen
Ausgeben aller ProfessorInnen
Welches objektorientierte Konzept fallt Ihnen fur die Implementierung
ein?
Fachbereich
Name Vorname
Johannes Diemke Polymorphie 27. Februar 2014 3 / 17
6. Anforderungen
Anforderung an das HIS (1. Iteration)
In einem ersten Schritt wollen wir ProfessorInnen verwalten:
Anlegen neuer ProfessorInnen
Ausgeben aller ProfessorInnen
Welches objektorientierte Konzept fallt Ihnen fur die Implementierung
ein?
Fachbereich
Name Vorname
#vorname: String
#name: String
#fachbereich: String
Professor
+Professor(vorname: String, nachname: String, fb: String)
+setVorname(vorname: String)
+getVorname() : String
+setName(name: String)
+getName() : String
+setFachbereich(fb: String)
+getFachbereich() : String
Johannes Diemke Polymorphie 27. Februar 2014 3 / 17
7. Klassen in Java
Johannes Diemke Polymorphie 27. Februar 2014 4 / 17
8. HIS in Java
Johannes Diemke Polymorphie 27. Februar 2014 5 / 17
9. HIS in Java
Ausgabe
Professor[Sheldon Cooper, FB: Theoretische Physik]
Professor[Egon Spengler, FB: Parapsychologie]
Johannes Diemke Polymorphie 27. Februar 2014 5 / 17
10. Weitere Anforderungen
Anforderung an das HIS (2. Iteration)
In einem zweiten Schritt wollen wir zusatzlich StudentInnen
verwalten:
Anlegen neuer StudentInnen
Ausgeben aller StudentInnen und ProfessorInnen
Johannes Diemke Polymorphie 27. Februar 2014 6 / 17
11. Weitere Anforderungen
Anforderung an das HIS (2. Iteration)
In einem zweiten Schritt wollen wir zusatzlich StudentInnen
verwalten:
Anlegen neuer StudentInnen
Ausgeben aller StudentInnen und ProfessorInnen
Was fallt Ihnen auf?
Welches objektorientierte Konzept fallt Ihnen ein?
Fachbereich
Name Vorname
MatrikelNr
Name Vorname
Johannes Diemke Polymorphie 27. Februar 2014 6 / 17
13. Vererbung (Inheritance)
#vorname: String
#name: String
Person
+Person(vorname: String, nachname: String)
+setVorname(vorname: String)
+getVorname() : String
+setName(name: String)
+getName() : String
Professor
#fachbereich: String
+Professor(vorname: String, nachname:
String, fb: String)
+setFachbereich(fb: String)
+getFachbereich() : String
Student
#matrikelNr : String
+Student(vorname: String, nachname: String,
mn: String)
+setMatrikelNr(mn: String)
+getMatrikelNr() : String
Wie hilft das bei der Programmierung?
Johannes Diemke Polymorphie 27. Februar 2014 7 / 17
14. 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
Johannes Diemke Polymorphie 27. Februar 2014 8 / 17
15. 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
Person
+toString() : String
„is-a“-Beziehung
Student
+toString() : String
Johannes Diemke Polymorphie 27. Februar 2014 8 / 17
16. Vererbung in Java
Johannes Diemke Polymorphie 27. Februar 2014 9 / 17
17. Vererbung in Java
Johannes Diemke Polymorphie 27. Februar 2014 10 / 17
18. Vererbung in Java
Johannes Diemke Polymorphie 27. Februar 2014 11 / 17
19. HIS in Java (Version 2)
Johannes Diemke Polymorphie 27. Februar 2014 12 / 17
20. 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
21. Polymorphie
Person
+toString() : String
„is-a“-Beziehung
Student
+toString() : String
Vielgestaltigkeit (griechisch: polys
"
viel, morphe
"
Form)
"
Eine Unterklasse (etwas Spezielles) kann eine Oberklasse (etwas
Allgemeines) vertreten
Automatischer Aufruf der richtigen Methode (spate Bindung)
Johannes Diemke Polymorphie 27. Februar 2014 13 / 17
22. Polymorphie
Person
+toString() : String
„is-a“-Beziehung
Student
+toString() : String
Frage
Welche Implementierung von toString() wird aufgerufen?
Johannes Diemke Polymorphie 27. Februar 2014 14 / 17
23. Polymorphie
Person
+toString() : String
„is-a“-Beziehung
Student
+toString() : String
Frage
Welche Implementierung von toString() wird aufgerufen?
Antwort
Die Implementierung aus der Student Klasse.
Johannes Diemke Polymorphie 27. Februar 2014 14 / 17
24. Polymorphie
Frage
Haben Sie eine Idee wie sich mittels Polymorphie die Ausgabe aller
StudentInnen und ProfessorInnen vereinfachen lasst?
Johannes Diemke Polymorphie 27. Februar 2014 15 / 17
25. HIS in Java (Version 3)
Johannes Diemke Polymorphie 27. Februar 2014 16 / 17
26. 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
27. Vielen Dank fur Ihre Aufmerksamkeit!
Johannes Diemke Polymorphie 27. Februar 2014 17 / 17