Sie sind auf Seite 1von 18

GUIA DE LABORATORIO Algoritmos y Programacion

Cu. Noviembre 2009

PROGRAMACION ORIENTADA AL OBJETO 1. #include <iostream> #include <stdlib.h> using namespace std; //Una struct puede tener datos y funcin miembro //En una struct el acceso a datos miembros es pblico 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;} }; int main() // class1.cpp { cuadrado x; // instanciar un objeto cuadrado float a = 4.5; x.inicio(a); cout << "Area : " << x.area() << endl; cout << "Perimetro : " << x.perimetro() << endl; cout << "Semiperimetro: "<<x.semiperimetro() << endl; system("PAUSE"); return 0; } 2. #include <stdlib.h> #include <iostream> using namespace std; // Funciones miembro // Una clase en clase (class) en C++ evoluciona a partir de la Struct. // El acceso a los datos miembros de una clase es privado. class cuadrado { public: //funciones miembro void inicio(float a) {lado=a;} double area() {return lado*lado;} double perimetro() {return 4*lado;}

double semiperimetro(){return perimetro()/2.0;} private: float lado; }; int main( ) // class3.cpp { float a = 4.5; /* 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"); return 0; } 3. #include <stdlib.h> #include <iostream> using namespace std; class cuadrado { public: //Observe que el constructor lleva el mismo nombre de la clase cuadrado(float a) {lado = a;} // constructor double area() {return lado*lado;} double perimetro() {return 4*lado;} double semiperimetro(){return perimetro()/2.0;} private: float lado; }; int main() // class3.cpp { float a = 4.5; /* 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"); return 0; }

4. #include <stdlib.h> #include <iostream> using namespace std; class cuadrado { public: cuadrado() {}; // constructor vaco cuadrado(float a) {lado = a;} // constructor alternativo double area() {return lado*lado;} double perimetro() {return 4*lado;} double semiperimetro(){return perimetro()/2.0;} private: float lado; }; int main() // class31.cpp { float a = 4.5; cuadrado x; // activando constructor vacio x = cuadrado(a); // activando el segundo constructor cout << "Area : " << x.area() << endl; cout << "Perimetro : " << x.perimetro() << endl; cout << "Semiperimetro: "<<x.semiperimetro() << endl; system("PAUSE"); return 0; } 5. #include <stdlib.h> #include <iostream> using namespace std; // muestra el uso del operador de resolucin o mbito :: class cuadrado { public : cuadrado(){} // constructor vaco cuadrado(float); // constructor definido por el usuario double area(); double perimetro(); double semiperimetro(); ~cuadrado(); // destructor private: float lado; };

// usando el operador de resolucin o mbito :: // observe que primero va el nombre de la clase y luego el de la funcin cuadrado :: cuadrado(float a) { lado = a; } cuadrado :: ~cuadrado() { cout<<"Objeto cuadrado destruyendose...!" <<endl; } //observe que primero va el tipo de dato que retorna, luego el nombre //de la clase y despus el nombre de la funcin double cuadrado :: area() { return lado*lado; } double cuadrado::perimetro() { return 4*lado; } double cuadrado :: semiperimetro() { return perimetro()/2.0; } int main( ) // class4.cpp { cuadrado x; // activando el constructor vaco float a = 4.5; x = cuadrado(a); //activando el constructor del usuario cout << "Area : " << x.area() << endl; cout << "Perimetro : " << x.perimetro() << endl; cout << "Semiperimetro: "<<x.semiperimetro() << endl; system("PAUSE"); return 0; } 5. /* Objetivo: Una estructura cilindro: Una estructura puede tener datos miembros y funciones miembros En una estructura los datos y funciones miembro son publicas */ #include <iostream>

#include <math.h> using namespace std; struct cilindro { // datos miembros float radio; float alt; // funciones miembros void inicio(float r, float a) { radio = r; alt = a; } double areaLateral() { return 2*M_PI*radio*alt; } double areaTotal() { return 2*M_PI*radio*(alt + radio); } double volumen(){ return M_PI*radio*radio*alt; } }; int main() // cilindro_1.cpp { float r, h; cout<<"Ingrese radio y altura: "; cin>>r>>h; cilindro cili; cili.inicio(r,h); cout<<"Area Lateral : "<<cili.areaLateral()<<endl; cout<<"Area Total : "<<cili.areaTotal()<<endl; cout<<"Volumen : "<<cili.volumen()<<endl; system("PAUSE"); return 0; } 6. /* Objetivo: Una clase cilindro En general en una clase los datos son privados y las funciones son Publicas */ #include <iostream> #include <math.h> using namespace std; class cilindro { private: // datos miembros float radio; float alt; public: // funciones miembros void inicio(float r, float a) { radio = r; alt = a; } double areaLateral() { return 2*M_PI*radio*alt; } double areaTotal() { return 2*M_PI*radio*(alt + radio); } double volumen(){ return M_PI*radio*radio*alt; } };

