Guia Laboratorio 7

12
1/12 Prof.:Ing. Felix Huari E. Algoritmos y Programación GUIA DE LABORATORIO Nº 7 PROGRAMACION ORIENTADA AL OBJETO OBJETIVOS Al finalizar la presente practica, el estudiante será capaz de poder definir una clase con sus respectivos datos y funciones miembros, incluir constructores y destructores, para finalmente crear objetos y realizar la programación POO. Ejem 1. #include <iostream> #include <stdlib.h> // Declarando la estructura, la misma puede tener datos y funciones miembro struct cuadrado { //datos miembro float lado; //funciones miembro void inicio(float a) {lado=a;} double area() {return lado*lado;} double perimetro() {return 4.0*lado;} double semiperimetro() {return perimetro()/2.0;} }; // Programa principal int main() { cuadrado x; // instanciar un objeto cuadrado flota a; cout “Ingrese un numero:”; cin>>a; x.inicio(a); cout << "Area : " << x.area() << endl; cout << "Perimetro : " << x.perimetro() << endl; cout << "Semiperimetro: "<<x.semiperimetro() << endl; system("PAUSE"); } // fin del programa principal Ejem 2. #include <iostream> #include <stdlib.h> //Declarando la clase class cuadrado { public: void inicio(float a) {lado=a;} double area() {return lado*lado;}

Transcript of Guia Laboratorio 7

Page 1: Guia Laboratorio 7

1/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

GUIA DE LABORATORIO Nº 7

PROGRAMACION ORIENTADA AL OBJETO OBJETIVOS Al finalizar la presente practica, el estudiante será capaz de poder definir una clase con sus respectivos datos y funciones miembros, incluir constructores y destructores, para finalmente crear objetos y realizar la programación POO. Ejem 1. #include <iostream> #include <stdlib.h> // Declarando la estructura, la misma puede tener datos y funciones miembro struct cuadrado {

//datos miembro float lado; //funciones miembro void inicio(float a) {lado=a;} double area() {return lado*lado;} double perimetro() {return 4.0*lado;} double semiperimetro() {return perimetro()/2.0;}

}; // Programa principal int main() {

cuadrado x; // instanciar un objeto cuadrado flota a;

cout “Ingrese un numero:”; cin>>a; x.inicio(a); cout << "Area : " << x.area() << endl; cout << "Perimetro : " << x.perimetro() << endl; cout << "Semiperimetro: "<<x.semiperimetro() << endl; system("PAUSE");

} // fin del programa principal Ejem 2. #include <iostream> #include <stdlib.h> //Declarando la clase class cuadrado { public:

void inicio(float a) {lado=a;} double area() {return lado*lado;}

Page 2: Guia Laboratorio 7

2/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

double perimetro() {return 4*lado;} double semiperimetro(){return perimetro()/2.0;} private: float lado;

}; //Programa principal int main() {

cuadrado x; // x es objeto de la clase cuadrado flota a; cout “Ingrese un numero:”; cin>>a; x.inicio(a); cout << "Area : " << x.area() << endl; cout << "Perimetro : " << x.perimetro() << endl; cout << "Semiperimetro: "<<x.semiperimetro() << endl; system("PAUSE");

}// Fin del programa principal Ejem 3. #include <iostream> #include <stdlib.h> class cuadrado { private:

float lado; // el dato miembrolado es privado public: cuadrado(float a) {lado = a;} // declarando y definiendo un constructor double area() {return lado*lado;} double perimetro() {return 4*lado;} double semiperimetro(){return perimetro()/2.0;}

}; // fin de la clase // Programa principal int main() { flota a;

cout “Ingrese un numero:”; cin>>a; /* Declarando un objeto x de la clase cuadrado y activando el constructor */ cuadrado x(a); cout << "Area : " << x.area() << endl; cout << "Perimetro : " << x.perimetro() << endl; cout << "Semiperimetro: "<<x.semiperimetro() << endl; system("PAUSE");

}// Fin del program principal Ejem 4. #include <iostream> #include <stdlib.h>

Page 3: Guia Laboratorio 7

3/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

class cuadrado { private:

float lado; public: cuadrado() {}; // constructor vacio cuadrado(float a) {lado = a;} // constructor double area() {return lado*lado;} double perimetro() {return 4*lado;} double semiperimetro(){return perimetro()/2.0;}

}; // Fin de la clase //Programa principal int main() { flota n;

