Está en la página 1de 121

Te invitamos a realizar las siguientes lecturas:

Bruce Eckel., Pensar en C++, Volumen 1. 12 de enero de 2012


Capítulo 8

Tutorial Unidad 1 Métodos


Te invitamos a ver los siguientes videos:

Estructura de miembro de clase

Implementación de métodos

Sobrecarga de métodos

Método estático
Actividad Integradora unidad 1

ACTIVIDAD 1 (2puntos)

Cree una clase llamada Factura, que una ferretería podría utilizar para representar una
factura para un artículo vendido en la tienda. Una Factura debe incluir Cuatro piezas de
información como variables de instancia: un numero de pieza, la descripción de la
pieza, la cantidad de artículos de ese tipo que se van a comprar y el precio por artículo.
Su clase debe tener un constructor que inicialice las cuatro variables de instancia.
Proporcione un método establecer y un método obtener para casa variable de
instancia. Además, proporcione un método llamado obtenermontofactura, que calcule
el monto de la factura(es decir, que multiplique la cantidad por el precio por artículo) y
después devuelva ese monto como un valor doublé. Si la cantidad no es positiva, debe
establecer 0. Si el precio por artículo no es positivo, debe establecerse a 0.0. Escriba
una aplicación de prueba llamada Prueba-Factura, que demuestre las capacidades de
la clase Factura.
Actividad Integradora unidad 1

ACTIVIDAD 2 (2puntos)
Desarrolle una sencilla aplicación en la que se tienen las siguientes clases:
• Una clase ListadeObjetos es una clase que contiene un arreglo en el que se pueden almacenar objetos de la clase A, el
arreglo puede guardar como máximo 20 objetos de la clase A.
• Debe tener un método para almacenar un objeto de la clase A en el arreglo, este método debe verificar que el arreglo tenga
espacio disponible para guardar el objeto. En caso contrario se debe mostrar un mensaje indicando que el arreglo está lleno.
• Debe tener un método para retirar un objeto del arreglo, este método debe verificar que si haya algo para sacar del arreglo,
es decir que el arreglo no vaya a estar vacío, en cuyo caso debe desplegar un mensaje diciendo que no hay nada para sacar
de arreglo.
• Debe tener un método para desplegar la información de un objeto almacenado en alguna posición del arreglo. Debe
verificar que dicha posición si tiene algo guardado, en caso contrario debe avisar de la situación con un mensaje. Este
mismo método debe permitir de manera alternativa que se despliegue la información de todos los objetos que estén de
momento almacenados en el arreglo.
• Una clase A que tiene los siguientes miembros privados: Un miembro tipo int para un número serial que identifica al objeto.
• Un miembro tipo std::string para darle una denominación al objeto.
• Los objetos de la clase A solo se pueden crear y configuar a través de una función externa llamada "nuevoObjetoLista". Esta
función crea un objeto de la clase A asignando valores al serial y al nombre del objeto. Luego almacene el objeto en la
ListadeObjetos invocando el método que esta clase tiene para almacenar objetos de la clase A.
• La aplicación debe tener un sencillo menú de opciones que permita ejecutar distintas acciones como agregar objetos a la
lista, retirar objetos de la lista o desplegar información de un objeto individual o de todos los objetos de la lista.
Actividad Integradora unidad 1

ACTIVIDAD 3 (2puntos)

En una agencia publicitaria se ha organizado el tratamiento de los datos sobre publicidades contratadas de la
siguiente manera:
Clase publicidad:
Atributos: Nombre, Medio, costo
Clase empresa: - Atributos: Nombre, Rubro, Publicidad: Vector de 10 publicidades.
deben definir e implementar los siguientes métodos:
• Constructores: la clase empresa debe tener un constructor con parámetros y uno por defecto, la clase publicidad
solamente un constructor con parámetros
• Destructores: donde sea necesario.
• Mostrar datos para ambas clases (Una empresa también debe mostrar los datos de sus publicidades asociadas)
• Crear nueva publicidad en la clase empresa
• Costo total para la clase empresa que devuelva el costo de todas las publicidades de una determinada empresa
• Buscar una publicidad de la empresa por el nombre de la misma y devolver 1 si la encuentra y 0 en el caso
contrario.
• Buscar una publicidad de la empresa por el medio por la que se realizó y devolver su nombre.
Nota: Definir e implementar más métodos si lo considera necesario.
En la clase main se debe instanciar al menos una empresa contratante y llamar a los métodos definidos
anteriormente. También puede definir un menú de opciones para utilizar los mismos.
Actividad Integradora unidad 1

