Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Taller No 9
Diagrama de Datos
Diseo
Diagrama de Casos de Uso
Procedimental
Diagrama de Clases
Diagrama de secuencias
Cdigo
import
import
import
import
java.io.File;
java.io.FileNotFoundException;
java.util.Scanner;
java.util.Vector;
return conteo;
/**
* Calcula la sumatoria de todos los sueldos de los empleados con el sexo
* indicado
*
* @param sexo
*
el sexo de los empleados que participarn en la sumatoria
* @return la sumatoria de los sueldos
*/
public double totalSueldos(char sexo) {
double totalSueldos = 0;
for (int i = 0; i < empleados.size(); i++)
if (empleados.get(i).esSexo(sexo))
totalSueldos += empleados.get(i).getSueldo();
return totalSueldos;
}
public double promedioSueldos(char sexo) {
return totalSueldos(sexo) / contarEmpleados(sexo);
}
/**
* Lee empleados de un archivo. Esta funcin es slamente para fines de
* testing
*
* @param in
*
el archivo en el que est la informacin de los empleados
*/
protected void obtenerEmpleados(File in) {
System.out.println("obteniendo datos de testeo de archivo de datos...");
try {
Scanner fin = new Scanner(in);
while (fin.hasNext()) {
empleados.add(new Empleado(fin.nextLine(),
fin.next().charAt(0), fin.nextDouble()));
fin.nextLine();
System.out.println("aadido: "
+ empleados.get(empleados.size() - 1));
}
} catch (FileNotFoundException e) {
System.out.println("el archivo de lectura no existe");
e.printStackTrace();
}
}
public static void main(String[] args) {
Empresa x = new Empresa();
File datos = new File("empleados.txt");
x.obtenerEmpleados(datos);
int accion = 0;
char sexo;
Scanner cin = new Scanner(System.in);
while (true) {
System.out.println("Qu quieres hacer?"
+ "\n1: Consultar sumatoria de sueldos"
+ "\n2: Consultar promedio de sueldos" + "\n3: Salir");
accion = cin.nextInt();
if (accion == 3)
break;
if (accion != 1 && accion != 2)
continue;
System.out.println("De qu sexo? (H)ombre/(M)ujer");
sexo = Character.toUpperCase(cin.next().charAt(0));
if (accion == 1)
System.out.printf("%.2f\n", x.totalSueldos(sexo));
else
System.out.printf("%.2f\n", x.promedioSueldos(sexo));
}
System.out.println("bye!");
cin.close();
}
Cdigo en accin
Diagrama de Datos
Diseo Procedimental
Diagrama de Casos de Uso
Diagrama de Clases
Diagrama de secuencias
Cdigo
public class administrador {
private String nombre;
private String codigo;
private String sueldo;
private docente[] doc;
administrador(String n,String c,String s){
nombre=n;
codigo=c;
sueldo=s;
doc=new docente[100];
}
public docente[] getDoc() {
return doc;
}
public void pagar(){
for(int i=0;i<5;i++){
if(doc[i].getSueldo()>15000){
doc[i].setPagar(doc[i].getSueldo()*0.88);
}
System.out.print("\nDocente :"+doc[i].getNombre()+"
Sueldo : "+doc[i].getSueldo()+" Mas Plan de
Austeridad:"+doc[i].getPagar());
}
}
public static void main(String [] args){
administrador A=new administrador("Kevin","5199711","1500000");
(A.getDoc())[0]=new docente("Braian","11593",100.02);
(A.getDoc())[1]=new docente("Juan","55355",150.07);
(A.getDoc())[2]=new docente("Napo","78652",15000.90);
(A.getDoc())[3]=new docente("Dennisse","41486",17000.69);
(A.getDoc())[4]=new docente("Rocky","11865",110.65);
A.pagar();
}
Diagrama de Datos
Diseo Procedimental
Diagrama de Casos de Uso
Diagrama de Clases
Diagrama de secuencias
Cdigo
public class producto {
private String nombre;
private double precio;
Diseo de Datos
Diseo Procedimental
Casos de uso
Diagrama de Clases
Diagrama de Secuencias
Cdigo
public class Carro {
private int horaEntrada;
private boolean estaParqueado;
import java.util.Scanner;
import java.util.Vector;
try {
Carro c = carros.get(indiceCarro);
if (c.estaParqueado()) {
cobro = (horaActual - c.getHoraEntrada()) * costoHora
+ costoHoraInicial;
c.sacar();
} else {
System.err.println("El carro con ndice " + indiceCarro
+ " ya sali");
}
} catch (IndexOutOfBoundsException e) {
System.err.println("El carro con ndice " + indiceCarro
+ " no existe");
}
return cobro;
}
while (true) {
System.out.println("Qu quieres hacer?" + "\n1: Meter carro"
+ "\n2: Sacar carro" + "\n3: Salir");
seleccion = cin.nextInt();
if (seleccion == 3)
break;
if (seleccion == 1) {
System.out.println("Carro metido con ID = "
+ x.meterCarro(hora));
} else {
System.out.println("ndice del carro que va a salir?");
int indice = cin.nextInt();
System.out.println("bye!");
cin.close();
}
Cdigo en Accin
Diseo de Datos
es solo un nmero
Diseo Procedimental
Diagrama de Casos de Uso
Diagrama de Clases
Diagrama de Secuencias
Cdigo
import java.util.Scanner;
return Integer.parseInt(invertido);
}
Cdigo en Accin
V(G) total = 7
Prueba 1: promedioSueldos para mujeres
(promedioSueldos est integrado con totalSueldos y contarEmpleados, as que,
al ejecutar la prueba, se recorrern todos los nodos.
V(G) total = 2
Prueba 1: Trabajar con un sueldo mayor a 15000.
Prueba 1: Trabajar con un sueldo menor a 15000.
V(G) total = 2
Prueba 1: Trabajar con un producto, cuyo precio bruto sea mayor a 13000.
Prueba 1: Trabajar con un producto, cuyo precio bruto sea menor a 13000.
V(G) total = 4
Prueba 1: MeterCarro en cualquier hora
Prueba 2: SacarCarro con un ndice que no existe
Prueba 3: SacarCarro con el ndice del carro metido en la prueba 2, en cualquier
hora posterior a la hora en la que se meti el carro de la prueba 2.
Prueba 4: SacarCarro con el msmo ndice de la prueba 3, y en cualquier hora.
Para problema a)
Prueba de las Unidades
Probar cada una de las unidades con las siguientes aserciones:
Empleado.esSexo(sexo)
si sexo == Empleado.sexo,
Empleado.esSexo ser verdadero
Empresa.contarEmpleados(sexo)
nunca ser negativo
siempre ser menor o igual a la cantidad
total de empleados en la empresa
Prueba de Integracin
Probar los siguientes mdulos que integran a las unidades, con las siguientes
aserciones:
Empresa.totalSueldos(sexo)
ser ms grande o igual que el sueldo
ms grande del Empleado.sexo == sexo en la empresa.
Empresa.promedioSueldos(sexo)
ser ms grande o igual que el sueldo
ms pequeo del Empleado.sexo == sexo en la empresa.
ser ms pequeo o igual que el sueldo
ms grande del Empleado.sexo == sexo en la empresa.
Para problema b)
Prueba de las Unidades
Probamos las unidades:
Para el docente, probar que los sueldos sean reales (nada
desorbitante), que los nombres sean coherentes, verificar unicidad del
cdigo de docente.
Para el administrador se considerara los mismos puntos que
para el docente
Prueba de Integracin
Probamos los mdulos:
Se controla que no falle el sistema de descuentos, estar
constantemente pendiente de la taza de descuentos.