cout “Ingrese un numero:”; cin>>n; cuadrado x; // activando constructor vacio x = cuadrado(n); // activando el segundo constructor cout << "Area : " << x.area() << endl; cout << "Perimetro : " << x.perimetro() << endl; cout << "Semiperimetro: "<<x.semiperimetro() << endl; system("PAUSE");

}// Fin del programa principal Ejem 5. #include <iostream> #include <stdlib.h> // muestra el uso del operador de resolucion o ambito :: class cuadrado { private:

float lado; public : cuadrado(){} // constructor vacio cuadrado(float); // constructor con parametros double area(); double perimetro(); double semiperimetro(); ~cuadrado(); // destructor

};//Fin de la clase // usando el operador de resolucion o ambito :: // Definiendo el constructor cuadrado cuadrado :: cuadrado(float a) {

lado = a; } // definiendo el destructor cuadrado cuadrado :: ~cuadrado()

Page 4: Guia Laboratorio 7

4/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

{ cout<<"Objeto cuadrado destruyendose...!" <<endl;

} //Definiendo la funcion miembro Area double cuadrado :: area() {

return lado*lado; } //Definiendo la funcion miembro Perímetro double cuadrado::perimetro() {

return 4*lado; } //Definiendo la funcion miembro semiperimetro double cuadrado :: semiperimetro() {

return perimetro()/2.0; } //Programa principal int main() { cuadrado x; // activando el constructor vacio

flota n; cout “Ingrese un numero:”; cin>>n; x = cuadrado(n); //activando el constructor con parametros cout << "Area : " << x.area() << endl; cout << "Perimetro : " << x.perimetro() << endl; cout << "Semiperimetro: "<<x.semiperimetro() << endl; system("PAUSE");

} // Fin del programa principal Ejem 6. #include <iostream> #include <stdlib.h> // Declarando una clase class TipoRecta { private: float x1,x2,y1,y2,m1,m2; public: void Lectura(); void Pendiente(int); void VerEcuacion(); int VerificaTipoRecta(); }; //Programa principal int main()

Page 5: Guia Laboratorio 7

5/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

{ TipoRecta P; int k; cout<<"DATOS PARA LA RECTA L1\n"; P.Lectura(); P.Pendiente(0); P.VerEcuacion(); cout<<"DATOS PARA LA RECTA L2\n"; P.Lectura(); P.Pendiente(1); P.VerEcuacion(); k=P.VerificaTipoRecta(); if(k==0) cout<<"L1 y L2 son paralelas\n"; else if(k==1) cout<<"L1 y L2 son perpendiculares\n"; else cout<<"L1 y L2 no son paralelas ni perpendiculares\n"; system("PAUSE"); } // fin del programa principal //Definicion de las funciones miembro de la clase void TipoRecta::Lectura() { cout<<"Coordenada de eje x1:";cin>>x1; cout<<"Coordenada de eje y1:";cin>>y1; cout<<"Coordenada de eje x2:";cin>>x2; cout<<"Coordenada de eje y2:";cin>>y2; } void TipoRecta::Pendiente(int i) { if(i==0) m1=(y2-y1)/(x2-x1); else m2=(y2-y1)/(x2-x1); } void TipoRecta::VerEcuacion() { cout<<"\nLa Recta es:(Y-"<<y1<<")="<<m1<<"(X-"<<x1<<")"<<endl; } int TipoRecta::VerificaTipoRecta() { if(m1==m2) return 0; else if(m1*m2==-1)

Page 6: Guia Laboratorio 7

6/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

return 1; else return 2; } Ejem 7 #include <iostream> #include <stdlib.h> //Muestra el uso de las funciones set y get //Declarando la clase class punto { private:

int x; int y; public : void setX(int); //establecer coordenada X void setY(int); //establecer coordenada Y int getX(); // devolver coordenada X int getY(); // devolver coordenada Y

};// Fin de la clase //Definiendo las funciones miembros //Definiendo la funcion miembro setX void punto :: setX(int a) {

x = a; } //Definiendo la funcion miembro setY void punto :: setY(int b) {

y = b; } //Definiendo la funcion miembro getX int punto::getX() {

