Aufgabe 1: Objektorientierte Grundkonzepte

Größe: px
Ab Seite anzeigen:

Download "Aufgabe 1: Objektorientierte Grundkonzepte"

Transkript

1 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am Aufgabe 1: Objektorientierte Grundkonzepte (17 Punkte) a) Erläutern Sie das Grundmodell der Objektorientierten Programmierung. (4 Punkte) Ein grundlegendes Ziel der objektorientierten Programmierung ist es, eine möglichst gute softwaretechnische Modellierung der realen Welt zu unterstützen. Die objektorientierte Programmierung betrachtet eine Programmausführung hierfür als ein System kooperierender Objekte. Objekte haben einen eigenen lokalen Zustand, eine gewisse Lebensdauer und eine Identität. Objekte empfangen und bearbeiten Nachrichten. Bei der Bearbeitung von Nachrichten kann ein Objekt seinen Zustand ändern, Nachrichten an andere Objekte verschicken, neue Objekte erzeugen und existierende Objekte löschen. Objekte sind grundsätzlich selbständige Ausführungseinheiten, die unabhängig voneinander und parallel arbeiten können. b) Erläutern Sie die Begriffe Klassifikation, Klasse und Vererbung, sowie deren Zusammenhang. (4 Punkte) Unter Klassifikation versteht man die Zuordnung von Objekten zu Klassen, welche in hierarchischen Strukturen angeordnet sind. Klassen legen dabei die Methoden und Eigenschaften fest, die all ihren Objekten gemeinsam sind. Eigenschaften und Methoden, die mehreren Klassen gemeinsam sind, brauchen nur einmal in einer übergeordneten Klasse beschrieben zu werden und können von untergeordneten Klassen geerbt werden. Durch Vererbung werden also Codeteile von übergeordneten Klassen übernommen, ohne sie explizit, z.b. durch Copy&Paste, in die Klasse einzufügen. c) Erläutern Sie die Begriffe Abstraktion und Spezialisierung im Zusammenhang mit Klassenhierarchien. (3 Punkte) Unter Abstraktion versteht man das Heraussondern des unter einem bestimmten Gesichtspunkt Wesentlichen vom Unwesentlichen. Abstraktion angewandt auf eine Klasse führt zu deren Superklasse. Unter Spezialisierung versteht man das Hinzufügen von Eigenschaften oder das Verändern von Verhalten. Spezialisierung einer Klasse führt zu einer bzw. mehreren Subklassen. d) Legen Sie anhand von mindestens drei Charakteristika den Unterschied zwischen Wert und Objekt dar. (3 Punkte) 1. Zustand: Objekte haben einen veränderbaren Zustand. Werte hingegen sind abstrakt und können nicht verändert werden. 2. Identität: Objekte besitzen eine Identität, die vom Zustand unabhängig ist. Objekte können denselben Zustand haben, ohne identisch zu sein. Werte hingegen besitzen keine Identität. 3. Lebensdauer: Objekte besitzen eine beschränkte Lebensdauer und können erzeugt und gelöscht werden. Werte hingegen besitzen keine Lebensdauer und existieren sozusagen ewig.

2 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am Aufenthaltsort: Objekten kann man üblicherweise einen Aufenthaltsort, beschrieben durch eine Adresse im Speicher, zuordnen. Dies ist bei Werten nicht möglich. 5. Verhalten: Objekte sind aktiv, d.h. sie reagieren auf Nachrichten. Werte hingegen sind passiv, d.h. auf ihnen operieren Funktionen. e) Was versteht man unter Kapselung? (3 Punkte) Als Kapselung bezeichnet man den kontrollierten Zugriff auf Methoden bzw. Attribute von Klassen. Hierfür besitzt eine Klasse eine öffentliche Schnittstelle, die darüber bestimmt, auf welche Weise mit der Klasse interagiert werden kann. Konkret heißt dies, dass der Zugriff auf interne Datenstrukturen unterbunden wird und nur noch über, in der öffentlichen Schnittstelle definierte, Methoden möglich ist. Instanzen einer Klasse können den internen Zustand von Instanzen anderer Klassen also nicht in unerwarteter Weise lesen oder ändern. Änderungen am internen Zustand einer Klasse erfolgen ausschließlich über die dafür zur Verfügung gestellten Methoden der öffentlichen Schnittstelle dieser Klasse.

