Definición de situaciones y
manejo de casos
Giovanni Hernández P.
Nivel 2
CASO DE ESTUDIO
Enunciado
En algunas tiendas, existen procesos de control de inventarios y de control de estadísticas para poder realizar
pedidos. Además, se realizan actividades de mercadeo con sus productos más vendidos. Estos procesos y
actividades sirven para poder tomar decisiones en cuanto a los productos que se deben vender en la
tienda.
En este caso, tenemos una pequeña tienda que vende cuatro productos, para cada uno de los cuales se debe
manejar la siguiente información: (1) su nombre, (2) su tipo (puede ser un producto de papelería, de
supermercado o de droguería), (3) la cantidad actual del producto en la tienda (número de unidades
disponibles para la venta que hay en bodega), (4) el número de productos por debajo del cual se debe
hacer un nuevo pedido al proveedor y (5) el precio base de venta por unidad. Para calcular el precio final
de cada producto, se deben sumar los impuestos que define la ley. Dichos impuestos dependen del tipo de
producto: uno de papelería tiene un IVA del 16%, uno de supermercado del 4% y uno de droguería del
12%. Eso quiere decir, que si un lápiz tiene un precio base de $10, el precio final será de $11,6
considerando que un lápiz es un producto de papelería, y sobre estos se debe pagar el 16% de impuestos.
El programa de manejo de esta tienda debe permitir las siguientes operaciones: (1) vender a un cliente un
cierto número de unidades de un producto, (2) hacer un pedido de un producto para el cual ya se llegó al
tope mínimo definido y (3) mostrar algunas estadísticas de la tienda. Dichas estadísticas son: (a) el
producto más vendido, (b) el producto menos vendido, (c) la cantidad total de dinero obtenido por las
ventas de la tienda y (d) el promedio de ventas de la tienda (valor total de las ventas dividido por el
número total de unidades vendidas de todos los productos).
Interfaz GUI
Taller No 1
Entender el problema del caso de
estudio tienda
Nuevos elementos del modelado
Caso de estudio (La tienda)
• Nuevos elementos del modelado
Entero
int
Real
double
Cadena de caracteres
String
double valorUnitario = 11.6;
Int valorPesos = (int) valorUnitario;
14 % 2  2
La parte entera de un valor real
Calcular el residuo
Nuevos elementos del modelado
Caso de estudio (La tienda)
• Valores lógicos (Verdadero - Falso)
Valor lógico
Ej.
Modelar la característica de
producto si es o no subsidiado
boolean
un
Sintaxis Java
Valores que tiene  true, false
public class Producto
{
private boolean subsidiado;
}
Nuevos elementos del modelado
Caso de estudio (La tienda)
• Un carácter (Un carácter alfanumérico)
Un carácter
Ej.
Un producto clasificado en
grupos: A, B, C, según su calidad
Sintaxis Java
public class Producto
{
private char calidad;
}
char
tres
Valores que tiene  un solo carácter
Se le asigna en comilla sencilla ‘
cadena de caracteres comilla doble “
Constantes para definir el dominio de
un atributo
Ej.
Modelar las características del tipo de producto
1. Supermercado
2. Papelería
3. Droguería
Constantes para definir el dominio de
un atributo …
public class Producto
{
// - - - - - - - - - - - - - - // Constantes
// - - - - - - - - - - - - - - -
public final static int PAPELERIA = 1;
public final static int SUPERMERCADO = 2;
public final static int DROGUERIA = 3;
// - - - - - - - - - - - - - - // Atributos
// - - - - - - - - - - - - - - -
Esta instrucción puede ir en
Cualquier método de la clase
Producto
tipo = PAPELERIA;
tipo = SUPERMERCADO;
tipo = DROGUERIA;
private int tipo;
}
Las constantes siempre van en mayúsculas. Si el nombre los compone mas
de una palabra se utiliza en “_” para unirlas.
Constantes para representar valores
inmutables
Valores que no van a cambiar durante la ejecución
de un programa
public class Producto
{
// - - - - - - - - - - - - - - // Constantes
// - - - - - - - - - - - - - - -
private final static double IVA_PAPEL = 0.16;
private final static double IVA_FARMACIA = 0.12;
private final static double IVA_MERCADO = 0.04;
}
Equivale a
precio = valorUnitario * (1 + IVA_MERCADO);
precio = valorUnitario * (1 + 0.04);
Taller No 2
Mostrar el uso de constantes para
representar los valores posibles de
alguna característica
Manejo de asociaciones opcionales
Modificar el enunciado de la tienda para que el
programa maneje 1,2,3 y 4 productos
Diagrama anterior
Nuevo diagrama
pr1 0..1
Tienda
Producto
pr1 0..1
Tienda
pr2 0..1
Producto
pr3 0..1
pr 0..1
Cardinalidad : Define el No de instancias de una clase que se puede manejar
a través de una asociación.
Manejo de asociaciones opcionales
Modificar el enunciado de la tienda para que el
programa maneje 1,2,3 y 4 productos
Nuevo diagrama
: Producto
pr1 0..1
Tienda
pr2 0..1
pr3 0..1
pr1
Producto
: Tienda
pr2 = null;
pr3 = null;
: Producto
pr 0..1
pr4
null : permite representar un objeto correspondiente a una asociación que
no esta presente.
Mostrar declaraciones de las clases
Tienda y Producto
pr1
Tienda
+dineroEnCaja
pr2
pr3
pr4
Producto
+nombre
+tipo
+valorUnitario
+cantidadBodega
+cantidadMinima
+totalProductosVendidos
public class Tienda
{
// --------------------// Atributos
//----------------------
private double dineroEnCaja;
// --------------------// Relaciones
//----------------------
private Producto pr1;
private Producto pr2;
private Producto pr3;
private Producto pr4;
}
Diagrama de clases
Taller No 3
Mostrar las declaraciones de las
clases Tienda y Producto
Expresiones
OPERADORES RELACIONALES
Permiten determinar un valor de verdad
(VERDADERO O FALSO) para una situación del
mundo.
Es igual que
==
valorUnitario == 55.75
Es diferente de
!=
tipo != PAPELERIA
Es menor que
<
cantidadBodega < 120
Es mayor que
>
cantidadBodega > cantidadMinima
Es menor o igual que
<=
valorUnitario <= 100.0
Es mayor o igual que
>=
valorUnitario >= 100
Describen situaciones de un objeto
Mapa Conceptual No 1
Identificar el funcionamiento los
operadores relacionales
Expresiones
OPERADORES LOGICOS
Permiten describir situaciones mas complejas, a
partir de varias expresiones relacionales o
atributos de tipo boolean
(Y)
&&
tipo == SUPERMERCADO && totalProductosVendidos == 0
(O)
||
tipo == SUPERMERCADO || tipo == PAPELERIA
(NO)
!
!(tipo == PAPELERIA)
Expresiones
OPERADORES SOBRE CADENAS DE CARACTERES
Concatenación
+
return “Compre el producto” + nombre + “ por solo $” +
valorUnitario;
Comparación
equals
return nombre.equals(buscado);
Extracción de
un caracter
charAt
cd1.charAt(1)
Ej.
String cad1 = “viva Pasto”;
String cad2 = “viva pasto”;
cad1.equals(cad2)
false
Existe una P mayúscula
Cad1.equalsIgnoreCase(cad2)
true
Compara e ignora si son mayúsculas o minúsculas
Cad1.charAt(1)
‘i’
Las cadenas de caracteres se enumeran desde 0
Otros operadores de asignación
• Operador ++: Se aplica a valores enteros
• Operador --: Se aplica a valores enteros
• Operador +=: Incrementa un atributo en
cualquier valor
• Operador -=: Decrementa un atributo en
cualquier valor
cantidadBodega ++;
cantidadBodega = cantidadBodega + 1;
Taller No 4
Generar habilidad en la utilización de
asignaciones y las expresiones como
un medio para transformar el estado
de un objeto
Clases y objetos
pr1
Tienda
+dineroEnCaja
pr2
pr3
pr4
Diagrama de objetos
Producto
+nombre
+tipo
+valorUnitario
+cantidadBodega
+cantidadMinima
+totalProductosVendidos
Creación de un objeto
Producto p = new Producto();
:Producto
pr1
nombre =
tipo =
valorUnitario =
cantidadBodega =
cantidadMinima =
totalProductoVendidos =
No tiene valores iniciales
Métodos constructores
Permiten inicializar los valores de un objeto y
son invocados automáticamente al momento
de ejecutar la instrucción de creación
Reglas:
1. Se debe llamar igual que la clase
2. No puede tener ningún tipo de retorno
Métodos constructores …
Ej.
Para la clase producto
public Producto()
{
tipo = 0;
nombre = “”;
valorUnitario = 0.0;
cantidadBodega = 0;
cantidadMinima = 0;
totalProductoVendidos = 0
}
Métodos constructores …
Producto p = new Producto();
:Producto
pr1
nombre = “”
tipo = 0
valorUnitario = 0.0
cantidadBodega = 0
cantidadMinima = 0
totalProductoVendidos = 0
Con valores iniciales a través del constructor
Métodos constructores …
Ej.
Una nueva tienda acaba de abrir y quiere utilizar el programa a
del caso de estudio con los siguientes productos:
1. Frasco jarabe para la gripe, producto de droguería, con un
valor base de $ 7.200
2. Botella de alcohol, producto de droguería, a $2.800 la
unidad
3. Kilo de queso, producto de supermercado, a $ 4.100 la
unidad
4. Resaltador, producto de papelería, a $ 3.500 la unidad
Métodos constructores …
Producto
Cantidad en bodega
Tope mínimo
Jarabe
14
10
Alcohol
12
8
Queso
10
4
Resaltador
20
10
Código
Producto pr1 = new Producto(Producto.Drogueria, “Jarabe”, 7200.0, 14, 10)
Taller No 5
Generar habilidad en el uso de los
constructores de las clases para crear
escenarios
Instrucciones condicionales
Permite plantear la solución al problema
considerando los diferentes casos que se
pueden presentar
Ej.
Cuando la cantidad que se desea vender es
mayor a la que existe en bodega.
Cuando la cantidad que se desea vender esta
disponible en bodega.
Instrucciones condicionales…
Caso
Expresión que describe el caso
Algoritmo para resolver el problema de ese caso
1
cantidad > cantidadBodega
// Vende todas las unidades disponibles
totalProductosVendidos += cantidadBodega;
cantidadBodega = 0;
2
Cantidad <= cantidadBodega
// vende lo pedido por el usuario
totalProductosVendidos += cantidad;
cantidadBodega -= cantidad;
Instrucciones condicionales…
Codigo Java
public class Producto
{
…
if(cantidad > cantidadBodega)
{
totalProductosVendidos += cantidadBodega;
cantidadBodega = 0;
}
else
{
totalProductosVendidos =+ cantidad;
cantidadBodega -= cantidad;
}
If () {}
Else { }
Instrucciones condicionales…
• Condicionales en cascada
Caso
Expresión que describe el caso
Algoritmo para resolver el problema de ese caso
1
(tipo==SUPERMERCADO)
return IVA_MERCADO;
2
(tipo==DROGUERIA)
return IVA_FARMACIA;
3
(tipo==PAPELERIA)
return IVA_PAPEL;
Instrucciones condicionales…
Codigo Java
public double darIVA()
{
if(tipo == PAPELERIA)
{
return IVA_PAPEL;
}
else if(tipo == SUPERMERCADO)
{
return IVA_MERCADO;
}
else
{
return IVA_FARMACIA;
}
}
If () {}
Else if() { }
Else {}
Mapa Conceptual
Identificar el funcionamiento de una
instrucción condicional
Taller No 6
Utilizar las instrucciones
condicionales simples para expresar
el cambio de estado que debe
hacerse en un objeto, en cada uno de
los casos identificados
Ej. Requerimiento
Nombre
R1-Dar el nombre del producto mas vendido entre el producto 1 y el
producto 2
Resumen
Se requiere calcular y retorna el producto que mas se ha vendido en
la tienda, entre el producto1 y el producto2
Entradas
Ninguna
Resultados
Se ha calculado y retornado el nombre del producto mas vendido.
Ej. Requerimiento
Nombre
R2-Dar el nombre del producto mas vendido entre el producto1, el
producto2 y el prducto3.
Resumen
Se requiere calcular y retorna el producto que más se ha vendido en
la tienda, entre el producto1 , el producto2 y el producto3.
Entradas
Ninguna
Resultados
Se ha calculado y retornado el nombre del producto mas vendido.
Ej. Requerimiento
Nombre
R3-Dar el nombre del producto mas vendido entre el producto1, el
producto2 ,el prducto3 y el producto4.
Resumen
Se requiere calcular y retorna el producto que mas se ha vendido en
la tienda, entre el producto1 , el producto2 , el producto3 y el
producto4.
Entradas
Ninguna
Resultados
Se ha calculado y retornado el nombre del producto mas vendido.
Codigo
Public String darProductoMasVendido()
{
int valor1 = p1.darProductosVendidos();
int valor2 = p2.darProductosVendidos();
int valor3 = p3.darProductosVendidos();
int valor4 = p4.darProductosVendidos();
if(valor1 > valor2 && valor1 > valor3 && valor1 > valor4)
{
return p1.darNombre();
}
else if(valor2 > valor1 && valor2 > valor3 && valor2 > valor4)
{
return p2.darNombre();
}
else if(valor3 > valor1 && valor3 > valor2 && valor3 > valor4)
{
return p3.darNombre();
}
else if(valor4 > valor1 && valor4 > valor2 && valor4 > valor3)
{
return p4.darNombre();
}
Ej. Requerimiento
Nombre
R2-Dar el producto con menos existencias
Resumen
S requiere calcular y retornar el nombre del producto con menos
existencias (Cantidad en bodega)
Entradas
Ninguna
Resultados
Se ha calculado y retornado el producto con menos existencias.
Instrucciones condicionales
compuestas
•
•
•
•
switch
Representa un conjunto de casos
Cada caso tiene un algoritmo diferente
Cada caso debe esta identificado con un valor
entero
Estructura de la instrucción switch
en java
switch(expresion)
{
case constante : solución del caso 1
break;
case constante : solución del caso 2
break;
….
}
Ej.
public double darIva()
{
double iva = 0.0;
switch( tipo)
{
case PAPELERIA:
iva = IVA_PAPEL;
break;
case SUPERMERCADO:
iva = IVA_MERCADO;
break;
case DROGUERIA:
iva = IVA_FARMACIA;
break;
}
return iva;
}
Ej.
Nombre
R3-Dar el nombre del tipo de producto
Resumen
Retorna el nombre del tipo de producto. Por ejemplo, si el producto
es de tipo SUPERMERCADO, debe retornar “El producto es de
supermercado”
Entradas
Ninguna
Resultados
Retorna el nombre del tipo de producto.
Método de la clase Producto
Ej.
Nombre
R4-Aumentar el precio del producto
Resumen
Aumenta el precio del producto de acuerdo con la siguiente regla: si
es un producto de droguería debe aumentar el 1%, si es de
supermercado el 3% y si es de papelería el 2%
Entradas
Ninguna
Resultados
El valor unitario del producto se ha aumentado en el porcentaje correspondiente.
Método de la clase Producto
Ej.
Nombre
R5-Retorna el precio final del producto
Resumen
Retorna el precio final del producto identificado por el numero si el
numero es 1 se debe retornar el precio del primer producto, si el
numero es 2 se debe entregar el precio del producto 2, si el numero
es 3 se debe entregar el precio del producto 3 y si el numero es 4
debe entregar el precio del producto 4.
Entradas
Numero de identificación
Resultados
Retorna el precio del producto de acuerdo con el numero de identificación.
Método de la clase Producto
Ej.
Nombre
R5-Retorna el precio final del producto
Resumen
Retorna el precio final del producto identificado por nombre del
producto.
Entradas
Nombre del producto
Resultados
Retorna el precio del producto de acuerdo con el nombre del producto.
Método de la clase Producto
Taller No 7
Utilizar las instrucciones condicionales simples
para expresar conjuntos de casos y soluciones
asociadas con los mismos.
Responsabilidades de una clase
Tipos de métodos
• Métodos constructores : Tienen la responsabilidad
de inicializar los valores de los atributos de un objeto
durante su creación
• Métodos modificadores: tienen la responsabilidad de
cambiar el estado de los objetos de la clase.
(“hacer”)
• Métodos analizadores: Tienen la responsabilidad de
analizar información a partir del estado de los
objetos de una clase. (“Saber”)
Responsabilidades de una clase…
• Una clase es responsable de administrar su
propia información.
• Una clase es responsable de ayudar a sus
vecinos del mundo y colaborar con ellos en la
solución de problemas.
• Primero los constructores
• Segundo los modificadores
• Tercero los analizadores
Mapa conceptual No 3
Identificar cuáles son las
responsabilidades de una clase.
Descargar

N2-Definición de situaciones y manejo de casos