return x; } //Definiendo la funcion miembro getY int punto::getY() {

return y; } //Progrma principal int main() {

punto p; // creando el objeto punto int a,b;

Page 7: Guia Laboratorio 7

7/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

cout<<”Ingrese las cordenada de un punto (a,b):”;cin>>a>>b; p.setX(a); p.setY(b); cout<<"La coordenada es P(“<<p.getX()<<”,”<<p.getY()<<”)”<< endl; system("PAUSE");

}// Fin de progrma principal Ejem 8. #include <iostream> #include <stdlib.h> #include <iomanip.h> #define LINEA "-----------------" //Declarando la clase class complex { private:

float real; float imag; public : complex() {} // constructor vacio complex(float a,float b); // constructor con parametros void print(); //Funcion miembro suma es amiga friend complex suma(complex x,complex y);

};// Fin de la clase //Definiendo las funciones miembro de la clase //Definiendo el constructor complex :: complex(float a,float b) {

real=a; imag=b;

} //Definendo la funcion miembro print void complex :: print() {

cout<<setprecision(2)<<setw(5)<<real<<" + "<<setprecision(2)<<setw(5)<<imag<<"i"<<endl; } //definicion de la funcion amiga complex suma(complex x,complex y) {

complex z; z.real=x.real+y.real; z.imag=x.imag+y.imag; return z;

Page 8: Guia Laboratorio 7

8/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

} //Programa principal int main() { float a,b,c,d;

cout<<”Coordenadas del primer punto A (a,b):”;cin>>a>>b; cout<<”Coordenadas del segundo punto B (a,b):”;cin>>c>>d; complex A(a,b), B(c,d); complex C; A.print(); cout<<"\t\t+" <<endl; B.print(); C=suma(A,B); cout<<LINEA<< endl; C.print();cout<<endl; system("PAUSE");

} Ejem 9. #include <iostream> #include <stdlib.h> #define BIRTH “Feliz Cumpleaños…..” // un ejemplo sencillo de una clase class Dia { public:

void print(); int mes; int dia;

};// Fin de la clase void Dia :: print() // Definicion de la funcion miembro print {

cout<<" mes = "<<mes<<" dia = "<<dia<<endl; } //Programa principal int main() {

Dia hoy, happy; // objetos de la clase Dia cout<<"Ingrese el dia de hoy "; cin>>hoy.dia; cout<<"Ingrese el dia de mes "; cin>>hoy.mes; cout<<"Ingrese el dia y mes de su cumpleaños "; cin>>happy.dia>>happy.mes; cout<<"El dia de hoy es: ";hoy.print(); cout<<"El dia de su cumpleaños es: "; happy.print(); if (hoy.dia == happy.dia && hoy.mes == happy.mes)

cout<<BIRTH<<endl; else

cout<<"Que tengas un lindo dia.....\n"<<endl;

Page 9: Guia Laboratorio 7

9/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

system("PAUSE"); } //Fin de programa principal Ejem 10. /*Uno de los canones de la POO es el ocultamiento de la información. El siguiente ejemplo consta de dos archivos: el primero un archivo header TIME1.H donde se declara la clase TIME para objetos que guarden hora, minuto, segundo y un archivo fuente TIME1.CPP donde se encuentra las definiciones de las funciones miembro de la clase TIME y la función main para probar la clase.*/ // Archivo time1.h #ifndef TIME1_H #define TIME1_H // Declaracion de la clase time class Time { int hora; // 0 - 23

int minuto; // 0 – 59 int segundo; // 0 – 59 public: Time(); // constructor void setTime(int, int , int); // establecer hora, minuto, segundo void printUniversal(); // imprime la hora en formato universal void printStandard(); // imprime la hora en formato estandar

};//Fin de la clase #endif // Archivo time1. #include <iostream> #include <stdlib.h> #include "time1.h" /* El constructor Time inicializa a cero los datos miembro, asegura que todos los objetos de Time inicien en un estado consistente */ //Definiendo las funciones miembro de la clase //Definiendo el constructor Time :: Time() { hora=0;

minuto=0; segundo=0;

} /* Establecer un nuevo valor de hora para Time en formato universal. Realiza pruebas de validez sobre los datos. Establece a cero los valores no validos */ void Time :: setTime(int h,int m, int s) //Definiendo la funcion miembro setTime {

