Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia No 5
Guia No 5
INFORMÁTICA
TEMA: ENCAPSULAMIENTO
OBJETIVOS.
FUNDAMENTO TEORICO.
En P.O.O. los datos y los procedimientos que los gestionan están relacionados explícitamente y se
"encapsulan" en un objeto. La especificación de las propiedades de un objeto y los métodos de acceso
se realiza en la declaración de la clase de la que se instancia el objeto.
Formas de encapsular
1. Estándar (Predeterminado)
2. Abierto: Hace que el miembro de la clase pueda ser accedido desde el exterior de la Clase y
cualquier parte del programa.
3. Protegido: Solo es accesible desde la Clase y las clases que heredan (a cualquier nivel).
4. Semi cerrado: Solo es accesible desde la clase heredada.
5. Cerrado: Solo es accesible desde la Clase.
ACTIVIDAD DE CLASE.
1. Crear una clase que nos permita calcular el ara de un rectángulo, tomando como atributos la base y
la altura.
Página 1
Solución: Vamos a definir una clase y vamos a crear varios objetos de la misma. Empleando los métodos de la
clase modificaremos y consultaremos los atributos de los objetos de la clase.
#include <iostream>
using namespace std;
class rectangulo
{
private:
int base, altura;
public:
void dimensiones(int b, int h);
int area(void);
void leer(int &, int &);
};
int rectangulo::area(void)
{
return base*altura;
}
int main()
{
int x,y;
cout << "Hello world!" << endl;
rectangulo rect1, rect2,rec;
rect1.dimensiones(10,20);
rect2.dimensiones(50,100);
rec.leer(x,y);
rec.dimensiones(x,y);
cout<< "El area del primer rectangulo es: " << rect1.area()<<endl;
cout<< "El area del segundo rectangulo es: "<< rect2.area()<<endl;
cout<< "El area del tercer rectangulo es: "<< rec.area()<<endl;
return 0;
}
2.- Declarar una clase Hora, con sus atributos hora, minuto, segundo y funciones miembro para
inicializar establecer la hora y mostrar la hora en formatos militar y estándar. Con este ejemplo vamos a
mostrar además el uso de los constructores
Solución.-
#include <iostream>
Página 2
{
public:
Hora();
void estableceHora (int, int, int);
void imprimeMilitar();
void imprimeEstandar();
void leeHora(int &, int &, int &);
private:
int hora;
int minuto;
int segundo;
};
//Constructor
Hora::Hora()
{
hora=minuto=segundo=0;
}
void Hora::imprimeMilitar()
{
if(hora<10) cout<<"0"; else cout<<"";
cout<< hora<<":";
if(minuto<10) cout<<"0"; else cout<<"";
cout<< minuto<<" ";
void Hora::imprimeEstandar()
{
if(hora==0 || hora ==12) cout<< hora<<":"; else cout <<hora%12<<":";
if(minuto<10) cout<<"0"; else cout<<"";
cout<< minuto<<":";
if(segundo<10) cout<<"0"; else cout<<"";
cout<< segundo<<":";
if(hora<12) cout<<" AM"; else cout<<" PM"<<endl;
}
Página 3
int main()
{
cout << "Hello world!" << endl;
int hr,minu,seg;
Hora h; //instancia del objeto h
cout<< "\nLa hora militar inicial es: ";
h.imprimeMilitar();
cout<< "\nLa hora estandar inicial es: ";
h.imprimeEstandar();
h.leeHora(hr,minu, seg);
h.estableceHora(hr, minu,seg);
cout<<"\n\nLa hora militar despues de estableceHora es:<<";" ";
h.imprimeMilitar();
cout<<"\n\nLa hora estandar despues de estableceHora es: ";
h.imprimeEstandar();
cout<<endl;
return 0;
}
PROBLEMAS PROPUESTOS.
1. Crear una clase llamada hora que tenga miembros dato del tipo int para horas, minutos y segundos.
Un constructor inicializará el dato a 0 y otro lo inicializará a valores fijos. Una función miembro deberá
visualizar la hora en formato hh:mm:ss. Otra función miembro sumará dos objetos del tipo hora
pasados como argumentos. La función principal main() crea dos objetos inicializados y un tercero que
no está inicializado. Sumar los dos valores inicializados y dejar el resultado en el objeto no inicializado
y visualizar el valor resultante de los tres objetos.
CUESTIONARIO.
2. Una variable privada puede ser accedida desde (puede existir cero, una o varias opciones
correctas):
a) La clase desde la cual fue creada.
b) Una subclase de la clase desde la cual fue declarada.
c) Externamente, desde un objeto de la clase la cual fue declarada.
3.- ¿Cuándo es conveniente regular el acceso a una variable por medio de una propiedad?
5. ¿Cuál es el nivel de acceso que se usa por defecto en miembros de clase sino se especifica lo
contrario?
Página 4