¿Qué es una relación has_a en c ++?

Video: Pareja: 5 Aspectos De Una Relación Sana | Inteligencia Emocional

En un ejemplo de un programa en C ++, supongamos que la clase Estudiante graduado incluye a los miembros de la clase Estudiante y Tutor, pero de una manera diferente. Mediante la definición de un miembro de datos de la clase Tutor, usted sabe que una Estudiante cuenta con todos los miembros de datos de una Tutor dentro de ella.

Video: ¿Que lenguaje es mejor? Ensamblador vs C vs Java

Sin embargo, no se puede decir que una Estudiante graduado es un Tutor - en su lugar se dice que una Estudiante graduado TIENE UN Tutor. ¿Cuál es la diferencia entre este y la herencia?

Utilizar un coche como un ejemplo. Se podría definir lógicamente un coche como una subclase de vehículo, por lo que hereda las propiedades de otros vehículos. Al mismo tiempo, un coche tiene un motor. Si usted compra un coche, se puede suponer lógicamente que usted está comprando un motor también.

Video: ¿Qué es un Relación Matemática?

Si los amigos le piden que presentarse en una concentración el sábado con su vehículo de elección y que van en su coche, no pueden quejarse (incluso si alguien más se presenta en una bicicleta), ya que un vehículo ES_UN coche.

Pero, si usted aparece en el pie que lleva un motor, tus amigos tendrán razones para reírse de ti, porque un motor no es un vehículo. Un motor le falta ciertas propiedades fundamentales que comparten todos los vehículos - como un lugar para montar.

Video: Instrucciones if, operadores de relación y operadores de igualdad en C

Desde un punto de vista programático, la relación HAS_A es tan sencillo. Considera lo siguiente:

Clase de vehículo de motor -class {} {} -class Coche: Vehículo pública {public: Motor Motor -} - VehicleFn vacío (Vehículo& v) -void MotorFn (Motor& m) -INT principal (int nNumberofArgs, char * pszArgs []) {auto-VehicleFn coche (automóvil) - // Este es allowedMotorFn (coche) - // esto no es allowedMotorFn (car.motor) - // esto es allowedreturn 0-}

La llamada VehicleFn (c) está permitido porque coche vehículo ES_UN. La llamada MotorFn (coche) No es porque coche no es un Motor, a pesar de que contiene una Motor. Si la intención era pasar el Motor Una porcion de do a la función, esto se debe expresar de manera explícita, como en la llamada MotorFn (car.motor).

Artículos Relacionados