3 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am Aufgabe 2: Fortgeschrittene objektorientierte Konzepte (18 Punkte) a) Erklären Sie die Begriffe Typ und Typhierarchie. (4 Punkte) Ein Typ beschreibt bestimmte Eigenschaften der ihm zugeordneten Objekte. Für die Menge der Typen existiert eine partielle Ordnung, welche eine Hierarchie induziert. Ein Typ S ist Subtyp von einem Typ T, wenn die Objekte, die S zugeordnet sind, auch T zugeordnet werden können, d.h. die Objekte, die S zugeordnet sind, besitzen mindestens all jene Eigenschaften, die T beschreibt. b) Erklären Sie das Substitutionsprinzip. (2 Punkte) An allen Programmstellen, an denen ein Objekt vom Typ T zulässig ist, sind auch Objekte der Subtypen von T erlaubt. c) Vergleichen Sie Subtyping mit Vererbung. (4 Punkte) Für eine Klasse K 1, welche von der Klasse K 2 erbt, gilt nicht notwendigerweise, dass K 1 auch ein Subtyp von K 2 ist. Insbesondere lassen viele Programmiersprachen für eine Klasse zwar mehrere Typen, aber nur eine Superklasse zu. Vererbung ist lediglich ein Mittel zur Wiederverwendung von Code, wohingegen Subtyping Grundlage für fortgeschrittene Konzepte wie z.b. Polymorphismus ist. d) Erklären Sie die Begriffe Polymorphismus und dynamische Bindung, sowie deren Zusammenhang. (4 Punkte) Polymorphismus bedeutet Vielgestaltigkeit. Im Zusammenhang mit objektorientierter Programmierung spricht man von Polymorphie, wenn Programmkonstrukte oder Programmteile für Objekte mehrerer Typen einsetzbar sind. Algorithmen können auf der Basis von allgemeinen Typen formuliert werden und müssen nicht für jeden Subtypen neu angegeben werden. Dynamische Bindung ist notwendig, um den formulierten Algorithmus auf die konkreten Objekte von Subtypen der allgemeinen Typen anzuwenden. Dabei entscheidet bei überschriebenen Methoden der Typ des tatsächlich referenzierten Objekts über die aufgerufene Methode und nicht der Typ der Variablen. e) Erläutern Sie die Begriffe Kontra- und Kovarianz. (4 Punkte) Die Methode eines Subtyps (meth sub ) muss mindestens die aktuellen Parameter verarbeiten können, die die überschriebene Methode des Supertypes (meth super ) verarbeiten kann, d.h. für jeden Parameter muss der Parametertyp von meth sub gleich oder ein Supertyp von dem entsprechenden Typ des Parameters in meth super sein (Kontravarianz). Die überschriebene Methode des Subtyps darf nur Ergebnisse liefern, die auch als Ergebnisse der Methode meth super zulässig sind, d.h. der Ergebnistyp von meth sub muss gleich oder ein Subtyp von meth super sein (Kovarianz).

4 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am Aufgabe 3: Quickies in Java (20 Punkte) a) Der Einstiegspunkt in ein Java-Programm ist üblicherweise die folgende Methode: public static void main( String[] args ) Erklären Sie kurz die Bestandteile public, static und void der Methodensignatur. (3 Punkte) Der Bestandteil public definiert den Sichtbarkeitsbereich der Methode. In diesem Fall, also bei public, ist die Methode in allen Kontexten sichtbar, also Teil des implizit existierenden Interfaces der Klasse. Neben public existieren noch protected, private und package. Normale Datenelemente, d.h. Methoden und Felder, sind einer bestimmten Instanz der definierenden Klasse zugeordnet. Mit jeder neuen Instanz wird Speicherplatz für jedes Datenelement der neuen Instanz belegt. Ein mit static deklariertes Datenelement dagegen ist allen Instanzen einer Klasse physikalisch gemeinsam und somit gewissermaßen eine klassenglobale Variable. Man spricht daher auch von Klassenvariablen im Gegensatz zu den nicht statischen Instanzvariablen. Ändert eine Instanz den Wert eines static-datenelements, dann macht sich diese Änderung auch bei allen anderen Instanzen derselben Klasse bemerkbar. void definiert den Typ des Rückgabewerts der Methode. An dieser Stelle sind alle der Klasse bekannten Typen, d.h. komplexe und primitive Typ, sowie void erlaubt. Der Typ des Deklarationselements, welches durch return an den Aufrufer der Methode zurückgegeben wird, muss mit dem hier definierten Typ zuweisungskompatibel sein. Der vorliegenden Fall, also bei void als Rückgabetyp, ist die einzige Ausnahme und es darf kein Wert an den Aufrufer zurückgegeben werden, d.h. die Methode darf kein return- Statement enthalten. b) Erläutern Sie den Unterschied zwischen implements und extends in Java. (3 Punkte) Durch Angabe von class k 1 extends k 2 kann eine existierende Klasse k 2 durch die Klasse k 1 erweitert werden. k 1 erbt von k 2 und ist im Falle von Java auch gleichzeitig Subtyp von k 2 (Subclassing). Um Probleme mit Mehrfachvererbung zu vermeiden, kann in Java immer nur eine Klasse erweitert werden. Durch die Definition class k 1 implements i 1,i 2 geht die Klasse k 1 die Verpflichtung ein, für alle in den Interfaces i 1 und i 2 deklarierten Methoden eine Implementierung anzubieten. Die Klasse k 1 ist hier Subtyp von i 1 und i 2 (Subtyping). Im Gegensatz zu extends können mehrere Interfaces implementiert werden. c) Welche zwei grundlegend verschiedene Arten von Exceptions gibt es in Java? Diskutieren Sie für jede Art eine Ihnen bekannte Exception aus der Standardbibliothek und wie man diese Ausnahmen in einem Java Programm behandelt. (4 Punkte) Als Exception bezeichnet man Ereignisse, die den normalen Programmablauf stören. In Java unterscheidet man normale Exceptions von denen, die von der Klasse RuntimeException abgeleitet sind. Im Gegensatz zu den von RuntimeException abgeleiteten

