elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Preguntas sobre la herencias.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Preguntas sobre la herencias.  (Leído 2,371 veces)
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Preguntas sobre la herencias.
« en: 10 Julio 2012, 15:25 pm »

Mis pregunta son: ¿La herencia sirve para crear más instancias mientras esta en ejecución?, pondré el ejemplo de una ventana.

Tengo una ventana que tiene un botón llamado "crear ventana" al darle aparece otra igual.
¿Es eso?.

Ejemplo en código.
Código
  1. class Ventana {
  2.    public:
  3.        int x;
  4. };
  5. class V : public Ventana{
  6.    public:
  7.        void Create();
  8. };
  9. void V::Create(){
  10.    V newv;
  11. }
Me podrían decir como es?, es que no me entero.

Buen Rollo ;!


En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Preguntas sobre la herencias.
« Respuesta #1 en: 10 Julio 2012, 15:39 pm »

La herencia sirve para crear nuevas clases a partir de otras , y la nueva contiene las mismas características que la primera más algún añadido.
Por ejemplo tenemos una clase vehículo rodante , que tiene una serie de funciones miembro , variables etc
Código
  1. class VehiculoRodante
  2. {
  3. public:
  4. // CICLO DE VIDA
  5. /* En este lugar se sitúan los constructores, los destructores, y/o los constructores copia */
  6.  
  7. // OPERADORES
  8. /* Aquí van los métodos que se apliquen sobre operadores */
  9.  
  10. // OPERACIONES
  11. /* Aquí van los métodos de esta clase que no sean ni de acceso ni de petición o tratamiento */
  12.  
  13. /*
  14.  * Función 'set_ruedas'
  15.  * Recibe: num como int
  16.  * Devuelve: void
  17.  * Asigna al dato miembro 'mRuedas' el valor 'num'
  18.  */
  19. void set_ruedas(int num)
  20. {
  21.  this->mRuedas = num;
  22. }
  23.  
  24. /*
  25.  * Función 'get_ruedas'
  26.  * Recibe: void
  27.  * Devuelve: int
  28.  * Devuelve el valor que hay dentro del dato miembro 'mRuedas'
  29.  */
  30. int get_ruedas(void)
  31. {
  32.  return this->mRuedas;
  33. }
  34.  
  35. /*
  36.  * Función 'set_pasajeros'
  37.  * Recibe: num como int
  38.  * Devuelve: void
  39.  * Asigna al dato miembro 'mPasajeros' el valor 'num'
  40.  */
  41. void set_pasajeros(int num)
  42. {
  43.  this->mPasajeros = num;
  44. }
  45.  
  46. /*
  47.  * Función 'get_pasajeros'
  48.  * Recibe: void
  49.  * Devuelve: int
  50.  * Devuelve el valor que hay dentro del dato miembro 'mPasajeros'
  51.  */
  52. int get_pasajeros(void)
  53. {
  54.  return this->mPasajeros;
  55. }
  56.  
  57. // PETICIONES/TRATAMIENTOS
  58. /* Aquí van las funciones del tipo "Is", que generalmente devuelven true/false */
  59.  
  60. private:
  61. /* Generalmente en 'private' se sitúan los datos miembros */
  62. int mRuedas;
  63. int mPasajeros;
Ahora podemos realizar la herencia de esta clase creando una subclase que contendrá lo anterior mas lo añadido:
Código
  1. class Camion : public VehiculoRodante
  2. {
  3.  
  4. public:
  5. // CICLO DE VIDA
  6. /* En este lugar se sitúan los constructores, los destructores, y/o los constructores copia */
  7.  
  8. // OPERADORES
  9. /* Aquí van los métodos que se apliquen sobre operadores */
  10.  
  11. // OPERACIONES
  12. /* Aquí van los métodos de esta clase que no sean ni de acceso ni de petición o tratamiento */
  13.  
  14. // ACCESO
  15. /* Aquí van las funciones de acceso a los datos miembro o variables propias del objeto */
  16.  
  17. /*
  18.  * Función 'set_carga'
  19.  * Recibe: size como int
  20.  * Devuelve: void
  21.  * Asigna al dato miembro 'mCarga' el valor 'size'
  22.  */
  23. void set_carga(int size)
  24. {
  25.  this->mCarga = size;
  26. }
  27.  
  28. /*
  29.  * Función 'get_carga'
  30.  * Recibe: void
  31.  * Devuelve: int
  32.  * Devuelve el valor que hay dentro del dato miembro 'mCarga'
  33.  */
  34. int get_carga(void)
  35. {
  36.  return this->mCarga;
  37. }
  38.  
  39.  
  40. /*
  41.  * Función 'Mostrar'
  42.  * Recibe: void
  43.  * Devuelve: void
  44.  * Muestra por pantalla las ruedas, pasajeros y la capacidad de carga del objeto 'Camion'
  45.  */
  46. void Mostrar(void);
  47.  
  48. // PETICIONES/TRATAMIENTOS
  49. /* Aquí van las funciones del tipo "Is", que generalmente devuelven true/false */
  50.  
  51. private:
  52. /* Generalmente en 'private' se sitúan los datos miembros */
  53. int mCarga;
  54. };
Entonces este code por ejemplo:
Código
  1. int main(void)
  2. {
  3.  Camion Camion1;
  4.  Camion Camion2;
  5.  
  6.  
  7.  Camion1.set_ruedas(18);    //Accede a la funcion miembro de la clase vehiculorodante pero estamos en una clase heredada de ella Camion1.
  8.  Camion1.set_pasajeros(2);
  9.  Camion1.set_carga(3200);
  10.  
  11.  Camion2.set_ruedas(6);
  12.  Camion2.set_pasajeros(3);
  13.  Camion2.set_carga(1200);
  14.  return 0;
  15. }


En línea

Regístrate en
DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Preguntas sobre la herencias.
« Respuesta #2 en: 10 Julio 2012, 15:52 pm »

Exactamente como dice avesadura, la herencia es un concepto muy util. Donde puedes crear clases a partir de clases ya existentes, estas clases nuevas "Heredan" del padres, todas las propiedades, metodos, variables publicas. Siempre y cuando esten configuradas para su acceso publico. Esto es muy util para crear jerarquias en un problema en especifico donde tengas funcionalidades en una clase que quieras añadir a otras clases sin tener que volverlas a programar. Salu2s
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Preguntas sobre la herencias.
« Respuesta #3 en: 10 Julio 2012, 16:03 pm »

Pues no se que co ño me esta explicando un colega.

Código
  1. class enemy{
  2.    public:
  3.        void move(...);
  4.        void draw(...);
  5.    private:
  6.        int pos;
  7. };
  8.  
  9. class zombie : enemy zombie{
  10.    public:
  11.        zombie(int);
  12.        void SetMove(int);
  13. };
  14.  
  15. zombie::zombie(int x){
  16.    for(int i=0;i<x;i++){
  17.        zombie a[i];
  18.    }
  19. }
  20. zombie::SetMove(int x){
  21.    zombie[x].Move(...);
  22. }
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Preguntas sobre la herencias.
« Respuesta #4 en: 10 Julio 2012, 16:11 pm »

No entiendo el código , lo más lógico , es que la clase enemy , tuviera la posición , la función para dibujar y para mover al enemigo , y después la clase heredada lo feo que es el zombi , la vida que tiene , cual es el daño que provoca, a que velocidad corre...

En resumen , en el padre , las funciones y variables miembro PRINCIPALES de un enemigo , y sus clases heredadas las especificas de tales enemigos.
« Última modificación: 10 Julio 2012, 16:14 pm por avesudra » En línea

Regístrate en
DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Preguntas sobre la herencias.
« Respuesta #5 en: 10 Julio 2012, 16:34 pm »

Exactamente lo que dice avesadura. Por ejemplo la clase enemy debe tener elementos que tengan los enemigos. De echo, no se debe poder crear una instancia de la clase enemy (no se como se llama en C++/C, pero en C# se llama abstract). Entocnes seguimos, la clase zombie al heredar de enemy tendra todas estos metodos y variables, y ademas le puedes agraegar los elementos propios de un zombie. Por ejemplo, si crearas otro enemigo, que sea bad_dog, este tambien heredara de enemy, luego este tendra las mismas cosas que la clase enemy y igualmente le podras agregar nuevas funcionalidades..¿entendiste?
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Preguntas sobre la herencias.
« Respuesta #6 en: 10 Julio 2012, 16:59 pm »

Lo que entiendo es lo que heredan lo que no entiendo son las declaraciones de este mismo code que os puedo.

Se puede hacer que mientras el programa este activo pueda declarar clases?
« Última modificación: 10 Julio 2012, 17:01 pm por Xafi » En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Preguntas sobre la herencias.
« Respuesta #7 en: 11 Julio 2012, 13:49 pm »

A ver a ver yo tampoco entiendo el code podria estar comentado o algo de eso porque imaginarme lo que es no puedo.En cuanto a lo de que el programa esté activo declarar clases, ¿puedes declarar variables cuando el programa está activo?¿Puedes declarar estructuras cuando el programa está activo? Pues lo mismo con las clases.Código de ejemplo:

Código
  1. #include<iostream>
  2. class chucho
  3. {
  4. public:
  5. void lamer();
  6. void comer();
  7. void dormir();
  8. };
  9. int main() //Aqui el programa ya esta activo
  10. {
  11.   int variable_creada=0; //Podemos declarar una variable.
  12.   if(variable_creada==1) //O no hacerlo
  13.   {
  14.      int variable2;          //Es creada si variable_creada es igual que uno
  15.   }
  16.   //Si no no la creamos del mismo modo podemos declarar clases.
  17.  chucho yorkshire;
  18.  chucho pastor_aleman;
  19.  chucho dalmata;
  20. }
En línea

Regístrate en
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Preguntas sobre la herencias.
« Respuesta #8 en: 11 Julio 2012, 16:47 pm »

No ya, era una rallada total lo que tenia culpa de mi amigo. entiendo la herencia pero es que el me estaba contando un cosa muy rara. Gracias Avesudra
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
polimorfismos y herencias
Java
mapers 2 1,709 Último mensaje 13 Febrero 2011, 21:33 pm
por 1mpuls0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines