17
GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA ORIENTADO A OBJETO

GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Embed Size (px)

Citation preview

Page 1: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

GUÍA DE EJERCICIOS PRÁCTICOS

2015

Ing. José Oscar Mugetti Mare

PARADIGMA ORIENTADO A OBJETO

Page 2: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 1 / 16

TRABAJO PRÁCTICO 1

1. En la figura siguiente Mueble es una clase. Mesa y Sillas son subclases (hijos) y así

sucesivamente. Como representaría la jerarquía por medio de textos sangrados.

2. En una jerarquía de herencia orientada a objetos, tal como la que se muestra en el

gráfico precedente en que cada nivel es una forma más especializada del anterior.

Dé tres ejemplos mas de una jerarquía encontrada en la vida diaria que tenga la

misma propiedad.

3. Tome un problema del mundo real, como la acción de enviar flores a la abuela,

vista en clase, y describa la solución al problema en términos de objetos y

responsabilidades.

4. Describa las responsabilidades de una organización que comprenda al menos seis

tipos de individuos. (Por ejs. En una escuela: estudiantes, profesores, director,

conserje - en un negocio: secretaria, gerente, trabajadores...) para cada de

individuos, describa responsabilidades y colaboradores.

5. Para cada uno de los pares siguientes, diga si la relación es es-un o tiene-un: a. casa - techo b. conserje - empleado c. ratón digital - dispositivo de entrada d. menú - ventana e. conjunto - colección f. Describa luego 5 (cinco) pares más de cada una de las relaciones.

6. Entre dos objetos puede existir todo tipo de relaciones semánticas, que dependen

de la aplicación concreta en la que participan dichos objetos. Veamos un ejemplo:

Supongamos que vamos a construir un diccionario on-line, un diccionario

informatizado que permita al usuario obtener sobre la pantalla la definición de

una palabra cualquiera. Supongamos que, en dicho diccionario, las palabras son

objetos y que la organización jerárquica es la que procede de forma natural de la

estructura de nuestros conocimientos sobre el mundo. Estableciendo una relación

Trabajo (trazo discontinuo) ¿Cuáles serán las preguntas que se podrán responder

con las relación.

Mueble

Mesa

Mesa -1

Mesa -2

Silla

Silla -1

Page 3: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 2 / 16

7. Veamos el caso de una jerarquía compleja, como la de la siguiente figura y los

objetos heredan cierta propiedad o cierto método. Paro ello tendremos que

analizar si lo poseen algunos de sus padres, y si no lo tienen a los padres de estos y

así sucesivamente , o bien si lo poseen dos de sus antecesores, deberá analizar y

explicar las siguientes consideraciones:

a. Que predomine en primer antepasado en el que aparezca en método.

b. Que predomine el antepasado cuyo parentesco con el objeto considerado sea

más próximo.

c. Que no predomine ninguno de los dos, sino que el objeto herede ambas

propiedades simultáneamente considerando lo siguiente:

i. Que el objeto herede la disyunción de los dos valores.

ii. Que el objeto herede la conjunción de los dos valores.

iii. Que el objeto herede un valor predominante, pero no en función del

antepasado sino en función del valor mismo.

Temas

Vida

biologia

Zoologia

insectos

Himenopteros

Apidos

Abejas

medicina

Mundo

Geologia Fisica

Optica

Gravitación

Quimica

Hombre

Geografia Historia Biografia

Newton

A

J

I H

D

G F E

C B

Page 4: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 3 / 16

¿Cuántos atributos tiene la clase Cirujano?: ___

¿Cuántos atributos tiene la clase MedicoDeCabecera?: ___

¿Cuántos métodos tiene la clase Medico?: ____

¿Cuántos métodos tiene la clase Cirujano?: ____

¿Cuántos métodos tiene la clase MedicoDeCabecera?: ____

¿Puede un MedicoDeCabecera tratar pacientes?: ____

¿Puede un MedicoDeCabecera hacer incisiones?: ____

Page 5: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 4 / 16

TRABAJO PRÁCTICO 2

1. Con un editor de texto cualquiera editar un fichero llamado: HolaMundo.java

/* La clase HolaMundo simplemente muestra el mensaj e “Hola mundo” por pantalla */ class HolaMundo {

public static void main (String [] args ) { System .out .println (“Hola mundo !” ); }

}

a. Compilación

C:\> dir

HolaMundo.java

C:\> javac HolaMundo.java

C:\> dir

HolaMundo.class HolaMundo.java

b. Ejecución

C:\> dir

