2010-03-18 17 views
7

Cuando se dibuja un diagrama de herencia sueles ir¿Por qué la flecha sube en herencia?

 
         Base 
         ^
          | 
         Derived 

Derivado extiende Base. Entonces, ¿por qué sube la flecha?

Pensé que significa que "Derived se comunica con Base" llamando funciones, pero Base no puede llamar a funciones en Derivado.

Respuesta

5

yo sepa uno de los motivos es la coherencia de notación. Todas las demás flechas dirigidas (dependencia, agregación, composición) apuntan de dependiente a dependiente.

En herencia, B depende de A pero no viceversa. Por lo tanto, la flecha apunta de B a A.

+1

La herencia es una forma de dependencia – krosenvold

+1

La herencia es una implicación material. 'B => A' significa que" cada B implica una A ". – Apocalisp

0

B es el sujeto, A es el objeto, la acción es "heredar". Así que B actúa sobre A, de ahí la dirección de la flecha.

0

Creo que el punto es para expresar la "generalización": A es una generalización de B.

De esta manera la flecha expresa el mismo concepto que en extensión, pero va en la dirección "correcta"

1

Siempre pienso que B tiene más cosas, entonces A (las subclases a menudo tienen más métodos que las superclases), por lo tanto B obtiene el extremo ancho de la flecha y A obtiene el final puntiagudo!

2

En UML, la flecha se denomina relación de "Generalización" y solo señala que cada objeto de clase Derivado es también un objeto de clase Base.

De la superestructura 2.1.2:

A Generalization is shown as a line with a hollow triangle as an 
arrowhead between the symbols representing the involved classifiers. 
The arrowhead points to the symbol representing the general 
classifier. This notation is referred to as the “separate target style.” 

No es realmente una respuesta a la pregunta aunque :-)

1

Leer la flecha como "hereda de" y tiene sentido. O, si lo desea, piense en ello ya que se pueden hacer las llamadas de dirección.

+0

Estoy de acuerdo con su primera parte, pero con respecto a la segunda parte, es posible hacer lo siguiente: [Llamar a la función de clase derivada de la clase base ] (http://stackoverflow.com/a/4869284/2361131) – harshvchawla

Cuestiones relacionadas