hora = ( h >= 0 && h < 24 )? h :0; minuto = ( m >= 0 && m < 60 )? m :0; segundo = ( s >= 0 && h < 60 )? s :0;

Page 10: Guia Laboratorio 7

10/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

} // Definiendo la funcion miembro printUniversal void Time :: printUniversal() { cout<<(hora < 10 ? "0" : "")<<hora<<":"<<(minuto < 10 ? "0" : "")<<minuto

<<":"<<(segundo<10 ? "0":"")<<segundo; } //Definiendo la funcion miembro printStandard void Time :: printStandard() { cout<<((hora == 0 || hora == 12) ? 12 : hora % 12)

<<":"<<(minuto < 10 ? "0" : "")<<minuto<<":"<<(segundo < 10 ? "0" : "") <<segundo<<(hora < 12 ? " AM":" PM");

} //Programa principal int main() { int mh,mm,ms;

Time t; // crea el objeto t de la clase Time cout<<"La hora universal inicial es: "; t.printUniversal(); cout<<"\nLa hora estandar inicial es: "; t.printStandard(); // utilizando setTime() cout<<"\nIngrese la hora (hh,mm,ss) ";cin>>mh>>mm>>ms; t.setTime(mh,mm,ms); cout<<"\n\nLa hora universal despues de setTime es: "; t.printUniversal(); cout<<"\nLa hora estandar despues de setTime es: "; t.printStandard(); // intentando valores no validos para el objeto t t.setTime(100,100,100); cout<<"\n\nDespues de intentar ingresar valores no validos:\n" <<"Hora universal: "; t.printUniversal(); cout<<"\nHora estandar: "; t.printStandard(); cout<<endl<<endl; system("PAUSE");

}

PROBLEMAS PROPUESTOS 1. Escribir un programa que permita implementar la clase llamada Number, de tal

manera que se pueda escribir un numero en letras y luego en numeración romana.

Number Numero Letras[80] VerNumeroLetras() VerNumeroRomano()

Page 11: Guia Laboratorio 7

11/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

2. Escribir un programa que permita realizar la operaciones básicas con 2

matrices que almacenan números enteros. Las operaciones a consignar son la suma, resta , transpuesta. Para ello debemos ingresar el orden de la matriz.

3. Una empresa tiene una fuerza de ventas de N vendedores, y por cada

vendedor se ingresan los siguientes datos codigo, apellidos, nombres, las ventas diarias hechas (5 dias), se pide implementar un programa usando una clase para realizar lo siguiente:

• Escribir los datos de los N vendedores incluido las ventas totales semanal.

• Escribir los datos de los N vendedores incluido las ventas totales diarias • Escribir los datos ordenados alfabéticamente • Escribir los datos ordenados por las ventas totales semanales.

4. Implementar una clase llamada TipoNumero, de tal manera que pueda

verificar si es un numero es primo, es un numero perfecto, capicúa. Diseñe la

Matrices n,m A[N][M], B[N][M],C[N][M] Suma() Resta() Transpuesta() VerMatriz()

DatoAlumno m,n Cod[8] Ape[25] Nom[25] Ventas[N][M] CapturaDatos() VtaTotalSemanal() VtaTotalDiaria() OrdenaAlfa() OrdenaTotalSemanal() VerListadoInicial() VerListadoFinal()

Page 12: Guia Laboratorio 7

12/12

Prof.:Ing. Felix Huari E. Algoritmos y Programación

clase e incluya los datos y funciones miembro necesarios para posteriormente escribir el programa.

5. Implementar un programa que permita validar la fecha, para ella defina una clase llamada Fecha con los datos y funciones miembros necesarios. Además el programa debe mostrar la fecha del día siguiente.

6. Implementar una clase llamada TarjetaBingo, de tal manera que genere una cartilla de bingo, los números del bingo deben estar comprendido entre 1 y 50. Incluir los datos y funciones miembros necesarios.

7. Implementar un programa utilizando clases de tal manera que simule una hoja del Excel (primera pantalla), de tal manera que al pulsar las teclas direccionales se desplace el puntero de celda. Si estamos en la celda A1 al pulsar flecha arriba o flecha a izquierda no debe avanzar el puntero de celda. Considere las funciones y datos necesarios necesarias.