HolaMundo.class HolaMundo.java

C:\> java HolaMundo

Hola mundo!

2. Ejemplo

public class MiClase { int i ; public MiClase () { i = 10; } public void sumaAi ( int j ){ i = i + j ; } }

3. Ejemplo (Promedio.java)

public class Promedio { public static void main (String [] args ) { int i = 11, j = 20; double a = (i + j ) / 2.0 ; System .out .println ("El valor de i es:" + i + "y el de j es: " + j ); System .out .println ("El promedio es de: " + a ); } }

4. Control de Flujo (Bucles) public class Bucles { public static void main (String [] args ) { int cont1 = 0; while(cont1 < 3) { System .out .println (cont1 ); cont1 ++; } int cont2 = 0; do { System .out .println (cont2 ); cont2 ++; } while(cont2 < 2);

Page 6: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 5 / 16

for(int cont3 = 0; cont3 < 3; cont3 ++) { System .out .println (cont3 ); } } }

5. Desarrollar un programa que muestre por pantalla los números primos del 1 al 1000 y

todos los años bisiestos entre el año 2000 y el año 3000.

public class Practica { public static void main (String [] args ) { //Mostrar los números primos del 1 al 1000. boolean sw ; int contador = 0; System .out .println ("Los números primos del 1 al 1000 son:" ); for(int i =1; i <1001; i ++) { sw = true; for(int j =i ; j >0; j --) { if(i %j == 0 && j != i && j ! = 1) { sw = false; break; } } } if(sw) { System .out .println (i + "," ); Contador ++; } } System .out .println ("" ); System .out .println ("Hay: " + contador +

"números primos entre el 1 y el 1000." ); //Mostrar los años bisiestos del 2000 al 3000. contador = 0; System .out .println ("Los años bisiestos del 2000 al 3000 son:" ); for(int i =2000; i <3001; i ++) { if((i %4 == 0 && i %100 != 0) || i %400 == 0) { System .ut .println (i + "," ); contador ++; } } System .out .prinln ("" ); System .out .printl ("Hay:" + contador +

"años bisiestos entre el 2000 y el 3000." ); } }

Page 7: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 6 / 16

TRABAJO PRÁCTICO 3: HERENCIA 1. Ejemplo Figuras geométricas

Figura

getArea (): double

getPerimetro (): double

Rectangulo Elipse ancho: double

alto: double

Atributos/Variables

de la clase semiMayor: double

semiMenor: double

Rectangulo (double ancho, double alto)

getArea (): double

getPerimetro (): double

getAncho (): double

Constructor Métodos/Funciones

u Operaciones de la

clase

Elipse (double a, double b)

getArea (): double

getPerimetro (): double

getMayor (): double

Cuadrado Circulo

Cuadrado (double lado)

getLado (): double

Circulo (double radio)

getRadio(): double

a. Fichero Figura.java

public abstract class Figura { public abstract double area (); public abstract double perimetro (); }

b. Fichero Rectangulo.java

public class Rectangulo extends Figura { // Variables de la clase private double ancho ; private double alto ;

// Métodos de la clase // Método constructor public Rectangulo (double ancho , double alto ) { this.ancho = ancho ; this.alto = alto ; }

public double getArea () { return alto * ancho ; }

public double getPerimetro () { return 2 * (alto + alto ); }

public double getAncho () { return ancho ; }

public double getAlto () { return alto ; } }

Clase Abstracta

(No se puede instanciar pero se

puede definir métodos y el

constructor)

Relación de Herencia

La palabra clave this hace

referencia al objeto o

instancia actual

Page 8: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 7 / 16

c. Fichero Cuadrado.java

