Anzeige

Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?

Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben? | PSD-Tutorials.de

Erstellt von ap1, 07.01.2010.

  1. ap1

    ap1 Grafik/Web

    Dabei seit:
    18.11.2007
    Beiträge:
    80
    Geschlecht:
    männlich
    Ort:
    localhorst
    Software:
    Photoshop CS4 Extended
    Kameratyp:
    EOS 450D
    Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?
    Hi Leute

    wie ich das meine muss ich kurz erklären:

    Ich habe es mir gedacht dass ich eine Oberklasse hab und für jedes Modul eine Unterklasse!

    • SOFTWARE
      • Benutzer
        • ladeDaten();
        • ...
      • Nachrichten
        • ladeNachrichten();
        • ...
      • Freunde
        • ladeFreunde();
        • ...
    Macht das sinn? Wenn ja: ist das okay wenn ich benutzer extends software oder nachrichten extends bzw. freunde mache? Oder soll ich nach möglichkeit 2 Programmieren:
    (Nach dieser Möglichkeit muss ich dann allerdings für jede Klasse eine Referenz ablegen, ist das schlimm - etwa:
    PHP:
    1.  
    2. <?php
    3. //...
    4. $software = new software();
    5. $benutzer = new benutzer();
    6. $nachrichten = new nachrichten($benutzer->ladeId());
    7. $freunde = new freunde($benutzer->ladeId());
    8. ?>
    )

    • SOFTWARE
    • BENUTZER
      • ladeDaten();
    • NACHRICHTEN
      • ladeNachrichten();
    • FREUNDE
      • ladeFreunde();
    Oder soll ich alle Funktionen von Benutzer, Nachrichten und Freunde in SOFTWARE packen: (Möglichkeit 3)

    • SOFTWARE
      • ladeDaten();
      • ladeNachrichten(); etc...

    Hoffe ihr versteht wie ich das meine ;)
    Welche möglichkeit soll ich Programmieren? Ich würde zur 2. tendieren sollte es nicht schlimm sein für jedes einzelne Modul eine neue Referenz ab zu legen...? Was hält ihr für sinnvoll?

    vielen Dank im Vorraus
     
    Zuletzt bearbeitet: 07.01.2010
    #1      
  2. saila

    saila Moderatorle

    Dabei seit:
    21.06.2006
    Beiträge:
    2.239
    Geschlecht:
    männlich
    Ort:
    50°48'23.69" N 7°14'22.19" O
    Software:
    Eclipse, PHP5 OO, MySQL5, CSS(auch Barrierefrei), JS, Symfony
    Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?
    AW: Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?

    Hi,

    die Aufteilung bzgl. deiner extends macht nicht wirklich Sinn.

    Du hast sicherlich eine Klasse für die Datebank (z.B.: class db).
    Angenommen du erstellst eine Klasse für "users". Dann wäre das im Grunde
    PHP:
    1.  
    2. <?php
    3. class users extends db {
    4. /* methoden */
    5. }
    6. ?>
    7.  
    In der Klasse users wickelst du alles ab was den User betrifft. Egal wo egal wie.

    Das gleiche betrifft nun die Klasse Nachrichten. Das wäre wiederum
    PHP:
    1.  
    2. <?php
    3. class messages extends db {
    4.  /* methode */
    5. ]
    6. ?>
    7.  
    In der Klasse messages kannst du unteranderem auch Nachrichten innerhalb als auch auserhalb verarbeiten. Bedeutet, du kannst Nachrichten in eine DB-Tabelle setzen als auch per smtp oder mai() Daten abwickeln.

    Was du mit Software meinst ist mir noch unklar, weil der Begriff sehr weitreichend und nicht eindeutig ist.

    Warum nun immer extends db - weil du letztlich dadurch die Methoden aus der Klasse db immer nutzen kannst - insbesondere durch protected!

    Und falls du irgendwas andres mit einer Klasse (ausser db) noch vor hast, kansst du die Klasse ja *****n.
     
    #2      
  3. ap1

    ap1 Grafik/Web

    Dabei seit:
    18.11.2007
    Beiträge:
    80
    Geschlecht:
    männlich
    Ort:
    localhorst
    Software:
    Photoshop CS4 Extended
    Kameratyp:
    EOS 450D
    Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?
    AW: Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?

    Ich dachte mir dass Software so eine Art Dach für alle anderen Funktionen bilden soll?
    Oder macht das kein sinn?
     
    #3      
  4. saila

    saila Moderatorle

    Dabei seit:
    21.06.2006
    Beiträge:
    2.239
    Geschlecht:
    männlich
    Ort:
    50°48'23.69" N 7°14'22.19" O
    Software:
    Eclipse, PHP5 OO, MySQL5, CSS(auch Barrierefrei), JS, Symfony
    Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?
    AW: Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?

    Dann sag mal, was in der Klasse software so für methoden sein sollten?
    Vor allem - was verstehst du unter software?
     
    #4      
  5. ap1

    ap1 Grafik/Web

    Dabei seit:
    18.11.2007
    Beiträge:
    80
    Geschlecht:
    männlich
    Ort:
    localhorst
    Software:
    Photoshop CS4 Extended
    Kameratyp:
    EOS 450D
    Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?
    AW: Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?

    Du hast recht - es macht keinen Sinn "Software" als Oberklasse zu nehmen.. Ich habs gelassen ;)

    Jetzt erzeuge ich jeweils eine Referenz auf eine Klasse ($user = new user und so weiter)

    Trotzdem vielen vielen Dank für die Hilfe oben!

    lg andi ;)
     
    #5      
  6. Chickenshooter

    Chickenshooter Alter Mann

    Dabei seit:
    08.02.2007
    Beiträge:
    431
    Geschlecht:
    männlich
    Ort:
    127.0.0.1
    Software:
    IBM-kompatiblen PC, Mal- und Schreibprogramme
    Kameratyp:
    ...eine zum Durchgucken
    Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?
    AW: Soll ich eine Klasse je Nachrichtenmodul, Benutzermodul, etc.. schreiben?

    Abstraktion ist das Zauberwort.

    Du kannst die Frgaen stellen wie zum Bsp.
    hat jedes "Ding" in meiner Anwendung eine ID.

    Wenn ja nenne Dein "root-object" doch einfach

    Object

    dann leitest Du alle Klassen von Object ab.

    weiter gedacht ein Benutzer ist eine Person, ein Freund ist eine Person!!!

    ergo

    PHP:
    1.  
    2. class Object
    3. {
    4.     private $_id;
    5.     public function getID(){}
    6.      public function setID($id){}
    7.  }
    8.  
    9. class Person extends Object
    10. {
    11.    private $_vorname;
    12.    private $_nachname;
    13.  
    14.    public funtion getVorname(){}
    15.    public funtion setVorname($vorname){}
    16.  
    17.    public funtion getNachname(){}
    18.     public funtion setNachname($nachname){}
    19.  }
    20.  
    21. class Benutzer extends Person
    22. {
    23.    private $_email;
    24.    public funtion getEmail(){}
    25.     public funtion setEmail($email){}
    26.  }
    27.  
    somit hat ein Benutzer
    1. eine ID
    2. einen Vor- und Nachnamen
    3. eine Email Adresse

    wohingegen eine Person, nicht zwingen eine Email Adresse hat.

    Vererbung.... tolle Sache das.

    Noch "lustiger" ;-)

    Interfaces (Schnittstekllen)

    zB

    PHP:
    1.  
    2. public interface Printable()
    3. {
    4.    puplic function ausgabe();
    5. }
    6.  
    so kannst Du denn das tun:

    PHP:
    1.  
    2. class Object implements Printable
    3.  {
    4.     private $_id;
    5.     public function getID(){}
    6.       public function setID($id){}
    7.  
    8.     /* Implementation des interfaces */
    9.        public function ausgabe()
    10.     {
    11.         $ausgabe = "<p>Das Object hat die ID:" . $this->getID() . "</p>";
    12.         return $ausgabe;
    13.     }
    14.    }
    15.  
    16. class Person extends Object
    17. {
    18.    private $_vorname;
    19.    private $_nachname;
    20.  
    21.    public funtion getVorname(){}
    22.     public funtion setVorname($vorname){}
    23.  
    24.    public funtion getNachname(){}
    25.      public funtion setNachname($nachname){}
    26.  
    27.     /* Implementation des interfaces für die Person */
    28.     /* wenn du es hier noch mal implementierst ist die */
    29.          /* Methode von der Klasse Object überschrieben */
    30.     public function ausgabe()
    31.     {
    32.         /* mit parent kannst Du auf Methoden der beerbten Klasse in*/
    33.          /* diesem Fall Object zugreifen */
    34.          $ausgabe = parent::ausgabe();
    35.         $ausgabe.="<p>" . $this->getVorname() . ", " .$this->getNachname(). "</p>";
    36.         return $ausgabe;
    37.       }
    38.     }
    39.  
    40. class Benutzer extends Person
    41. {
    42.    private $_email;
    43.    public funtion getEmail(){}
    44.      public funtion setEmail($email){}
    45.  
    46.     /* Implementation des interfaces für die Benutzer */
    47.     public function ausgabe()
    48.      {
    49.         $ausgabe = parent::ausgabe();
    50.         $ausgabe.="<p>" . $this->getEmail() . "</p>";
    51.         return $ausgabe;
    52.      }
    53.      }
    54.  
    MfG
     
    #6      
x
×
×