Klassen und Objekte     Benjamin Gudehus      Dezember 2005
Einleitungn Seminar:  – Beantwortung von Fragen  – Zahlreiche Zwischenaufgabenn Klassen   und Objekte  – Diagramme  – Schn...
Übersicht                Klassen                Seminar      Objekte             Erweiterung
Übersicht                Klassen                Seminar      Objekte             Erweiterung
Programmidee                               Klassenn Programmname:   Buchlesern Objekttypen: Bücher und Lesern Funktion: Ge...
Klassendiagramm                       KlassenAussage:n Details über Daten- und  Verhaltensstruktur des SystemsAufgabe:n Zu...
Klassendiagramm               Klassen       KlasseKlassenname                Buch   Leser
Klassendiagramm                          Klassen       KlasseKlassenname                Buch              Leser  n Klassen...
Klassendiagramm                           Klassen                  Buch           LeserAttribute   m_titel      m_name    ...
Klassendiagramm                              Klassen                  Buch              LeserAttribute   m_titel         m...
Klassendiagramm                                  Klassen                   Buch                     LeserAttribute    m_ti...
Klassendiagramm                                    Klassen                 Buch                   Leser           m_titel ...
Klassendiagramm                                    Klassen                 Buch                   Leser           m_titel ...
Klassendiagramm                                                   Klassen               Buch                              ...
Klassendiagramm                              Klassen           Buch                   Leser     m_titel             m_name...
Implementation verbergen                      Klassenn   Klassenersteller:    Erstellen neue Datentypenn   Anwendungsentwi...
Implementation verbergen                      Klassen            Buch                   Leser      m_titel             m_n...
Implementation verbergen                        Klassen            Buch                     Leser      m_titel            ...
Implementation verbergen                           Klassen                Buch                     Leser          - m_tite...
Implementation verbergen                              Klassen                      Buch                     Leser         ...
Klassendiagramm                                     Klassen                  Assoziation           Buch                   ...
Klassendiagramm                                                 Klassen         Klasse                               Assoz...
Fragen (1)                             Klassenn Was  macht ein „Klassenersteller“ und was  macht ein „Anwendungsentwickler...
Projektverzeichnis                     Klassenn Buch.h      Deklaration (Prototyp)n Buch.cpp    Implementierungn Leser.h  ...
Projektverzeichnis   Klassen
Projektverzeichnis   Klassen
Projektverzeichnis   Klassen
Projektverzeichnis   Klassen
Projektverzeichnis   Klassen
Projektverzeichnis   Klassen
Projektverzeichnis   Klassen
Projektverzeichnis   Klassen
Projektverzeichnis   Klassen
Projektverzeichnis   Klassen
Projektverzeichnis   Klassen
Projektverzeichnis                Klassen                     .dsw (Workspace)                     .dsp (Projekt)
Fragen (2)                              Klassenn Wasist eine Deklaration und was ist eine Implementation?
Aufgaben (1)                                KlassenAufgabe 1 (5 Minuten Zeit):Legen Sie ein neues Projekt namens„buchleser...
// Leser.cpp: implementation of the Leser class.//                                                                       K...
// Leser.h: interface for the Leser class.//                                                                         Klass...
Aufgaben (2)                           KlassenAufgabe 2 (5 Minuten Zeit):Passen Sie den Include-Wächter in den   Header-Da...
Klassenprototyp (Buch.h)                                     Klassen                       class Buch                     ...
Aufgaben (3)                                            KlassenAufgabe 3 (15 Minuten Zeit):Erstellen Sie die Klassenprotot...
Implementierung (Buch.cpp)                                 Klassen                       #include "buch.h"                ...
Aufgaben (4)                                           KlassenAufgabe 4 (15 Minuten Zeit):Schreiben Sie die Implementierun...
Übersicht               Klassen               Seminar     Objekte             Erweiterung
Objekte erstellen (Main.cpp)                            Objekte                             #include “leser.h"            ...
Objektdiagramm                          ObjekteAussage:n Zeigt Objekte, Werte und Beziehungs-  ausprägungenAufgabe:n Darst...
Objektdiagramm                                 Objekte   Objektname                        Klassenname                   l...
Objektdiagramm                                   Objekte     Objektname                        Klassenname                ...
Objekte erstellen (Main.cpp)                        Objekte                         // Bücher anlegen         Buch        ...
Objektdiagramm                                          Objekte          buch1 : Buch  m_titel = „Räuber Hotzenplotz“     ...
Gekapseltes Objekt                                                       Objekte         buch1 : Buch                     ...
Gekapseltes Objekt                                   Objekte         buch1 : Buch m_titel = „Räuber Hotzenplotz“ m_seiten ...
Klassen sind Schablonen                                                       Objekte                 Stempel:            ...
Aufgaben (5)                                               ObjekteAufgabe 5 (15 Minuten Zeit):Erzeugen Sie die Objekte wie...
Funktion: Leser liest Buch                           Objekte      Buch                           // Leser liest ein Buch- ...
Funktion: Leser liest Buch                              Objekte          buch1 : Buch  m_titel = „Räuber Hotzenplotz“     ...
Funktion: Leser liest Buch                               Objekte      Buch                           // Leser liest ein Bu...
Funktion: Leser liest Buch                               Objekte      Buch                           // Leser liest ein Bu...
Funktion: Leser liest Buch                              Objekte          buch1 : Buch  m_titel = „Räuber Hotzenplotz“     ...
Funktion: Leser liest Buch                             Objekte      Buch                           // Leser liest ein Buch...
Funktion: Leser liest Buch                            Objekte      Buch                           // Leser liest ein Buch-...
Funktion: Leser liest Buch                                Objekte          buch1 : Buch  m_titel = „Räuber Hotzenplotz“   ...
Aufgaben (6)                                                ObjekteAufgabe 6 (15 Minuten Zeit):Erweitern Sie das Programm ...
Übersicht                Klassen                Seminar      Objekte             Erweiterung
Konstruktor                                           Erweiterung                           int main( )         Leser     ...
Konstruktor                                           Erweiterung                           int main( )         Leser     ...
Konstruktor                                           Erweiterung                           int main( )         Leser     ...
Konstruktor                                            Erweiterung                           int main( )         Leser    ...
Konstruktor                                             Erweiterung                           Leser::Leser( string name,  ...
Aufgaben (7)                                          ErweiterungAufgabe 7 (10 Minuten Zeit):Erweitern Sie das Programm en...
Funktion: Leser liest Buch                               Erweiterung                           // Leser liest ein Buch    ...
Funktion: Leser liest Buch                               Erweiterung                           // Leser liest ein Buch    ...
Funktion: Leser liest Buch                            Erweiterung                           // Leser liest ein Buch       ...
Funktion: Leser liest Buch                             Erweiterung                           void Leser::leseBuch( int sei...
Aufgaben (8)                                          ErweiterungAufgabe 8 (10 Minuten Zeit):Erweitern Sie das Programm en...
Funktion: Leser liest Buch                             Erweiterung                           void Leser::leseBuch( int sei...
Funktion: Leser liest Buch                            Erweiterung                           void Leser::leseBuch( int seit...
Zusammenfassungn Klassen  entwerfen und implementierenn Klassen- und Objektdiagrammen Zugriffsbeschränkung und Schnittstel...
Klassendiagramm         Klasse                                 AssoziationKlassenname                         Buch        ...
Objektdiagramm                               Objektname           buch1 : Buch                                       Klass...
Literaturn Helmut   Balzert: Lehrbuch Grundlagen der  Informatik, Spektrum Akademischer  Verlag, 1999n Bruce Eckel: Thinki...
Damit betrachte ichdiese Präsentation   als beendet!
Nächste SlideShare
Wird geladen in …5
×

Klassen und Objekte (Dezember 2005)

706 Aufrufe

Veröffentlicht am

0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
706
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Klassen und Objekte (Dezember 2005)

  1. 1. Klassen und Objekte Benjamin Gudehus Dezember 2005
  2. 2. Einleitungn Seminar: – Beantwortung von Fragen – Zahlreiche Zwischenaufgabenn Klassen und Objekte – Diagramme – Schnittstellen und Sichtbarkeitsbereich – Kommunikation zwischen Objekten – Initialisierung durch Konstruktor
  3. 3. Übersicht Klassen Seminar Objekte Erweiterung
  4. 4. Übersicht Klassen Seminar Objekte Erweiterung
  5. 5. Programmidee Klassenn Programmname: Buchlesern Objekttypen: Bücher und Lesern Funktion: Gelesene Seiten eines Lesers speichernBuch: Leser:n Titel n Namen Seiten n Gelesene Seiten
  6. 6. Klassendiagramm KlassenAussage:n Details über Daten- und Verhaltensstruktur des SystemsAufgabe:n Zusammenstellung von Objekttypen, deren Inhalte und Beziehungen [nach M. Jeckle, 2004]
  7. 7. Klassendiagramm Klassen KlasseKlassenname Buch Leser
  8. 8. Klassendiagramm Klassen KlasseKlassenname Buch Leser n Klassennamen beginnen stets mit einem Großbuchstaben n Benennung: Substantiv im Singular, zusätzlich kann ein Adjektiv angegeben werden n Bsp. Seminar, öffentliche Ausschreibung
  9. 9. Klassendiagramm Klassen Buch LeserAttribute m_titel m_name m_seiten m_geles_seiten
  10. 10. Klassendiagramm Klassen Buch LeserAttribute m_titel m_name m_seiten m_geles_seitenn Attribute sollten immer mit „m_“ beginnenn Attribute kann man innerhalb jeder Methode der Klasse mit ihrem Namen ansprechen
  11. 11. Klassendiagramm Klassen Buch LeserAttribute m_titel m_name m_seiten m_geles_seitenn Wir wollen die Attribute der Klasse von aussen nur über ihre Methoden ansprechen.n getAttributname() – Holt den Wert eines Attributsn setAttributname() – Setzt den Wert eines Attributs
  12. 12. Klassendiagramm Klassen Buch Leser m_titel m_name m_seiten m_geles_seiten setTitel(titel) setName(name)Methoden getTitel() getName() setSeiten(seiten) setGelesSeiten(seiten) getSeiten() getGelesSeiten()
  13. 13. Klassendiagramm Klassen Buch Leser m_titel m_name m_seiten m_geles_seiten setTitel(titel) setName(name)Methoden getTitel() getName() setSeiten(seiten) setGelesSeiten(seiten) getSeiten() getGelesSeiten()n Welche Grundtypen und Rückgabewerte benutzen die Elemente der Klassen?
  14. 14. Klassendiagramm Klassen Buch Leser m_titel : string m_name : string m_seiten : int m_geles_seiten : int setTitel(titel : string) : void setName(name : string) : void getTitel() : string getName() : string setSeiten(seiten : int) : void setGelesSeiten(seiten : int) : void getSeiten() : int getGelesSeiten() : intn WelcheGrundtypen und Rückgabewerte benutzen die Elemente der Klassen?
  15. 15. Klassendiagramm Klassen Buch Leser m_titel m_name m_seiten m_geles_seiten setTitel(titel) setName(name) getTitel() getName() setSeiten(seiten) setGelesSeiten(seiten) getSeiten() getGelesSeiten()
  16. 16. Implementation verbergen Klassenn Klassenersteller: Erstellen neue Datentypenn Anwendungsentwickler: Benutzen die Datentypen in ihrer AnwendungZiele für den Klassenersteller :n Bibliothek (Werkzeugkiste) erstellenn Alles verbergen, was unnötig ist [nach B. Eckel, 2000]
  17. 17. Implementation verbergen Klassen Buch Leser m_titel m_name m_seiten m_geles_seiten setTitel(titel) setName(name) getTitel() getName() setSeiten(seiten) setGelesSeiten(seiten) getSeiten() getGelesSeiten()
  18. 18. Implementation verbergen Klassen Buch Leser m_titel m_name m_seiten m_geles_seiten setTitel(titel) setName(name) getTitel() getName() setSeiten(seiten) setGelesSeiten(seiten) getSeiten() getGelesSeiten() Sichtbarkeitsbereich einschränken
  19. 19. Implementation verbergen Klassen Buch Leser - m_titel - m_name - m_seiten - m_geles_seiten + setTitel(titel) + setName(name) + getTitel() + getName() + setSeiten(seiten) + setGelesSeiten(seiten) + getSeiten() + getGelesSeiten()n „Private“-Elemente erhalten ein Minus (-)n „Public“-Elemente erhalten ein Plus (+)
  20. 20. Implementation verbergen Klassen Buch Leser - m_titel - m_name - m_seiten - m_geles_seiten + setTitel(titel) + setName(name) + getTitel() + getName()Schnittstelle + setSeiten(seiten) + setGelesSeiten(seiten) + getSeiten() + getGelesSeiten() n „Private“-Elemente erhalten ein Minus (-) n „Public“-Elemente erhalten ein Plus (+)
  21. 21. Klassendiagramm Klassen Assoziation Buch Leser - m_titel - m_name - m_seiten - m_geles_seiten + setTitel(titel) + setName(name) + getTitel() + getName() + setSeiten(seiten) + setGelesSeiten(seiten) + getSeiten() + getGelesSeiten()
  22. 22. Klassendiagramm Klassen Klasse AssoziationKlassenname Buch Leser Attribute - m_titel - m_name - m_seiten - m_geles_seiten + setTitel(titel) + setName(name)Methoden + getTitel() + getName() + setSeiten(seiten) + setGelesSeiten(seiten) + getSeiten() + getGelesSeiten()
  23. 23. Fragen (1) Klassenn Was macht ein „Klassenersteller“ und was macht ein „Anwendungsentwickler“?n Was ist bei der Namensgebung von Klassen und Attributen zu beachten?n Wie sollte man die Methode benennen, die das Attribut „m_augenfarbe“ einer Klasse „Mensch“ zurückgibt?
  24. 24. Projektverzeichnis Klassenn Buch.h Deklaration (Prototyp)n Buch.cpp Implementierungn Leser.h Deklaration (Prototyp)n Leser.cpp Implementierungn Main.cpp Haupt-Programm
  25. 25. Projektverzeichnis Klassen
  26. 26. Projektverzeichnis Klassen
  27. 27. Projektverzeichnis Klassen
  28. 28. Projektverzeichnis Klassen
  29. 29. Projektverzeichnis Klassen
  30. 30. Projektverzeichnis Klassen
  31. 31. Projektverzeichnis Klassen
  32. 32. Projektverzeichnis Klassen
  33. 33. Projektverzeichnis Klassen
  34. 34. Projektverzeichnis Klassen
  35. 35. Projektverzeichnis Klassen
  36. 36. Projektverzeichnis Klassen .dsw (Workspace) .dsp (Projekt)
  37. 37. Fragen (2) Klassenn Wasist eine Deklaration und was ist eine Implementation?
  38. 38. Aufgaben (1) KlassenAufgabe 1 (5 Minuten Zeit):Legen Sie ein neues Projekt namens„buchleser“ an. Dort sollen die folgendenDateien enthalten sein:n Leser.cpp, Leser.hn Buch.cpp, Buch.hn Main.cpp
  39. 39. // Leser.cpp: implementation of the Leser class.// Klassen////////////////////////////////////////////////////////////////////// Deklaration / Prototyp#include "Leser.h" einbinden//////////////////////////////////////////////////////////////////////// Construction/Destruction////////////////////////////////////////////////////////////////////// Konstruktor-MethodeLeser::Leser() implementieren{}Leser::~Leser() Destruktor-Methode{ implementieren}
  40. 40. // Leser.h: interface for the Leser class.// Klassen//////////////////////////////////////////////////////////////////////#ifndef _LESER_H_ Include-Wächter#define _LESER_H_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class Leser Deklaration der Klasse{public: Leser(); virtual ~Leser();};#endif // _LESER_H_
  41. 41. Aufgaben (2) KlassenAufgabe 2 (5 Minuten Zeit):Passen Sie den Include-Wächter in den Header-Dateien buch.h und leser.h an.#ifndef _LESER_H_#define _LESER_H_…#endif
  42. 42. Klassenprototyp (Buch.h) Klassen class Buch { Buch private: - m_titel string m_titel; - m_seiten int m_seiten; + setTitel(titel) + getTitel() + setSeiten(seiten) public: + getSeiten() void setSeiten( int seiten ); int getSeiten( ); void setTitel( string titel ); string getTitel( ); };
  43. 43. Aufgaben (3) KlassenAufgabe 3 (15 Minuten Zeit):Erstellen Sie die Klassenprototypen in den Header-Dateien buch.h und leser.h. Buch Leser - m_titel - m_name - m_seiten - m_geles_seiten + setTitel(titel) + setName(name) + getTitel() + getName() + setSeiten(seiten) + setGelesSeiten(seiten) + getSeiten() + getGelesSeiten()
  44. 44. Implementierung (Buch.cpp) Klassen #include "buch.h" void Buch::setSeiten( int seiten ) { Buch m_seiten = seiten; - m_titel } - m_seiten int Buch::getSeiten( ) { + setTitel(titel) return m_seiten; + getTitel() + setSeiten(seiten) } + getSeiten() void Buch::setTitel ( string titel ) { m_titel = titel ; } string Buch::getTitel ( ) { return m_titel ; }
  45. 45. Aufgaben (4) KlassenAufgabe 4 (15 Minuten Zeit):Schreiben Sie die Implementierung der Klassen in buch.cpp und leser.cpp. Buch Leser - m_titel - m_name - m_seiten - m_geles_seiten + setTitel(titel) + setName(name) + getTitel() + getName() + setSeiten(seiten) + setGelesSeiten(seiten) + getSeiten() + getGelesSeiten()
  46. 46. Übersicht Klassen Seminar Objekte Erweiterung
  47. 47. Objekte erstellen (Main.cpp) Objekte #include “leser.h" #include "buch.h“ Leser - m_name - m_geles_seiten int main( ) + setName(name) { + getName() // Leser erzeugen + setGelesSeiten(seiten) + getGelesSeiten() Leser leser1; leser1.setName( "Gundalf" ); leser1.setGelesSeiten( 0 ); …
  48. 48. Objektdiagramm ObjekteAussage:n Zeigt Objekte, Werte und Beziehungs- ausprägungenAufgabe:n Darstellung einer Momentaufnahme des Systems zur Laufzeit [nach M. Jeckle, 2004]
  49. 49. Objektdiagramm Objekte Objektname Klassenname leser1 : Leser m_name = „Gundalf“ Werte m_geles_seiten = 0
  50. 50. Objektdiagramm Objekte Objektname Klassenname leser1 : Leser m_name = „Gundalf“ Werte m_geles_seiten = 0n Objektnamen beginnen stets mit einem Kleinbuchstaben
  51. 51. Objekte erstellen (Main.cpp) Objekte // Bücher anlegen Buch Buch buch1; - m_titel buch1.setTitel( "Raeuber - m_seiten Hotzenplotz" ); + setTitel(titel) buch1.setSeiten( 250 ); + getTitel() + setSeiten(seiten) + getSeiten() Buch buch2; buch2.setTitel( "Kater Mikesch" ); buch2.setSeiten( 310 );
  52. 52. Objektdiagramm Objekte buch1 : Buch m_titel = „Räuber Hotzenplotz“ leser1 : Leser m_seiten = 250 m_name = „Gundalf“ m_geles_seiten = 0 buch2 : Buch m_titel = „Kater Mikesch“ m_seiten = 310
  53. 53. Gekapseltes Objekt Objekte buch1 : Buch hole m_titel = „Räuber Hotzenplotz“ setze Titel Titel m_seiten = 250 Titel: „Räuber H.“ Buch Seiten: - m_titel setze 250 hole - m_seiten Seiten Seiten + setTitel(titel) + getTitel() Zustand + setSeiten(seiten) + getSeiten() Verhalten
  54. 54. Gekapseltes Objekt Objekte buch1 : Buch m_titel = „Räuber Hotzenplotz“ m_seiten = 250 Buch - m_titel - m_seiten + setTitel(titel) + getTitel() + setSeiten(seiten) + getSeiten() [nach H. Balzert, 1999]
  55. 55. Klassen sind Schablonen Objekte Stempel: setze hole Objekt Titel des Buch Titel Titel: „Räuber H. “ Types Seiten: hole setze 250 hole buch1 : Buch setze Titel Seiten Seiten TitelTyp oder Titel: Klasse setze Seiten: hole Seiten Seiten hole n Stichwort: setze Titel Titel: Titel Objekt des „Ausprägung“ „Kater M.“ Seiten: Types 310 Ein Exemplar setze hole n Seiten Seiten buch2 : Buch
  56. 56. Aufgaben (5) ObjekteAufgabe 5 (15 Minuten Zeit):Erzeugen Sie die Objekte wie beschrieben. buch1 : Buch m_titel = „Räuber Hotzenplotz“ leser1 : Leser m_seiten = 250 m_name = „Gundalf“ m_geles_seiten = 0 buch2 : Buch m_titel = „Kater Mikesch“ m_seiten = 310
  57. 57. Funktion: Leser liest Buch Objekte Buch // Leser liest ein Buch- m_titel- m_seiten int buch_s =+ setTitel(titel) buch1.getSeiten();+ getTitel()+ setSeiten(seiten)+ getSeiten() Leser- m_name- m_geles_seiten+ setName(name)+ getName()+ setGelesSeiten(seiten)+ getGelesSeiten()
  58. 58. Funktion: Leser liest Buch Objekte buch1 : Buch m_titel = „Räuber Hotzenplotz“ leser1 : Leser m_seiten = 250 m_name = „Gundalf“ m_geles_seiten = 0 buch2 : Buch m_titel = „Kater Mikesch“ m_seiten = 310
  59. 59. Funktion: Leser liest Buch Objekte Buch // Leser liest ein Buch- m_titel- m_seiten int buch_s =+ setTitel(titel) buch1.getSeiten(); //250+ getTitel()+ setSeiten(seiten)+ getSeiten() Leser- m_name- m_geles_seiten+ setName(name)+ getName()+ setGelesSeiten(seiten)+ getGelesSeiten()
  60. 60. Funktion: Leser liest Buch Objekte Buch // Leser liest ein Buch- m_titel- m_seiten int buch_s =+ setTitel(titel) buch1.getSeiten(); //250+ getTitel()+ setSeiten(seiten) int bisher_s =+ getSeiten() leser1.getGelesSeiten(); Leser- m_name- m_geles_seiten+ setName(name)+ getName()+ setGelesSeiten(seiten)+ getGelesSeiten()
  61. 61. Funktion: Leser liest Buch Objekte buch1 : Buch m_titel = „Räuber Hotzenplotz“ leser1 : Leser m_seiten = 250 m_name = „Gundalf“ m_geles_seiten = 0 buch2 : Buch m_titel = „Kater Mikesch“ m_seiten = 310
  62. 62. Funktion: Leser liest Buch Objekte Buch // Leser liest ein Buch- m_titel- m_seiten int buch_s =+ setTitel(titel) buch1.getSeiten(); //250+ getTitel()+ setSeiten(seiten) int bisher_s =+ getSeiten() leser1.getGelesSeiten(); //0 Leser- m_name- m_geles_seiten+ setName(name)+ getName()+ setGelesSeiten(seiten)+ getGelesSeiten()
  63. 63. Funktion: Leser liest Buch Objekte Buch // Leser liest ein Buch- m_titel- m_seiten int buch_s =+ setTitel(titel) buch1.getSeiten(); //250+ getTitel()+ setSeiten(seiten) int bisher_s =+ getSeiten() leser1.getGelesSeiten(); //0 Leser int aktuell_s =- m_name bisher_s + buch_s; //0+250- m_geles_seiten leser1.setGelesSeiten(+ setName(name)+ getName() aktuell_s); //250+ setGelesSeiten(seiten)+ getGelesSeiten()
  64. 64. Funktion: Leser liest Buch Objekte buch1 : Buch m_titel = „Räuber Hotzenplotz“ leser1 : Leser m_seiten = 250 m_name = „Gundalf“ m_geles_seiten = 250 buch2 : Buch m_titel = „Kater Mikesch“ m_seiten = 310
  65. 65. Aufgaben (6) ObjekteAufgabe 6 (15 Minuten Zeit):Erweitern Sie das Programm entsprechend. buch1 : Buch m_titel = „Räuber Hotzenplotz“ leser1 : Leser m_seiten = 250 m_name = „Gundalf“ m_geles_seiten = 250 buch2 : Buch m_titel = „Kater Mikesch“ m_seiten = 310
  66. 66. Übersicht Klassen Seminar Objekte Erweiterung
  67. 67. Konstruktor Erweiterung int main( ) Leser {- m_name // Leser erzeugen und- m_geles_seiten initialisieren+ setName(name)+ getName() Leser leser1;+ setGelesSeiten(seiten)+ getGelesSeiten() leser1.setName( "Gundalf “ ); leser1.setGelesSeiten( 0 ); … }
  68. 68. Konstruktor Erweiterung int main( ) Leser {- m_name // Leser erzeugen und- m_geles_seiten initialisieren+ Leser()+ setName(name) Leser leser1();+ getName()+ setGelesSeiten(seiten) leser1.setName( "Gundalf “ );+ getGelesSeiten() leser1.setGelesSeiten( 0 ); … }
  69. 69. Konstruktor Erweiterung int main( ) Leser {- m_name // Leser erzeugen und- m_geles_seiten initialisieren+ Leser(name, seiten)+ setName(name) Leser leser1("Gundalf ", 0 );+ getName()+ setGelesSeiten(seiten) leser1.setName( "Gundalf “ );+ getGelesSeiten() leser1.setGelesSeiten( 0 ); … }
  70. 70. Konstruktor Erweiterung int main( ) Leser {- m_name // Leser erzeugen und- m_geles_seiten initialisieren+ Leser(name, seiten)+ setName(name) Leser leser1("Gundalf ", 0 );+ getName()+ setGelesSeiten(seiten)+ getGelesSeiten() … }
  71. 71. Konstruktor Erweiterung Leser::Leser( string name, int seiten ) Leser- m_name {- m_geles_seiten m_name = name;+ Leser(name, seiten)+ setName(name) m_seiten = seiten;+ getName()+ setGelesSeiten(seiten) }+ getGelesSeiten()
  72. 72. Aufgaben (7) ErweiterungAufgabe 7 (10 Minuten Zeit):Erweitern Sie das Programm entsprechend. Leser Buch - m_name - m_titel - m_geles_seiten - m_seiten + Leser(name, seiten) + Buch(titel, seiten) + setName(name) + setTitel(titel) + getName() + getTitel() + setGelesSeiten(seiten) + setSeiten(seiten) + getGelesSeiten() + getSeiten()
  73. 73. Funktion: Leser liest Buch Erweiterung // Leser liest ein Buch Leser int buch_s =- m_name buch1.getSeiten();- m_geles_seiten int bisher_s =+ Leser(name, seiten)+ setName(name) leser1.getGelesSeiten();+ getName()+ setGelesSeiten(seiten) int aktuell_s =+ getGelesSeiten() bisher_s + buch_s; leser1.setGelesSeiten( aktuell_s);
  74. 74. Funktion: Leser liest Buch Erweiterung // Leser liest ein Buch Leser int buch_s =- m_name buch1.getSeiten();- m_geles_seiten int bisher_s =+ Leser(name, seiten)+ setName(name) leser1.getGelesSeiten();+ getName()+ setGelesSeiten(seiten) int aktuell_s =+ getGelesSeiten() bisher_s + buch_s;+ leseBuch(seiten) leser1.setGelesSeiten( aktuell_s);
  75. 75. Funktion: Leser liest Buch Erweiterung // Leser liest ein Buch Leser int buch_s =- m_name buch1.getSeiten();- m_geles_seiten leser1.leseBuch(buch_s);+ Leser(name, seiten)+ setName(name)+ getName()+ setGelesSeiten(seiten)+ getGelesSeiten()+ leseBuch(seiten)
  76. 76. Funktion: Leser liest Buch Erweiterung void Leser::leseBuch( int seiten) Leser {- m_name geles_seiten += seiten;- m_geles_seiten+ Leser(name, seiten) }+ setName(name)+ getName()+ setGelesSeiten(seiten)+ getGelesSeiten()+ leseBuch(seiten)
  77. 77. Aufgaben (8) ErweiterungAufgabe 8 (10 Minuten Zeit):Erweitern Sie das Programm entsprechend.Main.cpp: Leser.cpp:// Leser liest ein Buch void Leser::leseBuch( int seiten)int buch_s = { buch1.getSeiten(); geles_seiten += seiten; }leser1.leseBuch(buch_s);
  78. 78. Funktion: Leser liest Buch Erweiterung void Leser::leseBuch( int seiten) Leser {- m_name geles_seiten += seiten;- m_geles_seiten+ Leser(name, seiten) }+ setName(name)+ getName()+ setGelesSeiten(seiten)+ getGelesSeiten()+ leseBuch(seiten)
  79. 79. Funktion: Leser liest Buch Erweiterung void Leser::leseBuch( int seiten) Leser {- m_name geles_seiten += seiten;- m_geles_seiten+ Leser(name, seiten) }+ setName(name) void Leser::leseBuch(Buch buch)+ getName()+ setGelesSeiten(seiten) {+ getGelesSeiten()+ leseBuch(seiten) geles_seiten +=+ leseBuch(buch) buch.getSeiten() }
  80. 80. Zusammenfassungn Klassen entwerfen und implementierenn Klassen- und Objektdiagrammen Zugriffsbeschränkung und Schnittstellen (Geheimnisprinzip)n Get-Set als Lese -Schreib-Schnittstellen Hilfs-Funktion (Modell brechen)n Konstruktor für die Initialisierung
  81. 81. Klassendiagramm Klasse AssoziationKlassenname Buch Leser Attribute - m_titel - m_name - m_seiten - m_geles_seiten + Buch(titel, seiten) + Leser(name, seiten)Methoden + setTitel(titel) + setName(name) + getTitel() + getName() + setSeiten(seiten) + setGelesSeiten(seiten) + getSeiten() + getGelesSeiten() + leseBuch(seiten) + leseBuch(buch)
  82. 82. Objektdiagramm Objektname buch1 : Buch Klassenname m_titel = „Räuber Hotzenplotz“ m_seiten = 250 leser1 : Leser m_name = „Gundalf“ m_geles_seiten = 560 buch2 : Buch m_titel = „Kater Mikesch“ m_seiten = 310 Werte Objekt
  83. 83. Literaturn Helmut Balzert: Lehrbuch Grundlagen der Informatik, Spektrum Akademischer Verlag, 1999n Bruce Eckel: Thinking in C++, Second Edition, MindView, 2000n Mario Jeckle u. a.: UML 2 Tutorial, 2003
  84. 84. Damit betrachte ichdiese Präsentation als beendet!

×