public class Cuadrado extends Rectangulo { // Métodos de la clase // Método constructor public Cuadrado (double lado ) { super(lado , lado ); }

// Método que retorna el valor del Atributo o miemb ro “ancho” public double getLado () { return super.getAncho (); } }

d. Fichero Elipse.java

public class Elipse extends Figura { // Variables de la clase protected double semiMayor ; protected double semiMenor ;

// Métodos de la clase // Método constructor public Elipse (double a , double b ) { if (a >= b ) { semiMayor = a ; semiMenor = b ; } else { semiMayor = b ; semiMenor = a ; } } public double getArea () { return Math .PI * semiMayor * semiMenor ; }

public double getPerimetro () { return Math .PI * (semiMayor + semiMenor ); }

public double getMayor () { return semiMayor ; }

public double getMenor () { return semiMenor ; } }

a. Fichero Circulo.java

public class Circulo extends Elipse { // Métodos de la clase // Método constructor public Circulo (double radio ) { super (radio , radio ); }

public double getRadio () { return semiMayor ; } }

La palabra clave super hace

referencia a la superclase de

la clase que se emplea

Page 9: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 8 / 16

2. Ejemplo Animales (corregir)

Animal

miVelocidad: int

miNombre: String

Animales: static int

Animal(int vel, String nom)

saluda (): void

cuantosAnimales(): void

corre (long distancia): void

Acuatico Tortuga

marino: boolean deTierra: boolean

Acuatico(int vel, String nom, boolean mar)

saluda (): void

Tortuga(int vel, String nom, boolean tie)

saluda (): void

class Animal { int miVelocidad ; String miNombre ;

public Animal (int vel , String nom ) { animales ++;

miNombre = nom; miVelocidad = vel ; };

public void saluda () { System .out .println ("Hola, soy " + miNombre ); }

public static void cuantosAnimales () { System .out .println ("Hay " + animales + " animales" );

}

public void corre (long distancia ) { for (long i =0; i <distancia ;i ++){ for (long j =0; j <100000000 ; j += miVelocidad ){;} System .out .print (" " + miNombre ); } System .out .println ("\n" + miNombre +" ha llegado !!!" ) }

}

class Acuatico extends Animal { boolean marino ;

public Acuatico (int vel , String nom , boolean mar ){ super(velocidad , nom); marino =mar; // los animales Acuaticos llevan prefijo "A_" miNombre = "A_" + miNombre ; }

public void saluda () { super.saludar (); System .out .println (" yo soy acuático." ); }

}

Page 10: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 9 / 16

class Tortuga extends Animal { boolean tierra ;

public Tortuga (int velocidad , String nombre , boolean tierra ){ super(velocidad , nombre ); tierra = tierra ; // las tortugas de tierra son el doble de veloces if (deTierra ) miVelocidad *=2; }

public void saluda () { saludar ();

System .out .println ("y mi velocidad es " + miVelocidad ); if (deTierra ) System .out .print ("y soy una tortuga de tierra\n" ); else System .out .print ("y soy una tortuga de mar\n" ); }

}

class Main { public static void main (String arg []) { Animal perro = new Animal (5); perro .saluda (); Animal .cuantosAnimales ();

Acuatico ballena = new Acuatico (1,"B1" ,true); ballena .saluda ();

laLiebre = new Animal (5,"L" ); laLiebre .saluda ();

Tortuga laTortuga1 = new Tortuga (1,"T1" ,false); Animal laTortuga2 = new Tortuga (1,"T2" ,true); laTortuga1 .saluda (); laTortuga2 .saluda (); Animal .cuantosAnimales ();

System .out .println ("\nComienza la carrera:\n" ); laLiebre .corre (10); laTortuga1 .corre (10); laTortuga2 .corre (10); }

}

Page 11: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 10 / 16

3. Ejemplo Turno de médico

Medico

-matricula: int

-nombre: String

-especialidad: String

+getMatricula: int

+getNombre: String

+getEspecialidad: String

a. Según el diagrama UML anterior, definir las clases Paciente, Medico y Turno.

b. Crear una clase llamada ReservaTurnos que:

i. Instancie dos pacientes.

ii. Instancie dos médicos.

iii. Instancie un turno para el paciente 1 del medico 2 a las 16 hrs.

iv. Instancie un turno para el paciente 2 del medico 1 a las 18 hrs.

v. Suspenda el turno anterior, colocando su estado en “Desocupado”.

Medico

-matricula: int

-nombre: String

-especialidad: String

+getMatricula: int

+getNombre: String

+getEspecialidad: String

Turno

-nroOrden: int

-fecha: String

-hora: String

-paciente: Paciente

-medico: Medico

-estado: String

+getNroOrden: int

+getFecha: String

+getHora: String

+getPaciente: Paciente

+getMedico: Medico

+getEstado: String

+actualizarEstado(estado: String)

Nota: se deberá mostrar los datos principales de los objetos a medida que sean creados,

ejemplo: “El paciente Maria reservo el turno el dia 05/11/2003 a las 16:00 hrs. para el

Dr. Pirulo”.

Page 12: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 11 / 16

TRABAJO PRÁCTICO 4: Lista 1. Ejemplo

Cliente

nombre: String

apellido: String

direccion: String

Cliente(nom: String, ap: String, dir: String)

getNombre(): String

getApellido(): String

getDireccion(): String

public class Cliente { private String nombre ;

private String apellido ; private String direccion ;

public String getApellido () { return apellido ; }

public void setApellido (String apellido ) { this.apellido = apellido ; }

public String getDireccion () { return direccion ; }

public void setDireccion (String direccion ) { this.direccion = direccion ; }

public String getNombre () { return nombre ; }

public void setNombre (String nombre ) { this.nombre = nombre ; }

public Cliente (String nombre , String apellido , String direccion ) { this.nombre = nombre ; this.apellido = apellido ; this.direccion = direccion ; }

public String toString () { return this.apellido + ", " + this.nombre + " - " + this.direccion ; } }

import java .util .*;

class Main { private static List <Cliente > clientes ;

public static void main (String [] args ) { clientes = new ArrayList <Cliente >();

Cliente cliente1 = new Cliente ("Nom1" ,"Ape1" ,"Dir1" ); Cliente cliente2 = new Cliente ("Nom2" ,"Ape2" ,"Dir2" );

Page 13: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 12 / 16

Cliente cliente3 = new Cliente ("Nom3" ,"Ape3" ,"Dir3" );

clientes .add(cliente1 ); clientes .add(cliente2 ); clientes .add(cliente3 );

//recorro la lista de clientes mostrandos sus datos // el Foreach no necesito saber la cantidad de ele mentos para recorrerlos System .out .println ("\nApellido\tNombre\tDirección" ); for(Cliente cliente : clientes ){ System .out .println (cliente ); }

List <Cliente > clientesEncontrados = clientesConNombre ("Nom2" );

System .out .println ("\nApellido\tNombre\tDirección" ); // recorre la lista de los clientes encontrados for(Cliente cliente : clientesEncontrados ){ System .out .println (cliente ); } }

public static List <Cliente > clientesConNombre (String nombre ){ List <Cliente > clientesConNombre =new ArrayList <Cliente >(); for(Cliente cliente : clientes ){ if(cliente .getNombre ()==nombre ){ clientesConNombre .add(cliente ); } } return clientesConNombre ; } }

2. Alquiler en un video club

Socio Alquiler Pelicula

-dni: int

-nombre: String

-dirección: String

-teléfono: String

-Numero: int

-fecha: String

-socio: Socio

-peliculas: List<Pelicula>

-codigo: int

-nombre: String

-alquilada: boolean

-categoria: String

+getDni(): int

+getNombre(): String

+getDireccion(): String

+getTelefono(): String

+getNumero(): int

+getFecha(): String

+getSocio(): Socio

+getPeliculas(): List<Pelicula>

+agregarPelicula(peli: Pelicula)

+getCodigo(): int

+getNombre(): int

+getAlquilada: boolean

+getCategoria(): String

Según el diagrama UML anterior, definir las clases, sus métodos toString y crear main que:

a. Instancie dos socios.

b. Realizar un método en main que enliste las peliculas.

c. Instancie 4 películas cuyo estados sea no alquiladas y enlistarlas.

d. Método que me devuelva las películas disponibles para alquilar

e. Método agregar Película que lo enliste y la cambie a alquilada.

f. Instancie Alquiler de 2 películas para el 1er socio

g. Instancie Alquiler de 1 película para el 2do Socio.

h. Mostrar las películas disponibles para alquilar

Page 14: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 13 / 16

Nota: se deberá mostrar los datos principales de los objetos a medida que sean creados

utilizando el método toString().

3. Desarrollar un sistema de garaje siguiendo estas especificaciones:

En el garaje se cambian las ruedas tanto de coches como de motos. El precio del cambio de

una rueda se fija al abrir el garaje, al igual que la capacidad máxima de vehículos, ya sean

motos o coches. Si no hubiese lugar para registrar un vehículo nuevo, habrá que tener

contemplado un sistema de aviso para quien esté dejando su vehículo.

El sistema de gestión de garaje requiere un mecanismo para ingresar y retirar los vehículos,

conocer el número total de vehículos recibidos en ese momento, el precio que supondría

cambiar todas las ruedas de todos los vehículos, y el kilometraje medio de todos ellos.

La información que manejaremos de los coches, entre otras cosas es la marca y el número de

puertas. Mientras que de las motos será la marca y la cilindrada.

En el método main, se creará el garaje, una serie de vehículos que se irán recibiendo en el

garaje y por último se imprimirá por pantalla toda la información general del garaje así como la

información de cada vehículo.

Page 15: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 14 / 16

EJERCICIOS PROPUESTOS (Parciales de otros años) 1. Alquiler de Propiedades para vacacionar

a. Realiza un constructos cliente que tome 4 parámetros e instancia 3 clientes usando

ese constructos.

b. Realiza un constructor para Casa que tome 2 argumentos (descripción y domicilio),

instancia 2 Casas, que estén disponible (disponibilidad = true), sin usar

cambiarEstado.

c. Instancia una Cabaña que tenga un servicio de calefacción. Cambia el servicio

brindado a “Aire acondicionado”.

d. Realizar un constructor de la reserva que cambia la disponibilidad de la propiedad a

falso, y realiza las siguientes reservas: Del cliente 1 con la casa 1, del cliente 2 con la

casa 2 y del cliente 3 con la cabaña.

e. Realizar un GestorDeReservaYPago (no main) que enliste las reservas. Realiza un

método que me devuelva todas las reservas de un cliente, todas las reserva de una

propiedad.

f. Realiza el pago de la propiedad 1, en el GestorDeReservaYPago, enlista el pago,

realiza un método que me devuelva todas las reservas no pagadas.

Referencia:

-Privado

+Publico

En Cursiva clase Abstracta

Ayuda para las lista

Librerías (import java.util.ArrayList; import java.util.List;.

Para instanciar una lista List<Cliente> listaDeClientes = new ArrayList<Cliente>();

Para recorrerla podes usar for (Cliente cliente : listaDeClientes){})

Page 16: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 15 / 16

2. Manejo de Stock Droguería

a. Realiza los constructores para:

i. Realiza los constructores de Sucursal, y ItemStock, que tomen todo los

parámetros, y otro sin la capacidadMaxima, SockMinimo, que es 50 y 30

respectivamente.

ii. Medicamento con todo los parámetro, y otro sin la droguería que va a ser

Genérico.

b. Instancia:

i. 3 Medicamentos, 3 Perfume y 2 Sucursales.

ii. ItemStock con los 3 medicamento con la 1er Sucursal, 3 Perfume con la 2da

Sucursal

c. Realizar el método de

i. PocoStock(), que me devuelva verdadero o falso si la mercadería tiene poco

stock.

ii. SePuedeAgregarCantidad(), que me devuelve verdadero si la capacidad actual

no supera la capacidad máxima, dependiendo la cantidad de mercadería a

agregar.

iii. AgregarStock() que utiliza el método sePuedeAgregarCantidad, para verificarlo,

devolviendo el éxito o fracaso de dicha operación.

iv. Utiliza el método AgregarStock queme permita verificar la condición del

apartado anterior.

d. Realiza un gestor(No main) que:

i. Enliste las mercaderías, los itemsStock.

ii. Un método que me devuelva en que sucursal se encuentra cierta mercadería.

iii. Las mercaderías con poco stock.

e. Me devuelva el mayor proveedor, que va a ser el que tiene mayor stock actual.

Referencia:

-Privado

+Publico

En Cursiva clase Abstracta

Page 17: GUÍA DE EJERCICIOS PRÁCTICOS 2015paradigmas-programacion.wikispaces.com/file/view/PARADIGMAS guía... · GUÍA DE EJERCICIOS PRÁCTICOS 2015 Ing. José Oscar Mugetti Mare PARADIGMA

Paradigmas de Programación

Ingeniería en Sistemas de información José Oscar Mugetti Mare

UTN FRSFCO

Paradigma Funcional 16 / 16

3. Supermercado

a. Realizar los Constructores para:

i. Venta que tenga solamente la fecha y otro además de la fecha la razón Social.

ii. Alimento que utilice todas las variables, otro con todo menos el stock mínimo

que es 20.

iii. Bebida.

iv. ItemVenta, que tome la mercadería y la cantidad, y reduzca el stock de la

mercadería.

b. Instancia :

i. 2 Alimento y 2 Bebidas

ii. 1 Razón Social

c. Realiza el método agregarItem de venta que tome como parámetro la mercadería y

la cantidad, donde se agrega a la lista de los ítemsVenta, y va incrementando el

importe a pagar, para ello utiliza el método importePorCantidad del itemVenta,

donde calcula el importe a pagar por la cantidad.

i. Realiza la venta del:

• Alimento1 y la bebida 1.

• La razón Social con la bebida2 y el alimento 2.

ii. Muestra el importe a pagar.

iii. Realiza los pagos con un importe mayor, muestra los vueltos.

d. Realiza un gestor (no main)que:

i. Enliste las mercaderías

ii. Muestre todo lo recaudado.

iii. Muestre toda la mercadería con poco stock.

Referencia:

-Privado

+Publico

En Cursiva clase Abstracta