int main() // cilindro_2.cpp { float r, h; cout<<"Ingrese radio y altura: "; cin>>r>>h; cilindro cili; cili.inicio(r,h); cout<<"Area Lateral : "<<cili.areaLateral()<<endl; cout<<"Area Total : "<<cili.areaTotal()<<endl; cout<<"Volumen : "<<cili.volumen()<<endl; system("PAUSE"); return 0; } 7. /* Objetivo: Una clase cilindro con funciones set y get set = establecer, poner, colocar get = obtener, recuperar, recibir */ #include <iostream> #include <math.h> using namespace std; class cilindro { private: // datos miembros float radio; float alt; public: // funciones miembros void setDatos(float r, float a) { radio = r; alt = a; } double getAreaLateral() { return 2*M_PI*radio*alt; } double getAreaTotal() { return 2*M_PI*radio*(alt + radio); } double getVolumen(){ return M_PI*radio*radio*alt; } }; int main() // cilindro_3.cpp { float r, h; cout<<"Ingrese radio y altura: "; cin>>r>>h; cilindro cili; cili.setDatos(r,h); cout<<"Area Lateral : "<<cili.getAreaLateral()<<endl; cout<<"Area Total : "<<cili.getAreaTotal()<<endl; cout<<"Volumen : "<<cili.getVolumen()<<endl;

system("PAUSE"); return 0; } 8. /* Objetivo: Una clase cilindro con funciones constructoras. Un constructor tiene el mismo nombre de su clase. Una funcion constructora es una funcion en sobrecarga. */ #include <iostream> #include <math.h> using namespace std; class cilindro { private: // datos miembros float radio; float alt; public: // funciones miembros cilindro() { radio = 0; alt = 0;}; // constructor por defecto cilindro(float r, float a) { radio = r; alt = a; }//constructor alternativo double getAreaLateral() { return 2*M_PI*radio*alt; } double getAreaTotal() { return 2*M_PI*radio*(alt + radio); } double getVolumen(){ return M_PI*radio*radio*alt; } }; int main() // cilindro_4.cpp { cilindro c; // instanciar constructor pr defecto cout<<"Area Lateral : "<<c.getAreaLateral()<<endl; cout<<"Area Total : "<<c.getAreaTotal()<<endl; cout<<"Volumen : "<<c.getVolumen()<<endl; float r, h; cout<<"Ingrese radio y altura: "; cin>>r>>h; cilindro cili(r,h); // instanciar constructor alternativo cout<<"Area Lateral : "<<cili.getAreaLateral()<<endl; cout<<"Area Total : "<<cili.getAreaTotal()<<endl; cout<<"Volumen : "<<cili.getVolumen()<<endl; system("PAUSE"); return 0; } 9. /* Objetivo: Una clase cilindro con funciones constructoras y destructor (1)por defecto, (2) alternativo, (3) de copia */ #include <iostream>

#include <math.h> using namespace std; class cilindro { private: // datos miembros float radio; float alt; public: // funciones miembros // constructor por defecto cilindro() { radio = 0; alt = 0;} //constructor alternativo cilindro(float r, float a) { radio = r; alt = a; } // constructor de copia cilindro( cilindro &c) { radio = c.radio; alt = c.alt; } // destructor ~cilindro() { cout<<"Objeto destruyendose...!"<<endl; } double getAreaLateral() { return 2*M_PI*radio*alt; } double getAreaTotal() { return 2*M_PI*radio*(alt + radio); } double getVolumen(){ return M_PI*radio*radio*alt; } }; int main() // cilindro_5.cpp { cilindro c; // instanciar constructor pr defecto cout<<"Usando constructor por defecto"<<endl; cout<<"Area Lateral : "<<c.getAreaLateral()<<endl; cout<<"Area Total : "<<c.getAreaTotal()<<endl; cout<<"Volumen : "<<c.getVolumen()<<endl; float r, h; cout<<"\nUsando constructor alternativo"<<endl; cout<<"Ingrese radio y altura: "; cin>>r>>h; cilindro cili(r,h); // instanciar constructor alternativo cout<<"Area Lateral : "<<cili.getAreaLateral()<<endl; cout<<"Area Total : "<<cili.getAreaTotal()<<endl; cout<<"Volumen : "<<cili.getVolumen()<<endl; cilindro cili2(cili); // instanciar constructor de copia cout<<"\nUsando constructor de copia"<<endl; cout<<"Area Lateral : "<<cili2.getAreaLateral()<<endl; cout<<"Area Total : "<<cili2.getAreaTotal()<<endl; cout<<"Volumen : "<<cili2.getVolumen()<<endl; cili2.~cilindro(); // llamar al destructor system("PAUSE"); return 0; }

