Tutoraufgabe 1 (Überladen von Methoden):

Größe: px
Ab Seite anzeigen:

Download "Tutoraufgabe 1 (Überladen von Methoden):"

Transkript

1 Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Überladen von Methoden): Lösen Sie die folgende Aufgabe ohne Einsatz eines Computers. Bedenken Sie, dass Sie in einer Prüfungssituation ebenfalls keinen Computer zur Verfügung haben. Betrachten Sie das folgende kurze Programm: public class Ueberladen { public static int foo ( double x, char y) { return 1; public static int foo ( double x, double y) { return 2; public static int foo ( char x, long y) { return 3; public static int foo ( float... x ) { return 4; public static int foo ( float x, char y) { return 5; public static int foo ( int x, double y) { return 6; public static int foo ( int x ) { return 7; public static int foo ( double x ) { return 8; public static void main ( String [] args ) { byte x1 = ( byte ) 1; long x2 = ( long ) 2; double x3 = ( double ) 3; System. out. println ( foo (.0,.0f)); // a) OUT : System. out. println ( foo (x2, 1L )); // b) OUT : System. out. println ( foo (x1, x2 )); // c) OUT : System. out. println ( foo (1f, c )); // d) OUT : System. out. println ( foo (1L, y )); // e) OUT : System. out. println ( foo (x3, z )); // f) OUT : System. out. println ( foo (1 )); // g) OUT : System. out. println ( foo (1f )); // h) OUT : Geben Sie für die acht mit OUT: markierten Aufrufe von foo jeweils an, welche Ausgabe erzeugt wird. Begründen Sie Ihre Antwort. Hinweise: Beachten Sie die Übersicht über implizite Datentypanpassung auf Folie 5 in Abschnitt II.1.2. Zahlen wie 1L mit einem L am Ende sind vom Typ long. Lösung: a) Da der erste Parameter vom Typ double ist, kommen nur die Methoden mit Rückgabewerten 1 und 2 infrage. Erstere passt nicht zum zweiten Parameter, sodass die Ausgabe 2 erzeugt wird. b) Der erste Parameter ist vom Typ long. Daher kommen hier nur Methoden mit zwei Parametern infrage, die als ersten Parameter einen Wert vom Typ long, float oder double erwarten (Rückgabewerte 1, 2, 4 und 5). Der zweite Parameter ist ebenfalls vom Typ long, womit die Rückgabewerte 1 und 5 ausscheiden. Für die Methode mit Rückgabewert 4 wäre eine Auflösung der variablen Stelligkeit nötig. Diese wird von Java aber nur berücksichtigt, wenn sonst keine passenden Methoden gefunden werden. Somit wird die Ausgabe 2 erzeugt. c) Der erste Parameter ist vom Typ byte. Somit kann die Methode mit dem Rückgabewert 3 ausgeschlossen werden, da ein byte nicht implizit in einen char konvertiert wird. Der zweite Parameter ist ein long, somit bleiben noch die Methoden mit Rückgabewerten 2, 4 und 6 übrig. Für die Methode mit Rückgabewert 4 1

2 wäre wiederum eine Auflösung der variablen Stelligkeit nötig und da von den beiden verbliebenen Methoden diejenige mit Rückgabewert 6 die speziellere ist, wird diese Methode verwendet und die Ausgabe ist 6. d) Der erste Parameter ist vom Typ float. Somit können die Methoden mit Rückgabewerten 3 und 6 ausgeschlossen werden. Da der zweite Parameter ein char ist, ist die Methode mit Rückgabewert 5 am speziellsten und die Ausgabe ist 5. e) Der erste Parameter ist vom Typ long. Daher kommen hier nur Methoden infrage, die als ersten Parameter einen Wert vom Typ long, float oder double erwarten (Rückgabewerte 1, 2, 4 und 5). Der zweite Parameter ist vom Typ char. Somit ist auch hier die Methode mit Rückgabewert 5 am speziellsten und die Ausgabe ist 5. f) Da der erste Parameter vom Typ double ist, kommen nur die Methoden mit Rückgabewerten 1 und 2 infrage. Auch der zweite Parameter passt zu beiden Methoden, allerdings ist die Methode mit Rückgabewert 1 in diesem Fall spezieller und die Ausgabe ist 1. g) Der Parameter ist vom Typ int. Es könnten also die Methoden mit Rückgabewerten 4, 7 und 8 aufgerufen werden. Letztere scheidet aus, weil die Methode mit Rückgabewert 7 spezieller ist. Die Methode mit Rückgabewert 4 scheidet ebenfalls aus, da sie eine Auflösung der variablen Stelligkeit benötigt, welche jedoch von Java nur verwendet wird, falls es mit impliziter Datentypkonvertierung keine Lösung findet. Somit wird hier 7 ausgegeben. h) Der Parameter ist vom Typ float. Es kann also die Methode mit Rückgabewert 4 aufgerufen werden, außerdem die mit Rückgabewert 8. Da Varargs-Methoden nur aufgerufen werden, wenn es keine Alternative ohne Varargs gibt, ist die Rückgabe also 8. Aufgabe 2 (Überladen von Methoden): (4 Punkte) Lösen Sie die folgende Aufgabe ohne Einsatz eines Computers. Bedenken Sie, dass Sie in einer Prüfungssituation ebenfalls keinen Computer zur Verfügung haben. Betrachten Sie das folgende kurze Programm: public class Ueberladen { public static int foo ( short x, int y) { return 1; public static int foo ( long x, char y) { return 2; public static int foo ( int x, int y) { return 3; public static int foo ( char x, double y) { return 4; public static int foo ( double x, int y) { return 5; public static int foo ( int... x ) { return 6; public static int foo ( short x ) { return 7; public static int foo ( long x ) { return 8; public static void main ( String [] args ) { long x1 = ( long ) 1; short x2 = ( short ) 2; float x3 = ( float ) 3; System. out. println ( foo (1.0, x2 )); // a) OUT : System. out. println ( foo ( x, x3 )); // b) OUT : System. out. println ( foo (x2, x2 )); // c) OUT : System. out. println ( foo (x2, 1)); // d) OUT : System. out. println ( foo (x1, 1)); // e) OUT : System. out. println ( foo (x1 )); // f) OUT : System. out. println ( foo (( byte )x2 )); // g) OUT : System. out. println ( foo (1 )); // h) OUT : 2

3 Geben Sie für die acht mit OUT: markierten Aufrufe von foo jeweils an, welche Ausgabe erzeugt wird. Begründen Sie Ihre Antwort. Hinweise: Beachten Sie die Übersicht über implizite Datentypanpassung auf Folie 5 in Abschnitt II.1.2. Lösung: a) Da das erste Argument vom Typ double ist, kommt nur die Methode mit Rückgabewert 5 infrage. Diese kann auch angewendet werden, da das zweite Argument vom Typ short automatisch in einen int konvertiert werden kann. Die Ausgabe ist daher 5. b) Da das zweite Argument vom Typ float ist, kommt nur die Methode mit Rückgabewert 4 infrage. Diese kann auch angewendet werden, da das erste Argument vom Typ char bereits passt. Die Ausgabe ist daher 4. c) Beide Argumente sind vom Typ short. Damit kommen die Methoden mit den Rückgabewerten 1, 3, 5 und 6 infrage. Die speziellste davon hat den Rückgabewert 1 und somit ist dies auch die Ausgabe. d) Die Argumente sind vom Type short und int. Damit kommen die Methoden 1, 3, 5 und 6 infrage. Hiervon ist die Methode 1 am speziellsten. e) Da das erste Argument vom Typ long ist, kommen nur die Methoden mit Rückgabewerten 2 und 5 infrage. Erstere scheidet aus, da ein int nicht implizit in einen char konvertiert wird. Also ist die Ausgabe 5. f) Da das Argument vom Typ long ist, kommt nur die Methode mit Rückgabewert 8 infrage. Daher ist die Ausgabe 8. g) Da das Argument vom Typ byte ist, kommen die Methoden mit Rückgabewert 6, 7 und 8 infrage. Die Methode mit Rückgabewert 6 scheidet aus, da für sie eine Auflösung der variablen Stelligkeit nötig wäre, während dies für die Methoden mit Rückgabewerten 7 und 8 nicht der Fall ist. Da die Methode mit dem Rückgabewert 7 spezieller ist als die mit dem Rückgabewert 8, wird 7 zurückgegeben. h) Da das Argument vom Typ int ist, kommen nur die Methoden mit Rückgabewert 6 oder 8 infrage. Die Methode mit Rückgabewert 6 scheidet aus, da für sie eine Auflösung der variablen Stelligkeit nötig wäre, während dies für die Methode mit Rückgabewert 8 nicht der Fall ist. Die Ausgabe ist damit 8. Tutoraufgabe 3 (Rechtecke): In dieser Aufgabe soll eine Klasse erstellt werden, mit der sich Rechtecke repräsentieren lassen. Ein solches Rechteck lässt sich mit den Koordinaten x und y für die linke obere Ecke, der Breite width und der Höhe height beschreiben, wobei x, y, width und height positive rationale Zahlen (einschließlich 0) sind. Sie können für die entsprechenden Attribute den Typ double verwenden. Ihre Implementierung sollte mindestens die folgenden Methoden und Konstruktoren beinhalten. Sie sollten dabei die Konzepte der Datenkapselung berücksichtigen. In dieser Aufgabe dürfen Sie die Methoden double Math.max(double x, double y) und double Math.min(double x, double y) einsetzen, um das Maximum bzw. das Minimum von zwei double-werten zu bestimmen. Ansonsten dürfen aber keine Bibliotheksfunktionen verwendet werden. Konzentrieren Sie sich im Tutorium zuerst auf die Dokumentation mit Javadoc (Aufgabenteil e), die Konstruktoren (Teil a) und die anschließend die Methoden getx(), setx (Teil b) und intersection, unity (Teil d). a) Erstellen Sie die folgenden Konstruktoren, um Objekte des Typs Rectangle erzeugen zu können: 3

4 public Rectangle ( double x, double y, double width, double height ) public Rectangle ( Rectangle rectangle ) public Rectangle () Beachten Sie dabei folgende Punkte: Der Konstruktor mit vier Parametern soll ein Rechteck erzeugen, dessen Attribute jeweils die von den entsprechenden Parametern angegebenen Werte haben. Hier muss der Aufrufer (und nicht Sie als Implementierer der Klasse Rectangle) sicherstellen, dass die Parameter keine Werte kleiner als 0.0 haben. Der Konstruktor mit einem Parameter soll ein Rechteck erzeugen, dessen Attribute die gleichen Werte haben wie die Attribute von rectangle. Hier muss der Aufrufer (und nicht Sie als Implementierer der Klasse Rectangle) sicherstellen, dass der Parameter rectangle nicht den Wert null hat. Der Konstruktor, der ohne Argumente aufgerufen wird, erstellt ein Rechteck mit Breite und Höhe 0.0 an den Koordinaten 0.0 und 0.0. b) Erstellen Sie die folgenden Selektoren, um die Koordinaten, die Breite und die Höhe eines Rechtecks setzen und auslesen zu können: public double getx () public void setx ( double x) public double gety () public void sety ( double y) public double getwidth () public void setwidth ( double width ) public double getheight () public void setheight ( double height ) c) Erstellen Sie die folgenden Methoden, mit denen man Rechtecke bearbeiten kann: public static Rectangle unity () public void move ( double x, double y) public boolean contains ( double x, double y) public void stretch ( double factor ) public double size () public Rectangle union ( Rectangle rectangle ) public Rectangle intersection ( Rectangle rectangle ) Bei den in diesem Aufgabenteil geforderten Methoden muss der Aufrufer (und nicht Sie als Implementierer der Klasse Rectangle) sicherstellen, dass die Parameter, mit denen die Methoden aufgerufen werden, nicht den Wert null haben oder negative Zahlen sind. Diejenigen Methoden, die den Rückgabetyp void haben, sollen als Seiteneffekt das Objekt entsprechend ändern, für das sie aufgerufen werden. Beachten Sie dabei folgende Punkte: Ein Aufruf von unity() soll einen neues Rechteck zurückgeben, das genau 1.0 breit und hoch ist und die Koordinaten 0.0 und 0.0 hat. Die Methode move(double x, double y) soll das aktuelle Rechteck an die Koordinaten x und y verschieben. Die Methode contains(double x, double y) prüft, ob der Punkt mit den Koordinaten x und y in dem aktuellen Rechteck liegt. Die Methode stretch(double factor) soll das aktuelle Rechteck um den Faktor factor strecken. Das heißt, die Höhe und die Breite werden mit dem Faktor factor multipliziert. Die Methode size() gibt die Fläche des aktuellen Rechtecks zurück. 4

5 Die Methode union(rectangle rectangle) soll ein neues Rechteck zurückgeben, das durch die Vereinigung des aktuellen Rechtecks mit dem Rechteck rectangle entsteht. Hinweis: Die Vereinigung zweier Rechtecke ist das kleinste Rechteck, das die beiden anderen vollständig abdeckt. Die Methode intersection(rectangle rectangle) soll ein neues Rechteck zurückgeben, das durch den Schnitt des aktuellen Rechtecks mit dem Rechteck rectangle entsteht. Wenn die Rechtecke sich nicht überlappen, soll null zurückgeliefert werden. Hinweis: Der Schnitt zweier Rechtecke ist das größte Rechteck, welches in beiden enthalten ist. d) Erstellen Sie ebenfalls Implementierungen für die folgenden Methoden: public boolean isequalto ( Rectangle rectangle ) public String tostring () public Rectangle copy () Dabei soll die Methode isequalto(rectangle rectangle) zurückgeben, ob das aktuelle Rechteck die gleich Form wie das Rechteck rectangle hat. Dabei kann rectangle auch den Wert null haben. (Zwei Rechtecke haben dieselbe Form, wenn Sie an denselben Koordinaten liegen und die Breite und die Höhe jeweils gleich sind.) Die Methode tostring() erstellt eine textuelle Repräsentation des aktuellen Rechtecks, aus der die Koordinaten, die Breite und die Höhe hervorgehen. Zum Beispiel stellt der String ( ),12.0,13.0 das Rechteck mit den Koordinaten 10.0 und 11.0 und der Breite 12.0 und Höhe 13.0 dar. Die Methode copy() erzeugt ein neues Rechteck, das eine Kopie des aktuellen Rechtecks ist. e) Dokumentieren Sie die alle ihre Methoden die als public markiert sind, indem Sie die Implementierung mit Javadoc-Kommentaren ergänzen. Diese Kommentare sollten einen allgemeine Erklärung der Methode sowie weitere Erklärungen jedes Parameters und des return-wertes enthalten. Verwenden Sie innerhalb des Kommentars dafür die Benutzen Sie das Programm javadoc, um Ihre Javadoc-Kommentare in das HTML-Format zu übersetzen. Überprüfen Sie mit einem Browser, ob das gewünschte Ergebnis generiert wurde und senden Sie die HTML-Dateien an ihren Tutor bzw. Tutorin. Bitte drucken Sie die generierten Dateien, der Umwelt zuliebe, nicht aus. Lösung: Listing 1: Rectangle.java * Ein Objekt der Klasse Rectangle repraesentiert ein Rechteck. public class Rectangle { private double x; private double y; private double width ; private double height ; * Erzeugt ein neues Rechteck. x x- Anteil der oberen linken Ecke des neuen Rechtecks y y- Anteil der oberen linken Ecke des neuen Rechtecks width die Breite des neuen Rechtecks height die Hoehe des neuen Rechtecks public Rectangle ( double x, double y, double width, double height ) { this.x = x; this.y = y; this. width = width ; this. height = height ; * Erzeugt ein neues Rechteck mit der Form des uebergebenen Rechtecks. rectangle das Rechteck public Rectangle ( Rectangle rectangle ){ 5

6 this.x = rectangle.x; this.y = rectangle.y; this. width = rectangle. width ; this. height = rectangle. height ; * Erzeugt ein Rechteck am Punkt ( ) mit Breite und Hoehe 0.0. public Rectangle (){ this.x = 0; this.y = 0; this. width = 0; this. height = 0; * Liefert die Hoehe dieses Rechtecks. die Hoehe dieses Rechtecks public double getheight () { return height ; * Setzt die Hoehe dieses Rechtecks. height die neue Hoehe dieses Rechtecks public void setheight ( double height ) { this. height = height ; * Liefert die Breite dieses Rechtecks. die Breite dieses Rechtecks public double getwidth () { return width ; * Setzt die Breite dieses Rechtecks. width die neue Breite dieses Rechtecks public void setwidth ( double width ) { this. width = width ; * Liefert den x- Anteil der linken oberen Ecke des Rechtecks. x- Anteil der linken oberen Ecke des Rechtecks public double getx () { return x; * Setzt den x- Anteil der linken oberen Ecke des Rechtecks. x der neue x- Anteil der linken oberen Ecke des Rechtecks public void setx ( double x) { this.x = x; * Liefert den y- Anteil der linken oberen Ecke des Rechtecks. y- Anteil der linken oberen Ecke des Rechtecks public double gety () { return y; * Setzt den y- Anteil der linken oberen Ecke des Rechtecks. y der neue y- Anteil der linken oberen Ecke des Rechtecks public void sety ( double y) { this.y = y; * Verschiebt dieses Rechteck an einen neuen Punkt. x x- Anteil des Punktes 6

7 y y- Anteil des Punktes public void move ( double x, double y){ this.x = x; this.y = y; * Prueft, ob ein Punkt in dem Rechteck enthalten ist. x x- Anteil des Punktes y y- Anteil des Punktes true, der Punkt ist im Rechteck enthalten, false, sonst public boolean contains ( double x, double y){ return ( this.x <= x) && (x <= this.x+ this. width ) && ( this.y <= y) && (y <= this.y+this. height ); * Gibt die Flaeche des Rechtecks zurueck. die Flaeche des Rechtecks public double size (){ return this. height * this. width ; * Dehnt diese Rechteck um einen Faktor. factor der Faktor public void stretch ( double factor ){ this. width = this. width * factor ; this. height = this. height * factor ; * Liefert die Vereinigung dieses Rechtecks mit einem anderen zurueck. rectangle das andere Rechteck Vereinigung der Rechtecke public Rectangle union ( Rectangle rectangle ){ double nx = Math. min ( this.x, rectangle.x); double ny = Math. min ( this.y, rectangle.y); double nw = Math. max ( this.x+this. width, rectangle.x+ rectangle. width )- nx; double nh = Math. max ( this.y+this. height, rectangle.y+ rectangle. height )- ny; return new Rectangle (nx,ny,nw, nh ); * Liefert den Schnitt dieses Rechtecks mit einem anderen zurueck, * wenn der Schnitt leer ist wird null zurueckgegeben. rectangle das andere Rechteck Schnitt der Rechtecke oder null wenn der Schnitt leer public Rectangle intersection ( Rectangle rectangle ){ double nx = Math. max ( this.x, rectangle.x); double ny = Math. max ( this.y, rectangle.y); double nw = Math. min ( this.x+this. width, rectangle.x+ rectangle. width )- nx; double nh = Math. min ( this.y+this. height, rectangle.y+ rectangle. height )- ny; if (nw < 0 nh < 0){ return null ; return new Rectangle (nx,ny,nw, nh ); * Gibt eine Kopie dieses Rechtecks zurueck, wobei die Kopie dieselbe Form hat. Eine Kopie mit derselben Form public Rectangle copy (){ return new Rectangle ( this ); * Gibt eine String - Repraesentation zurueck. Die String - Repraesentation public String tostring (){ return "("+this.x+" "+this.y+"),"+this. width+","+this. height ; * Vergleicht die Form dieses Rechtecks mit der Form eines anderen. rectangle das Rechteck zum vergleichen 7

8 true, wenn das ubergebene Rechteck dieselbe form hat, sonst false public boolean isequalto ( Rectangle rectangle ){ if ( rectangle == null ) return false ; return this.x == rectangle.x && this.y == rectangle.y && this. width == rectangle. width && this. height == rectangle. height ; * Liefert ein neues Einheitsrechteck mit Breite und Hoehe 1.0, wobei * die linke obere Ecke am Punkt ( ) ist. ein neues Einheitsrechteck public static Rectangle unity (){ return new Rectangle (0.0,0.0,1.0,1.0); Aufgabe 4 (Serveranbieter): ( = 18 Punkte) Wir beschäftigen uns in dieser Aufgabe mit Anbietern von Servern (ein Server ist ein für den Dauer-Einsatz gebauter Computer). Jeder solche Anbieter hat eine Server-Halle, in der die verschiedenen Server untergebracht sind. Diese Server werden an Kunden vermietet. Wir verwenden hierfür die Klassen Kunde, Anbieter, Server und Main, welche teilweise schon als.java-dateien existieren und auf der Homepage zur Veranstaltung zur Verfügung stehen. In der Klasse Anbieter existiert bereits ein Array vom Typ Server[], in dem die Server des Anbieters gespeichert sind. Weiterhin existiert bereits ein Attribut kontostand, in dem gespeichert ist, wieviel Geld der Anbieter eingenommen hat. Beachten Sie bei der Bearbeitung der folgenden Aufgabenteile die Prinzipien der Datenkapselung. Verwenden Sie also das Schlüsselwort public nur für die Teile der Implementierung, auf die von anderen Klassen aus zugegriffen werden soll. Verwenden Sie private für die Methoden und Attribute, die nur innerhalb der jeweiligen Klasse direkt verwendet werden. a) Vervollständigen Sie die Klasse Anbieter so, dass der Standard-Konstruktor Anbieter() jedem damit erzeugten Anbieter-Objekt eine eindeutige Zahl zuordnet und speichern Sie diese Zahl in einem Attribut namens id. Das erste damit erzeugte Anbieter-Objekt soll die ID 1 bekommen, das zweite erzeugte entsprechend Objekt die ID 2,... Hinweis: Verwenden Sie ein statisches Attribut, um mitzuzählen, wie viele bzw. welche IDs bereits vergeben wurden. Sie können davon ausgehen, dass es nicht mehr als Anbieter gibt. b) Ergänzen Sie in der Klasse Anbieter die tostring-methode an der mit TODO markierten Stelle. Der zurückgegebene String soll in der ersten Zeile einen String der folgenden Form ausgeben: (ANBIETER 5) Kontostand: Die Ausgabe enthält also in der ersten Zeile die ID des Anbieters sowie den Kontostand. c) Schreiben Sie die Klasse Main und darin die main-methode. Erzeugen Sie in dieser Methode zwei Anbieter-Objekte und geben Sie die String-Darstellung dieser Objekte auf der Konsole aus. Dabei sollte sich folgende Ausgabe ergeben: (ANBIETER 1) Kontostand: 0.0 (ANBIETER 2) Kontostand: 0.0 d) Schreiben Sie die Klasse Kunde. Jeder Kunde soll, analog zu jedem Anbieter, einen Kontostand haben. Dieser ist anfangs immer Schreiben Sie in der Klasse Kunde eine Methode getkontostand, die den Kontostand des Kunden zurückgibt. 8

9 Um ein Kunde-Objekt für den aktuellen Anbieter zu erhalten, verwenden wir die Methode neuerkunde in der Klasse Anbieter. Diese liefert ein neues Kunde-Objekt zurück, wobei im Kunde-Objekt zusätzlich zum Kontostand auch in einem weiteren Attribut gespeichert ist, wer der Anbieter des Kunden ist. Schreiben Sie diese Methode neuerkunde in der Klasse Anbieter und vervollständigen Sie auch die Klasse Kunde entsprechend (Die Klasse Kunde benötigt ein weiteres Attribut und einen geeigneten Konstruktor). e) Schreiben Sie in der Klasse Kunde eine tostring-methode. Der zurückgegebene String soll einen String der folgenden Form ausgeben: (KUNDE) Kontostand: (ANBIETER 5) Kontostand: Die erste Zeile enthält also den Kontostand, die zweite Zeile ist die String-Darstellung des Anbieters, der dem Kunden zugeordnet ist. f) Passen Sie die main-methode so an, dass drei Kunde-Objekte angelegt werden. Die ersten beiden Kunden sollen dabei zu dem ersten Anbieter gehören, der dritte Kunde zum zweiten Anbieter. Geben Sie die String-Darstellung dieser drei Objekte auf der Konsole aus. Dabei sollte sich folgende Ausgabe ergeben: (KUNDE) Kontostand: (ANBIETER 1) Kontostand: 0.0 (KUNDE) Kontostand: (ANBIETER 1) Kontostand: 0.0 (KUNDE) Kontostand: (ANBIETER 2) Kontostand: 0.0 g) Fügen Sie in der Klasse Kunde eine Methode bezahle hinzu. Diese bekommt einen double-wert übergeben und subtrahiert diesen Betrag vom Kontostand des Kunden. Anschließend ist der Kontostand des Kunden also um exakt diesen Betrag geringer. h) Damit ein Kunde einen Server bei seinem Anbieter anmieten kann, schreiben wir die Methode neuerserver in der Klasse Kunde. Diese bekommt zwei Argumente vom Typ int übergeben, wobei der erste Wert für den RAM-Ausbau des Servers (in GByte) steht. Der zweite Wert steht für den Festplattenplatz des Servers (in TByte). Implementieren Sie die Methode so, dass diese eine Methode neuerserver in der Klasse Anbieter aufruft. Diese bekommt zusätzlich zu den beiden int-argumenten auch noch das jeweilige Kunde-Objekt übergeben und gibt als int-wert den Stellplatz des Servers beim Anbieter des Kunden zurück. Speichern Sie diesen Stellplatz in einem neuen Attribut stellplatz des Kunden, das mit 1 initialisiert ist. Das Attribut stellplatz des Kunden gibt jeweils an, welchen Server er bei seinem Anbieter angemietet hat. Implementieren Sie nun die Methode neuerserver in der Klasse Anbieter. Diese soll zuerst überprüfen, ob Platz für einen neuen Server ist (was der Fall ist, wenn ein null-eintrag im Server[]-Array existiert). Wenn dies der Fall ist, soll der Mietpreis vom Kunden bezahlt werden. Der Preis setzt sich aus 5 r + 2 p zusammen, wenn r angibt wie viele GByte RAM der Server haben soll und p angibt, wie viele TByte Festplattenplatz der Server haben soll. Falls Platz für einen neuen Server ist, muss der Kunde den entsprechenden Preis bezahlen. Schreiben Sie hierzu eine Hilfsmethode bezahle in der Klasse Anbieter, die überprüft, ob der Kunde genügend Geld auf seinem Konto hat. In diesem Fall wird das Geld beim Kunden vom Konto entfernt, beim Anbieter dem Konto hinzugefügt und die Methode bezahle liefert true zurück. Ansonsten liefert sie false. Wenn der Kunde bezahlt hat, soll das neue Server-Objekt angelegt werden und an einem freien Platz im serverhalle-array hinzugefügt werden. Implementieren Sie hierfür einen passenden Konstruktor in der Klasse Server. Bei Erfolg ist die Rückgabe der Methode der Array-Index, an dem der Server zu finden ist (was den Stellplatz in der Halle repräsentiert). Ansonsten ist die Rückgabe 1. 9

10 Passen Sie in der Klasse Kunde die tostring-methode so an, dass in der zweiten Zeile der Stellplatz des angemieteten Servers mit ausgegeben wird, sofern das entsprechende Attribut nicht 1 ist. Erweitern Sie anschließend die main-methode in der Klasse Main so, dass der erste Kunde einen Server mit 8 GByte RAM und 2 TByte Festplattenplatz bekommt. Der zweite Kunde soll einen Server mit 16 GByte RAM und 10 TByte Festplattenplatz bekommen, der dritte Kunde einen Server mit 192 GByte RAM und 15 TByte Festplattenspeicher. Geben Sie unmittelbar nach jedem der drei neuerserver-aufrufe auf der Konsole die String-Darstellung des jeweiligen Kunden aus. Dabei sollte sich folgende Ausgabe ergeben: (KUNDE) Kontostand: Stellplatz: 0 (ANBIETER 1) Kontostand: 44.0 Stellplatz 0 :(SERVER) RAM: 8 GByte, Festplattenplatz: 2 TByte (KUNDE) Kontostand: Stellplatz: 1 (ANBIETER 1) Kontostand: Stellplatz 0 :(SERVER) RAM: 8 GByte, Festplattenplatz: 2 TByte Stellplatz 1 :(SERVER) RAM: 16 GByte, Festplattenplatz: 10 TByte (KUNDE) Kontostand: 10.0 Stellplatz: 0 (ANBIETER 2) Kontostand: Stellplatz 0 :(SERVER) RAM: 192 GByte, Festplattenplatz: 15 TByte i) Schreiben Sie eine Methode mehrram in der Klasse Kunde. Diese soll ein int-argument übergeben bekommen und dafür sorgen, dass nach Ausführung der Methode der Server des Kunden so viel RAM mehr hat, wie dieses Argument (in GByte) angibt. Um dies zu erreichen, schreiben und verwenden Sie die Methode mehrram in der Klasse Anbieter, welche zusätzlich ein weiteres int-argument bekommt, das den Stellplatz des Servers angibt. Zusätzlich wird ein Kunde-Objekt übergeben. In dieser Methode soll, sofern der Server an der angegebenen Stelle im serverhalle-array existiert, dem Kunden Geld für den Einbau berechnet werden. Wenn der Kunde bezahlt hat, soll die Methode mehrram in der Klasse Server aufgerufen werden, die das ram-attribut des jeweiligen Servers entsprechend erhöht. Der Betrag, den der Kunde bezahlen muss, ist 5 r, wenn r angibt, wieviele GByte RAM zusätzlich eingebaut werden sollen. Implementieren Sie für diese Teilaufgabe also in den drei Klassen Kunde, Anbieter und Server jeweils eine Methode mehrram (mit unterschiedlicher Signatur). Erweitern Sie anschließend die main-methode in der Klasse Main so, dass der erste Kunde 8 GByte zusätzlichen RAM einbauen lässt und geben Sie anschließend auf der Konsole die String-Darstellung dieses Kunden aus. Dabei sollte sich folgende Ausgabe ergeben: (KUNDE) Kontostand: Stellplatz: 0 (ANBIETER 1) Kontostand: Stellplatz 0 :(SERVER) RAM: 16 GByte, Festplattenplatz: 2 TByte Stellplatz 1 :(SERVER) RAM: 16 GByte, Festplattenplatz: 10 TByte j) Dokumentieren Sie alle ihre Klassen, Attribute und Methoden die als public markiert und nicht bereits dokumentiert sind, indem Sie die Implementierung mit Javadoc-Kommentaren ergänzen. Diese Kommentare sollten einen allgemeine Erklärung der Methode sowie weitere Erklärungen jedes Parameters und des return-wertes enthalten. Verwenden Sie innerhalb des Kommentars dafür die In der Klasse Main müssen Sie keine Dokumentation ergänzen. 10

11 Benutzen Sie das Programm javadoc, um Ihre Javadoc-Kommentare in das HTML-Format zu übersetzen. Überprüfen Sie mit einem Browser, ob das gewünschte Ergebnis generiert wurde und senden Sie die HTML-Dateien an ihren Tutor bzw. Tutorin. Bitte drucken Sie die generierten Dateien, der Umwelt zuliebe, nicht aus. 11

Tutoraufgabe 1 (Überladen von Methoden):

Tutoraufgabe 1 (Überladen von Methoden): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

Tutoraufgabe 1 (Seiteneekte):

Tutoraufgabe 1 (Seiteneekte): Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

Tutoraufgabe 1 (Seiteneekte):

Tutoraufgabe 1 (Seiteneekte): Prof. aa Dr. M. Müller C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet

Mehr

Übung Programmierung WS 2007/08 - Blatt 6

Übung Programmierung WS 2007/08 - Blatt 6 RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK 2 RWTH Aachen D-52056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.

Mehr

Methoden und Wrapperklassen

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

Mehr

Programmierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Prof. aa Dr. J. Giesl M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Aufgabe 1 (Programmanalyse): (9 + 1 = 10 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Erste Java-Programme (Scopes und Rekursion)

Erste Java-Programme (Scopes und Rekursion) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

Programmierung WS14/15 Lösung - Präsenzübung C. Aschermann, F. Frohn, J. Hensel, T. Ströder

Programmierung WS14/15 Lösung - Präsenzübung C. Aschermann, F. Frohn, J. Hensel, T. Ströder Prof. aa Dr. J. Giesl C. Aschermann, F. Frohn, J. Hensel, T. Ströder Aufgabe 1 (Programmanalyse): (14 + 6 = 20 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu

Mehr

hue13 January 30, 2017

hue13 January 30, 2017 hue13 January 30, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

Übungsblatt 1. Java Vorkurs (WS 2017)

Übungsblatt 1. Java Vorkurs (WS 2017) Übungsblatt 1 Java Vorkurs (WS 2017) Aufgabe 1 Hallo-Welt Erstelle ein neues Projekt mit dem Namen HelloJava. Erzeuge in diesem Projekt eine neue Klasse HelloJava. (a) Schreibe die main-methode in die

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

int x = 3; int y = 11; public A () { this.x = z; y *= z;

int x = 3; int y = 11; public A () { this.x = z; y *= z; Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Aufgabe 1 (Programmanalyse): (13 + 6 = 19 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen

Mehr

Informatik Hochschule Mainz Geoinformatik und Vermessung. Wiederholung. Frohes Fest und Guten Rutsch!

Informatik Hochschule Mainz Geoinformatik und Vermessung. Wiederholung. Frohes Fest und Guten Rutsch! Wiederholung Frohes Fest und Guten Rutsch! Inhaltsverzeichnis Programme kompilieren...1 Eclipse bedienen...2 Rechnen mit Literalen...2 Rechnen mit Variablen...2 Sequenzielle Anweisungen...3 Selektive Anweisungen...3

Mehr

Sommersemester Jewgeni Rose. Technische Universität Braunschweig

Sommersemester Jewgeni Rose. Technische Universität Braunschweig P r o b e k l a u s u r Z u s a t z a u f g a b e n E i n f ü h r u n g i n d a s P r o g r a m m i e r e n Sommersemester 2013 Jewgeni Rose Technische Universität Braunschweig j.rose@tu-bs.de 1 Aufgabe

Mehr

Die Klasse java.lang.object. Thorsten Treffer

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

Mehr

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

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren I. 5. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 5. Dezember 2016 Programmieren I 5. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

Mehr

Tutoraufgabe 1 (Code-Analyse):

Tutoraufgabe 1 (Code-Analyse): Prof. aa Dr. J. Giesl M. Brockschmidt, F. Emmes, C. Fuhs, C. Otto, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung bearbeitet werden. Namen

Mehr

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Folienpaket 7 Themenschwerpunkte: Methoden in OOP 284 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Eine Klasse entwerfen Eine Klasse enthält folgende Information: Name der Klasse (ist auch der

Mehr

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen

Mehr

10.4 Konstante Objekte

10.4 Konstante Objekte 10.4 Konstante Objekte Genau wie bei einfachen Datentypen (int,double,...) kann man auch Objekte als const deklarieren. Eine solche Deklaration bedeutet, daß alle Attribute so behandelt werden, als wären

Mehr

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

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

Mehr

Präsenzübung Programmierung WS 2016/2017

Präsenzübung Programmierung WS 2016/2017 Prof. aa Dr. J. Giesl F. Frohn, J. Hensel, D. Korzeniewski Vorname: Präsenzübung Programmierung WS 2016/2017 Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik Lehramt

Mehr

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

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen II.2.3 Datenabstraktion - 1 - public class Rechteck

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) http://infotech.unileoben.ac.at/lehre/cup Der Debugger Mit Hilfe des Debuggers kann der Programmablauf schrittweise verfolgt werden. Dabei können auch Variableninhalte

Mehr

Programmierung WS17/18 Lösung - Präsenzübung 09./

Programmierung WS17/18 Lösung - Präsenzübung 09./ Prof. aa Dr. J. Giesl M. Hark, J. Hensel, D. Korzeniewski Aufgabe 1 (Programmanalyse): (11.5 + 4.5 = 16 Punkte) a) Geben Sie die Ausgabe des Programms für den Aufruf java M an. Tragen Sie hierzu jeweils

Mehr

Tutoraufgabe 1 (Programmanalyse):

Tutoraufgabe 1 (Programmanalyse): Prof. aa Dr. M. Müller Programmierung WS15/16 C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung

Mehr

Präsenzübung Programmierung WS 2017/2018

Präsenzübung Programmierung WS 2017/2018 Prof. aa Dr. J. Giesl M. Hark, J. Hensel, D. Korzeniewski Vorname: Präsenzübung Programmierung WS 2017/2018 Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik Lehramt (Bachelor)

Mehr

Tutoraufgabe 1 (Pilze):

Tutoraufgabe 1 (Pilze): Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Tutoraufgabe 1 (Pilze): In dieser Aufgabe beschäftigen wir uns mit dem berühmten Gaunerpärchen Bonnie und Clyde.

Mehr

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Algorithmen und Datenstrukturen Sommersemester Übung Abgabe bis , 10:00 Uhr

Algorithmen und Datenstrukturen Sommersemester Übung Abgabe bis , 10:00 Uhr 4. Übung Abgabe bis 24.05.2010, 10:00 Uhr Aufgabe 4.1: Referenzen Geben Sie Ihre Lösung als Referenzen.pdf ab. 16 Punkte a) Führen Sie einen Schreibtischlauf des folgenden Java-Programms durch. Es werden

Mehr

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 4213 Variablen 17.834 float Flugzeug 36812736294 I write code Hund long String Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 3 + 4 1 Variablen sind wie Becher. Sie speichern etwas. // Variablen

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

Lösungshinweise/-vorschläge zum Übungsblatt 8: Software-Entwicklung 1 (WS 2017/18)

Lösungshinweise/-vorschläge zum Übungsblatt 8: Software-Entwicklung 1 (WS 2017/18) Dr. Annette Bieniusa Mathias Weber, M. Sc. Peter Zeller, M. Sc. TU Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungshinweise/-vorschläge zum Übungsblatt 8: Software-Entwicklung 1 (WS 2017/18)

Mehr

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Arrays: Wiederholung Ein

Mehr

Klausur zur Vorlesung Einführung in die Programmierung

Klausur zur Vorlesung Einführung in die Programmierung Ludwig-Maximilians-Universität München Institut für Informatik Dr. Peer Kröger, Dr. Andreas Züfle Daniel Kaltenthaler, Klaus Schmid Klausur zur Vorlesung Einführung in die Programmierung Lösungen Vorname:

Mehr

Objektorientierung. Programmierstarthilfe WS 2010/11 Fakultät für Ingenieurwissenschaften und Informatik

Objektorientierung. Programmierstarthilfe WS 2010/11 Fakultät für Ingenieurwissenschaften und Informatik Programmierstarthilfe WS 2010/11 Fakultät für Ingenieurwissenschaften und Informatik Organisatorisches Im Web unter http://www.uni-ulm.de/psh Vorwissen Du kannst bereits Klassen als Typen mit statischen

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

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

Mehr

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

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

Mehr

Einführung in die Informatik. Lösung zu Übungsblatt 6

Einführung in die Informatik. Lösung zu Übungsblatt 6 Prof. J. Wolff von Gudenberg Prof. R. Kolla Prof. F. Puppe Prof. D. Seipel Universität Würzburg Lehrstuhl für Informatik II Prof. Dr. J. Wolff von Gudenberg Am Hubland, 97074 Würzburg Dipl.-Inform. Gregor

Mehr

Fakultät IV Elektrotechnik/Informatik

Fakultät IV Elektrotechnik/Informatik Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)

Mehr

hue12 January 24, 2017

hue12 January 24, 2017 hue12 January 24, 2017 1 Abgabehinweise Beachten Sie unbedingt diese Hinweise, sonst erhalten Sie keine Punkte aus dieser Abgabe! Für Details siehe z.b. Folien der nullten Zentralübung 1.1 Namen und Matrikelnummern

Mehr

Tutoraufgabe 1 (Fibonacci-Zahlen):

Tutoraufgabe 1 (Fibonacci-Zahlen): Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Fibonacci-Zahlen): Die Folge der Fibonacci-Zahlen ist folgendermaßen definiert: F 0 = 0 F 1 =

Mehr

Teil 2: Weitere Aspekte der Objektorientierung

Teil 2: Weitere Aspekte der Objektorientierung Teil 2: Weitere Aspekte der Objektorientierung Klassenvariablen So wie es Instanzvariablen gibt, die zu einer gewissen Instanz (Objekt) gehören und deren Attribute speichern, so gibt es aus Klassenvariablen:

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 (7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2017/18 Institut für Informatik Übungsblatt 6 Prof. Dr. R. Hennicker, P. Wendler Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Programmieren in Java -Eingangstest-

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

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Wir wollen in einer Bank die Konten der Kunden modellieren (um sie dann entspr. zu verarbeiten

Wir wollen in einer Bank die Konten der Kunden modellieren (um sie dann entspr. zu verarbeiten Noch ein Beispiel Wir wollen in einer Bank die Konten der Kunden modellieren (um sie dann entspr. zu verarbeiten public class Konto { private String kundenname; private double kontostand; private double

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Aufgabenblatt 4 Prof. R. Westermann, A. Lehmann,

Mehr

EPROG 2.Teilprüfung. Aufgabe 1:

EPROG 2.Teilprüfung. Aufgabe 1: EPROG 2.Teilprüfung Dauer 50min. Keine Unterlagen erlaubt. Loginname ist q (also x.b. q0697801). Passwort ist Ihre Matrikelnummer. Speichern Sie Ihre Lösungen in den dafür vorgesehenen

Mehr

Java Übung. Übung Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Werner Gaulke.

Java Übung. Übung Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Werner Gaulke. Java Übung Übung 5 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 9. Mai 2006 (UniDUE) 9. Mai 2006 1 / 20 Beispiel Anforderungen: Klasse Mensch mit Attributen: Name, Alter, Laune, Geschlecht.

Mehr

Prüfung Softwareentwicklung II (IB)

Prüfung Softwareentwicklung II (IB) Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 2 B, IB 2 C Sommersemester 2013 Prüfung Softwareentwicklung II (IB) Datum : 11.07.2013, 08:30 Uhr

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält

Mehr

Probeklausur Informatik 2 Sommersemester 2013

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

Mehr

Praktikum 4: Grafiken und Ereignisse

Praktikum 4: Grafiken und Ereignisse Praktikum 4: Grafiken und Ereignisse Aufgabe 1: Java Applikation Bisher haben wir in Java (ebenso wie in C) jeweils selbständige Konsole-Applikationen erstellt. Java wurde als Programmiersprache für das

Mehr

Programmieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Aufgabenblatt 3

Programmieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Aufgabenblatt 3 Übung zur Vorlesung Programmieren, Wintersemester 13/14 Übungsleiter: Sebastian Ebers Allgemeines Aufgabenblatt 3 Abgabe: 10.12.2013, vor der Vorlesung (14:15 Uhr, AM 1) Max.

Mehr

Tutoraufgabe 1 (Programmanalyse):

Tutoraufgabe 1 (Programmanalyse): Prof. aa Dr. J. Giesl Programmierung WS14/15 C. Aschermann, F. Frohn, J. Hensel, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

Übung Informatik I - Programmierung - Blatt 6

Übung Informatik I - Programmierung - Blatt 6 RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK II RWTH Aachen D-52056 Aachen GERMANY http://programmierung.informatik.rwth-aachen.de LuFG Informatik II Prof.

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2013/14 Aufgabenblatt 5 2. Dezember

Mehr

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Syntax und Semantik): 1. Was ist Syntax? Was ist Semantik? Erläutern Sie den Unterschied. 2.

Mehr

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive

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

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann

Mehr

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10 Klausur zur Lehrveranstaltung Technische Informatik für Ingenieure WS 2009/10 22. Februar 2010 Aufgabe 1 2 3 4 5 6 7 Summe mögliche Punkte 15 15 20 15 20 20 15 120 erreichte Punkte Note: Hinweise: Diese

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Beispielprüfung CuP WS 2015/2016

Beispielprüfung CuP WS 2015/2016 Beispielprüfung CuP WS 2015/2016 Univ.-Prof. Dr. Peter Auer 23. Dezember 2015 Informationen zur Prüfung Die Prüfung wird als Multiple-Choice-Test mit 10 Fragen am Computer abgehalten. (Bei manchen Fragen

Mehr

Parameterübergabemechanismen für den Methodenaufruf

Parameterübergabemechanismen für den Methodenaufruf Methode, griech. der Weg zu etwas, planmäßiges Verfahren -Brockhaus Parameterübergabemechanismen für den Methodenaufruf Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Lauftagebuch Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 21 Erstellen einer

Mehr

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017 Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2016/2017 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung

Mehr

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16. 1 Zauberer und Zwerge, Aufgabenteil 1

Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16. 1 Zauberer und Zwerge, Aufgabenteil 1 Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16 1 Zauberer und Zwerge, Aufgabenteil 1 Stellen Sie sich vor, Sie sollen eine Charakterverwaltung für das neue Onlinerollenspiel

Mehr

Einführung in das Programmieren Probeklausur Lösungen

Einführung in das Programmieren Probeklausur Lösungen Einführung in das Programmieren Probeklausur Lösungen Frederik Kanning 01.07.2013 Aufgabe 1 b/c) void definiert Methode ohne Rückgabewert return beendet aktuellen Methodenaufruf wenn Rückgabetyp nicht

Mehr

Aufgabe 1 (Programmanalyse):

Aufgabe 1 (Programmanalyse): Prof. aa C. Bischof, Ph.D. M. Brockschmidt, F. Emmes, M. Lülfesmann, J. Willkomm Aufgabe 1 (Programmanalyse): (18 Punkte) Gegeben sei das folgende Java-Programm. Dieses Programm gibt sechs Zeilen Text

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

Tutoraufgabe 1 (Fibonacci-Zahlen):

Tutoraufgabe 1 (Fibonacci-Zahlen): Prof. aa Dr. J. Giesl Programmierung WS11/12 M. Brockschmidt, F. Emmes, C. Fuhs, C. Otto, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung

Mehr

Musterübung 09: Vererbung und Dynamische Bindung

Musterübung 09: Vererbung und Dynamische Bindung Musterübung 09: Vererbung und Dynamische Bindung Abgabetermin: TT.MM.JJJJ Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Hofer) G4 (Angerer) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Musterlösung Stand: 5. Februar 2009

Musterlösung Stand: 5. Februar 2009 Fakultät IV Elektrotechnik/Informatik Probeklausur Einführung in die Informatik I Hinweis: Diese Probeklausur ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der Teilleistung TL 2 (Programmiertest)

Mehr

Tutoraufgabe 1 (Programmanalyse):

Tutoraufgabe 1 (Programmanalyse): Prof. aa Dr. J. Giesl F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden.

Mehr

Kapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 10 Verweise und Referenzen Inhalt von Kapitel 10 Verweise und Referenzen 10.1 Das Schlüsselwort this Definition Verwendungszweck Klassenmethoden EINSCHUB: Musterlösung zu Übung 4.1 10.2 Objektreferenzen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java Ludwig-Maximilians-Universität München München, 20.11.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt

Mehr

Prozeduren vs. Funktionen

Prozeduren vs. Funktionen Prozeduren vs. Funktionen Mit der Formalisierung wird auch der Unterschied zwischen Prozeduren und Funktionen noch einmal klar. Der Aufruf beider Varianten bewirkt zunächst das Gleiche: die Eingabevariablen

Mehr

Programmiertechnik Klassenvariablen & Instantiierung

Programmiertechnik Klassenvariablen & Instantiierung Programmiertechnik Klassenvariablen & Instantiierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Klassenvariablen Zur Erinnerung: Klassen bestehen aus Variablen und Methoden; beide zusammen

Mehr

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe Ludwig-Maximilians-Universität München München, 04.12.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt

Mehr

Programmierung für Mathematik (HS13)

Programmierung für Mathematik (HS13) software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 11 1 Aufgabe: Codeverständnis 1.1 Aufgabenstellung Notieren Sie, was der folgende Code ausgeben würde, wenn er so in einer

Mehr

3.2 Objekte und Klassen. Wir werden uns in diesem Kapitel näher mit Objekten und Klassen in Java beschäftigen.

3.2 Objekte und Klassen. Wir werden uns in diesem Kapitel näher mit Objekten und Klassen in Java beschäftigen. 3.2 Objekte und Klassen Wir werden uns in diesem Kapitel näher mit Objekten und Klassen in Java beschäftigen. Praktische Informatik I Wolfgang Effelsberg 3. Die Programmiersprache Java 3.2-1 Objektorientierte

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018 Fakultät IV NI & CV Java Einführung in die Informatik Wintersemester 2017/2018 Hinweis: Diese ist eine kleine Aufgabensammlung, die etwa dem Schwierigkeitsgrad der schriftlichen Prüfung des Moduls Einführung

Mehr

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14 Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Iman Kamehkhosh, Marcel Preuß, Henning Timm Übungsblatt 11

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 4 Prof. R. Westermann, A. Lehmann, R.

Mehr

Objektorientierung III

Objektorientierung III Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 10 9.1.2017 Objektorientierung III Aufgabe 10.1. Wir sind doch alle gleich In der Vorlesung

Mehr

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer 144

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer   144 Rechtsbelehrung Dieser Foliensatz ist urheberrechtlich geschützt. Änderungen an den Folien sind untersagt. Ausschließlich eine nicht-kommerzielle Nutzung ist kostenfrei. Andernfalls wird eine Gebühr fällig.

Mehr