APO1 - Presentacion nivel 2
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

APO1 - Presentacion nivel 2

  • 3,012 views
Uploaded on

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.

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.

More in: Education , Travel , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,012
On Slideshare
2,520
From Embeds
492
Number of Embeds
4

Actions

Shares
Downloads
52
Comments
0
Likes
2

Embeds 492

http://jorgeportella.wordpress.com 477
http://www.linkedin.com 7
https://jorgeportella.wordpress.com 7
https://www.google.com.co 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. NIVEL 2 ALGORÍTMICA Y PROGRAMACIÓN 1 (APO 1) Mario José Villamizar Cano mj.villamizar24@uniandes.edu.co Oficina ML-637http://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
  • 2. NIVEL 2 REDES SOCIALES mjvc007@hotmail.com http://twitter.com/mariocloudhttp://linkedin.com/in/mariojosevillamizarcano
  • 3. NIVEL 2 RETROALIMENTACIÓN NIVEL 1 Entrega de los ejercicios a tiempo Ejercicios entregados incorrectamente Errores comunesTodo método tiene llavesLas llaves de un método comienzan después de su signaturaAl finalizar un método no hay punto y comaUn método solo puede retornar un valorLos atributos son private, los métodos son publicNo es necesario crear variables para retornarHay que diferenciar mayúsculas de minúsculasLos atributos no llevan paréntesis Realizar todas las tareas de los niveles
  • 4. NIVEL 2NIVEL 2 - DEFINICIÓN DE SITUACIONES Y MANEJO DE CASOSNuevos tipos simples de datosDefinición de constantesUso de expresionesInstrucciones condicionales simples y compuestasIdentificar de manera informal los métodos de una clase
  • 5. NIVEL 2 CASOS DE ESTUDIO1 Caso de estudio: La tienda
  • 6. NIVEL 2 HOJAS DE TRABAJO2 Hojas de trabajo: Juego de Triqui y Un estudiante
  • 7. NIVEL 2CASOS DE ESTUDIO - LA TIENDA
  • 8. NIVEL 2CASOS DE ESTUDIO - LA TIENDA
  • 9. 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
  • 10. 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 serutilizadas. Se destruyen al finalizar el método.public double darValorUnitarioConIva( ){ double valorConIva = valorUnitario * ( 1 + 0.16); return valorConIva;}
  • 11. NIVEL 2NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS ¿Por qué nuevas maneras de modelar una característica? doublePara modelar características que toman valores reales.Se denomina literal de un tipo de datos a un valor constante de dichotipo.Declaración de un atributo tipo double private double valorUnitario;
  • 12. NIVEL 2NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS Instrucciones y operaciones con atributos tipo double e intAsignación de un literal a un atributovalor Unitario = 26.12;int valorRedondeado = (int) valorUnitario;valorUnitario = valorUnitario / 1.07;int valorPesos = 17 / 3;
  • 13. NIVEL 2NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS El operador módulo (%): residuo entre dos números4%4=025 % 6 = 117 % 15 = 24.5 % 2.2 = 0.1 boolean: para representar valores lógicos (true o false)private boolean subsidiado;subsidiado = true;subsidiado = false;boolean valorLogico = subsidiado;
  • 14. NIVEL 2NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS char: para representar un caracterprivate char calidad;calidad = A;calidad = B;calidad = 67;char valorCaracter = calidad;
  • 15. NIVEL 2 TAREASLeer hasta la página 98.Desarrollar todas las tareas 1, 2, 3 y 4.Comprender el enunciado del ejercicio del nivel 2.
  • 16. NIVEL 2PREGUNTAS
  • 17. NIVEL 2NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS Constantes para definir el dominio de un atributoDeclaración de constantes//Constantespublic final static int PAPELERIA = 1;public final static int SUPERMERCADO = 2;public final static int DROGUERIA = 3;//Atributosprivate int tipo;
  • 18. NIVEL 2NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS Constantes para definir el dominio de un atributoOperaciones dentro de un método de la clase Productotipo = PAPELERIA;tipo = SUPERMERCADO;tipo = DROGUERIA;Operaciones dentro de un método de la clase Tiendaint tipoProductoVendido = Producto.PAPELERIA;int tipoProductoComprado = Producto.SUPERMERCADO;
  • 19. NIVEL 2NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS Constantes para representar valores inmutablesDeclaración de constantes//Constantespublic final static double IVA_PAPEL = 0.16;public final static double IVA_FARMACIA = 0.12;public final static double IVA_MERCADO = 0.04;
  • 20. NIVEL 2NUEVOS ELEMENTOS DE MODELADO – TIPOS SIMPLES DE DATOS Constantes para representar valores inmutablesOperaciones dentro de un método de la clase Productoprecio = valorUnitario * (1 + IVA_MERCADO);precio = valorUnitario * (1 + 0.04);Operaciones dentro de un método de la clase TiendavalorConIva = p1.darValorUnitario( ) * (1 + Producto.IVA_MERCADO);valorConIva = p1.darValorUnitario( ) * (1 + 0.04);
  • 21. NIVEL 2 EXPRESIONES Una expresión es la manera en que expresamos en un lenguaje deprogramació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 ollamadas a métodos. Los operadores que se pueden usar en una expresión dependen deltipo de los datos de los operandos de la expresión. Operadores = aritméticos, relacionales, lógicos, sobre cadenas decaracteres, de asignación.
  • 22. 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 lasexpresiones.Orden de evaluación Primero se aplican los paréntesis. Luego se aplican los operadores de multiplicación y división, deizquierda a derecha. Después se aplican los operadores de suma y resta, de izquierda aderecha.
  • 23. 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;}
  • 24. 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;}
  • 25. 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;}
  • 26. 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;}
  • 27. 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;} nombreCompleto = “Carlos FelipeGiraldo Parra”
  • 28. NIVEL 2 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;} nombreCompleto = “Carlos Felipe Giraldo Parra”
  • 29. NIVEL 2 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;} informacionCompleta = “Nombres: Carlos Felipe Apellidos: Giraldo Parra C. Aprobados: 140 Promedio: 4.63”;
  • 30. NIVEL 2 OPERADORES SOBRE CADENAS DE CARACTERES Método charAt de la clase String para acceder a un carácter dentrode una cadena de caracteres.public char darInicialDelNombre( ){ String nombres = “Carlos Felipe”; char inicial = nombres.charAt (0); return inicial; inicial = „C‟;}
  • 31. NIVEL 2 OPERADORES SOBRE CADENAS DE CARACTERES Método charAt de la clase String para acceder a un carácter dentrode una cadena de caracteres.public char darSegundaLetraDelNombre( ){ String nombres = “Carlos Felipe”; char inicial = nombres.charAt (1); return inicial; inicial = „a‟}
  • 32. NIVEL 2 OPERADORES SOBRE CADENAS DE CARACTERES Método equals de la clase String para comparar cadenas decaracteres.public boolean ejemplo1Equals( ){ String producto1 = “Lapiz”; String producto2 = “Lapiz”; boolean resultadoComparacion = producto1.equals(producto2); return resultadoComparacion; resultadoComparacion = true}
  • 33. NIVEL 2 OPERADORES SOBRE CADENAS DE CARACTERES Método equals de la clase String para comparar cadenas decaracteres.public boolean ejemplo2Equals( ){ String producto1 = “Lapiz”; String producto2 = “Lapiz”; boolean resultadoComparacion = producto2.equals(producto1); return resultadoComparacion; resultadoComparacion = true}
  • 34. NIVEL 2 OPERADORES SOBRE CADENAS DE CARACTERES Método equals de la clase String para comparar cadenas decaracteres.public boolean ejemplo3Equals( ){ String producto1 = “Lapiz”; String producto2 = “Lapiz ”; boolean resultadoComparacion = producto2.equals(producto1); return resultadoComparacion; resultadoComparacion = false}
  • 35. NIVEL 2 OPERADORES SOBRE CADENAS DE CARACTERES Método equals de la clase String para comparar cadenas decaracteres.public boolean ejemplo4Equals( ){ String producto1 = “Lapiz”; String producto2 = “Aspirina”; boolean resultadoComparacion = producto2.equals(producto1); return resultadoComparacion; resultadoComparacion = false}
  • 36. NIVEL 2 OPERADORES SOBRE CADENAS DE CARACTERES Método equalsIgnoreCase de la clase String para comparar cadenasde 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; resultado = true}
  • 37. NIVEL 2 OPERADORES SOBRE CADENAS DE CARACTERES Método equalsIgnoreCase de la clase String para comparar cadenasde 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; resultado = false}
  • 38. NIVEL 2 OPERADORES SOBRE CADENAS DE CARACTERES Método equalsIgnoreCase de la clase String para comparar cadenasde 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; resultado = false}
  • 39. NIVEL 2 CLASES Y OBJETOS :Producto :Productonombre = “jabón” nombre = “libreta”tipo = SUPERMERCADO tipo = PAPELERIAvalorUnitario = 4200 p3 p1 valorUnitario = 5500cantidadBodega = 36 cantidadBodega = 44cantidadMinima = 8 cantidadMinima = 15totalProductosVendidos = 14 totalProductosVendidos = 6 :Tienda dineroEnCaja = 0 :Producto :Productonombre = “aspirina” nombre = “leche”tipo = DROGUERIA tipo = SUPERMERCADO p4 p2valorUnitario = 2400 valorUnitario = 2100cantidadBodega = 13 cantidadBodega = 25cantidadMinima = 11 cantidadMinima = 10totalProductosVendidos = 7 totalProductosVendidos = 25 En el diagrama de objetos se habla de un escenario particular. Cada Tienda puede tener sus propios productos.
  • 40. NIVEL 2 CLASES Y OBJETOS Para inicializar los valores de un objeto, las clases permiten ladefinició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.
  • 41. NIVEL 2 CLASES Y OBJETOS Para crear un objeto de una clases se utiliza la instrucción new El método constructor es llamado automáticamente cada vez que secrea un objeto. El objeto creado puede ser referenciado desde una variable o desdeun atributo. Ejemplo de cómo crear un objeto de la clase Producto.Producto p = new Producto( ); :Producto nombre = "" p tipo = 0 valorUnitario = 0.0 cantidadBodega = 0 cantidadMinima = 0 totalProductosVendidos = 0
  • 42. NIVEL 2 CLASES Y OBJETOS Una clase puede tener varios métodos constructores que sediferencian 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 puedendefinir los valores iniciales que van a tener los atributos del objeto.
  • 43. NIVEL 2 CLASES Y OBJETOS Ejemplo de cómo crear un objeto cuando el constructor recibepará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 debendefinir los valores iniciales que van a tener los atributos del objeto. :Producto nombre = "lápiz" p tipo = PAPELERIA valorUnitario = 550.0 cantidadBodega = 8 cantidadMinima = 5 totalProductosVendidos = 0
  • 44. NIVEL 2 CLASES Y OBJETOS Constructor de la clase Tiendapublic Tienda( Producto p1P, Producto p2P, Producto p3P, Producto p4P ){ p1 = p1P; p2 = p2P; p3 = p3P; p4 = p4P; dineroEnCaja = 0;}Creación de una TiendaProducto 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 );
  • 45. NIVEL 2 TAREASLeer hasta la página 123.Desarrollar las tareas 5, 6, y 7.Desarrollar el ejercicio del nivel 2.
  • 46. NIVEL 2PREGUNTAS
  • 47. NIVEL 2 OPERADORES RELACIONALES Permiten determinar un valor de verdad (falso o verdadero) para unasituació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: >=
  • 48. NIVEL 2 OPERADORES LÓGICOS Sirven para construir expresiones más complejas a partir deexpresiones relacionales o de atributos de tipo boolean. && (y) || (o) ! (no)
  • 49. NIVEL 2 TAREA 2 :Producto :Productonombre = “jabón” nombre = “libreta”tipo = SUPERMERCADO tipo = PAPELERIAvalorUnitario = 4200 p3 p1 valorUnitario = 5500cantidadBodega = 36 cantidadBodega = 44cantidadMinima = 8 cantidadMinima = 15totalProductosVendidos = 14 totalProductosVendidos = 6 :Tienda dineroEnCaja = 0 :Producto :Productonombre = “aspirina” nombre = “leche”tipo = DROGUERIA tipo = SUPERMERCADO p4 p2valorUnitario = 2400 valorUnitario = 2100cantidadBodega = 13 cantidadBodega = 25cantidadMinima = 11 cantidadMinima = 10totalProductosVendidos = 7 totalProductosVendidos = 25
  • 50. NIVEL 2 INSTRUCCIONES CONDICIONALES Una instrucción condicional nos permite plantear la solución a unproblema 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. Problema Caso 1 Caso 2 Caso n Algoritmo 1 Algoritmo 2 Algoritmo n
  • 51. NIVEL 2 INSTRUCCIONES CONDICIONALES SIMPLES Utilizadas para solucionar problemas con dos casos. En Java se utiliza la instrucción if else para expresar los posiblescasos 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 distinguirlos dos posibles casos.La solución para el primer caso.La solución para el segundo caso.
  • 52. 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.
  • 53. NIVEL 2 INSTRUCCIONES CONDICIONALES SIMPLES Definir un método para vender una determinada cantidad de unproducto teniendo en cuenta que solo se puede vender la cantidad quehay en la bodega.public void vender( int cantidad ){ if( cantidad > cantidadBodega ) { totalProductosVendidos += cantidadBodega; cantidadBodega = 0; } else { totalProductosVendidos += cantidad; cantidadBodega -= cantidad; }}
  • 54. NIVEL 2 INSTRUCCIONES CONDICIONALES SIMPLES Definir un método para vender una determinada cantidad de unproducto teniendo en cuenta que solo se puede vender la cantidad quehay en la bodega.public void vender( int cantidad ){ if( cantidad <= cantidadBodega ) { totalProductosVendidos += cantidad; cantidadBodega -= cantidad; } else { totalProductosVendidos += cantidadBodega; cantidadBodega = 0; }}
  • 55. NIVEL 2 INSTRUCCIONES CONDICIONALES SIMPLES Si el algoritmo que resuelve uno de los casos sólo tiene unainstrucción, es posible eliminar los corchetes.public boolean hayQueHacerPedido( ){ if(cantidadBodega < cantidadMinima ) { return true; } else { return false; }}
  • 56. NIVEL 2 INSTRUCCIONES CONDICIONALES SIMPLES Si el algoritmo que resuelve uno de los casos sólo tiene unainstrucción, es posible eliminar los corchetes.public boolean hayQueHacerPedido( ){ if(cantidadBodega < cantidadMinima ) return true; else return false;}
  • 57. NIVEL 2 CONDICIONALES EN CASCADA Cuando el problema tiene más de dos casos, es necesario utilizaruna cascada (secuencia) de instrucciones if-else. En cada condición dedebe 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 }
  • 58. NIVEL 2 CONDICIONALES EN CASCADA Ejemplo definir un método en la clase Producto que retorne el IVA delproducto.public double darIVA( ){ if( tipo == PAPELERIA ) { return IVA_PAPEL; } else if ( tipo == SUPERMERCADO) { return IVA_MERCADO; } else { return IVA_FARMACIA; }}
  • 59. NIVEL 2 INSTRUCCIONES CONDICIONALES COMPUESTAS La instrucción condicional compuesta (switch) se utiliza cuando setiene un conjunto de casos con la particularidad de que cada caso debeestar identificado por un valor entero. Se utiliza un expresión entera entre paréntesis que sirve paraidentificar el caso que se está presentando. Cada caso se identifica con la instrucción case seguido del númeroentero que identifica a cada caso. Luego se implementan las instrucciones del caso y al finalizar lasinstrucciones de cada caso se utiliza la instrucción break. La instrucción switch se utiliza por eficiencia y claridad en elprograma. SÓLO se puede utilizar cuando los casos están identificadospor un valor entero.
  • 60. NIVEL 2 INSTRUCCIONES CONDICIONALES COMPUESTASEstructura 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; }
  • 61. NIVEL 2 INSTRUCCIONES CONDICIONALES COMPUESTAS Ejemplo: Definir un método en la clase Producto que retorne el IVAdel producto. public double darIVA( ) public double darIVA( ) { { double iva = 0.0; switch( tipo ) switch( tipo ) { { case PAPELERIA: case PAPELERIA: return IVA_PAPEL; iva = IVA_PAPEL; case SUPERMERCADO: break; return IVA_MERCADO; case SUPERMERCADO: case DROGUERIA: iva = IVA_MERCADO; return IVA_FARMACIA; break; default: case DROGUERIA: return 0.0; iva = IVA_FARMACIA; } break; } } return iva; }
  • 62. NIVEL 2PREGUNTAS
  • 63. NIVEL 2 MANEJO DE ASOCIACIONES OPCIONALES Producto Tienda p1 1 p2 1 p3 1 p4 1 Cardinalidad = 1 La cardinalidad se define como el número de instancias de una claseque 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.
  • 64. NIVEL 2 MANEJO DE ASOCIACIONES OPCIONALES Producto Tienda p1 0..1 p2 0..1 p3 0..1 p4 0..1 Cardinalidad = 0..1 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 claseProducto. Esto se denominan asociaciones opcionales.
  • 65. NIVEL 2 MANEJO DE ASOCIACIONES OPCIONALES :Producto nombre = “libreta” tipo = PAPELERIA p1 valorUnitario = 5500 cantidadBodega = 44 cantidadMinima = 15 :Tienda totalProductosVendidos = 6 dineroEnCaja = 0 p2 = null :Producto p3 = null nombre = “leche” tipo = SUPERMERCADO p4 valorUnitario = 2100 cantidadBodega = 25 cantidadMinima = 10 totalProductosVendidos = 25 Para indicar que el objeto correspondiente a una asociación no estápresente se utiliza el valor especial null.
  • 66. NIVEL 2 CLASES Y OBJETOS Producto Tienda p1 String nombre int tipodouble dineroEnCaja 1 double valorUnitario p2 int cantidadBodega 1 int cantidadMinima int totalProductosVendidos p3 1 p4 1 En el diagrama de clases no se habla de un escenario particular. Nunca se dice el valor de un atributo.
  • 67. NIVEL 2 RESPONSABILIDADES DE UNA CLASE – TIPOS DE MÉTODOLos métodos de un clases se clasifican en tres tipos: Métodos constructores: tienen la responsabilidad de inicializar losvalores de los atributos de un objeto. Métodos modificadores: tienen la responsabilidad de cambiar elestado de un objeto (Métodos responsables del hacer). Métodos analizadores: tienen la responsabilidad de calcularinformación a partir del estado de los objetos de una clases (Métodosresponsables del saber).
  • 68. 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 ensus atributos. Una clase es responsable de ayudar a sus vecinos del modelo delmundo 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
  • 69. 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 estudiode la Tienda (en total son 39 ejercicios con condicionales).
  • 70. NIVEL 2PREGUNTAS