• Keine Ergebnisse gefunden

Übungen zu Einführung in die Informatik:

N/A
N/A
Protected

Academic year: 2021

Aktie "Übungen zu Einführung in die Informatik:"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Ludwig-Maximilians-Universität München WS 2017/18

Institut für Informatik Übungsblatt 7

Prof. Dr. R. Hennicker, P. Wendler

Übungen zu Einführung in die Informatik:

Programmierung und Software-Entwicklung

Aufgabe 7-1 Statische Methoden, Konstanten, Benutzereingaben Präsenz Nehmen Sie für diese Aufgabe die im folgenden abgedruckte Klasse Investitionsrechnervon Übungsblatt 5, Aufgabe 5-1, zur Grundlage und modifizieren Sie diese wie folgt.

1 p u b l i c c l a s s I n v e s t i t i o n s r e c h n e r {

2 p u b l i c s t a t i c void m a i n ( S t r i n g [] a r g s ) {

3 double i n v e s t i t i o n s b e t r a g = 1 0 0 0 0 0 0 ;

4 double h e r s t e l l u n g s k o s t e n = 2 2 5 0 0 ;

5 double v e r k a u f s p r e i s = 2 5 0 0 0 ;

6 i n t a n z a h l V e r k a u f t e r A u t o s = 50;

7 double v e r k a u f s s t e i g e r u n g = 5;

8 double g e s a m t G e w i n n = 0 . 0 ;

9 i n t a n z a h l J a h r e = 1;

10

11 while ( g e s a m t G e w i n n < i n v e s t i t i o n s b e t r a g ) {

12 double k o s t e n P r o J a h r = h e r s t e l l u n g s k o s t e n * a n z a h l V e r k a u f t e r A u t o s ;

13 double u m s a t z P r o J a h r = v e r k a u f s p r e i s * a n z a h l V e r k a u f t e r A u t o s ;

14

15 double g e w i n n P r o J a h r = u m s a t z P r o J a h r - k o s t e n P r o J a h r ;

16

17 g e s a m t G e w i n n = g e s a m t G e w i n n + g e w i n n P r o J a h r ;

18

19 S y s t e m . out . p r i n t l n ( " J a h r " + a n z a h l J a h r e + " : " );

20 S y s t e m . out . p r i n t l n ( " A n z a h l v e r k a u f t e r A u t o s : "

21 + a n z a h l V e r k a u f t e r A u t o s );

22 S y s t e m . out . p r i n t l n ( " K o s t e n : " + k o s t e n P r o J a h r );

23 S y s t e m . out . p r i n t l n ( " U m s a t z : " + u m s a t z P r o J a h r );

24 S y s t e m . out . p r i n t l n ( " G e w i n n : " + g e w i n n P r o J a h r );

25 S y s t e m . out . p r i n t l n ( " G e s a m t g e w i n n : " + g e s a m t G e w i n n );

26

27 a n z a h l J a h r e ++;

28 a n z a h l V e r k a u f t e r A u t o s = (i n t) ( a n z a h l V e r k a u f t e r A u t o s + v e r k a u f s s t e i g e r u n g

29 / 1 0 0 . 0 * a n z a h l V e r k a u f t e r A u t o s );

30 }

31 }

32 }

a) Definieren Sie in einer KlasseInvestitionsrechnerA zunächst die Herstellungskosten von 22500 Euro für ein Auto, den Verkaufspreis von 25000 Euro sowie die zu erwartende pro- zentuale Verkaufssteigerung von 5% als geeignete Konstanten. Informieren Sie sich zudem in der Java-Dokumentation unterhttp://docs.oracle.com/javase/8/docs/api/, wie Sie mit Hilfe der KlasseJOptionPaneder Bibliothekjavax.swingeine Benutzereingabe realisie- ren können. Die Werte der Variableninvestitionsbetrag sowie anzahlVerkaufterAutos sollen in der Klasse InvestitionsrechnerA über eine solche Benutzereingabe eingelesen werden können. Alle weiteren benötigten Variablen sind wie bisher als lokale Variablen zu realisieren. Die Ausgabe der Berechnungen soll unverändert auf der Konsole stattfinden.

