SlideShare una empresa de Scribd logo
1 de 84
Klassen und Objekte
     Benjamin Gudehus
      Dezember 2005
Einleitung
n Seminar:
  – Beantwortung von Fragen
  – Zahlreiche Zwischenaufgaben
n Klassen   und Objekte
  – Diagramme
  – Schnittstellen und Sichtbarkeitsbereich
  – Kommunikation zwischen Objekten
  – Initialisierung durch Konstruktor
Übersicht


                Klassen



                Seminar
      Objekte             Erweiterung
Übersicht


                Klassen



                Seminar
      Objekte             Erweiterung
Programmidee                               Klassen




n Programmname:   Buchleser
n Objekttypen: Bücher und Leser
n Funktion: Gelesene Seiten eines Lesers
  speichern
Buch:                 Leser:
n Titel               n Name
n Seiten              n Gelesene Seiten
Klassendiagramm                       Klassen




Aussage:
n Details über Daten- und
  Verhaltensstruktur des Systems
Aufgabe:
n Zusammenstellung von Objekttypen,
  deren Inhalte und Beziehungen

                    [nach M. Jeckle, 2004]
Klassendiagramm               Klassen




       Klasse


Klassenname
                Buch   Leser
Klassendiagramm                          Klassen




       Klasse


Klassenname
                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
Klassendiagramm                           Klassen




                  Buch           Leser

Attribute   m_titel      m_name
            m_seiten     m_geles_seiten
Klassendiagramm                              Klassen




                  Buch              Leser

Attribute   m_titel         m_name
            m_seiten        m_geles_seiten




n Attribute sollten immer mit „m_“ beginnen
n Attribute kann man innerhalb jeder
  Methode der Klasse mit ihrem Namen
  ansprechen
Klassendiagramm                                  Klassen




                   Buch                     Leser

Attribute    m_titel                m_name
             m_seiten               m_geles_seiten



n   Wir wollen die Attribute der Klasse von aussen nur
    über ihre Methoden ansprechen.
n   getAttributname() – Holt den Wert eines Attributs
n   setAttributname() – Setzt den Wert eines Attributs
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()
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?
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() : int



n WelcheGrundtypen und Rückgabewerte
 benutzen die Elemente der Klassen?
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()
Implementation verbergen                      Klassen




n   Klassenersteller:
    Erstellen neue Datentypen
n   Anwendungsentwickler:
    Benutzen die Datentypen in ihrer Anwendung

Ziele für den Klassenersteller :
n Bibliothek (Werkzeugkiste) erstellen
n Alles verbergen, was unnötig ist


                             [nach B. Eckel, 2000]
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()
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
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 (+)
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 (+)
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()
Klassendiagramm                                                 Klassen




         Klasse
                               Assoziation
Klassenname
                        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()
Fragen (1)                             Klassen




n 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?
Projektverzeichnis                     Klassen




n Buch.h      Deklaration (Prototyp)
n Buch.cpp    Implementierung

n Leser.h     Deklaration (Prototyp)
n Leser.cpp   Implementierung

n Main.cpp    Haupt-Programm
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)                              Klassen




n Wasist eine Deklaration und was ist eine
 Implementation?
Aufgaben (1)                                Klassen




Aufgabe 1 (5 Minuten Zeit):
Legen Sie ein neues Projekt namens
„buchleser“ an. Dort sollen die folgenden
Dateien enthalten sein:
n Leser.cpp, Leser.h
n Buch.cpp, Buch.h
n Main.cpp
// Leser.cpp: implementation of the Leser class.
//                                                                       Klassen
//////////////////////////////////////////////////////////////////////
                                             Deklaration / Prototyp
#include "Leser.h"
                                                  einbinden

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
                                              Konstruktor-Methode
Leser::Leser()                                  implementieren
{

}
Leser::~Leser()                               Destruktor-Methode
{                                              implementieren

}
// 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 > 1000

class Leser                                       Deklaration der Klasse
{
public:
   Leser();
   virtual ~Leser();

};

#endif // _LESER_H_
Aufgaben (2)                           Klassen




