Question

on m'a demandé de décrire la relation entre le véhicule, voiture, toyota en terme de programmation orientée objet (disons dans un environnement php). Je suis perplexe. Quelqu'un peut-il me aide à ce sujet? Merci ...

Était-ce utile?

La solution

Une voiture est un véhicule et une voiture toyota est une voiture.

La déclaration la plus simple est que car pourrait être une sous-classe de vehicle et toyota car pourrait être une sous-classe de car.

Bien sûr, Toyota pourrait également se référer à la société, où les choses de cas serait un peu différent. Je suis sûr que le paragraphe ci-dessus est ce qu'ils devraient entendre, cependant.

Autres conseils

Je pense que Toyota fait référence à la société.

Je dirais:

Véhicule est un objet, et une voiture est un type de véhicule. Toyota est un implementor particulier d'objets de véhicule avec le procédé de brake surchargé de retour faux.

Car est un type de véhicule -. Pour que vous puissiez penser à Vehicle en tant que classe de base de Car

Toyota fabrique des voitures. Au lieu d'en faire une relation d'héritage, je serais enclin à ajouter une variable membre manufacturer à Vehicle. Ensuite, pour les cas de Car qui sont faites par Toyota, ensemble car.manufacturer = "Toyota".

Juste pour être gênant: la voiture est une sous-classe de véhicule, comme un camion. Toyota est un fabricant qui font les voitures et les camions; si Toyota devrait être l'une de plusieurs valeurs possibles pour l'attribut constructeur du véhicule.

class Vehicle{ 

   protected $_model;

   protected $_manufacturer;

   public __construct($manufacturer) {
       $this->_manufacturer = $manufacturer;
   }
} 

class Car extends Vehicle{ 
   public __construct($model,$manufacturer) {
       parent::__construct($manufacturer);
   }
   $this->_model = $model;
} 

class Truck extends Vehicle{ 
   public __construct($model,$manufacturer) {
       parent::__construct($manufacturer);
   }
   $this->_model = $model;
} 

$a = new Car('Avensis','Toyota');
$b = new Truck('Land Cruiser','Toyota');

Vouliez-vous dire:

class Vehicle{
}

class Car extends Vehicle{
}

class Toyota extends Car{
}

« véhicule » serait une classe de base, « Car » serait une classe qui étend, hérite, ou est dérivé de « véhicule » (selon la langue utilisée), et idéalement « Toyota » devrait être la valeur d'une « marque » ou propriété « faire » de l'un de ces deux classes.

Véhicule est une classe de base. La voiture est une classe dérivée. Toyota est (probablement) une valeur qui peut être affectée à l'élément « marque » de la classe de véhicule. En théorie, vous pouvez déduire Toyota du véhicule (ou quelque chose sur cet ordre), mais l'OMI, il est généralement une mauvaise idée. Dérivation devrait refléter généralement fonction, et il y a peu de la manière de la fonction qui est attaché à une marque.

La façon la plus simple de penser est dans la hiérarchie logique de ce que vous travaillez. Et cela s'appliquerait quasiment à rien dans le monde. Ce que tout le monde a dit ici est sur place, mais il ne peut pas vous aider à comprendre ce qu'ils disent, si vous ne comprenez pas POO. Permettez-moi donc d'élaborer.

Véhicule: véhicule A pourrait être une sorte de transport. Gardez à l'esprit, il pourrait être un avion, train, voiture, vélo, montgolfière, etc. Un véhicule est utilisé pour quelque chose que vous aller d'un endroit à un autre. Ainsi, le véhicule de classe de base étant vous dit que ça va être un dispositif de transport.

Voiture: voiture A est une forme de véhicule. Il PROLONGE donc véhicule. Une voiture peut être décrit comme un véhicule à 4 roues, portes 2-n (en fonction de la voiture), un moteur, un volant, essuie-glaces, les phares, les clignotants, les freins, l'accélérateur, etc. voiture donc décrit en outre quel véhicule vous se référant à.

Toyota: Toyota est une forme de voiture. Il PROLONGE donc la voiture. (Il pourrait également prolonger camion si vous travaillez avec une classe de camion). Il y a certains éléments d'une toyota qui peuvent ne pas appliquer à chaque voiture. Donc, pour aider à définir davantage le type de voiture, toyota pourrait désigner la consommation d'essence, nombre de portes, la couleur, la taille du moteur, etc.

L'espoir qui aide.

Toyota est une voiture. La voiture est un véhicule. Ainsi, la classe Toyota hériterait de voitures qui, à son tour hériter de véhicules.

Véhicule est une classe. La voiture est une sous-catégorie de véhicules. Toyota pourrait être une instance (assez générique) de la classe de voitures, ou une sous-classe l'ajout de fonctionnalités spécifique Toyota.

Une voiture est un véhicule, une Toyota est une voiture.

Alors, Toyota pourrait être une sous-classe de voitures et de voitures pourrait être une sous-classe de véhicule.

class Vehicle {

}

class Car extends Vehicle {

}

class Toyota extends Car {

}

Par exemple, une voiture peut avoir un membre var pour indiquer le nombre de roues et une fonction pour activer le moteur (pas tous les véhicules ont un moteur). Alors qu'une Toyota peut avoir les mêmes vars comme une voiture, en plus d'une chaîne contenant le nom du modèle et une méthode pour demander la garantie sur les pédales; -)

Vous pouvez prendre différentes approches.

  1. Car est une sous-classe de Vehicle. Toyota est une sous-classe de Car.

  2. Car est une sous-classe de Vehicle. Car a une propriété appelée make. Instanciation voiture et réglez sa make à "Toyota".

Il y a d'autres façons de le faire, mais ces deux sont les plus évidents qui viennent à l'esprit qui se intègrent dans le concept de POO.

La clé est de se demander quel est le terme général il le plus? Il est véhicule. Vous pouvez avoir de nombreux types de véhicules tels que des camions, des véhicules utilitaires sport, vélos, aéroglisseurs et les voitures. Ainsi, en POO, votre classe plus spécifiques hérite de la classe plus générale.

objet terme orienté Véhicule sera la classe de base voiture sera la sous-classe de véhicule

et Toyota sera le nom de la marque comme un attribut.

Bien sûr, ce n'est pas la réponse à votre interlocuteur voulait entendre, mais l'objectif de la programmation orientée objet est de ne pas modéliser le monde entier, mais simplement de fournir des types de données abstraites modèle concepts spécifiques dans le domaine de votre application .

Par conséquent, la relation entre les trois dépend entièrement de l'application que vous faites. Il est parfaitement possible que véhicule et la voiture doivent être même classe . Beaucoup d'applications ne se soucient pas quel type de véhicule, il est. Ils ont aussi peut-être pas attention à ce que marque il est, ce qui vous permet de jeter la classe Toyota ainsi.

POO aurait pu être un outil utile, si elle n'a pas été pris en otage par des idiots qui pensaient est de produire un diagramme UML de l'univers entier dans le but de la programmation.

Mon point de vue: « Toyota » ne doit pas être dérivé de « voiture », parce que Toyota est une entreprise, pas une voiture spécifique. Un « toyota_car » pourrait être dérivé de « voiture ». « Toyota » devrait être dérivé de la classe « fabricant », qui est dérivé de la classe « entreprise ». La classe « véhicule » devrait avoir un membre de la classe de pointeur de type classe « fabricant ». Dans le cas d'une voiture de marque Toyota, l'objet instancié de la classe « voiture » devrait avoir que membre de la classe héritée pointant vers l'objet Singleton de classe de type « toyota ». (C ++)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top