Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte)

Ähnliche Dokumente
Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2002 am

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

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

Einstieg in die Informatik mit Java

Programmieren in Java

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Eingabe von Texten. Vorlesung Software-Entwicklung / Folie 101

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

Probeklausur: Programmierung WS04/05

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Java - Programmierung - Objektorientierte Programmierung 1

Graphische Benutzungsoberflächen

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

3 Objektorientierte Konzepte in Java

Java-Schulung Grundlagen

Ein Manager mit CardLayout layout/cards.java

GUI Programmierung mit JAVA Swing

Programmieren 2 Selbststudium Semesterwoche 4

Objektorientierte Software-Entwicklung

JAVA - Methoden

Mobile und Verteilte Datenbanken

Exceptions. Prof. Dr. Margarita Esponda SS M. Esponda-Argüero

von Anja Austermann Drag and Drop

Algorithmen und Datenstrukturen

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf

NTB Druckdatum:

Wiederholung zur Vorlesung Programmieren

Distributed Computing Group

JAVA - Methoden - Rekursion

Exception. 6. Exceptions. Die Klasse java.lang.exception. Fehlermeldung. Klassenname. Ort des Auftretens

Programmieren I + II Regeln der Code-Formatierung

Udo Matthias Munz. Datenbanken und SQL. mit. Einführung. Informationstechnik

Beispiel: DB-Mock (1/7)

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Exceptions: Parameterprüfung import java.io.ioexception;

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

3 Objektorientierte Konzepte in Java

Objektorientierte Programmierung

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

Javakurs zu Informatik I. Henning Heitkötter

II.1.1. Erste Schritte - 1 -

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Java Vererbung. Inhalt

Seite Architektur interaktiver Systeme. 7. Architektur interaktiver Systeme. 7.1 Entkopplung durch Sichten. Schichtenarchitektur

Java Fehlerbehandlung

Einführung in die Programmierung Blockkurs Java

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Übersicht. 1 Vorbemerkungen zu Sequenzdiagrammen. 2 Sequenzdiagramm aus Code ableiten. 3 Sequenzdiagramm konstruieren und in Java implementieren

Grafik-Programmierung

Java-Programmierung. Remote Method Invocation - RMI

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

Lösungen. 1. Aufgabe. // ActionExample.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Theorie zu Übung 8 Implementierung in Java

Was passiert, wenn Button "Ok?" mit Maus angeklickt?

2A Basistechniken: Weitere Aufgaben

Themen. Web Service - Clients. Kommunikation zw. Web Services

Mobile und Verteilte Datenbanken

Überschreiben von Methoden

Java: Vererbung. Teil 3: super()

Einstieg in die Informatik mit Java

Einführung in die Programmierung

Klausur vom 14. Juni Informatik 4

Teil 2: OOP und JAVA (Vorlesung 11)

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing

Codestil. Erläuterung und Definition eines einheitlichen Codestils. Anfänger-Praktikum SS 2004 Gruppe 2 Tutor Aaron Ruß Autor: Tomas Cernaj

Variablen manipulieren per JDI

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

Große Übung Praktische Informatik 1

Programmieren in Java

Softwarepraktikum: Enigma

Kapitel 14. Systemarchitektur

Graphische Programmierung: GUIs: graphical user interfaces

Kapitel 6. Vererbung

Klassen in Java. Klassen

5.6 Vererbung. Vererbung

Gebundene Typparameter

5 Grundlagen der Java-Syntax

7. Architektur interaktiver Systeme

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Software Engineering

J.1. J.1 GUI-Programmierung in in Java Prof. Dr. Rainer Manthey Informatik II 1

Probeklausur: Programmierung WS04/05

PR1-MB, SS16 Seite 1 Hauptklausur, geschrieben am Do

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

3. Exceptions. Hintergrund: Programmieren auf der Basis von Verträgen. Kundenklasse. Lieferantenklasse

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Software-Engineering Software-Management

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009.

Informatik II. /* c) Baumstruktur in einen String schreiben und zurueckgeben */ public String tostring() {

1 Polymorphie (Vielgestaltigkeit)

Einführung in die Informatik - Teil 6b -

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr Seite 1 von 5. Teil 2: Aufgaben

Remote Method Invocation

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

Enumerations und innere Klassen

Transkript:

Klausur zum Kurs 1618 im Sommersemester 2002 am 10.8.2002 1 Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte) Was ist der Unterschied zwischen a) einem Objekt und einer Klasse? b) der Instanz einer Klasse und einem Objekt vom Typ der Klasse? c) einer lokalen Variablen und einem Attribut? Warum kann d) eine Klasse nicht mit dem Modifizierer private versehen werden (sofern es sich nicht um eine innere Klasse handelt)? e) man innerhalb einer Subklasse nur Methoden und Attribute hinzufügen, aber nicht entfernen? Aufgabe 2: Überladen / Überschreiben (20 Punkte) In dieser Aufgabe geht es um das Überladen und Überschreiben von Methoden. Aufgaben: a) Erläutern Sie, was man unter dem Überladen von Methoden (overloading) versteht. Erläutern Sie auch, wie die aktuell auszuführende Methode ausgewählt wird. (5 Punkte) b) Grenzen Sie den Begriff Überschreiben von Methoden (overwriting) gegen den des Überladens von Methoden ab. Erläutern Sie auch hier, anhand welcher Kriterien die aktuell auszuführende Methode ausgewählt wird. (5 Punkte) c) Geben Sie jeweils ein Beispiel für das Überladen und Überschreiben von Methoden an. Die Beispiele sollen den Unterschied zwischen beiden Begriffen deutlich machen. Klassen aus den Java-Bibliotheken wie z.b. String oder Beispiele aus dem Kurstext dürfen NICHT verwendet werden (auch nicht gebunden umbenannt). (10 Punkte)