Aufgabe 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
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( );
                       };
Aufgaben (3)                                            Klassen




Aufgabe 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()
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 ;
                       }
Aufgaben (4)                                           Klassen




Aufgabe 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()
Übersicht


               Klassen



               Seminar
     Objekte             Erweiterung
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 );
                                …
Objektdiagramm                          Objekte




Aussage:
n Zeigt Objekte, Werte und Beziehungs-
  ausprägungen
Aufgabe:
n Darstellung einer Momentaufnahme des
  Systems zur Laufzeit
                      [nach M. Jeckle, 2004]
Objektdiagramm                                 Objekte




   Objektname                        Klassenname

                   leser1 : Leser
                m_name = „Gundalf“
     Werte      m_geles_seiten = 0
Objektdiagramm                                   Objekte




     Objektname                        Klassenname

                     leser1 : Leser
                  m_name = „Gundalf“
       Werte      m_geles_seiten = 0




n Objektnamen beginnen stets mit einem
 Kleinbuchstaben
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 );
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
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
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]
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
               Titel

Typ 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
Aufgaben (5)                                               Objekte




Aufgabe 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
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()
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
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()
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()
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
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()
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()
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
Aufgaben (6)                                                Objekte




Aufgabe 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
Übersicht


                Klassen



                Seminar
      Objekte             Erweiterung
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 );
                           …
                           }
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 );
                           …
                           }
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 );
                           …
                           }
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()


                           …
                           }
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()
Aufgaben (7)                                          Erweiterung




Aufgabe 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()
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);
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);
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)
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)
Aufgaben (8)                                          Erweiterung




Aufgabe 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);
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)
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()
                           }
Zusammenfassung
n Klassen  entwerfen und implementieren
n Klassen- und Objektdiagramme
n Zugriffsbeschränkung und Schnittstellen
  (Geheimnisprinzip)
n Get-Set als Lese -Schreib-Schnittstelle
n Hilfs-Funktion (Modell brechen)
n Konstruktor für die Initialisierung
Klassendiagramm
         Klasse
                                 Assoziation
Klassenname
                         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)
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
Literatur
n Helmut   Balzert: Lehrbuch Grundlagen der
  Informatik, Spektrum Akademischer
  Verlag, 1999
n Bruce Eckel: Thinking in C++, Second
  Edition, MindView, 2000
n Mario Jeckle u. a.: UML 2 Tutorial, 2003
Damit betrachte ich
diese Präsentation
   als beendet!

Más contenido relacionado

Destacado

Gestor de proyecto gr 3
Gestor de proyecto gr 3Gestor de proyecto gr 3
Gestor de proyecto gr 3mariacabezas22
 
Figaronron - Playstation home - Little big planet 2
Figaronron - Playstation home - Little big planet 2Figaronron - Playstation home - Little big planet 2
Figaronron - Playstation home - Little big planet 2Figaronron Figaronron
 
Joint Memorandum Circular No. 2010-01 (DOH and CSC)
Joint Memorandum Circular No. 2010-01 (DOH and CSC)Joint Memorandum Circular No. 2010-01 (DOH and CSC)
Joint Memorandum Circular No. 2010-01 (DOH and CSC)Smoke-Free Albay Network
 
Jce Pk Slideshare
Jce Pk SlideshareJce Pk Slideshare
Jce Pk SlideshareJClarkEvans
 
Find More Weird Differences
Find More Weird DifferencesFind More Weird Differences
Find More Weird DifferencesThilini
 
Chevauchee vers l'ouest
Chevauchee vers l'ouestChevauchee vers l'ouest
Chevauchee vers l'ouestRenée Gasser
 
Actividad experimental de desarrollo como se separan los contaminantes del su...
Actividad experimental de desarrollo como se separan los contaminantes del su...Actividad experimental de desarrollo como se separan los contaminantes del su...
Actividad experimental de desarrollo como se separan los contaminantes del su...Quimicaparaeverybody
 
Présentation abaca1
Présentation abaca1Présentation abaca1
Présentation abaca1maximeakd
 

Destacado (17)

