apo1 - presentacion nivel 2
DESCRIPTION
Esta es la presentación del Nivel 2 del curso "ISIS-1204 Algorítmia y Programación por Objetos 1" (APO1) de la Universidad de los Andes, Bogotá, Colombia.TRANSCRIPT
ALGORÍTMICA Y PROGRAMACIÓN 1 (APO 1)
NIVEL 2
Mario José Villamizar Cano
Oficina ML-637
http://sistemas.uniandes.edu.co/~mj.villamizar24/dokuwiki/doku.php
Grupo de Tecnologías de Información y Comunicación (COMIT)
Departamento de Ingeniería de Sistemas y Computación
Universidad de los Andes, Bogotá D.C., Colombia
http://twitter.com/mariocloud
http://linkedin.com/in/mariojosevillamizarcano
REDES SOCIALES
NIVEL 2
Entrega de los ejercicios a tiempo
Ejercicios entregados incorrectamente
Errores comunes
Todo método tiene llaves
Las llaves de un método comienzan después de su signatura
Al finalizar un método no hay punto y coma
Un método solo puede retornar un valor
Los atributos son private, los métodos son public
No es necesario crear variables para retornar
Hay que diferenciar mayúsculas de minúsculas
Los atributos no llevan paréntesis
Realizar todas las tareas de los niveles
RETROALIMENTACIÓN NIVEL 1
NIVEL 2
NIVEL 2
Nuevos tipos simples de datos
Definición de constantes
Uso de expresiones
Instrucciones condicionales simples y compuestas
Identificar de manera informal los métodos de una clase
NIVEL 2 - DEFINICIÓN DE SITUACIONES Y MANEJO DE CASOS
CASOS DE ESTUDIO
1 Caso de estudio: La tienda
NIVEL 2
HOJAS DE TRABAJO
2 Hojas de trabajo: Juego de Triqui y Un estudiante
NIVEL 2
CASOS DE ESTUDIO - LA TIENDA
NIVEL 2
CASOS DE ESTUDIO - LA TIENDA
NIVEL 2
CASOS DE ESTUDIO - LA TIENDA DE LIBROS
R1 – Vender un producto
R2 – Hacer pedido de un producto
R3 – Calcular estadísticas de ventas
(a) el producto más vendido
(b) el producto menos vendido
(c) la cantidad total de dinero obtenido por las ventas de la tienda
(d) el promedio de ventas de la tienda
NIVEL 2
MANEJO DE VARIABLES
Sirven para manejar cálculos parciales en el interior de un método.
Se les debe definir un nombre y un tipo antes de que puedan ser
utilizadas.
Se destruyen al finalizar el método.
public double darValorUnitarioConIva( )
{
double valorConIva = valorUnitario * ( 1 + 0.16);
return valorConIva;
}
NIVEL 2
NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS
¿Por qué nuevas maneras de modelar una característica?
double
Para modelar características que toman valores reales.
Se denomina literal de un tipo de datos a un valor constante de dicho
tipo.
Declaración de un atributo tipo double
private double valorUnitario;
NIVEL 2
NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS
Instrucciones y operaciones con atributos tipo double e int
Asignación de un literal a un atributo
valor Unitario = 26.12;
int valorRedondeado = (int) valorUnitario;
valorUnitario = valorUnitario / 1.07;
int valorPesos = 17 / 3;
NIVEL 2
NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS
El operador módulo (%): residuo entre dos números
4 % 4 = 0
25 % 6 = 1
17 % 15 = 2
4.5 % 2.2 = 0.1
boolean: para representar valores lógicos (true o false)
private boolean subsidiado;
subsidiado = true;
subsidiado = false;
boolean valorLogico = subsidiado;
NIVEL 2
NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS
char: para representar un caracter
private char calidad;
calidad = 'A';
calidad = 'B';
calidad = 67;
char valorCaracter = calidad;
NIVEL 2
TAREAS
Leer hasta la página 98.
Desarrollar todas las tareas 1, 2, 3 y 4.
Comprender el enunciado del ejercicio del nivel 2.
NIVEL 2
PREGUNTAS
NIVEL 2
NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS
Constantes para definir el dominio de un atributo
Declaración de constantes
//Constantes
public final static int PAPELERIA = 1;
public final static int SUPERMERCADO = 2;
public final static int DROGUERIA = 3;
//Atributos
private int tipo;
NIVEL 2
NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS
Constantes para definir el dominio de un atributo
Operaciones dentro de un método de la clase Producto
tipo = PAPELERIA;
tipo = SUPERMERCADO;
tipo = DROGUERIA;
Operaciones dentro de un método de la clase Tienda
int tipoProductoVendido = Producto.PAPELERIA;
int tipoProductoComprado = Producto.SUPERMERCADO;
NIVEL 2
NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS
Constantes para representar valores inmutables
Declaración de constantes
//Constantes
public final static double IVA_PAPEL = 0.16;
public final static double IVA_FARMACIA = 0.12;
public final static double IVA_MERCADO = 0.04;
NIVEL 2
NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS
Constantes para representar valores inmutables
Operaciones dentro de un método de la clase Producto
precio = valorUnitario * (1 + IVA_MERCADO);
precio = valorUnitario * (1 + 0.04);
Operaciones dentro de un método de la clase Tienda
valorConIva = p1.darValorUnitario( ) * (1 + Producto.IVA_MERCADO);
valorConIva = p1.darValorUnitario( ) * (1 + 0.04);
NIVEL 2
EXPRESIONES
Una expresión es la manera en que expresamos en un lenguaje de
programación algo sobre el estado de un objeto.
Las expresiones aparecen dentro del cuerpo de los métodos y está
formadas por operandos y operadores.
Operandos = atributos, parámetros, literales, constantes, variables o
llamadas a métodos.
Los operadores que se pueden usar en una expresión dependen del
tipo de los datos de los operandos de la expresión.
Operadores = aritméticos, relacionales, lógicos, sobre cadenas de
caracteres, de asignación.
NIVEL 2
OPERADORES ARITMÉTICOS
+ (suma)
- (resta)
* (multiplicación)
/ (división)
% (modulo)
( ) (paréntesis)
Nota: Es importante colocar paréntesis para evitar ambigüedad en las
expresiones.
Orden de evaluación
Primero se aplican los paréntesis.
Luego se aplican los operadores de multiplicación y división, de
izquierda a derecha.
Después se aplican los operadores de suma y resta, de izquierda a
derecha.
NIVEL 2
OPERADORES DE ASIGNACIÓN
Manera más corta de describir las asignaciones
Operador ++
Se aplica a un atributo de tipo entero para incrementarlo en 1.
public void adicionarUnidadEnBodega( )
{
cantidadBodega++;
}
public void adicionarUnidadEnBodega( )
{
cantidadBodega = cantidadBodega + 1;
}
NIVEL 2
OPERADORES DE ASIGNACIÓN
Operador --
Se aplica a un atributo de tipo entero para disminuirlo en 1.
public void disminuirUnidadEnBodega( )
{
cantidadBodega--;
}
public void disminuirUnidadEnBodega( )
{
cantidadBodega = cantidadBodega - 1;
}
NIVEL 2
OPERADORES DE ASIGNACIÓN
Operador +=
Se utiliza para incrementar un atributo en cualquier valor.
public void pedir ( int cantidadPedida)
{
cantidadBodega += cantidadPedida;
}
public void pedir ( int cantidadPedida)
{
cantidadBodega = cantidadBodega + cantidadPedida;
}
NIVEL 2
OPERADORES DE ASIGNACIÓN
Operador -=
Se utiliza para disminuir un atributo en cualquier valor.
public void vender ( int cantidadVendida)
{
cantidadBodega -= cantidadVendida;
}
public void vender ( int cantidadVendida)
{
cantidadBodega = cantidadBodega - cantidadVendida;
}
NIVEL 2
OPERADORES SOBRE CADENAS DE CARACTERES
Operador + para concatenar cadenas de caracteres.
public String operadorMasEjemplo1( )
{
String nombres = “Carlos Felipe”;
String apellidos = “Giraldo Parra”;
String nombreCompleto = nombres + apellidos;
return nombreCompleto;
}
NIVEL 2
nombreCompleto = “Carlos FelipeGiraldo Parra”
OPERADORES SOBRE CADENAS DE CARACTERES
Operador + para concatenar cadenas de caracteres.
public String operadorMasEjemplo2( )
{
String nombres = “Carlos Felipe”;
String apellidos = “Giraldo Parra”;
String nombreCompleto = nombres + “ ” + apellidos;
return nombreCompleto;
}
NIVEL 2
nombreCompleto = “Carlos Felipe Giraldo Parra”
OPERADORES SOBRE CADENAS DE CARACTERES
Operador + para concatenar cadenas de caracteres.
public String operadorMasEjemplo3( )
{
String nombres = “Carlos Felipe”;
String apellidos = “Giraldo Parra”;
int creditosAprobados = 140;
double promedio = 4.63;
String informacionCompleta = “Nombres: ”+ nombres +
“ Apellidos: ” + apellidos + “C. Aprobados: ” +
creditosAprobados + “Promedio: ” + promedio;
return informacionCompleta;
}
NIVEL 2
informacionCompleta = “Nombres: Carlos Felipe Apellidos: Giraldo
Parra C. Aprobados: 140 Promedio: 4.63”;
OPERADORES SOBRE CADENAS DE CARACTERES
Método charAt de la clase String para acceder a un carácter dentro
de una cadena de caracteres.
public char darInicialDelNombre( )
{
String nombres = “Carlos Felipe”;
char inicial = nombres.charAt (0);
return inicial;
}
NIVEL 2
inicial = „C‟;
OPERADORES SOBRE CADENAS DE CARACTERES
Método charAt de la clase String para acceder a un carácter dentro
de una cadena de caracteres.
public char darSegundaLetraDelNombre( )
{
String nombres = “Carlos Felipe”;
char inicial = nombres.charAt (1);
return inicial;
}
NIVEL 2
inicial = „a‟
OPERADORES SOBRE CADENAS DE CARACTERES
Método equals de la clase String para comparar cadenas de
caracteres.
public boolean ejemplo1Equals( )
{
String producto1 = “Lapiz”;
String producto2 = “Lapiz”;
boolean resultadoComparacion = producto1.equals(producto2);
return resultadoComparacion;
}
NIVEL 2
resultadoComparacion = true
OPERADORES SOBRE CADENAS DE CARACTERES
Método equals de la clase String para comparar cadenas de
caracteres.
public boolean ejemplo2Equals( )
{
String producto1 = “Lapiz”;
String producto2 = “Lapiz”;
boolean resultadoComparacion = producto2.equals(producto1);
return resultadoComparacion;
}
NIVEL 2
resultadoComparacion = true
OPERADORES SOBRE CADENAS DE CARACTERES
Método equals de la clase String para comparar cadenas de
caracteres.
public boolean ejemplo3Equals( )
{
String producto1 = “Lapiz”;
String producto2 = “Lapiz ”;
boolean resultadoComparacion = producto2.equals(producto1);
return resultadoComparacion;
}
NIVEL 2
resultadoComparacion = false
OPERADORES SOBRE CADENAS DE CARACTERES
Método equals de la clase String para comparar cadenas de
caracteres.
public boolean ejemplo4Equals( )
{
String producto1 = “Lapiz”;
String producto2 = “Aspirina”;
boolean resultadoComparacion = producto2.equals(producto1);
return resultadoComparacion;
}
NIVEL 2
resultadoComparacion = false
OPERADORES SOBRE CADENAS DE CARACTERES
Método equalsIgnoreCase de la clase String para comparar cadenas
de caracteres sin tener en cuenta las mayúsculas y las minúsculas.
public boolean ejemplo1EqualsIgnoreCase( )
{
String producto1 = “Lapiz”;
String producto2 = “LAPIZ”;
boolean resultado = producto2.equalsIgnoreCase(producto1);
return resultado;
}
NIVEL 2
resultado = true
OPERADORES SOBRE CADENAS DE CARACTERES
Método equalsIgnoreCase de la clase String para comparar cadenas
de caracteres sin tener en cuenta las mayúsculas y las minúsculas.
public boolean ejemplo2EqualsIgnoreCase( )
{
String producto1 = “Lápiz”;
String producto2 = “LAPIZ”;
boolean resultado = producto2.equalsIgnoreCase(producto1);
return resultado;
}
NIVEL 2
resultado = false
OPERADORES SOBRE CADENAS DE CARACTERES
Método equalsIgnoreCase de la clase String para comparar cadenas
de caracteres sin tener en cuenta las mayúsculas y las minúsculas.
public boolean ejemplo3EqualsIgnoreCase( )
{
String producto1 = “Lápiz”;
String producto2 = “Aspirina”;
boolean resultado = producto2.equalsIgnoreCase(producto1);
return resultado;
}
NIVEL 2
resultado = false
CLASES Y OBJETOS
NIVEL 2
En el diagrama de objetos se habla de un escenario particular.
Cada Tienda puede tener sus propios productos.
p1
p2 p4
p3
dineroEnCaja = 0
:Tienda
nombre = “libreta”
tipo = PAPELERIA
valorUnitario = 5500
cantidadBodega = 44
cantidadMinima = 15
totalProductosVendidos = 6
:Producto
nombre = “leche”
tipo = SUPERMERCADO
valorUnitario = 2100
cantidadBodega = 25
cantidadMinima = 10
totalProductosVendidos = 25
:Producto nombre = “aspirina”
tipo = DROGUERIA
valorUnitario = 2400
cantidadBodega = 13
cantidadMinima = 11
totalProductosVendidos = 7
:Producto
nombre = “jabón”
tipo = SUPERMERCADO
valorUnitario = 4200
cantidadBodega = 36
cantidadMinima = 8
totalProductosVendidos = 14
:Producto
CLASES Y OBJETOS
NIVEL 2
Para inicializar los valores de un objeto, las clases permiten la
definición de métodos constructores.
public Producto()
{
tipo = 0;
nombre = "";
valorUnitario = 0.0;
cantidadBodega = 0;
cantidadMinima = 0;
totalProductosVendidos = 0;
}
El método constructor debe tener el mismo nombre de la clase.
El método constructor NO debe retornar ningún tipo de dato.
CLASES Y OBJETOS
NIVEL 2
Para crear un objeto de una clases se utiliza la instrucción new
El método constructor es llamado automáticamente cada vez que se
crea un objeto.
El objeto creado puede ser referenciado desde una variable o desde
un atributo.
Ejemplo de cómo crear un objeto de la clase Producto.
Producto p = new Producto( );
nombre = "" tipo = 0
valorUnitario = 0.0
cantidadBodega = 0
cantidadMinima = 0
totalProductosVendidos = 0
:Producto
p
CLASES Y OBJETOS
NIVEL 2
Una clase puede tener varios métodos constructores que se
diferencian por los parámetros recibidos.
public Producto( int tipoP, String nombreP, double valorUnitarioP,
int cantidadBodegaP, int cantidadMinimaP )
{
tipo = tipoP;
nombre = nombreP;
valorUnitario = valorUnitarioP;
cantidadBodega = cantidadBodegaP;
cantidadMinima = cantidadMinimaP;
totalProductosVendidos = 0;
}
En este caso al momento de crear un objeto de la clase, se pueden
definir los valores iniciales que van a tener los atributos del objeto.
CLASES Y OBJETOS
NIVEL 2
Ejemplo de cómo crear un objeto cuando el constructor recibe
parámetros.
Producto p = new Producto( Producto.PAPELERIA, "lápiz", 550.0, 8, 5 );
En este caso, al momento de crear un objeto de la clase, se deben
definir los valores iniciales que van a tener los atributos del objeto.
nombre = "lápiz" tipo = PAPELERIA
valorUnitario = 550.0
cantidadBodega = 8
cantidadMinima = 5
totalProductosVendidos = 0
:Producto
p
CLASES Y OBJETOS
NIVEL 2
Constructor de la clase Tienda
public Tienda( Producto p1P, Producto p2P, Producto p3P, Producto p4P )
{
p1 = p1P;
p2 = p2P;
p3 = p3P;
p4 = p4P;
dineroEnCaja = 0;
}
Creación de una 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 );
Tienda tienda = new Tienda( p1, p2, p3, p4 );
TAREAS
Leer hasta la página 123.
Desarrollar las tareas 5, 6, y 7.
Desarrollar el ejercicio del nivel 2.
NIVEL 2
PREGUNTAS
NIVEL 2
OPERADORES RELACIONALES
Permiten determinar un valor de verdad (falso o verdadero) para una
situación del mundo. Son seis:
Es igual que: ==
Es diferente de: !=
Es menor que: <
Es mayor que: >
Es menor o igual que: <=
Es mayor o igual que: >=
NIVEL 2
OPERADORES LÓGICOS
Sirven para construir expresiones más complejas a partir de
expresiones relacionales o de atributos de tipo boolean.
&& (y)
|| (o)
! (no)
NIVEL 2
TAREA 2
NIVEL 2
p1
p2 p4
p3
dineroEnCaja = 0
:Tienda
nombre = “libreta”
tipo = PAPELERIA
valorUnitario = 5500
cantidadBodega = 44
cantidadMinima = 15
totalProductosVendidos = 6
:Producto
nombre = “leche”
tipo = SUPERMERCADO
valorUnitario = 2100
cantidadBodega = 25
cantidadMinima = 10
totalProductosVendidos = 25
:Producto nombre = “aspirina”
tipo = DROGUERIA
valorUnitario = 2400
cantidadBodega = 13
cantidadMinima = 11
totalProductosVendidos = 7
:Producto
nombre = “jabón”
tipo = SUPERMERCADO
valorUnitario = 4200
cantidadBodega = 36
cantidadMinima = 8
totalProductosVendidos = 14
:Producto
INSTRUCCIONES CONDICIONALES
Una instrucción condicional nos permite plantear la solución a un
problema considerando los diferentes casos que se pueden presentar.
Hay que identificar todos los posibles casos.
Se deben utilizar un algoritmo para la solución de cada caso.
NIVEL 2
Problema
Caso 1 Caso 2
Algoritmo 1 Algoritmo 2
Caso n
Algoritmo n
INSTRUCCIONES CONDICIONALES SIMPLES
Utilizadas para solucionar problemas con dos casos.
En Java se utiliza la instrucción if else para expresar los posibles
casos dentro de un método.
La instrucción if else tiene tres elementos.
Un condición que corresponde una expresión lógica capaz de distinguir
los dos posibles casos.
La solución para el primer caso.
La solución para el segundo caso.
NIVEL 2
INSTRUCCIONES CONDICIONALES SIMPLES
La estructura de la instrucción if else es la siguiente.
if( condición )
{
//Algoritmo caso 1, cuando la condición es verdadera
}
else
{
//Algoritmo caso 2, cuando la condición es falsa
}
A partir de la condición se decide cual de los dos algoritmos ejecutar,
NUNCA se ejecutan los dos algoritmos.
NIVEL 2
INSTRUCCIONES CONDICIONALES SIMPLES
Definir un método para vender una determinada cantidad de un
producto teniendo en cuenta que solo se puede vender la cantidad que
hay en la bodega.
public void vender( int cantidad )
{
if( cantidad > cantidadBodega )
{
totalProductosVendidos += cantidadBodega;
cantidadBodega = 0;
}
else
{
totalProductosVendidos += cantidad;
cantidadBodega -= cantidad;
}
}
NIVEL 2
INSTRUCCIONES CONDICIONALES SIMPLES
Definir un método para vender una determinada cantidad de un
producto teniendo en cuenta que solo se puede vender la cantidad que
hay en la bodega.
public void vender( int cantidad )
{
if( cantidad <= cantidadBodega )
{
totalProductosVendidos += cantidad;
cantidadBodega -= cantidad;
}
else
{
totalProductosVendidos += cantidadBodega;
cantidadBodega = 0;
}
}
NIVEL 2
INSTRUCCIONES CONDICIONALES SIMPLES
Si el algoritmo que resuelve uno de los casos sólo tiene una
instrucción, es posible eliminar los corchetes.
public boolean hayQueHacerPedido( )
{
if(cantidadBodega < cantidadMinima )
{
return true;
}
else
{
return false;
}
}
NIVEL 2
INSTRUCCIONES CONDICIONALES SIMPLES
Si el algoritmo que resuelve uno de los casos sólo tiene una
instrucción, es posible eliminar los corchetes.
public boolean hayQueHacerPedido( )
{
if(cantidadBodega < cantidadMinima )
return true;
else
return false;
}
NIVEL 2
CONDICIONALES EN CASCADA
Cuando el problema tiene más de dos casos, es necesario utilizar
una cascada (secuencia) de instrucciones if-else. En cada condición de
debe indicar la situación que se quiere considerar.
if( condición_1 )
{
//Algoritmo caso 1, cuando la condición 1 es verdadera
}
else if ( condición_2 )
{
//Algoritmo caso 2, cuando la condición 2 es verdadera
}
else
{
//Algoritmo caso 3, cuando la condición 2 es falsa
}
NIVEL 2
CONDICIONALES EN CASCADA
Ejemplo definir un método en la clase Producto que retorne el IVA del
producto.
public double darIVA( )
{
if( tipo == PAPELERIA )
{
return IVA_PAPEL;
}
else if ( tipo == SUPERMERCADO)
{
return IVA_MERCADO;
}
else
{
return IVA_FARMACIA;
}
}
NIVEL 2
INSTRUCCIONES CONDICIONALES COMPUESTAS
La instrucción condicional compuesta (switch) se utiliza cuando se
tiene un conjunto de casos con la particularidad de que cada caso debe
estar identificado por un valor entero.
Se utiliza un expresión entera entre paréntesis que sirve para
identificar el caso que se está presentando.
Cada caso se identifica con la instrucción case seguido del número
entero que identifica a cada caso.
Luego se implementan las instrucciones del caso y al finalizar las
instrucciones de cada caso se utiliza la instrucción break.
La instrucción switch se utiliza por eficiencia y claridad en el
programa. SÓLO se puede utilizar cuando los casos están identificados
por un valor entero.
NIVEL 2
INSTRUCCIONES CONDICIONALES COMPUESTAS
Estructura de la instrucción switch
switch( Expresión )
{
case contante_caso_1:
instrucciones_caso_1;
break;
case contante_caso_2:
instrucciones_caso_2;
break;
case contante_caso_n:
instrucciones_caso_n;
break;
}
NIVEL 2
INSTRUCCIONES CONDICIONALES COMPUESTAS
Ejemplo: Definir un método en la clase Producto que retorne el IVA
del producto.
NIVEL 2
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;
}
public double darIVA( )
{
switch( tipo )
{
case PAPELERIA:
return IVA_PAPEL;
case SUPERMERCADO:
return IVA_MERCADO;
case DROGUERIA:
return IVA_FARMACIA;
default:
return 0.0;
}
}
PREGUNTAS
NIVEL 2
MANEJO DE ASOCIACIONES OPCIONALES
La cardinalidad se define como el número de instancias de una clase
que pueden manejarse por medio de una asociación.
En este caso en el modelo de clases se indica que cada asociación
(p1, p2, p3 y p4) TIENE una instancia de la clase Producto.
NIVEL 2
Producto Tienda p1
1
p2
1
p3
1
p4
1
Cardinalidad = 1
MANEJO DE ASOCIACIONES OPCIONALES
En este caso en el modelo de clases se indica que cada asociación
(p1, p2, p3 y p4) PUEDE TENER O NO una instancia de la clase
Producto.
Esto se denominan asociaciones opcionales.
NIVEL 2
Producto Tienda p1
0..1
p2
0..1
p3
0..1
p4
0..1
Cardinalidad = 0..1
NIVEL 2
MANEJO DE ASOCIACIONES OPCIONALES
Para indicar que el objeto correspondiente a una asociación no está
presente se utiliza el valor especial null.
p1
p4
dineroEnCaja = 0 p2 = null p3 = null
:Tienda
nombre = “libreta”
tipo = PAPELERIA
valorUnitario = 5500
cantidadBodega = 44
cantidadMinima = 15
totalProductosVendidos = 6
:Producto
nombre = “leche”
tipo = SUPERMERCADO
valorUnitario = 2100
cantidadBodega = 25
cantidadMinima = 10
totalProductosVendidos = 25
:Producto
CLASES Y OBJETOS
NIVEL 2
En el diagrama de clases no se habla de un escenario particular.
Nunca se dice el valor de un atributo.
Producto
String nombre
int tipo
double valorUnitario
int cantidadBodega
int cantidadMinima
int totalProductosVendidos
p1
1
p2
1
p3
1
p4
1
Tienda
double dineroEnCaja
RESPONSABILIDADES DE UNA CLASE – TIPOS DE MÉTODO
Los métodos de un clases se clasifican en tres tipos:
Métodos constructores: tienen la responsabilidad de inicializar los
valores de los atributos de un objeto.
Métodos modificadores: tienen la responsabilidad de cambiar el
estado de un objeto (Métodos responsables del hacer).
Métodos analizadores: tienen la responsabilidad de calcular
información a partir del estado de los objetos de una clases (Métodos
responsables del saber).
NIVEL 2
RESPONSABILIDADES DE UNA CLASE – TIPOS DE MÉTODO
¿Cómo identificar las responsabilidades de una clase?
Una clase es responsable de administrar la información que hay en
sus atributos.
Una clase es responsable de ayudar a sus vecinos del modelo del
mundo y colaborar con ellos en la solución de sus problemas.
Las dos estrategias se basan en el diseño por tipo de métodos.
Constructores
Modificadores
Analizadores
NIVEL 2
RECOMENDACIONES SOBRE EL EJERCICIO
Diligenciar los requerimientos funcionales.
Documentar los atributos o métodos que se requieran.
Revisar todos los TODO.
No borrar los TODO.
NOTA: Realizar todos los ejercicios definidos para el caso de estudio
de la Tienda (en total son 39 ejercicios con condicionales).
NIVEL 2
PREGUNTAS
NIVEL 2