Objektorientierte Programmierung (mit Java) Praktikum
|
|
- Nicolas Knopp
- vor 8 Jahren
- Abrufe
Transkript
1 Objektorientierte Programmierung (mit Java) Praktikum Klassen und Vererbung 1
2 Inhalt (1) Wiederholung (2) Beziehungen zwischen Klassen (1) Assoziation (2) Aggregation (3) Komposition (4) Vererbung (3) Klassen (4) Vererbung (5) Die Klase Object (6) Besondere Formen von Klassen, Methoden und Variablens 2
3 Klassen allgemein Funktionen heißen innerhalb von Klassen Methoden. Variablen werden als Eigenschaften oder Instanzvariablen bezeichnet. Die folgende Abbildung zeigt die grafische Darstellung einer Klasse in der der UML-Notation name alter BAWPerson geburtstag() heiraten(bawperson,date) 3
4 Beziehungen zwischen Klassen Zwischen Klassen können unterschiedliche Beziehungen bestehen. Objekte der einen Klasse haben dabei eine Beziehung zu Objekten einer anderen Klasse oder der gleichen Klasse. Unterscheidung der folgenden Beziehungsarten: Benutzungsbeziehungen (user relation): Ein Objekt benutzt ein anderes Objekt. hat-ein-beziehung (has-a-relation): In diesem Fall besitzt ein Objekt eine Referenz auf ein anderes Objekt. Es ist somit eine besondere Benutzungsbeziehung. Teil-von-Beziehung (part-of-relation): In diesem Fall bezeichnet man das referenzierte Objekt als (physikalischen) Teil des referenzierenden Objekts (Beispiel: Motor eines Autos). Dies ist eine besondere Form der hat-ein-beziehung. Erreichbarkeitsbeziehung: Ein Objekt erreicht ein anderes Objekt, wenn man durch wiederholtes Selektieren eines Attributs von X nach Y kommt (Auto.rad1.felge) Ist-ein-Beziehung (is-a-relation): Jedes Objekt einer speziellen Klasse ist auch ein Objekt aller seiner allgemeinen Klassen, z. B. ist ein Holzblasinstrument ein Blasinstrument oder eine Quadrat ist auch eine Raute. 4
5 Beziehungen zwischen Klassen Assoziation Aggregation Komposition Vererbung horizontale Beziehungen hierarchische Beziehungen 5
6 Assoziation Instanzen einer Klasse können Verbindungen zu anderen Instanzen der gleichen oder andere Klassen eingehen. Diese Beziehungen werden Assoziationen genannt. Am Beispiel im Bestellwesen soll dies verdeutlicht werden: Einzelposten Produkt menge istgeliefert preis() bezeichnung einkaufspreis verkaufspreis Assoziationen werden in der UML durch eine Verbindungslinie zwischen den beteiligten Klassen angezeigt. 6
7 Multiplizität von Assoziationen (1/2) Ein Assoziationsende besitzt in der Regel eine Multiplizität, welche eine untere und eine obere Grenze für die Anzahl der jeweils verbundenen Instanzen angibt genau eine verbundene Instanz 0..* beliebig viele verbundene Instanzen (0..n) 0..1 ein oder keine verbundene Instanz 1..* unbegrenzt viele verbundene Instanzen, aber mindestens eine (1..n) 3 genau drei verbundene Instanzen 7
8 Multiplizität von Assoziationen (2/2) Einzelposten menge istgeliefert preis() produkt 0..* 1..1 Produkt bezeichnung einkaufspreis verkaufspreis 8
9 Hinweise zur Multiplizität Interpretation: Zu jedem Einzelposten einer Bestellung gehört genau Produkt Zu jedem Produkt kann es beliebig viele Einzelposten geben (also auch keine). Abkürzungen: * * Assoziationen können Namen besitzen. 9
10 Navigierbare Assoziationen Stehen zwei Klassen miteinander in Beziehung, dann müssen die Instanzen nicht unbedingt Kenntnis von der jeweils anderen Instanz haben. In diesem Fall spricht man von navigierbaren (unidirektionalen) Assoziationen. Haben beide Seiten Kenntnis voneinander, spricht man von bidirektionalen Assoziationen. 10
11 Beispiel für f r navigierbare Assoziationen Einzelposten menge istgeliefert preis() produkt 0..* 1..1 Produkt bezeichnung einkaufspreis verkaufspreis Interpretation Der Einzelposten einer Bestellung kennt zwar sein Produkt. Ein Produkt kennt in der Regel in der Beziehung der Bestellung seine Einzelposten nicht. Hinweis: Für Assoziationen müssen bei der Implementierung der Klassen Instanzvariablen angelegt werden, die häufig in der Modellierung nicht angegeben werden. 11
12 Aggregation Bei Aggregationen handelt es sich Assoziationen mit speziellen Eigenschaften: Es besteht dabei ein Teil-Ganzes-Verhältnis zwischen den verbundenen Instanzen. Die Ganz-Instanz hat dabei eine Verantwortung für die Teil- Instanz: z.b. beim Löschen des Ganz-Instanz müssen u. U. auch die Teilinstanzen gelöscht werden. 12
13 Beispiel für f Aggregationen Bestellung eingangsdatum rechnungsdatum nummer bestellwert erledigen() abschliessen() 1 * 1 bestellungen Kunde name adresse bonität() bestellposten 1..* Einzelposten menge istgeliefert preis() * 1 produkt Produkt bezeichnung einkaufspreis verkaufspreis 13
14 Komposition Kompositionen sind Aggregationen mit bestimmten Einschränkungen: Teilobjekte einer Komposition dürfen nur von Operationen der Ganzes-Klasse entfernt oder in ihrer Identität verändert (d.h. ausgetauscht) werden. Teilobjekte dürfen nicht Teil anderer Kompositionen sein. Teilobjekte einer Komposition werden beim Zerstören des Ganzen automatisch (kaskadierend) zerstört. 14
15 Darstellung von Kompositionen Hand 1 5 Finger 15
16 Vererbung - Definition Allgemeine Definition: Eine Übertragung bestimmter Eigenschaften von vorhandenen auf neue Klassen wird in Anlehnung an die Vererbungslehre der Biologie als Vererbung bezeichnet. Übertragung auf die Objektorientierung: Unter Vererbung wird die Fähigkeit einer Klasse verstanden, Eigenschaften und Methoden automatisch von einer Klasse zu übernehmen. 16
17 Bezeichnungen Die vererbende Klasse wird Basisklasse oder Oberklasse oder Superklasse genannt. Die erbende Klasse wird als abgeleitete Klasse oder Unterklasse oder Subklasse bezeichnet. 17
18 UML-Darstellung der Vererbung name BAWPerson setname() getname() kredit BAWSparer getkredit() setkredit() 18
19 Beispielaufgabe Stellen Sie diese Klassen in einer Vererbungshierarchie dar. Fortbewegungsmittel Fahrrad Fahrzeug Motorboot PKW Farbe Baujahr Farbe ändern fahren Farbe Baujahr Typ Farbe ändern Typ ändern fahren Farbe Baujahr Leistung Farbe ändern fahren Farbe Baujahr Leistung Länge Farbe ändern fahren Länge anzeigen Farbe Baujahr Leistung Sitzplätze Farbe ändern fahren Sitzplätze angeben 19
20 Lösung der Beispielaufgabe Oberklasse Fortbewegungsmittel Farbe Baujahr Farbe ändern fahren Oberklasse Unterklasse Leistung Fahrzeug Typ Fahrrad Typ ändern Unterklasse Sitzplätze PKW Sitzplätze angeben Länge Motorboot Länge anzeigen 20
21 Generalisierung und Spezialisierung Spezialisierung (Top down): Klassen einer höheren Abstraktionsebene werden in konkreteren Klassen verfeinert/ spezialisiert. Spezielle neue Eigenschaften werden einer Subklasse hinzugefügt. Dies können neue Eigenschaften, neue Methoden oder weiter verfeinerte Methoden sein. Generalisierung (Bottom Up): Gemeinsamkeiten existierender Klassen werden in einer Basisklasse zusammengefasst/ abstrahiert. Die Unterschiede in dieser Klasse werden unterdrückt. Beispiele für eine Generalisierung: Studenten, Angestellte, Lehrer sind allesamt Personen. Sie besitzen jeweils einen Namen, eine Anschrift, ein Geschlecht, etc. Sie unterscheiden sich aber in ihren speziellen Klassen Beispiel für Spezialisierungen: Rauten und Parallelogramme sind spezielle Vierecke. Ein Quadrat ist ein spezielles Rechteck. 21
22 Vorteile der Vererbung Vererbung ist eine Schlüsseltechnik für die Wiederverwendung von Programmbausteinen. Die Methoden und Attribute von Oberklassen können in abgeleiteten Unterklassen genutzt werden, ohne dass sie neu definiert werden müssen. In Unterklassen können Erweiterungen hinzugefügt werden. In Unterklassen können Verfeinerungen vorgenommen werden. Die Funktionalität einer Oberklasse kann von der Unterklasse überschrieben werden. 22
23 Definition einer Klasse in Java name alter BAWPerson geburtstag() heiraten(bawperson,date) public class BAWPerson { String name; int alter; void geburtstag() { alter ++;}; void heiraten (BAWPerson ehepartner, Date datum) {... }; } 23
24 Hinweise zum Umgang mit Klassen Attribute können von beliebigen Typen oder Klassen sein. Innerhalb einer eigenen Klasse kann man auf Instanzvariablen mit Hilfe des Schlüsselworts this auf das eigene Objekt zugreifen. public class BAWZahl { int zahl; public setzahl(int zahl) { this.zahl = zahl; } } 24
25 Parameterlisten mit Datentypen (1/2) Methoden können Parameterlisten mitgegeben werden. Parameter (also auch mit primitiven Datentypen) werden in JAVA per call by value übergeben. Beim Aufruf einer Methode wird also der aktuelle Wert in die Parametervariable kopiert und an die Methode übergeben. Veränderungen der Parametervariablen innerhalb der Methode bleiben lokal und wirken sich nicht auf den Aufrufer aus. 25
26 Beispiel für f r die Parameterübergabe 1 public void print(int wieoft) 2 { 3 while (wieoft-- > 0) { 4 System.out.print(wieoft)); 5 } 6 System.out.println() 7 } 8 9 void aufrufen() { 10 int a = 3; 11 this.print (a); 12 this.print (a); 13 this.print (a); 14 } 26
27 Ausgabe des Beispiels
28 Parameterübergaben mit Objekten Anders verhalten sich übergebene Objekte. Dies werden nicht kopiert, sondern vielmehr die Referenz auf das Objekt wird kopiert. Änderungen an den Objekten werden auch in der aufgerufenen Methode wirksam 28
29 Beispiel für f r die Parameterübergabe mit Objekten 1 public class BAWZaehler { 2 int zahl; 3 public BAWZaehler() { zahl = 3; } 4 static public void dec(bawzaehler obj) {obj.zahl--;} 5 static public void main(string[] args) { 6 BAWZaehler zaehler = new BAWZaehler(); 7 System.out.println(zaehler.zahl); // 3 8 BAWZaehler.dec(zaehler); 9 System.out.println(zaehler.zahl); // 2 10 BAWZaehler.dec(zaehler); 11 System.out.println(zaehler.zahl); // 1 12 } 13 } 29
30 Instanzen von Klassen (1/2) Klassen verhalten sich ähnlich wie Typen, d.h. durch die Definition wird grundsätzlich noch kein Speicherplatz reserviert. Es existieren noch keine Instanzen dieser Klasse. Bei Typen wird erst durch Anlegen von Variablen Speicherplatz reserviert. Entsprechend wird bei Klassen erst durch Anlage von Instanzen Speicher reserviert. 30
31 Instanzen von Klassen (2/2) In Java kann man sehr leicht Variablen zu Klassen anlegen: BAWKlasse variable; Durch das Anlegen einer Variablen wurde aber immer noch kein Objekt dieser Klasse erzeugt. Die Erzeugung einer Instanz erfolgt JAVA durch den Befehl new und der Angabe eines Konstruktors: meinobjekt = new BAWKlasse(); Der Zugriff auf die Eigenschaften und Methoden kann auf eine Instanz durchgeführt werden. Dies erfolgt über den Operator. wie folgt: meinobjekt.name = Hans // Zugriff auf eine // Instanzvariable 31
32 Zugriffsattribute (1/3) Was sind Zugriffsattribute? Zugriffsattribute steuern den Zugriff auf die Eigenschaften und Methoden einer Klasse. JAVA kennt drei Schutzebenen oder Zugriffsattribute: public öffentlich Alle Instanzen können auf diese Eigenschaften und Methoden zugreifen. Sie sind von außerhalb der Klasse aufrufbar und stellen somit die Schnittstelle der Klasse nach außen dar. private privat Auf diese Teile können nur Methoden, die innerhalb der Klasse liegen, zugreifen. Instanzen können in der Regel nicht auf diese Methoden und Attribute zugreifen. Instanzvariablen sollten dieses Attribut besitzen. Mit Hilfe von öffentlichen Getter- und Setter-Methoden sollten die Attribute geändert werden. protected geschützt Auf diese Teile kann nicht von Instanzen anderer Klassen zugegriffen werden. Methoden der von dieser Klasse abgeleiteten Klassen haben jedoch Zugriff (vgl. Kapitel Vererbung). Instanzen der Klasse können nur innerhalb des gleichen Package auf diese Elemente zugreifen. 32
33 Zugriffsattribute (2/3) Damit sollte eine Methode bzw. Instanzvariablendefintion immer wie folgt aussehen: [<Schutzattribut>] <Klasse/Typ> <Bezeichner> [= <Ausdruck> ]; [<Schutzattribut>] <Klasse/Typ> <Methodenname> ([Parameterliste]]) {[<Anweisungsliste>]}; Wird das Schutzattribut nicht angegeben, sind die Methoden bzw. Attribute automatisch von der Art public. 33
34 Zugriffsattribute (3/3) Ein weiteres Zugriffsattribut für einen besonderen Gebrauch ist das Attribut package. Es regelt den Zugriff auf die Klassen. Öffentliche Klassen sind immer im gleichen Package sichtbar und nutzbar. Sollten Klassen aus anderen Packages genutzt werden, müssen diese mit import <Packagename>.<Klassenname> für eine spezielle Klasse oder mit import <Packagename>.* für alle Klassen des Package angemeldet werden. Definition des Packages der Klasse am Anfang der Datei mit package <Packagename> Je Package dürfen die Namen der öffentlichen Klassen nur einmal vorkommen. 34
35 Hinweise zum Umgang mit den Schutzmechanismen Attribute können beliebige Datenstrukturen und Objekte von Klassen sein. Attribute sollten nach Möglichkeit nie im public-bereich deklariert werden. Methoden sollten nur im public-bereich deklariert werden, wenn diese für den Benutzer notwendig sind und somit eine öffentliche Schnittstelle darstellen. Methoden der eigenen Klassen können auf alle Attribute und Methoden ihrer Klasse, unabhängig von der Schutzebene (public, protected oder private) zugreifen. Instanzen (dynamisch oder statisch) können nur auf die öffentlichen Methoden oder Eigenschaften (Schutzebende public) einer Klasse zugreifen. 35
36 Konstruktoren Ein Konstruktor wird automatisch aufgerufen, wenn ein Objekt/ eine Instanz der Klasse erzeugt wird. Dies geschieht durch Anlage mit Hilfe des Operators new. Der Konstruktor dient der Initialisierung der Eigenschaften einer Klasseninstanz. Sie sind somit besondere Methoden, welche nur bei der Erzeugung von Objekten, nicht jedoch innerhalb von Methoden aufgerufen werden können. Innerhalb von Methoden können nur neue Instanzen angelegt werden. In diesem Fall wird dann ein neues Objekt mit dem Operator new angelegt. 36
37 Hinweise zu Konstruktoren (1/2) Jede Klasse hat mindestens einen Konstruktor. Wenn kein Konstruktor deklariert ist, wird der Standardkonstruktor aufgerufen, der "nichts tut". Dieser ist parameterlos. Konstruktoren haben keinen Rückgabewert (auch nicht void). Konstruktoren werden in der public-schutzebene einer Klasse deklariert. Ein Konstruktor kann nicht explizit aufgerufen werden (z.b. zum Zweck der Reinitialisierung). 37
38 Hinweise zu Konstruktoren (2/2) Konstruktoren können überladen werden, d.h. mit unterschiedlichen Parameterlisten versehen werden. public class AClass { public AClass() { }; public AClass(int aint) { }; public AClass(double adouble) { }; public AClass(String astring,double adouble) { }; } Wird mindestens ein expliziter Konstruktor deklariert, so muss auch der Standardkonstruktor deklariert/ definiert werden (Prinzip "alle oder keiner"). Konstruktoren sind nicht auf die Initialisierung von Attributen beschränkt, sie können beliebige Operationen ausführen. 38
39 Konstruktoren und this Andere Konstruktoren innerhalb einer Klasse können mit Hilfe des Operators this verwendet werden, d.h. Konstruktoren können sich gegenseitig aufrufen: public class BAWNote { private int note; public BAWNote(int anote) { this.note = anote; } public BAWNote() { this(0); } } Dabei muss der Aufruf eines anderen Konstruktors die erste Anweisung innerhalb des Konstruktors sein. Ein Aufruf aus normalen Methoden ist nicht gestattet. 39
40 Klasseninitialisierung Bei der Klasseninitialisierung gilt folgenden Reihenfolge: zuerst werden alle Instanzvariablen erzeugt und ggf. initialisiert. Nicht initialisierte Instanzvariablen können in einen Initialisierungsblock initialisiert werden. Nun wird der Konstruktor der Klasse aufgerufen. 40
41 Beispiel für f r eine Klasseninitialisierung 1 public class BAWTest { 2 public int value = 0; 3 public BAWTest() { 4 value = 2; 5 System.out.println("value = "+value); 6 } 7 public static void main(string[] args) { 8 BAWTest test = new BAWTest(); 9 } { 12 System.out.println("value = "+value); 13 value = 1; 14 System.out.println("value = "+value); 15 } 16 } 41
42 Destruktoren Was ist ein Destruktor Der Destruktor wird beim Zerstören eines Objekts aufgerufen. dient zum Aufheben der Zuordnung aller Ressourcen, die während der Lebenszeit des Objekts getroffen worden sind, z.b.: Dateien müssen noch geschlossen werden. Es müssen noch Logging-Informationen geschrieben werden. Dynamischer Speicher muss noch freigegeben werden (in C). u. v. m. 42
43 Destruktoren in Java JAVA besitzt keine Destruktor in diesem Sinne. Es gibt eine Methode finalize, die ähnliches bewirkt public void finalize() {}; JAVA kennt einen so genannten Garbage Colletor, der in unregelmäßigen Abständen den Speicher aufräumt und dann nicht mehr referenzierte Objekte löscht. In diesem Zusammenhang wird die Methode finalize aufgerufen und zwar kurz vor dem Entfernen des Objekts aus dem Speicher. Die JAVA-Spezifikation garantiert nicht, wann die Methode finalize aufgerufen wird und ob sie überhaupt aufgerufen wird. Die Reihenfolge der Aufrufe von finalize mehrerer Objekte ist willkürlich. Diese Methode sollte niemals direkt aufgerufen werden. Aufrufe des Garbage Collectors können erzwungen werden. 43
44 Garbage Collector Aufrufe des Garbage Collectors können erzwungen werden. System.runFinalizersOnExit(true) Beim Beenden der virtuellen Maschine werden alle finalize-methoden aufgerufen. Die Standardeinstellung ist false. Ab JDK ist diese Methode als deprecated markiert, d. h. die Methode sollte nicht mehr verwendet werden. System.runFinalization() Dies ist eine neue Version der obigen Methode (ab JDK 1.3). System.gc() Die ruft den Garbage Collector zur Laufzeit auf. Für alle nicht mehr referenzierten Objekte wird finalize ausgeführt. Tipp für JAVA-Programmierer: Implementieren Sie sich eine Methode public void dispose(), die Sie immer selbstständig vor dem Freigeben eines Objekts aufrufen. dispose ist der Standardname in JAVA. 44
45 Statische Elemente von Klassen Allgemeines zu statischen Methoden und Variablen: Statische Variablen und Methoden sind nicht an die Existenz eines Objekts einer Klasse gebunden. Sie können jederzeit über den Klassennamen (ohne dass ein Objekt der Klasse existiert) auf statische Methoden oder Variablen der Klasse zugreifen (mit Operator. ): <Klassenname>.<Methodenname>([<Parameterliste>]) <Klassenname>.<Variablenname> Statische Methoden können nur mit statischen Variablen und Methoden arbeiten. Das Attribut static kann nur im Zusammenhang mit Variablen und Methoden genutzt werden, dies funktioniert nicht in Kombination mit Klassen: static public int eins; static public int getwert(); Die bekannteste statische Methode ist die Methode static public void main(string[] args), mit der man eine Klasse ausführen kann. 45
46 Klassenvariablen Variablen, die innerhalb einer Klasse mit dem Attribut static versehen werden, nennt man Klassenvariablen. Im Gegensatz zu den Instanzvariablen, die an ein Objekt gebunden sind, existieren Klassenvariablen unabhängig von einem Objekt. Jede Klassenvariable wird nur einmal angelegt. Sie kann von allen Methoden der Klasse aufgerufen werden. Da sich alle Methoden die Variable»teilen«, sind Veränderungen, die eine Instanz vornimmt, auch in allen anderen Instanzen sichtbar. Klassenvariablen sind daher vergleichbar mit globalen Variablen, denn ihre Lebensdauer erstreckt sich auf das gesamte Programm. Namenskollisionen können allerdings nicht auftreten, denn der Zugriff von außen erfolgt durch Qualifizierung mit dem Klassennamen in der Form Klassenname.Variablenname. 46
47 Beispiel für f r den Gebrauch von Klassenvariablen Beispiel: Instanzenzähler einer Klasse einzubauen. /* Testauto.java */ public class Testauto { static private int objcnt = 0; public Testauto() { objcnt ++; ; } static void main(string args[]) { Testauto auto1; Testauto auto2 = new Testauto(); System.out.println("Anzahl Testauto-Objekte: " + Testauto.objcnt); } } 47
48 Klassenmethoden Klassenmethoden sind Methoden, die unabhängig von einer bestimmten Instanz existieren. Klassenmethoden werden ebenfalls mit Hilfe des static-attributs deklariert und - analog zu Klassenvariablen - durch Voranstellen des Klassennamens aufgerufen. Da Klassenmethoden unabhängig von konkreten Instanzen ihrer Klasse existieren, ist ein Zugriff auf Instanzvariablen nicht möglich. Diese Trennung äußert sich darin, dass Klassenmethoden keinen this-zeiger besitzen. 48
49 Vererbung Basisklasse eigenschaft1 methode (); public class Basisklasse protected int eigenschaft1; public int methode() { eigenschaft1 = 27; return eigenschaft1; } } AbgeleiteteKlasse eigenschaft2 methode (); public class AbgeleiteteKlasse extends Basisklasse { private int eigenschaft2; public int methode() { eigenschaft2 = 3; return super.methode()+eigenschaft2; } } extends zeigt die Vererbung an 49
50 Wichtige Hinweise zur Vererbung Solle beide Klassen verwendet werden, so müssen diese öffentlich sein (Schutzattribut public). Da jede öffentliche Klasse in einer eigenen.java-datei abgelegt werden muss, ergeben sich zwei Dateien. Mit Hilfe von super kann auf die namensgleiche Methode der Oberklasse zugegriffen werden. super verweist somit auf die eigene Instanz bezogen auf die Oberklassen. Zuerst wird in der direkten Oberklasse nach der Methode oder Eigenschaft gesucht. Wird hier nichts gefunden, wird anschließend in der Vererbungshierarchie nach oben weitergesucht. Mit Hilfe des Schlüsselwortes this wird auf die eigene Instanz verwiesen. Es wird zuerst in der eigenen Klasse nach einer Methode oder Eigenschaft gesucht. Anschließend wird in der Vererbungshierarchie nach oben gesucht. 50
51 Beispiel für f r den Gebrauch von this und super 1 public class Eins { 2 public int methode1() {return 1;} 3 public int methode2() {return 2;} 4 } 5 public class Zwei extends Eins{ 6 public int methode1() {return 3;} 7 public int methode3() {return 4;} 8 } 9 public class Drei extends Zwei{ 10 public int methode1() {return 5;} 11 public int methode2() {return 6;} 12 public int methode4() {return super.methode1();} 13 public int methode5() {return this.methode1();} 14 public int methode6() {return this.methode2();} 15 public int methode7() {return super.methode2();} 16 public int methode8() {return super.methode3();} 17 public int methode9() {return this.methode3();} 18 } 51
52 Was liefern die folgenden Methodenaufrufe? 19 Eins eins = new Eins(); 20 Zwei zwei = new Zwei(); 21 Drei drei = new Drei(); 22 eins.methode1(); 23 eins.methode2(); zwei.methode1(); 26 zwei.methode2(); 27 zwei.methode3(); drei.methode1(); 30 drei.methode2(); 31 drei.methode3(); 32 drei.methode4(); 33 drei.methode5(); 34 drei.methode6(); 35 drei.methode7(); 36 drei.methode8(); 37 drei.methode9(); 52
53 Was liefern die folgenden Methodenaufrufe? 19 Eins eins = new Eins(); 20 Zwei zwei = new Zwei(); 21 Drei drei = new Drei(); 22 eins.methode1(); // 1 23 eins.methode2(); // zwei.methode1(); // 3 26 zwei.methode2(); // 2 27 zwei.methode3(); // drei.methode1(); // 5 30 drei.methode2(); // 6 31 drei.methode3(); // 4 32 drei.methode4(); // 3 33 drei.methode5(); // 5 34 drei.methode6(); // 6 35 drei.methode7(); // 2 36 drei.methode8(); // 4 37 drei.methode9(); // 4 53
54 Weitere Beispielaufrufe Die folgende Definition ist in Klasse Drei nicht möglich: public int methode10() { return super.methode4();} Dies ist nicht möglich, da in keiner Superklasse die Methode methode4 definiert worden ist. Allerdings ist eine folgende Deklaration möglich: public int methode11(int i) { if(i==1) return 1 else return this.methode11(--i); } Man spricht in diesem Fall von einer Rekursion. Eine Rekursion sollte immer einen Abbruch-Fall aufweisen, bei der die eigene Methode nicht mehr aufgerufen wird. Dieser Abbruch-Fall muss auch vom Programmfluss erreicht werden, da es ansonsten zu einer Endlosrekursion kommt. Dies führt ansonsten zu einem Speicherüberlauf beim Ausführen des Programms. 54
55 Die Klasse Object Jede Klasse, die in JAVA vorhanden ist bzw. vom Programmierer neu erzeugt wird und dabei von keiner Klasse abgeleitet worden ist, besitzt unsichtbar die Superklasse Object. Diese Angabe kann bei der Klassendefinition weggelassen werden. public Neu [extends Object] Die Klasse Object besitzt mehre Methoden, die aufgrund ihrer Vererbung somit in allen Klassen in JAVA sichtbar sind und aufgerufen werden können. 55
56 Methoden der Klasse Object (1/3) boolean equals(object o): Diese Methode überprüft, ob der Inhalt eines Objekts identisch mit den Inhalt eines anderen Objekts ist. Die Methode muss in abgeleiteten Klassen überschrieben werden, wenn Sie auf inhaltliche Gleichheit eines Objekts testen wollen (mit Hilfe des Operators ==). Ansonsten wird überprüft, ob es sich um dieselbe Referenz auf das entsprechende Objekt handelt (Standard-Implementation). Beispiel: Objekt: 1 1 Variable: a b c Somit liefern die folgenden Vergleiche a==b // true a==c // false 56
57 Methoden der Klasse Object (2/3) Object clone(): Die Methode clone erzeugt ein neues Objekt als (möglichst) exakte Kopie des aktuellen Objekts Achtung: Bei Nutzung der Standardimplementation gilt nach clone: class Neu{ }; Neu eins,zwei; eins = new Neu(); zwei = eins.clone(); eins == zwei // liefert false!! String tostring(): Die Methode liefert eine String-Repräsentation des Objekts. 57
58 Methoden der Klasse Object (1/3) Bei der Implementierung der Methode equals sollten Sie immer prüfen, ob das Objekt von der gleichen Klasse ist. Hierfür gibt des das Konstrukt instanceof: public class BAWKlasse { public int data; public boolean equals(object o) { if(!(o instanceof BAWKlasse)) return false; return (((BAWKlasse)o).data == this.data); // (BAWKlasse) wandelt Objekte abgeleiteter // Klassen in ein Objekt der // Klasse BAWKlasse um Casting } } 58
59 Besondere Formen Finale Klassen, Methoden und Attribute Elemente, die das Attribut final besitzen, können nicht mehr modifiziert werden. Bei Variablen werden so Konstanten erzeugt final public float PI = 3.14f; Bei Methoden dürfen diese nicht mehr überladen werden, d.h. eine abgeleitete Klasse darf diese Methode nicht mehr überschreiben. Genauso gibt es finale Klassen. Von diesen Klassen dürfen keine abgeleiteten Klassen mehr erzeugt werden, d.h. final class BAWFinal { } class BAWNichtErlaubt extends BAWFinal { } nicht erklaubt // ist 59
60 Besondere Formen - Abstrakte Klassen und Methoden Abstrakte Klassen sind Klassen, die als Vorlage für andere Klassen dienen. Von abstrakten Klassen dürfen keine Instanzen gebildet werden. Somit stellen sie sicher, dass abgeleitete Klassen die Methoden überladen, welche in abstrakten Klassen definiert werden. Eine abstrakte Klasse wird definiert, indem die Klasse als abstrakt gekennzeichnet wird oder eine abstrakte Methode definiert wird. (Die Klasse muss dann als abstract deklariert werden). abstract class <Klassenname> { }; public abstract <Typ/Klasse> <Methodenname>(<Parameterliste>) [{ }] Die Methoden können einen Rumpf besitzen. Dieser ist optional. Sofern eine Nutzungsgrundlage für die Methode gegeben werden soll, die mit super aufgerufen werden soll, kann dies sinnvoll sein. Es können Variablen von abstrakten Klassen erzeugt werden. 60
61 Beispiel für f r abstrakte Klassen abstract class BAWAbstract { public abstract String getname(); } public final class BAWFinal extends BAWAbstract { public String getname() { return BAWFinal ;} } public class BAWAbgeleitet extends BAWAbstract { public String getname() { return BAWAbgeleitet ;} } BAWAbstract arr[] = new BAWAbstract[2]; arr[0] = new BAWFinal(); arr[1] = new BAWAbgeleitet(); for( int i=0; i<arr.length;i++) System.out.println(arr[i].getName()) 61
62 Wrapper-Klassen bilden Hüllen um Klassen oder Objekte liefern eine einheitliche Schnittstelle nach außen, wenn die internen Klassen oder Objekte andere Schnittstellen (APIs) besitzen. Wrapper-Klassen sind besonders dienlich, wenn Klassen von anderen Herstellern in das eigene Umfeld mit festgelegten Namenskonventionen übernommen werden. BubbleSort WrapperBubbleSort makebubblesort QuickSort sort WrapperQuickSort Wrapper- Klassen makequicksort sort 62
63 Wrapper-Klassen für r primitive Datentypen Primitiver Datentyp void byte short int long float double boolean char Wrapper-Klasse Void Byte Short Integer Long Float Double Boolean Character 63
64 Hinweise zu den Wrapper-Klassen für r die primitiven Datentypen Vereinfachte Darstellung der Klasse: Integer private int intvalue Hinweise zum Gebrauch Die Klassen befinden im Package java.util. Instanziierung mit Integer anint = new Integer(19); 64
65 Typische Methoden der Wrapper-Klassen zu den primitiven Datentypen Integer(int value) Integer(String value) Short(int value) intvalue() shortvalue() longvalue() parseint(string value) Konstruktor zum Erzeugen eines Objekts liefert den gespeichert int-, short-, long-wert zurück. versucht einen String in einen int-wert zu konvertieren. tostring() liefert einen String zurück, der den gespeicherten Wert repräsentiert valueof(string value) erzeugt ein Integer-, Byte-, Long-, -Objekt mit dem Wert von value und liefert dieses zurück 65
66 Konstanten für f r numerische Wrapper- Klassen So gibt es in jeder Die Klassen Byte, Short, Integer, Long, Float und Double kennen die Konstanten MIN_VALUE (kleinste Element des Wertbereichs) MAX_VALUE (größte Element des Wertbereichs) In den Klassen Float und Double gibt es zusätzlich die Konstanten NEGATIVE_INFINITY (minus unendlich), POSITIVE_INFINITY (plus unendlich) und NaN (undefiniert). 66
67 Die Klasse Math Die Klasse Math stellt zahlreiche mathematische Rechenalgorithmen zur Verfügung. Die Klasse Math liegt im Standard-Package java.lang. Sie braucht somit nicht eingebunden wird. Folgende Konstanten existieren: static double E static double PI die Basis des natürlichen Algorithmus e Die Zahl Pi. 67
68 Methoden der Klasse Math (1/3) static double abs(double a) static float abs(float a) static int abs(int a) static long abs(long a) static double acos(double a) static double asin(double a) static double atan(double a) static double atan2(double y, double x) static double ceil(double a) static double cos(double a) static double exp(double a) liefert den Betragswert der Zahl a liefert den arc coninus des Winkels im Bereich von 0.0 bis PI. liefert den arc sinus des Winkels im Bereich von PI/2 bis PI/2. liefert den arc tangenz des Winkels im Bereich von PI/2 bis PI konvertiert die rectangularen Koordinaten (x,y) zu einem Polaren Winkel. Beispiel: Math.toDegrees(Math.atan2(1.0,1.0)) ==1 liefert die kleinste Ganzzahl (als double-wert), die größer als die Zahl a ist liefert den cosinus der Zahl a liefert die Potenz der Zahl a zur eulerschen Zahl e 68
69 Methoden der Klasse Math (2/3) static double floor(double a) static double log(double a) static double max(double a, double b) static float max(float a, float b) static int max(int a, int b) static long max(long a, long b) static double min(double a, double b) static float min(float a, float b) static int min(int a, int b) static long min(long a, long b) liefert die größte Ganzahl (als double-wert), die nicht größer als das Argument a ist. liefert den natürlichen Logarithmus (zur Basis e)der Zahl a liefert das Maximum der beiden Zahlen liefert das Minimum der beiden Zahlen 69
70 Methoden der Klasse Math (3/3) static double pow(double a, double b) static double random() static double rint(double a) static long round(double a) static int round(float a) liefert die b-te Potenz zur Basis a liefert einen Zufallszahl im Bereich 0.0 x < 1.0 liefert eine ganzzahlige Zufallszahl im Bereich 0 x < a Rundet den Wert a auf eine Ganzzahl static double sin(double a) static double sqrt(double a) static double tan(double a) static double todegrees(double angrad) static double toradians(double angdeg) liefert den cosinus der Zahl a liefert die Quadratwurzel der Zahl a liefert das Ergebnis der Tangenzfunktion der Zahl a liefert den Grad-Wert der Zahl angrad liefert den Randiant-Wert des Winkel angdeg 70
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
MehrVerhindert, 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:
MehrVorkurs 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:
Mehr3 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
MehrJava 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
Mehr3. Konzepte der objektorientierten Programmierung
3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrWintersemester 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
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
MehrJavakurs 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
MehrObjektorientierte 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/
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrJava 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
MehrKapitel 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
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrKapitel 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
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
MehrKapitel 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
MehrObjektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
Mehr5. Abstrakte Klassen
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,
MehrSoftware Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrProgrammierkurs Java
Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen
Mehr1 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
Mehr7. 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
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
Mehr3 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
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
MehrEinfü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
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
MehrGrundlagen 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
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
MehrKlassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla
BlaBla Diese Kennzeichnungen sind nur Erläuterungen und nicht Bestandteil des Diagramms Quelle: P.Grässle, H.Baumann, P.Baumann, UML projektorientiert, Galileo Verlag, 2003 21 Primäre Begriffe Kapselung
MehrSoftware Engineering Interaktionsdiagramme
Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrEine 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,
MehrProgrammiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny 3. UML Klassendiagramm Nachtrag 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
MehrJavakurs 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
MehrFolge 18 - Vererbung
Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,
MehrPrüfungszeuch im Fach Objektorientierte Programmierung WS 2000
Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,
MehrAlgorithmen 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
Mehr5.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
MehrEinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2
EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
MehrProgrammieren Tutorium
Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrSoftware Engineering Klassendiagramme weiterführende Konzepte
Software Engineering Klassendiagramme weiterführende Konzepte Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Klassenattribut: static Implementierung in Java public
MehrJavakurs 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
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrProgrammieren 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
Mehr5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu
Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten
MehrAlgorithmen 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
Mehr5. 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
MehrSichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben
Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den
MehrKlassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrJava 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
MehrEinführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005
Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrÜbungsblatt 3: Algorithmen in Java & Grammatiken
Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16
Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier
MehrProgrammieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen
Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
MehrKostenstellen verwalten. Tipps & Tricks
Tipps & Tricks INHALT SEITE 1.1 Kostenstellen erstellen 3 13 1.3 Zugriffsberechtigungen überprüfen 30 2 1.1 Kostenstellen erstellen Mein Profil 3 1.1 Kostenstellen erstellen Kostenstelle(n) verwalten 4
MehrAbschnitt 12: Strukturierung von Java-Programmen: Packages
Abschnitt 12: Strukturierung von Java-Programmen: Packages 12. Strukturierung von Java-Programmen: Packages 12.1 Strukturierung durch Packages 12.2 Zugriffsspezifikationen 12.3 Zusammenfassung 12 Strukturierung
MehrDrei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E
MehrTevalo Handbuch v 1.1 vom 10.11.2011
Tevalo Handbuch v 1.1 vom 10.11.2011 Inhalt Registrierung... 3 Kennwort vergessen... 3 Startseite nach dem Login... 4 Umfrage erstellen... 4 Fragebogen Vorschau... 7 Umfrage fertigstellen... 7 Öffentliche
MehrArbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
MehrObjektbasierte Entwicklung
Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit
MehrTutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe
Tutorium Informatik 1 Aufgabe 2: Formatierte Ein- und Ausgabe Fachbereich: Elektrotechnik Inhaltsverzeichnis 1 Aufgabe 1 2 Benötigte Funktionen und Schlüsselwörter 2 Robert Halas / FH Regensburg - 2003
MehrEasyWk DAS Schwimmwettkampfprogramm
EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrListe Programmieren Java Überblick
Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 3 Vererbung 4 Schnittstellen 5 Innere Klassen 6 Exceptions 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe 10 Threads 11 GUI-Programmierung
Mehr5.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
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrKlassendiagramm. (class diagram)
: Klassendiagramm http:///topic95.html Klassendiagramm (class diagram) Klassendiagramm Objektdiagramm Komponentendiagramm Kompositionsstrukturdiagramm Verteilungsdiagramm Einstieg Paketdiagramm Aufbau
MehrZählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrVirtueller Seminarordner Anleitung für die Dozentinnen und Dozenten
Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,
MehrDeklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
MehrOutlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang
sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche
MehrII. 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
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrBedienung von BlueJ. Klassenanzeige
Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument
MehrKapitel 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
Mehr13 OOP MIT DELPHI. Records und Klassen Ein Vergleich
13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,
MehrJava für Computerlinguisten
Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
MehrC++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern
C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrIn diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.
Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem
MehrInstitut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode
Mehr