Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Herecnia En C++ - 2

Estas en el tema de Herecnia En C++ - 2 en el foro de C/C++ en Foros del Web. - HOLAS GENTE....AKI SIGUEIDNO INVESTIGADNO KON RESPECTO A CLASES ABSTTRACTAS Y HERENCIA. A VER SI ME PUEDEN AYUDAR...HE AHI EL CODIGO Y LA ESPLICACION DE ...
  #1 (permalink)  
Antiguo 24/11/2007, 17:59
 
Fecha de Ingreso: noviembre-2007
Mensajes: 37
Antigüedad: 16 años, 6 meses
Puntos: 0
Herecnia En C++ - 2

- HOLAS GENTE....AKI SIGUEIDNO INVESTIGADNO KON RESPECTO A CLASES ABSTTRACTAS Y HERENCIA. A VER SI ME PUEDEN AYUDAR...HE AHI EL CODIGO Y LA ESPLICACION DE LAS DUDAS K TENOG EN CUANTO A LSO CONSTRUCTORES DE LA CLASE PADRE!!!

- Existe unca clase...."Punto.cpp" - que la he implementado para poder usar
sus metodos en las demas clases. Esta en un archivo diferente

class Punto
{
private:
double x,y;
public:
Punto();
Punto(double cx,double cy);
void set_X(double x1);
void set_Y(double y1);
double get_X();
double get_Y();
void desplaza(double deltax,double deltay);
bool esCerrada();
//String toString(); //char
void leer();
double distancia(double x,double y);
Punto dentro();
};

Punto::Punto()
{
x=0;
y=0;
}

Punto::Punto(double cx,double cy)
{
x=cx;
y=cy;
}

void Punto::set_X(double x1)
{
x=x1;
}

void Punto::set_Y(double y1)
{
y=y1;
}

double Punto::get_X()
{
return x;
}

double Punto::get_Y()
{
return y;
}

void Punto::desplaza(double deltax,double deltay)
{
x+=deltax;
y+=deltay;
}

bool Punto::esCerrada()
{
cout<<"\n\t\t";
return false;
}

void Punto::leer() //Ingresa el centro de la figura
{
cout<<" Ingrese la abscisa==> "; cin>>x;
cout<<" Ingrese la ordenada==> "; cin>>y;
}

double Punto::distancia(double x1,double y1) {
double dx=x1-x;
double dy=y1-y;
return sqrt(dx*dx+dy*dy);
}

Punto Punto::dentro()
{
Punto p;
cout<<"\n Ingrese la abscisa a evaluar==> "; cin>>p.x;
cout<<" Ingrese la ordenada a evaluar==> "; cin>>p.y;
return p;
}


- He declarado una clase asbtracta: Lo es poque al menos uno de sus metodos es virtual puro

//Figura.cpp - en un archivo aparte
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <conio.c>
#include <string.h>

class Figura //clase raiz
{
protected:
char nombre[50];
public:
Figura();
Figura(char nombre[50]); //constructor por parametros
virtual double area()=0; // constructor por defecto
virtual void leer()=0;
virtual bool esCerrada()=0;
virtual bool ptodentro()=0;
virtual double per()=0;
} ;

Figura::Figura(char nombre[50])
{
strcpy(nombre,nombre);
}

Figura::Figura()
{
strcpy(nombre,nombre);
}

- Luego tengo esta clase hija: Elipse - qeu esta en otro archivo: "Elipse.cpp"

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <conio.c>
#include <string.h>
#include "Punto.cpp"
#include "Figura.cpp"

class Elipse: public Figura // hereda de Figura y empleo algunos metodos de punto
{
private:
Figura *super; //me sugirieron que declare un puntero "*super" que apunte a un tipo de dato
//del tipo Figura, para que pueda usar el constructor de Figura!!! -* esta bien!!!
double x,y;
protected:
double r1,r2;
Punto centro;
public:
Elipse(char nombre[50],double r1,double r2,Punto centro);
Elipse();
void setCentro(Punto p);
Punto getCentro();
void setRadio1(double r1);
double getRadio1();
void setRadio2(double r2);
double getRadio2();
//Estos metodos han sido declarados en la clase abstracta, necesito volver a ponerlos como
//publicos en la clase hija...yo creo que no, porque ésta los hereda. Aquí solo debo implementarlos,
//pero al eliminarlos, me salen muchos errores!!! - a que se debe??
//En esta clase deverian ser publicos???
void leer();
bool esCerrada();
bool ptodentro();
double area();
double per();
} ;

Elipse::Elipse(char nombre[50],double r3,double r4,Punto centro1)
{
super=Figura(nombre); //como llamo al constructor de la clase padre: Figura!!
r1=r3;
r2=r4;
centro=centro1;
}

Elipse::Elipse()
{
r1=0;
r2=0;
centro=Punto(0,0);
}

double Elipse::per()
{
double area=3.14/2*((r1+r2)+sqrt(r1*r1+r2*r2));
return (area);
}

void Elipse::setCentro(Punto p) {
centro = p;
}

Punto Elipse::getCentro() {
return centro;
}

void Elipse::setRadio1(double r3) {
r1 = r3;
}

double Elipse::getRadio1() {
return r1;
}

void Elipse::setRadio2(double r4) {
r2 = r4;
}

double Elipse::getRadio2() {
return r2;
}

