• Keine Ergebnisse gefunden

Informatik 2 für Regenerative Energien Klausur vom 10. Juli 2014

N/A
N/A
Protected

Academic year: 2021

Aktie "Informatik 2 für Regenerative Energien Klausur vom 10. Juli 2014"

Copied!
6
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Jörn Loviscach

Versionsstand: 9. Juli 2014, 00:18

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Germany License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/de/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

15 Punkte für die erste Aufgabe; 3 Punkte für alle weiteren Aufgaben. Mindest- punktzahl zum Bestehen: 20 Punkte. Hilfsmittel: maximal vier einseitig oder zwei beidseitig beschriftete DIN-A4-Spickzettel beliebigen Inhalts, möglichst selbst ver- fasst oder zusammengestellt; kein Skript, keine anderen Texte, kein Taschenrechner, kein Computer, kein Handy und Ähnliches.

Name Vorname Matrikelnummer E-Mail-Adresse, falls nicht in ILIAS

1. Im C#-Programmlisting im Anhang sind 15 Fehler, darunter keine Tippfehler und höchstens ein Fehler pro Zeile. Erstellen Sie eine Liste mit 15 Zeilen aus den Fehlern und ihren jeweiligen Korrekturen, nach dem folgenden Muster:

Zeile korrekter Programmtext 123

public void foo()

543

int a = 42;

2. Mit dem (korrigierten) Code aus dem Programmlisting im Anhang wird die Methode

Test.Teste()

ausgeführt. Welche Zeichenkette steht in den Zei- len 27 bis 29 in der Variablen

s

, welche Zahlenwerte stehen in den Variablen

kmAnton

und

kmBerta

? Beschreiben Sie gegebenenfalls, wie Sie zu Ihrer Antwort kommen.

3. Die Methode

BeendeFahrt

der Klasse

Kfz

soll nur nach

BeginneFahrt

aufgerufen werden können, nicht mehrfach hintereinander. Erweitern Sie die Klasse so, dass ein falscher Aufruf von

BeendeFahrt

zu einer Exception führt.

1

(2)

4. Erweitern Sie in die Klasse

Kfz

aus dem (korrigierten) Listing im Anhang um eine öffentliche Methode

string ListeFahrerUndKilometer()

, die die Fahrer und ihre gefahrenen Kilometer nach folgendem Muster als Zeichenkette zurückgibt, samt Zeilenumbrüchen:

Doris: 2354 Egon: 354 Fred: 5432

Sie können dabei die bereits vorhandenen Methoden benutzen!

5. Schreiben Sie für das (korrigierte) Listing im Anhang eine Klasse

FahrtInBielefeld

, die von

Fahrt

erbt, aber als Startort

"Bielefeld"

enthält, mit einem entsprechenden Konstruktor. Die Methode

KommeAn

soll in dieser Klasse auch als Zielort

"Bielefeld"

eintragen. Gegebenenfalls sind auch an der Klasse

Fahrt

Änderungen nötig. Welche?

6. Die Objekte der Klasse

Kfz

aus dem (korrigierten) Listing im Anhang sollen in ihrer Liste

fahrtenbuch

nicht nur die Fahrten speichern, sondern auch die Zeitpunkte von Inspektionen. Beschreiben Sie in wenigen Sätzen, welche Klassen man wie anlegen und verwenden sollte, um das zu verwirklichen.

7. Stellen Sie das Folgende mit Klassen, Attributen und Vererbung als UML- Diagramm dar:Jeder Punkt hat eine x- und eine y-Koordinate als Gleitkom- mazahl; jede Strecke hat einen Anfangs- und einen Endpunkt; jedes Dreieck hat drei Eckpunkte. Punkt, Strecke und Dreieck sind geometrische Objekte.

Damit Kursivschrift (falls nötig) zu erkennen ist, umkringeln Sie diese oder benutzen Sie eine andere Farbe dafür.

8. Welche Zahlen stehen nach Ausführung dieses C#-Programmfragments in den Variablen

x

,

y

und

z

? Geben Sie möglichst auch Zwischenschritte an, damit Ihr Gedankengang nachvollziehbar ist.

List<List<int>> a = new List<List<int>>();

List<int> b = new List<int>();

b.Add(3);

b.Add(4);

b.Add(5);

a.Add(b);

a.Add(new List<int>());

a.Add(b);

a[0][2] = 6;

