Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ej1-Utilizando POO elabore una calculadora básica que pida el tipo de operación y dos números para operarlos.
//metodos
public double operacion(int opcion, double numero1, double numero2) {
switch(opcion) {
case 1:
this.resultado = numero1 + numero2;
break;
case 2:
this.resultado = numero1 - numero2;
break;
case 3:
this.resultado = numero1 * numero2;
break;
case 4:
this.resultado = numero1 / numero2;
break;
}
return this.resultado;
}
Clase Ejecutable
import java.util.Scanner;
//se captura datos introducido por el usuario y se convierte al tipo de dato de la variable.
opcion = lectura.nextInt();
if (opcion != 0) {
System.out.println("Ingrese el primer número");
//se captura datos introducido por el usuario y se convierte al tipo de dato de la variable.
numero1 = lectura.nextDouble();
System.out.println("Ingrese el segundo número");
//se captura datos introducido por el usuario y se convierte al tipo de dato de la variable.
numero2 = lectura.nextDouble();
Ej2- Utilizando POO elabore un programa que calcule el perímetro de un cuadro, triángulo equilátero y círculo. Para
esto debe pedir la figura geométrica y los valores apropiados para cada tipo. (Debe utilizar herencia)
package perimetroFigurasGeometricas;
package perimetroFigurasGeometricas;
// aplicar herencia de la superclase figurasGeometricas con la palabra extends
@Override
public void calcularPerimetro() {
// TODO Auto-generated method stub
this.perimetro=Math.PI * diametro;
}
// métodos set y get para cada atributo
public double getDiametro() {
return diametro;
}
package perimetroFigurasGeometricas;
// aplicar herencia de la superclase figurasGeometricas con la palabra extends
// Anulación, Sobreescritura o Overriding es una característica que permite que una subclase o clase secundaria
proporcione una implementación específica de un método que ya está provisto por una de sus superclases o clases padre.
@Override
public void calcularPerimetro() {
// TODO Auto-generated method stub
this.perimetro = lado * 4;
}
}
package perimetroFigurasGeometricas;
// aplicar herencia de la superclase figurasGeometricas con la palabra extends
/*Anulación, Sobreescritura o Overriding es una característica que permite que una subclase o clase secundaria
proporcione una implementación específica de un método que ya está provisto por una de sus superclases o clases
padre.*/
@Override
public void calcularPerimetro() {
// TODO Auto-generated method stub
this.perimetro = lado * 3;
}
}
Clase Ejecutable
package perimetroFigurasGeometricas;
import java.util.Scanner;
int opcion;
do {
System.out.println("");
System.out.println("MENÚ DE SISTEMA");
System.out.println("Seleccione el número de la opción que desea:");
System.out.println("1 - Para calcular el área de un circulo");
System.out.println("2 - Para calcular el área de un cuadrado");
System.out.println("3 - Para calcular el área de un triangulo");
System.out.println("0 - Para salir");
opcion = lectura.nextInt();
switch (opcion) {
case 1:
figuraCirculo.nombre ="circulo";
System.out.println("Introduzca el diametro del circulo");
figuraCirculo.setDiametro(lectura.nextDouble());
figuraCirculo.calcularPerimetro();
System.out.println("El perimetro del " + figuraCirculo.nombre + " es " +
figuraCirculo.getPerimetro());
break;
case 2:
figuraCuadrado.nombre ="cuadrado";
System.out.println("Introduzca el lado del cuadrado");
figuraCuadrado.setLado(lectura.nextDouble());
figuraCuadrado.calcularPerimetro();
System.out.println("El perimetro del " + figuraCuadrado.nombre + " es " +
figuraCuadrado.getPerimetro());
break;
case 3:
figuraTriangulo.nombre ="triangulo equilatero";
System.out.println("Introduzca el lado del triangulo equilatero");
figuraTriangulo.setLado(lectura.nextDouble());
figuraTriangulo.calcularPerimetro();
System.out.println("El perimetro del " + figuraTriangulo.nombre + " es " +
figuraTriangulo.getPerimetro());
break;
}
} while (opcion != 0);
}
Ej3- Utilizando POO y ArrayList elabore un programa que solicite N notas de examen y luego indique cual es la cantidad
de aprobados y reprobados
Clase Ejecutable
import java.util.ArrayList;
import java.util.Scanner;
do {
System.out.println("");
System.out.println("MENÚ DE SISTEMA");
System.out.println("Seleccione el número de la opción que desea:");
System.out.println("1 - Para agregar una nota");
System.out.println("2 - Para ver las estadisticas de las notas ingresadas");
System.out.println("0 - Para salir");
opcion = lectura.nextInt();
switch (opcion) {
case 1:
System.out.println("Introduzca la nota del examen");
Notas nota = new Notas();
nota.setNota(lectura.nextDouble());
examenes.add(nota);
break;
case 2:
contadorAprobados=0;
contadorReprobados=0;
for (int i = 0; i < examenes.size() ; i ++) {
if (examenes.get(i).notaAprobada()==true) {
contadorAprobados=contadorAprobados+1;
} else {
contadorReprobados=contadorReprobados+1;
}
}
Ej4- Haciendo uso de POO Crear una clase Libro que contenga los siguientes atributos: ISBN, Título, Autor y Número de
páginas. Crear sus respectivos métodos get y set correspondientes para cada atributo. Crear el método toString() para
mostrar la información relativa al libro con el siguiente formato: “El libro con ISBN creado por el autor tiene páginas” En
la clase ejecutable, crear 2 objetos Libro (los valores que se quieran) y mostrarlos por pantalla. Por último, indicar cuál
de los 2 tiene más páginas.
https://youtu.be/eul9fP98XhI
/*Atributos*/
private int ISBN;
private String titulo;
private String autor;
private int numPaginas;
/*Constructores*/
ISBN=pISBN;
titulo=pTitulo;
autor=pAutor;
numPaginas=pNumPaginas;
/*Metodos*/
Clase Ejecutable
import java.util.Scanner;
//Mostramos su estado
System.out.println(libro1.toString());
System.out.println(libro2.toString());
}
}
Ej5- Haciendo uso de POO crear un programa que representen los valores de las raíces de una ecuación de 2º grado. Se
tendrá 3 coeficientes como atributos, se pueden llamar a, b y c. Se deben insertar estos 3 valores para construir el
objeto. Las operaciones que se podrán hacer son las siguientes:
https://youtu.be/M35_PFdLITs
/*Atributos*/
private double a;
private double b;
private double c;
/**
* Ecuacion de 2º grado
* @param a
* @param b
* @param c
*/
public Raices(double a, double b, double c){
this.a=a;
this.b=b;
this.c=c;
}
/**
* Metodos para obtener las raices cuando hay 2 soluciones posibles
*/
private void obtenerRaices(){
double x1=(-b+Math.sqrt(getDiscriminante()))/(2*a);
double x2=(-b-Math.sqrt(getDiscriminante()))/(2*a);
System.out.println("Solucion X1");
System.out.println(x1);
System.out.println("Solucion X2");
System.out.println(x2);
}
/**
* Obtiene una unica raiz, cuando solo tiene la posibilidad de tener una solucion
*/
private void obtenerRaiz(){
double x=(-b)/(2*a);
System.out.println("Unica solucion");
System.out.println(x);
/**
* Nos devuelve el valor del discriminante,
* @return
*/
private double getDiscriminante(){
return Math.pow(b, 2)-(4*a*c);
}
/**
* Si el discriminante es mayor que 0 tiene mas de una raiz
* (No hemos puesto >= ya que puede confundirse con una solucion)
* @return
*/
private boolean tieneRaices(){
return getDiscriminante()>0;
}
/**
* Si el discriminante es igual a cero tiene una sola raiz
* @return
*/
private boolean tieneRaiz(){
return getDiscriminante()==0;
}
/**
* Nos permite calcular las raices de una ecuacion de 2º grado
*/
public void calcular(){
if(tieneRaices()){
obtenerRaices();
}else if(tieneRaiz()){
obtenerRaiz();
}else{
System.out.println("No tiene soluciones");
}
Clase Ejecutable
public class Main {
}
}
Ej6- Crear una lista de a lo más 20 números decimales, los valores de la lista deberán estar entre 1 y 100, mostrar el
promedio de los números mayores a 25.4
//importamos la utilidad Iterator para mostrar una forma diferente de imprimir la lista
import java.util.Iterator;
ArrayList lista;
ArrayList filtro;
//Creamos los arraylist los cuales se iniciaran con un valor por defecto de 10
//Este método lo explicare con detalle ,ya que es aquí donde se encuentra la lógica del programa
/*Este ciclo es una de las formas de setear el tamaño de una lista para agregar un valor cada vez que se cree un
espacio de almacenamiento en esta, se crea un entero i de valor que se irá incrementando mientras sea menor o igual a
20 */
for(int i = 0;i<=20;i++)
{ /*cada vez que el valor i se incrementa, creo el decimal aleatorio de rango entre 1 y 100
aleatorio = Math.random()*99 + 1;
lista.add(aleatorio);
if (aleatorio >25.4){
//de ser asi lo agrego a la segunda lista que cree la cual almacena los números mayores a 24.5
filtro.add (aleatorio);
//Imprimo la lista que contiene todos los numero aleatorios generados usando iterator
System.out.println("********Recorriendo el Arreglo*********") ;
Iterator it = lista.iterator();
while(it.hasNext ())
System.out.println("Lista:" + filtro);
Double x = 0.0;
//Recorro el arreglo de numeros mayores a 24.5 y obtengo el total de la suma de los numero de la lista filtro
//seteo el valor de x.... ahora será la suma de todos los números dividido por la cantidad de elementos del arreglo
x= x/(filtro.size()-1);
System.out.Print ("***********Promedio*********");
System.out.println (Math.round(x));
Clase Ejecutable
{
tarea t = new tarea();
t.llenarlista ();
}
}
Ej7- Se desea manejar una lista de robots. Cada robot tiene un número y un porcentaje de vida. El número de
elementos de la lista será un valor aleatorio entre 5 y 10. El porcentaje de vida de cada ROBOT será un valor aleatorio
entre 1 y 100.
Se pide construir una aplicación en java que permita cumplir con la siguiente funcionalidad:
● Imprimir la lista de robot ordenada por porcentaje de vida de los robots. Al principio de la lista DEBEN estar los
robots con menos porcentaje de vida.
● Imprimir el número de los TRES robots que tienen mayor porcentaje de vida.
Clase Ejecutable
import java.util.*;
{//ArrayList de Robot
//ordenamos la lista de robots con Collections.sort usara el metoso sobreescrito en la clase Robot
Collections.sort(lista) ;
//imprimimos la lista y llamamos al método toString() el cual esta sobreescrito en la clase Robot
System.out.println (lista.toString());
//recorremos la lista de robot y por cada porcentaje de vida mayor a 50% la variable cantidad aumenta en 1
for(int x=0;x<lista.size();x++)
if (lista.get(x).getPorcentajeVida()>50)
cantidad++;
//imprimimos los números de los ultimos 3 robot con mayor porcentaje de vida
System.out.println(lista.get(lista.size()-1).getNumero() +"-"+lista.get(lista.size()-2).getNumero()+"-"+lista.get(lista.size()-
3).getNumero());
****************************************************************
this.numero = numero;
this.porcentajeVida = porcentajeVida;
return numero;
return porcentajeVida;
@Override
Robot ro = (Robot)t;
import java.util.*;
public class Main {
public static void main(String[]args)
{//Creamos un ArrayList de enteros
ArrayList<Integer> lista = new ArrayList<Integer>();
//Declaramos una variable de tipo Int la cual contendra la cantidad de elementos que agregaremos a la lista
int intervalo=(int) (Math.random()* (20-10+1)+10);
//El ciclo for agregara nuevos numeros aleatorios entre [10;100] a la lista
for(int x=0;x<intervalo;x++){
lista.add( (int) (Math.random() * (100-10+1)+10));
}
//Mostramos la lista
System.out.println (lista);
Ej9- Elaborar una clase que permita leer diez números en un arreglo de elementos de tipo entero, utilizar un método
que capture los datos, un método que calcule la media aritmética y otro método que imprima el resultado.
import java.util.ArrayList;
import java.util.Scanner;
}
// método para calcular la media aritmética
public double CalcularMediaAritmetica() {
double mediaAritmetica = 0;
int sumatoria = 0;
int posicion = 0;
while (posicion < longitud) {
sumatoria += lista.get(posicion);
posicion++;
}
mediaAritmetica = sumatoria / longitud;
return mediaAritmetica;
}
Clase Ejecutable
public class Principal {
}
}
Ej10- Una Tienda de Calzado brinda un bono a sus empleados por logro de metas de ventas mensuales, si se logra al
menos 60% de la meta, el bono es del 10% del salario, si la venta mensual es mayor al 80% se obtiene el 20% de
bonificación y el 30% si se logra sobrepasar dicha meta.
Utilizando el concepto de Herencia, modelar una clase llamada Vendedor que hereda de la clase llamada Persona,
escribir los métodos necesarios para calcular el salario a pagar a final de mes.
// constructor
Persona(String _nombres, String _apellidos){
this.nombres=_nombres;
this.apellidos=_apellidos;
}
/*El método Java toString() es de los métodos más utilizados de la clase object cuando estamos trabajando en el día a día.
¿Para qué sirve este método? . Realmente su uso esta muy orientado a presentarnos una información legible del objeto
con el que en un momento estamos trabajando. Para ello siempre tendremos que sobre escribirlo y definir el tipo de
implementación que más nos encaje*/
@Override
public String toString() {
return (nombres.toUpperCase()+" "+apellidos.toUpperCase());
}
}
/*constructor. super se puede usar para acceder al constructor de la clase padre. Una cosa más importante es que ”super”
puede llamar constructores tanto con parámetros como sin parámetros dependiendo de la situación
Clase Ejecutable
public class Inicio {
Ej11-Cree las clases necesarias para gestión de productos, cumpliendo los siguientes requisitos.
➔ Los productos tienen los siguientes atributos:
◆ Nombre
◆ Precio
➔ Tenemos dos tipos de productos:
◆ Perecedero: tiene un atributo llamado días a caducar.
◆ No perecedero: tiene un atributo llamado categoría.
➔ Tendremos una función llamada calcular, que según cada clase hará una cosa u otra, a esta función le
pasaremos un número siendo la cantidad de productos:
◆ En Producto, simplemente sería multiplicar el precio por la cantidad de productos pasados.
◆ En Perecedero, aparte de lo que hace producto, el precio se reducirá según los días a caducar:
● Si le queda 1 día para caducar, se reducirá 4 veces el precio final.
● Si le quedan 2 días para caducar, se reducirá 3 veces el precio final.
● Si le quedan 3 días para caducar, se reducirá a la mitad de su precio final.
◆ En NoPerecedero, hace lo mismo que en el producto.
➔ Sobreescribir el método toString() en cada producto para que muestre un resumen de la información.
Cree una clase ejecutable y crea un array de productos y muestra el precio total de vender 5 productos de cada uno.
Crea tú mismo los elementos del array.
https://youtu.be/pGPBaNxjeU0
//Atributos
private String nombre;
private double precio;
//Constructores
public Producto(String nombre, double precio) {
this.nombre = nombre;
this.precio = precio;
}
//Metodos
public String getNombre() {
return nombre;
}
@Override
public String toString() {
return "nombre=" + nombre + ", precio=" + precio +", ";
}
/**
* Indica el precio total segun una cantidad
* @param cantidad
* @return
*/
public double calcular(int cantidad){
return precio*cantidad;
}
//Constructores
public Perecedero(int dias_a_caducar, String nombre, double precio) {
super(nombre, precio);
this.dias_a_caducar = dias_a_caducar;
}
//Metodos
public int getDias_a_caducar() {
return dias_a_caducar;
}
@Override
public String toString() {
return super.toString() + " dias_a_caducar=" + dias_a_caducar;
}
/**
* Calcula el precio segun una cantidad,
* tambien segun los dias que le queden al prodcuto,
* se reducira el precio.
* <ul>
* <li>1: 4 veces menos</li>
* <li>2: 3 veces menos</li>
* <li>3: 2 veces menos</li>
* </ul>
* @param cantidad
* @return
*/
@Override
public double calcular(int cantidad) {
switch (dias_a_caducar) {
case 1:
precioFinal /= 4;
break;
case 2:
precioFinal /= 3;
break;
case 3:
precioFinal /= 2;
break;
}
return precioFinal;
}
//Atributos
private String tipo;
//constructores
public NoPerecedero(String tipo, String nombre, double precio) {
super(nombre, precio);
this.tipo = tipo;
}
//Metodos
public String getTipo() {
return tipo;
}
@Override
public String toString() {
return super.toString() + " tipo=" + tipo + '}';
}
Clase Ejecutable
//Calculo el precio
double total=0;
for(int i=0;i<productos.length;i++){
total += productos[i].calcular(5); //Polimorfismo
}
//Muestro el total
System.out.println("el total es "+total);
}
Ej12- Elaborar una clase y su respectiva implementación, que permita leer una frase u oración y que imprima si es un
palíndromo o no. Un palíndromo es una frase que se lee igual de izquierda a derecha que de derecha a izquierda .
Por ejemplo: RADAR se lee igual de izquierda a derecha que de derecha a izquierda.
caracter = frase.charAt(contador);
/* método concat () se utiliza para especificar los parámetros de la cadena de conexión a la cadena.*/
fraseInvertida = fraseInvertida.concat(String.valueOf(caracter));
}
/* El método compareTo () se usa para realizar una ordenación natural en una cadena. Clasificación natural
significa el orden de clasificación que se aplica al objeto, por ejemplo, orden léxico para Cadena, orden numérico para
ordenar enteros, etc.
El orden léxico no es más que orden alfabético. compareTo methods hace una comparación secuencial de letras en la
cadena que tienen la misma posición. */
if (frase.compareTo(fraseInvertida) == 0) {
resultado = true;
}
return resultado;
}
}
Clase Ejecutable
import java.util.Scanner;
Ej13- Desarrolla una clase Cafetera con atributos _capacidadMaxima (la cantidad máxima de café que puede contener
la cafetera) y _cantidadActual (la cantidad actual de café que hay en la cafetera).
//constructores
public Cafetera() {
capacidadMaxima=1000;
cantidadActual=capacidadMaxima;
}
}
}
public void vaciarCafetera() {
cantidadActual=0;
}
public void agregarCafe(int Coffe) {
cantidadActual=cantidadActual+Coffe;
}
}
Clase Ejecutable
import java.util.Scanner;
int pedidoCafe;
do {
System.out.println("Bienvenido \n ¿Que desea hacer? \n 1. Pedir Cafe \n 2. Llenar Cafetera \n 3. Vaciar
Cafetera \n 4. Agregar cafe" );
pedidoCafe=Entrada.nextInt();
switch(pedidoCafe) {
case 1:{
System.out.println("Bienvenido \n ¿Cuantos Cafes necesita?");
pedidoCafe=Entrada.nextInt();
cafe1.servirTaza(pedidoCafe);
System.out.println("Cafe Actual "+ cafe1.getCantidadActual());
break;
}
case 2:{cafe1.llenarCafetera();
System.out.println("La cafetera ha sido llenada con exito, Cantidad Actual: "+cafe1.getCantidadActual());
break;
}
case 3: {cafe1.vaciarCafetera();
System.out.println("La cafetera ha sido vaciada con exito, Cantidad Actual: "+cafe1.getCantidadActual());
break;
}
case 4: {
System.out.println("Ingrese el valor en tazas a agregar Valor Actual: "+cafe1.getCantidadActual());
pedidoCafe=Entrada.nextInt();
cafe1.agregarCafe(pedidoCafe);
System.out.println("Se agrego las tazas de cafe con exito, Cantidad Actual: "+cafe1.getCantidadActual());
break;
}
}
System.out.println("Proceso ejecutado con exito \n 1.Seguir \n 0. Salir");
pedidoCafe=Entrada.nextInt();
}while(pedidoCafe!=0);
}
Ej14- Crea una clase llamada Libro que guarde la información de cada uno de los libros de una biblioteca. La clase debe
guardar el título del libro, autor, número de ejemplares del libro y número de ejemplares prestados.
La clase debe realizar las siguientes acciones:
● Préstamo: que incremente el atributo correspondiente cada vez que se realice un préstamo del libro. No se
podrán prestar libros de los que no queden ejemplares disponibles para prestar. Devuelve true si se ha podido
realizar la operación y false en caso contrario.
● Devolución: que disminuya el atributo correspondiente cuando se produzca la devolución de un libro. No se
podrán devolver libros que no se hayan prestado. Devuelve true si se ha podido realizar la operación y false en
caso contrario.
Pruebe la clase realizando las acciones correspondientes y muestre los atributos de un libro.
//getters y setters
public String getAutor() {
return autor;
}
Clase Ejecutable
import java.util.*;
//se realiza otro préstamo de libro1. En este caso no se podrá realizar ya que
//solo hay un ejemplar de este libro y ya está prestado. Se mostrará por
//pantalla el mensaje No quedan ejemplares del libro…
if (libro1.prestamo()) {
System.out.println("Se ha prestado el libro " + libro1.getTitulo());
} else {
System.out.println("No quedan ejemplares del libro " + libro1.getTitulo() + " para prestar");
}
//mostrar los datos del objeto libro1
System.out.println("Libro 1:");
System.out.println("Titulo: " + libro1.getTitulo());
System.out.println("Autor: " + libro1.getAutor());
System.out.println("Ejemplares: " + libro1.getEjemplares());
System.out.println("Prestados: " + libro1.getPrestados());
System.out.println();
Ej15- Realizar una agenda telefónica de contactos bajo las siguientes especificaciones:
● Un contacto está definido por un nombre y un teléfono (No es necesario de validar). Un contacto es igual a otro
cuando sus nombres son iguales.
● Una agenda de contactos está formada por un conjunto de contactos.
● Se podrá crear de dos formas, indicándose el tamaño o con un tamaño por defecto (10).
Las acciones de la agenda serán los siguientes:
● Añadir un contacto a la agenda(solicitando un objeto de tipo Contacto), si no se pueden meter más a la agenda se
indicará por pantalla. No se pueden meter contactos que existan, es decir, no podemos duplicar nombres,
aunque tengan distinto teléfono.
● Indicar si el contacto pasado existe o no (solicitando un objeto de tipo Contacto).
● Listar toda la agenda.
● Buscar un contacto por su nombre y mostrar su teléfono.
● Eliminar el contacto de la agenda, indicando si se ha eliminado o no (solicitando un objeto de tipo Contacto).
● Indicar si la agenda está llena.
● Indicar cuantos contactos más podemos meter.
Para su implementación y prueba deberá crear un menú de opciones por consola para probar todas las funcionalidades de
la agenda.
https://youtu.be/8EAxXhEmIlk
if(this.nombre.trim().equalsIgnoreCase(c.getNombre().trim())){
return true;
}
return false;
@Override
public String toString() {
return "nombre=" + nombre + ", telefono=" + telefono;
}
}
public class Agenda {
//Atributos
private Contacto[] contactos;
//Constructores
public Agenda() {
this.contactos = new Contacto[10]; //por defecto
}
//Metodos
/**
* Añade un contacto a la agenda
*
* @param c
*/
public void aniadirContacto(Contacto c) {
if (encontrado) {
System.out.println("Se ha añadido");
} else {
System.out.println("No se ha podido añadir");
}
}
/**
* Indica si existe un contacto
*
* @param c
* @return
*/
public boolean existeContacto(Contacto c) {
/**
* Lista los contactos de la agenda
*/
public void listarContactos() {
if (espacioLibre() == contactos.length) {
System.out.println("No hay contactos que mostrar");
} else {
for (int i = 0; i < contactos.length; i++) {
if (contactos[i] != null) { //Controlo nulos
System.out.println(contactos[i]);
}
}
}
}
/**
* Busca un contacto por su nombre
*
* @param nombre
*/
public void buscarPorNombre(String nombre) {
if (!encontrado) {
System.out.println("No se ha encontrado el contacto");
}
/**
* Indica si la agenda esta llena o no
*
* @return
*/
public boolean agendaLlena() {
/**
* Elimina el contacto de la agenda
*
* @param c
*/
public void eliminarContacto(Contacto c) {
/**
* Indica cuantos contactos más podemos meter
*
* @return
*/
public int espacioLibre() {
int contadorLibres = 0;
for (int i = 0; i < contactos.length; i++) {
if (contactos[i] == null) { //Controlo nulos
contadorLibres++; //Acumulo
}
}
return contadorLibres;
import java.util.InputMismatchException;
import java.util.Scanner;
Clase Ejecutable
public class Principal {
Contacto c;
while (!salir) {
switch (opcion) {
case 1:
//Pido valores
System.out.println("Escribe un nombre");
nombre = sn.next();
System.out.println("Escribe un telefono");
telefono = sn.nextInt();
//Creo el contacto
c = new Contacto(nombre, telefono);
agendaTelefonica.aniadirContacto(c);
break;
case 2:
agendaTelefonica.listarContactos();
break;
case 3:
//pido el nombre
System.out.println("Escribe un nombre");
nombre = sn.next();
agendaTelefonica.buscarPorNombre(nombre);
break;
case 4:
//pido el nombre
System.out.println("Escribe un nombre");
nombre = sn.next();
if (agendaTelefonica.existeContacto(c)) {
System.out.println("Existe contacto");
} else {
System.out.println("No existe contacto");
}
break;
case 5:
//pido el nombre
System.out.println("Escribe un nombre");
nombre = sn.next();
agendaTelefonica.eliminarContacto(c);
break;
case 6:
break;
case 7:
break;
case 8:
salir = true;
break;
default:
System.out.println("Solo números entre 1 y 8");
}
} catch (InputMismatchException e) {
System.out.println("Debes insertar un número");
sn.next();
}
Ej16- Cree un proyecto para gestión de empleados, los empleados deben tener como atributos, nombre, edad y salario,
además de una constante llamada BONO con un valor de 300.00. Se tendrán dos tipos de empleados:
● El comercial, aparte de los atributos anteriores, tiene uno más llamado comisión (double).
● El repartidor, aparte de los atributos de empleado, tiene otro llamado zona (String).
Deberá crear sus constructores, getters and setters. No se podrán crear objetos del tipo Empleado (la clase padre) pero sí
de sus hijas.
Las clases tendrán un método llamado bono, que según en cada clase tendrá una implementación distinta. Este bono
básicamente aumenta el salario del empleado.
En comercial, si tiene más de 30 años y cobra una comisión de más de 200, se le aplicará el bono.
En repartidor, si tiene menos de 25 y reparte en la “zona 3”, este recibirá el bono.
Puede hacer que devuelva un booleano o que no devuelva nada, lo dejo a tu elección.
Para probarlo, debe crear dos distintos empleados de cada tipo y ejecutar su método “bono”, mostrando el salario final de
ambos.
https://youtu.be/iDhF7kSjHL8
Clase Abstracta
public abstract class Empleado {
//Atributos
private String nombre;
private int edad;
private double salario;
//Constantes
public final double BONO = 300;
//Constructores
public Empleado(String nombre, int edad, double salario) {
this.nombre = nombre;
this.edad = edad;
this.salario = salario;
}
//Metodos
public String getNombre() {
return nombre;
}
@Override
public String toString() {
return "nombre=" + nombre + ", edad=" + edad + ", salario=" + salario + ", ";
}
//Metodo abstracto, obliga a las clases hijas que implementen esta función
public abstract boolean bono();
//Atributos
private double comision;
//Constructores
public Comercial(double comision, String nombre, int edad, double salario) {
super(nombre, edad, salario);
this.comision = comision;
}
//Metodos
public double getComision() {
return comision;
}
/**
* Devuelve el estado del objeto, llama primero al toString de la clase
* padre
*
* @return
*/
@Override
public String toString() {
return super.toString() + " comision=" + comision;
}
/**
* Si tiene mas de 30 años y la comision es mayor que 200, aumentamos el
* sueldo al empleado
*
* @return
*/
@Override
public boolean bono() {
return false;
}
}
//Atributos
private String zona;
//Constructores
public Repartidor(String zona, String nombre, int edad, double salario) {
super(nombre, edad, salario);
this.zona = zona;
}
//Metodos
public String getZona() {
return zona;
}
@Override
public String toString() {
return super.toString() + " zona=" + zona;
}
/**
* Si tiene menos de 25 años y la zona es "zona 3",
* aumentamos el sueldo al empleado
* @return
*/
@Override
public boolean bono() {
return false;
}
Clase Ejecutable
public class Principal {
public static void main(String[] args) {
//Llamamos a bono
c1.bono();
r1.bono();
//Mostramos la informacion
System.out.println(c1);
System.out.println(r1);
}
Ej17- Crear un proyecto que implemente una clase “CuentaBancaria” que tenga como atributos:
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Random;
return datosCuenta;
}
Clase Ejecutable
public class Banco {
}
}