Testen Sie Ihr Programm, indem Sie beim Programmlauf folgende Werte eingeben: 1) einen Investitionsbetrag von einer Million Euro und eine Anzahl von 50 im ersten Jahr verkauf- ten Autos, 2) einen Investitionsbetrag von 25 Millionen Euro und eine Anzahl von1000im ersten Jahr verkauften Autos.

1

(2)

b) Schreiben Sie eine weitere Version der Klasse und nennen Sie dieseInvestitionsrechnerB.

In dieser Klasse soll die Berechnung des Gesamtgewinns sowie der verstrichenen Jahre (und deren Ausgabe) in eine eigene Methodeamortisierungmit geeigneten formalen Parametern ausgelagert werden.

Aufgabe 7-2 Statische Methoden, Konstanten, Benutzereingaben Hausaufgabe Nehmen Sie sich für diese Aufgabe die Klasse Tilgungsrechner von Übungsblatt 5, Aufgabe 5-2, zur Grundlage und modifizieren Sie diese wie folgt.

a) Definieren Sie in einer Klasse TilgungsrechnersrechnerA zunächst einen Zinssatz von 2.0% sowie den Tilgungssatz von 10% als geeignete Konstanten. Der Wert der Variablen darlehensbetragsoll in der KlasseTilgungsrechnersrechnerAüber eine Benutzereingabe mit Hilfe der Klasse JOptionPane im Packet javax.swing eingelesen werden können. Alle weiteren benötigten Variablen sind wie bisher als lokale Variablen zu realisieren. Die Ausga- be der Berechnungen soll unverändert auf der Konsole stattfinden. Testen Sie Ihr Programm, indem Sie beim Programmlauf einmal einen Darlehensbetrag von 10 000 Euro und einmal einen Darlehensbetrag von 200 000 Euro eingeben.

b) Schreiben Sie eine weitere Version der Klasse und nennen Sie dieseTilgungsrechnerB. In dieser Klasse sollen die mathematischen Berechnungen und Ausgaben in eine eigene Me- thode restschuld ausgelagert werden, die einen formalen Paramter für die Übergabe des eingegebenen Darlehenbetrags hat.

Aufgabe 7-3 Klassen, Vererbung, Benutzereingaben Präsenz Nehmen Sie für diese Aufgabe die unten abgedruckte KlasseFigurvon Übungsblatt 6, Aufgabe 6-3, zur Grundlage. Eine geometrische Figur soll wie bisher die Eigenschaften Mittelpunkt, Farbe und Füllung haben. Mögliche Spezialisierungen einer solchen Figur sind Kreise und Rechtecke, wobei sich Kreise durch einen Radius und Rechtecke durch Höhe und Breite genauer beschrei- ben lassen. Definieren Sie zusätzlich zur bestehenden Klasse Figur zwei Unterklassen Kreis undRechteckzur Darstellung von Kreisen und Rechtecken. Beachten Sie, dass die Klasse Figur wieder die vorgegebene KlassePointverwendet, welche Sie von der Webseite herunterladen kön- nen. Schreiben Sie eine Hauptklasse MainFigur, welche die drei definierten Klassen verwendet und über eine grafische Benutzerabfrage zuerst fragt, welches Objekt (Figur, Kreis oder Recht- eck) erzeugt werden soll. Der Benutzer wird solange gefragt, bis er syntaktisch korrekt eines der Worte „Figur“, „Kreis“ oder „Rechteck“ eingibt. Verwenden Sie für diese Benutzereingabe die Klasse JOptionPane der Bibliothek javax.swing. Im Hauptprogramm sollen ebenfalls alle für die Erzeugung und Initialisierung des Objektes benötigten Eigenschaften über eine solche Benut- zereingabe abgefragt und eingegeben werden. Das Hauptprogramm soll auf der Konsole ausgeben, welches Objekt gewählt und somit erzeugt wurde, und welche Koordinaten dessen Mittelpunkt hat. Anschließend soll das Objekt um bestimmte einzulesende Werte bewegt werden, woraufhin die Koordinaten des neuen Mittelpunkts ausgegeben werden sollen.

Hinweis: Alle deklarierten öffentlichen (public) Klassen müssen in eigenen Dateien abgespei- chert werden.