a.RemoveAt(1);

int x = a.Count;

int y = a[0].Count;

int z = a[1][2];

(3)

Dieses Listing enthält 15 Fehler!

Dies soll ein Programm für eine elektronisches Fahrtenbuch werden. Die Methode

Teste

macht die Handhabung der Klassen vor.

1 c l a s s Test

2 {

3 p u b l i c s t a t i c v o i d Teste ( )

4 {

5 Kfz auto1 = new Kfz ( "AB123XY" , 1234 , " B i e l e f e l d " ) ;

6 i n t km = 2345;

7 Kfz auto2 = new Kfz ( "CD234UV" , km, " B i e l e f e l d " ) ;

8 Kfz auto3 = auto2 ;

9 Nac hrich tenze ntral e nz = new Na chric htenz entra le ( ) ;

10 Kfz . S e t z e N a c h r i c h t e n z e n t r a l e ( nz ) ;

11

12 auto1 . BeginneFahrt ( " Anton " ) ;

13 auto1 . BeendeFahrt ( "Hamburg" , 1 4 3 4 ) ;

14

15 f o r ( i n t i = 0 ; i < 300; i ++)

16 {

17 auto2 . BeginneFahrt ( " Berta " ) ;

18 km += 100;

19 auto2 . BeendeFahrt ( " Hannover " , km ) ;

20 auto2 . BeginneFahrt ( " Clara " ) ;

21 km += 100;

22 auto2 . BeendeFahrt ( " B i e l e f e l d " , km ) ;

23 }

24

25 auto2 . R e g i s t r i e r e I n s p e k t i o n ( " Anton " ) ;

26

27 s t r i n g s = nz . HoleMeldungen ( ) ;

28 i n t kmAnton = auto2 . GefahreneKilometer ( " Anton " ) ;

29 i n t kmBerta = auto3 . GefahreneKilometer ( " Berta " ) ;

30 }

31 }

32

33 c l a s s Kfz

34 {

35 s t r i n g kennzeichen ;

36 i n t kilometerstand ;

37 s t r i n g a k t u e l l e r O r t ;

38 L i s t <Fahrt> fahrtenbuch = new L i s t <Fahrt > ;

39 i n t kmLetzteInspektion ;

40 b o o l i n s p e k t i o n A n g e f o r d e r t ;

41 s t a t i c i n t Nac hrich tenz entra le n a c h r i c h t e n z e n t r a l e ;

42

43 p u b l i c Kfz ( s t r i n g kennzeichen , i n t kilometerstand , s t r i n g a k t u e l l e r O r t )

44 {

45 t h i s . kennzeichen = kennzeichen ;

46 t h i s . kilometerstand = kilometerstand ;

47 t h i s . a k t u e l l e r O r t = a k t u e l l e r O r t ;

(4)

48 }

49

50 p u b l i c v o i d BeginneFahrt ( s t r i n g f a h r e r )

51 {

52 fahrtenbuch . Add ( Fahrt ( a k t u e l l e r O r t , f a h r e r ) ) ;

53 }

54

55 p u b l i c v o i d BeendeFahrt ( s t r i n g z i e l o r t , i n t kilometerstand )

56 {

57 fahrtenbuch [ fahrtenbuch . Count − 1 ] .KommeAn( z i e l o r t ,

58 kilometerstand + t h i s . kilometerstand ) ;

59 t h i s . kilometerstand = kilometerstand ;

60 i f ( t h i s . kilometerstand − kmLetzteInspektion > 10000

61 && ! i n s p e k t i o n A n g e f o r d e r t

62 && n a c h r i c h t e n z e n t r a l e ! = n u l l )

63 {

64 Melde ( kennzeichen+ " : I n s p e k t i o n f ä l l i g ! " ) ;

65 i n s p e k t i o n A n g e f o r d e r t = true ;

66 }

67 }

68

69 p u b l i c v o i d R e g i s t r i e r e I n s p e k t i o n ( )

70 {

71 kmLetzteInspektion = kilometerstand ;

72 i n s p e k t i o n A n g e f o r d e r t = f a l s e ;

73 }

74

75 p u b l i c s t r i n g [ ] HoleFahrer ( )

76 {

77 L i s t < s t r i n g > f a h r e r L i s t e = new L i s t < s t r i n g > ( ) ;

78 f o r e a c h ( Fahrt f in fahrtenbuch )

79 {

80 i f ( ! f a h r e r L i s t e . Contains ( f . Fahrer ) )

81 {

82 f a h r e r L i s t e . Add ( ) ;

83 }

84 }

85 return f a h r e r L i s t e . ToArray ( ) ;

86 }

87

88 p u b l i c i n t GefahreneKilometer ( s t r i n g f a h r e r )

89 {

90 i n t km;

91 f o r e a c h ( Fahrt f in fahrtenbuch )

92 {

93 i f ( f . Fahrer == f a h r e r )

94 {

95 km += f . holeStreckenlänge ( ) ;

96 }

97 }

98 return km;

(5)

99 }

100

101 p u b l i c s t a t i c v o i d S e t z e N a c h r i c h t e n z e n t r a l e ( n )

102 {

103 n a c h r i c h t e n z e n t r a l e = n ;

104 }

105 }

106

107 a b s t r a c t c l a s s Fahrt

108 {

109 s t r i n g s t a r t o r t ;

110 s t r i n g z i e l o r t ;

111 DateTime beginn ;

112 DateTime ende ;

113

114 s t r i n g f a h r e r ;

115 s t r i n g Fahrer

116 { ge t { return f a h r e r ; } }

117

118 i n t s t r e c k e n l ä n g e ;

119 p u b l i c i n t holeStreckenlänge ( )

120 {

121 return s t r e c k e n l ä n g e ;

122 }

123

124 p u b l i c v o i d Fahrt ( s t r i n g s t a r t o r t , s t r i n g f a h r e r )

125 {

126 t h i s . s t a r t o r t = s t a r t o r t ;

127 beginn = DateTime .Now;

128 t h i s . f a h r e r = f a h r e r ;

129 }

130

131 p u b l i c v o i d KommeAn( s t r i n g z i e l o r t , s t r i n g s t r e c k e n l ä n g e )

132 {

133 t h i s . z i e l o r t = z i e l o r t ;

134 ende = DateTime .Now;

135 t h i s . s t r e c k e n l ä n g e = s t r e c k e n l ä n g e ;

136 }

137 }

138

139 c l a s s Nach richt enzen trale

140 {

141 L i s t < s t r i n g > nachrichten = new L i s t < s t r i n g > ( ) ;

142

143 p u b l i c v o i d Melde ( s t r i n g meldung )

144 {

145 Add ( meldung ) ;

146 }

147

148 p u b l i c s t r i n g HoleMeldungen ( )

149 {

(6)

150 s t r i n g s = " " ;

151 f o r e a c h (m in nachrichten )

152 {

153 s += m + " ; " ;

154 }

155 return s ;

156 }

157 }

Referenzen

ÄHNLICHE DOKUMENTE

maximal vier einseitig oder zwei beidseitig beschriftete DIN-A4-Spickzettel belie- bigen Inhalts, möglichst selbst verfasst oder zusammengestellt; kein Skript, keine anderen Texte,

Man führt eine Klasse Inspektion ein, legt eine eine Oberklasse (z. Fahrtenbucheintrag genannt) von Fahrt und Inspektion an und legt fahrtenbuch als Liste von Ereignis an. Die

Wenn derselbe Benutzer zum zweiten Mal versucht, dieselbe Musik zu be- werten, soll eine Exception geworfen werden.. Welche Änderungen nehmen Sie dazu im (korrigierten) Code aus

Ein Verweis auf die Musik mit Jailhouse Rock (weil Carla am besten passt), null (weil niemand passt) und null (weil Anna am besten passt, aber kein anderes Stück als das gemeinsame

Hilfsmittel: maximal vier einseitig oder zwei beidseitig beschriftete DIN-A4-Spickzettel beliebigen Inhalts, möglichst selbst ver- fasst oder zusammengestellt; kein Skript,

Man kann die neue Klasse von Bakterium ableiten , muss dann aber noch die beiden Konstruktoren und eine neue Überschreibung für Vermehre schreiben (weil sonst die neue

Hilfsmittel: maximal vier einseitig oder zwei beidseitig beschriftete DIN-A4-Spickzettel beliebigen Inhalts, möglichst selbst ver- fasst oder zusammengestellt; kein Skript,

Hilfsmittel: maximal vier einseitig oder zwei beidseitig beschriftete DIN-A4-Spickzettel beliebigen Inhalts, möglichst selbst ver- fasst oder zusammengestellt; kein Skript,