Vous êtes sur la page 1sur 104

ALGORITMICA Y PROGRAMACION POR OBJETOS I

Nivel 2

Definiendo situaciones y
manejando casos

Marcela Hernández Hoyos


Qué vamos a aprender en este
nivel:
• Diferencia entre clase y objeto
• Modelar características de un objeto
– Utilizando nuevos tipos simples de datos
– Utilizando la técnica de definir constantes para representar los
valores posibles de un atributo
• Utilizar expresiones
– Medio para identificar una situación posible en el estado de un
objeto y para indicar la manera de modificar dicho estado
• Utilizar instrucciones condicionales simples y
compuestas como parte del cuerpo de un método
– Para considerar distintos casos posibles en la solución de un
problema
• Clasificar los métodos de una clase:
– Constructores
– Modificadores
– Analizadores
Caso de Estudio: La Tienda
La Tienda
– Vende cuatro productos.
– Cada producto tiene:
• Nombre
• Tipo: papelería, supermercado o droguería
• Cantidad actual del producto en la tienda (número de unidades
disponibles para la venta que hay en bodega)
• Número de productos por debajo del cual se debe hacer un
nuevo pedido al proveedor
• Precio base de venta por unidad
– Para calcular el precio final de cada producto, se deben
sumar (al precio de base) los impuestos que define la
ley (IVA):
• 16% para los productos de papelería
• 4% para los productos de supermercado
• 12% para los productos de droguería
La Tienda
– El programa de manejo de esta tienda debe
permitir:
• Vender al cliente un cierto número de unidades del
producto
• Hacer un pedido de un producto para el cual ya se llegó
al tope mínimo definido
• Mostrar algunas estadísticas de la tienda:
– El producto mas vendido
– El producto menos vendido
– La cantidad total de dinero obtenido por las ventas de
la tienda
– El promedio de ventas de la tienda (valor total de las
ventas dividido por el número total de unidades
vendidas)
Requerimientos Funcionales

– R1:Vender un producto.
– R2: Hacer pedido de un producto.
– R3: Calcular estadísticas de la
empresa.
La Tienda

R1

R2
R3
Requerimientos Funcionales

Nombre R1 – Vender un producto

Vender a un cliente un cierto número de unidades de


Resumen
un producto

Entradas

1. el nombre del producto


2. la cantidad de unidades

Resultado

Si había suficiente cantidad del producto disponible, se vendió al


cliente lo que pidió. Si no, se le dio todo lo que se tenía en la bodega
de la tienda. En la caja de la tienda se guardó el dinero resultado de la
venta. El cliente fue informado de la cantidad que se le vendió.
Requerimientos Funcionales

Nombre R2 – Hacer pedido de un producto

Hacer un pedido de un producto para el cual ya se


Resumen
llegó al tope mínimo definido

Entradas

Resultado
Requerimientos Funcionales
Nombre R3 – Calcular estadísticas de ventas.

Mostrar las siguientes estadísticas:


(a) el producto más vendido
(b) el producto menos vendido
Resumen
(c) la cantidad total de dinero obtenido por las ventas
de la tienda
(d) el promedio de ventas de la tienda.

Entradas

Ninguna

Resultado

Se ha presentado por pantalla la información estadística antes


descrita.
Modelo conceptual

Tienda Producto

1. Defina los atributos de cada entidad (Tienda y Producto), sin especificar


por ahora su tipo
2. Dibuje las asociaciones entre las clases y asigne a cada asociación un
nombre y una dirección
Nuevos elementos de modelaje
Tipos simples de datos
• Entero (int) 562
12

• Real (double) 564.78


-98.3

• String (cadena
de caracteres) “esta es una cadena”
“”
““
Ejemplo tipo double en la Tienda
Producto public class Producto
{
valorUnitario
private double valorUnitario;
}

Ejemplos de posibles instrucciones de cualquier método


de la clase Producto:

valorUnitario = 23.12;
int valorPesos = ( int ) valorUnitario;
valorUnitario = valorUnitario / 1.07;
int valorPesos = 17 / 3;
Operadores aritméticos
• Suma +
• Resta -
• Multiplicación *
• División /

• Módulo %
Calcula el residuo de la división entre dos valores
Ejemplos del operador %
4%4 0

14 % 3 2