1 /* *

2 * D i e s e K l a s s e r e p r a e s e n t i e r t e i ne g e o m e t r i s c h e F i g u r .

3 *

4 * @ a u t h o r A n n a b e l l e K l a r l

5 *

6 */

7 p u b l i c c l a s s F i g u r {

8 p r i v a t e P o i n t m i t t e l p u n k t ;

9 p r i v a t e S t r i n g f a r b e ;

10 p r i v a t e boolean a u s g e f u e l l t ;

11

12 /* *

13 * K o n s t r u k t o r e i n e r g e o m e t r i s c h e n Figur , w o b e i d e r e n M i t t e l p u n k t und die

2

(3)

14 * F a r b e g e g e b e n s e i n m u e s s e n s o w i e ob die F i g u r a u s g e f u e l l t ist o d e r n i c h t .

15 *

16 * @ p a r a m p

17 * der M i t t e l p u n k t der F i g u r

18 * @ p a r a m f a r b e

19 * die F a r b e der F i g u r

20 * @ p a r a m a u s g e f u e l l t

21 * ob die F i g u r a u s g e f u e l l t ist o d e r n i c h t

22 */

23 p u b l i c F i g u r ( P o i n t p , S t r i n g farbe , boolean a u s g e f u e l l t ) {

24 t h i s. m i t t e l p u n k t = p ;

25 t h i s. f a r b e = f a r b e ;

26 t h i s. a u s g e f u e l l t = a u s g e f u e l l t ;

27 }

28

29 /* *

30 * K o n s t r u k t o r e i n e r g e o m e t r i s c h e n Figur , w o b e i d e r e n M i t t e l p u n k t und die

31 * F a r b e g e g e b e n s e i n m u e s s e n s o w i e ob die F i g u r a u s g e f u e l l t ist o d e r n i c h t .

32 *

33 * @ p a r a m x

34 * x - K o o r d i n a t e des M i t t e l p u n k t s der F i g u r

35 * @ p a r a m y

36 * y - K o o r d i n a t e des M i t t e l p u n k t s der F i g u r

37 * @ p a r a m f a r b e

38 * die F a r b e der F i g u r

39 * @ p a r a m a u s g e f u e l l t

40 * ob die F i g u r a u s g e f u e l l t ist o d e r n i c h t

41 */

42 p u b l i c F i g u r (i n t x , i n t y , S t r i n g farbe , boolean a u s g e f u e l l t ) {

43 t h i s. m i t t e l p u n k t = new P o i n t ( x , y );

44 t h i s. f a r b e = f a r b e ;

45 t h i s. a u s g e f u e l l t = a u s g e f u e l l t ;

46 }

47

48 /* *

49 * D i e s e M e t h o d e v e r s e t z t den M i t t e l p u n k t der F i g u r

50 *

51 * @ p a r a m dx

52 * V e r s a t z in x - R i c h t u n g

53 * @ p a r a m dy

54 * V e r s a t z in y - R i c h t u n g

55 */

56 p u b l i c void b e w e g e n (i n t dx , i n t dy ) {

57 t h i s. m i t t e l p u n k t . m o v e ( dx , dy );

58 }

59

60 /* *

61 * D i e s e M e t h o d e g i b t den M i t t e l p u n k t der F i g u r z u r u e c k

62 *

63 * @ r e t u r n der M i t t e l p u n k t

64 */

65 p u b l i c P o i n t g e t M i t t e l p u n k t () {

66 return t h i s. m i t t e l p u n k t ;

67 }

68 }

Aufgabe 7-4 Klassen, Vererbung, Benutzereingaben Hausaufgabe Nehmen Sie für diese Aufgabe die KlasseFahrzeugvon Übungsblatt 6, Aufgabe 6-4, zur Grund- lage. Ein Fahrzeug soll wie bisher die Eigenschaften Position, Anzahl der Räder, Leergewicht und aktuelle Geschwindigkeit haben. Mögliche Spezialisierungen eines Fahrzeugs sind Fahrräder und Personenkraftwagen, wobei sich Fahrräder dadurch auszeichen, dass sie nur zwei Räder haben, und Personenkraftwagen dadurch, dass sie vier Räder sowie eine Motorleistung vom Typ int haben. Definieren Sie zusätzlich zur bestehenden Klasse Fahrzeug zwei Unterklassen Fahrrad undPersonenkrafwagenzur Beschreibung dieser konkreteren Fahrzeuge. Beachten Sie, dass die