ACTIVIDAD 4 (2puntos)
Se necesita implementar a través de la programación orientada a objetos el manejo de los artículos de una fábrica
de gaseosas. La fabricación de los mismos se realiza en cinco pasos predeterminados cada uno de los cuales
consume un tiempo en particular. Los datos de cada artículo son:
• Codigo_articulo
• Descripción
• Fecha de elaboración
• Tiempos utilizados (Para representar los mismos se puede utilizar una matriz de cinco filas y tres columnas donde
cada fila represente un paso y las columnas representen: tiempo estimado / tiempo real utilizado / tiempo de
retraso=t.estimado-t.real)
La fábrica desea poder realizar las siguientes operaciones (main)
• Cargar el vector de artículos, el usuario debe poder ingresar el tamaño del mismo.
• Mostrar los datos actuales de un artículo (ingresando su código) y permitir la modificación de la descripción y de
la fecha de elaboración
• Dar el promedio general del tiempo real en que tarda en ser fabricado para cada uno de los artículos.
• Listar código, descripción y fecha de aquellos artículos hayan vencido (La fecha de vencimiento de un artículo
corresponde a 2 años posteriores a su fecha de elaboración)
Listar las descripciones de aquellos artículos que se hayan retrasado en algún paso de su elaboración
Nota: para la fecha de elaboración utilizar la clase fecha vista en clases de práctico.
Actividad Integradora unidad 1

ACTIVIDAD 5 (2puntos)

Desarrolle una aplicación sencilla de Agenda de Citas y Compromisos que tiene las siguientes clases y
funcionalidades:
• Una clase "Cita" que tiene los siguientes miembros de clase: Miembros para almacenar de manera individual los
nombre de las dos personas que van a reunirse o citarse. Un miembro de clase para almacenar el nombre del
lugar donde van a reunirse. Un miembro que es un objeto de una clase llamada "Fecha".
• Dicha clase "Fecha" cuenta con miembros privados para el almacenamiento del año, el mes, el día y la hora, y
también un método para verificar que la fecha sea correcta, es decir, que no hayan más de 12 meses, que la hora
no sea superior a 24 horas ni inferior a 0 horas, que el día no sea cero o menor a cero y que respete el máximo de
días de acuerdo con el mes, y que verifique si el año es bisiesto para el caso del mes de febrero. Esta clase tiene
una sobrecarga adicional para ese método ya que se debe permitir ingresar el mes en letras o en números.
• Una clase externa "ClaseExterna" que permite crear objetos de la clase "Cita" que tiene un método que permite
crear una cita, este método recibe como parámetros de entrada todos los datos para almacenar en los miembros
del objeto cita. Además este método debe ir agregando las citas que se van creando en una lista de citas (la lista
puede guardar máximo 10 citas). Dicha lista debe poder ser consultada a través de una función externa llamada
"consultarCitas".
Actividad Integradora unidad 1

• Agregue un pequeño menú de opciones que permita crear citas e ir agregándolas a la lista de citas y también
visualizar las citas que ya se han agendado.
• Desarrolle la clase CajaDeAhorros que permita manejar una cuenta caja de ahorros con los siguientes atributos:
nombre (del cliente)
tipo (‘C’ = común ‘E’= especial )
saldo
cantidad (indica la cantidad de extracciones realizadas, sabiendo que si el tipo es común puede realizar 3
extracciones pero si es especial puede realizar 5 extracciones)
• Desarrollar los métodos:
cargar
mostrar
depositar(cuyo monto a depositar será pasado por parámetro – actualizando el saldo)
extraer (cuyo monto a extraer será pasado por parámetro – verificando si puede o no extraer – en caso afirmativo
actualizar el saldo)
Desarrollar un menú de opciones en el programa principal para la invocación de los distintos métodos.
Foro unidad 1

Participación Foro de la Unidad 1 Métodos dando respuesta a los siguientes interrogantes:

• ¿Cuál es el propósito del operador de resolución de ámbito?


• Menciona que ventajas tiene la sobrecarga de métodos.
Te invitamos a realizar las siguientes lecturas:

Bruce Eckel., Pensar en C++, Volumen 1. 12 de enero de 2012


Capítulo 8
Te invitamos a ver los siguientes videos:

Herencia 1

Herencia 2

Herencia 3

Herencia 4
Actividad Integradora Unidad 2
Actividad Integradora Unidad 2
Actividad Integradora Unidad 2
Actividad Integradora Unidad 2
Actividad Integradora Unidad 2
Foro unidad 2



Te invitamos a realizar las siguientes lecturas:

Deitel, H. M. y Deitel, P. J., Como programar en C++, Prentice Hall


4ta edición 2003
Capítulo 10 y 11
Te invitamos a ver los siguientes videos:

