III. Objektorientierte Programmierung. Aufruf einer Methode. Definition einer Methode. Bezug zur aufrufenden Instanz. Instanzen einer Klasse

Größe: px
Ab Seite anzeigen:

Download "III. Objektorientierte Programmierung. Aufruf einer Methode. Definition einer Methode. Bezug zur aufrufenden Instanz. Instanzen einer Klasse"

Transkript

1 Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 12 Ekkart Kindler III. Objektorientierte Programmierung Überblick Klassen und Methoden Vererbung Zugriffsrechte Definition einer Methode Aufruf einer Methode In einer Klasse wird eine Methode wie eine Funktion bzw. Prozedur definiert. Dabei fällt jedoch das Schlüsselwort static weg: public void push(string contents) public String pop() Für ein Objekt a der Klasse kann eine Methode f dieser Klasse mit a.f(...) aufgerufen werden.... steht für eine bezüglich der Signatur von f korrekte Liste von Parametern. Wenn die Methode ein Ergebnis zurückliefert (also keine Prozedur ist), dann kann a.f(...) auch in einem Ausdruck vorkommen: Out.println(s1.pop()); : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 3 : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 4 Instanzen einer Klasse Bezug zur aufrufenden Instanz Mit new Klassen(); wird eine neues Objekt (eine neue Instanz) dieser Klasse kreiert. Es können wie bisher beliebig viele Instanzen gebildet werden. Ein Methodenaufruf a.f(...) bezieht sich immer auf das Objekt a von dem aus es aufgerufen wurde (und auf dessen Attribute). Stack s1 = new Stack(); Stack s2 = new Stack(); s1.push("a"); s2.push("b"); s1 s2 "a" "b" Der Zugriff auf top in der Methode push bezieht sich beim Aufruf s1.push() auf das Attribut s1.top! Der Zugriff auf top in der Methode push bezieht sich beim Aufruf s2.push() auf das Attribut s2.top! : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 5 : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 6