Ufo
UfoUfo
Ufo
 
Gestor de proyecto gr 3
Gestor de proyecto gr 3Gestor de proyecto gr 3
Gestor de proyecto gr 3
 
Pcp final pres10
Pcp final pres10Pcp final pres10
Pcp final pres10
 
Figaronron - Playstation home - Little big planet 2
Figaronron - Playstation home - Little big planet 2Figaronron - Playstation home - Little big planet 2
Figaronron - Playstation home - Little big planet 2
 
Joint Memorandum Circular No. 2010-01 (DOH and CSC)
Joint Memorandum Circular No. 2010-01 (DOH and CSC)Joint Memorandum Circular No. 2010-01 (DOH and CSC)
Joint Memorandum Circular No. 2010-01 (DOH and CSC)
 
Jce Pk Slideshare
Jce Pk SlideshareJce Pk Slideshare
Jce Pk Slideshare
 
Free Syrian Army Photos - 2
Free Syrian Army Photos - 2Free Syrian Army Photos - 2
Free Syrian Army Photos - 2
 
Biblio association DMLA 2010
Biblio association DMLA 2010Biblio association DMLA 2010
Biblio association DMLA 2010
 
Find More Weird Differences
Find More Weird DifferencesFind More Weird Differences
Find More Weird Differences
 
Anti-VEGF : molecules et mecanismes
Anti-VEGF : molecules et mecanismesAnti-VEGF : molecules et mecanismes
Anti-VEGF : molecules et mecanismes
 
Les symboles
Les symbolesLes symboles
Les symboles
 
Componentes Cpu
Componentes CpuComponentes Cpu
Componentes Cpu
 
Chevauchee vers l'ouest
Chevauchee vers l'ouestChevauchee vers l'ouest
Chevauchee vers l'ouest
 
Segundo
SegundoSegundo
Segundo
 
Actividad experimental de desarrollo como se separan los contaminantes del su...
Actividad experimental de desarrollo como se separan los contaminantes del su...Actividad experimental de desarrollo como se separan los contaminantes del su...
Actividad experimental de desarrollo como se separan los contaminantes del su...
 
Présentation abaca1
Présentation abaca1Présentation abaca1
Présentation abaca1
 
Disco móvil
Disco móvil Disco móvil
Disco móvil
 

