"Lisandro Alvarado"
Decanato de Ciencias y Tecnologa
Programacin - Lapso 2011-1
PLANTEAMIENTO DEMOSTRATIVO
Una organizacin dispone de un dinero para pago de nmina, y tiene varios trabajadores, cada uno
con un sueldo base, asignaciones y deducciones. Se desea determinar el sueldo neto de cada trabajador,
y por la empresa: el total a pagar, si le alcanza o no el dinero, y el saldo restante luego de la nmina.
Clculos totales de la
tabla sern mtodos de
la organizacin
Dato
Dato
Dato
Dato
Por otra parte, debe considerarse el hecho de que por ahora no podremos usar arreglos para mantener
en memoria a varios objetos simultneamente, por tanto ser preciso procesar uno a uno.
As, tendremos las siguientes nuevas reglas para cuando se procese un objeto menor en la clase
mayor y se vaya determinando poco a poco los requerimientos:
A cada requerimiento de la clase mayor: habr que asignarle uno o varios atributos en la clase de
manera que cada vez que se procese un objeto menor, entonces se actualice el valor correspondiente.
Coordinacin del rea de Computacin
Normalmente el tipo de relacin no afecta los atributos que amerita la clase mayor. Como el
nombre lo indica, una relacin de Uso simplemente usa un objeto pre-existente, una relacin de
agregacin agrega el objeto (lo crea) antes de poder enviarle mensajes al mismo.
MTrabajador
- nombre : string
- sueldo_base : float
- asignaciones : float
- deduciones : float
+ DetSueldoNeto () :float
Tal y como haba sido planteado, la relacin existente consiste en una relacin de uso. La clase
Organizacin recibe un objeto de tipo Trabajador para procesarlo. Se han omitido algunos mtodos,
ms adelante se entrega el programa completo.
Organizacion.h
class MOrganizacion {
private:
float bs_dispone;
float tot_pagar_org;
public:
MOrganizacion ();
MOrganizacion (float);
void SetBsDispone (float);
float GetBsDispone ();
void ProcesarTrab (MTrabajador);
float DetTotPagarOrg ();
bool DetAlcanzaBs ();
float DetSaldoResto ();
};
#endif
#include "MOrganizacion.h"
MOrganizacion :: MOrganizacion (){
bs_dispone = 0;
Organizacion.cpp
tot_pagar_org = 0;
}
MOrganizacion :: MOrganizacion (float bs){
bs_dispone = bs;
tot_pagar_org = 0;
}
void MOrganizacion :: ProcesarTrab (MTrabajador t){
tot_pagar_org += t.DetSueldoNeto ();
}
float MOrganizacion :: DetTotPagarOrg (){
return tot_pagar_org;
}
bool MOrganizacion :: DetAlcanzaBs (){
return bs_dispone - tot_pagar_org > 0;
}
float MOrganizacion :: DetSaldoResto (){
return bs_dispone - tot_pagar_org;
}
Controlador :: Controlador(){}
COMPARACIN
Aspecto
ENTRE RELACIN DE
Relacin
Objeto menor
Interfaz de la
clase mayor
Implementacin
de clase de la
clase mayor
Duracin de la
instancia de la
clase parte
Mensajes entre
las clases
Uso
USO
f)
g)
h)
i)
Y RELACIN DE
AGREGACIN
Agregacin
Relacin USO
:::::
float tot_pagar_org; MOrganizacion.h
public:
MOrganizacion (float);
void ProcesarTrab (MTrabajador);
float DetTotPagarOrg ();
:::::
En Uso el Procesar
Relacin AGREGACIN
recibe el objeto, en
:::::
float tot_pagar_org; Agregacin los
public:
datos.
MOrganizacion (float);
void ProcesarTrab (float,
float, float);
float DetTotPagarOrg ();
:::::
Relacin de uso
void Controlador :: ProcesarOrg(){
float bs, sueldo, asig, deduc;
char resp; string nombre;
bs = vo.LeerBsDispone();
mo.SetBsDispone (bs);
do{nombre = vt.LeerNombre();
sueldo = vt.LeerSueldoBase();
asig = vt.LeerAsignaciones();
deduc = vt.LeerDeducciones();
mt.SetNombre(nombre);
mt.SetSueldo_Base (sueldo);
mt.SetAsignaciones (asig);
mt.SetDeducciones (deduc);
:::::
Relacin de agregacin
Necesita una
instancia con
informacin
actualizada
mo.ProcesarTrab (mt);
cout << "Hay otro trabajador? S-N: ";
cin >> resp;
} while (resp == 'S' or resp == 's');
vo.ImprimirEstadisticas(mo.DetTotPagarOrg(),
}
Controlador.cpp
vt.ImprimirTrab(mt.GetNombre(),
mt.DetSueldoNeto());
mo.DetAlcanzaBs(),mo.DetSaldoResto());
MOrganizacion.cpp
Relacin de uso
:::::
void MOrganizacion :: ProcesarTrab (MTrabajador t){
tot_pagar_org += t.DetSueldoNeto ();
}
:::::Recibe el objeto de la clase parte listo para ser usado
Relacin de agregacin
Necesita los
datos para el
objeto que ser
agregado
mo.DetAlcanzaBs(),mo.DetSaldoResto());
2. Dibuje el diagrama simplificado de clases de todas las clases participantes y sus relaciones.
3. Suponga que se requiere determinar la cantidad de trabajadores que se procesaron. Indique cmo
afecta este nuevo requerimiento a lo siguiente:
Clase MOrganizacin: ___________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Clase MTrabajador: ___________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Clase VOrganizacin: ___________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Clase VTrabajador: ___________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
Clase Controlador: ___________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
________________________________________________
6. Idee un nuevo requerimiento que amerite la creacin de un nuevo atributo a la clase MOrganizacin.
Razone sus planteamientos.
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
7. Qu cambios debera Ud. aplicar al solucionar este nuevo requerimiento?. Razone sus planteamientos.
a. En el diseo del modelo:_____________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
b. En el diseo de la vista:_____________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
c. En el controlador: __________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
___________________________________________________________________________________________________
d. Qu otros cambios?_______________________________________________________________________________
___________________________________________________________________________________________________