|
|
#1 (permalink) |
|
Erfahrener Benutzer
|
Hi,
ich möchte für unterschiedliche Produkte (Handy, Netbook, Surfstick) eine Klasse erstellen. Was wäre der beste Weg um das zu realisieren? Für jede Produktart eine eigene Klasse oder eine Oberklasse anlegen und dann über Vererbung? Jedes Produkt hat ja Eigenschaften, die in allen Produktarten vorkommen (Titel, Preis, Beschreibung, Bild usw.). Was ich mir ebenfalls überlegt habe: Es gibt ja eigentlich auch nur spezielle Produkte. Würde dann eine abstrakte Klasse ausreichen? Diese enthält dann die Methoden, die überall vorhanden sein müssen. |
|
|
|
| Gesponsorte Links |
|
|
#2 (permalink) |
|
bekämpft die Mächte des Bösen
|
So wie du das schilderst, gibt es nur eine Klasse Produkt, die Titel, Preis & Co hat.
Spannend is dann nur die Frage, ob es spezielle Produkte gibt, die weitere Informationen hat, z.B. ein PC hat einen Prozessor, während ein Handy Mobilfunkstandards hat. In diesem Fall wird von Produkt abgeleitet und erweitert. Abstrakt machen würd ich die Klasse Produkt nicht. Außer, du bist dir wirklich sicher, dass du keine normalen Produkte hast. |
|
|
|
|
|
#5 (permalink) | ||||||
|
Erfahrener Benutzer
|
Hi,
ok, danke für die Info. Da jedes Produkt spezielle Eigenschaften hat, würde ich jeweils eine spezielle Klasse anlegen. Natürlich kann es auch Fälle geben, wo man nur den Titel oder die Beschreibung eines Produktes wissen will. PHP-Code:
PHP-Code:
|
||||||
|
|
|
|
#6 (permalink) | |||
|
Erfahrener Benutzer
|
das das ist doch gerade das "schöne" an Vererbung das ich eben so etwas schreiben kann wie
PHP-Code:
Aradiv |
|||
|
|
|
|
|
#7 (permalink) | |||
|
Multitalent
|
Ich wüsste auch nicht welche weiteren Vorteile es haben könnte, wenn jedes Produkt eine eigene Klasse hat. Ggf. würde sogar eine einzige Klasse Produkt ausreichen.
Wie wäre es die speziellen Produkteigenschaften (z.B. Abmessungen [Möbel], Stromverbrauch [Elektronik], ..) in einem großen Array innerhalb der Klasse zu speichern? Jede Eigenschaft, die irgendein Produkt haben kann, hat einen systemweiten Key. So lassen sich dann später auch gut Produktvergleiche machen. Um die Eigenschaften "einfach" auszulesen, bietet sich __get() an: PHP-Code:
|
|||
|
|
|
|
|
#8 (permalink) | |
|
Erfahrener Benutzer
|
Zitat:
Möbel und Elektronikgeräte in eine Klasse zu packen erscheint mir nun nicht so sinnvoll. Ausserdem müsste ich doch auch für jede Gruppe eigene Methoden einbauen, um die Daten zu beschaffen (findeMoebel(), findeElektronikartikel() usw.) |
|
|
|
|
|
#9 (permalink) | |
|
bekämpft die Mächte des Bösen
|
Zitat:
Ein Objekt wird keine finde()-Methode haben, um weitere Objekte desselben Typs zu finden. Das is sinnlos. Stell dir vor ( ), du wärst ein Möbelstück in einem Shop. Wüsstest du dann, welche Elektronikartikel mit USB-Anschluss es gibt? Nein.Du, als Möbelstück ( ), weißt aber, wie lang, wie breit und wie schwer du bist.Und wenn du den DVD-Spieler fragst, der kann dir sagen, ob er einen USB-Anschluss besitzt. |
|
|
|
|
|
|
#10 (permalink) | ||||
|
Erfahrener Benutzer
|
Zitat:
Das Objekt hat keine find-Methode, aber die jeweilige Klasse. Dort bekomme ich dann ein bestimmtes Objekt zurück: PHP-Code:
|
||||
|
|
|
|
#11 (permalink) | ||||||
|
bekämpft die Mächte des Bösen
|
Ok, soweit klar.
Die Frage is ja, wie viel du in spezielle Methoden auslagern möchtest. - Und je nachdem hast du dann auch eine oder mehrere bis ganz viele Klassen. Willst du eher PHP-Code:
PHP-Code:
Unterere Variante is für jeden Scheiß ne neue Klasse mit x verschiedenen speziellen Methoden. Was du effektiv schreiben wirst, wird wohl irgendwas in der Mitte von beiden sein. |
||||||
|
|
|
|
|
#12 (permalink) |
|
Erfahrener Benutzer
|
Hi,
hat denn die obere Variante nen speziellen Namen, damit ich im Netz noch etwas ausführlicher was dazu lesen kann? Was passiert denn, wenn 2 Produkte z.B. Höhenangaben haben und wie komme ich an die jeweiligen Daten für die einzelnen Produkte? Geändert von baserider (11.06.2011 um 11:49:13 Uhr) |
|
|
|
|
#13 (permalink) | |
|
bekämpft die Mächte des Bösen
|
Zitat:
Je nach Implementierung entweder so oder so (s. vorheriger Post von mir). |
|
|
|
|
|
|
#14 (permalink) | ||||
|
Erfahrener Benutzer
|
Zitat:
Vielleicht versteh ichs ja auch falsch, aber der Aufruf wäre doch: PHP-Code:
|
||||
|
|
|
|
#15 (permalink) |
|
bekämpft die Mächte des Bösen
|
Verstehst du richtig. Ich seh nur dein Problem nicht
![]() Höhe is Höhe. Wenn ich im Regal 20cm Höhe frei habe, dann passt der DVD-Player mit 10cm Höhe rein, der Stuhl mit 110cm Höhe leider nicht. Is bei beiden Produkten aber dieselbe Höhe. Hast du verschiedene Höhen, musst du diese Eigenschaften (Ansatz 1: getProperty()) auch unterschiedlich benennen, um sie auseinander zu halten. |
|
|
|
![]() |
| Gesponsorte Links |
| Anzeige |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [PHP] Klassen & Funktionen | Tab | Programmierung | 1 | 12.10.2009 17:26:09 |
| [CSS] Klassen erweitern | klamm | Programmierung | 2 | 01.02.2008 12:42:47 |
| [PHP] Klassen | Gremlin | Programmierung | 17 | 22.10.2007 19:53:23 |
| [Java] und Klassen | gamefreak | Programmierung | 4 | 11.03.2007 12:22:56 |
| [PHP] Dokumentation von Klassen | ice-breaker | Programmierung | 6 | 14.10.2006 12:20:53 |