Lesen Sie zuerst die Hinweise auf der folgenden Seite! Musterlösung. Klausurort: Aufgabe Summe

Größe: px
Ab Seite anzeigen:

Download "Lesen Sie zuerst die Hinweise auf der folgenden Seite! Musterlösung. Klausurort: Aufgabe Summe"

Transkript

1 (Name, Vorname) (Straße, Nr.) (PLZ) (Wohnort) (Land, falls außerhalb Deutschlands) Kurs 1618 SS 2009 Einführung in die objektorientierte Programmierung Klausur am Dauer: 3 Std., Uhr Lesen Sie zuerst die Hinweise auf der folgenden Seite! Matrikelnummer: Geburtsdatum:.. Klausurort: Aufgabe Summe habe bearbeitet maximal erreicht Korrektur Herzlichen Glückwunsch, Sie haben die Klausur bestanden. Note:... Sie haben die Klausur leider nicht bestanden. Für den nächsten Versuch wünschen wir Ihnen viel Erfolg. Die nächste Klausur findet im Wintersemester 2009/2010 statt. Hagen, den Im Auftrag 2009 FernUniversität in Hagen

2 Hinweise zur Bearbeitung 1. Prüfen Sie die Vollständigkeit Ihrer Unterlagen. Die Klausur umfasst 1 Deckblatt Diese Hinweise zur Bearbeitung 10 Aufgaben auf Seite Füllen Sie jetzt bitte zuerst das Deckblatt aus: Name, Vorname und Adresse, Matrikelnummer, Geburtsdatum und Klausurort. 3. Schreiben Sie Ihre Lösungen mit Kugelschreiber oder Füllfederhalter (kein Bleistift) direkt in den bei den jeweiligen Aufgaben gegebenen, umrahmten Leerraum. Benutzen Sie in keinem Fall die Rückseiten der Aufgabenblätter. Versuchen Sie, mit dem vorhandenen Platz auszukommen, sie dürfen auch stichwortartig antworten. Für den Notfall können Sie gekennzeichnetes Papier bei der Klausuraufsicht bekommen. Es werden nur Aufgaben gewertet, die sich auf dem offiziellen Klausurpapier (Klausur + gekennzeichnetes Papier) befinden. Eigenes Papier ist nur für Ihre persönlichen Notizen erlaubt und von der Benotung ausgeschlossen. 4. Kreuzen Sie die bearbeiteten Aufgaben auf dem Deckblatt an. Schreiben Sie unbedingt auf jedes Blatt Ihrer Lösungen Ihren Namen und Ihre Matrikelnummer, auf eventuelle Zusatzblätter auch die Nummer der Aufgabe. 5. Geben Sie die gesamte Klausur und, falls vorhanden, gekennzeichnete Zusatzblätter ab. Lösen Sie die Blätter nicht voneinander. 6. Es sind keine Hilfsmittel zugelassen. 7. Lesen Sie vor der Bearbeitung einer Aufgabe den gesamten Aufgabentext sorgfältig durch. 8. Es sind maximal 100 Punkte erreichbar. Wenn Sie mindestens 40 Punkte erreichen, haben Sie die Klausur bestanden. 9. Sie erhalten die korrigierte Klausur zurück zusammen mit einer Bescheinigung für das Finanzamt und ggf. dem Übungsschein. 10. Legen Sie jetzt noch Ihren Studentenausweis und einen amtlichen Lichtbildausweis bereit, dann kann die Arbeit beginnen. Viel Erfolg! Seite 2 von 17