17 % 3 2

3 % 17 3

4.5 % 2.2 0.1


Tipos simples de datos
• int
• double
• String

• boolean
•Permite representar valores lógicos
(verdadero o falso)
•Solo tiene dos valores: true y false
Ejemplo tipo boolean en la Tienda
Producto public class Producto
{
valorUnitario
private double valorUnitario;
subsidiado
private boolean subsidiado;
}

Ejemplos de posibles instrucciones de cualquier método


de la clase Producto:

subsidiado = true;
subsidiado = false;
boolean variableLogica = subsidiado;
Tipos simples de datos
• int
• double
• String
• boolean

• char

•Sirve para representar un caracter (letra)


•Los caracteres se escriben entre comillas
simples ‘’
Ejemplo tipo char en la Tienda
public class Producto
Producto
{
valorUnitario private double valorUnitario;
subsidiado private boolean subsidiado;
calidad
private char calidad;
}

Ejemplos de posibles instrucciones de cualquier método


de la clase Producto:

calidad = ‘A’;
calidad = ‘B’;
char variableCaracter = calidad;
Uso de CONSTANTES
• En los programas se pueden usar
constantes para:
– Definir el dominio de un atributo
(posibles valores que puede tomar un
atributo)
– Representar valores inmutables (que no
van a cambiar durante la ejecución del
programa)
Constantes para definir el dominio
de un atributo
• Se usan cuando un atributo solo
puede tomar un cierto número de
valores.
• Ejemplo: el tipo del producto, solo
puede ser:
– supermercado
– papelería
– droguería
Constantes para definir el dominio
de un atributo
• Se usan cuando un atributo solo
puede tomar un cierto número de
valores.
• Ejemplo: el tipo del producto, solo
puede ser:
– Supermercado (1)
– Papelería (2)
– Droguería (3)
Ejemplo del uso de constantes en
la Tienda
public class Producto
Producto {
// Constantes
valorUnitario public final static int PAPELERIA = 1;
subsidiado
public final static int SUPERMERCADO = 2;
calidad
public final static int DROGUERIA = 3;
tipo

// Atributos
private double valorUnitario;
private boolean subsidiado;
private char calidad;
private int tipo;
}
Ejemplos de instrucciones con uso
de constantes

• Las siguientes instrucciones pueden


ir como parte de cualquier método
de la clase Producto:

tipo = PAPELERIA;
tipo = SUPERMERCADO;
tipo = DROGUERIA;
Ejemplos de instrucciones con uso
de constantes
• El siguiente método podría pertenecer a la
clase Tienda:

public void ejemplo( )


{

int tipoVenta = Producto.PAPELERIA;
int tipoCompra = Producto.SUPERMERCADO;

}
Constantes para representar
valores inmutables
• Se usan para representar valores que
no van a cambiar durante la ejecución
del programa.
• Pueden ser de cualquier tipo (String,
double, …)
Ejemplo del uso de constantes en
la Tienda
public class Producto
{
// Constantes
public final static int PAPELERIA = 1;
public final static int SUPERMERCADO = 2;
public final static int DROGUERIA = 3;

private final static double IVA_PAPEL = 0.16;


private final static double IVA_FARMACIA = 0.12;
private final static double IVA_MERCADO = 0.04;

}
Ejemplos de instrucciones con uso
de constantes
• Las siguientes instrucciones pueden ir como parte
de cualquier método de la clase Producto:

double precio = valorUnitario * (1 + 0.04);

double precio = valorUnitario * (1 + IVA_MERCADO);


Ejemplos de instrucciones con uso
de constantes
• Las siguientes instrucciones pueden ir como parte
de cualquier método de la clase Producto:

double precio = valorUnitario * (1 + 0.04);

double precio = valorUnitario * (1 + IVA_MERCADO);


Clases y Objetos
Clase es diferente de Objeto
• Clase (Plantilla, Molde, • Objeto
Formato)
– Pertenecen a una clase
– Caso general
– No dice cuál es el valor de un – Cumplen con la estructura
atributo de atributos que exige la
– Solo afirma cuáles son los clase
atributos que deben tener los – Tienen valores en sus
objetos que pertenezcan a esa
clase atributos

Producto :Producto

String nombre nombre = “libreta”


