[OOP] Klasse, die andere Klasse benutzt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [OOP] Klasse, die andere Klasse benutzt

    Hi,

    ich habe eine Klasse, die eine andere Klasse benutzt.
    Also genauer, eine Klasse Person die die Klasse Adresse benutzen soll.

    Es soll also einer Person eine Adresse zugeordnet werden.
    Benötige ich in der Klasse Person dann auch Variablen wie $strasse, $hnummer, $stadt und $plz? Oder wie kann ich einem Objekt Person ein permanente Adresse zuordnen.

    Ich meine benötige ich in der Klasse Person eine Funktion setAddress ?

    setAddress
    {
    anAddress = new Adress;
    }

    Ich verstehe nämlich nicht wenn ich irgendwo den Strassennamen der Person brauch. Wie komme ich dann da ran? Eine Funktion der Klasse Person aufrufen oder der Klasse Adresse?

    Danke

  • #2
    du hast eine class adresse .....

    nun erstellst du eine neue class namens person. diese sollte eine erweiterung der class adresse sein.

    somit hast du einen große class, die alles kann...
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Nein so meinte ich das nicht.
      Ich möchte die Klasse nicht erweitern.

      Sondern ein Objekt soll ein anderes benutzen und ich weiß net wie man das anstellt.

      Danke

      Kommentar


      • #4
        erstmal braucht die Klasse "Person" ein member "Adresse"
        PHP-Code:
        class Person
        {
          var 
        adresse;

        // a. irgendwo muss die Adresse gesetzt werden, z.B. im constructor:
          
        function Person
          
        {
            
        $this->adresse = new Adresse;
          }

          ...

        und dann müssen natürlich noch irgendwo die Adressdaten gesetzt werden. Ob getrennt oder in einer eigenen Methode (am sinnigsten dann in Klasse "Adresse"), bleibt wieder deine Wahl.

        b. Du kannst natürlich auch Person und Adresse getrennt erzeugen, und dann die Adresse nachträglich einfügen.
        PHP-Code:
        $person = new Person;
        $adresse = new Adresse;
        ... 
        Adressdaten setzen ...
        $person->adresse $adresse
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          Herrlich,

          das habe ich sogar verstanden.
          Aber wie mache ich die Klasse Adresse der Klasse Person bekannt?
          Wo soll man das include("adress.class.php") setzen?
          Im Constructor oder in der php Datei das Pbjekt Person erzeugt?

          Danke

          Kommentar


          • #6
            entweder in den construktor deiner klasse person
            oder in die datei, die ein objekt der klasse person erzeugt
            oder in die datei, die die klasse person definiert, aber außerhalb der klassendefinition

            is im prinzip ne glaubenssache

            wenn du die klasse adresse soauch noch brauchst ist möglichkeit 2 wahrscheinlich die bessere


            P.S. was hast du in der klasse adresse denn drin, dass du ne eigene klasse draus machen musstest?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Hi,

              DANKE.

              Also in der Klasse Adress sind nur die üblichen Attribute.
              Aber ich habe noch Klassen wie "Firma" die ja auch eine Adresse benötigen, deswegen ist eine eigene Klasse "Adresse" besser, denke ich.

              Muss ich eigentlich meine ganzten Attribute der Klasse "Person" initialisieren?
              $this->firstName = "";
              $this->lastName = "";
              $this->anAddress = "";
              $this->email = "";
              $this->phone = "";
              $this->fax = "";
              $this->birthDay = "";
              $this->birthMonth = "";
              $this->birthYear = "";
              $this->martStatus = "";
              $this->gender = "";

              Würde das reichen, oder muss ich die Werte an den Construktor übergeben?

              Danke

              Kommentar


              • #8
                wenn du das für kunden o. ä. machen willst, würd ich sowieso vorschlagen, dumachs ne klasse customer wo du rechungsadresse,liederadresse und ähnliches hast und leitest davon die klassen person und firma ab, eine einzige adresse is ja etwas mager oder?

                das setzen der attribute kannst du über den konstruktor erledigen (aber so, dass du den konstruktor auch ohne parameter aufrufen kanns,also mit default-werten arbeiten)

                der direkte zugriff auf die klasseninternen variablen ist nicht gut und widerspricht dem oo-prinzip

                das soltle nach dem black-box-prinzip ablaufen, d. h. zugriffe auf attribute (lesen u. schreibend) nur über klassenmethoden

                entweder du machst für jedes attribut eine set und eine get-methode oder du machst sowas (ganz stark vereinfacht)
                PHP-Code:
                function setvalue($attr$value)
                {
                  
                $oldvalue=(isset($this->$$attr)) ? $this->$$attr NULL;
                  
                $this->$$attr=$value;
                  return 
                $oldvalue;

                hier kannst du auch noch abhängig von $attr, also dem zu ändernden attribut ne plausibilitätsprüfung einbauen
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar

                Lädt...
                X