Sie sind auf Seite 1von 9

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE INGENIERIA MECANICA CURSO: MB545 SEMANA09 CLASES, OBJETOS, HERENCIA

Clase: Representa a una entidad genrica y se comporta como un tipo de dato especial que tiene: Atributos. Funcionalidad. Funcionalidad bsica: get para obtener el valor del atributo. set para cambiar el valor del atributo. Funcionalidad adicional: Procesos de clculo, bsqueda, actualizacin, etc. Ejemplos: Punto, TV, Fibonacci, Persona, etc. 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. Ejemplos: Punto a; 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 Ejemplos: Punto3D hereda a la clase Punto TVDigital hereda a la clase TV Cliente hereda a la clase Persona Ejemplos que no justifica herencia: Alumno hereda a la clase Curso Triangulo hereda a la clase Circulo Motor hereda a la clase Fabricante TV x; Fibonacci fibo; Persona p, q;

Elaborado por Ing. Julio Vsquez Paragulla

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE INGENIERIA MECANICA CURSO: MB545 SEMANA09 CLASES, OBJETOS, HERENCIA

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); } }; //En la funcin principal declare objetos para utilizar la funcionalidad. 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; // Coloca valores leidos, en el objeto a.setX(x); a.setY(y); // Muestra informacin del objeto cout<<"x="<<a.getX()<<endl; cout<<"y="<<a.getY()<<endl; cout<<"Distancia ="<<a.distancia()<<endl; _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. Determine el valor de la mayor y menor distancia.

Elaborado por Ing. Julio Vsquez Paragulla

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE INGENIERIA MECANICA CURSO: MB545 SEMANA09 CLASES, OBJETOS, HERENCIA

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; };

En la funcin principal declare un arreglo de objetos de tamao 10 y realice la siguiente funcionalidad:

Ingrese los datos y muestre coordenadas y distancia en forma de tabla. Determine la mayor distancia y los objetos que los tienen.

Elaborado por Ing. Julio Vsquez Paragulla

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE INGENIERIA MECANICA CURSO: MB545 SEMANA09 CLASES, OBJETOS, HERENCIA

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. a) Que retorne el precio en soles de acuerdo al tipo de cambio dado como parmetro. b) Retorne el nombre de la marca (SONIC, LG, SAMSUNG, PANASONIC, OTRO).
class TV { // atributos private: char serie[15]; int marca, tam; double precioD; // funcionalidad public: char * getSerie() { return serie; } void setSerie(char * serie) { strcpy(this->serie,serie); } int getMarca() { return marca; } void setMarca(int marca) { TV:marca = marca; } int getTam() { return tam; } void setTam(int tam) { TV:tam = tam; } double getPrecioD() { return precioD; } void setPrecioD(double precioD) { TV:precioD = precioD; } // funcinalidad adicional double precioS (double tc){ return precioD*tc; } char * nombreMarca(){ switch (marca) { case 1: return "SONY"; case 2: return "LG"; case 3: return "SAMSUNG"; case 4: return "PANASONIC"; default: return "otros" ; } } }

Luego, disee la clase administradora de nombre ArregloTV que considere un arreglo de objetos de tamao 10 y considere las siguientes funciones; agrega, obtiene, tamao, busca(), elimina().

Elaborado por Ing. Julio Vsquez Paragulla

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE INGENIERIA MECANICA CURSO: MB545 SEMANA09 CLASES, OBJETOS, HERENCIA
// 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--; } };

Finalmente, utilice un objeto de tipo ArregloTV en una variable global y a travs de un men de opciones gestionados desde la funcin principal, realice los siguientes procesos:
[1] Nueva, que permita agregar un nuevo televisor evitando series repetidas. [2] Consulta, que muestre todos los atributos de un televisor conociendo su serie. [3] Elimina, que permita eliminar un televisor conociendo su serie. [4] Listar 1, que permita mostrar todos los atributos de todos los televisores. [5] Listar 2, que permita mostrar todos los atributos de los televisores de una misma marca. [6] Listar 3, que muestre todos los atributos de los televisores que tengan el mayor precio en dlares. [0] Salir
// objeto global ArregloTV atv; // prototipos de funciones para administrar menu int menu(); void nueva();

Elaborado por Ing. Julio Vsquez Paragulla

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE INGENIERIA MECANICA CURSO: MB545 SEMANA09 CLASES, OBJETOS, HERENCIA
void void void void void consulta(); elimina(); listar1(); listar2(); listar3();

// funcion principal void main(){ int op; do{ op=menu(); switch(op){ case 1: case 2: case 3: case 4: case 5: case 6: } }while(op!=0); } // desarrollo de prototipos

nueva(); break; consulta(); break; elimina(); break; listar1(); break; listar2(); break; listar3(); break;

Elaborado por Ing. Julio Vsquez Paragulla

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE INGENIERIA MECANICA CURSO: MB545 SEMANA09 CLASES, OBJETOS, HERENCIA

Elaborado por Ing. Julio Vsquez Paragulla

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE INGENIERIA MECANICA CURSO: MB545 SEMANA09 CLASES, OBJETOS, HERENCIA

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)); } } Elaborado por Ing. Julio Vsquez Paragulla

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE INGENIERIA MECANICA CURSO: MB545 SEMANA09 CLASES, OBJETOS, HERENCIA

En la funcin principal declare objetos para utilizar la funcionalidad.

Cambios: 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. a) Una funcin que genere la serie y lo guarde en el arreglo. b) Una funcin que retorne el valor de un trmino de acuerdo a la posicin dada como parmetro. c) Una funcin que retorne la suma de todos los trminos. 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. Luego, disee la clase administradora de nombre ArregloPeliculas que permita realizar un mantenimiento de pelculas y adems una funcin duracionMaxima que determine la duracin mxima de las pelculas de un formato dado a travs de un parmetro. Cree un objeto de tipo ArregloPelculas en una variable global y a travs de un men de opciones gestionados desde la funcin principal, realice los siguientes procesos:
[1] Nueva, que permita ingresar una nueva pelcula evitando cdigos repetidos. [2] Consulta, que muestre todos los atributos de una pelcula conociendo su cdigo. [3] Elimina, que permita eliminar una pelcula conociendo su cdigo. [4] Listar 1, que permita mostrar todos los atributos de todas las pelculas. [5] Listar 2, que permita mostrar todos los atributos de las pelculas de un mismo formato. [6] Listar 3, que muestre todos los atributos de las pelculas de un mismo formato que tengan la duracin mxima. [0] Salir

Elaborado por Ing. Julio Vsquez Paragulla

Das könnte Ihnen auch gefallen