![]() |
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...... |
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 |
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!!!! |
Re: Herecnia En C++ - 2 Cita:
Y por favor, escribi como todo el mundo, es molesto e innecesario que uses tantas mayusculas. |
| La zona horaria es GMT -6. Ahora son las 03:31. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.