Ich habe Zweifel über den Entwurf eines Systems zur Verwaltung von Artikeln eines Geschäfts mit OOP. Ich habe die abstrakte Klasse Produkt erstellt, die die Attribute $ name und $ price haben wird. Später habe ich die Klasse Smartphone geschaffen, die das Produkt erweitert. Smartphone hat die Attribute $ brand und $ os. Später habe ich die Klasse Computer erstellt, die das Produkt erweitert und die Attribute $ cpuFrequency und $ ram hat. Nun, wenn ich zum Beispiel ein Objekt erstellen möchte, das dem Nexus 5 entspricht, was muss ich tun? Betrachten wir zum Beispiel, dass dieses ObjektPHP OOP-Klassen von Speichermuster
$name = "Nexus 5"
$price = "250"
$brand = "LG"
$os="Android"
$cpuFrequency "2.0"
$ram = "2".
Hier ist ein Beispiel von Klassen haben wird.
abstract class Product {
private $name;
private $price;
//more methods
}
class Smartphone extends Product{
private $brand;
private $os;
}
class Computer extends Product {
private $cpuFrequency;
private $ram;
}
Auch in Betracht gezogen, dass es Computer ohne $ os und Smartphone ohne $ RAM geben kann. nur ein Beispiel: D
P.S. Ich weiß, dass Smartphone ein Computer ist. Ich habe ein schlechtes Beispiel gemacht. Bitte denken Sie an Telefon und Computer. Telefon hat $ Nummer und $ Operator. Jetzt möchte ich ein Smartphone erstellen, das gleichzeitig Telefon und Computer ist.
Vielen Dank für alle und sorry nochmal für mein Englisch
Sie gehen mit zig verschiedenen Klassen am Ende, die sich völlig unbrauchbar/wartbaren ist. ein Smartphone ** IST ** ein Computer, der einfach nur telefonieren kann. genau wie ein Laptop ist ein Computer, der zufällig tragbar ist und seinen Bildschirm/Festplatte eingebaut hat. –
Sie könnten das Produkt und seine Spezifikation aufteilen. Dadurch können Sie für jeden neuen Typ keine Unterklasse erstellen. – Rangad
Sie sollten 'Produkt' eine Schnittstelle machen, dann implementieren Sie es. ein 'Smartphone' sollte eine' Phone'-Klasse erweitern und eine 'Computer'-Schnittstelle implementieren –