void Elipse::leer()
{
centro.leer();
cout<<" Ingrese el radio 1==> "; cin>>r1;
cout<<" Ingrese el radio 2==> "; cin>>r2;
}

bool Elipse::esCerrada()
{
cout<<"\t\t";
return true;
}

bool Elipse::ptodentro()
{
double i=0,j=0;
Punto aux;
aux=Punto();
aux=aux.dentro();
cout<<"\n\t\tEl punto = ("<<aux.get_X()<<","<<aux.get_Y()<<")";
if((centro.distancia(aux.get_X(),aux.get_Y())<=r1) ||(centro.distancia(aux.get_X(),aux.get_Y())<=r2))
{
return true;
}
else
{
return false;
}
}

double Elipse::area()
{
double p;
return p=3.14*r1*r2;
}

- Para concluir tengo esta otra clase, que deriva de Elipse : "Circulo.cpp"

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <conio.c>
#include <string.h>
#include "Elipse.cpp"

class Circulo: public Elipse
{
private:
Elipse *super;//me sugirieron que declare un puntero "*super" que apunte a un tipo de dato
//del tipo Figura, para que pueda usar el constructor de Figura!!! -* esta bien!!!
double x,y;
public:
Circulo(char nombre[50],double r1, Punto centro);
Circulo();
void leer();
double area();
bool esCerrada();
/*String toString()*/
bool ptodentro();
double per();
};

Circulo::Circulo(char nombre[50],double r1, Punto centro)
{
super=Elipse(nombre,r1,r1,centro);
}

Circulo::Circulo()
{
super=Elipse();
}
//EN AMBOS CONSTRUCTORES COMO ACCEDO AL CONSTRUCTOR DE LA CLASE PADRE.EN ESTE CASO...AL CONSTRUCTOR DE ELIPSE!!!

void Circulo::leer()
{
centro.leer();
cout<<" Ingrese el radio 1==> "; cin>>r1;
r2=r1;
}

double Circulo::area()
{
return (super.area());
}

bool Circulo::esCerrada()
{
cout<<"\t\t";
return true;
}

bool Circulo::ptodentro()
{
double i=0,j=0;
Punto aux;
aux=Punto();
aux=aux.dentro();
cout<<"\n\t\tEl punto = ("<<aux.get_X()<<","<<aux.get_Y();
if(centro.distancia(aux.get_X(),aux.get_Y())<=r1)
{
return true;
}
else
{
return false;
}
}

double Circulo::per()
{
double p;
return p=2*3.14*(super->getRadio1());
}

- AL FINAL TENGO 4 ARCHIVOS SEPARADOS: "Figura.cpp", "Punto.cpp", "Elipse.cpp" y "Circulo.cpp"
- Originalmente este trabajo lo tengo en JAVA, pero mi profesor tambien lo quiere en c++....MIS DUDAS ESTAN CONTENIDAS
en todo el codigo...AGRADECERIA SU AYUDA YA QUE MI PROFESOR NO QUIERE AYUDARNOS,
COMO QUE NO ES..KOMO PROFESOR DEBERIA APOYAR AL ALUMNO..
- ME DESPIDO...Y GARCIAS ANTICIPADAMENTE POR LA AYUDA POR PEKEÑA QUE SEA......
  #2 (permalink)  
Antiguo 28/11/2007, 09:05
Avatar de Solenbum  
Fecha de Ingreso: noviembre-2007
Mensajes: 45
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Herecnia En C++ - 2

Expon todo mas legible, leer todo el mensaje es un suicidio.

organiza mas, aclara las cosas

pero esto que es
  #3 (permalink)  
Antiguo 01/12/2007, 18:33
 
Fecha de Ingreso: noviembre-2007
Mensajes: 37
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Herecnia En C++ - 2

Bueno Gente.-....en Vista De Que Solembun Solo Gana Mensajes Escribiendo Cosas Demasido Incongruentes (no Se Como Hace Tantos Mensajes, Creo Que Se La Pasa Desanimando A La Gente Que Quiere Aprender Un Poco Mas) Ya Resolvi Mi Problema De Herencia En C++ Gracias A Unos Patas De La Universidad .... Jejeje

Ueno De Todas Maneras Gracias A Las Personas K Lo Han Chekado.a A Kellas Que De Verdad Kisieorna Yudarme Pero No Lo Konsiguieron
Si Desean El Codigo Me Dejan Su Correo Para Enviarselo...

Asta La P`roxima Gente!!!!
  #4 (permalink)  
Antiguo 02/12/2007, 03:11
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Herecnia En C++ - 2

Cita:
Iniciado por INVINCIBLE Ver Mensaje
Bueno Gente.-....en Vista De Que Solembun Solo Gana Mensajes Escribiendo Cosas Demasido Incongruentes (no Se Como Hace Tantos Mensajes, Creo Que Se La Pasa Desanimando A La Gente Que Quiere Aprender Un Poco Mas) Ya Resolvi Mi Problema De Herencia En C++ Gracias A Unos Patas De La Universidad .... Jejeje
Yo no te respondi antes pero pienso exactamente lo mismo que el. Te ayude cuando tu pregunta fue teorica pero no deberias pretender que leamos, analicemos y arreglemos el codigo de tu trabajo (por cierto ya con leer las cabeceras y encontrarme iostream.h conio.h/.c me dan ganas de vomitar). Como le dijiste a otro: mejor investiga en los libros.

Y por favor, escribi como todo el mundo, es molesto e innecesario que uses tantas mayusculas.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:43.