int tipo tipo = PAPELERIA
double valorUnitario valorUnitario = 5500
int cantidadBodega cantidadBodega = 44
int cantidadMinima cantidadMinima = 15
int totalProductosVendidos totalProductosVendidos = 6
Clase es diferente de Objeto
En cuanto a los métodos …
• Clase • Objeto
– Define los métodos – Puede ejecutar los
– Es decir, dice cómo métodos de la clase
deben reaccionar sus
objetos cuando se a la cual pertenece
invoque uno de sus
métodos
Ejemplos:
linea1.darNumeroMinutos( )
linea2.agregarLlamadaLocal( )
p1.darCantidadMinima( )
p2.darProductosVendidos( )
Creación de objetos de una clase
Creación de un Objeto
• Un objeto se crea:
– utilizando la instrucción new
– dando el nombre de la clase a la cual pertenece

:Producto

nombre =
tipo =
Producto p = new Producto( ); valorUnitario =
cantidadBodega =
cantidadMinima =
totalProductosVendidos =
Creación de un Objeto
• Un objeto se crea:
– utilizando la instrucción new
– dando el nombre de la clase a la cual pertenece

Atributos NO incializados :Producto

nombre =
tipo =
Producto p = new Producto( ); valorUnitario =
cantidadBodega =
cantidadMinima =
totalProductosVendidos =
Creación de un Objeto
• Para inicializar los valores de un objeto, se
usan los métodos CONSTRUCTORES:
– Son invocados automáticamente en el momento de
ejecutar la instrucción de creación
– Reglas:
• El método constructor se debe llamar igual a la clase
• No puede tener ningún tipo de retorno
Método constructor de la clase
Producto
public Producto
{
tipo = 0;
nombre = “”;
valorUnitario = 0.0;
cantidadBodega = 0;
cantidadMinima = 0;
totalProductosVendidos = 0;
}
Creación de un Objeto

Atributos incializados :Producto

nombre = “”
tipo = 0
Producto p = new Producto( ); valorUnitario = 0.0
cantidadBodega = 0
cantidadMinima = 0
totalProductosVendidos = 0
Constructor con Parámetros
public Producto (int tip, String nom, double val, int cant, int min)
{
tipo = tip;
nombre = nom;
valorUnitario = val;
cantidadBodega = cant;
cantidadMinima = min;
totalProductosVendidos = 0;
}
Creación de un Objeto

:Producto
Atributos incializados
nombre = “lapiz”
tipo = PAPELERIA
Producto p = new Producto (Producto.PAPELERIA, valorUnitario = 500.0
“lapiz”, 500.0, 30, 9 ); cantidadBodega = 30
cantidadMinima = 9
totalProductosVendidos = 0

public Producto (int tip, String nom, double val, int cant, int min)
Quién instancia los productos ?
Quién instancia los productos ?

R// La Tienda
En el método constructor de la
Tienda
public Tienda ( Producto a1, Producto a2, Producto a3, Producto a4)
{
p1 = a1;
p2 = a2;
p3 = a3;
p4 = a4;
dineroEnCaja = 0;
}
Quién crea los productos y la
tienda?

