Upload
johannes-diemke
View
130
Download
1
Embed Size (px)
DESCRIPTION
Slides of a trial lecture about polymorphism held at the University of Applied Sciences.
Citation preview
Polymorphiein objektorientierten Programmiersprachen
Johannes Diemke
27. Februar 2014
Johannes Diemke Polymorphie 27. Februar 2014 1 / 17
Motivation
Wir entwickeln ein Hochschulinformationssystem (HIS)
Aufgaben eines HIS:
StudierendenverwaltungLehrendenverwaltungPrufungsmanagementLehrraummanagement. . .
Johannes Diemke Polymorphie 27. Februar 2014 2 / 17
Motivation
Wir entwickeln ein Hochschulinformationssystem (HIS)
Aufgaben eines HIS:
StudierendenverwaltungLehrendenverwaltungPrufungsmanagementLehrraummanagement. . .
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 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
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
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
Klassen in Java
Johannes Diemke Polymorphie 27. Februar 2014 4 / 17
HIS in Java
Ausgabe
Professor[Sheldon Cooper, FB: Theoretische Physik]
Professor[Egon Spengler, FB: Parapsychologie]
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 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
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
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
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
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
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
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)
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
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
+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
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
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
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
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
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