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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++]¿Comunicacion entre clases?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [C++]¿Comunicacion entre clases?  (Leído 15,435 veces)
skorpion32

Desconectado Desconectado

Mensajes: 7


Ver Perfil
[C++]¿Comunicacion entre clases?
« en: 25 Julio 2011, 22:38 pm »

Saludos espero me puedan ayudar

Verán estoy aprendiendo C++ y tengo la siguente duda

Quiero comunicar una una clase con otra (estas clases estan en archivos distintos), ¿para poder hacerlo se usan los archivos de cabecera?

Vi que había que definir prototipos en un archivo.h y en otro archivo.cpp definir dichos métodos como tal, que correspondan con el archivo de cabecera.

Despues para poder usar los metodos de esa clase en otra, bastaria con incluir el #include "archivo.h" y ya podria acceder a sus metodos y atributos con un objeto de dicha clase , ¿no?

Mi duda es si esto es "Valido" o correcto, yo lo hago así , pero me entró la duda.

Saludos!!
_________________________
En java esto bastaba con incluir el mismo paquete y ya podia instanciar a la otra clase


« Última modificación: 26 Julio 2011, 01:36 am por skorpion32 » En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: [C++]¿Comunicacion entre clases?
« Respuesta #1 en: 26 Julio 2011, 00:45 am »

http://www.cplusplus.com/doc/tutorial/inheritance/


En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
Acermax

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: [C++]¿Comunicacion entre clases?
« Respuesta #2 en: 27 Julio 2011, 15:53 pm »

Creo que skorpion no se refiere a la amistad entre clases, sino simplemente a usarla.

Si es así, tal y como lo haces y dices es correcto.
En línea

kurohige

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Re: [C++]¿Comunicacion entre clases?
« Respuesta #3 en: 28 Julio 2011, 20:49 pm »

http://www.cplusplus.com/doc/tutorial/inheritance/

:)
En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: [C++]¿Comunicacion entre clases?
« Respuesta #4 en: 28 Julio 2011, 21:54 pm »

Convendría leer los hilos antes de comentar ;).
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
skorpion32

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: [C++]¿Comunicacion entre clases?
« Respuesta #5 en: 29 Julio 2011, 11:30 am »

Sii esos son metodos validos , pero van mas alla de lo que planteo en mi duda inicial , si yo tengo DOS ARCHIVOS DISTINTOS , osea un claseuno.cpp y otro clasedos.cpp , estas no se conoceran , lo unico que io querria hacer es generar un objeto de la otra clase y usarlo, a menos que declare sus prototipos de una en un por ej . clasedos.h , y este incluirlo . Aparte de la relacion de estas dos clases. mi duda es si ese metodo es valido ¿?
En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: [C++]¿Comunicacion entre clases?
« Respuesta #6 en: 29 Julio 2011, 14:39 pm »

Sí. Mira este ejemplo que acabo de hacer, a ver si es lo que realmente quieres:

main.cpp

Código
  1. #include <cstdio>
  2. #include "clase.h"
  3.  
  4. int main()
  5. {
  6. clase1 _clase1;
  7. clase2 _clase2;
  8.  
  9. printf("clase1: %d\n", _clase1.suma(5, 5));
  10.  
  11. printf("clase2: %d\n", _clase2.resta(1));
  12.  
  13. getchar();
  14.  
  15. return 0;
  16. }

clase.h

Código
  1. class clase1
  2. {
  3. public:
  4. int suma(int, int);
  5. };
  6.  
  7. class clase2
  8. {
  9. public:
  10. int resta(int);
  11. };

clase1.cpp

Código
  1. #include "clase.h"
  2.  
  3. int clase1::suma(int a, int b)
  4. {
  5. return a + b;
  6. }

clase2.cpp

Código
  1. #include "clase.h"
  2.  
  3. clase1 _clase1;
  4.  
  5. int clase2::resta(int a)
  6. {
  7. int numero = _clase1.suma(2, 3);
  8.  
  9. return numero - a;
  10. }
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: [C++]¿Comunicacion entre clases?
« Respuesta #7 en: 29 Julio 2011, 20:23 pm »

¿ Podrías describir más que es lo que querés hacer ? Me llegan múltiples formas de resolverlo a la cabeza, pero cada una tiene su pro y contra, y están pensadas para resolver distintos problemas ...

