jueves, 24 de septiembre de 2015

Ejercicio 9 Herencia

Cree una clase base llamado punto que consiste de una coordenada x y una coordenada y. A partir de esta clase derive una clase llamada Circulo que tenga un miembro de datos adicional llamado radio. Para esta clase derivada los miembros x y y representan las coordenadas del centro de un circulo. Los miembros de la function de la primera clase deberán consistir de un constructor, una function area llamada area que devuelva cero y una function de distancia que devuelva la distancia entre dos puntos, donde distancia = raiz cuadrada sqrt((x2-x1)^2 +(y2-y1)^2))
Además, la clase derivada deberá tener un constructor y una function que lo anule llamada area que devuelva el area del circulo.
Problema propuesto del Libro C++ para ingenieria y ciencias Gary J. Brinson ejercicios 10.6 problema 5 pag. 592

Codificación CodeBlocks

#include <iostream>
#include <cmath>
using namespace std;
class Punto
{
protected:
    int x;
    int y;
public:
    Punto(int =0, int=0);
    void estXY(int,int);
    void estableceX(int);
    void estableceY(int);
    int obtenerX();
    int obtenerY();
  virtual  double area();
    double distancia (Punto ,Punto);
};
Punto::Punto(int px, int py)
       {
          x=px;
          y=py;
       }
void Punto::estXY(int px,int py)
{
    x=px;
    y=py;
}
void Punto::estableceX(int px)
{
    x=px;
}
void Punto::estableceY(int py)
{
    y=py;
}
int Punto::obtenerX()
{
    return x;
}
 int Punto::obtenerY()
{
    return y;
}
double Punto::area()
{
    return 0;
}
double Punto::distancia(Punto a, Punto b)
{
    int px1,px2,py1,py2;
    double res,dist;
    px1=a.obtenerX();
    px2=b.obtenerX();
    py1=a.obtenerY();
    py2=b.obtenerY();
    res=pow((px2-px1),2)+ pow((py2-py1),2);
    dist=sqrt(res);
    return dist;
}
class Circulo:public Punto
{
    protected:
    double radio;
    public:
        Circulo(double =1.0, int =0, int =0);
       void estRadio(double r);
       double obtenerRadio();
      virtual double area();
};
Circulo::Circulo(double rad,int px,int py)
{
    radio=rad;
    x=px;
    y=py;
}
void Circulo:: estRadio(double r)
{
    radio=r;
}
double Circulo::obtenerRadio()
{
    return radio;
}
 double Circulo::area()
{
    return 3.1416*radio*radio;
}
int main()
{
    Punto p1(4,5);
    Punto p2(8,10);
    Circulo c1;
    c1.estRadio(10);
cout<<"Area Circulo es : "<<c1.area()<<endl;
cout<<"El area del punto 1 es "<<p1.area()<<endl;
cout<<"La distancia entre Punto 1 y punto 2 es : "<<c1.distancia(p1,p2)<<endl;

    return 0;
}

No hay comentarios:

Publicar un comentario