Aufgabe 1: Objektorientierte Grundkonzepte
|
|
- Lennart Hochberg
- vor 7 Jahren
- Abrufe
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!
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
MehrNeben 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
Mehr12 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,
MehrObjektorientierung 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;
MehrDurch 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
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
Mehr14 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
Mehr14 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.
MehrAlgorithmen 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
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
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.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur
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,
MehrProgrammiermethodik 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
MehrProgrammieren 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
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
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
MehrFragenkatalog 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
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
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
MehrEinfü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
MehrSilke 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
MehrEinstieg 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
MehrMethoden 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
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,
MehrInstitut 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
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
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
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
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
MehrVererbung. 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
MehrEinfü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
MehrSilke 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
MehrKapitel 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
MehrAllgemeine 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
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
MehrVererbung, 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
MehrMethoden 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)
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
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,
MehrInstitut 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
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
MehrProgrammieren 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
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)
MehrDie 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:
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
MehrEinfü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
MehrProgrammieren 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
MehrFragen 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?...
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrJava Einführung 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
MehrBeispiel: 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
MehrKapitel 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
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
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
MehrKlassen 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
MehrInformatik 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.
MehrJava 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
MehrEinstieg 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
MehrFH 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
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
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
MehrPolymorphie/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
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
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
MehrDateien. 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
MehrProbeklausur 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
MehrVererbung. 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)
MehrJava 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
MehrJAVA 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
MehrSchlussendlich 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 -
MehrC# - 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
MehrAlgorithmen 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
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
MehrGrundlagen 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
MehrProgrammieren 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
MehrKlausur 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,
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
MehrEinstieg 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
MehrObjektorientierte 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/
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
Mehr4. 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
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
MehrKapitel 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
MehrVerkettete 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).
MehrJavakurs 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:
MehrAlgorithmen 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
MehrKapitel 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,
MehrJava 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
Mehr1 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
MehrAusnahmebehandlung. 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,
MehrEin 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";
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
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
MehrProgrammieren 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
MehrObjektorientierte 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
MehrObjektorientierte 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
MehrPunkte. 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
Mehr1 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
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
Mehr