SlideShare una empresa de Scribd logo
1 de 69
Descargar para leer sin conexión
ALGORÍTMICA Y PROGRAMACIÓN 1 (APO 1)
NIVEL 2
Mario José Villamizar Cano
mj.villamizar24@uniandes.edu.co
Oficina ML-648
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
mjvc007@hotmail.com
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
Caso de estudio 1: La tienda
NIVEL 2
HOJAS DE TRABAJO
Hoja de trabajo 1: El estudiante
NIVEL 2
EJEMPLOS
Ejemplo 1: Cupi AppStore
NIVEL 2
EJEMPLOS
Ejemplo 2: Elecciones
NIVEL 2
EJEMPLOS
Ejemplo 3: La empresa de transporte
NIVEL 2
CASOS DE ESTUDIO - LA TIENDA
NIVEL 2
CASOS DE ESTUDIO - LA TIENDA
NIVEL 2
CASOS DE ESTUDIO - LA TIENDA
R1 – Visualizar la información de los productos
R2 – Vender un producto
R3 – Abastecer la tienda con un producto
R4 – Cambiar un producto
R5 – 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) La cantidad de dinero promedio obtenido por unidad de producto vendida.
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
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 – ENUMERACIONES
Constantes para definir el dominio de un atributo
Declaración de enumeraciones
//Enumeradores
public enum Tipo
{
PAPELERIA,
SUPERMERCADO,
DROGUERIA
}
//Atributos
private Tipo tipo;
NIVEL 2
NUEVOS ELEMENTOS DE MODELADO – ENUMERACIONES
Constantes para definir el dominio de un atributo
Operaciones dentro de un método de la clase Producto
tipo = Tipo.PAPELERIA;
tipo = Tipo.SUPERMERCADO;
tipo = Tipo.DROGUERIA;
Operaciones dentro de un método de la clase Tienda
int tipoProductoVendido = Tipo.PAPELERIA;
int tipoProductoComprado = Tipo.SUPERMERCADO;
NIVEL 2
NUEVOS ELEMENTOS DE MODELADO – CONSTANTES
Constantes para representar valores inmutables
Declaración de constantes
//Constantes
public final static double IVA_PAPELERIA = 0.16;
public final static double IVA_DROGUERIA = 0.12;
public final static double IVA_SUPERMERCADO = 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_SUPERMERCADO);
precio = valorUnitario * (1 + 0.04);
Operaciones dentro de un método de la clase Tienda
valorConIva = p1.darValorUnitario( ) * (1 + Producto. IVA_SUPERMERCADO);
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 abastecer( int pCantidad )
{
cantidadBodega += pCantidad;
}
public void abastecer( int pCantidad)
{
cantidadBodega = cantidadBodega + pCantidad;
}
NIVEL 2
OPERADORES DE ASIGNACIÓN
Operador -=
Se utiliza para disminuir un atributo en cualquier valor.
public void vender( int pCantidad)
{
cantidadBodega -= pCantidad;
}
public void vender( int pCantidad)
{
cantidadBodega = cantidadBodega - pCantidad;
}
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
p2p4
p3
dineroEnCaja = 0
:Tienda
nombre = “Libreta”
tipo = PAPELERIA
valorUnitario = 5500
cantidadBodega = 44
cantidadMinima = 15
cantidadUnidadesVendidas = 6
:Producto
nombre = “Leche”
tipo = SUPERMERCADO
valorUnitario = 2100
cantidadBodega = 25
cantidadMinima = 10
cantidadUnidadesVendidas = 25
:Producto
nombre = “Aspirina”
tipo = DROGUERIA
valorUnitario = 2400
cantidadBodega = 13
cantidadMinima = 11
cantidadUnidadesVendidas = 7
:Producto
nombre = “Jabón”
tipo = SUPERMERCADO
valorUnitario = 4200
cantidadBodega = 36
cantidadMinima = 8
cantidadUnidadesVendidas = 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 = Tipo.PAPELERIA;
nombre = "";
valorUnitario = 0.0;
cantidadBodega = 0;
cantidadMinima = 0;
cantidadUnidadesVendidas = 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 = PAPELERIA
valorUnitario = 0.0
cantidadBodega = 0
cantidadMinima = 0
cantidadUnidadesVendidas = 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( Tipo pTipo, String pNombre, double
pValorUnitario, int pCantidadBodega, int pCantidadMinima )
{
tipo = pTipo;
nombre = pNombre;
valorUnitario = pValorUnitario;
cantidadBodega = pCantidadBodega;
cantidadMinima = pCantidadMinima;
cantidadUnidadesVendidas = 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( Tipo.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
cantidadUnidadesVendidas = 0
:Producto
p
CLASES Y OBJETOS
NIVEL 2
Constructor de la clase Tienda
public Tienda( )
{
producto1 = new Producto( Tipo.PAPELERIA, “Lápiz", 550.0, 18, 5 );
producto2 = new Producto( Tipo.DROGUERIA, “Aspirina", 109.5, 25, 8 );
producto3 = new Producto( Tipo.PAPELERIA, “Borrador", 207.3, 30, 10 );
producto4 = new Producto( Tipo.SUPERMERCADO, “Pan", 150.0, 15, 20 );
dineroEnCaja = 0;
}
Creación de una Tienda
Tienda tienda = new Tienda( );
TAREAS
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
REALIZACIÓN EJERCICIOS TAREA 2
NIVEL 2
p1
p2p4
p3
dineroEnCaja = 0
:Tienda
nombre = “Libreta”
tipo = PAPELERIA
valorUnitario = 5500
cantidadBodega = 44
cantidadMinima = 15
cantidadUnidadesVendidas = 6
:Producto
nombre = “Leche”
tipo = SUPERMERCADO
valorUnitario = 2100
cantidadBodega = 25
cantidadMinima = 10
cantidadUnidadesVendidas = 25
:Producto
nombre = “Aspirina”
tipo = DROGUERIA
valorUnitario = 2400
cantidadBodega = 13
cantidadMinima = 11
cantidadUnidadesVendidas = 32
:Producto
nombre = “Jabón”
tipo = SUPERMERCADO
valorUnitario = 4200
cantidadBodega = 36
cantidadMinima = 8
cantidadUnidadesVendidas = 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 pCantidad )
{
if( pCantidad > cantidadBodega )
{
cantidadUnidadesVendidas += cantidadBodega;
cantidadBodega = 0;
}
else
{
cantidadUnidadesVendidas += pCantidad;
cantidadBodega -= pCantidad;
}
}
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 pCantidad )
{
if( pCantidad <= cantidadBodega )
{
cantidadUnidadesVendidas += pCantidad;
cantidadBodega -= pCantidad;
}
else
{
cantidadUnidadesVendidas += 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 == Tipo.PAPELERIA )
{
return IVA_PAPELERIA;
}
else if ( tipo == Tipo.SUPERMERCADO)
{
return IVA_SUPERMERCADO;
}
else
{
return IVA_DROGUERIA;
}
}
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, String o enumeración.
Se utiliza un expresión 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, String o valor de la enumeración 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, String o enumeración.
NIVEL 2
INSTRUCCIONES CONDICIONALES COMPUESTAS
Estructura de la instrucción switch
switch( Expresión )
{
case caso_1:
instrucciones_caso_1;
break;
case caso_2:
instrucciones_caso_2;
break;
case 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_PAPELERIA;
break;
case SUPERMERCADO:
iva = IVA_SUPERMERCADO;
break;
case DROGUERIA:
iva = IVA_DROGUERIA;
break;
}
return iva;
}
PREGUNTAS
NIVEL 2
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 24 ejercicios con condicionales).
NIVEL 2
PREGUNTAS
NIVEL 2

Más contenido relacionado

La actualidad más candente

Tomada de decisao - logica
Tomada de decisao - logicaTomada de decisao - logica
Tomada de decisao - logicaSedu
 
9.Dow Theory เพจ กัปตัน เทรดดิ้ง.pdf
9.Dow Theory เพจ กัปตัน เทรดดิ้ง.pdf9.Dow Theory เพจ กัปตัน เทรดดิ้ง.pdf
9.Dow Theory เพจ กัปตัน เทรดดิ้ง.pdfMicro4you
 
Puntos pivote
Puntos pivotePuntos pivote
Puntos pivotegyanezb
 
Chapter 2 - Pemahaman Supply And Demand (SND) #miqqaellraffaell
Chapter 2 - Pemahaman Supply And Demand (SND)  #miqqaellraffaellChapter 2 - Pemahaman Supply And Demand (SND)  #miqqaellraffaell
Chapter 2 - Pemahaman Supply And Demand (SND) #miqqaellraffaellBlackMagicWomen
 
From Scala Monadic Effects to Unison Algebraic Effects
From Scala Monadic Effects to Unison Algebraic EffectsFrom Scala Monadic Effects to Unison Algebraic Effects
From Scala Monadic Effects to Unison Algebraic EffectsPhilip Schwarz
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao PythonMarcio Palheta
 
10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadoresClara Patricia Avella Ibañez
 
Hanzo Shawdow Codes.pdf
Hanzo Shawdow Codes.pdfHanzo Shawdow Codes.pdf
Hanzo Shawdow Codes.pdfHungLe593957
 
7.Harmonic เพจ กัปตัน เทรดดิ้ง.pdf
7.Harmonic เพจ กัปตัน เทรดดิ้ง.pdf7.Harmonic เพจ กัปตัน เทรดดิ้ง.pdf
7.Harmonic เพจ กัปตัน เทรดดิ้ง.pdfMicro4you
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controleProfessor Samuel Ribeiro
 
Single Responsibility Principle @ Clean Code Alliance Meetup
Single Responsibility Principle @ Clean Code Alliance MeetupSingle Responsibility Principle @ Clean Code Alliance Meetup
Single Responsibility Principle @ Clean Code Alliance MeetupEyal Golan
 
14.Read The Market เพจ กัปตัน เทรดดิ้ง.pdf
14.Read The Market เพจ กัปตัน เทรดดิ้ง.pdf14.Read The Market เพจ กัปตัน เทรดดิ้ง.pdf
14.Read The Market เพจ กัปตัน เทรดดิ้ง.pdfMicro4you
 

La actualidad más candente (20)

Lenguajes no regulares
Lenguajes no regularesLenguajes no regulares
Lenguajes no regulares
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
 
Tomada de decisao - logica
Tomada de decisao - logicaTomada de decisao - logica
Tomada de decisao - logica
 
12 Curso de POO en java - entrada y salida de datos
12 Curso de POO en java - entrada y salida de datos12 Curso de POO en java - entrada y salida de datos
12 Curso de POO en java - entrada y salida de datos
 
9.Dow Theory เพจ กัปตัน เทรดดิ้ง.pdf
9.Dow Theory เพจ กัปตัน เทรดดิ้ง.pdf9.Dow Theory เพจ กัปตัน เทรดดิ้ง.pdf
9.Dow Theory เพจ กัปตัน เทรดดิ้ง.pdf
 
Puntos pivote
Puntos pivotePuntos pivote
Puntos pivote
 
Chapter 2 - Pemahaman Supply And Demand (SND) #miqqaellraffaell
Chapter 2 - Pemahaman Supply And Demand (SND)  #miqqaellraffaellChapter 2 - Pemahaman Supply And Demand (SND)  #miqqaellraffaell
Chapter 2 - Pemahaman Supply And Demand (SND) #miqqaellraffaell
 
From Scala Monadic Effects to Unison Algebraic Effects
From Scala Monadic Effects to Unison Algebraic EffectsFrom Scala Monadic Effects to Unison Algebraic Effects
From Scala Monadic Effects to Unison Algebraic Effects
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Extremos (3 variables)
Extremos (3 variables)Extremos (3 variables)
Extremos (3 variables)
 
10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores
 
Curso Java Inacap
Curso Java InacapCurso Java Inacap
Curso Java Inacap
 
Revisão UML
Revisão UMLRevisão UML
Revisão UML
 
15 Curso de POO en java - estructuras repetitivas
15 Curso de POO en java - estructuras repetitivas15 Curso de POO en java - estructuras repetitivas
15 Curso de POO en java - estructuras repetitivas
 
Hanzo Shawdow Codes.pdf
Hanzo Shawdow Codes.pdfHanzo Shawdow Codes.pdf
Hanzo Shawdow Codes.pdf
 
7.Harmonic เพจ กัปตัน เทรดดิ้ง.pdf
7.Harmonic เพจ กัปตัน เทรดดิ้ง.pdf7.Harmonic เพจ กัปตัน เทรดดิ้ง.pdf
7.Harmonic เพจ กัปตัน เทรดดิ้ง.pdf
 
10 Patrones Técnicos
10 Patrones Técnicos10 Patrones Técnicos
10 Patrones Técnicos
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
Single Responsibility Principle @ Clean Code Alliance Meetup
Single Responsibility Principle @ Clean Code Alliance MeetupSingle Responsibility Principle @ Clean Code Alliance Meetup
Single Responsibility Principle @ Clean Code Alliance Meetup
 
14.Read The Market เพจ กัปตัน เทรดดิ้ง.pdf
14.Read The Market เพจ กัปตัน เทรดดิ้ง.pdf14.Read The Market เพจ กัปตัน เทรดดิ้ง.pdf
14.Read The Market เพจ กัปตัน เทรดดิ้ง.pdf
 

Destacado

Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesstill01
 
Diseño de proyectos producto final grupo 5
Diseño de proyectos producto final grupo 5Diseño de proyectos producto final grupo 5
Diseño de proyectos producto final grupo 5lfmartinez1978
 
De diagrama de clase a Codigo Java
De diagrama de clase a Codigo JavaDe diagrama de clase a Codigo Java
De diagrama de clase a Codigo JavaNestor Fabian Koch
 
Proyecto Final Para Exponer
Proyecto Final Para ExponerProyecto Final Para Exponer
Proyecto Final Para Exponerguest4ac5a34
 
Diccionario dedatos
Diccionario dedatosDiccionario dedatos
Diccionario dedatosAlondra Katt
 
Diccionario De Datos
Diccionario De DatosDiccionario De Datos
Diccionario De Datosnahun1385
 
Aplicación de grafcet de nivel 2 y Programación de PLC
Aplicación de grafcet de nivel 2 y Programación de PLCAplicación de grafcet de nivel 2 y Programación de PLC
Aplicación de grafcet de nivel 2 y Programación de PLCCarlos Muñiz Cueto
 

Destacado (20)

APO1 - Presentacion nivel 1
APO1 - Presentacion nivel 1APO1 - Presentacion nivel 1
APO1 - Presentacion nivel 1
 
APO1 - Presentacion nivel 6
APO1 - Presentacion nivel 6APO1 - Presentacion nivel 6
APO1 - Presentacion nivel 6
 
APO1 - Presentacion nivel 4
APO1 - Presentacion nivel 4APO1 - Presentacion nivel 4
APO1 - Presentacion nivel 4
 
APO2 - Presentacion nivel 7
APO2 - Presentacion nivel 7APO2 - Presentacion nivel 7
APO2 - Presentacion nivel 7
 
APO2 - Presentacion nivel 8
APO2 - Presentacion nivel 8APO2 - Presentacion nivel 8
APO2 - Presentacion nivel 8
 
APO2 - Presentacion nivel 10
APO2 - Presentacion nivel 10APO2 - Presentacion nivel 10
APO2 - Presentacion nivel 10
 
APO2 - Presentacion nivel 9
APO2 - Presentacion nivel 9APO2 - Presentacion nivel 9
APO2 - Presentacion nivel 9
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Diseño de proyectos producto final grupo 5
Diseño de proyectos producto final grupo 5Diseño de proyectos producto final grupo 5
Diseño de proyectos producto final grupo 5
 
De diagrama de clase a Codigo Java
De diagrama de clase a Codigo JavaDe diagrama de clase a Codigo Java
De diagrama de clase a Codigo Java
 
Proyecto triqui
Proyecto triquiProyecto triqui
Proyecto triqui
 
Proyecto Final Para Exponer
Proyecto Final Para ExponerProyecto Final Para Exponer
Proyecto Final Para Exponer
 
Persistencia jpa
Persistencia jpaPersistencia jpa
Persistencia jpa
 
Sopa de letras
Sopa de letrasSopa de letras
Sopa de letras
 
Diccionario dedatos
Diccionario dedatosDiccionario dedatos
Diccionario dedatos
 
Diccionario De Datos
Diccionario De DatosDiccionario De Datos
Diccionario De Datos
 
Diccionario De Datos
Diccionario De DatosDiccionario De Datos
Diccionario De Datos
 
Diccionario De Datos
Diccionario De DatosDiccionario De Datos
Diccionario De Datos
 
Emprendimiento en internet y startups 2017
Emprendimiento en internet y startups 2017Emprendimiento en internet y startups 2017
Emprendimiento en internet y startups 2017
 
Aplicación de grafcet de nivel 2 y Programación de PLC
Aplicación de grafcet de nivel 2 y Programación de PLCAplicación de grafcet de nivel 2 y Programación de PLC
Aplicación de grafcet de nivel 2 y Programación de PLC
 

Similar a APO1 - Presentacion nivel 2

Programacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptxProgramacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptxErrol31
 
Indentificacion de funciones
Indentificacion de funcionesIndentificacion de funciones
Indentificacion de funcionesJulian Bohorquez
 
Capitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en cCapitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en cecastelocc
 
5. PROGRAMACION ESTRUCTURADA C++.pptx
5. PROGRAMACION ESTRUCTURADA C++.pptx5. PROGRAMACION ESTRUCTURADA C++.pptx
5. PROGRAMACION ESTRUCTURADA C++.pptxDieguess
 
Unidad 2
Unidad 2Unidad 2
Unidad 2UTP, TA
 
Diagramas De Flujo
Diagramas De FlujoDiagramas De Flujo
Diagramas De Flujocarlospaul
 
Unidad 3, Programacion Estructurada
Unidad 3, Programacion EstructuradaUnidad 3, Programacion Estructurada
Unidad 3, Programacion EstructuradaUTP, TA
 
Semana 3 Fundamentos de Python(Funciones y Métodos)
Semana 3   Fundamentos de Python(Funciones y Métodos)Semana 3   Fundamentos de Python(Funciones y Métodos)
Semana 3 Fundamentos de Python(Funciones y Métodos)Richard Eliseo Mendoza Gafaro
 
Programacion Modular lic en informa.pdf
Programacion Modular  lic en informa.pdfProgramacion Modular  lic en informa.pdf
Programacion Modular lic en informa.pdfSalAlexanderReyesAnd
 
Cuestionario del video_2
Cuestionario del video_2Cuestionario del video_2
Cuestionario del video_2Marthaa Hdz
 
Cuestionario del video_2
Cuestionario del video_2Cuestionario del video_2
Cuestionario del video_2Marthaa Hdz
 
Modulos y funciones en VBA
Modulos y funciones en VBAModulos y funciones en VBA
Modulos y funciones en VBAprofecesde
 
Computación ii 324-1-estructuras dinamicas-con enlaces
Computación ii   324-1-estructuras dinamicas-con enlacesComputación ii   324-1-estructuras dinamicas-con enlaces
Computación ii 324-1-estructuras dinamicas-con enlacesIsbelia Pelayo
 
Introduccion Java
Introduccion JavaIntroduccion Java
Introduccion Javasvhurtado
 

Similar a APO1 - Presentacion nivel 2 (20)

Programacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptxProgramacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptx
 
5 metodos y parametros
5 metodos y parametros5 metodos y parametros
5 metodos y parametros
 
0.2 Conceptos Basicos C++ II
0.2  Conceptos Basicos C++ II0.2  Conceptos Basicos C++ II
0.2 Conceptos Basicos C++ II
 
Indentificacion de funciones
Indentificacion de funcionesIndentificacion de funciones
Indentificacion de funciones
 
Guía funciones
Guía funcionesGuía funciones
Guía funciones
 
Cap0 2
Cap0 2Cap0 2
Cap0 2
 
Capitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en cCapitulo 2 tipos de datos en c
Capitulo 2 tipos de datos en c
 
Metodos 2
Metodos 2Metodos 2
Metodos 2
 
5. PROGRAMACION ESTRUCTURADA C++.pptx
5. PROGRAMACION ESTRUCTURADA C++.pptx5. PROGRAMACION ESTRUCTURADA C++.pptx
5. PROGRAMACION ESTRUCTURADA C++.pptx
 
Algoritmos secuenciales
Algoritmos secuencialesAlgoritmos secuenciales
Algoritmos secuenciales
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Diagramas De Flujo
Diagramas De FlujoDiagramas De Flujo
Diagramas De Flujo
 
Unidad 3, Programacion Estructurada
Unidad 3, Programacion EstructuradaUnidad 3, Programacion Estructurada
Unidad 3, Programacion Estructurada
 
Semana 3 Fundamentos de Python(Funciones y Métodos)
Semana 3   Fundamentos de Python(Funciones y Métodos)Semana 3   Fundamentos de Python(Funciones y Métodos)
Semana 3 Fundamentos de Python(Funciones y Métodos)
 
Programacion Modular lic en informa.pdf
Programacion Modular  lic en informa.pdfProgramacion Modular  lic en informa.pdf
Programacion Modular lic en informa.pdf
 
Cuestionario del video_2
Cuestionario del video_2Cuestionario del video_2
Cuestionario del video_2
 
Cuestionario del video_2
Cuestionario del video_2Cuestionario del video_2
Cuestionario del video_2
 
Modulos y funciones en VBA
Modulos y funciones en VBAModulos y funciones en VBA
Modulos y funciones en VBA
 
Computación ii 324-1-estructuras dinamicas-con enlaces
Computación ii   324-1-estructuras dinamicas-con enlacesComputación ii   324-1-estructuras dinamicas-con enlaces
Computación ii 324-1-estructuras dinamicas-con enlaces
 
Introduccion Java
Introduccion JavaIntroduccion Java
Introduccion Java
 

Más de Mario Jose Villamizar Cano

e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...Mario Jose Villamizar Cano
 
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startupsFrameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startupsMario Jose Villamizar Cano
 
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)Mario Jose Villamizar Cano
 
An Overview of Internet Startups and Entrepreneurship
An Overview of Internet Startups and EntrepreneurshipAn Overview of Internet Startups and Entrepreneurship
An Overview of Internet Startups and EntrepreneurshipMario Jose Villamizar Cano
 
Energy-aware VM Allocation on An Opportunistic Cloud Infrastructure
Energy-aware VM Allocation on An Opportunistic Cloud InfrastructureEnergy-aware VM Allocation on An Opportunistic Cloud Infrastructure
Energy-aware VM Allocation on An Opportunistic Cloud InfrastructureMario Jose Villamizar Cano
 
Emprendimiento en Internet / Internet Startups
Emprendimiento en Internet / Internet StartupsEmprendimiento en Internet / Internet Startups
Emprendimiento en Internet / Internet StartupsMario Jose Villamizar Cano
 
e-Clouds: a SaaS Marketplace for Scientific Computing
e-Clouds: a SaaS Marketplace for Scientific Computinge-Clouds: a SaaS Marketplace for Scientific Computing
e-Clouds: a SaaS Marketplace for Scientific ComputingMario Jose Villamizar Cano
 
Cloud computing oportunidades para empresarios y emprendedores
Cloud computing oportunidades para empresarios y emprendedoresCloud computing oportunidades para empresarios y emprendedores
Cloud computing oportunidades para empresarios y emprendedoresMario Jose Villamizar Cano
 
UnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
UnaCloud: Opportunistic Cloud Computing Infrastructure as a ServiceUnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
UnaCloud: Opportunistic Cloud Computing Infrastructure as a ServiceMario Jose Villamizar Cano
 
Bio-UnaGrid: Easing bioinformatics workflow execution
Bio-UnaGrid: Easing bioinformatics workflow executionBio-UnaGrid: Easing bioinformatics workflow execution
Bio-UnaGrid: Easing bioinformatics workflow executionMario Jose Villamizar Cano
 
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...Mario Jose Villamizar Cano
 
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...Mario Jose Villamizar Cano
 
Una grid una solución oportunista para la HPC en colombia
Una grid una solución oportunista para la HPC en colombiaUna grid una solución oportunista para la HPC en colombia
Una grid una solución oportunista para la HPC en colombiaMario Jose Villamizar Cano
 
Infraestructura computacional: Computación en grid
Infraestructura computacional: Computación en gridInfraestructura computacional: Computación en grid
Infraestructura computacional: Computación en gridMario Jose Villamizar Cano
 

Más de Mario Jose Villamizar Cano (16)

e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
 
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startupsFrameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
 
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
 
An Overview of Internet Startups and Entrepreneurship
An Overview of Internet Startups and EntrepreneurshipAn Overview of Internet Startups and Entrepreneurship
An Overview of Internet Startups and Entrepreneurship
 
Energy-aware VM Allocation on An Opportunistic Cloud Infrastructure
Energy-aware VM Allocation on An Opportunistic Cloud InfrastructureEnergy-aware VM Allocation on An Opportunistic Cloud Infrastructure
Energy-aware VM Allocation on An Opportunistic Cloud Infrastructure
 
Emprendimiento en Internet / Internet Startups
Emprendimiento en Internet / Internet StartupsEmprendimiento en Internet / Internet Startups
Emprendimiento en Internet / Internet Startups
 
e-Clouds: a SaaS Marketplace for Scientific Computing
e-Clouds: a SaaS Marketplace for Scientific Computinge-Clouds: a SaaS Marketplace for Scientific Computing
e-Clouds: a SaaS Marketplace for Scientific Computing
 
Cloud computing oportunidades para empresarios y emprendedores
Cloud computing oportunidades para empresarios y emprendedoresCloud computing oportunidades para empresarios y emprendedores
Cloud computing oportunidades para empresarios y emprendedores
 
CLOUD COMPUTING HOY: Todo como Servicio.
CLOUD COMPUTING HOY: Todo como Servicio.CLOUD COMPUTING HOY: Todo como Servicio.
CLOUD COMPUTING HOY: Todo como Servicio.
 
UnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
UnaCloud: Opportunistic Cloud Computing Infrastructure as a ServiceUnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
UnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
 
Bio-UnaGrid: Easing bioinformatics workflow execution
Bio-UnaGrid: Easing bioinformatics workflow executionBio-UnaGrid: Easing bioinformatics workflow execution
Bio-UnaGrid: Easing bioinformatics workflow execution
 
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
 
An Opportunistic Storage System for UnaGrid
An Opportunistic Storage System for UnaGridAn Opportunistic Storage System for UnaGrid
An Opportunistic Storage System for UnaGrid
 
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
 
Una grid una solución oportunista para la HPC en colombia
Una grid una solución oportunista para la HPC en colombiaUna grid una solución oportunista para la HPC en colombia
Una grid una solución oportunista para la HPC en colombia
 
Infraestructura computacional: Computación en grid
Infraestructura computacional: Computación en gridInfraestructura computacional: Computación en grid
Infraestructura computacional: Computación en grid
 

Último

RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 

Último (20)

RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 

APO1 - Presentacion nivel 2

  • 1. ALGORÍTMICA Y PROGRAMACIÓN 1 (APO 1) NIVEL 2 Mario José Villamizar Cano mj.villamizar24@uniandes.edu.co Oficina ML-648 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
  • 3. 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
  • 4. 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
  • 5. CASOS DE ESTUDIO Caso de estudio 1: La tienda NIVEL 2
  • 6. HOJAS DE TRABAJO Hoja de trabajo 1: El estudiante NIVEL 2
  • 7. EJEMPLOS Ejemplo 1: Cupi AppStore NIVEL 2
  • 9. EJEMPLOS Ejemplo 3: La empresa de transporte NIVEL 2
  • 10. CASOS DE ESTUDIO - LA TIENDA NIVEL 2
  • 11. CASOS DE ESTUDIO - LA TIENDA NIVEL 2
  • 12. CASOS DE ESTUDIO - LA TIENDA R1 – Visualizar la información de los productos R2 – Vender un producto R3 – Abastecer la tienda con un producto R4 – Cambiar un producto R5 – 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) La cantidad de dinero promedio obtenido por unidad de producto vendida. NIVEL 2
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. TAREAS Desarrollar todas las tareas 1, 2, 3 y 4. Comprender el enunciado del ejercicio del nivel 2. NIVEL 2
  • 20. NUEVOS ELEMENTOS DE MODELADO – ENUMERACIONES Constantes para definir el dominio de un atributo Declaración de enumeraciones //Enumeradores public enum Tipo { PAPELERIA, SUPERMERCADO, DROGUERIA } //Atributos private Tipo tipo; NIVEL 2
  • 21. NUEVOS ELEMENTOS DE MODELADO – ENUMERACIONES Constantes para definir el dominio de un atributo Operaciones dentro de un método de la clase Producto tipo = Tipo.PAPELERIA; tipo = Tipo.SUPERMERCADO; tipo = Tipo.DROGUERIA; Operaciones dentro de un método de la clase Tienda int tipoProductoVendido = Tipo.PAPELERIA; int tipoProductoComprado = Tipo.SUPERMERCADO; NIVEL 2
  • 22. NUEVOS ELEMENTOS DE MODELADO – CONSTANTES Constantes para representar valores inmutables Declaración de constantes //Constantes public final static double IVA_PAPELERIA = 0.16; public final static double IVA_DROGUERIA = 0.12; public final static double IVA_SUPERMERCADO = 0.04; NIVEL 2
  • 23. 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_SUPERMERCADO); precio = valorUnitario * (1 + 0.04); Operaciones dentro de un método de la clase Tienda valorConIva = p1.darValorUnitario( ) * (1 + Producto. IVA_SUPERMERCADO); valorConIva = p1.darValorUnitario( ) * (1 + 0.04); NIVEL 2
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. OPERADORES DE ASIGNACIÓN Operador += Se utiliza para incrementar un atributo en cualquier valor. public void abastecer( int pCantidad ) { cantidadBodega += pCantidad; } public void abastecer( int pCantidad) { cantidadBodega = cantidadBodega + pCantidad; } NIVEL 2
  • 29. OPERADORES DE ASIGNACIÓN Operador -= Se utiliza para disminuir un atributo en cualquier valor. public void vender( int pCantidad) { cantidadBodega -= pCantidad; } public void vender( int pCantidad) { cantidadBodega = cantidadBodega - pCantidad; } NIVEL 2
  • 30. 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”
  • 31. 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”
  • 32. 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”;
  • 33. 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’;
  • 34. 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’
  • 35. 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
  • 36. 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
  • 37. 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
  • 38. 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
  • 39. 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
  • 40. 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
  • 41. 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
  • 42. CLASES Y OBJETOS NIVEL 2 En el diagrama de objetos se habla de un escenario particular. Cada Tienda puede tener sus propios productos. p1 p2p4 p3 dineroEnCaja = 0 :Tienda nombre = “Libreta” tipo = PAPELERIA valorUnitario = 5500 cantidadBodega = 44 cantidadMinima = 15 cantidadUnidadesVendidas = 6 :Producto nombre = “Leche” tipo = SUPERMERCADO valorUnitario = 2100 cantidadBodega = 25 cantidadMinima = 10 cantidadUnidadesVendidas = 25 :Producto nombre = “Aspirina” tipo = DROGUERIA valorUnitario = 2400 cantidadBodega = 13 cantidadMinima = 11 cantidadUnidadesVendidas = 7 :Producto nombre = “Jabón” tipo = SUPERMERCADO valorUnitario = 4200 cantidadBodega = 36 cantidadMinima = 8 cantidadUnidadesVendidas = 14 :Producto
  • 43. 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 = Tipo.PAPELERIA; nombre = ""; valorUnitario = 0.0; cantidadBodega = 0; cantidadMinima = 0; cantidadUnidadesVendidas = 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.
  • 44. 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 = PAPELERIA valorUnitario = 0.0 cantidadBodega = 0 cantidadMinima = 0 cantidadUnidadesVendidas = 0 :Producto p
  • 45. CLASES Y OBJETOS NIVEL 2 Una clase puede tener varios métodos constructores que se diferencian por los parámetros recibidos. public Producto( Tipo pTipo, String pNombre, double pValorUnitario, int pCantidadBodega, int pCantidadMinima ) { tipo = pTipo; nombre = pNombre; valorUnitario = pValorUnitario; cantidadBodega = pCantidadBodega; cantidadMinima = pCantidadMinima; cantidadUnidadesVendidas = 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.
  • 46. CLASES Y OBJETOS NIVEL 2 Ejemplo de cómo crear un objeto cuando el constructor recibe parámetros. Producto p = new Producto( Tipo.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 cantidadUnidadesVendidas = 0 :Producto p
  • 47. CLASES Y OBJETOS NIVEL 2 Constructor de la clase Tienda public Tienda( ) { producto1 = new Producto( Tipo.PAPELERIA, “Lápiz", 550.0, 18, 5 ); producto2 = new Producto( Tipo.DROGUERIA, “Aspirina", 109.5, 25, 8 ); producto3 = new Producto( Tipo.PAPELERIA, “Borrador", 207.3, 30, 10 ); producto4 = new Producto( Tipo.SUPERMERCADO, “Pan", 150.0, 15, 20 ); dineroEnCaja = 0; } Creación de una Tienda Tienda tienda = new Tienda( );
  • 48. TAREAS Desarrollar las tareas 5, 6, y 7. Desarrollar el ejercicio del nivel 2. NIVEL 2
  • 50. 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
  • 51. 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
  • 52. REALIZACIÓN EJERCICIOS TAREA 2 NIVEL 2 p1 p2p4 p3 dineroEnCaja = 0 :Tienda nombre = “Libreta” tipo = PAPELERIA valorUnitario = 5500 cantidadBodega = 44 cantidadMinima = 15 cantidadUnidadesVendidas = 6 :Producto nombre = “Leche” tipo = SUPERMERCADO valorUnitario = 2100 cantidadBodega = 25 cantidadMinima = 10 cantidadUnidadesVendidas = 25 :Producto nombre = “Aspirina” tipo = DROGUERIA valorUnitario = 2400 cantidadBodega = 13 cantidadMinima = 11 cantidadUnidadesVendidas = 32 :Producto nombre = “Jabón” tipo = SUPERMERCADO valorUnitario = 4200 cantidadBodega = 36 cantidadMinima = 8 cantidadUnidadesVendidas = 14 :Producto
  • 53. 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
  • 54. 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
  • 55. 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
  • 56. 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 pCantidad ) { if( pCantidad > cantidadBodega ) { cantidadUnidadesVendidas += cantidadBodega; cantidadBodega = 0; } else { cantidadUnidadesVendidas += pCantidad; cantidadBodega -= pCantidad; } } NIVEL 2
  • 57. 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 pCantidad ) { if( pCantidad <= cantidadBodega ) { cantidadUnidadesVendidas += pCantidad; cantidadBodega -= pCantidad; } else { cantidadUnidadesVendidas += cantidadBodega; cantidadBodega = 0; } } NIVEL 2
  • 58. 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
  • 59. 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
  • 60. 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
  • 61. CONDICIONALES EN CASCADA Ejemplo definir un método en la clase Producto que retorne el IVA del producto. public double darIVA( ) { if( tipo == Tipo.PAPELERIA ) { return IVA_PAPELERIA; } else if ( tipo == Tipo.SUPERMERCADO) { return IVA_SUPERMERCADO; } else { return IVA_DROGUERIA; } } NIVEL 2
  • 62. 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, String o enumeración. Se utiliza un expresión 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, String o valor de la enumeración 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, String o enumeración. NIVEL 2
  • 63. INSTRUCCIONES CONDICIONALES COMPUESTAS Estructura de la instrucción switch switch( Expresión ) { case caso_1: instrucciones_caso_1; break; case caso_2: instrucciones_caso_2; break; case caso_n: instrucciones_caso_n; break; } NIVEL 2
  • 64. 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_PAPELERIA; break; case SUPERMERCADO: iva = IVA_SUPERMERCADO; break; case DROGUERIA: iva = IVA_DROGUERIA; break; } return iva; }
  • 66. 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
  • 67. 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
  • 68. 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 24 ejercicios con condicionales). NIVEL 2