2 Methodenaufruf Prinzip der Objektorientierung Im wesentlichen sind zwei Aufrufe derselben Methode für zwei verschiedene Instanzen unabhängig voneinander. Beim Aufruf der Methode muß die Instanz, auf die sich der Aufruf bezieht, angegeben werden. (Es gibt Ausnahmen, die wir hier nicht betrachten) Ein Objekt weiß selbst am besten, welche Werte seine Attribute annehmen dürfen und welche nicht. Deshalb sollte auf Attribute anderer Objekte im Normalfall nicht direkt zugegriffen werden. Insbesondere sollte ein Attribut eines anderen Objekts nie direkt modifiziert werden. Werden die Funktionen für einen bestimmten Datentyp bei der entsprechenden Datenstruktur definiert: Klasse mit Methoden : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 7 : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 8 Gegenbeispiel: Stapel class StackElement { String contents; StackElement next; public class Stack { StackElement top; public void push(string contents) { StackElement newstackelt = new StackElement(); newstackelt.contents = contents; newstackelt.next = top; top = newstackelt; Hier greift ein Objekt der Klasse Stack direkt auf die Attribute eines Objekts der Klasse StackElement zu. Modifikation class StackElement { private String contents; private StackElement next; public void setcontents(string c) { contents = c; public void setnext(stackelement n) { next = n; public String getcontents(); { return contents; public StackElement getnext(); { return next; Das vorangestellte Schlüsselwort private besagt, daß kein Objekt einer anderen Klasse auf diese Attribute zugreifen kann. Auf mit public gekennzeichnete Attribute und Methoden kann jeder zugreifen. Stattdessen gibt es für jedes Attribut xxx eine Methode, die den Wert des Attributs verändert (setxxx) und den Wert des Attributs ausgibt (getxxx). : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 9 : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Modifikation Modifikation public class Stack { private StackElement top; public void push(string contents) { StackElement newstackelt = new StackElement(); newstackelt.setcontents(contents); newstackelt.setnext(top); top = newstackelt; public String pop() { if (top!= null) { String contents = top.getcontents(); top = top.getnext(); return contents; else { return null; : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 12

3 Kleines Testprogramm (siehe Unterlagen im WWW): public class StackTest {... public static void main(string[] args) { Stack s1 = new Stack(); Stack s2 = new Stack(); 3. Der Konstruktur Zumindest dann, wenn gerade keine Methode dieses Objekts aktiv ist. Ein weiteres Prinzip: Ein Objekt sollte immer einen vernünftigen (konsistenten) Zustand annehmen. char c; do { c = readchar("'1', '2', '3' oder '4'"); switch (c) {... Achtung: Die im WWW bereitgestellte Version des Stacks hat eine Methode mehr (clear) und benutzt teilweise Konzepte, die wir in der Vorlesung nicht mehr kennenlernen werden. Kopieren sie beide Dateien Stack.javaund StackTest.javain Ihr TIFI-Eclipse-Projekt. Starten Sie dann das Programm StackTest. : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Problem: Nach dem Anlegen des neuen Objekts mit new ist das Objekt oft nicht in einem vernünftigen Zustand. : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Beispiel Lösung des Problems: { String ; String vor; String ort; adr vor adr; adr = new (); // Das Objekt ist keine vernünftige ort Eine (oder mehrere) spezielle Methode, die automatisch beim Kreieren eines neuen Objekts der Klasse aufgerufen wird und dafür sorgt, daß ein vernünftiges Objekt entsteht Der Konstruktor der Klasse : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Beispiel Ein Konstruktor { private String ; private String vor; private String ort; (String n, String v, String o) { = n; vor = v; ort = o; Definition eines Konstruktors für die Klasse. Hier ist der Konstruktor eine Methode mit drei Parametern. Aufruf des Konstruktors! Durch den Aufruf werden die Attribute vernünftig gesetzt. Ein Konstruktor ist eine spezielle Methode, die den gleichen Namen trägt wie die Klasse, in der sie definiert ist, für die kein Ergebnistyp angegeben ist (auch nicht void) und Der Konstruktor muß ja nur das Objekt initialisieren. die nur im Zusammenhang mit new aufgerufen werden kann! adr = new ("Egon", "Maier", "Aue"); : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 18

4 Bemerkungen Beispiel mit zwei Konstruktoren Es kann für eine Klasse mehrere Konstruktoren geben, wenn sie sich in ihre Signatur unterscheiden. Welcher der Konstuktoren beim Aufruf (über new) ausgewählt wird, wird durch die Regeln der Polymorphie festgelegt. Durch new wird immer ein Konstruktor der entsprechenden Klasse aufgerufen class StackElement { private String contents; private StackElement next; StackElement(String c) { contents = c; StackElement(String c, StackElement n) { contents = c; next = n;... : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Beispiel (Forts.) Bemerkungen (Forts.) StackElement e1 = new StackElement("Test"); // ruft den ersten Konstruktor von StackElement auf StackElement e2 = new StackElement("Noch eins", e1); // ruft den zweiten Konstruktor von StackElement auf Eine Klasse Beispiel, in der kein Konstruktor definiert ist, besitzt automatisch den Standardkonstruktor Beispiel() { Deshalb konnten wir bisher neue Objekte von Datentypen mit new anlegen, obwohl wir keinen Konstruktor definiert hatten: Denn mit Beispiel bsp = new Beispiel(); wurde dieser Standardkonstruktor aufgerufen. : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Bemerkungen (Forts.) Beispiel Achtung: Wenn in einer Klasse mind. ein Konstruktor definiert ist, dann besitzt die Klasse keinen Standardkonstruktor! Wenn dann ein Konstruktor ohne Parameter benötigt wird, muß er explizit definiert werden!!! { private String ; private String vor; private String ort; (String n, String v, String o) { = n; vor = v; ort = o; adr = new (); // Fehler!!! No constructor matching () found in. adr = new (); : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 24

5 Konstruktoren: Zusammenfassung 4. this ein Verweis auf sich selbst Jede Klasse hat mindestens einen Konstruktor. Nur in sehr einfachen Fällen sollte man sich auf den Standardkonstruktor verlassen. Konstruktoren einer Klasse ermöglichen das vernünftige Initialisieren von neu kreierten Objekten dieser Klasse. In einer Methode kann man die Attribute des Objekts benutzen, für das die Methode aufgerufen wurde In manchen Fällen ist es jedoch nötig, in einer Methode nicht nur auf die Attribute des Objekts, sondern auf das Objekt selbst zu verweisen Dazu steht in jeder Methode eines Objekts die Referenz auf das Objekt, für das die Methode aufgerufen wurde, zur Verfügung: this : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL this als spezielles Attribut In einer Klasse Beispiel verhält sich this im wesentlichen wie ein Attribut private Beispiel this; Der Wert des Attributs this kann jedoch nicht modifiziert werden Beispiel { String ; String vor; String ort; Ein Attribut, dessen Wert nicht verändert werden kann und dessen Wert nur in einer Methode dieses Objekts benutzbar ist. adr this vor Der Name this kann nicht für selbstdefinierter Variablen oder Attribute benutzt werden adr = new (); ort : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Beispiel: Problem (Verschattung) Lösung: das Attribut this { private String ; private String vor; private String ort; { private String ; private String vor; private String ort;... (String, String vor, String ort) { = ; vor = vor; ort = ort; Achtung: Hier werden nicht die Attribute, vor und ort des Objekts verändert (Veschattung der Attribute durch die Parameter)! (String, String vor, String ort) { this. = ; this.vor = vor; this.ort = ort;... : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 30

6 5. Static Klassenattribute und Klassenmethoden (static) Bis auf einen winzigen syntaktischen Unterschied unterscheidet sich die Deklaration von globalen Variablen nicht von der Deklaration von Attributen eines Objekts: Dem Schlüsselwort static. Entsprechend unterscheiden sich Prozeduren und Funktionen eines Programms von Methoden einer Klasse. Worin besteht der Unterschied? : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Grundidee Beispiel: Ein ohne den Zusatz static deklariertes Attribut definiert für jede Instanz der Klasse ein separates Attribut; Ein mit dem Zusatz static deklariertes Attribut existiert nur einmal für die ganze Klasse. Ein solches Attribut heißt deshalb Klassenattribut (oft auch statisches Attribut). { private String ; private String vor; private String ort; pivate static int anzahl = 0; (String, String vor, String ort) { this. = ; this.vor = vor; this.ort = ort; anzahl = anzahl + 1; // Zählt die Anzahl der Objekte // vom Typ : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL anzahl vor ort vor ort vor ort Objekte der Klasse vor ort Ein Klassenattribut existiert nur einmal für die gesamte Klasse (es ist gewissermaßen statisch); der Wert des Attributs kann sich jedoch dynamisch verändern! Anwendung von Klassenattributen In einem Klassenattribut kann man Informationen speichern, die alle Objekte der Klasse gleichermaßen betrifft bzw. die keine individuelle Information eines Objekts der Klasse ist (z.b. die Anzahl aller Objekte dieser Klasse). : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 36

7 Zugriff auf Klassenattribute Klassenmethoden Innerhalb einer Methode kann man auf ein Klassenattribut mit seinem Namen zugreifen: anzahl Auf ein Klassenattribut kann man über ein Objekt der Klasse zugreifen: adr.anzahl Auf ein Klassenattribut kann man auch über den Klassen zugreifen:.anzahl Math.PI Methoden mit dem Zusatz static heißen Klassenmethoden. Wie Klassenattribute sind Klassenmethoden unabhängig von einer konkreten Instanz der Klasse. Deshalb kann in einer Klassenmethode nur auf Klassenattribute, nicht jedoch auf Objektattribute zugegriffen werden! : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Aufruf einer Klassenmethode Die Klassenmethode main Aus einer Methode einer Klasse kann eine andere Methode mit ihrem Namen aufgerufen werden. Eine Klassenmethode kann über den Namen der Klasse aufgerufen werden, in der sie deklariert ist: Adressverwaltung2.printAdr(adr); Math.max(a,b); (Man kann sie wie Klassenattribute auch über Objekte aufrufen; dies ist aber eher unüblich) Ein prozedurales Programm ist also eine sehr spezielle Klasse; nämlich eine, die nur Klassenmethoden (Funktionen und Prozeduren) und Klassenattribute (globale Variablen) und folgende Klassenmethode enthält: public static void main(sting[] args) Jede Klasse, die diese Klassenmethode enthält, kann als Programm gestartet werden (die Klasse darf andere nicht-statische Methoden und Attribute besitzen). : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Vererbung Beispiel: Benutzergruppen 6.1. Motivation Beispiel: Benutzerverwaltung (z.b. im Rechenzentrum) mit mehreren Kategorien von Benutzern. Studenten, Mitarbeiter und externe Personen. Für Personen aus den verschiedenen Gruppen werden unterschiedliche Informationen erhoben. class Person { int ; String ; String ; Person(int id, String, String tel) { this. = id; this. = ; this. = tel; : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 42

8 Beispiel: Benutzergruppen Beispiel: Benutzergruppen class Student { int ; String ; String ; String matrnr; class Mitarbeiter { int ; String ; String ; String dienstgrad; Student(int id, String, String tel, String matrnr) { this. = id; this. = ; this. = tel; this.matrnr = matrnr; Mitarbeiter(int id, String, String tel, String grad) { this. = id; this. = ; this. = tel; this.dienstgrad = grad; : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Frage: Komplizierte Antwort: Können wir alle drei Benutzergruppen in einem einzigen Array gemeinsam verwalten? Einfache Antwort: Nein, denn es handelt sich um drei verschiedene Klassen; die Objekte haben verschiedenen Typ. Doch, wir können die Objekte in einem einzigen Array speichern, wenn wir die Gemeinsamkeiten der drei Klassen extrahieren! Beobachtung: Die gemeinsame Information von Studenten und Mitarbeitern ist die Information, die für Personen gespeichert wird. : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Vererbung: Grundprinzip Vererbung Person Student und Mitarbeiter erben diese Attribute von Student Mitarb. Person; alles was man mit einer Instanz der Klasse Person machen kann, kann man auch mit einer matrnr dienst. Instanz der Klassen Mitarbeiter und Student machen! : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Student matrnr Person Mitarb. dienst. Spezialisierung : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn Generalisierung VL 12 48

9 Vererbung in Java: Vererbung in Java: class Person { int ; String ; String ; Person() { Person(int id, String, String tel) { this. = id; this. = ; this. = tel; Die Klasse Person wird fast wie gehabt definiert! Aus einem Grunde, den wir nicht besprechen, benötigen wir im Augenblick zusätzlich noch den Standardkonstruktor! class Student extends Person { extends besagt, daß die Klasse String matrnr; Student von der Klasse Person erbt! Student(int id, String, String tel, String matrnr) { this. = id; this. = ; this. = tel; this.matrnr = matrnr; Weil die Klasse Student von der Klasse Person erbt, besitzt die Klasse Student alle Attribute von Person (ohne daß die Attribute explizit definiert sind). : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Vererbung in Java: Vererbung in Java: class Mitarbeiter extends Person { extends besagt, daß die Klasse String dienstgrad; Mitarbeiter von der Klasse Person erbt! Mitarbeiter(int id, String, String tel, String grad) { this. = id; this. = ; this. = tel; Weil die Klasse Mitarbeiter this.dienstgrad = grad; von der Klasse Person erbt, besitzt die Klasse Mitarbeiter alle Attribute von Person (ohne daß die Attribute explizit definiert sind). Die neuen Definitionen sind im wesentlichen identisch mit den alten separaten der Definitionen der Klassen Der einzige Unterschied: Jetzt können Objekte der Klasse Student und Mitarbeiter an eine Variable des Typs Person zugewiesen werden, da sie diese Klasse spezialisieren! : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Beispiel Beispiel (Forts.) Person[] pers = new Person[3]; pers[0] = new Mitarbeiter(1,"Huber", "(030)...", "WiMi"); pers[1] = new Student(2,"Meier", "(08421) 4711", "0815"); pers[2] = new Person(5,"Mueller", "(08421) 461"); pers Mitarb. dienst. Student matrnr Person : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 54

10 Beispiel Das Prinzip Person[] pers = new Person[3]; pers[0] = new Mitarbeiter(1,"Huber", "(030)...", "WiMi"); pers[1] = new Student(2,"Meier", "(08421) 4711", "0815"); pers[2] = new Person(5,"Mueller", "(08421) 461"); // Ausgabe aller n des Arrays pers: for (int i = 0; i < pers.length; i++) { Out.println(pers[i]. + ":" + pers[i].); Ein Objekt einer Klasse B, die von Klasse A abgeleitet ist (von A erbt), besitzt zusätzlich zu den in der Klasse B definierten Attributen und Methoden alle Attribute und Methoden der Klasse A. : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Das Prinzip Das Prinzip (Forts.) Ein Objekt einer Klasse B kann an eine Variable der Klasse A zugewiesen werden, wenn Klasse B von Klasse A abgeleitet ist. Bsp: Person pers; pers = new Mitarbeiter(1,"Huber", "(030)...", "WiMi"); Die umgekehrte Richtung ist nicht zulässig! Gegenbsp.: Mitarbeiter marb; marb = new Person(1,"Huber", "(030)..."); Ein Objekt, das in einer Variablen der Klasse A gespeichert ist, kann ein Objekt jeder Klasse B sein, die von A erbt. Für ein in einer Variablen der Klasse A gespeichertes Objekt können alle Attribute und Methoden der Klasse A benutzt werden und nur diese! Selbst dann, wenn es sich um ein Objekt der Klasse B handelt, das mehr Attribute besitzt. : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Beispiel / Gegenbeispiel: Person pers; pers = Mitarbeiter(1,"Huber", "(030)...", "WiMi"); Out.println(pers. + ":" + pers.); Out.println(pers.dienstgrad); 6.3 Vererbungshierarchie Vererbung über mehrerer Stufen ist möglich Mitarb. dienst. Person Student matrnr Das Objekt, das in pers gespeichert ist, hat zwar ein Attribut dienstgrad, aber die Variable pers hat nur den Typ Person! Da die Klasse Person selbst kein Attribut dienstgrad besitzt, dürfen wir es nicht benutzen. Bei starker Typisierung wird die Korrektheit eines Zugriffs anhand des Variablentyps geprüft! Beamter dienst. besgr. Angest. dienst. tarif : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 60

11 Vererbung ist transitiv In Java: Beamter erbt indirekt über Mitarbeiter alle Eigenschaften von Person! class Beamter extends Mitarbeiter { Ein Objekt der Klasse Beamter kann also sowohl einer Variablen vom Typ Mitarbeiter als auch einer Variablen vom Typ Person zugewiesen werden. String besgr;... Achtung: Damit das wirklich funktioniert, müssen Sie im Augenblick noch den Standardkonstruktor Mitarbeiter() zu der Klasse Mitarbeiter hinzufügen. Den Grund dafür werden wir wie gesagt später noch kennenlernen. Wir werden auch sehen, wie dies Umgehen können. : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Vererbung von Methoden Beispiel: class Person { int ; String ; String ; Person(){ Methoden werden ebenso vererbt wie Attribute! Person(int id, String, String tel) { \* wie gehabt *\ public String tostring() { return + ": " + Die Methode tostring wird immer benutzt, wenn eine Objekt in eine Zeichenreihe umgewandelt werden muß: z.b. in der println-anweisung. : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Beispiel (Forts): Beispiel (Forts): Person pers = new Person(5,"Mueller", "(08421) 461"); Out.println(pers.toString()); /* Ausgabe am Bildschirm: * Mueller: (08421) 461 */ Mitarbeiter marb; marb = Mitarbeiter(1,"Huber", "(030)...", "WiMi"); Out.println(marb.toString()); /* Ausgabe am Bildschirm: * Huber: (030)... */ Da Mitarbeiter von Person erbt, besitzt jedes Objekt der Klasse Mitarbeiter auch die Methode tostring. : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 66

12 Vereinfachung der Erstellung der Liste: 6.5 Überschreiben von Methoden Person[] pers = new Person[3]; pers[0] = new Mitarbeiter(1,"Huber", "(030)...", "WiMi"); pers[1] = new Student(2,"Meier", "(08421) 4711", "0815"); pers[2] = new Person(5,"Mueller", "(08421) 461"); for (int i = 0; i < pers.length; i++) { Out.println(pers[i]); /* Ausgabe am Bildschirm: * Huber: (030)... * Meier: (08421) 4711 * Mueller: (08421) 461 */ Zur Erinnerung: pers[i].tostring() wird von Java implizit aufgerufen! Bisher: In den abgeleiteten Klassen wurden neue Attribute oder neue Methoden hinzugefügt Jetzt: In der abgeleiteten Klasse werden Methoden der ursprünglichen Klasse überschrieben. : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Beispiel: Beispiel (Forts.) class Mitarbeiter extends Person { class Student extends Person { String dienstgrad; String matrnr; Mitarbeiter(int id, String, String tel, String grad) { \* wie gehabt *\ Student(int id, String, String tel, String matrnr) { /* wie gehabt */ public String tostring() { return + ":" + tel + ", " + dienstgrad; public String tostring() { return + ":" + tel + ", " + matrnr; : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL Vereinfachung der Erstellung der Liste Person[] pers = new Person[3]; pers[0] = new Mitarbeiter(1,"Huber", "(030)...", "WiMi"); pers[1] = new Student(2,"Meier", "(08421) 4711", "0815"); pers[2] = new Person(5,"Mueller", "(08421) 461"); for (int i = 0; i < pers.length; i++) { Out.println(pers[i].toString()); /* Ausgabe am Bildschirm: * Huber: (030)..., WiMi * Meier: (08421) 4711, 0815 * Mueller: (08421) 461 */ Hier wurde offensichtlich die neuen tostring-methoden der Klassen Mitarbeiter bzw Student aufgerufen! : Technische Informatik für Ingenieure, WS 2006/07, Universität Paderborn VL 12 71

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article 2.13 Vererbung Klassen modellieren Objekte der realen Welt. Diese sind oft hierarchisch gegliedert. Beispiel: Ein Verlag bietet Bücher und CDs an. Beide Medien sind Artikel des Verlages. Book author: String

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Bis jetzt kennen wir (fast) nur primitive Datentypen. Diese entsprechen weitestgehend der Hardware des Rechners (z.b. besitzt ein Rechner Hardware um zwei floats zu addieren).

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement

Mehr

Wiederholung: Klassen in Java

Wiederholung: Klassen in Java Wiederholung: Klassen in Java Klassendefinition ist Beschreibung der Struktur (Variablen) und des Verhalten (Methoden) von Objekten Klassen beginnen in Java mit einem Großbuchstaben. Klassen haben Konstruktoren,

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

Java I Vorlesung Vererbung und Sichtbarkeit

Java I Vorlesung Vererbung und Sichtbarkeit Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

Statische Methoden, Vererbung, Benutzereingabe

Statische Methoden, Vererbung, Benutzereingabe Statische Methoden, Vererbung, Benutzereingabe Dr. Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-16-17/infoeinf WS16/17 Action required now

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck. Programmierkurs Java Vererbung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Ähnlichkeiten zwischen Klassen? Beispiel: Klassen Auto

Mehr

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Klassen mit Instanzmethoden

Klassen mit Instanzmethoden Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07

Mehr

JAVA - Methoden

JAVA - Methoden Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Einführung in die. objektorientierte Programmierung

Einführung in die. objektorientierte Programmierung Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben

Mehr

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen

Mehr

Kapitel 4: Klassen und Unterklassen

Kapitel 4: Klassen und Unterklassen Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind

Mehr

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische

Mehr

JAVA - Methoden - Rekursion

JAVA - Methoden - Rekursion Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen

Mehr

Einführung in die Programmierung für NF. Vererbung

Einführung in die Programmierung für NF. Vererbung Einführung in die Programmierung für NF Vererbung Ziele Vererbungsprinzip der objektorien=erten Programmierung verstehen und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

6. Globalübung (zu Übungsblatt 8)

6. Globalübung (zu Übungsblatt 8) 6. Globalübung (zu Übungsblatt 8) Inhalt: Klassenhierarchien Verdecken von Attributen Überschreiben von Methoden Codeanalyse Analyse von JAVA-Programmen Semestralklausur Klausurtermin: Mittwoch 11.01.2006

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Objektorientierung in C++ (2) Beziehungen zwischen Klassen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 530 Beziehungen zwischen Klassen Assoziation

Mehr

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Grundlagen der Informatik Vererbung von Klassen

Grundlagen der Informatik Vererbung von Klassen Grundlagen der Informatik Vererbung von Klassen Prof. Dr.-Ing. Thomas Wiedemann Prof. Dr.rer.nat. Ralph Großmann Fachgebiet Informatik / Mathematik Überblick zum Inhalt Klassen-2 Klassenhierarchie / Definition

Mehr

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

Vererbung. Was versteht man unter dem Begriff Vererbung?

Vererbung. Was versteht man unter dem Begriff Vererbung? Was versteht man unter dem Begriff Vererbung? Elternkonstrukt - Datenelemente - Methoden o Deklaration o Definition Kindkonstrukt... Main... Elternkonstrukt b = new Kindkonstrukt() b.fn() Komponenten &

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Algorithmen und Datenstrukturen 06

Algorithmen und Datenstrukturen 06 31. Mai 2012 1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Objekt-Orientierte Programmierung

Objekt-Orientierte Programmierung Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt

Mehr

Musterlösung Stand: 5. Februar 2009

Musterlösung Stand: 5. Februar 2009 Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung Teil 3 2 Übersicht der heutigen Inhalte Pakete Beispiel zur Verdeckung Polymorphie Modifikatoren bei Klassenelementen 3 Zusammenhang

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

1. Abstrakte Klassen

1. Abstrakte Klassen 1. Abstrakte Klassen Lernziele 1. Abstrakte Klassen Lernziele: Das Konzept abstrakter Klassen und abstrakter Methoden kennen und verstehen, in der Lage sein, abstrakte Klassen und Methoden in Java zu formulieren,

Mehr