Diferencia entre revisiones de «Programación en C++/Funciones virtuales»
Contenido eliminado Contenido añadido
Línea 576:
Para tener una idea del poder del concepto "una interface, multiples
metodos", examinemos el siguiente programa.
llamada 'figura'. Esta clase almacena las dimensiones de varios
objetos de 2-dimensiones y calcula sus areas. La funcion 'set_dim()'
Línea 630:
figura *p; // crear un puntero al tipo base.
triangulo t; // crear objetos de tipos derivados
rectangulo r;
Línea 641 ⟶ 640:
p->set_dim(10.0, 5.0);
p->mostrar_area();
return 0;
}
Línea 656 ⟶ 654:
</pre>
En el programa, notese que
'triangulo',
para computar el area de cada uno de sus objetos.
Dada la declaracion para 'figura', es posible derivar una clase
llamada 'circulo' que computara el area de un circulo, dado en radio?
La
tipo derivado que calcule el area de un circulo. El poder de las
funciones virtuales
facilmente derivar un nuevo tipo que mantendra un interface comun
con otros objetos relaciones. Por ejemplo, esta es una manera de
Línea 685 ⟶ 683:
Antes de intentar usar 'circulo', vea de cerca la definicion de
'mostrar_area()'. Note que esta usa solo el valor de x, el cual se
asume que
calculada usando la formula 'PI*R a la 2'.) Sin embargo, la funcion
'set_dim()' como se define en 'figura', asume que seran pasados
dos valores, no solo uno. Como 'circulo
valor, que tipo de accion podemos tomar?
Línea 697 ⟶ 695:
especial, la cual viola la filosofia "una interface, muchos metodos".
Una mejor manera de resolver este problema es
dentro de 'set_dim()' un valor por defecto. Entonces, cuando se llame
a 'set_dim()' para un circulo,
Cuando llame a 'set_dim()' para un triangulo o un rectangulo,
metodo, es mostrado aqui:
|