• Lunes 23 de Diciembre de 2024, 18:00

Autor Tema:  Problema Con Las Clases  (Leído 1226 veces)

princor

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Problema Con Las Clases
« en: Martes 17 de Julio de 2007, 19:44 »
0
bueno pues acabo de empezar a estudiar c++ en unos tutoriales y hay un programa que no consigo entenderlo bien, a ver si me podeis ayudar
esta es la cabecera donde hago la clase

Código: Text
  1.  
  2. #include <iostream>
  3. class punto
  4. {
  5. public:
  6. int obtenerX() const {return suX;}
  7. int obtenerY() const {return suY;}
  8. void cambiarX (int x) {suX= x;}
  9. void cambiarY (int y) {suY= y;}
  10. private:
  11. int suX;
  12. int suY;
  13. };
  14. class rectangulo
  15. {
  16. public:
  17. rectangulo(int superior, int derecha, int inferior, int izquierda);   //constructor
  18. ~rectangulo() {}    //destructor (inline)
  19.     // funciones para obtener los datos superior, inferior, derecha e izquierda
  20. //todos ellos declarados inline
  21. int obtenerSuperior() const {return susuperior;}
  22. int obtenerDerecha() const {return suderecha;}
  23. int obtenerInferior() const {return suinferior;}
  24. int obtenerIzquierda() const {return suizquierda;}
  25. //funciones para modificar los datos anteriores
  26. //todos ellos declarados inline
  27. void cambiarSuperior(int superior) {susuperior= superior;}
  28. void cambiarDerecha(int derecha) {suderecha= derecha;}
  29. void canbiarInferior(int inferior) {suinferior= inferior;}
  30. void cambiarIzquierda(int izquierda) {suizquierda= izquierda;}
  31. //creamos funciones para obtener los 4 puntos de las esquinas
  32. //todos ellos inline
  33. punto obtenerSuperiorDerecha() const {return superiorDerecha;}
  34. punto obtenerSuperiorIzquierda() const {return superiorIzquierda;}
  35. punto obtenerInferiorDerecha() const {return inferiorDerecha;}
  36. punto obtenerInferiorIzquierda() const {return inferiorIzquierda;}
  37. //creamos funciones para cambiar los 4 puntos de las esquinas
  38. //todos ellos inline
  39.     void ConfigurarSuperiorIzquierda(punto Localizacion)  {superiorIzquierda = Localizacion;}
  40.     void ConfigurarInferiorIzquierda(punto Localizacion)  {inferiorIzquierda = Localizacion;}
  41.     void ConfigurarSuperiorDerecha(punto Localizacion)  {superiorDerecha = Localizacion;}
  42.     void ConfigurarInferiorDerecha(punto Localizacion)  {inferiorDerecha = Localizacion;}
  43.     //creamos una funcion que obtendrá el área del rectangulo
  44. int area();
  45. private:
  46. //declaramos 4 variables que seran los lados superior, inferior , derecha e izquierda int
  47. int susuperior;
  48. int suderecha;
  49. int suinferior;
  50. int suizquierda;
  51. //declaramos 4 variable que seran los 4 puntos de las esquinas y seran del tipo punto ya que obtienen sus coordenadas de la clase punto
  52. punto superiorDerecha;
  53. punto superiorIzquierda;
  54. punto inferiorDerecha;
  55. punto inferiorIzquierda;
  56. };
  57.  
  58.  
y este el resto del programa

Código: Text
  1.  
  2. #include "rectangulo.h"
  3. using namespace std;
  4. //creamos el constructor creado en la clase cuadrado
  5. rectangulo::rectangulo(int superior, int derecha, int inferior, int izquierda)
  6. {
  7. //almacenamos los 4 datos como sus posiciones de sus lados
  8. susuperior = superior;
  9. suderecha = derecha;
  10. suinferior = inferior;
  11. suizquierda = izquierda;
  12.  
  13. //hacemos que cada punto obtenga sus coordenadas
  14. //empezamos con el puntp superior derecho
  15. superiorDerecha.cambiarX(derecha);
  16. superiorDerecha.cambiarY(superior);
  17. //hacemos lo propio con el punto superior izquierdo
  18.     superiorIzquierda.cambiarX(izquierda);
  19. superiorIzquierda.cambiarY(superior);
  20.     //hacemos lo propio con el punto inferior derecho
  21. inferiorDerecha.cambiarX(derecha);
  22. inferiorDerecha.cambiarY(inferior);
  23.     //hacemos lo propio con el punto inferior izquierdo
  24. inferiorIzquierda.cambiarX(izquierda);
  25.     inferiorIzquierda.cambiarY(inferior);
  26. }
  27. //definimos la funcion area de la clase cuadrado
  28. int rectangulo::area()
  29. {
  30. return (suizquierda - suderecha) * (susuperior - suinferior);
  31. }
  32. int main()
  33. {
  34. rectangulo miRectangulo (100, 20, 50, 80);
  35. int area = miRectangulo.area();
  36. cout << "el area del rectangulo es " << area << " \n";
  37. cout << "la coordenada x superior izquierda es: " << miRectangulo.obtenerSuperiorIzquierda().obtenerX() << " \n";
  38. system("PAUSE");
  39. return 0;
  40. }
  41.  
  42.  


bueno el problema es que  cuando escribo el constructor le voy asignando a x todo el rato un numero y este segun creo yo va cambiando no se guarda en ninguna parte por lo tanto no se como luego al llamar
"miRectangulo.obtenerSuperiorIzquierda().obtenerX()" como puede obtener la coordenada x correcta.
gracias por la ayuda

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Problema Con Las Clases
« Respuesta #1 en: Martes 17 de Julio de 2007, 23:42 »
0
Cita de: "princor"
bueno el problema es que  cuando escribo el constructor le voy asignando a x todo el rato un numero y este segun creo yo va cambiando
No va cambiando.
Cita de: "princor"
no se guarda en ninguna parte por lo tanto no se como luego al llamar
"miRectangulo.obtenerSuperiorIzquierda().obtenerX()" como puede obtener la coordenada x correcta.
Cada punto guarda sus propias coordenadas en suX y suY, allí están almacenadas. CUando llamas a obtenerX() obtienes suX.
La imaginación es el límite.
Hardware & Software | Mexchip

princor

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Problema Con Las Clases
« Respuesta #2 en: Miércoles 18 de Julio de 2007, 12:49 »
0
ya pero solo hay 2 variables suX y suY entoneces como puede cada punto tener su coordenada suX y suY.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Problema Con Las Clases
« Respuesta #3 en: Miércoles 18 de Julio de 2007, 21:45 »
0
Porque rectangulo tiene cuatro miembros punto, cada uno con sus miembros suX y suY.
La imaginación es el límite.
Hardware & Software | Mexchip

princor

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Problema Con Las Clases
« Respuesta #4 en: Miércoles 18 de Julio de 2007, 22:02 »
0
no habia caido en eso  :P
en fin muchas gracias!!