SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
Polymorphie 
in objektorientierten Programmiersprachen 
Johannes Diemke 
johannes.diemke@uni-oldenburg.de 
27. Februar 2014 
Johannes Diemke Polymorphie 27. Februar 2014 1 / 17
Motivation 
Wir entwickeln ein Hochschulinformationssystem (HIS) 
Aufgaben eines HIS: 
Studierendenverwaltung 
Lehrendenverwaltung 
Prufungsmanagement 
Lehrraummanagement 
. . . 
Johannes Diemke Polymorphie 27. Februar 2014 2 / 17
Motivation 
Wir entwickeln ein Hochschulinformationssystem (HIS) 
Aufgaben eines HIS: 
Studierendenverwaltung 
Lehrendenverwaltung 
Prufungsmanagement 
Lehrraummanagement 
. . . 
Johannes Diemke Polymorphie 27. Februar 2014 2 / 17
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
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
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
Klassen in Java 
Johannes Diemke Polymorphie 27. Februar 2014 4 / 17
HIS in Java 
Johannes Diemke Polymorphie 27. Februar 2014 5 / 17
HIS in Java 
Ausgabe 
Professor[Sheldon Cooper, FB: Theoretische Physik] 
Professor[Egon Spengler, FB: Parapsychologie] 
Johannes Diemke Polymorphie 27. Februar 2014 5 / 17
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
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
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 
Johannes Diemke Polymorphie 27. Februar 2014 7 / 17
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
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
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
Vererbung in Java 
Johannes Diemke Polymorphie 27. Februar 2014 9 / 17
Vererbung in Java 
Johannes Diemke Polymorphie 27. Februar 2014 10 / 17
Vererbung in Java 
Johannes Diemke Polymorphie 27. Februar 2014 11 / 17
HIS in Java (Version 2) 
Johannes Diemke Polymorphie 27. Februar 2014 12 / 17
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
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
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
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
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
HIS in Java (Version 3) 
Johannes Diemke Polymorphie 27. Februar 2014 16 / 17
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
Vielen Dank fur Ihre Aufmerksamkeit! 
Johannes Diemke Polymorphie 27. Februar 2014 17 / 17

Más contenido relacionado

Mehr von Johannes Diemke

2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05Johannes Diemke
 
2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-MaterialJohannes Diemke
 
2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen2010-JOGL-05-Transformationen
2010-JOGL-05-TransformationenJohannes Diemke
 
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-RemovalJohannes Diemke
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-EinfuehrungJohannes Diemke
 
2010-JOGL-01-Organisation
2010-JOGL-01-Organisation2010-JOGL-01-Organisation
2010-JOGL-01-OrganisationJohannes Diemke
 
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Johannes Diemke
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Johannes Diemke
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Johannes Diemke
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Johannes Diemke
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Johannes Diemke
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010Johannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Johannes Diemke
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumJohannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Johannes Diemke
 

Mehr von Johannes Diemke (16)

2010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt052010-JOGL-07-Hinweise-Uebungsblatt05
2010-JOGL-07-Hinweise-Uebungsblatt05
 
2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material
 
2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen
 
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung
 
2010-JOGL-01-Organisation
2010-JOGL-01-Organisation2010-JOGL-01-Organisation
2010-JOGL-01-Organisation
 
Boost C++ Libraries
Boost C++ LibrariesBoost C++ Libraries
Boost C++ Libraries
 
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
Einführung in minimale Spannbäume und deren Berechnung (Vortrag)
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
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
  • 12. 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 Johannes Diemke Polymorphie 27. Februar 2014 7 / 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