Klausur zum Kurs 1618 im Sommersemester 2002 am 10.8.2002 2 Aufgabe 3: Ereignissteuerung (25 Punkte) Im Folgenden wollen wir drei Objekte betrachten, zwei Buttonobjekte und ein Textfeld. (Eine Implementierung der zugehörigen Objekttypen finden Sie weiter unten). Das Textfeld dient zur Anzeige eines Zählerstandes. Jedes Mal, wenn mit der Maus auf den ersten Button geklickt wird, soll der Zähler um 1 erhöht werden. Wird mit der Maus auf den zweiten Button geklickt, soll der Zähler um 1 erniedrigt werden. import java.awt.*; import java.awt.event.*; class ZaehlerIncButton extends Button { public ZaehlerIncButton() { super ("Zaehler erhoehen"); this.setforeground (Color.blue); class ZaehlerDecButton extends Button { public ZaehlerDecButton() { super ("Zaehler erniedrigen"); this.setforeground (Color.red); class ZaehlerTextFeld extends TextField { private int zaehler = 0; public ZaehlerTextFeld() { String zaehlerstand; zaehlerstand = Integer.toString(zaehler); this.settext (zaehlerstand); this.setforeground(color.blue); this.setfont(new java.awt.font("sansserif", 0, 24)); public void erhoehezaehler () { String zaehlerstand; zaehler ++; zaehlerstand = Integer.toString(zaehler); this.settext (zaehlerstand); public void erniedrigezaehler () { String zaehlerstand; zaehler --; zaehlerstand = Integer.toString(zaehler); this.settext (zaehlerstand); public class Test { public static void main(string[] args) { Label zaehlertext = new Label ("Aktueller Zaehlerstand :"); zaehlertext.setbackground(color.white); zaehlertext.setforeground(color.blue); zaehlertext.setfont(new java.awt.font("sansserif", 0, 14));

Klausur zum Kurs 1618 im Sommersemester 2002 am 10.8.2002 3 ZaehlerIncButton zaehlerincbutton = new ZaehlerIncButton(); ZaehlerDecButton zaehlerdecbutton = new ZaehlerDecButton(); ZaehlerTextFeld zaehlertextfeld = new ZaehlerTextFeld(); Panel buttonpanel = new Panel(); buttonpanel.setlayout(new FlowLayout()); buttonpanel.add (zaehlerincbutton); buttonpanel.add (zaehlerdecbutton); BorderLayout borderlayout1 = new BorderLayout(); Frame f = new Frame (); f.setsize (300,200); f.setlocation (100,100); f.setlayout(borderlayout1); f.add (zaehlertext, BorderLayout.NORTH); f.add (zaehlertextfeld, BorderLayout.CENTER); f.add (buttonpanel, BorderLayout.SOUTH); f.addwindowlistener(new WindowAdapter() { public void windowclosing (WindowEvent e) { System.exit (0); ); f.setvisible (true); Aufgaben: a) Erläutern Sie, welche Funktionalitäten ein Objekt zur Verfügung stellen muss, um als Quelle für eine bestimmte Ereignissorte ES fungieren zu können. (5 Punkte) b) Welche Funktionalitäten muss ein Objekt zur Verfügung stellen, das als Beobachter einer Ereignissorte ES verwendet werden soll? c) Welche Aktivitäten sind nötig, damit ein Objekt (z.b. das Textfeld) tatsächlich beim Auftreten eines Ereignisses der Ereignissorte ES von der Ereignisquelle (z.b. einem der Buttonobjekte) benachrichtigt werden kann? d) Welche Ereignissorte des AWT muss von den Buttonobjekten und dem Textfeld unterstützt werden, um die in der Aufgabenstellung beschriebene Funktionalität zu ermöglichen? (1 Punkte) e) Erweitern Sie die oben angegebene Implementierung um alle Programmteile, die nötig sind, damit der Zählerstand bei einem Mausklick auf zaehlerincbutton erhöht und bei einem Mausklick auf zaehlerdecbutton erniedrigt wird. zaehlertextfeld soll dabei zum Beobachter an den beiden Buttonobjekten werden. Wenn für eine der angegebenen Klassen keine Änderungen nötig sind, begründen Sie, warum dies der Fall ist. (13 Punkte)

Klausur zum Kurs 1618 im Sommersemester 2002 am 10.8.2002 4 Aufgabe 4: Ausnahmebehandlung (40 Punkte) a) Gegeben sei folgendes Muster für eine Methodenimplementierung: public void MethodenBezeichner (ParamTyp1 param1,..., ParamTypN paramn ) { Anweisung a1... Anweisung ak try try-block catch ( AusnahmeTyp1 Bezeichner1 ) catch-block1... catch ( AusnahmeTypN BezeichnerN ) catch-blockn finally finally-block Anweisung b1... Anweisung bl Beantworten Sie bitte folgende Fragen: 1. Wozu wird die try-anweisung eingesetzt und welche Vorteile bietet sie z.b. gegenüber den Möglichkeiten in PASCAL 1? 2. Wann ist es zulässig, dass zu einer Ausnahme, die in einem try-block auftreten kann, keine zugehörige catch-klausel existiert? 3. Wir nehmen an, dass zu einer Ausnahme vom Typ E mindestens eine passende catch-klausel existiert. Wie wird die catch-klausel bestimmt, die diese Ausnahme behandelt? (2 Punkte) 4. Wie werden Ausnahmen behandelt, zu denen es keine passende catch-klausel gibt? Gehen Sie dabei der Einfachheit halber davon aus, dass die Ausnahmen nicht in einem catch- oder finally-block auftreten. (6 Punkte) 5. Wann wird die finally-klausel ausgeführt? (2 Punkte) 6. In welchen Fällen wird die auf eine try-anweisung folgende Anweisung (hier Anweisung b1) ausgeführt? (2 Punkte) 1 Tipp: abrupte Terminierung, Schichtenarchitektur

Klausur zum Kurs 1618 im Sommersemester 2002 am 10.8.2002 5 b) Gegeben sei das folgende Java-Programm: 1: package exceptions; 2: 3: class OverflowException extends Exception { 4: public OverflowException () { 5: super ("Produkt groesser als 100"); 6: 7: 8: 9: class DivisionException extends Exception { 10: public DivisionException () { 11: super ("Division durch faktor nicht ohne Rest moeglich"); 12: 13: 14: 15: public class TestExceptions { 16: private int faktor = 1; 17: 18: public TestExceptions (int newfaktor) { faktor = newfaktor; 19: 20: public int m1 (int i) throws OverflowException { 21: int j = i * faktor; 22: if ((j < -100) (j > 100)) { throw new OverflowException (); 23: else return j; 24: 25: 26: public int m2 (int i) throws DivisionException { 27: if (i % faktor == 0) { return (i / faktor); 28: else { throw new DivisionException (); 29: 30: 31: public int m3 (String st) { 32: try { 33: int i = Integer.parseInt(st); 34: if ( i < 30 && i > -30) { return m1 (i); 35: else if ( i >= 40 && i <= 100 ) { return m2 (i); 36: 37: catch (OverflowException oe) { 38: System.out.println(oE.getMessage()); 39: return -1; 40: 41: catch (DivisionException de) { 42: System.out.println(dE.getMessage()); 43: return -1; 44: 45: finally { System.out.println("Welches Ergebnis wird zurueckgeliefert?"); 46: System.out.println("Aus die Maus!"); 47: return 0; 48: 49:

Klausur zum Kurs 1618 im Sommersemester 2002 am 10.8.2002 6 50: public static void main(string[] args) { 51: TestExceptions testexceptions = new TestExceptions(15); 52: String[] starray = {"Ihnen", "viel", "Glueck!"; 53: int i; 54: try { 55: i = testexceptions.m2(45); 56: System.out.println ("aktueller Arrayindex :" + i); 57: starray[i] = starray[i].touppercase(); 58: System.out.println ("Wert an Position " + i + " : " + starray[i]); 59: 60: catch (NumberFormatException e) {System.out.println ("NumberFormatException"); 61: catch (ArrayIndexOutOfBoundsException e) { 62: System.out.println ("Index nicht im gueltigen Bereich"); 63: catch (Exception e) {System.out.println ("Welche Exception wurde gefangen?"); 64: try { System.out.println ("Ergebnis von m1(m2(75)): " 65: + testexceptions.m1(testexceptions.m2(75))); 66: 67: catch (OverflowException e2) {System.out.println (e2.getmessage()); 68: catch (DivisionException e2) {System.out.println (e2.getmessage()); 69: finally { 70: try { 71: i = testexceptions.m1(5); 72: i = testexceptions.m3("08.00"); 73: 74: catch (NumberFormatException e3) {System.out.println ("Kein Integer"); 75: catch (Exception e3) {System.out.println (e3.getmessage()); 76: 77: System.out.println ("Ist jetzt endlich Schluss???"); 78: 79: Aufgaben: 1. Welche Systemausgaben werden durch Abarbeitung des Programms erzeugt? (6 Punkte) 2. Beschreiben Sie detailliert, was bei der Ausführung des Programms passiert, d.h. welche Exceptions auftreten, wo diese abgefangen und behandelt werden und warum die Systemausgaben aus 1. erzeugt werden. Nehmen Sie dabei Bezug auf die angegebenen Zeilennummern. (16 Punkte)