3

(4)

Klasse Fahrzeug wieder die vorgegebene Klasse Point verwendet, welche Sie von der Webseite herunterladen können. Schreiben Sie eine Hauptklasse MainFahrzeug, welche die drei definier- ten Klassen verwendet und über eine grafische Benutzerabfrage zuerst fragt, welches Objekt (Fahrzeug, Fahrrad oder Personenkraftwagen) erzeugt werden soll. Der Benutzer wird solange gefragt, bis er syntaktisch korrekt eines der Worte „Fahrzeug“, „Fahrrad“ oder „PKW“ eingibt.

Verwenden Sie für diese Benutzereingabe die KlasseJOptionPane der Bibliothek javax.swing.

Im Hauptprogramm sollen ebenfalls alle für die Erzeugung und Initialisierung des Objekts benö- tigten Eigenschaften über eine solche Benutzereingabe abgefragt und eingelesen werden. Beachten Sie, dass die Anzahl der Räder jedoch nur bei Objekten des Typs Fahrzeug einzulesen ist, da Fahrräder und Personenkraftwagen immer zwei bzw. vier Räder haben. Ebenso muss auch die Motorleistung nur bei Objekten des Typs Personenkraftwagen eingelesen werden. Das Haupt- programm soll auf der Konsole ausgeben, welches Objekt gewählt und somit erzeugt wurde, und welche Geschwindigkeit es hat. Anschließend soll das Objekt um einen bestimmten einzulesenden Wert beschleunigt werden, woraufhin die neue Geschwindigkeit ausgegeben werden soll.

Hinweis: Alle deklarierten öffentlichen (public) Klassen müssen in eigenen Dateien abgespei- chert werden.

Besprechung der Präsenzaufgaben in den Übungen ab 08.12.2017. Abgabe der Hausaufgaben bis Mittwoch, 20.12.2017, 14:00 Uhr über UniworX (siehe Folien der ersten Zentralübung).

• Erstellen Sie zu jeder Aufgabe Klassen mit den entsprechenden Namen, die in der Aufgabe gefordert sind.

• Geben Sie nur die entsprechenden .java-Dateien ab. Wir benötigen nicht Ihre .class- Dateien.

• Geben Sie Java-Code nur in .java-Dateien ab. Java-Code in Bildern, PDF-Dokumenten und Text-Dateien wird nicht korrigiert.

4

Referenzen

ÄHNLICHE DOKUMENTE

Geben Sie für jeden dieser Ausdrücke an, ob er syntaktisch korrekt ist oder nicht (mit Begrün- dung) und ob er typkorrekt ist oder nicht (mit Begründung).. c) Schreiben Sie

Geben Sie für jeden dieser Ausdrücke an, ob er syntaktisch korrekt ist oder nicht (mit Begrün- dung) und ob er typkorrekt ist oder nicht (mit Begründung).. Für typkorrekte Ausdrücke

Schreiben Sie in einer Klasse IntSortierung ein Javaprogramm, in dem zunächst drei Variablen x, y und z vom Typ int deklariert werden. Das Javaprogramm soll die Werte in den

• eine Variable oelverbrauchPro1000km vom Typ double.. Schreiben Sie in einer Klasse PizzaService ein Javaprogramm, das für eine gegebene Anzahl an Belagsorten den Gesamtpreis der

Schreiben Sie in einer Klasse Investitionsrechner ein Java-Programm, welches pro Jahr aus- gibt, das wievielte Jahr gerade berechnet wird, wieviele Autos in diesem Jahr

Schreiben Sie in einer Klasse Investitionsrechner ein Java-Programm, welches pro Jahr aus- gibt, das wievielte Jahr gerade berechnet wird, wieviele Autos in diesem Jahr

new Line(3,4) ist nicht typkorrekt, da zwar die Anzahl der aktuellen Parameter mit der Anzahl der formalen Parameter in der Konstruktordeklaration übereinstimmt, aber 3 und 4 den

In dieser Aufgabe sollen Sie ein Programm mit einer grafischen Benutzeroberfläche implemen- tieren, welches für eine beliebige Zahl n eine Lösung des Problems für n Scheiben