Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
32.1.8 UML, Objektorientierte Analyse/Design<br />
Bei der objektorientierten Analyse sucht man nach Objekten, deren Eigenschaften <strong>und</strong> Fähigkeiten<br />
sowie den Beziehungen der Objekte untere<strong>in</strong>ander. Der objektorientierte Ansatz ist e<strong>in</strong>e Weiterentwicklung<br />
der modularen Programmierung.<br />
Bei <strong>die</strong>sem Vorgehen steht nun nicht mehr <strong>die</strong> Funktionalität, also das wie, sondern <strong>die</strong> Daten, also<br />
das was im Vordergr<strong>und</strong>. E<strong>in</strong> Objekt ist e<strong>in</strong>e E<strong>in</strong>heit, <strong>die</strong> bestimmte Eigenschaften (Attribute) aufweist,<br />
<strong>und</strong> bestimmte Befehle (Methoden) ausführen kann. E<strong>in</strong> Objekt kann e<strong>in</strong>e konkrete Entsprechung<br />
<strong>in</strong> der realen Welt haben, aber auch etwas abstraktes wie e<strong>in</strong>en Algorithmus umfassen.<br />
Beim objektorientierten Entwurf sucht man zuerst alle am Problem beteiligten Objekte, bestimmt<br />
anschliessend deren Eigenschaften (Attribute) <strong>und</strong> Aufgaben <strong>und</strong> f<strong>in</strong>det heraus, wie <strong>die</strong>se Objekte<br />
mite<strong>in</strong>ander <strong>in</strong> Beziehung stehen. Die zu den Daten gehörenden Funktionen (Aufgaben) werden<br />
dabei <strong>in</strong> <strong>die</strong> Objekte <strong>in</strong>tegriert. Man spricht dabei nicht mehr von Funktionen, sondern von Memberfunktionen<br />
oder Methoden. Die Daten werden entsprechend als Attribute (Eigenschaften) oder<br />
Member bezeichnet. Die Objekte kommunizieren untere<strong>in</strong>ander um <strong>die</strong> Aufgabe des Gesamtsystems<br />
zu erledigen.<br />
Funktionsaufrufe resp. Methodenaufrufe werden <strong>in</strong> der Literatur oft als 'Botschaften' an e<strong>in</strong> Objekt<br />
bezeichnet. (Z. B. Objekt A sendet <strong>die</strong> Botschaft 'ZeichneDich()' an Objekt B).<br />
Jedes Objekt gehört zu e<strong>in</strong>er Klasse, gleichartige Objekte gehören zur selben Klasse. (Gleichartige<br />
Objekte besitzen alle <strong>die</strong> gleichen Eigenschaften, nur können sie anders ausgeprägt se<strong>in</strong>. Zwei Objekte<br />
können z. B. <strong>die</strong> Eigenschaft Farbe besitzen, wobei sie beim e<strong>in</strong>en rot, <strong>und</strong> beim anderen grün<br />
ist)<br />
Die objektorientierte Methode kann <strong>in</strong> jeder <strong>Programmiersprache</strong> angewendet werden (Sogar Assembler),<br />
aber es gibt Sprachen, <strong>die</strong> speziell dafür entwickelt worden s<strong>in</strong>d wie Smalltalk, <strong>C++</strong> oder<br />
Java. (Das heisst aber noch nicht, dass man bereits objektorientiert Programmiert, sobald man e<strong>in</strong>e<br />
<strong>die</strong>ser Sprachen benutzt, <strong>die</strong> Sprache ist nur das Werkzeug)<br />
Die wichtigsten Gr<strong>und</strong>sätze der objektorientierten Programmierung s<strong>in</strong>d:<br />
Abstraktion Es werden nur <strong>die</strong> wesentlichen Eigenschaften e<strong>in</strong>es Objektes erfasst. Die unwesentlichen<br />
oder irrelevanten Eigenschaften werden ignoriert. Die Konzentration<br />
auf das Wesentliche erlaubt e<strong>in</strong>e von den Details losgelöste Sicht.<br />
Kapselung <strong>E<strong>in</strong>e</strong>r der zentralen Aspekte der OOP ist, Daten mit den zugehörigen Funktionen<br />
zusammenzuführen <strong>und</strong> gegen Aussen möglichst zu verstecken. Die daraus resultierende<br />
Datenstruktur nennt sich Klasse. <strong>E<strong>in</strong>e</strong> Variable oder Konstante, <strong>die</strong><br />
auf <strong>die</strong>ser Datenstruktur basiert, nennt sich e<strong>in</strong>e Instanz der Klasse. Der wesentliche<br />
Unterschied e<strong>in</strong>er Klasse des OOP zu den schon bekannten Datenstrukturen<br />
(z.B. e<strong>in</strong> struct <strong>in</strong> C oder e<strong>in</strong>em RECORD <strong>in</strong> Pascal) ist, dass e<strong>in</strong>e Klasse zusätzlich<br />
zu den Daten auch weitreichende Funktionalitäten übernehmen kann.<br />
Dadurch wird sie zu e<strong>in</strong>em Datentyp, der zu den Inhalten (den Daten) auch <strong>die</strong><br />
Möglichkeiten spezifiziert, mit ihnen umzugehen (<strong>die</strong> Funktionen). Die Daten<br />
e<strong>in</strong>er Klasse werden dabei als Elemente oder Attribute, <strong>und</strong> <strong>die</strong> Funktionen als<br />
Elementfunktionen oder Methoden bezeichnet. Normalerweise s<strong>in</strong>d <strong>die</strong> Attribute<br />
(Daten) e<strong>in</strong>es Objektes von aussen nicht direkt zugänglich, sondern werden gegen<br />
Aussen gekapselt. Auf <strong>die</strong> Daten kann nur <strong>in</strong>direkt über Zugriffsfunktionen<br />
zugegriffen werden. Somit ist <strong>die</strong> <strong>in</strong>terne Repräsentation der Daten Sache des<br />
Objektes, sie geht sonst niemanden etwas an.<br />
Beim Erzeugen e<strong>in</strong>es Objektes wird <strong>die</strong>ses üblicherweise automatisch <strong>in</strong>itialisiert,<br />
es ist somit unmöglich, nicht <strong>in</strong>itialisierte Objekte im System zu haben.<br />
Und wenn e<strong>in</strong> Objekt aufhört zu existieren räumt es h<strong>in</strong>ter sich ordentlich auf,<br />
bevor es verschw<strong>in</strong>det. Objekte haben somit fast e<strong>in</strong>e Art Eigenleben.<br />
Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 134/147