Klassen und Objekte (Dezember 2005)

  • 1. Klassen und Objekte Benjamin Gudehus Dezember 2005
  • 2. Einleitung n Seminar: – Beantwortung von Fragen – Zahlreiche Zwischenaufgaben n Klassen und Objekte – Diagramme – Schnittstellen und Sichtbarkeitsbereich – Kommunikation zwischen Objekten – Initialisierung durch Konstruktor
  • 3. Übersicht Klassen Seminar Objekte Erweiterung
  • 4. Übersicht Klassen Seminar Objekte Erweiterung
  • 5. Programmidee Klassen n Programmname: Buchleser n Objekttypen: Bücher und Leser n Funktion: Gelesene Seiten eines Lesers speichern Buch: Leser: n Titel n Name n Seiten n Gelesene Seiten
  • 6. Klassendiagramm Klassen Aussage: n Details über Daten- und Verhaltensstruktur des Systems Aufgabe: n Zusammenstellung von Objekttypen, deren Inhalte und Beziehungen [nach M. Jeckle, 2004]
  • 7. Klassendiagramm Klassen Klasse Klassenname Buch Leser
  • 8. Klassendiagramm Klassen Klasse Klassenname 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. Klassendiagramm Klassen Buch Leser Attribute m_titel m_name m_seiten m_geles_seiten
  • 10. Klassendiagramm Klassen Buch Leser Attribute m_titel m_name m_seiten m_geles_seiten n Attribute sollten immer mit „m_“ beginnen n Attribute kann man innerhalb jeder Methode der Klasse mit ihrem Namen ansprechen
  • 11. Klassendiagramm Klassen Buch Leser Attribute m_titel m_name m_seiten m_geles_seiten n Wir wollen die Attribute der Klasse von aussen nur über ihre Methoden ansprechen. n getAttributname() – Holt den Wert eines Attributs n setAttributname() – Setzt den Wert eines Attributs
  • 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. 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. 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() : int n WelcheGrundtypen und Rückgabewerte benutzen die Elemente der Klassen?
  • 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. Implementation verbergen Klassen n Klassenersteller: Erstellen neue Datentypen n Anwendungsentwickler: Benutzen die Datentypen in ihrer Anwendung Ziele für den Klassenersteller : n Bibliothek (Werkzeugkiste) erstellen n Alles verbergen, was unnötig ist [nach B. Eckel, 2000]
  • 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. 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. 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. 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. 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. Klassendiagramm Klassen Klasse Assoziation Klassenname 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. Fragen (1) Klassen n 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. Projektverzeichnis Klassen n Buch.h Deklaration (Prototyp) n Buch.cpp Implementierung n Leser.h Deklaration (Prototyp) n Leser.cpp Implementierung n Main.cpp Haupt-Programm
  • 36. Projektverzeichnis Klassen .dsw (Workspace) .dsp (Projekt)
  • 37. Fragen (2) Klassen n Wasist eine Deklaration und was ist eine Implementation?
  • 38. Aufgaben (1) Klassen Aufgabe 1 (5 Minuten Zeit): Legen Sie ein neues Projekt namens „buchleser“ an. Dort sollen die folgenden Dateien enthalten sein: n Leser.cpp, Leser.h n Buch.cpp, Buch.h n Main.cpp
  • 39. // Leser.cpp: implementation of the Leser class. // Klassen ////////////////////////////////////////////////////////////////////// Deklaration / Prototyp #include "Leser.h" einbinden ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// Konstruktor-Methode Leser::Leser() implementieren { } Leser::~Leser() Destruktor-Methode { implementieren }
  • 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 > 1000 class Leser Deklaration der Klasse { public: Leser(); virtual ~Leser(); }; #endif // _LESER_H_
  • 41. Aufgaben (2) Klassen Aufgabe 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. 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. Aufgaben (3) Klassen Aufgabe 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. 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. Aufgaben (4) Klassen Aufgabe 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. Übersicht Klassen Seminar Objekte Erweiterung
  • 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. Objektdiagramm Objekte Aussage: n Zeigt Objekte, Werte und Beziehungs- ausprägungen Aufgabe: n Darstellung einer Momentaufnahme des Systems zur Laufzeit [nach M. Jeckle, 2004]
  • 49. Objektdiagramm Objekte Objektname Klassenname leser1 : Leser m_name = „Gundalf“ Werte m_geles_seiten = 0
  • 50. Objektdiagramm Objekte Objektname Klassenname leser1 : Leser m_name = „Gundalf“ Werte m_geles_seiten = 0 n Objektnamen beginnen stets mit einem Kleinbuchstaben
  • 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. 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. 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. 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. 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 Titel Typ 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. Aufgaben (5) Objekte Aufgabe 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. 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. 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. 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. 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. 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. 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. 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. 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. Aufgaben (6) Objekte Aufgabe 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. Übersicht Klassen Seminar Objekte Erweiterung
  • 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. 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. 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. 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. 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. Aufgaben (7) Erweiterung Aufgabe 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. 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. 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. 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. 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. Aufgaben (8) Erweiterung Aufgabe 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. 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. 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. Zusammenfassung n Klassen entwerfen und implementieren n Klassen- und Objektdiagramme n Zugriffsbeschränkung und Schnittstellen (Geheimnisprinzip) n Get-Set als Lese -Schreib-Schnittstelle n Hilfs-Funktion (Modell brechen) n Konstruktor für die Initialisierung
  • 81. Klassendiagramm Klasse Assoziation Klassenname 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. 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. Literatur n Helmut Balzert: Lehrbuch Grundlagen der Informatik, Spektrum Akademischer Verlag, 1999 n Bruce Eckel: Thinking in C++, Second Edition, MindView, 2000 n Mario Jeckle u. a.: UML 2 Tutorial, 2003
  • 84. Damit betrachte ich diese Präsentation als beendet!