10. /* Objetivo: Una clase cilindro Utiliza el operador de Resolucion o ambito :: */ #include <iostream> #include <math.h> using namespace std; class cilindro { private: // datos miembros float radio; float alt; public: // funciones miembros // constructor por defecto cilindro(); //constructor alternativo cilindro(float r, float a); // constructor de copia cilindro( cilindro &c); // destructor ~cilindro(); double getAreaLateral(); double getAreaTotal(); double getVolumen(); }; // constructor por defecto cilindro :: cilindro() { radio = 0; alt = 0; } //constructor alternativo cilindro :: cilindro(float r, float a) { radio = r; alt = a; } // constructor de copia cilindro :: cilindro( cilindro &c) { radio = c.radio; alt = c.alt; }

// destructor cilindro :: ~cilindro() { cout<<"Objeto destruyendose...!"<<endl; } double cilindro :: getAreaLateral() { return 2*M_PI*radio*alt; } double cilindro :: getAreaTotal() { return 2*M_PI*radio*(alt + radio); } double cilindro :: getVolumen() { return M_PI*radio*radio*alt; } int main() // cilindro_5_A.cpp { cilindro c; // instanciar constructor pr defecto cout<<"Usando constructor por defecto"<<endl; cout<<"Area Lateral : "<<c.getAreaLateral()<<endl; cout<<"Area Total : "<<c.getAreaTotal()<<endl; cout<<"Volumen : "<<c.getVolumen()<<endl; float r, h; cout<<"\nUsando constructor alternativo"<<endl; cout<<"Ingrese radio y altura: "; cin>>r>>h; cilindro cili(r,h); // instanciar constructor alternativo cout<<"Area Lateral : "<<cili.getAreaLateral()<<endl; cout<<"Area Total : "<<cili.getAreaTotal()<<endl; cout<<"Volumen : "<<cili.getVolumen()<<endl; cilindro cili2(cili); // instanciar constructor de copia cout<<"\nUsando constructor de copia"<<endl; cout<<"Area Lateral : "<<cili2.getAreaLateral()<<endl; cout<<"Area Total : "<<cili2.getAreaTotal()<<endl; cout<<"Volumen : "<<cili2.getVolumen()<<endl; cili2.~cilindro(); // llamar al destructor system("PAUSE"); return 0; } 11. #include <iostream> #include <stdlib.h> using namespace std;

// Muestra el uso de las funciones set y get // Las funciones set establecen valores y las funciones get ///obtiene y devuelve valores class punto { public : void setX(int); //establecer coordenada X void setY(int); //establecer coordenada Y int getX(); // devolver coordenada X int getY(); // devolver coordenada Y private: int x; int y; }; void punto :: setX(int a) { x = a; } void punto :: setY(int b) { y = b; } int punto::getX() { return x; } int punto::getY() { return y; } int main() // class5.cpp { punto p2; // objeto punto p2.setX(3); p2.setY(2); cout << "coordenada X : " << p2.getX() << endl; cout << "coordenada Y : " << p2.getY() << endl; system("PAUSE"); return 0; } 12. #include <iostream> #include <stdlib.h>

#include <iomanip> using namespace std; #define LINEA "-----------------" class complex { public : complex() {} // constructor complex(float a,float b); // constructor void print(); //funcin amiga de la clase complex friend complex suma(complex x,complex y); private: float real; float imag; }; complex :: complex(float a,float b) { real=a; imag=b; } 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)//no se usa el operador de resolucin { complex z; z.real=x.real+y.real; z.imag=x.imag+y.imag; return z; } int main() // class6.cpp { complex x(1.0,3.0), y(2.0,1.0); complex z; x.print(); cout<<"\t\t+" << endl; y.print(); z=suma(x,y); cout<<LINEA<< endl; z.print(); cout<<endl;

