Pregunta

Me pidieron para describir la relación entre el vehículo, coche, Toyota en la programación orientada a objetos plazo (digamos en el entorno PHP). Estaba confundido. ¿Puede alguien ayudarme al respecto? Gracias ...

¿Fue útil?

Solución

Un coche es un vehículo y un coche de Toyota es un coche.

La declaración más sencilla es que car podría ser una subclase de vehicle y una toyota car podría ser una subclase de car.

Por supuesto, Toyota podría también referirse a la empresa, en cuyo caso las cosas serían un poco diferente. Estoy seguro de que el párrafo anterior es lo que esperaban oír, sin embargo.

Otros consejos

Creo que Toyota se refiere a la empresa.

Yo diría:

Vehículo es un objeto, y un coche es un tipo de vehículo. Toyota es un implementador particular de vehículo objetos con el método sobrecargado para brake falsa retorno.

carro es un tipo de vehículo -. Por lo que podría pensar en Vehicle como clase base de Car

Toyota fabrica automóviles. En lugar de hacer esta relación una herencia, me inclinaría a añadir una variable miembro manufacturer a Vehicle. Entonces, para los casos de Car que son hechas por Toyota, juego de car.manufacturer = "Toyota".

Sólo para estar incómoda: coche es una subclase de vehículo, como es el camión. Toyota es un fabricante que hacen los dos coches y camiones; por lo que Toyota debería ser uno de varios valores posibles para el atributo fabricante del vehículo.

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');

¿Se refiere a:

class Vehicle{
}

class Car extends Vehicle{
}

class Toyota extends Car{
}

"vehículo" sería una clase base, "coche" sería una clase que se extiende, hereda o se deriva de "vehículo" (en función del idioma utilizado), y lo ideal "Toyota" debe ser el valor de una "marca" o la propiedad "marca" de una de esas dos clases.

Vehículo es una clase base. Coche es una clase derivada. Toyota es (probablemente) un valor que se puede asignar al miembro de la "marca" de la clase de vehículo. En teoría, se podría derivar de Toyota vehículo (o algo en ese orden), pero la OMI es general una mala idea. en general, la derivación debe reflejar la función, y hay poco en el camino de la función que se une a una marca.

La forma más básica de pensar en ello está en la jerarquía lógica de lo que se está trabajando. Y esto se aplicaría a cualquier cosa en el mundo prácticamente. Lo que todo el mundo ha dicho aquí en el clavo, pero no puede ayudar a entender lo que están diciendo, si usted no entiende programación orientada a objetos. SO permítanme dar más detalles.

Vehículo: Un vehículo podría ser cualquier tipo de transporte. Tenga en cuenta, que podría ser un avión, tren, automóvil, bicicleta, del impulso del aire caliente, etc. Un vehículo es algo que se usa para ir de un lugar a otro. Por lo que el ser clase base vehículo que le dice que va a ser un dispositivo de transporte.

Coche: Un coche es una forma de vehículo. Por lo tanto, se extiende vehículo. Un coche puede ser descrito como un vehículo con 4 ruedas, 2-n puertas (dependiendo del coche), un motor, un volante de dirección, limpiaparabrisas, faros, intermitentes, frenos, aceleradores, etc. coche Así describe, además, qué vehículo está refiriéndose a.

Toyota: un Toyota es una forma de coche. Por lo tanto, se extiende coche. (También se podría extender camión si estuviera trabajando con una clase de camiones). Hay ciertos elementos de un Toyota que no pueden aplicarse a todos los coches. Así que para ayudar a definir aún más el tipo de coche, Toyota podría designar el kilometraje de gas, número de puertas, color, tamaño del motor, etc.

Espero que ayude.

Toyota es un coche. Coche es un vehículo. Así clase Toyota heredaría de coches que a su vez heredar de vehículo.

Vehículo es una clase. Car es una sub-clase de vehículo. Toyota podría ser una instancia (bastante genérico) de la clase de coche, o una sub-clase de añadir la funcionalidad de Toyota-específica.

Un coche es un vehículo, un Toyota es un coche.

Así, Toyota podría ser una subclase de Coche y podría ser una subclase de vehículo.

class Vehicle {

}

class Car extends Vehicle {

}

class Toyota extends Car {

}

Por ejemplo, un coche puede tener un miembro var para indicar el número de ruedas y una función para encender el motor (no todos los vehículos tienen un motor). Mientras que un Toyota puede tener las mismas vars como un coche, además de una cadena que contiene el nombre del modelo y un método para pedir garantía de pedales; -)

Puede tomar diferentes enfoques.

  1. Car es una subclase de Vehicle. Toyota es una subclase de Car.

  2. Car es una subclase de Vehicle. Car tiene una propiedad llamada make. Crear instancias de coches y configura su make a "Toyota".

Hay más maneras de hacerlo, pero esos dos son los más obvios que vienen a la mente que encajan en el concepto de programación orientada a objetos.

La clave es preguntarse ¿cuál es el término más general, existe? Es vehículo. Usted puede tener muchos tipos de vehículos como camiones, camionetas, bicicletas, coches y aerodeslizadores. Así, en programación orientada a objetos, sus hereda de la clase más específicos de la clase más general.

término orientado en objeto Vehículo será la clase base coche será la subclase del vehículo

y Toyota será el nombre de la marca como un atributo.

Por supuesto, esta no es la respuesta a su entrevistador quería escuchar, pero el objetivo de la programación orientada a objetos no es para modelar el mundo entero, sino simplemente para proporcionar los tipos de datos abstractos que modelo conceptos específicos en el dominio de la aplicación .

Por lo tanto, la relación entre los tres depende totalmente de lo que está haciendo la aplicación. Es perfectamente posible que ese vehículo y el coche debe ser el mismo clase. Una gran cantidad de aplicaciones puede no importa qué tipo de vehículo que es. También podrían no importa lo que marca es, lo que le permite tirar la clase Toyota también.

programación orientada a objetos podría haber sido una herramienta útil, si no hubiera sido tomada como rehén por idiotas que pensaban que el objetivo de la programación es producir un diagrama UML de todo el universo.

Mi opinión: "Toyota" no debe ser derivado de "coche", ya que Toyota es una empresa, no un coche específico. Un "toyota_car" se podría derivar de "coche". "Toyota" debe derivarse de la clase "fabricante", que se deriva de la clase "compañía". La clase "vehículo" debe tener un miembro de la clase de tipo puntero a la clase "fabricante". En el caso de un automóvil fabricado por Toyota, la instancia de objeto "coche" clase debe tener la heredada miembro de la clase que apunta al objeto única de la clase de tipo "Toyota". (C ++)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top