R// La Interfaz
En el constructor de la interfaz
public InterfazTienda( )
{
// Crea los 4 productos de la tienda
Producto p1 = new Producto( Producto.PAPELERIA, "lápiz", 550.0, 18, 5 );
Producto p2 = new Producto( Producto.DROGUERIA, "aspirina", 109.5, 25, 8 );
Producto p3 = new Producto( Producto.PAPELERIA, "borrador", 207.3, 30, 10 );
Producto p4 = new Producto( Producto.SUPERMERCADO, "pan", 150.0, 15, 20 );

// Crea la tienda con sus 4 productos


tienda = new Tienda( p1, p2, p3, p4 );
}
Escenario posible de la tienda
Creación de ese escenario
1. Crear los 4 productos
public InterfazTienda( ) como variables locales del
{ método InterfazTienda

Producto x = new Producto( Producto.PAPELERIA,


“libreta", 5500, 44, 15 );
Producto y = new Producto( Producto.SUPERMERCADO,
“leche", 2100, 25, 10 );
Producto z = new Producto( Producto.SUPERMERCADO,
“jabón", 4200, 36, 8 );
Producto w = new Producto( Producto.DROGUERIA,
“aspirina", 2400, 13, 11 );
tienda = new Tienda( x, y, z, w );
}
Qué pasa cuando se hace new Producto…

Producto x = new Producto( Producto.PAPELERIA, “libreta", 5500, 44, 15 );

public Producto (int tip, String nom, double val, int cant, int min)
{
tipo = tip;
nombre = nom;
valorUnitario = val;
cantidadBodega = cant; R// Se ejecuta automáticamente
el método constructor de la
cantidadMinima = min; clase Producto con los
totalProductosVendidos = 0; parámetros en ORDEN correcto
}
Producto x = new Producto( Producto.PAPELERIA, “libreta", 5500, 44, 15 );

public Producto (int tip, String nom, double val, int cant, int min)
{
tipo = tip; Parámetros del método, que son los
nombre = nom; valores que se asignan a los atributos del
producto que se está creando
valorUnitario = val;
cantidadBodega = cant;
cantidadMinima = min;
totalProductosVendidos = 0;
}

Atributos del
producto que se No todos los valores que se asignan a los atributos en
está creando el método constructor entran como parámetros. En la
creación del objeto se pueden también dar valores por
defecto a algunos atributos
Resultado: se crea un nuevo objeto
llamado x de la clase Producto
Producto x = new Producto( Producto.PAPELERIA, “libreta", 5500, 44, 15 );

public Producto (int tip, String nom, double val, int cant, int min)
{
tipo = tip; x
nombre = nom;
valorUnitario = val;
cantidadBodega = cant;
cantidadMinima = min;
totalProductosVendidos = 0;
}
0
Volvamos a InterfazTienda …
1. Crear los 4 productos
public InterfazTienda( ) como variables locales del
{ método InterfazTienda

Producto x = new Producto( Producto.PAPELERIA,


“libreta", 5500, 44, 15 );
Producto y = new Producto( Producto.SUPERMERCADO,
“leche", 2100, 25, 10 );
Producto z = new Producto( Producto.SUPERMERCADO,
“jabón", 4200, 36, 8 );
Producto w = new Producto( Producto.DROGUERIA,
“aspirina", 2400, 13, 11 );
tienda = new Tienda( x, y, z, w );
}
Creación de la tienda
2. Crear la tienda, pasando como
public InterfazTienda( ) parámetros a su método
constructor, las variables locales
{ que contienen los productos

Producto x = new Producto( Producto.PAPELERIA,


“libreta", 5500, 44, 15 );
Producto y = new Producto( Producto.SUPERMERCADO,
“leche", 2100, 25, 10 );
Producto z = new Producto( Producto.SUPERMERCADO,
“jabón", 4200, 36, 8 );
Producto w = new Producto( Producto.DROGUERIA,
“aspirina", 2400, 13, 11 );
tienda = new Tienda( x, y, z, w );
}
Qué pasa cuando se hace new Tienda…

tienda = new Tienda( x, y, z, w );


public Tienda ( Producto a1, Producto a2, Producto a3, Producto a4)
{
p1 = a1;
p2 = a2;
R// Se ejecuta automáticamente
p3 = a3; el método constructor de la
p4 = a4; clase Tienda con los
parámetros en el ORDEN
dineroEnCaja = 0;
correcto
}
tienda = new Tienda( x, y, z, w );
public Tienda ( Producto a1, Producto a2, Producto a3, Producto a4)
{
p1 = a1; Parámetros del método, que son los
valores que se asignan a los atributos de la
p2 = a2; tienda que se está creando
p3 = a3;
p4 = a4;
dineroEnCaja = 0;
}
No todos los valores que se asignan a los atributos en
Atributos de la el método constructor entran como parámetros. En la
tienda que se está creación del objeto se pueden también dar valores por
creando defecto a algunos atributos
Resultado: se crea un nuevo objeto
llamado tienda de la clase Tienda

tienda = new Tienda( x, y, z, w );


public Tienda ( Producto a1, Producto a2, Producto a3, Producto a4)
{
p1 = a1;
p2 = a2;
p3 = a3;
p4 = a4;
dineroEnCaja = 0;
}
Manejo de asociaciones opcionales
Asociaciones opcionales
• En algunos problemas, las asociaciones
pueden o no existir.
• Ejemplo:
– La tienda puede tener 1, 2, 3 ó 4 productos.
– No todos tienen que existir obligatoriamente.

p1
Tienda Producto
0..1
p2
0..1
p3 En UML
0..1
p4
0..1
Asociaciones opcionales

p1
Tienda Producto
0..1
p2
0..1
p3
0..1
p4
0..1

•La cardinalidad de la asociación es cero o uno (0..1) para indicar que


puede o no existir el objeto
•Si en el diagrama no aparece ninguna cardinalidad, se interpreta
como 1 (existe exactamente un objeto de la otra clase)
Asociaciones opcionales
Si el objeto
correspondiente
a una asociación no está
presente, su valor es null
Expresiones
Una expresión es …
• La manera como expresamos en un
lenguaje de programación algo sobre el
estado de un objeto (valores de sus
atributos)
• El medio que tenemos para decir en un
programa algo sobre el mundo del
problema
Mas sobre expresiones…
• Aparecen dentro del cuerpo de los métodos
• Están formadas por:
– Operandos:
• Atributos
• Parámetros
• Valores (números por ejemplo)
• Constantes
• Llamadas a métodos
– Operadores
• Indican la manera de calcular el valor de la expresión
• Dependen del tipo de los datos que los operandos
Forma general de una expresión

Operando Operador Operando

• Atributos • Atributos
• Parámetros • Parámetros
• Valores (números • Valores (números
por ejemplo) por ejemplo)
• Constantes • Constantes
• Llamadas a • Llamadas a
métodos métodos
Expresiones artiméticas

Operando Operador Operando

• Atributo •+ • Atributo
• Parámetro • Parámetro
• Valor
•- • Valor
• Constante
• Constante •* • Llamada a un
• Llamada a un
método
método •/
•%
Ejemplos de expresiones
aritméticas
La expresión … Se interpreta como …
valorUnitario * 2 El doble del valor unitario del
producto
cantidadBodega - cantidadMinima La cantidad del producto que
hay que vender antes de poder
hacer un pedido
valorUnitario * (1 + ( IVA_PAPEL / 2) ) El precio al usuario si el
producto debe pagar el IVA de
los productos de papelería
(16%) y solo paga la mitad de
éste
totalProductosVendidos * 1.1 El número total de unidades
vendidas del producto, inflado
en un 10%
Ejemplos de expresiones
aritméticas
La expresión … Se interpreta como …
valoUnitario * 2 El doble del valor unitario del
producto
cantidadBodega - cantidadMinima La cantidad del producto que
hay que vender antes de poder
hacer un pedido
valorUnitario * (1 + ( IVA_PAPEL / 2) ) El precio al usuario si el
producto debe pagar el IVA de
los productos de papelería
(16%) y solo paga la mitad de
éste
totalProductosVendidos * 1.1 El número total de unidades
vendidas del producto, inflado
en un 10%
Ahora … Nuevos operadores, no
solo aritméticos
Operadores relacionales
• Permiten establecer un valor de verdad
(verdadero o falso) para una situación
del mundo.
• Ejemplo: queremos establecer si el
valor unitario antes de los impuestos
de un producto es menor que $10.000.

valorUnitario < 10000


Operadores relacionales
Es igual que == valorUnitario == 55.75

Es diferente de != tipo != PAPELERIA

Es menor que < cantidadBodega < 120

Es mayor que > cantidadBodega > cantidadMinima

Es menor o <= valorUnitario <= 100.0


igual que
Es mayor o >= valorUnitario >= 100.0
igual que
Ejemplo del uso de operadores relacionales para
saber si algo es verdadero o falso sobre un
producto

La expresión … Se interpreta como …


tipo == DROGUERIA El producto es de droguería?

cantidadBodega > 0

totalProductosVendidos > 0

cantidadBodega <= cantidadMinima


Ejemplo del uso de operadores relacionales para
saber si algo es verdadero o falso sobre un
producto

La expresión … Se interpreta como …


tipo == DROGUERIA El producto es de droguería?

cantidadBodega > 0 Hay disponibilidad del producto


en la bodega?

totalProductosVendidos > 0 Se ha vendido alguna unidad


del producto?

cantidadBodega <= cantidadMinima Ya es posible hacer un nuevo


pedido del producto?
Operadores lógicos
• Permiten describir situaciones mas
complejas
• Son composiciones de expresiones
relacionales o de atributos de tipo
boolean
Operadores lógicos
Operador Se lee como

&& y

|| o

! no
Aplicación de operadores
lógicos
operando1 && operando2 Es cierto, si ambos
operandos son verdaderos
operando1 || operando2 Es cierto, si cualquiera de los
dos operandos es verdadero
! operando1 Es cierto, si el operando es
falso
Ejemplo del uso de operadores lógicos para saber
si algo es verdadero o falso sobre un producto
La expresión … Se interpreta como …
tipo == SUPERMERCADO && El producto es de supermercado y no
totalProductosVendidos == 0 se ha vendido ninguna unidad? En
este caso, si el producto no es de
supermercado o ya se ha vendido
alguna unidad, la expresión es falsa
valorUnitario >= 10000 && El producto vale entre 10000 y 20000
valorUnitario <= 20000 && y además es un producto de
tipo == DROGUERIA drogueria?

! (tipo == PAPELERIA) El producto no es de papelería?

tipo == SUPERMERCADO || El producto es de supermercado o


tipo == DROGUERIA droguería?
Tarea 2
Objetivo: Generar habilidad en la construcción e
interpretación de expresiones, utilizando el caso
de estudio de la tienda.
Nuevos Operadores de
Asignación
Nuevos operadores
• Operador ++
– Incrementa un atributo (o variable) entero en 1
• Operador - -
– Decrementa un atributo (o variable) entero en 1
• Operador +=
– Incrementa un atributo (o variable) en el valor dado
después del operador
• Operador -=
– Decreementa un atributo (o variable) en el valor dado
después del operador
Ejemplos – En la clase Producto
public void nuevaUnidadBodega( )
{
cantidadBodega = cantidadBodega + 1;
}

OTRA FORMA DE ESCRIBIRLO:

public void nuevaUnidadBodega( )


{
cantidadBodega++;
}

OTRA FORMA DE ESCRIBIRLO:

public void nuevaUnidadBodega( )


{
cantidadBodega += 1;
}
Ejemplos – En la clase Producto
public void hacerPedido( int cantidad )
{
cantidadBodega = cantidadBodega + cantidad;
}

OTRA FORMA:

public void hacerPedido( int cantidad )


{
cantidadBodega += cantidad;
}
Tarea 3
Objetivo: Generar habilidad en la utilización de las
asignaciones y las expresiones como medio para
transformar el estado de un objeto.
Instrucciones Condicionales
Cuándo usar instrucciones
condicionales?

• Cuando necesitamos dar una solución a


un problema considerando distintos
CASOS que se pueden presentar

• Dependiendo del CASO (que se expresa


con una CONDICION) se ejecuta una
acción diferente.
Instrucción if-else
if (condicion)
{
instrucciones que se deben ejecutar si se cumple la condición
}
else
{
instrucciones que se deben ejecutar si NO se cumple la condición
}
Ejemplo 1
Class Producto
{
public void vender ( int cantidad )
{
if ( cantidad > cantidadBodega )
{
totalProductosVendidos += cantidadBodega;
cantidadBodega = 0;
}
else
{
totalProductosVendidos += cantidad;
cantidadBodega -= cantidad;
}
}
}
Ejemplo 2
Class Producto
{
public boolean haySuficienteParaVender ( )
{
boolean suficiente;

if ( cantidadBodega > cantidadMinima)


{
suficiente = true;
}
else
{
suficiente = false;
}

return suficiente;
}
}
Ejemplo 2 – Otra opción
Class Producto
{
public boolean haySuficienteParaVender ( )
{
return ( cantidadBodega >
cantidadMinima);
}
}
Ejemplo 3
• Dar el precio final de un producto de papelería con o sin IVA
dependiendo del parámetro que lo indica

Class Producto
{
public double darPrecioFinalPapeleria ( boolean conIVA)
{
double precioFinal = valorUnitario;

if ( conIVA == true)
{
precioFinal = valorUnitario + (valorUnitario * IVA_PAPEL);
}

return precioFinal;
}
}
Ejemplo 3 – Otra opción
• Dar el precio final de un producto de papelería con o sin IVA
dependiendo del parámetro que lo indica

Class Producto
{
public double darPrecioFinalPapeleria ( boolean conIVA)
{
double precioFinal = valorUnitario;

if ( conIVA )
{
precioFinal = valorUnitario + (valorUnitario * IVA_PAPEL);
}

return precioFinal;
}
}
Condicionales en Cascada =
Varios CASOS
if (condicion1)
{
instrucciones que se deben ejecutar si se cumple la condición1
}
else if (condicion2)
{
instrucciones que se deben ejecutar si se cumple la condición2
}
else if (condicion3)
{
instrucciones que se deben ejecutar si se cumple la condición3
}

else
{
instrucciones que se deben ejecutar si no se cumple ninguna de las
condiciones anteriores
}
Ejemplo – En la Clase Producto
public double darIVA ( )
{
if ( tipo == PAPELERIA)
{
return IVA_PAPEL;
}
else if ( tipo == SUPERMERCADO)
{
return IVA_MERCADO;
}
else
{
return IVA_FARMACIA;
}
}
Ejemplo – Otra opción
public double darIVA ( )
{
double resp = 0.0;
if ( tipo == PAPELERIA)
{
resp = IVA_PAPEL;
}
else if ( tipo == SUPERMERCADO)
{
resp = IVA_MERCADO;
}
else
{
resp = IVA_FARMACIA;
}
return resp;
}
Ejemplo – En la Clase Producto
public double calcularPrecioFinal ( )
{
if ( tipo == PAPELERIA)
{

}
else if ( tipo == SUPERMERCADO)
{

}
else
{

}
}
Ejercicio – En la Clase Producto
public void hacerPedido ( int cantidadPedido )
{

Recibir un pedido, solo si


en bodega se tienen
menos unidades de las
indicadas en el tope
mínimo. En caso
contrario, el método no
debe hacer nada

}
Ejercicio – En la Clase Producto
public void cambiarValorUnitario ( int cantidadPedido )
{

Modificar el precio del


producto, utilizando la
siguiente política: si el
producto es de droguería
o papelería debe
disminuir un 10%. Si es
de supermercado, debe
aumentar un 5%.

}
Ejercicio – En la Clase Tienda
public int venderProducto ( String nombreProducto, int canidad )
{

Vender una cierta


cantidad del producto
cuyo nombre es igual al
recibido como parámetro.
El método retorna el
número de unidades
efectivamente vendidas.
Utilice el método vender
de la clase Producto
como parte de su
solución.
}
Ejercicio – En la Clase Tienda
public int cuantosPapeleria ( )
{

Calcular el número de
productos de papelería
que hay en la tienda.

}
Condicionales Compuestas
switch ( expresion )
{
case valor1:
instrucciones que se deben ejecutar si la expresión tiene el valor1
break;
case valor2:
instrucciones que se deben ejecutar si la expresión tiene el valor2
break;
case valor3:
instrucciones que se deben ejecutar si la expresión tiene el valor1
break;
}
Ejemplo sin switch
public double darIVA ( )
{
double iva = 0.0;
if ( tipo == PAPELERIA)
{
iva = IVA_PAPEL;
}
else if ( tipo == SUPERMERCADO)
{
iva = IVA_MERCADO;
}
else
{
iva = IVA_FARMACIA;
}
return iva;
}
Ejemplo con switch
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;
}
Comparación de Strings
Método equals de la clase String

• Para saber si dos strings (string1 y


string2) son idénticos:

string1.equals (string2)

• Es verdadero si string1 == string2, falso


de lo contrario
Ejercicio – En la Clase Tienda
public void venderUnidad ( String nombreProducto )
{
String nombre1, nombre2, nombre3, nombre4;
Vender una unidad del
nombre1 = p1.darNombre( ); producto que tiene el
nombre2 = p2.darNombre( ); nombre que llega como
nombre3 = p3.darNombre( ); parámetro
nombre4 = p4.darNombre( );

if ( nombre1.equals( nombreProducto ) == true )


p1.vender ( 1 );
else if ( nombre2.equals( nombreProducto ) == true )
p2.vender ( 1 );
else if ( nombre3.equals( nombreProducto ) == true )
p3.vender ( 1 );
else if ( nombre4.equals( nombreProducto ) == true )
p4.vender ( 1 );
}

Vous aimerez peut-être aussi