C/Visual C - estructuras y clases

 
Vista:

estructuras y clases

Publicado por aaaa (54 intervenciones) el 14/05/2003 01:03:36
Hola! Quisiera saber ¿cuál es la ventaja de usar clases en vez de estructuras? Se lo que son las clases pero como que no le encuentro el sentido a ocultar la información con las clases.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:estructuras y clases

Publicado por shanna (5 intervenciones) el 14/05/2003 05:12:36
lo que pasa es que clases es mucho más flexible que estructuras ya que soportan poliformismo...herencia,sobrecarga etc.. y te ahorras cantidad de codigo ....con struct si quieres modificar algo tienes que hacer todo el proceso de nuevo...con clases no, ya que como el codigo es heredado bastara con cambiar la clase o el modulo y listo...por ejemplo tienes el metodo comer y tú clase es ave..tienes definido los atributos ¿cierto? y si ahora quieres hacer que animal coma...heredas el metodo comer de clase ave y listo...pq todos los seres vivos comen....ahora piensa ¿con struct podrias hacer eso?...espero te sirva...bye
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:estructuras y clases

Publicado por chuidiang (677 intervenciones) el 14/05/2003 10:30:29
Ocultar información tiene la ventaja de que haces partes de código independiente de otras partes. Eso ayuda mucho a poder reutilizar algunas partes del código en otro programa y evita fallos inesperados cuando tocas una parte del código.
Por ejemplo, para acceder al campo nombre de una estructura persona, tienes que saber de qué tipo es.
Para acceder al atributo nombre de una clase, si está oculto y lo haces a través de un método, no necesitas saber el tipo, sólo necesitas saber el tipo del parámetro del método (que no tiene por qué coincidir con el del atributo).
Si en un momento dado decides cambiar nombre del tipo que tenga por otro tipo, en el primer caso tendrías que tocar el código por todos lados. En el segundo sólo dentro de la clase (se supone que el tipo del parámetro del método de acceso no lo cambias y eres capza de convertir de uno en otro).

Otra característica muy potente es el polimorfismo. Puedes hacer que varias clases distintas hereden de una clase comun. Luego puedes hacer, por ejemplo, arrays de punteros a esa clase comun y en cada elemento puedes meter cualquiera de las clases hijas. Por ejemplo, imaginate que haces una clase objeto_grafico con un método dibujate(). Luego heredas y haces triangulo, rectangulo, marciano, etc. El trozo de código que tiene que coger todos esos chismes y dibujarlos, no necesita saber qué son, le basta con saber que son objetos_graficos. Es mas, en un futuro puedes crear nuevos objetos graficos y tu código sigue valiendo (si lo tienes compilado en una librería aparte, ni siquiera necestias recompilarlo).

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar