Tema: Clases y Objetos en C++. Parte I.

Anuncio
Programación II. Guía No. 3
1
Facultad:
Ingeniería
Escuela:
Computación
Asignatura: Programación II
Tema: Clases y Objetos en C++. Parte I.
Objetivos Específicos

Implementar clases, objetos, propiedades, métodos y mensajes.

Poner en práctica conceptos de POO vistos en clase.

Crear, analizar y comprender cuando utilizar las clases.
Materiales y Equipo
 Computadora con el software DevC++.
 Guía Número 3.
Introducción Teórica
En esta práctica se tratarán los puntos básicos para la definición de clases y creación de
objetos.
Definición.
Una clase se define como la descripción de un objeto, la cual tiene un conjunto de atributos
para describir las características del objeto y un conjunto de métodos que describen las
operaciones o funciones del objeto.
Pero la definición de clases encierra muchas otros conceptos para cumplir sus objetivos, así en
esta práctica veremos los siguientes conceptos:

Sintaxis de definición de clases.

Miembros.

Acceso a miembros.

Constructor y destructor de objetos.

Creación de objetos.
2
Programación II. Guía No.3
Para tratar los conceptos anteriores usaremos un ejemplo de definición de clase.
Simularemos la entidad empleado. Necesitamos registrar los siguientes datos: número de DUI,
nombres, apellidos, cargo dentro de la empresa, departamento en el que labora, su sueldo y la
fecha de ingreso a la empresa.
A partir del enunciado anterior se identifican sus atributos y algunos de sus métodos, y se
presentan en el siguiente diagrama de clase:
Sintaxis para la definición de clase:
class <nombre de clase>
{
private:
<atributos y/o miembros>
protected:
<atributos y/o miembros>
public:
<atributos y/o miembros>
};
Para declarar una clase debe proporcionarse primero su nombre, y se definen las regiones de
acceso privada (private) en la que solo la misma clase puede hacer uso de esos elementos,
protegida (protected) en la que solo la misma clase y las clases heredadas podrán hacer uso
Programación II. Guía No.3
3
de esos elementos y pública (public) en la que tanto la clase como código externo puede hacer
uso de los elementos.
A partir del diagrama de clase anterior se desprende el siguiente código de definición de clase:
class Empleado
{
private:
char DUI[10];
string nombres;
string apellidos;
string cargo;
float sueldo;
string fecha_ingreso;
string departamento;
public:
Empleado( );
Empleado(char numdui[ ], string name, string lastname, string cargoe, float sueldoe,
string ingreso, string depto);
~Empleado( ){ }
char *ObtenerDUI( );
string ObtenerAntiguedad( );
string ObtenerNombreEmpleado( );
string ObtenerCargo( );
float ObtenerSueldo( );
string ObtenerDepartamento( );
void ModificarDUI(char numdui[ ] );
void ModificarCargo(string cargoe);
void ModificarSueldo(float sueldoe);
void ModificarDepartamento(string depto);
};
Como se ve en el código anterior tenemos solo región privada y publica. En la región privada
están los atributos con el objetivo que solo puedan ser modificados por la clase misma, y en la
4
Programación II. Guía No.3
región pública se agregan los métodos (solo la declaración de las funciones) para dar acceso a
los atributos a código externo a la clase.
También se definen los constructores y el destructor. Estos son funciones sin tipo de retorno y
tienen el mismo nombre de la clase (solo el destructor antepone el carácter ~), hay dos
constructores de los cuales uno tiene parámetros para configurar la clase, el segundo no tiene
parámetros, así este tomará valores por default definidos por el constructor.
La definición de métodos de una clase se puede hacer dentro de la misma clase o fuera de la
definición de la clase.
Si se realiza fuera de la definición de la clase se debe indicar que son miembros de la clase.
La sintaxis de esta definición requiere del operador de resolución de ámbito (::) y es la
siguiente:
<tipo de retorno> <nombre de clase> : :<nombre de método>(<lista de parámetros>)
{
<cuerpo de método>
}
En el código que sigue se definen algunos de los métodos declarados en la clase:
Empleado::Empleado( ) //constructor
{
DUI[0]='\0';
nombres=" ";
apellidos=” “;
cargo=” “;
sueldo=0.0;
fecha_ingreso=” “;
departamento=” “;
}
Empleado::Empleado(char numdui[ ], string name, string lastname, string cargoe, float sueldoe,
string ingreso, string depto)
{
for(int i=0; i<10; i++)
DUI[i]= numdui [i];
DUI[10]='\0';
nombres=name;
//constructor con parámetros
Programación II. Guía No.3
5
apellidos=lastname;
cargo=cargoe;
sueldo=sueldoe;
fecha_ingreso=ingreso;
departamento=depto;
}
char * Empleado::ObtenerDUI( )
{
return DUI;
}
string Empleado::ObtenerCargo()
{
return cargo;
}
string Empleado::ObtenerDepartamento( )
{
return departamento;
}
void Empleado::ModificarDUI(char numdui[ ])
{
for (int i=0; i<10; i++)
DUI[i]=numdui[i];
DUI[10]=’\0’;
}
Acá se han definido algunos de los métodos de la clase Empleado, como se puede ver no se
define el destructor, este fue definido en la clase dado que no contiene código a ejecutar.
La creación de objetos es muy similar a declarar variables. Se puede hacer en otra clase
(anidamiento de objetos) o en una función de la siguiente manera:
<nombre de clase> <nombre de objeto><(lista de parámetros para el constructor)>
6
Programación II. Guía No.3
Ejemplo:
Empleado emp1("04016850-1",”Alfredo”, “Guardado”, “Programador”,800.00,”23/09/2014”, ”Informatica”);
Como se puede ver, se está instanciando la clase Empleado en el objeto emp1 con siete
parámetros, los cuales son recogidos por el constructor para inicializar el objeto.
Y por último el acceso a los miembros públicos (atributos o funciones) se hace con el nombre
de la clase, seguido de un punto y el nombre del miembro:
.
<nombre del objeto> <nombre de miembro publico>
Ejemplo:
emp1.ObtenerCargo( );
Acá se hace el llamado al método ObtenerCargo del objeto emp1 el cual fue declarado y
definido en el código de la clase Empleado.
Procedimiento
Ejercicio
1:
Bibliografía
Tomar el código anterior y completar el programa para los métodos que no se implementaron
enGuía
el
1ejemplo:
ObtenerAntiguedad,
ObtenerNombreEmpleado,
ModificarCargo,
ModificarSueldo y ModificarDepartamento.
Debe completarse el programa con un menú que permita la creación de objetos y la aplicación
de sus métodos.
El programa debe permitir realizar las siguientes acciones:
a) Ingresar un empleado al sistema.
b) Modificar datos del empleado. Debe considerarse que dato desea modificarse.
c) Mostrar los datos de un empleado.
d) Salir del sistema.
Programación II. Guía No.3
7
Investigación Complementaria
1. A3 partir
Guía
de los diagramas de clase hechos en el ejercicio 1 y en la tarea
complementaria 1 de la guía anterior (Guía No.2), escribir el código necesario para la
Guía definición
4
de las clases descritas en los Diagramas de Clase. (Comente el código
desarrollado)
fía
2. Investigar qué es el anidamiento de objetos y agregar un ejemplo de su uso en código
de C++.(Debidamente comentariado)
Fuentes de Consulta
1. Deitel, Paul J. y Deitel, Harvey M. Cómo programar en C++. 6ª Edición Prentice Hall,
2009.
2. Joyanes Aguilar, Luis; Sánchez García, Lucas. Programación en C++: Un enfoque
práctico. 1° Edición en español. McGraw Hill. 2006. Libro en línea. Ebrary. Recursos
Eléctronicos Universidad Don Bosco.
3. http://dis.unal.edu.co/~fgonza/courses/2003/poo/c++.htm.
Material
sobre
Programación Orientada a Objetos. Departamento de Ingeniería de Sistemas.
Universidad Nacional de Colombia. Consultado diciembre 2014.
8
Programación II. Guía No.3
Guía 3: Clases y Objetos en C++.
Alumno:
Hoja de cotejo:
3
1
Máquina No:
Alumno:
GL:
Docente:
Fecha:
EVALUACION
%
CONOCIMIENTO
Del 20
al 30%
APLICACIÓN
DEL
CONOCIMIENTO
Del 40%
al 60%
ACTITUD
Del 15%
al 30%
TOTAL
100%
1-4
5-7
8-10
Conocimiento
deficiente
de los
fundamentos
teóricos
Conocimiento
y explicación
incompleta de
los
fundamentos
teóricos
Conocimiento
completo y
explicación
clara de los
fundamentos
teóricos
No tiene
actitud
proactiva.
Actitud
propositiva y
con
propuestas no
aplicables al
contenido de
la guía.
Tiene actitud
proactiva y
sus propuestas
son concretas.
Nota
Descargar