Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Semana 09
Semana 09
Clase:
Representa a una entidad genrica y se comporta como un tipo de dato especial que tiene:
Atributos.
Funcionalidad.
Funcionalidad bsica:
Funcionalidad adicional:
Objeto:
Es una instancia o ejemplar de una clase y se comporta como una variable cuyo tipo de dato es
una clase:
Tiene una copia de los atributos, para su uso exclusivo, al momento de crearse
Utiliza la funcionalidad pblica de la clase a la que pertenece.
Herencia:
A partir de una clase existente se crea una clase nueva heredando todos los atributos y
funcionalidad de la clase existente para adicionarle/cambiarle atributos y/o funcionalidad. A la
clase existente se le denomina Padre, Base, Superclase. A la clase que hereda se le denomina
Hija, Derivada, Subclase respectivamente.
La herencia se justifica siempre que la clase hija represente una extensin de la clase padre. Para
ello se debe aplicar la frase es un o viene de
PROBLEMA 1:
Disee una clase de nombre Punto que tenga como atributo sus coordenadas en el plano, la
funcionalidad bsica y un mtodo/funcin adicional que calcule la distancia al centro del origen.
class Punto {
// atributos
private:
double x, y;
public:
// funcionalidad basica
double getX(){return x;}
void setX(double nx) {x=nx;}
double getY(){return y;}
void setY(double ny){y=ny;}
// funcionalidad adicional
double distancia(){
return sqrt(x*x+y*y);
}
};
void main(){
// Declara objeto
Punto a;
// lee datos
double x, y;
cout<<"Ingrese valor de x: "; cin>>x;
cout<<"Ingrese valor de y: "; cin>>y;
_gettch();
}
Cambios:
Considere una funcin para leer los datos y otra funcin para mostrar la
informacin dentro de la clase y reescriba la funcin principal.
Declare un arreglo de objetos de tamao 10, ingrese los datos y muestre sus
coordenadas y su distancia en forma de tabla.
PROBLEMA 2:
Aplique herencia y cree una nueva clase de nombre Punto3D que herede a la clase
Punto. Considere como nuevo atributo a la coordenada z.
// herencia
class Punto3D: public Punto {
// atributos
private:
double z;
public:
// funcionalidad basica
double getZ(){return z;}
void setZ(double nz) {z=nz;}
// funcionalidad adicional
double distancia(){
return sqrt(getX()*getX()+getY()*getY()+z*z);
}
void lee();
void imprime();
};
void Punto3D::lee(){
Punto::lee();
cout<<"Ingrese valor de z: "; cin>>z;
}
void Punto3D::imprime(){
cout<<"x="<<getX()<<endl;
cout<<"y="<<getY()<<endl;
cout<<"z="<<getZ()<<endl;
cout<<"Distancia ="<<distancia()<<endl;
};
PROBLEMA 3:
Disee una clase de nombre TV que tenga como atributos nmero de serie, marca,
tamao y precio en dlares, con la funcionalidad bsica y los siguientes
mtodos/funciones adicionales.
// clase administradora
class ArregloTV{
private:
TV a[10];
int n;
public:
// constructor
ArregloTV(){
n=0;
}
// metodos de administracion
void agrega(TV tv){
a[n]=tv;
n++;
}
TV obtiene(int i){
return a[i];
}
int tamao(){ return n:}
int busca(char * serie){
for(int i=0; i<n; i++){
if(strcmp(a[i].getSerie(),serie)==0)
return i;
}
return -1;
}
void elimina(int p){
for(int i=p; i<n; i++)
a[i]=a[i+1];
n--;
}
};
// objeto global
ArregloTV atv;
void consulta();
void elimina();
void listar1();
void listar2();
void listar3();
// funcion principal
void main(){
int op;
do{
op=menu();
switch(op){
case 1: nueva(); break;
case 2: consulta(); break;
case 3: elimina(); break;
case 4: listar1(); break;
case 5: listar2(); break;
case 6: listar3(); break;
}
}while(op!=0);
}
// desarrollo de prototipos
PROBLEMA 4:
Aplique herencia y cree una nueva clase de nombre TVDigital que herede a la clase
TV. Considere como nuevos atributos: nro. de canales.
Realice los mismos procesos pero con un arreglo de televisores digitales.
PROBLEMA 5:
Disee una clase de nombre triangulo que tenga como atributos tres puntosa en el plano,
funcionalidad bsica y la siguiente funcionalidad adicional.
a) El valor de cada uno de los lados.
b) Permetro.
c) rea.
class Triangulo {
// Atributos
prvate:
Punto a, b, c;
// funcionalidad
public:
// Funcionalidad bsica
Punto getA() { return a; }
void setA(Punto a) { this->a = a; }
Punto getB() { return b; }
void setB(Punto b) { this->b = b; }
Punto getC() { return c; }
void setC(Punto c) { this->c = c; }
// funcionalidad adicional
double ladoAB (){
return sqrt(Math.pow(a.getX()-b.getX(), 2)+
pow(a.getY()-b.getY(), 2));
}
double ladoAC (){
return sqrt(Math.pow(a.getX()-c.getX(), 2)+
pow(a.getY()-c.getY(), 2));
}
double ladoBC (){
return sqrt(Math.pow(b.getX()-c.getX(), 2)+
pow(b.getY()-c.getY(), 2));
}
public double perimetro (){
return ladoAB()+ladoAC()+ladoBC();
}
double area(){
double sp= perimetro()/2;
double m = ladoAB();
double p = ladoAC();
double q = ladoBC();
return sqrt(sp*(sp-m)*(sp-p)*(sp-q));
}
}
Declare un arreglo de objetos de tamao 10, ingrese los datos y muestre sus
datos en forma de tabla.
Del arreglo, determine el mayor permetro y los objetos que los tienen.
PROBLEMA 6:
Disee una clase de nombre Fibonacci que tenga como atributos un arreglo de enteros
de tamao 100 y un contador n que represente el nmero de trminos. Haga la
funcionalidad bsica y la siguiente funcionalidad adicional.
PROBLEMA 7:
Disee la clase de nombre Pelicula que tiene como atributos privados: cdigo, formato,
titulo, duracin en minutos y ao de estreno. El formato puede ser DVD, SVCD, VCD y
DIVX.