Betreutes Programmieren Vorlesung Informatik II, Blatt 4 Musterlösung
|
|
- Ursula Gerber
- vor 6 Jahren
- Abrufe
Transkript
1 SS 2011 Fakultät für Angewandte Informatik Lehrprofessur für Informatik Prof. Dr. Robert Lorenz Betreutes Programmieren Vorlesung Informatik II, Blatt 4 Musterlösung Programmieraufwand für geübte Programmierer: max. 45 min Programmieraufwand für ungeübte Programmierer: 1 1,5 h Musterlösung: ca. 88 Codezeilen ToDo-Manager Der ToDoManager hilft Ihnen, Aufgaben ihrer Wichtigkeit nach zu sortieren. Sie geben Aufgaben mit ihrer Beschreibung und einer Priorität in das System ein, und der Manager wählt eine geeignete Sortierung für Sie aus, die er Ihnen dann präsentiert. Aufgabenstellung Setzen Sie das UML-Klassendiagramm aus Abbildung 1 in Java-Code um und berücksichtigen Sie dabei die weiteren Beschreibungen und Hinweise nach dem Diagramm. + Aufgabe - beschreibung: String nicht-leer - prioritaet: Integer 0, 5 + Aufgabe(beschreibung: String, prioritaet: Integer) + getbeschreibung(): String + getprioritaet(): Integer + equals(o: Object): Boolean + Object 0..* - aufgaben 1..1 «interface» Iterable<Aufgabe> + iterator(): Iterator<Aufgabe> + Aufgaben - unique: Aufgaben = null - Aufgaben() + instance(): Aufgaben + addaufgabe(aufgabe: Aufgabe) + popaufgabe(): Aufgabe + iterator(): Iterator<Aufgabe> Abbildung 1: UML-Klassendiagramm der Datenkomponenten Überlegen Sie, wie Sie die Einschränkungen der Attribute von Aufgabe umsetzen können. Die Methode equals() soll genau dann true zurückliefern, wenn sowohl die Beschreibung als auch die Priorität von zwei Aufgaben gleich sind. Die Methode addaufgabe() soll eine neue Aufgabe nur dann zum System hinzufügen, wenn nicht bereits eine identische Aufgabe im System vorhanden ist. Nicht gezählt: Leerzeilen, Kommentare, imports. In eigenen Zeilen: und (ca. 30x), jede Anweisung, außer bei Deklarationen gleichen Typs (z. B. int a, b, c = 0,... ) oder bei einer einzelnen Anweisung nach einem if oder einem else. Nicht benutzt:?:-operator. 1
2 Die Methode popaufgabe() gibt die dringlichste Aufgabe, die im System enthalten ist, zurück und löscht sie aus dem Container. Wie Sie sehen, soll die Klasse Aufgaben die Schnittstelle Iterable implementieren. Weiter erkennen Sie das Singleton-Muster, in dem Aufgaben zu erstellen ist. Erstellen Sie eine main()-methode, um Ihre Implementierung zu testen. Hinweise Sollten Sie noch grundlegendere Hinweise als die in diesem Abschnitt gegebenen benötigen, dann werfen Sie einen Blick in den Anhang ab Seite 6. Dort sind weitergehende Erklärungen zusammengestellt. Beginnen Sie mit der Klasse Aufgabe. Eine Möglichkeit die Einschränkungen zu berücksichtigen ist, im Konstruktor die übergebenen Parameter abzufragen und ggf. die Attribute passend zu initialiseren. 1 Wenn Sie in der Methode equals() die beiden Beschreibungen miteinander vergleichen, benutzen Sie die Methode equalsignorecase() der Klasse String. Auf diese Weise wird nicht zwischen Groß- und Kleinschreibung unterschieden. Lösung Die Klasse Aufgabe wird wie für Java üblich in einer eigenen Datei implementiert; sie heißt Aufgabe.java. Im Konstruktor wird der Hinweis aus Fußnote 1 auch auf das Attribut beschreibung ausgedehnt. Die beiden getter-methoden sind Standard; ebenso die equals()-methode. public class Aufgabe private String beschreibung; private int prioritaet; public Aufgabe(String beschreibung, int prioritaet) this.beschreibung = beschreibung; if (beschreibung == null beschreibung.length() == 0) this.beschreibung = "(keine Beschreibung)"; this.prioritaet = prioritaet; if (prioritaet > 5) this.prioritaet = 5; if (prioritaet < 0) this.prioritaet = 0; public String getbeschreibung() return beschreibung; public int getprioritaet() return prioritaet; public boolean equals(object o) if (o instanceof Aufgabe && prioritaet == ((Aufgabe) o).prioritaet && 1 Wird bspw. eine Priorität größer als 5 übergeben, wird das Attribut prioritaet trotzdem auf den Wert 5 gesetzt. 2
3 beschreibung.equalsignorecase(((aufgabe) o).beschreibung)) return true; return false; Kompiliert wird die Klasse mit dem Befehl javac Aufgabe.java. Bei der Klasse Aufgaben schreiben Sie zunächst das Singleton-Muster, das Sie bereits aus der Vorlesung kennen. Lösung Die Klasse Aufgaben wird in einer zweiten Datei Aufgaben.java implementiert. Zunächst wird nur der Rumpf geschrieben, der das Singleton-Muster implementiert, und Iterator importiert, da die Schnittstelle Iterable implementiert werden soll. Da nur Objekte des gleichen Typs verwaltet werden, wird die Schnittstelle noch parametrisiert und es wird sogar Iterable<Aufgabe> implementiert. Da noch unklar ist, welche weiteren Klassen oder Schnittstellen benötigt werden, wird auf jeden Fall mal Platz für zusätzliche Importe vorgemerkt. import java.util.iterator; zusätzliche Importe public class Aufgaben implements Iterable<Aufgabe> private static Aufgaben unique = null; private Aufgaben() Rumpf des privaten Konstruktors Aufgaben() public static Aufgaben instance() if (unique == null) unique = new Aufgaben(); return unique; Attribut aufgaben Methode addaufgabe() Methode popaufgabe() Methode iterator() Die Methoden addaufgabe(), popaufgabe() und iterator() werden später vorgestellt; ebenso die Wahl für das Attribut aufgaben. Da noch unklar ist, ob der Konstruktor etwas zu tun hat oder nicht, wird seine Füllung ebenfalls verschoben. 3
4 Überlegen Sie nun, welchen Container von Java Sie benutzen könnten, um die einzelnen Aufgaben zu verwalten. Recherchieren Sie in der Dokumentation nach Klassen, die eine Liste oder ein Warteschlange repräsentieren, und benutzen Sie weitestgehend deren Methoden. Lösung Java bietet eine Klasse namens PriorityQueue an, die sich schon selbst darum kümmert, ihre Elemente in der richtigen Reihenfolge vorzuhalten. Es wird also ein weiterer Import benötigt. import java.util.priorityqueue; Nun kann auch das fehlende Attribut deklariert werden, wobei gleich die passende Parametrisierung vorgenommen wird. PriorityQueue<Aufgabe> aufgaben; Die Dokumentation von PriorityQueue spricht davon, dass nur Elemente verwaltet werden können, die miteinander vergleichbar sind. Dazu wird eine eigene Klasse herangezogen, deren einzige Aufgabe es ist, zwei Aufgaben zu vergleichen. Sie wird in einer eigenen Datei namens AufgComp.java implementiert und verwirklicht die Schnittstelle Comparator, wie in der Dokumentation gefordert; auch hier wieder mit der passenden Parametrisierung. import java.util.comparator; public class AufgComp implements Comparator<Aufgabe> public int compare(aufgabe a1, Aufgabe a2) if (a1.getprioritaet() == a2.getprioritaet()) return a1.getbeschreibung().comparetoignorecase(a2.getbeschreibung()); return a2.getprioritaet() - a1.getprioritaet(); Mit dieser zusätzlichen Klasse (kompiliert durch den Aufruf javac AufgComp.java), kann nun im Rumpf des Konstruktors das Attribut aufgaben initialisert werden. Da nur ein Konstruktor existiert, der neben einem Vergleichsobjekt auch eine anfängliche Größe erwartet, wird einfach 10 als Anfangswert mit übergeben mehr Aufgaben will man ja auch nicht erledigen müssen. Der Konstruktorrumpf besteht also nur aus einer Zeile. aufgaben = new PriorityQueue<Aufgabe>(10, new AufgComp()); Die Methode addaufgabe() kann nun wie folgt geschrieben werden, wobei der Aufruf von contains() auf der korrekten Implementierung der equals()-methode fußt sowie die passende Einsortierung auf der korrekten Implementierung der compare()-methode. public void addaufgabe(aufgabe aufgabe) if (!aufgaben.contains(aufgabe)) aufgaben.offer(aufgabe); Die Methode popaufgabe() kann ebenfalls sehr einfach gestaltet werden. public Aufgabe popaufgabe() return aufgaben.poll(); 4
5 Die Methode iterator() verkommt ebenfalls zu einem Einzeiler. Allerdings geht aus der Dokumentation hervor, dass der Iterator die Liste in keiner speziellen Ordnung durchläuft. Die Aufgabe, auf die der Iterator als erstes zeigt, ist also nicht zwangsläufig die Aufgabe, die man über popaufgabe() erhalten würde. Da jedoch in den Anforderungen nicht genau spezifiziert ist, welche Reihenfolge hier maßgebend sein soll, wurde die einfache Variante gewählt und die Reihenfolge nicht berücksichtigt bzw. die Nicht-Reihenfolge von PriorityQueue durchgereicht. public Iterator<Aufgabe> iterator() return aufgaben.iterator(); Nun wird diese Klasse analog mittels javac Aufgaben.java kompiliert. Sollte Ihnen die Implementierung der eigentlichen Verwaltungsoperationen nicht in der angegebenen Zeit gelingen, ist das kein Beinbruch und nicht das Kriterium für die Vergabe des Punktes! Das wesentliche Augenmerk sollten Sie auf die Umsetzung des UML-Diagramms in Code legen, wozu allerdings das Singleton-Muster, die Einschränkungen sowie die Schnittstelle zählen. Lassen Sie in diesem Fall die Methoden addaufgabe() und popaufgabe() leer. Schreiben Sie abschließend eine eigene Klasse, die die main()-methode enthält und in der Sie verschiedene Aufgaben erzeugen und in den Container einfügen. Testen Sie, ob die Reihenfolge richtig ist, ob Aufgaben nicht doppelt eingefügt werden und ähnliches. Lösung Das vorgeschlagene Vorgehen wird in der Datei Main.java umgesetzt. public class Main public static void main(string[] args) Aufgaben.instance().addAufgabe(new Aufgabe("", 2)); System.out.println(Aufgaben.instance().popAufgabe().getBeschreibung()); Aufgaben.instance().addAufgabe(new Aufgabe("", 5)); Aufgaben.instance().addAufgabe(new Aufgabe("", 7)); System.out.println(Aufgaben.instance().popAufgabe().getBeschreibung()); if (Aufgaben.instance().popAufgabe()!= null) System.out.println("Mist!"); Aufgaben.instance().addAufgabe(new Aufgabe("Einkaufen", 4)); Aufgaben.instance().addAufgabe(new Aufgabe("Essen", 2)); Aufgaben.instance().addAufgabe(new Aufgabe("Kochen", 3)); Aufgaben.instance().addAufgabe(new Aufgabe("Einkaufen", 3)); for (Aufgabe a: Aufgaben.instance()) System.out.println(a.getBeschreibung() + " " + a.getprioritaet()); for (Aufgabe a = Aufgaben.instance().popAufgabe(); a!= null; a = Aufgaben.instance().popAufgabe()) System.out.println(a.getBeschreibung() + " " + a.getprioritaet()); Zuletzt wird auch diese Klasse kompiliert (javac Main.java) und anschließend das Programm mit dem Aufruf java Main getestet. 5
6 Weitergehende Erklärungen B.1 Konstruktoren B.2 Singleton-Muster B.3 Vererbung B.3.1 Die Methode equals() B.3.2 Polymorphismus B.4 Schnittstellen B.1 Konstruktoren Eine Erklärung zu Konstruktoren findet sich bereits auf dem letzten Blatt zum Betreuten Programmieren. Das Blatt finden Sie auf der Lehrstuhlseite zum Download. B.2 Singleton-Muster Grundsätzlich handelt es sich bei Mustern um allgemeine Lösungen zu wiederkehrenden Problemen. Diese Lösungen sind meistens in Form von Objekten, deren Methoden und Beziehungen zwischen den Objekten gegeben, falls es sich um mehrere handelt. Das Singleton-Muster löst das Problem, wenn man sicherstellen möchte, dass von einer Klasse höchstens ein Objekt erzeugt werden kann. Aus der Vorlesung wissen Sie, dass dies bei Containerklassen sinnvoll ist. Ein Container kann z. B. ein Lager repräsentieren und zur Verwaltung von Geräten eingesetzt werden. Möchte man nun sichergehen, dass nur ein Lager im System existiert, erstellt man Lager im Singleton-Muster. public class Lager private static Lager unique = null; public static Lager instance() if (unique == null) unique = new Lager(); return unique; private Lager() Rumpf des privaten Konstruktors sonstige Attribute und Methoden für Lager + Geraet - geraete 0..* + Lager unique: Lager = null - Lager() + instance(): Lager Abbildung 2: Singleton in UML Das statische Attribut unique nimmt das einzige Objekt der Klasse auf. Von außerhalb der Klasse kann kein Objekt erzeugt werden, da der Konstruktor private ist. Da die Methode instance() ebenfalls statisch ist, kann Sie ohne ein Objekt, einfach über Lager.instance(), aufgerufen werden. Auf diese Weise bekommt man Zugriff auf das einzige Objekt der Klasse. Alle weiteren Attribute und Methoden werden wie gehabt in die Klasse eingefügt. In UML erkennt man das Singleton-Muster, neben den beiden statischen Komponenten und dem privaten Konstruktor, vor allem an der Multiplizität 1..1, die angibt, dass ein Objekt genau einmal existiert. Dies kann man in Abbildung 2 sehen. Dort ist zusätzlich zu sehen, dass Lager ein Container ist, der beliebig viele Objekte von Geraet verwaltet. Die genauen Verwaltungsoperationen wurden hier der Einfachheit halber weggelassen. 6
7 B.3 Vererbung Dabei handelt es sich um einen integralen Bestandteil der objektorientierten Programmierung (OOP). Die Idee dahinter ist, dass man bereits bestehende Klassen erweitern kann. Aus diesem Grund wird Vererbung in Java mit dem Schlüsselwort extends eingeleitet. Eine abgeleitete Klasse oder Kindklasse übernimmt alle Attribute und Methoden der ursprünglichen Klasse der Elternklasse kann sie aber erweitern und ergänzen. Eine Vererbung drückt eine ist-ein-beziehung aus. Wenn es mehrere gleichartige Klassen gibt, die alle eine gemeinsame Basis besitzen, so ist dies ein guter Kandidat für eine Vererbungshierarchie. Bspw. sind Batman und Superman beides Superhelden. Ein Superheld hat einen Tarnnamen, unter dem er ein normales Leben führt und den er nicht einfach preisgibt, und einen Heldennamen, unter dem er in der Öffentlichkeit auftritt. In Abbildung 3 ist die gemeinsame Basisklasse in UML dargestellt. public class Superheld private String heldenname; private String tarnname; protected String specialgimmick; public Superheld(String tarnname, String heldenname) this.tarnname = tarnname; this.heldenname = heldenname; + Superheld public String getheldenname() return heldenname; protected String gettarnname() return tarnname; - heldenname: String - tarnname: String # specialgimmick: String + Superheld(heldenname: String, tarnname: String) + getheldenname(): String # gettarnname(): String Abbildung 3: UML Superheld Der Code ist die direkte Entsprechung des Diagramms in Java. Wie nach dem Geheimnisprinzip üblich, sind die Namen als private Attribute angelegt. Den Heldennamen darf jeder erfahren, weswegen der entsprechende Getter öffentlich zugänglich ist. Der Getter für den Tarnnamen ist mit dem Schlüsselwort protected versehen (in UML mit #), was bedeutet, dass er nur von Kindklassen aus aufrufbar ist. Wenn Batman also ein Superheld ist, dann hat er über den Getter Zugriff auf seinen Tarnnamen, aber sonst niemand. Er sollte sich dann eine Methode zulegen, die über eine Art Zugriffskontrolle seinen Tarnnamen an Eingeweihte herausrückt, um seine Identität nicht auffliegen zu lassen. Da die Namen der Parameter im Konstruktor den Namen der Attribute gleichen, sind die Attribute im Konstruktor verdeckt. Sie müssen über das Schlüsselwort this angesprochen werden, das eine Referenz auf das aktuelle Objekt darstellt. 7
8 Jeder Superheld hat auch ein besonderes Gimmick. In diesem Fall wird das Geheimnisprinzip umgangen, da ein Superheld nicht erst jedesmal seine Eltern bitten kann, wenn er sein Gimmick einsetzen will. Das würde einfach zu lange dauern. Das Attribut wird deswegen mit protected versehen. public class Batman extends Superheld zusätzlicher Batkram public Batman() super("bruce Wayne", "Batman"); aktiviere batmäßige Coolness und anderen Batkram + Superheld + Batman + Batman() coole Bataktionen Abbildung 4: UML Batman Abbildung 4 kann man entnehmen, dass Vererbung in UML durch eine durchgezogene Linie mit einer leeren Pfeilspitze dargestellt wird. In UML spricht man von Generalisierung und nicht von Vererbung, da man die gegenteilige Richtung betrachtet. Vererbung ist gewissermaßen eine Spezialisierung. Wenn eine Kindklasse eine Methode der Elternklasse überschreibt, indem sie eine Methode gleichen Namens und gleicher Signatur bei Konstruktoren ist hier nur die Parameterliste von Bedeutung anlegt, dann kann man in Java von innerhalb dieser Methode die Methode der Elternklasse über das Schlüsselwort super aufrufen. Innerhalb eines Konstruktors kann jeder Konstruktor der Elternklasse mit der passenden Parameterliste aufgerufen werden. Auf diese Weise kann bestehende Funktionalität erweitert werden. Batman hat mehrere Gimmicks und überschreibt deshalb das Attribut specialgimmick aus der Superheld- Klasse und macht es zu einem Feld. private String[] specialgimmick; Das Attribut der Elternklasse ist nun verdeckt kann aber über super angesprochen werden, sodass die batmäßige Coolness im Konstruktor auf diese Weise gesetzt werden kann. super.specialgimmick = "batmäßige Coolness"; Die anderen Gimmicks werden direkt über das Feld angesprochen. Mehr als zehn Gimmicks schafft der Batgürtel allerdings auch nicht. specialgimmick = new String[10]; Eine Kindklasse kann also auch Attribute einer Elternklasse überschreiben und deren Typ verändern. Beide Attribute stehen danach zur Verfügung. In Java gibt es keine Mehrfachvererbung. Jede Klasse hat also genau eine Elternklasse. Für diese Regel gibt es eine Ausnahme: Object ist szsg. die Adamklasse und wurde direkt in der Sonne geboren. Alle Klassen sind direkt oder indirekt über eine Vererbungshierarchie Kinder von Object. Schreibt man sich also in Java eine neue Klasse und lässt die extends-klausel weg, dann wird sie automatisch durch extends Object aufgefüllt. 8
9 B.3.1 Die Methode equals() Diese Methode wird in Java eingesetzt, um herauszufinden, ob zwei Objekte eigentlich das gleiche Objekt sind. Die Methode besitzen alle Objekte in Java, da jede Klasse automatisch von der Klasse Object erbt und equals() dort definiert ist. Zunächst verwundert der Parameter vom Typ Object. Auf diese Weise wird die Universalität der Methode sichergestellt. Da jedes Objekt in Java auch einen Anteil vom Typ Object besitzt, können so Äpfel mit Birnen verglichen werden. Um auf Attribute und Methoden zuzugreifen, die eine bestimmte Klasse besitzt, muss man den Parameter geeignet casten. Dies ist allerdings nur zulässig, falls das Objekt tatsächlich auch vom Zieltyp ist. Um herauszufinden, welcher Typ wirklich hinter einem Parameter steckt, gibt es den instanceof-operator. Er wird zusammen mit einem Objekt und einem Klassennamen aufgerufen und gibt ein boolesches Ergebnis 2 zurück. So wird eine equals()-methode fast immer nach dem gleichen Schema ablaufen. Zuerst wird auf Klassenzugehörigkeit getestet, dann wird ggf. ein Typecast auf die entsprechende Klasse vorgenommen und this mit dem gecasteten Objekt verglichen. Der Vergleich wird üblicherweise auf den Attributen der beiden Objekte durchgeführt. public boolean equals(object o) if (o instanceof Klasse) Klasse tmp = (Klasse) o; Vergleiche Attribute von this und tmp return false; B.3.2 Polymorphismus Hierbei handelt es sich um einen weiteren integralen Bestandteil von OOP, der mit der Vererbung zusammenhängt und eine große Stärke dieses Programmierparadigmas darstellt. Polymorphismus beschreibt die Vielgestaltigkeit von Objektreferenzen. Da ein Objekt einer Kinderklasse immer auch ein Objekt einer seiner Elternklassen ist, kann es auch einer Variablen solchen Typs zugewiesen werden. Klasse klasse = new Klasse(); Object o = klasse; Ein weiteres Objekt wird im Folgenden benötigt. Klasse anderes = new Klasse(); Nun kommt die Magie. Der folgende Aufrauf ruft ganz klar die Methode equals() der Klasse Klasse auf. klasse.equals(anderes); Aber welche Methode wird in dieser Zeile aufgerufen? o.equals(anderes); 2 Also true oder false. 9
10 Dieselbe Methode wie im vorherigen Aufruf, denn das Objekt, das hinter der Referenz steckt, weiß, dass es ein Objekt der Klasse Klasse ist. Solche Methoden werden virtuelle Methoden genannt, da es nur vom Objekt selbst und nicht der Trägervariablen abhängt, welche Methode also wo in der Vererbungshierarchie aufgerufen wird. In Java sind Methoden immer virtuell. Das bedeutet, dass in Java grundsätzlich immer die jüngste Methode ausgeführt wird, die existiert. B.4 Schnittstellen Eine Schnittstelle wird in UML durch «interface», wie in Abbildung 5 gezeigt, gekennzeichnet. Eine Schnittstelle entspricht dem Konzept der Vorgabe von Methoden. Wenn eine Klasse eine bestimmte Schnittstelle implementiert, dann muss sie ganz bestimmte Methoden zur Verfügung stellen; eben diejenigen, die die Schnittstelle vorgibt. In Java ähnelt eine Schnittstelle einer Klasse. Dabei wird nur das Schlüsselwort class gegen das Schlüsselwort interface ausgetauscht. Weiter dürfen keine Attribute mehr enthalten sein und die Methoden werden nur noch deklariert, enthalten also keine Rümpfe. public interface Geraet public void einschalten(); public void ausschalten(); public boolean istbereit(); «interface» Geraet + einschalten() + ausschalten() + istbereit(): Boolean Abbildung 5: Schnittstelle in UML Nun können verschiedene Klassen diese Schnittstelle implementieren. Auf diese Weise entsteht eine Sammlung von Klassen, die alle eine bestimmte Funktionalität zur Verfügung stellen: Alle Geräte kann man ein- und ausschalten und darauf überprüfen, ob sie benutzt werden können. public class Kuehlschrank implements Geraet eigene Attribute und Methoden public void einschalten() eigene Implementierung dieser Methode public void ausschalten() eigene Implementierung dieser Methode public boolean istbereit() eigene Implementierung dieser Methode «interface» Geraet + einschalten() + ausschalten() + istbereit(): Boolean + Kuehlschrank + einschalten() + ausschalten() + istbereit(): Boolean Abbildung 6: Implementierte Schnittstelle in UML Bspw. verhält sich ein Kühlschrank wie ein Gerät oder kann wie ein Gerät benutzt werden. Er implementiert also die Schnittstelle Geraet, was in Java durch das Schlüsselwort implements und in UML durch eine gestrichelte Linie mit einer leeren Pfeilspitze, wie in Abbildung 6 zu sehen, ausgedrückt wird. 10
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
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
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
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
MehrEinstieg 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
MehrJavakurs 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
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
MehrAnwendungsentwicklung 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,
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
MehrListing 1: Cowboy. Listing 2: Woody
Musterlösung Test 3 Aufgabe 1: Cowboy Listing 1: Cowboy class Cowboy { public String rope ( Cowboy that ) { if ( this == that ) { return exclaim (); 5 else { return " Caught "; public String exclaim ()
MehrJava 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Ü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
MehrEinstieg 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
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
MehrBetreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung
SS 2011 Fakultät für Angewandte Informatik Lehrprofessur für Informatik 15.06.2011 Prof. Dr. Robert Lorenz Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung Programmieraufwand für geübte
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
MehrProgrammieren 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
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
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
Mehr1 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,
MehrJavakurs 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
MehrInformatik II Übung 6 Gruppe 7
Informatik II Übung 6 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch DEBRIEFING Übung 5 2 U5A1-4 Im Prinzip alles richtig. Falls am Ende noch Zeit, dann Einsicht in die Best Of s 3 THEORIE Java Vererbung,
MehrProgrammieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik
Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen
MehrAlgorithmen 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
MehrProbeklausur: 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,
MehrGrundzü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
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
MehrEinstieg 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
MehrKlausur 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
Mehr2.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
MehrOOP 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
MehrProgrammieren I. Kapitel 8. Vererbung
Programmieren I Kapitel 8. Vererbung Kapitel 8: Vererbung Ziel: Wesentliches objektorientiertes Konzept kennenlernen Subtypen Idee Probleme und Varianten Vererbung in Java dynamische Bindung abstrakte
MehrÜbungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit
Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList
MehrKapitel 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
MehrKapitel 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
MehrRepetitorium 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
Mehr6. 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
MehrVorlesung 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:
MehrDr. Monika Meiler. Inhalt
Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer
MehrKapitel 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
MehrInhaltsü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)
MehrFakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6
WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 6 Abgabe: Montag, 05.12.2011, 12.00 Uhr, Informatik
Mehr15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595
Überblick 15. Unified Modeling Language (UML) 15.1 Grundlagen 15.2 Klassen und Objekte 15.3 Vererbung 15.4 Schnittstellen 15.5 Generische Typen 15.6 Pakete 15.7 UML und Java 15.8 Zusammenfassung 15 Unified
MehrEinfü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
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)
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
MehrÜbersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung
Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des
MehrProgrammieren 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
MehrDer Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.
Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe
MehrProgrammierkurs C++ Abstrakte Klassen und Methoden
Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double
MehrInterfaces und Vererbung
Interfaces und Vererbung Einführung in Java Folie 1 von 31 12. Mai 2011 Ivo Kronenberg Inhalt Interfaces Statische und dynamische Typen Visiblitätsmodifier Vererbung Überschreiben von Methoden Konstruktoren
MehrEinfü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
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
MehrMusterlö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)
MehrEinfü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Übungsblatt 7. Was ist die Ausgabe de facto? Entspricht die Ausgabe Ihren Erwartungen?
»Programmieren«, WS 2006/2007 Nino Simunic (nino.simunic@uni-due.de) Übungsblatt 7 Die benötigten Quelltexte finden Sie hier: http://imperia.uni-due.de/imperia/md/content/computerlinguistik/uebungsblatt_7_code.zip
MehrInnere 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
Mehr16. Dezember 2004 Dr. M. Schneider, P. Ziewer
Technische Universität München WS 2004/2005 Fakultät für Informatik Lösungsvorschläge zu Blatt 8 A. Berlea, M. Petter, 16. Dezember 2004 Dr. M. Schneider, P. Ziewer Übungen zu Einführung in die Informatik
Mehr3. 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.
MehrEinfü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
MehrAuD-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
MehrProgrammieren 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
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,
MehrJava 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
MehrEinführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
MehrInstitut für Programmierung und Reaktive Systeme 19. August Programmier-Labor. 1. Übungsblatt
echnische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 19. August 2014 Aufgabe 1: Programmier-Labor 1. Übungsblatt a) Welche primitiven Datentypen kennt
MehrInnere 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
MehrStatische 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
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
MehrEinstieg 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
MehrEinstieg 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
MehrTheorie 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
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
MehrJava I Vorlesung 6 Referenz-Datentypen
Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:
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
MehrHandbuch für die Erweiterbarkeit
Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6
MehrALP II Dynamische Datenmengen Datenabstraktion (Teil 2)
ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten
MehrBeispiele 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]
MehrVererbung. 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Übersicht. Vorstellung des OO-Paradigmas
Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java
MehrÜBUNGS-BLOCK 1 LÖSUNGEN
ÜBUNGS-BLOCK 1 LÖSUNGEN Aufgabe 1: Wenn dich jemand fragen würde, was er sich im Bezug auf die Programmierung unter einer Klasse vorstellen kann, was würdest du ihm sagen? Aus welchen Bestandteilen besteht
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
MehrVererbung. 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 &
MehrJava, OO und UML Fortsetzung
Java, OO und UML Fortsetzung Das Objektorientierte Paradigma OO bildet keine geschlossene theoretisch abgegrenzte Basis (wie z.b. das Relationsmodell relationaler Datenbanken) OO ist eine Sammlung und
Mehr7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen
7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen
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
MehrSoftwaretechnik WS 16/17. Übungsblatt 01
Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and
MehrPräsentation Interfaces
Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.
MehrJava 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.
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
MehrProgrammieren 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
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
MehrArten von Klassen-Beziehungen
Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant
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
Mehr1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH
1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch
Mehr4 Vererbung, Polymorphie
4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work
MehrGrundlagen der Informatik
Grundlagen der Informatik Polymorphie, Abstrakte Klassen, Mehrfachvererbung Prof. Dr.-Ing. Thomas Wiedemann Prof. Dr. rer.nat. Ralph Großmann Fachgebiet Informatik / Mathematik Überblick zum Inhalt Klassen-3
MehrProgrammierkurs 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
MehrProbeklausur: 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,
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 2 Objektorientierte Programmierung 24. 04. 2006 Aufgabe 5 (Vererbung - Trace (Klausur FT
Mehr