Polimorfismo 1 Polimorfismo 4

Polimorfismo 2 Polimorfismo 5

Polimorfismo 3
Actividad Integradora Unidad 3

ACTIVIDAD 1 (2puntos)
Realice una agenda en donde se registre la información de contacto tanto de personas como de empresas. La
información a almacenar es la siguiente:
1. Apellidos de la persona.
2. Nombre completo de la persona.
3. Dirección de la persona.
4. Teléfono de la persona.
Esta información debe estar disponible tanto para personas naturales como para organizaciones. Para
organizaciones se debe sumar el nombre de la empresa y la ciudad en donde esta se encuentra y el sitio web si lo
hay, aparte de la información que ya se tiene que corresponder a la información de contacto del gerente. En
resumen, para las compañías se requiere la siguiente información aparte:
5. Nombre de la empresa.
6. Ciudad en donde se haya la empresa.
7. Dirección en internet.
Todos los registros se deben almacenar ordenados alfabéticamente utilizando el apellido y luego el nombre. Se
debe poder: ver registros, adicionar registros, eliminar registros, modificar los registros y ver el contenido de un
registro. Además no debe permitir el ingreso de un registro con apellidos y nombres que ya existían en la agenda.
De nuevo se debe utilizar la arquitectura MVC. Con esto separamos el modelo de la vista y del controlador y
podríamos, por ejemplo, en un futuro utilizar una base de datos como mecanismo de persistencia para los registros
(aclaro, no en el taller).
Actividad Integradora Unidad 3

ACTIVIDAD 2 (2puntos)
Se requiere un programa para la registro de préstamos en una cooperativa.
Lo datos que se manejan para el préstamo son los siguientes:
• Número de Préstamo (numérico entero)
• Solicitante del préstamo (Persona). Se requiere únicamente: Nro. De identidad, Primer Nombre, Primer y Segundo
Apellido, teléfono de casa y teléfono móvil.
• Valor del préstamo (numérico con decimales)
• Fechas de pago de las cuotas (arreglo de un máximo de 6 fechas, se asume que el plazo máximo de pago son 6
meses).
• Fecha de autorización del préstamo.
• Fecha tentativa de entrega del préstamo.
Las reglas que debe respetar este proyecto son las siguientes:
• El número de préstamo siempre deberá ser un valor mayor que cero.
• El valor del préstamo siempre debe ser mayor a cero.
• Debe haber una función de captura de los datos del solicitante debe capturar únicamente los datos requeridos.
• La fecha tentativa de entrega del préstamo será siete días después de la fecha de autorización del préstamo.
• Las fechas de pago del préstamo se calculan, sumando 30 días a cada una a partir de la fecha de entrega del
préstamo.
• Los préstamos solo se pueden autorizar en los primeros 20 días del mes. Esta es una política que nunca va a
cambiar.
Actividad Integradora Unidad 3

Las reglas técnicas a respetar en este ejercicio son las siguientes:


Debe utilizar funciones polimórficas para las funciones establecer, en caso de que se implemente
herencia.
• Debe utilizar operadores sobrecargados para la captura de datos de tipo fecha.
• Debe utilizar operadores sobrecargados para el cálculo de las fechas de pago y de entrega del
préstamo.
El programa cliente de la clase debe reunir los siguientes requerimientos:
• Existe una fecha máxima para la autorización de los préstamos.
• Existe un gran valor máximo a prestar. La sumatoria de los préstamos que se ingresen no debe
exceder este valor.
• Debe permitir la captura de tantos préstamos como desee ingresar el usuario, a menos que se
haya llegado al valor máximo a prestar.
• Antes de capturar el préstamo debe preguntar si se desea capturar los datos completos del
solicitante o únicamente los datos requeridos por el préstamo.
• Debe imprimir los datos completos del préstamo, incluyendo la fecha de entrega y las echas de
pago de las cuotas.
Actividad Integradora Unidad 3