3 Aufgabe 1: Begriffe der Objektorientierung Gegeben sei folgendes Programmfragment. 01 public class Foo { Object a; 04 static boolean bar = true; { a = 2; Object m() { 09 return new String(); static { bar = false; public Foo(){ 15 a = 6; void m(foo foo) { 19 a = new Object(); void m(string s) { 23 a = s; Zählen Sie auf: Alle Konstanten: Alle lokale Variablen: Alle Objektattribute: Alle Klassenattribute: Alle Konstruktoren: Alle Objektmethoden: Alle Klassenmethoden: Alle Initialisierungsblöcke: Alle Überladungen: Jedes Subtyping: 2, 6, true, false Methodenparameter: Foo foo und String s Object a static boolean bar public Foo() { Alle drei Methoden mit Bezeichner m keine vorhanden { a = 2; und static { bar = false; Die Methode m ist überladen Zeilen 6 und 15 (Integer auf Object) und Zeilen 9 und 23 (String auf Object) Seite 3 von 17

4 Aufgabe 2: Ausnahmebehandlung Es soll eine Klasse in Java implementiert werden, welche einen Bruch repräsentiert. Damit es bei einer Division durch 0 zu keinem Fehler kommen kann, soll schon beim Setzen des Nenners gegebenenfalls eine Ausnahme in Form einer NennerIstNullException ausgelöst werden, wenn dieser 0 werden würde. Ergänzen Sie das folgende Programm an den vorgesehenen Stellen um solch eine Ausnahmebehandlung. class Bruch{ private int zaehler; private int nenner; public void setzaehler(int zaehler){ this.zaehler = zaehler; public void setnenner(int nenner) throws NennerIstNullException { (1 Punkt) if(nenner == 0 ) throw new NennerIstNullException(); (3 Punkte) this.nenner = nenner; public double todouble(){ return zaehler / nenner; class NennerIstNullException extends Exception (2 Punkte) { public class Test { public static void main(string[] args){ Bruch bruch = new Bruch(); bruch.setzaehler(2); try { (1 Punkt) bruch.setnenner(3); catch (NennerIstNullException e) { // Dieser Fall kann bei setnenner(3) nicht eintreten (3 Punkte) System.out.println(bruch.toDouble()); Seite 4 von 17

5 Aufgabe 3: Abstakte Klassen, Typen, Sichtbarkeit Zu folgendem Programmfragment meldet der Java-Compiler fünf Compilerfehler. public abstract class SuperTest { protected Object o = n("42"); abstract void m(); private String n(string s) { return s; class Test extends SuperTest { abstract void k(); void l(){ n("abc"); String s = o; main(null); public static void main(string[] args){ System.out.println(o);; Finden und begründen Sie die 5 Compilerfehler anhand der Hinweise: Compilerfehler im Zusammenhang mit dem Erben von abstrakten Klassen: Compilerfehler im Zusammenhang mit der Deklaration abstrakter Methoden: Compilerfehler zu Sichtbarkeiten: Test muss die abstrakte Methode m() aus SuperTest implementieren. Die nicht abstrakte Klasse Test darf keine abstrakte Methode k() deklarieren. n() aus SuperTest ist in Test nicht sichtbar. Compilerfehler im Zusammenhang mit Subtyping: String s = o : Einer mit String typisierten Variable darf keine mit Object typisierte Variable zugewiesen werden. Compilerfehler im Zusammenhang mit statischen Deklarationen: Aus einem statischen Kontext (der main-methode) kann nicht auf ein Objektattribut (o) zugegriffen werden. (jeweils 2 Punkte) Seite 5 von 17

6 Aufgabe 4: Aufzählungstypen Die Zustände einer Ampel (Lichtzeichenanlage) sollen in Java als Aufzählungstyp implementiert werden. Geben Sie eine Implementierung eines Typs Ampelzustand an, welche die Zustände ROT, ROT- GELB, GRUEN und GELB annehmen kann. public enum Ampelzustand { ROT, ROTGELB, GRUEN, GELB; (2 Punkte) Geben Sie eine Methode darffahren() an, die innerhalb von Ampelzustand implementiert genau dann true zurückgibt, wenn der Ampelzustand GRUEN oder GELB ist. public boolean darffahren(){ if(this == GRUEN this == GELB){ return true; else { return false; (3 Punkte) Geben Sie eine Methode kommtvor(ampelzustand nachfolgezustand) an, die, innerhalb von Ampelzustand implementiert, genau dann true zurückgibt, wenn der Parameter nachfolgezustand im Sinne der deutschen Straßenverkehrsordnung dem Zustand des Aufrufobjekts folgt. public boolean kommtvor(ampelzustand nachfolgezustand){ switch (this) { case ROT: return (nachfolgezustand == Ampelzustand.ROTGELB); case ROTGELB: return (nachfolgezustand == Ampelzustand.GRUEN); case GRUEN: return (nachfolgezustand == Ampelzustand.GELB); default: return (nachfolgezustand == Ampelzustand.ROT); (5 Punkte) Seite 6 von 17

7 Aufgabe 5: Überschreiben und Überladen Gegeben sei folgendes Java-Programm: public class Fuhrpark { public static void main(string[] args) { Auto auto = new Cabrio(); Boot boot1 = new Boot(); Boot boot2 = new Segelboot(); Motorboot motorboot = new Motorboot(); Cabrio cabrio = new Cabrio(); Super sup1 = new Super(); Super sup2 = new Sub(); sup1.m(motorboot, boot2); sup2.m(boot1, cabrio); sup1.m(boot1, cabrio); sup1.m(boot2, auto); sup2.m(boot1, auto); class Super { public void m(fahrzeug t1, Fahrzeug t2) { System.out.println("1"); public void m(fahrzeug t, Auto f) { System.out.println("2"); class Sub extends Super { public void m(fahrzeug t1, Auto t2) { System.out.println("3"); public void m(boot v, Auto f) { System.out.println("4"); class Fahrzeug { class Auto extends Fahrzeug { class Cabrio extends Auto { class Boot extends Fahrzeug { class Motorboot extends Boot { class Segelboot extends Boot { (Fortsetzung der Aufgabe auf folgender Seite) Seite 7 von 17

8 Begründen Sie, warum folgende Anweisungen zu welcher Ausgabe führen: Lehrgebiet Programmiersysteme (Fortsetzung von Aufgabe 5) sup1.m(motorboot, boot2); Ausgabe: 1 Begründung: Von beiden überladenen Methoden m in Super ist 1 die einzige mit überhaupt passender Signatur. sup2.m(boot1, cabrio); Ausgabe: 3 Begründung: Von beiden überladenen Methoden m in Super ist 2 die speziellere, weswegen der Compiler an diese bindet. Zur Laufzeit wird dann aber 2 von 3 überschrieben. sup1.m(boot1, cabrio); Ausgabe: 2 Begründung: Von beiden überladenen Methoden m in Super ist 2 die speziellere, weswegen der Compiler an diese bindet. Da auch der Laufzeittyp von sup1 Super ist, wird 2 ausgegeben. sup1.m(boot2, auto); Ausgabe: 2 Begründung: Von beiden überladenen Methoden m in Super ist 2 die speziellere, weswegen der Compiler an diese bindet. Da auch der Laufzeittyp von sup1 Super ist, wird 2 ausgegeben. sup2.m(boot1, auto); Ausgabe: 3 Begründung: Von beiden überladenen Methoden m in Super ist 2 die speziellere, weswegen der Compiler an diese bindet. Diese wird in Sub von der Methode 3 (nicht der Methode 4!) überschrieben, weswegen die Ausgabe 3 lautet. (jeweils 2 Punkte; ohne Begründung keine Punkte) Seite 8 von 17

9 Aufgabe 6: Objektorientierte Denkweise Die Programmiererin Daniela K. möchte ein objektorientiertes Programm für ein Motorrad schreiben. Sie beginnt mit folgendem Programmfragment: public class Motorrad { private boolean motorlaeuft; public void start() { motorlaeuft = true; public static void main(string[] args) { start(); Der Compiler meldet ihr: "Cannot make a static reference to the non-static method start() from the type Motorrad". So kommt sie auf die Idee, die Methode start als static zu deklarieren. Warum ist das falsch? Das Attribut motorlaeuft darf nicht static sein, sonst wäre es ein gemeinsames Attribut aller Motorräder, d.h. die Motorräder wären alle gleichzeitig entweder an oder aus, was man natürlich nicht haben will. Und damit darf auch die Methode start() nicht static sein, denn eine statische Methode wird nicht auf einem Exemplar aufgerufen (hat keinen impliziten Parameter), sie kennt überhaupt keine Exemplare. (5 Punkte) (Fortsetzung der Aufgabe auf folgender Seite) Seite 9 von 17

10 (Fortsetzung von Aufgabe 6) Wie könnte man den Fehler im Programm beheben? Geben Sie eine neue Implementierung der Main- Methode an. public class Motorrad { private boolean motorlaeuft; public void start() { motorlaeuft = true; public static void main(string[] args) { Motorrad m = new Motorrad(); m.start(); (5 Punkte) Erläuterung zur : Einer der Grundgedanken objektorientierter Programmierung ist es, Daten und die auf ihnen möglichen Operationen in einer Struktur zusammenzufassen, einem Objekt. Man kann dem Objekt Nachrichten senden (Methoden aufrufen) und dann tut es etwas, typischerweise verändert es seinen Zustand, welcher durch seine Attribute repräsentiert wird. Wenn jemand auf den Starterknopf seines Motorrads drückt, sendet er durch den Knopfdruck eine Nachricht an ein ganz bestimmtes Motorrad und dieses eine Motorrad reagiert darauf. Dem entspricht in einer ganz primitiven Simulation der Aufruf einer Methode start() auf einem Motorrad-Exemplar, welches daraufhin ein boolsches Attribut motorlaeuft von false auf true setzt. Kurz gesagt: Wenn man ein Motorrad starten will, braucht man auch ein Motorrad, also ein Exemplar. Und damit sieht der Code für das Motorrad sinnvollerweise etwa so wie oben vorgestellt aus. Seite 10 von 17

11 Aufgabe 7: Dynamisches Binden Dynamisches Binden bei Methodenaufrufen bezeichnet den Vorgang, durch den einem im Quellcode stehenden Methodenaufruf die Methode zugeordnet wird, welche dann tatsächlich ausgeführt wird. Dieser Vorgang erfolgt bei Java in zwei Stufen. Was erfolgt in der ersten Stufe durch den Compiler? Durch den Compiler erfolgt die Auflösung von Überladung nach dem Most-Specific-Algorithmus. Dabei werden nur die Deklarationstypen (statischen Typen) des Empfängers des Methodenaufrufs sowie der Parameter berücksichtigt. Das Ergebnis dieses Vorgangs ist der Aufruf einer bestimmten Methode, der durch den Compiler in den Bytecode geschrieben wird. (3 Punkte) Was geschieht zur Laufzeit? Die Laufzeitumgebung ( Virtual Machine, VM) ermittelt den tatsächlichen Typ (dynamischer Typ) des Objekts, an das sich der Methodenaufruf richtete. Das kann ein beliebiger Subtyp des Deklarationstyps sein und in diesem Typ könnte die betreffende Methode überschrieben worden sein. In der dem dynamischen Typ entsprechenden Klasse sucht die VM dann nach einer Methode, deren Signatur genau dem Methodenaufruf aus dem Bytecode entspricht. Findet sie diese Methode dort nicht, schaut sie in der Superklasse nach, ggf. in deren Superklasse und so weiter. Dass sich die Methode finden muss, ist klar, sonst hätte der Compiler den entsprechenden Methodenaufruf gar nicht erst zugelassen. (3 Punkte) (Fortsetzung der Aufgabe auf folgender Seite) Seite 11 von 17

12 (Fortsetzung von Aufgabe 7) Gegeben ist der folgende Programmtext: public class Test { public static void main(string[] args) { Super sup = new Sub(); System.out.println(sup.a); System.out.println(sup.m()); class Super { String a = "Super-Attribut"; String m() { return "Super-Methode"; class Sub extends Super { String a = "Sub-Attribut"; String m() { return "Sub-Methode"; Wie lautet die Ausgabe des Programms? Begründen Sie Ihre Lösung! Die Ausgabe dieses Programms lautet: Super-Attribut Sub-Methode Denn: Beim statischen Binden bei Attributen in Java spielt nur der Deklarationstyp des Ausdrucks, über den die Attributselektion erfolgt, eine Rolle. Der Deklarationstyp der Variablen sup ist Super, also wird die Variable a des Typs Super an die Attributselektion gebunden. Bei der Bindung der Methode durch die VM wird der Laufzeittyp (= dynamischer Typ) des von sup referenzierten Objekts berücksichtigt. Dies ist der Typ Sub. Da die Methode m() aus Super in Sub überschrieben wurde, wird die Methode m() von Sub ausgeführt ( dynamisches Binden ). (4 Punkte, nur soweit Begründung gegeben) Seite 12 von 17

13 Aufgabe 8: Foreach und generische Typen Bitte ergänzen Sie das folgende Programm durch geeignete Schleifen: public class Test { public static void main(string[] args) { // Array-Initialisierung mit klassischer for-schleife // Jedem Element des Feldes soll der String "Wert" zugewiesen werden String[] array = new String[3]; for (int i = 0; i < array.length; i++) { array[i] = "Wert"; (3 Punkte) // Iteration über den Array mit foreach-schleife: // Geben Sie innerhalb der Schleife die Elemente des // Arrays mit System.out.println aus for (String element : array) { System.out.println(element); (2 Punkte) // Initialisierung einer LinkedList mit den Elementen // des Arrays mit Hilfe einer foreach-schleife LinkedList<String> list = new LinkedList<String>(); for (String element : array) { list.add(element); (3 Punkte) // Iteration über die LinkedList mit foreach-schleife // Geben Sie innerhalb der Schleife die Elemente des // Arrays mit System.out.println aus for (String element : list) { System.out.println(element); (2 Punkte) Seite 13 von 17

14 Aufgabe 9: Threads Gegeben sei folgendes Java-Programm: public class Threads { public static void main(string[] args){ Lager lager = new Lager(); Arbeiter t1= new Arbeiter(lager); Arbeiter t2= new Arbeiter(lager); t1.start(); t2.start(); class Lager { private int auslagergenommen = 0; public void nimmauslager() { int tmp = auslagergenommen; auslagergenommen = tmp + 1; class Arbeiter extends Thread { private Lager lager; public Arbeiter(Lager lager){ this.lager = lager; public void run() { for(int i=0; i<10;i++){ lager.nimmauslager(); (Fortsetzung der Aufgabe auf folgender Seite) Seite 14 von 17

15 (Fortsetzung von Aufgabe 9) Die Klasse Arbeiter erbt hier von Thread und erhält dadurch die Möglichkeit, von der Virtuellen Maschine in einem eigenen Thread ausgeführt zu werden. Wie aber ist zu verfahren, wenn Arbeiter von einer anderen Klasse (z.b. einer importierten Klasse Person) erben soll, aber trotzdem die Möglichkeit erhalten bleiben soll, einen Arbeiter als eigenen Thread auszuführen? Welche Änderungen ergeben sich dadurch innerhalb der main-methode? Anstatt von Thread zu erben, kann Arbeiter auch das Interface Runnable implementieren. Dann verändern sich die Initialisierungen von t1 und t2 in der main-methode wie folgt: Thread t1= new Thread(new Arbeiter(lager)); Thread t2= new Thread(new Arbeiter(lager)); (4 Punkte) Das Feld auslagergenommen soll nach Programmende angeben, wie oft die Methode nimmauslager aufgerufen wurde. Erklären Sie, warum dies in obigem Programm nicht zwangsläufig der Fall ist. Es kann passieren, dass beide Arbeiter-Threads gleichzeitig die Methode nimmauslager abarbeiten. Wenn beide Threads kurz nacheinander den Wert n aus dem Feld auslagergenommen auslesen und anschließend beide in das Feld auslagergenommen den Wert n+1 zurück schreiben, wurde auslagergenommen insgesamt um nur 1 erhöht, obwohl die Methode nimmaus- Lager zweimal aufgerufen wurde. (4 Punkte) Geben Sie eine Lösung für das in der vorherigen Teilaufgabe beschriebene Problem an: Durch Hinzufügen des Schlüsselwortes synchronized zur Methodensignatur von nimmauslager wird sichergestellt, dass nur ein Thread gleichzeitig diese Methode ausführen kann. (2 Punkte) Seite 15 von 17

16 Aufgabe 10: Verteilte Systeme Was wird im Kurs 1618 unter einem Verteilten System verstanden? Kriterien verteilter Systeme: Eine Menge von lose gekoppelten Prozessen d.h. von Prozessen, die unabhängig voneinander Berechnungen ausführen und miteinander kommunizieren können. Jeder Prozess arbeitet dabei ein eigenes Programm in einem eigenen Adressraum ab. Insbesondere arbeiten die Prozesse im Allgemeinen parallel. Typischerweise sind verteilte Systeme räumlich, d.h. auf mehrere Rechner verteilt. (2 Punkte) Sockets bilden eine Abstraktionsschicht zur Kommunikation zwischen verteilten Prozessen, die den Programmierer von einigen nicht trivialen Tätigkeiten befreit. Welche Tätigkeiten sind das? Zerteilen der Daten Einpacken der Daten in Pakete mit Adressinformation, Verwaltungsinformation und Paketinhalt Auspacken der eintreffenden Pakete Reihenfolge der eintreffenden Pakete sicherstellen fehlende Pakete nachfordern Pakete am Zielort wieder zusammensetzen. (3 Punkte) (Fortsetzung der Aufgabe auf folgender Seite) Seite 16 von 17

17 (Fortsetzung von Aufgabe 10) Lehrgebiet Programmiersysteme Wie sieht das grundlegende Muster zur Realisierung eines einfachen Servers aus? Geben Sie das passende Programmfragment (Pseudocode oder Java) an oder beschreiben Sie das Muster textuell. Programmfragment des Musters: ServerSocket serversocket = new ServerSocket(Portnummer); while (true) { // Öffnen der Ein- und Ausgabeströme zum Client Socket socket = serversocket.accept(); // Kommunikation zwischen Server und Client socket.close(); Textuelle Beschreibung des Musters: Der Server-Prozess schließt sich an den gewünschten Port an. Dies geschieht in Java mittels des Konstruktors der Klasse ServerSocket. Dann betritt er üblicherweise eine Endlosschleife. Jeder Durchlauf durch die Schleife entspricht der Bedienung eines Clients. In der Schleife wartet der Server, dass sich ein Client an den Port anschließt. Das Warten und das nachfolgende Herstellen der Socket-Verbindung zum Client wird in Java von der Methode accept geleistet. Ihr Aufruf blockiert, bis sich ein Client angeschlossen hat, und liefert dann das Socket-Objekt zurück, das die Verbindung zum Client repräsentiert. Das Socket-Objekt stellt Methoden zur Verfügung, um die Ein- und Ausgabeströme zum Client zu öffnen. (5 Punkte) Seite 17 von 17

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Musterlösung. Klausurort: Aufgabe Summe

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Musterlösung. Klausurort: Aufgabe Summe (Name, Vorname) (Straße, Nr.) (PLZ) (Wohnort) (Land, falls außerhalb Deutschlands) Kurs 1618 SS 2010 Einführung in die objektorientierte Programmierung Klausur am 11.9.2010 Dauer: 3 Std., 10 13 Uhr Lesen

Mehr

Kurs Einführung in die objektorientierte Programmierung (Kursdurchführung des Sommersemester 2016) Klausur am

Kurs Einführung in die objektorientierte Programmierung (Kursdurchführung des Sommersemester 2016) Klausur am (Name, Vorname) (Straße, Nr.) (PLZ) (Wohnort) (Land, falls außerhalb Deutschlands) Kurs 01618 Einführung in die objektorientierte Programmierung (Kursdurchführung des Sommersemester 2016) Klausur am 10.09.2016

Mehr

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe n (Name, Vorname) (Straße, Nr.) (PLZ) (Wohnort) (Land, falls außerhalb Deutschlands) Kurs 1618 SS 2011 Einführung in die objektorientierte Programmierung Klausur am 10.9.2011 Dauer: 3 Std., 10 13 Uhr Lesen

Mehr

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe

Lesen Sie zuerst die Hinweise auf der folgenden Seite! Klausurort: Aufgabe Summe (Name, Vorname) (Straße, Nr.) (PLZ) (Wohnort) (Land, falls außerhalb Deutschlands) Kurs 1618 SS 2011 Einführung in die objektorientierte Programmierung Nachklausur am 11.2.2012 Dauer: 3 Std., 10 13 Uhr

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

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

Lesen Sie zuerst die Hinweise auf der Rückseite!

Lesen Sie zuerst die Hinweise auf der Rückseite! Fachbereich 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 Deutschlands)

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

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

Kapitel 6. Vererbung

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

Mehr

Kapitel 6. Vererbung

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

Mehr

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

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

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

Java Vererbung. Inhalt

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

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Javakurs 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

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

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces 10 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Interfaces Aber: Mehrfachvererbung von Klassen ist in Java nicht erlaubt. Ausweg Definition eines Interfaces, z.b.:

Mehr

Theorie zu Übung 8 Implementierung in Java

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

Mehr

Ü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

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

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

Mehr

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

Algorithmen und Datenstrukturen 07

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

Mehr

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

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

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

5. Tutorium zu Programmieren

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

Mehr

1 Polymorphie (Vielgestaltigkeit)

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

Mehr

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

JAVA für Nichtinformatiker - Probeklausur -

JAVA für Nichtinformatiker - Probeklausur - JAVA für Nichtinformatiker - Probeklausur - Die folgenden Aufgaben sollten in 150 Minuten bearbeitet werden. Aufgabe 1: Erläutere kurz die Bedeutung der folgenden Java-Schlüsselwörter und gib Sie jeweils

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

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

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

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

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

Mehr

Javakurs für Anfänger

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

Mehr

Java I Vorlesung Vererbung und Sichtbarkeit

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

Mehr

Musterlösungen zur Klausur Informatik 3

Musterlösungen zur Klausur Informatik 3 Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus

Mehr

3. Anweisungen und Kontrollstrukturen

3. Anweisungen und Kontrollstrukturen 3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen

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

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger Informatik II Hinweise: Die Bearbeitungszeit beträgt 90

Mehr

Java Einführung Methoden in Klassen

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

Mehr

Wiederholung zur Vorlesung Programmieren

Wiederholung zur Vorlesung Programmieren Wiederholung zur Vorlesung Jan 2007 Wintersemester 2007/2008 Computerlinguistik, Campus DU Einstieg Erläutern sie in knappen Worten die notwendigen Schritte um ein einfaches Java-Programm zu schreiben

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

Einführung in die Programmierung

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

Mehr

Vorname: Nachname: Matrikelnummer: Klausur. Betriebssysteme

Vorname: Nachname: Matrikelnummer: Klausur. Betriebssysteme Vorname: Nachname: Matrikelnummer: Klausur Betriebssysteme 12.02.2013 Hinweise: 1. Beschriften Sie als erstes diese Seite mit Ihrem Namen, Vornamen und Ihrer Matrikelnummer (deutlich in Druckbuchstaben).

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe Java: Eine Übersicht Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe Allgemeines Objektorientiert Syntaxfamilie von C/C++ Statisch getypt Entwickelt von Sun Microsystems class

Mehr

3D Programmierpraktikum: Einführung in C++ - Teil 2

3D Programmierpraktikum: Einführung in C++ - Teil 2 3D Programmierpraktikum: Einführung in C++ - Teil 2 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 4. Mai 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

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

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

Mehr

Beispiel für überladene Methode

Beispiel für überladene Methode Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

AuD-Tafelübung T-B5b

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

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Programmieren I + II Regeln der Code-Formatierung

Programmieren I + II Regeln der Code-Formatierung Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden

Mehr

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

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

Mehr

Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr.

Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr. Universität Augsburg, Institut für Informatik Sommersemester 2003 Prof. Dr. Bernhard Bauer 18. Oktober 2003 Stefan Fischer, Dr. Martin Müller Informatik II 2. Semesterklausur Prüfungsmodul Informatik II

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Android will doch nur spielen. Java Eine kurze Einführung

Android will doch nur spielen. Java Eine kurze Einführung Android will doch nur spielen Java Eine kurze Einführung Agenda Einführung in Java Syntax und Semantik Komplexe Datenstrukturen OOP Weitere Java-Elemente 2 Einführung in Java Was ist Java? lt. Sun: einfach

Mehr

5.6 Vererbung. Vererbung

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

Mehr

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.

Versuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore. Hochschule Harz Versuch: fcopy Mit Java FB Automatisierung und Informatik Betriebssysteme Thema: Kopieren einer Datei unter der Kontrolle von Semaphoren Versuchsziele Konzepte der parallelen Programmierung

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Aufgabe 1: Quer durch Java (4 Punkte) super abstract abstract protected

Aufgabe 1: Quer durch Java (4 Punkte) super abstract abstract protected Universität Augsburg, Institut für Informatik Sommersemester 2006 Prof. Dr. Werner Kießling 14. Oktober 2006 Markus Endres, Alfons Huhn, Timotheus Preisinger Informatik II Klausur 2 Hinweise: Die Bearbeitungszeit

Mehr

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion 1 Java 1.1 e B Java RMI orientierte Sprache e beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. referenzen Verweise auf e keine Zeiger, Adressen o.ä. B.1 B.2 1.1 e (2)

Mehr

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf 16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen

Mehr

Java Einführung Methoden. Kapitel 6

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

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

188.154 Einführung in die Programmierung Vorlesungsprüfung

188.154 Einführung in die Programmierung Vorlesungsprüfung Matrikelnummer Studienkennzahl Name Vorname 188.154 Einführung in die Programmierung Vorlesungsprüfung Donnerstag, 27.1.2005, 18:15 Uhr EI 7 Arbeitszeit: 60 min - max. 50 Punkte erreichbar - Unterlagen

Mehr

Höhere Programmierkonzepte Testklausur

Höhere Programmierkonzepte Testklausur Höhere Programmierkonzepte Testklausur Prof. Dr. Nikolaus Wulff Zum 15. Januar 2016 1 Ein Google-Map Algorithmus (5 Punkte) 1 2 typedef void X; 3 typedef void Y; 4 5 void map(unsigned int n / tuple length

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs C++ Abstrakte Klassen und Methoden Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double

Mehr

Algorithmen und Programmierung II

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

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Programmierkurs. Manfred Jackel

Programmierkurs. Manfred Jackel Java für Anfänger Teil 7: Methoden Programmierkurs 06.-10.10.2008 Manfred Jackel 1 Methoden In der imperativen Programmierung sind Funktionen ein wichtiges Mittel zur Modularisierung. [Oft benötigter]

Mehr

Enumerations und innere Klassen

Enumerations und innere Klassen Enumerations und innere Klassen Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung

Mehr

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung. Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,

Mehr

Parallele Prozesse. Prozeß wartet

Parallele Prozesse. Prozeß wartet Parallele Prozesse B-66 Prozeß: Ausführung eines Programmes in seinem Adressraum (zugeordneter Speicher) Parallele Prozesse: gleichzeitig auf mehreren Prozessoren laufende Prozesse p1 p2 verzahnte Prozesse:

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Endtermklausur Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Java-Programmierung. Remote Method Invocation - RMI

Java-Programmierung. Remote Method Invocation - RMI Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 14: Generics Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Generische Klassen (Generics) Motivation Java Typ-Prüfung Warum also Generics? Generische

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 Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference) 2. Methoden n Generelles zum Aufruf von Methoden n Parameterübergabemechanismen (call by value, call by reference) n Speicherorganisation bei Methodenaufruf und Parameterübergabe (Laufzeitkeller) n vararg

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

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte) Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

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

Mehr

2.2 Prozesse in Java

2.2 Prozesse in Java 2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.

Mehr

JAVA - Methoden

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

Mehr

Programmieren in Java

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

Mehr

Semestralklausur Einführung in die Programmierung, WS 2005/06, Seite 1/6 Name, Vorname, Matrikelnummer: Gruppe A

Semestralklausur Einführung in die Programmierung, WS 2005/06, Seite 1/6 Name, Vorname, Matrikelnummer: Gruppe A Semestralklausur Einführung in die Programmierung, WS 2005/06, 6.2.2006 Seite 1/6 Name, Vorname, Matrikelnummer: Unterschrift: 1 Grundlagen (5+5 Punkte) Gruppe A a) Schreiben Sie eine Klassenmethode mit

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

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

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

Mehr

Klausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

Klausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415 Klausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415 Alexander Bazo 19. Februar 2015 Allgemeine Hinweise 1. Die Bearbeitungszeit beträgt 60 Minuten. Sie könne 50 Punkte

Mehr

1. Der Einstieg in Java. Was heißt Programmieren?

1. Der Einstieg in Java. Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung

Mehr

Teil 2: OOP und JAVA (Vorlesung 11)

Teil 2: OOP und JAVA (Vorlesung 11) Teil 2: OOP und JAVA (Vorlesung 11) Modul: Programmierung B-PRG Grundlagen der Programmierung II Prof. Dot.-Ing. Roberto Zicari Professur für Datenbanken und Informationssysteme (FB 12) 28.06.06 1 Teil

Mehr