system("PAUSE"); return 0; } 13. #include <iostream> #include <stdlib.h> using namespace std; // un ejemplo sencillo de una clase class Dia{ public: void print(); int mes;//pblico int dia;//pblico }; void Dia :: print() { cout<<" mes = "<<mes<<" dia = "<<dia<<endl; } int main() //dia2.cpp { 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 cumpleaos "; cin>>happy.dia>>happy.mes; cout<<"El dia de hoy es: "; hoy.print(); cout<<"El dia de su cumpleaos es: "; happy.print(); if (hoy.dia == happy.dia && hoy.mes == happy.mes) cout<<"FELIZ CUMPLEAOS...!!!"<<endl; else cout<<"Que tengas un lindo dia!"<<endl; cout<<endl; system("PAUSE"); return 0; } 14. Uno de los cnones de la POO es el ocultamiento de la informacin. 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 funcin main para probar la clase.I // Archivo time1.h // Declaracin de la clase time #ifndef TIME1_H // si no est definido TIME1_H #define TIME1_H // definir TIME1_H // Declaracin del tipo de dato abstracto 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 }; #endif // Archivo time1.cpp // Definicion de las funciones miembro de la clase Time #include <iostream> #include <stdlib.h> #include "time1.h" using namespace std; // El constructor Time inicializa a cero los datos miembro // Asegura que todos los objetos de Time inicien en un estado consistente Time :: Time( ) {hora=minuto=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) { hora = ( h >= 0 && h < 24 )? h :0; minuto = ( m >= 0 && m < 60 )? m :0; segundo = ( s >= 0 && h < 60 )? s :0; } // Imprime Time en formato universal void Time :: printUniversal() { cout<<(hora < 10 ? "0" : "")<<hora<<":"<<(minuto < 10 ? "0" : "")<<minuto; } // Imprime Time en formato estndar void Time :: printStandard()

{ cout<<((hora == 0 || hora == 12) ? 12 : hora % 12) <<":"<<(minuto < 10 ? "0" : "")<<minuto <<":"<<(segundo < 10 ? "0" : "")<<segundo <<(hora < 12 ? " AM":" PM"); } // Controlador que prueba la clase Time int main() // time1.cpp { Time t; // instancia 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() t.setTime(15,27,16); 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"); return 0; }

Ejercicios Propuestos 1. Tomando como referencia los programas ejemplos del 1 al 5; escriba programas similares para definir y probar una clase Rectngulo, una clase Triangulo y una clase Crculo. En cada caso implemente las funciones miembro o mtodos pertinentes. 2. Implemente un programa para una clase punto3D para objetos punto en tres dimensiones. 3. A partir del programa del ejemplo 8, haga que los datos miembro sean privados considere adems que se debe tener en cuenta el ao. Aada las funciones miembro necesarias a fin de que su clase funcione. 4. Escriba un programa que implemente la clase minicomponente, que tenga como datos miembros. 5. Escribir el cdigo de los mtodos de la clase calculadora: class Calculadora { private: // primer operando float n1; // segundo operando float n2; // operador char op; // almacena los resultados de las operaciones float memoria[N]; // cantidad de valores almacenados en memoria int nmem; public: // constructor Calculadora( ); // constructor Calculadora( float a, float b, char o ); // destructor ~Calculadora( ); // ingresa los operandos y el operador void ingresar( ); // calcula, imprime y almacena el resultado de la operacin void calcular( ); // asigna valor a n1 void setn1( float a ); // asigna valor a n2 void setn2( float b ); // asigna valor a op void setop( char o ); // obtiene el valor de n1 float getn1( ); // obtiene el valor de n2 float getn2( ); // obtiene el valor de op char getop( ); // imprime el tipo de operacin realizada

void operacion( ); // elimina los valores almacenados en memoria void limpiarmemoria( ); }; 6. Escriba cdigo para el mtodo de la clase minicomponente: #include <iostream> #include <stdlib.h> using namespace std; const int MAXVOL = 30; // mximo nivel de volumen class minicomponente { private: float emisora; char marca[40];// marca del minicomponente float emisoras[100];// almacena las frecuencias de las emisoras // sintonizadas mientras est prendido int cantemisoras;// cantidad de emisoras sintonizadas bool estado;// false: apagado, true: prendido int funcion;// 1: radio, 2: reproductor de CD // 3: reproductor de cassette int volumen;// nivel de volumen float frecuencia;// frecuencia de la emisora sintonizada int pista;// pista reproducida del CD int estadocdcassette;// estado del reproductor de CD y/o casete // 0: detenido, 1: reproduciendo public: minicomponente( );// constructor ~minicomponente( );// destructor void ingresar( );// ingreso de datos void imprimir( );// impresin de datos void operator*( );// permite apagar y prender el equipo void operator++( );// incrementa en 1 el nivel de volumen void operator--( );// decrementa en 1 el nivel de volumen void operator^( int fr );// sintoniza la frecuencia fr void operator>>( int p );// selecciona la pista p del CD void play( );// reproduce CD y/o cassette void stop( );// detiene reproduccin de CD y/o cassette };

Das könnte Ihnen auch gefallen