Saludos.

P.S: Uff, hace milenios que no entro a este subforo ! x'D
En línea

skorpion32

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: [C++]¿Comunicacion entre clases?
« Respuesta #8 en: 30 Julio 2011, 23:01 pm »

Gracias muchachos , ya me quedo claro  :D
En línea

PiroskY

Desconectado Desconectado

Mensajes: 76


пирожки


Ver Perfil
Re: [C++]¿Comunicacion entre clases?
« Respuesta #9 en: 31 Julio 2011, 09:37 am »

la verdad que me parece una forma horrenda y engorrosa eso de poner la cabecera en un archivo y desarrollarlas en otro

Yo hago un .h para cada clase, y debajo de la clase desarrollo sus métodos
Y si los métodos son extremadamente cortos, los desarrollo ahí mismo.


Respondo lo que creo es tu duda:

Supongo que si te aventuraste con las clases, ya pasaste por las estructuras,
De ser así, te comento, el principal cambio es el encapsulamiento.
(o es lo que importa de momento, según interpreto tu duda)

Vos con estructuras podes acceder a sus atributos simplemente con estructura.atributo

Ahora, si estas usando clases como corresponde, todos tus atributos van a ser privados y solo vas a poder acceder a ellos mediante métodos de esa clase (los cuales, obviamente, tienen que ser públicos)
Entonces, si tu clase tiene un atributo Dato1, vos vas a tener que mediante un método, devolver ese dato o un puntero al mismo
Y si lo vas a querer modificar, vas a tener que crear un método que reciba el nuevo valor de Dato1 y reemplazar al anterior

Acá pongo un ejemplito:

Main
Código
  1. #include <iostream>
  2. #include <string.h>
  3. #include "Class.h"
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.    clsPersona persona1;
  10.  
  11.    cout << "Ingrese la edad" << endl;
  12.    persona1.setEdad();
  13.  
  14.    cout << "Ingrese el nombre" << endl;
  15.    persona1.setNombre();
  16.  
  17.    cout << endl;
  18.    cout << persona1.getNombre() << endl;
  19.    cout << persona1.getEdad() << endl;
  20.  
  21. return 0;
  22. }

Class.h
Código
  1. using namespace std;
  2.  
  3. class clsPersona
  4. {
  5.    private:
  6.        char nombre[30];
  7.        int edad;
  8.  
  9.    public:
  10.        char* getNombre(){return this->nombre;};
  11.        int getEdad(){return this->edad;};
  12.        void setNombre(){cin >> this->nombre;};
  13.        void setEdad(){cin >> this->edad;};
  14. };

Por otro lado:

"Después para poder usar los metodos de esa clase en otra, bastaria con incluir el #include "archivo.h" y ya podria acceder a sus metodos y atributos con un objeto de dicha clase , ¿no?"

Me genera mucha intriga lo que dijiste ahí.
Hablas de usar los métodos de una clase para otra clase?

"podría acceder a sus atributos con un objeto de dicha clase".
Por las dudas te aclaro, cuando vos instancias una clase, estas creando un "paquete" de sus atributos, no es que la clase tiene sus atributos y vos accedes a ellos mediante el objeto.
Vos podes tener muchos objetos de una misma clase, y cada uno tiene su atributo nombre por ejemplo, cada uno independiente del otro.

espero algo de esto te sirva, y no haber escrito tanto al dope.

saludos
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Comunicacion entre 2 sockets
Programación C/C++
hayholt 0 1,880 Último mensaje 30 Enero 2012, 09:08 am
por hayholt
[TUTORIAL] Comunicación Entre Ejecutables
Programación Visual Basic
Maurice_Lupin 8 4,126 Último mensaje 17 Agosto 2012, 19:15 pm
por Brian1511
[C#] Comunicacion entre formularios MDI
.NET (C#, VB.NET, ASP)
[u]nsigned 7 6,476 Último mensaje 22 Octubre 2012, 17:24 pm
por Maurice_Lupin
Comunicación entre terminales Linux
Noticias
wolfbcn 0 1,828 Último mensaje 19 Noviembre 2012, 23:24 pm
por wolfbcn
Comunicacion entre dos formularios
.NET (C#, VB.NET, ASP)
edurm13 1 1,852 Último mensaje 30 Abril 2013, 17:49 pm
por TrashAmbishion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines