30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

9.3 Abgeleitete Klassen 211<br />

selbst e<strong>in</strong>e Deklaration ebendieser Methode getStr<strong>in</strong>gRep gibt, die die entsprechenden<br />

Maßnahmen setzt. E<strong>in</strong>e mögliche Deklaration dieser Klasse sieht<br />

dann folgendermaßen aus:<br />

47 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

48 /∗<br />

49 ∗ MyObject<br />

50 ∗<br />

51 ∗ A simple c l a s s that i s d i s p l a y a b l e and p r i n t a b l e<br />

52 ∗<br />

53 ∗/<br />

54<br />

55 class MyObject : public DisplayableObject ,<br />

56 public Pr<strong>in</strong>tableObject<br />

57 {<br />

58 public :<br />

59 MyObject ( ) ;<br />

60 ˜MyObject ( ) ;<br />

61 const char ∗ getStr<strong>in</strong>gRep ( ) ;<br />

62 } ;<br />

Wenn man nun getStr<strong>in</strong>gRep auf e<strong>in</strong>er Variable vom Typ MyObject aufruft,<br />

dann wird auf jeden Fall die hier deklarierte genommen, denn diese ist<br />

nach dem Pr<strong>in</strong>zip des Overrid<strong>in</strong>gs die für den Compiler sichtbare. Dadurch<br />

ist der Konflikt e<strong>in</strong>mal für den Compiler behoben und die Verantwortung<br />

übergeben. Nun braucht man nur noch getStr<strong>in</strong>gRep <strong>in</strong> MyObject korrekt<br />

implementieren und alles funktioniert wieder wie geplant – nun ja, zum<strong>in</strong>dest<br />

fast wie geplant, aber dazu kommen wir weiter unten noch. Sehen wir uns<br />

e<strong>in</strong>mal die Implementation der Klasse DisplayableObject an:<br />

64 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

65 /∗ constructor<br />

66 ∗<br />

67 ∗ @param s t r i n g r e p the s t r i n g r e p r e s e n t a t i o n o f the o b j e c t<br />

68 ∗/<br />

69<br />

70 DisplayableObject : : DisplayableObject ( const char ∗ s t r i n g r e p )<br />

71 {<br />

72 i f ( ! s t r i n g r e p )<br />

73 {<br />

74 s t r i n g r e p = 0;<br />

75 return ;<br />

76 }<br />

77 s t r i n g r e p = new char [ s t r l e n ( s t r i n g r e p ) + 1 ] ;<br />

78 strcpy ( s t r i n g r e p , s t r i n g r e p ) ;<br />

79 }<br />

80<br />

81 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

82 /∗ d e s t r u c t o r<br />

83 ∗/<br />

84<br />

85 DisplayableObject : : ˜ DisplayableObject ( )<br />

86 {<br />

87 i f ( s t r i n g r e p )<br />

88 delete [ ] s t r i n g r e p ;<br />

89 }<br />

90<br />

91 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

92 /∗

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!