Programacion Orientada a Objetos en C++

Anuncio
UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACION
GUIA DE LABORATORIO #13
Nombre de la Practica:
CICLO: 01/ 2013
Lugar de Ejecución:
Tiempo Estimado:
MATERIA:
Programación Orientada a Objetos (POO) en
C++
Centro de Computo
2 horas y 30 minutos
Introducción a la Programación
I. OBJETIVOS
Que el alumno sea capaz de:
• Redactar la sintaxis apropiada para definir una "Clase" en lenguaje C++.
• Definir las capacidades de realizar tareas específicas que tendrá un objeto, por medio de los
métodos.
II. INTRODUCCION TEORICA
PROGRAMACION ORIENTADA A OBJETOS (POO)
A continuación se dan los puntos básicos para la definición de clases y creación de objetos.
Clases y Objetos en C++:
C++ es un lenguaje orientado a objetos, su gran virtud es usar este prototipo para hacer software
más depurado y reutilizable. La base de la programación orientada a objetos es el uso de clases,
una clase es un tipo de datos abstracto con la cual podemos definir objetos, un objeto es un tipo
especial de variable con atributos propios y funciones miembro (métodos).
Los que tengan experiencia con estructuras no les será muy ajeno el concepto, una clase es muy
parecida a las estructuras solo con funciones propias y un sistema de protección.
Escribiendo la primera clase:
1
Siempre los ejemplos visuales son los mejores, una clase se define con la palabra reservada class,
en el ejemplo de la Figura 13.1 se define una clase con el nombre de Ejemplo con una función
miembro pública (que se explicará en breve) llama diHola, el cuerpo de la clase se introduce entre
llaves y termina con punto y coma (;).
Métodos Públicos y Privados:
C++ cuenta con las palabras reservadas
public, private y protected que forman el
sistema de protección.
public:
Al establecer un método como público
(public), este puede ser accesado desde
cualquier lugar del programa, este es el
nivel de seguridad más bajo.
Figura 13.1: definición de una clase y 3 métodos
Private:
Determina que solo puede ser usado dentro de la misma clase (este es el nivel más restrictivo)
Protected:
Indica que solo puede ser usado por la clase y clases padre. Se verá en otra práctica, cuando se
trate el tema de la Herencia.
Para establecer métodos como públicos solo basta con indicar la palabra public seguida de dos
puntos y añadir los métodos y atributos bajo de eso, todo lo que se encuentre bajo de eso será
establecido como publico hasta encontrar otro nivel de protección.
A continuación se pondrá un cuerpo a al método diHola ya que lo escrito antes es solo el prototipo
del método, los prototipos son declaraciones que indican solamente el tipo y parámetros del
método (o función).
2
Al nombre del método se antepone el nombre de la clase a la que pertenece y su tipo, aquí se
agrega un método llamado “diHola” del tipo void, un método void no retorna ningún valor, hace su
proceso y finaliza.
Inicializando un objeto:
Ahora dentro del método main() se
declara un objeto de Ejemplo llamado
ej, esto se logra anteponiendo el tipo:
Para acceder a los métodos se puede
usar el operador de acceso . (Punto),
con los métodos y atributos públicos,
recuerde que los métodos privados
son solo accesibles desde la misma
clase.
Ya el ejercicio completo quedaría de
la siguiente manera (ver Figura 13.2).
Si
se
quiere
ejecutar
el
metodoPrivado, no se podría hacer
ya que este solo es accesible desde
la misma clase, pero se podría utilizar
un método público de la misma clase
que llame al método privado,
Ver ejemplo en la Figura 13.3
Figura 13.2: Codigo fuente con la declaración de una
Clase y sus métodos.
El método diHola(), llama al metodoPrivado(), entonces ya se puede visualizar el contenido desde
main.
3
Figura 13.3: Cómo invocar a un método privado de una Clase, solamente desde sus propios
métodos, en este caso desde método diHola().
III. MATERIALES Y EQUIPO
Para la realización de la guía de práctica se requerirá lo siguiente:
No. Requerimiento
1
Guía de Laboratorio # 13 de IP
2
Compilador de C++.
3
Disquete ó Memoria USB
Cantidad
1
1
1
4
IV. PROCEDIMIENTO
Redacte, pruebe y analice los siguientes códigos fuentes.
Ejercicio 1. Utilizando los miembros de una clase
Crear un archivo de código fuente denominado guia13ejemplo1.
Implementar a una clase cPersona con los siguientes datos miembros: nombre, dNacimiento
(día de nacimiento), mNacimiento (mes de nacimiento), aNacimiento (año de nacimiento) y
dirección.
Las funciones miembro serán obtenNombre, obtenDomicilio, obtenFechaNacimiento,
ponerNombre, ponerDirección, ponerFechaNacimiento.
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
//declaracion de clase cPersona
class cPersona{
public: //miembros publicos/externos de clase
cPersona(); //constructor
//metodos
char *obtenNombre(void);
void obtenDomicilio(char midireccion[]);
void obtenFechaNacimiento(void);
void ponerNombre(void);
void ponerDireccion(void);
void ponerFechaNacimiento(void);
private: //miembros privados
//campos (variables y arreglos)
char nombre[20];
int dNacimiento; //día de nacimiento
int mNacimiento; //mes de nacimiento
int aNacimiento; //año nacimineot
char direccion[50];
};//fin clase cpersona
main(){
//crea a objeto luis segun la clase cPersona
cPersona luis;
char *direccioncasa;
5
//invoca a metodos de objeto luis
luis.ponerNombre();
luis.ponerDireccion();
luis.ponerFechaNacimiento();
//retorna valores almacenados en objeto luis
cout<<endl<<"Yo me llamo "<<luis.obtenNombre();
luis.obtenDomicilio(direccioncasa);
cout<<", vivo en "<<direccioncasa<<", y naci el ";
luis.obtenFechaNacimiento();
getch();
}//fin funcion principal
//definicion de metodos de clase cPersona
cPersona::cPersona(){
cout<<endl<<"Acabas de crear a una persona"<<endl;
}//fin constructor clase
void cPersona::ponerNombre(void){
cout<<endl<<"Dime como me llamo yo: ";
gets(nombre);
}//fin metodo ponerNombre
void cPersona::ponerDireccion(void){
cout<<endl<<"indicame mi domicilio: ";
gets(direccion);
}//fin metodo ponerDireccion
void cPersona::ponerFechaNacimiento(void){
cout<<endl<<"indicame mi fecha de nacimiento, asi: ";
cout<<endl<<" dia= "; cin>>dNacimiento;
cout<<endl<<" mes= "; cin>>mNacimiento;
cout<<endl<<" año= "; cin>>aNacimiento;
}//fin metodo ponerFechaNacimiento
char *cPersona::obtenNombre(void){
//retorna arreglo interno (nombre) de la clase
return(nombre);
}//fin metodo obtenNombre
void cPersona::obtenDomicilio(char midireccion[]){
//retorna en arreglo midireccion[] a campo direccion
strcpy(midireccion,direccion);
}//fin metodo obtenDomicilio
6
void cPersona::obtenFechaNacimiento(void){
cout<<dNacimiento<<"/"<<mNacimiento<<"/"<<aNacimiento;
}//fin metodo obtenFechaNacimiento
Ejercicio 2. Creando una Clase
Crear un archivo de código fuente denominado guia13ejemplo2.
Redactar el ejemplo indicado en la Figura 13.3 de la introducción teorica de esta practica.
Comprobar que el mismo funciona… Agregar los comentarios que hagan falta por líneas y
luego por bloques de codigo.
Ejercicio complementario:
Modificar la clase cPersona del ejercicio 1, para agregar un método publico que indique si una
fecha de nacimiento recibida es correcta (‘s’) o es invalida (‘n’). Ejemplos de algunas fechas
incorrectas:
dia: 30, mes: 2, año 1998
dia: 19, mes: 62, año 1960
dia: -5, mes: 9, año 2001,
Luego, modificar función principal main para que indique cuando la fecha asignada a una persona
es incorrecta y asi volverla a solicitar!!
V. DISCUSION DE RESULTADOS
1. Crea una clase CRectángulo. Esta clase tiene dos datos miembro, largo y ancho. También, la
clase cuenta con métodos que calculan el perímetro (obtenPerímetro) y el área (obtenArea) del
rectángulo, así como métodos para obtener y poner los valores correspondientes a los
atributos largo y ancho. El método que recibe valores, debe comprobar que tanto largo como
ancho sean mayores que 0 y menores que 20, de lo contrario mostrara mensaje “calculo
imposible”.
2. Crear una aplicación que contenga una clase llamada Calculadora, con las siguientes
características:
• variable primero, variable segundo – son los números con los que operará.
• fijarNumeros(n1, n2) – guardará en el objeto los números para operar luego con ellos.
• sumar() – sumará los números. No necesita parámetros porque accede directamente a las
propiedades (variables) que tenga guardadas el objeto de clase calc que creemos.
• dividir() – lo mismo que antes, dividirá primero entre segundo, pero para asegurarnos de que
pueda hacerse, recurrirá a otro método.
• comprobar() – este método comprobará que segundo sea distinto de cero para poder dividir.
• Los números deben ser introducidos por el usuario.
3. Crear una aplicación en C, que contenga una clase donde calcule el área de al menos 3
figuras planas trigonométricas (triangulo, cuadrado, rombo, circulo, etc.). Y otra clase donde
calcule el volumen de al menos 3 cuerpos con volumen (cubo, cono, cilindro, esfera, etc.). Las
variables necesarias para calcular el área y el volumen deben ser introducidas por el usuario.
7
Descargar