ACTIVIDAD 3 (2puntos)
La empresa informática “IPM Tech” necesita llevar un registro de todos sus empleados que se encuentran en la
oficina central, para eso ha creado un diagrama de clases que debe incluir lo siguiente:
1) Empleado
Atributos:
nombre: tipo cadena (Debe ser nombre y apellido)
cedula: tipo cadena
edad : entero (Rango entre 18 y 45 años)
casado: boolean
salario: tipo numérico doble
Métodos:
Constructor con y sin parámetros de entrada
Método que permita mostrar la clasificación según la edad de acuerdo a lo siguiente:
Si edad es menor o igual a 21, Principiante
Si edad es >=22 y <=35, Intermedio
Si edad es >35, Senior.-
Imprimir los datos del empleado por pantalla (utilizar salto de línea \n para separar los atributos.
Un método que permita aumentar el salario en un porcentaje que sería pasado como parámetro al método.
Actividad Integradora Unidad 3

ACTIVIDAD 4 (2puntos)

Se pretende desarrollar un conjunto de clases que representen, de forma simplificada, a una hipotética empresa
dedicada a vender un producto. A continuación, se describen las características básicas de estas clases:
Empleado. Clase básica que describe a un empleado. Incluye sus datos personales (nombre, apellidos, DNI,
dirección) y algunos datos tales como los años de antigüedad, teléfono de contacto y su salario. Incluye también
información de quién es el empleado que lo supervisa (Empleado *). Tendrá, al menos, las siguientes funciones
miembro:
• Constructores para definir correctamente un empleado, a partir de su nombre, apellidos, DNI, dirección, teléfono y
salario.
• Imprimir (A través de los operadores de E/S redefinidos)
• Cambiar supervisor
• Incrementar salario
Secretario. Tiene despacho, número de fax e incrementa su salario un 5% anual. Tendrá, al menos, las siguientes
funciones miembro:
• Constructores (debe rellenar la información personal y los datos principales)
• Imprimir (debe imprimir sus datos personales y su puesto en la empresa).
Actividad Integradora Unidad 3

3. Vendedor. Tiene coche de la empresa (identificado por la matricula, marca y modelo), teléfono móvil, área de
venta, lista de clientes y porcentaje que se lleva de las ventas en concepto de comisiones. Incrementa su salario un
10% anual. Tendrá, al menos, las siguientes funciones miembro:
• Constructores (debe rellenar la información personal y los datos principales)
• Imprimir (debe imprimir sus datos personales y su puesto en la empresa).
• Dar de alta un nuevo cliente.
• Dar de baja un cliente.
• Cambiar de coche.
4. Jefe de zona. Tiene despacho, tiene un secretario a su cargo, una lista de vendedores a su cargo y tiene coche de
la empresa (identificado por la matrícula, marca y modelo). Incrementa su salario un 20% anual. Tendrá, al menos,
las siguientes funciones miembro:
• Constructores (debe rellenar la información personal y los datos principales)
• Imprimir (debe imprimir sus datos personales y su puesto en la empresa).
• Cambiar de secretario.
• Cambiar de coche.
• Dar de alta y de baja un nuevo vendedor en su zona.
Todos los empleados son vendedores, jefes de zona o secretarios. Hacer un programa de prueba que muestre como
funciona. Probar, especialmente, que el método incrementar salario se comparta bien, según el empleado que sea
así es la subida.
Actividad Integradora Unidad 3

ACTIVIDAD 5 (2puntos)

Escriba una plantilla de función simple para la función predicado esIgualA que compara sus dos
argumentos del mismo tipo con el operador de igualdad (==), y devuelve true si son iguales, y false
si no son iguales. Use esta plantilla de función en un programa que llame a esIgualA sólo con una
variedad de tipos integrados.
Foro Unidad 3

Participación Foro de la Unidad 3 Polimorfismo dando respuesta a los siguientes


interrogantes:

¿Para qué sirve el polimorfismo?


¿Qué ventajas ofrece una aplicación polimórfica?
PROYECTO FINAL
Proyecto Final

Con base en tu experiencia de uso, selecciona alguno de los canales de alta de solicitudes de
crédito Coppel/Bancoppel o de afiliaciones a la Afore Coppel (Alta por sucursal, Alta web o Alta
móvil), y diseña una clase base, así como también las clases derivadas que correspondan a cada
unidad de negocio (Coppel, Bancoppel y Afore Coppel), con el objetivo de eficientar la captura de
datos para solicitudes y/o afiliaciones. En la clase base se tendrán que definir los atributos y
métodos que correspondan a los datos de captura que coincidan en las tres unidades de negocio,
por ejemplo: la fecha de nacimiento es un dato que se solicita para las tres unidades de negocio,
por lo tanto debería ser un atributo de la clase base, ya que de ésta se heredarán las clases
derivadas. Las clases derivadas deberán, entonces, tener atributos y métodos particulares que
diferencian a una unidad de negocio de otra, por ejemplo: el número de seguro social solo se
solicita para afiliaciones a la Afore Coppel, mas no para las otras unidades, éste sería un atributo
particular para la clase derivada correspondiente a la Afore Coppel.
En el diseño de las clases, tanto base como derivadas, deberás implementar lo aprendido en esta
materia, como son conceptos de encapsulamiento, herencia, polimorfismo, etc.

También podría gustarte