5 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am Exceptions müssen die normalen Exceptions explizit behandelt werden. Ein Beispiel für eine RuntimeException ist NullPointerException, die auftritt, wenn z.b. versucht wird, den Zustand eines nicht existierenden Objekts zu ändern. Eine Beispiel für eine normale Exception ist IOException. Diese Exception tritt auf, wenn ein Fehler bei einer I/O-Operation auftritt, z.b. wenn die angeforderte Datei nicht gefunden werden kann. Exceptions können auf zwei Arten behandelt werden: Fall 1: Die Methode, in der die Exception auftreten kann, benutzt eine throws-klausel in ihrer Methodensignatur, um die Behandlung der Exception an die aufrufende Methode zu delegieren. Fall 2: Im Methodenrumpf kann ein try/catch-block benutzt werden, um die Exception abzuarbeiten. d) Kompiliert folgendes Programm? public interface SomeInterface { public class SomeClass implements SomeInterface { public class Main { public void donothing() { SomeInterface foo = new SomeClass(); SomeClass bar = foo; Begründen Sie ihre Antwort und korrigieren Sie gegebenenfalls das Programm. (2 Punkte) Das vorgegebene Programm kompiliert nicht. Die Zuweisung bar = foo ist nicht erlaubt, d.h. die Typen SomeClass und SomeInterface sind nicht zuweisungskompatibel. Das von foo referenzierte Objekt ist zwar eine Instanz der Klasse SomeClass, der deklarierte Typ ist allerdings SomeInterface. Da SomeInterface ein Supertyp von SomeClass ist, stellen Deklarationselemente, die mit SomeInterface typisiert sind, nur einen Teil der in Some- Class definierten Methoden zur Verfügung. Um das Programm zu korrigieren, muss ein expliziter Downcast durchgeführt werden: SomeClass bar = (SomeClass) foo; e) Was bedeutet das Schlüsselwort final und wo kann es überall vorkommen? (3 Punkte) Wird der final-modifier auf eine Klasse angewandt, bedeutet dies, dass von der Klasse keine Subklassen erstellt werden können. Wird der final-modifier hingegen auf eine Variable angewandt, bedeutet dies, dass die Variable unveränderbar ist. Wird der final- Modifier auf eine Methode angewandt, bedeutet dies, dass die Methode von Subklassen nicht überschrieben werden kann. f) Was bedeutet der Aufruf super(..) und wo kann er vorkommen? (2 Punkte) super(..) führt den Konstruktor der Superklasse aus, darf nur in Konstruktoren aufgerufen werden und muss dort die erste Anweisung sein.

6 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am g) Was bedeutet der Modifier synchronized? (3 Punkte) Mit synchronized werden Programmabschnitte gekennzeichnet, die atomar ablaufen sollen. Wird z.b. die Methode void foo() { i++; als synchronized definiert, so kann sich bei mehreren Threads, die foo() aufrufen, immer nur ein Thread im Rumpf der Methode foo() befinden. Dies bezieht sich allerdings nur auf Threads, die foo() für dasselbe Objekt aufrufen. Zwei verschiedene Threads können durchaus parallel die Methode foo() für unterschiedliche Objekte ausführen.

7 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am Aufgabe 4: Vererbung und Polymorphismus (10 Punkte) a) Gegeben sei die folgende Klasse Auto: public class Auto { protected double neuwagenpreis; protected int baujahr; protected String modell; public Auto(double neuwagenpreis, int baujahr, String modell) { this.neuwagenpreis = neuwagenpreis; this.baujahr = baujahr; this.modell = modell; public double getpreis() { return neuwagenpreis; Erweitern Sie diese Klasse so, dass eine neue Klasse GebrauchtAuto entsteht, die zusätzlich die bereits gefahrenen Kilometer speichert. Schreiben Sie den dazu notwendigen Konstruktor und überschreiben Sie die Methode double getpreis() so, dass nach jeweils gefahrenen Kilometern der Neuwagenpreis des Wagens um 10% sinkt. Beachten Sie, dass der Händler einen Mindestpreis von 2000 für jeden Gebrauchtwagen angesetzt hat. (6 Punkte) public class GebrauchtAuto extends Auto { protected int gefahrenekilometer; public GebrauchtAuto(double neuwagenpreis, int baujahr, String modell, int gefahrenekilometer) { super(neuwagenpreis, baujahr, modell); this.gefahrenekilometer = gefahrenekilometer; public double getpreis() { double gebrauchtwagenpreis=0; gebrauchtwagenpreis = neuwagenpreis - ((gefahrenekilometer/20000)*(neuwagenpreis/10.0)); if (gebrauchtwagenpreis < ) return ; else return gebrauchtwagenpreis; b) Gegeben sei nun die folgende main()-methode: public class AutoHaendler { public static void main ( String[] args ) { GebrauchtAuto auto1 = new GebrauchtAuto(20000, 2002, "Audi TT", 70000); System.out.println("Preis:"+ auto1.getpreis());

8 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am Auto auto2 = auto1; System.out.println("Preis:"+ auto2.getpreis()); Geben Sie an, welche Methoden-Implementierungen bei auto1.getpreis() und bei auto2.getpreis() aufgerufen werden und wie die Ausgabe aussieht. Begründen Sie Ihre Antwort. (4 Punkte) In beiden Fällen wird der korrekte Preis des Gebrauchtwagens, also 14000, ausgegeben. Beim Methodenaufruf von auto1.getpreis() ist die Sachlage eindeutig. Der Typ von auto1 ist als GebrauchtAuto deklariert und das referenzierte Objekt entspricht genau diesem Typ. Deshalb wird die in GebrauchtAuto überschriebene Methode double getpreis() aufgerufen. Beim zweiten Aufruf ist die Sachlage hingegen anders. Die Variable auto2 ist mit Auto typisiert, zeigt aber auf ein Objekt vom Typ GebrauchtAuto. Bei überschriebenen Methoden entscheidet der Typ des referenzierten Objekts über die aufgerufene Methode und nicht der Typ der Variable. Deswegen wird auch beim zweiten Aufruf die Methode double getpreis() aus der Klasse GebrauchtAuto aufgerufen.

9 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am Aufgabe 5: Rekursive Programmierung (15 Punkte) a) Der binäre Baum ist eine besondere Baumstruktur. Er definiert sich dadurch, dass jeder Knoten (= Element des Baums) maximal zwei Nachfolger haben darf. Beim binären Baum unterscheidet man zwischen der Wurzel, den inneren und äußeren Knoten. Die Wurzel ist der Grundknoten des Baumes, da sie keinen Vorgänger besitzt. Wenn der Zeiger auf die Wurzel leer ist, ist der Baum leer. Äußere Knoten nennt man jene, welche keine Nachfolger haben. Diese Knoten befinden sich auf der untersten Ebene eines Baumes und die Referenzen auf den linken und rechten Nachfolgeknoten sind bei diesen Knoten leer. (10 Punkte) class Binaerbaum { protected Knoten wurzel=null; protected class Knoten { Element wert; Knoten links, rechts; Knoten (Element wert, Knoten links, Knoten rechts) { this.wert = wert; this.links = links; this.rechts = rechts; public String tostring() { return wert.getvalue(); public boolean isempty() { return (wurzel==null); class Element { private int value; Element(int value) { this.value = value; public int compareto(element e) { if ( e.getvalue() < this.value) { return 1; else if ( e.getvalue() > this.value) { return -1; else { return 0; public int getvalue() { return value; Implementieren Sie eine Methode public boolean insert(element e), die Elemente in den Baum einfügt. Eine Instanz e 1 der Klasse Element wird als neuer Knoten im linken Teilbaum eines bestehenden Knotens, welcher eine Instanz e 2 der Klasse Element beinhaltet, eingefügt, wenn e 1.getV alue() < e 2.getV alue(). Im Falle von e 1.getV alue() > e 2.getV alue() wird das Element e 1 im rechten Teilbaum eingefügt.

10 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am Herrscht Gleichheit, so soll die Funktion false zurückliefern. Als Grundlage benutzen Sie obigen Code. public boolean insert(element e) { if(this.isempty()) { wurzel = new Knoten(e,null,null); return true; else { return insertsubtree(e, wurzel); private boolean insertsubtree(element e, Knoten k) { if (k.wert.compareto(e) > 0) { if(k.links == null) { k.links = new Knoten(e,null,null); return true; else { return insertsubtree(e,k.links); else if (k.wert.compareto(e) < 0) { if(k.rechts == null) { k.rechts = new Knoten(e,null,null); return true; else { return insertsubtree(e,k.rechts); else { return false; b) Ein binärer Baum kann auf verschiedene Arten durchlaufen werden, so dass jeder Knoten genau einmal besucht wird. Die wohl wichtigste Durchlaufart ist die sogenannte Inorder- Traversierung, welche folgender Definition folgt: Für jeden Knoten k: Besuche den linken Teilbaum des Knotens k. Besuche k. Besuche den rechten Teilbaum des Knotens k. Implementieren Sie auf Basis des obigen Codes eine Methode public String printinorder(), die die im Binärbaum gespeicherten Werte als String in einer Inorder-Reihenfolge zurückliefert. (5 Punkte)

11 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am public String printinorder() { String order ="Inorder: "; if (wurzel == null) return "Empty Tree"; else return order+=inorderstring(wurzel); private String inorderstring(knoten k) { if (k==null) return ""; else { return "["+inorderstring(k.links)+"]"+k+"["+inorderstring(k.rechts)+"]";

12 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am Aufgabe 6: I/O mit Java (10 Punkte) Schreiben Sie ein Java-Programm, um zu bestimmen, ob zwei aufeinander folgende, per Tastatur eingegebene Zeilen Palindrome voneinander darstellen, d.h. dieselben Zeichen in umgekehrter Reihenfolge enthalten. Groß- und Kleinschreibung soll hierbei ignoriert werden. Nachdem das Ergebnis ausgegeben wurde, beendet sich das Programm. Bekannte Beispiele für Palindrome sind Otto oder Rentner. Hinweis: Für diese Aufgabe stehen Ihnen insbesondere die im Anhang aufgeführten Klassen zur Verfügung. Natürlich können Sie auch andere Ihnen bekannte Klassen aus dem JDK benutzen. import java.io.*; public class PalindromCheck { static final BufferedReader in=new BufferedReader (new InputStreamReader(System.in)); static final String prompt=new String("Bitte Zeichenkette Eins eingeben> "); static final String prompt2=new String("Bitte Zeichenkette Zwei eingeben> "); static final String positivpalindrom=new String("Die beiden Zeichenketten sind ein Palindrom."); static final String negativpalindrom=new String("Die beiden Zeichenketten sind kein Palindrom."); static final String lengthmismatch=new String("Bitte geben Sie zwei gleichlange Zeichenketten ein."); static final String byebye=new String("Auf Wiedersehen!"); static boolean ispalindrom=true; public static void main(string args[]) throws IOException { System.out.println(prompt); String lineone=in.readline(); System.out.println(prompt2); String linetwo=in.readline(); if(lineone.length()!= linetwo.length()) { System.out.println(lengthMismatch); else { for(int i=0;i<lineone.length();i++) { if(lineone.touppercase().charat(i)!= linetwo.touppercase().charat(linetwo.length() - i -1)) { ispalindrom = false; if(ispalindrom) { System.out.println(positivPalindrom); else { System.out.println(negativPalindrom); System.out.println(byebye); in.close();

13 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am Aufgabe 7: Sortieren mit Java (10 Punkte) Schreiben Sie ein Java-Programm, welches eine Datei einliest, die Zeilen in aufsteigender Reihenfolge sortiert und in eine neue Datei schreibt. Ein- und Ausgabedatei werden als Parameter an das Programm übergeben. Benutzen Sie eine Klasse Line die das Verwalten von eingelesenen Zeilen übernimmt, d.h. eine Instanz dieser Klasse speichert eine Zeile der Eingabedatei. Die Klasse Line soll das Interface Comparable implementieren, also die Methode int compareto(object l) zur Verfügung stellen. Seien l 1 und l 2 Instanzen der Klasse Line, so muss die Methode int compareto(object l), aufgerufen durch l 1.compareT o(l 2 ), folgendes Verhalten zeigen. Groß- und Kleinschreibung soll hierbei ignoriert werden. a) Seien l 1 und l 2 gleichlang, dann ist l 1 größer als l 2, wenn das erste Zeichen von l 1, in dem sich l 1 von l 2 unterscheidet, weiter hinten im Alphabet zu finden ist. b) Seien l 1 und l 2 gleichlang, dann ist l 1 kleiner als l 2, wenn das erste Zeichen von l 1, in dem sich l 1 von l 2 unterscheidet, weiter vorne im Alphabet zu finden ist. c) Seien l 1 und l 2 gleichlang, dann ist l 1 gleich l 2, wenn sich l 1 und l 2 nicht voneinander unterscheiden. d) Sei l 1 länger als l 2, dann ist l 1 größer als l 2, wenn das erste Zeichen von l 1, in dem sich l 1 von l 2 unterscheidet, weiter hinten im Alphabet zu finden ist oder l 2 vollständig als Präfix in l 1 enthalten ist. Andernfalls ist l 1 kleiner als l 2. e) Sei l 1 kürzer als l 2, dann ist l 1 größer als l 2, wenn das erste Zeichen von l 1, in dem sich l 1 von l 2 unterscheidet, weiter hinten im Alphabet zu finden ist. Andernfalls ist l 1 kleiner als l 2. Beispielsweise gilt Abc < abd, Aaa < aaaa oder aaaabaaa < aaaac. Hinweis: Für diese Aufgabe stehen Ihnen insbesondere die im Anhang aufgeführten Klassen zur Verfügung. Natürlich können Sie auch andere Ihnen bekannte Klassen aus dem JDK benutzen. import java.util.collections; import java.util.iterator; import java.util.list; import java.io.*; import java.util.linkedlist; public class FileSorter { public static void main(string[] args) { try { String line; List lines = new LinkedList(); File input = new File(args[0]); File output = new File(args[1]); FileReader inputstream = new FileReader(input,false); FileWriter outputstream = new FileWriter(output,true);

14 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am BufferedReader inputreader = new BufferedReader(inputStream); //Zeilenweise einlesen aus der Eingabedatei und in die List lines speichern while ((line = inputreader.readline())!= null) { Line newline = new Line(line); lines.add(newline); //Wir benutzen die Sortiermethode der Klasse Collections. //Hierfür müssen die Elemente der zu sortierenden Collection die Methode //compareto(object o) implementieren. Collections.sort(lines); //Ausgeben der sortierten Liste in die Ausgabedatei Iterator it = lines.iterator(); while (it.hasnext()) { String tmpline = ((Line)it.next()).toString() + "\n"; outputstream.write(tmpline); inputstream.close(); outputstream.close(); catch (IOException e) { e.printstacktrace(); public class Line implements Comparable { String line; public Line(String line) { this.line = line; public void setline(string line) { this.line = line; public String getline() { return line; public int compareto(object l) { //Sicherstellen das wir mit einer Instanz von Line verglichen werden if(l instanceof Line) { //Groß- und Kleinschreibung wird durch //die Aufrufe von touppercase() ignoriert. String l1=line.touppercase(); String l2=((line)l).getline().touppercase(); // Ermittlung der kürzeren Zeichenkette. Damit wird Fall d) obsolete. int length = l1.length() > l2.length()? l2.length() : l1.length(); //Zeichenweise die Zeichenkentten vergleichen. for(int i=0;i<length;i++) { //l1>l2 wenn ein Zeichen von l1 größer (weiter hinten im Alphabet) als das dazugehörige //Zeichen von l2 ist. Für alle Zeichen davor herrscht Gleichheit. if(l1.charat(i) > l2.charat(i)) { return 1;

15 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am //l1<l2 wenn ein Zeichen von l1 kleiner (weiter vorne im Alphabet) als das dazugehörige //Zeichen von l2 ist. Für alle Zeichen davor herrscht Gleichheit. else if(l1.charat(i) < l2.charat(i)) { return -1; if(l1.length() > l2.length()) { return -1; else if (l1.length() < l2.length()) { return 1; else { return 0; return 0; public String tostring() { return line;

16 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am ANHANG package java.io; public class BufferedReader extends java.io.reader { //Erzeugt einen neuen BufferedReader, der seine Daten aus in bezieht. //Der Puffer hat eine voreingestellte Größe von Zeichen. public BufferedReader(Reader in); //Schließt den Stream. //Exception: IOException public void close(); //Liest ein Zeichen und liefert es in der Unicode-Codierung zurück. //Der Rückgabewert ist -1, falls das Ende des Streams erreicht ist. //Exception: IOException public int read(); //Liest eine Textzeile aus dem Stream. Als Zeilenende-Sequenz //wird \r, \n (UNIX) oder "\r\n" (Windows) akzeptiert. public String readline(); package java.io; public class InputStreamReader extends java.io.reader { //Erzeugt einen neuen InputStreamReader, der die aus in gelesenen Bytes nach der //standardmäßigen Codierung der Plattform in Unicode-Zeichen konvertiert. public InputStreamReader(InputStream in); package java.lang; public interface Comparable { //Vergleicht dieses Objekt mit o. Der Rückgabewert ist kleiner als null, null oder größer als null, //je nachdem, ob dieses Objekt im Sinne der Ordnung kleiner, gleich oder größer als o ist. //Die Implementierung muss Asymmetrie und Transitivität sicherstellen, d. h.: //* Wenn a < b, dann nicht a > b //* Wenn a < b und b < c, dann auch a < c. public int compareto(object o); package java.lang; public final class String { //Liefert das Zeichen aus dem String, das an der Position index steht. // index wird hierbei von Null an gezählt. public char charat(int index); //Liefert die Länge des Strings. public int length(); //Liefert einen neuen String, in dem alle Großbuchstaben gemäß den //länderspezifischen Einstellungen in Kleinbuchstaben umgewandelt sind. public String tolowercase(); //Liefert einen neuen String, in dem alle Kleinbuchstaben gemäß den //länderspezifischen Einstellungen in Großbuchstaben umgewandelt sind. public String touppercase();

17 Lösungsvorschlag zur Klausur zum Kurs 1618 im Sommersemester 2006 am package java.io; public class File { // Erzeugt eine neue Instanz der Klasse File, mit der Datei, die unter pathname zu finden ist. public File(String pathname); package java.io; public class FileWriter { //Erzeugt eine neue Instanz der Klasse FileWriter, die in die über filename referenzierte Datei schreibt. // append gibt an, ob Daten an die bestehende Datei angehängt werden sollen //oder ob die Datei überschrieben wird FileWriter(String filename, boolean append); package java.io; public class FileReader { //Erzeugt eine neue Instanz der Klasse FileReader, die aus der in file referenzierten Datei liest. FileReader(File file); package java.util; public class Collections { //Sortiert die Einträge in der Liste list. Dazu wird die compareto-methode benutzt. public static void sort(list list);

Klausurdauer: 3 Stunden. Lesen Sie zuerst die Hinweise auf der Rückseite!

Klausurdauer: 3 Stunden. Lesen Sie zuerst die Hinweise auf der Rückseite! Fakultät für Mathematik und Informatik Lehrgebiet Programmiersysteme Prof. Dr. Friedrich Steimann FernUniversität in Hagen D-58084 Hagen (Name, Vorname) (Straße, Nr.) (PLZ) (Wohnort) (Land, falls außerhalb

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

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

Mehr

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe;

Mehr

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der

Mehr

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

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

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces

14 Abstrakte Klassen, finale Klassen, Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse

Mehr

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

3 Objektorientierte Konzepte in Java

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

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4. ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

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

Mehr

Programmiermethodik 1. Klausur

Programmiermethodik 1. Klausur Programmiermethodik 1. Klausur 27. 6. 2013 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 21 2 20 3 19 4 19 5 21 6 20 Gesamt 120 1 Seite 2 von 18 Aufgabe 1) Objekt-Orientierung und Vererbung

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

3 Objektorientierte Konzepte in Java

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

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

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

Mehr

Fragenkatalog ESOP WS 16/17

Fragenkatalog ESOP WS 16/17 Fragenkatalog ESOP WS 16/17 1. Einleitung 1.1 Was ist Programmieren? 1.2 Was ist ein Programm? 1.3 Welche Schritte werden bei der Programmerstellung benötigt? 1.4 Was ist ein Algorithmus? 1.5 Was sind

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

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

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Semestralklausur Einführung in die Programmierung Semestralklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList

Mehr

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank... Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

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

Mehr

Probeklausur: Programmierung WS04/05

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

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Einstieg in die Informatik mit Java

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

Mehr

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

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

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Kapitel 4: Klassen und Unterklassen

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

Mehr

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

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

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

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

Mehr

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions Kapitel 10 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Exceptions Behandlung von Exceptions Der finally-block catch or throw WS 07/08 1/ 23 2/ 23 Grundlagen von Exceptions

Mehr

Allgemeine Informatik II SS :30-13:30 Uhr

Allgemeine Informatik II SS :30-13:30 Uhr TU Darmstadt FB Informatik Prof. J. Fürnkranz Vordiplomsklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 15.09.2005 11:30-13:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer

Mehr

Programmieren 2 Java Überblick

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

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

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

Mehr

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

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

Mehr

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September

Mehr

Kapitel 6. Vererbung

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

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

Objektorientierte Programmierung

Objektorientierte 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)

Mehr

Die Klasse java.lang.object. Thorsten Treffer

Die Klasse java.lang.object. Thorsten Treffer Die Klasse java.lang.object Thorsten Treffer 6. Dezember 2003 1 java.lang.object Die Klassenhierarchie von Java kann als Baum aufgezeichnet werden, dessen Wurzel die Klasse Object ist. Mit anderen Worten:

Mehr

Kapitel 6. Vererbung

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

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1 Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Kapitel 6. Vererbung

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

Mehr

Java Einführung Exception Handling. Kapitel 17

Java Einführung Exception Handling. Kapitel 17 Java Einführung Exception Handling Kapitel 17 Inhalt Was sind Exceptoins? Wie werden sie ausgelöst? Wie kann man Exceptions behandeln? Erweiterung von Exceptions Spezialfall IO 2 Ausnahmezustände Im Ablauf

Mehr

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

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

Mehr

Kapitel 12. Programmierkurs. Allgemeine Konzepte Byte-Streams versus Character-Streams

Kapitel 12. Programmierkurs. Allgemeine Konzepte Byte-Streams versus Character-Streams Kapitel 12 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln WS 07/08 Dateiein- und -ausgabe Byte-Streams versus Character-Streams Die abstrakte Klasse Writer FileWriter

Mehr

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

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

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete 2 Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, und Pakete Martin Wirsing Ziele Den Begriff der einfachen und mehrfachen Vererbung verstehen Verstehen, wann Vererbung eingesetzt wird deklarationen

Mehr

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Informatik II Übung 06. Benjamin Hepp 5 April 2017 Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.

Mehr

Java Fehlerbehandlung

Java Fehlerbehandlung Java Fehlerbehandlung 1 Fehlerbehandlung In jedem nicht-trivialen Programm kann es während der Laufzeit zu Fehlersituationen kommen. Dabei handelt es sich nicht unbedingt um Programmierfehler: z. B.: Programm

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

Mehr

Repetitorium Informatik (Java)

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

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal

Mehr

Javakurs für Anfänger

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

Mehr

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

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

Mehr

Dateien. DVG Dateien 1

Dateien. DVG Dateien 1 Dateien DVG2-05 - Dateien 1 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem JAVA-Programm her. Das Filesystem enthält als Objekte Devices, Verzeichnisse

Mehr

Probeklausur Informatik 2 Sommersemester 2013

Probeklausur Informatik 2 Sommersemester 2013 Probeklausur Informatik 2 Sommersemester 2013 1 Probeklausur Informatik 2 Sommersemester 2013 Name: Matrikelnummer: Hilfsmittel: Es sind alle schriftlichen Unterlagen, aber keine elektronischen Hilfsmittel

Mehr

Vererbung. Oberklassen und Unterklassen

Vererbung. Oberklassen und Unterklassen Vererbung Oberklassen und Unterklassen Vererbung ist ein zentrale Bestandteil der Objektorientierung. Man beschreibt damit die Möglichkeit, Eigenschaften und Methoden vorhandener Klassen auf andere (neue)

Mehr

Java Einführung Vererbung und Polymorphie. Kapitel 13

Java Einführung Vererbung und Polymorphie. Kapitel 13 Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort

Mehr

JAVA für Einsteiger. Streams und Dateien. eden market Autor: Norman Lahme

JAVA für Einsteiger. Streams und Dateien. eden market Autor: Norman Lahme JAVA für Einsteiger Streams und Dateien eden market Autor: Norman Lahme 1 Gliederung 1. Einleitung 2. Bildschirmausgabe und Tastatureingabe 3. Laden und Speichern von Tex ten 4. Laden und Speichern von

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften

Mehr

Algorithmen implementieren. Implementieren von Algorithmen

Algorithmen implementieren. Implementieren von Algorithmen Algorithmen implementieren Implementieren von Algorithmen Um Algorithmen ablaufen zu lassen, muss man sie als Programm darstellen (d.h. implementieren) Wie stellt man die algorithmischen Strukturelemente

Mehr

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

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

Mehr

Grundlagen der Informatik 0

Grundlagen der Informatik 0 Technische Universität Darmstadt 01.07.2013 Grundlagen der Informatik 0 Vorlesung 0 Java ist eine Programmiersprache Ilkay Baytekin Douglas Crockford http://media.smashingmagazine.com/wp-content/uploads/2012/04/doug-crockford-image.jpg

Mehr

Programmieren 1 08 Objekte und Interfaces

Programmieren 1 08 Objekte und Interfaces Programmieren 1 08 Objekte und Interfaces Bachelor Medieninformatik Sommersemester 2015 Dipl.-Inform. Ilse Schmiedecke schmiedecke@beuth-hochschule.de 1 Objektorientierung: Von Static zu Instance Klasse

Mehr

Klausur Software-Entwicklung März 01

Klausur Software-Entwicklung März 01 Aufgabe 1: minimaler Punktabstand ( 2+5 Punkte ) Matrikelnr : In einem Array punkte sind Koordinaten von Punkten gespeichert. Ergänzen Sie in der Klasse Punkt eine Klassen-Methode (=static Funktion) punktabstand,

Mehr

Interfaces und Vererbung

Interfaces 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

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Objektorientierte Programmierung. Kapitel 14: Interfaces

Objektorientierte Programmierung. Kapitel 14: Interfaces 14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

Überschreiben von Methoden

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

Mehr

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

Verkettete Datenstrukturen: Listen

Verkettete Datenstrukturen: Listen Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Übung 3: Die generische Klasse BinärerSuchbaum in Java 1 Datenelemente der Klasse BinaererSuchbaum Das einzige Datenelelement in dieser Klasse ist die Wurzel vom Typ BinaerBaumknoten. Die Klasse BinaerBaumknoten

Mehr

Kapitel 5: Interfaces

Kapitel 5: Interfaces Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,

Mehr

Java I Vorlesung Exceptions

Java I Vorlesung Exceptions Java I Vorlesung 8 Exceptions 14.6.2004 Exceptions (Ausnahmen) Klassen für Ein- und Ausgabe Ausnahmen Ausnahmen (Exceptions) sind ein Mechanismus zum kontrollierten Melden und Reagieren auf Fehler. Man

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren

Ausnahmebehandlung. Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren. Ausnahmen abfangen. Ausnahmen definieren Ausnahmebehandlung Ausnahmen werfen (auslösen) Eigene Ausnahmen definieren Ausnahmen abfangen Ausnahmen definieren Sinnvolle Verwendung von Ausnahmen Informatik II: Objektorientierte SW-Entwicklung, Algorithmik,

Mehr

Ein String ist in Java eigentlich eine Klasse, wir können ihn aber zunächst als Datentyp betrachten, der zur Speicherung von Zeichenketten dient.

Ein String ist in Java eigentlich eine Klasse, wir können ihn aber zunächst als Datentyp betrachten, der zur Speicherung von Zeichenketten dient. Strings Ein String ist in Java eigentlich eine Klasse, wir können ihn aber zunächst als Datentyp betrachten, der zur Speicherung von Zeichenketten dient. Beispiel: String zeile = "Cusanus-Gymnasium Wittlich";

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

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

Mehr

Programmieren in Java

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

Mehr

Programmieren 2 Selbststudium Semesterwoche 6

Programmieren 2 Selbststudium Semesterwoche 6 Programmieren 2 Selbststudium Semesterwoche 6 1. Datenströme (Basis: Handout PRG2_SW6_OOP) 1. Gehen Sie nochmals die Kontrollfragen A durch. A.1. Ein JavaProgramm liest Daten aus einem???strom. InputStream

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum. Hochschule der Medien Prof Uwe Schulz 1 Februar 2007 Stuttgart Klausur Informatik 2, EDV-Nr 40303/42022 Seite 1 von 2 Name: Matr Nr: Teil 1: Keine Hilfsmittel Bearbeitungszeit: 20 Minuten Teil 1 Teil 2

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. 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

Mehr