Hallo zusammen,
ich verzweifle, ich schreibe morgen Klausur und kann die Aufgaben nicht richtig lösen... Es ist eine Beispielklausur aus der Vergangenheit... Und das erste Mal bin ich durchgefallen...
Kann mir jdn bei Beantwortung der Fragen bitte helfen, damit ich heute Abend eine Musterlösung habe, wo ich weiß dass es richtig ist ??
Aufgabe 1: (12P)
Schreiben Sie drei Interfaces A, B und C, sowie zwei Klassen X und Y mit folgenden Eigenschaften:
Interface A erweitert Interface B, Interface B erweitert Interface C, Klasse X erweitert Klasse Y, Klasse X implementiert A und Klasse Y implementiert B. Weder X noch Y ist abstrakt. In Interface A ist eine Methode a deklariert, In Interface B eine Methode b und in Interface C eine Methode c. Alle drei Methoden sind Klassenmethoden ohne Rückgabewerte und mit leeren Parameterlisten. In den Klassen X und Y sollen nur so viele Methodenimplementationen vorkommen wie unbedingt notwendig (diese Implementationen dürfen beliebig einfach sein).
Aufgabe2: (16P)
Stichwort static: Wie Sie wissen, kann eine Methode auf eine Datenkomponente der Klasse zugreifen bzw. eine Methode der Klasse aufrufen, ohne dass der Name der Klasse oder der Name einer Variable der Klasse vor dem Namen der Datenkomponente bzw. Methode (mit Punkt getrennt) angegeben werden muss. Geben Sie an, welche der folgenden vier Möglichkeiten in dieser Form in Java zulässig sind und welche nicht.
a) Eine Klassenmethode greift auf eine Objektvariable zu
b) Eine Objektmethode greift auf eine Klassenkonstante zu
c) Eine Klassenmethode ruft eine Objektmethode auf
d) Eine Objektmethode ruft eine Klassenmethode auf
Aufgabe3: (20P)
Erinnerung: Die Klasse Integer hat Klassenkonstante MAX_VALUE und MIN_VALUE vom Typ int, in dem der größte bzw. kleinste überhaupt mögliche int-Wert stehen.
Schreiben Sie eine Java-Methode namens add, die zwei Parameter a und b vom Typ int hat, und auch der Rückgabetyp ist vom Typ int. Wenn a+b im Bereich INTEGER.MIN_VALUE……..INTEGER.MAX_VALUE liegt, soll der Rückgabewert auch a+b sein. Falls a+b größer als INTEGER.MAX_VALUE ist, soll die Methode add den Wert INTEGER.MAX_VALUE zurückliefern. Falls hingegen a+b kleiner als INTEGER.MIN_VALUE ist, soll die Methode add den Wert INTEGER.MIN_VALUE zurückliefern.
Die Methode darf nur die arithmetischen Operatoren ++ und – verwenden (also nicht die Operatoren +, -, *, / und %). Sie dürfen zudem weder das Schlüsselwort while, noch das Schlüsselwort for verwenden. Und Sie dürfen in add keine Methoden aufrufen.
Die Klasse, zu der die Methode gehört, brauchen Sie nicht zu schreiben, die Methode add reicht aus.
Unverbindliche Hinweise:
1.) Ihre Methode muss also rekursiv sein und kann sich selbst immer nur mit den Werten a2 und b2 aufrufen, so dass a und a2 sich nur um 1 unterscheiden und genauso b und b2 sich nur um 1 unterscheiden.
2.) Lassen Sie den Wert von b in jedem rekursiven Schritt um 1 näher an 0 herankommen und brechen Sie ab, sobald b den Wert 0 erreicht hat.
Aufgabe4: (12P)
Erstellen Sie ein einzelnes, möglichst kleines, selbst gewähltes Beispiel, an dem die unterschiedlichen Funktionen der Schlüsselwörter public, private und protected speziell auf den Zugriff auf Objektvariable demonstriert werden können. Erläutern Sie diese unterschiedlichen Funktionen kurz, aber präzise anhand Ihres Beispiels. Ihr Beispiel sollte alle 3 x 3 relevanten Variationen von Zugriffen von Methoden verschiedener Klassen auf die Objektvariablen einer Klasse demonstrieren. Insbesondere wird Ihr Code beim Zugriff auf die private- und protected- deklarierte Datenkomponente Fehlermeldungen beim Kompilieren erzeugen (worauf Sie bei der Erläuterung natürlich ebenfalls eingehen).
Achtung: Ohne Erläuterungen können Sie nicht mit einer hohen Punktzahl rechnen!
Aufgabe5: (40P)
Schreiben Sie eine Java-Klasse Addierer, das die Kommandozeilenargumente als reelle Zahlen in Gleitpunktdarstellung interpretiert und zusammenzählt. Eine reelle Zahl ist entweder (1) eine beliebige endliche Folge von Ziffern 0…9 oder (2) besteht aus zwei solchen Folgen mit einem Punkt dazwischen (dem Dezimalpunkt). Im zweiten Fall darf die Ziffernfolge vor dem Punkt auch leer sein, das ist dasselbe, als wenn eine 0 vor dem Dezimalpunkt stünde. Vor der ersten Ziffer darf ein Vorzeichen + oder – stehen, muss aber nicht. Wenn ein Kommandozeilenargument dieser Form entspricht, berechnet sich sein Zahlenwert nach den allgemein üblichen Regeln, ansonsten ist der Zahlenwert 0.
Lagern Sie die Berechnung des Zahlenwertes eines Strings in eine Methode zahlenwert aus.
Unverbindliche Hinweise:
1.) Erinnerung: Die main-Methode einer Klasse, mit der diese Klasse als Java-Programm aufgerufen werden kann (etwa mit dem Interpreter java), ist eine Klassenmethode mit Rückgabetyp void und einem String-Array als einzigem Parameter. Die Komponenten des Strings sind die Kommandozeilenargumente.
Beispiel: Beim Aufruf von „java Bla aa bb cc“ wird ein String-Array der Länge 3 an die main-Methode der Klasse Bla übergeben, dessen Komponenten aa, bb und cc sind.
2.) Erinnerung: Sie können mit S[ i ] auf das Zeichen in String S an Position i zugreifen (wobei wie üblich 0 die erste Position ist).
3.) Gehen Sie in zahlenwert den String von der ersten bis zur letzten Position in einer einzelnen Schleife durch.
4.) Richten Sie in zahlenwert zwei Boolesche Variable vorzeichenIstAngegeben und dezimalpunktSchonGesehen und eine reelle Variable nachKommaFaktor ein. Die Variable nachKommaFaktor durchläuft die Werte 1, 0.1, 0.01, 0.001 usw., während Ihre Schleife die Nachkommastellen durchläuft.
Danke schön....
Alex
ich verzweifle, ich schreibe morgen Klausur und kann die Aufgaben nicht richtig lösen... Es ist eine Beispielklausur aus der Vergangenheit... Und das erste Mal bin ich durchgefallen...
Kann mir jdn bei Beantwortung der Fragen bitte helfen, damit ich heute Abend eine Musterlösung habe, wo ich weiß dass es richtig ist ??
Aufgabe 1: (12P)
Schreiben Sie drei Interfaces A, B und C, sowie zwei Klassen X und Y mit folgenden Eigenschaften:
Interface A erweitert Interface B, Interface B erweitert Interface C, Klasse X erweitert Klasse Y, Klasse X implementiert A und Klasse Y implementiert B. Weder X noch Y ist abstrakt. In Interface A ist eine Methode a deklariert, In Interface B eine Methode b und in Interface C eine Methode c. Alle drei Methoden sind Klassenmethoden ohne Rückgabewerte und mit leeren Parameterlisten. In den Klassen X und Y sollen nur so viele Methodenimplementationen vorkommen wie unbedingt notwendig (diese Implementationen dürfen beliebig einfach sein).
Aufgabe2: (16P)
Stichwort static: Wie Sie wissen, kann eine Methode auf eine Datenkomponente der Klasse zugreifen bzw. eine Methode der Klasse aufrufen, ohne dass der Name der Klasse oder der Name einer Variable der Klasse vor dem Namen der Datenkomponente bzw. Methode (mit Punkt getrennt) angegeben werden muss. Geben Sie an, welche der folgenden vier Möglichkeiten in dieser Form in Java zulässig sind und welche nicht.
a) Eine Klassenmethode greift auf eine Objektvariable zu
b) Eine Objektmethode greift auf eine Klassenkonstante zu
c) Eine Klassenmethode ruft eine Objektmethode auf
d) Eine Objektmethode ruft eine Klassenmethode auf
Aufgabe3: (20P)
Erinnerung: Die Klasse Integer hat Klassenkonstante MAX_VALUE und MIN_VALUE vom Typ int, in dem der größte bzw. kleinste überhaupt mögliche int-Wert stehen.
Schreiben Sie eine Java-Methode namens add, die zwei Parameter a und b vom Typ int hat, und auch der Rückgabetyp ist vom Typ int. Wenn a+b im Bereich INTEGER.MIN_VALUE……..INTEGER.MAX_VALUE liegt, soll der Rückgabewert auch a+b sein. Falls a+b größer als INTEGER.MAX_VALUE ist, soll die Methode add den Wert INTEGER.MAX_VALUE zurückliefern. Falls hingegen a+b kleiner als INTEGER.MIN_VALUE ist, soll die Methode add den Wert INTEGER.MIN_VALUE zurückliefern.
Die Methode darf nur die arithmetischen Operatoren ++ und – verwenden (also nicht die Operatoren +, -, *, / und %). Sie dürfen zudem weder das Schlüsselwort while, noch das Schlüsselwort for verwenden. Und Sie dürfen in add keine Methoden aufrufen.
Die Klasse, zu der die Methode gehört, brauchen Sie nicht zu schreiben, die Methode add reicht aus.
Unverbindliche Hinweise:
1.) Ihre Methode muss also rekursiv sein und kann sich selbst immer nur mit den Werten a2 und b2 aufrufen, so dass a und a2 sich nur um 1 unterscheiden und genauso b und b2 sich nur um 1 unterscheiden.
2.) Lassen Sie den Wert von b in jedem rekursiven Schritt um 1 näher an 0 herankommen und brechen Sie ab, sobald b den Wert 0 erreicht hat.
Aufgabe4: (12P)
Erstellen Sie ein einzelnes, möglichst kleines, selbst gewähltes Beispiel, an dem die unterschiedlichen Funktionen der Schlüsselwörter public, private und protected speziell auf den Zugriff auf Objektvariable demonstriert werden können. Erläutern Sie diese unterschiedlichen Funktionen kurz, aber präzise anhand Ihres Beispiels. Ihr Beispiel sollte alle 3 x 3 relevanten Variationen von Zugriffen von Methoden verschiedener Klassen auf die Objektvariablen einer Klasse demonstrieren. Insbesondere wird Ihr Code beim Zugriff auf die private- und protected- deklarierte Datenkomponente Fehlermeldungen beim Kompilieren erzeugen (worauf Sie bei der Erläuterung natürlich ebenfalls eingehen).
Achtung: Ohne Erläuterungen können Sie nicht mit einer hohen Punktzahl rechnen!
Aufgabe5: (40P)
Schreiben Sie eine Java-Klasse Addierer, das die Kommandozeilenargumente als reelle Zahlen in Gleitpunktdarstellung interpretiert und zusammenzählt. Eine reelle Zahl ist entweder (1) eine beliebige endliche Folge von Ziffern 0…9 oder (2) besteht aus zwei solchen Folgen mit einem Punkt dazwischen (dem Dezimalpunkt). Im zweiten Fall darf die Ziffernfolge vor dem Punkt auch leer sein, das ist dasselbe, als wenn eine 0 vor dem Dezimalpunkt stünde. Vor der ersten Ziffer darf ein Vorzeichen + oder – stehen, muss aber nicht. Wenn ein Kommandozeilenargument dieser Form entspricht, berechnet sich sein Zahlenwert nach den allgemein üblichen Regeln, ansonsten ist der Zahlenwert 0.
Lagern Sie die Berechnung des Zahlenwertes eines Strings in eine Methode zahlenwert aus.
Unverbindliche Hinweise:
1.) Erinnerung: Die main-Methode einer Klasse, mit der diese Klasse als Java-Programm aufgerufen werden kann (etwa mit dem Interpreter java), ist eine Klassenmethode mit Rückgabetyp void und einem String-Array als einzigem Parameter. Die Komponenten des Strings sind die Kommandozeilenargumente.
Beispiel: Beim Aufruf von „java Bla aa bb cc“ wird ein String-Array der Länge 3 an die main-Methode der Klasse Bla übergeben, dessen Komponenten aa, bb und cc sind.
2.) Erinnerung: Sie können mit S[ i ] auf das Zeichen in String S an Position i zugreifen (wobei wie üblich 0 die erste Position ist).
3.) Gehen Sie in zahlenwert den String von der ersten bis zur letzten Position in einer einzelnen Schleife durch.
4.) Richten Sie in zahlenwert zwei Boolesche Variable vorzeichenIstAngegeben und dezimalpunktSchonGesehen und eine reelle Variable nachKommaFaktor ein. Die Variable nachKommaFaktor durchläuft die Werte 1, 0.1, 0.01, 0.001 usw., während Ihre Schleife die Nachkommastellen durchläuft.
Danke schön....
Alex