BIS - 06 Programación III Semana 2

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 39

BIS – 06

Programación III
Semana 2
Agenda

• Repaso Java OOP continuacion

• Proyecto
Repaso Java
4 principios de la programación
orientada a objetos

• Herencia

• Encapsulación

• Polimorfismo

• Abstracción
Herencia

“Inheritance allows classes to inherit features of other classes.


Put another way, parent classes extend attributes and behaviors
to child classes. Inheritance supports reusability.”
Ejemplo de herencia
class Animal{  
void eat(){ class TestInheritance{  
System.out.println("eating..."); public static void main(String args[]){  
}   Dog d=new Dog();  
} d.bark();  
d.eat();  
class Dog extends Animal{   }
void bark(){ }  
System.out.println("barking...");
}  

Encapsulación

“Encapsulation means containing all important information inside


an object, and only exposing selected information to the outside
world. ”
Polimorfismo
“Polymorphism is the concept that there can be many different implementations of
an executable unit and the difference happen all behind the scene without the
caller awareness.”

Polymorphism allows the same method to execute different behaviors in two ways:
• Method overriding

• Method overloading.
Sobrecarga de métodos
class Adder{  
static int add(int a,int b){return a+b;}  
static int add(int a,int b,int c){return a+b+c;}  
}  
class TestOverloading{  
public static void main(String[] args){  
System.out.println(Adder.add(11,11));  
System.out.println(Adder.add(11,11,11));  
}
}  
Sobreescritura de métodos
//Java Program to illustrate the use of Java  //Creating a child class  
//Method Overriding   class Bike extends Vehicle{  
//Creating a parent class.     //defining the same method as in the parent class  
class Vehicle{     void run(){
  //defining a method   System.out.println("Bike is running safely");
  void run(){ }  
System.out.println("Vehicle is running");   public static void main(String args[]){  
}  
   Bike2 obj = new Bike2();//creating object  
}
   obj.run();//calling method  
  }  
}
Abstracción

“Abstraction means that the user interacts with only selected


attributes and methods of an object. Abstraction uses simplified,
high level tools, to access a complex object.
• Using simple things to represent complexity

• Hide complex details from user”


Clases Abstractas

Una clase abstracta es una clase que debe poseer por lo


menos un método abstracto

Un método abstracto es un método vacío, un método el cual no


posee cuerpo, por ende no puede realizar ninguna acción. La
utilidad de un método abstracto es definir qué se debe hacer
pero no el cómo se debe hacer.
Ejemplo clase abstracta
public abstract class Figura public class Cuadrado extends Figura
{ {
private String color; private double lado;

public Figura(String color) public Cuadrado(String color, double lado)


{ {
this.color = color;
super(color);
}
this.lado = lado;
}
public abstract double calcularArea();

public double calcularArea()


public String getColor()
{
{
return color; return lado * lado;
} }
} }
Interfaz

En Java no se permite la herencia múltiple.

Una interfaz se puede definir como una colección de métodos


abstractos y propiedades constantes en las que se especifica
que se debe de hacer pero no como, serán las clases hijas
quienes definan el comportamiento.
Ejemplo Interfaz
public interface Canino
{
public abstract void aullar();
public abstract void ladrar();
}

public class Perro implements Canino {

}
Interfaz vs Clase abstracta

Una clase abstracta puede funcionar por si sola mientras que una interface no puede

hacer nada por sí sola, es prácticamente un contrato, en donde las clases que la

implementen deben, obligatoriamente, definir el comportamiento de todos los métodos

abstractos.

A partir de Java 8 se pueden encontrar los métodos default en las interfaces, métodos

que nos permite definir comportamientos, en esencia las interfaces serán contratos

que indicarán que es lo que se debe hacer sin proveer ninguna funcionalidad.
Ejercicio 3
Crear una clase Animal con 2 atributos:
En una clase TestOOP con:
• nombreCientifico (String)
Animal animal1 = new Animal();
• numeroDePatas (Integer)
animal1.ruido();
Y un método ruido sin parámetros que imprime “Yo no hago ruido”
Canino canino1 = new Canino();
Crear una clase Canino que herede de Animal y sobrescriba el
canino1.ruido();
método ruido por “Yo ladro”.
Animal animal2 = new Canino ();
Crear otra clase Felino que herede de Animal y sobrescriba el
animal2.ruido();
método ruido por “Yo maullo”.
Canino canino2 = new Animal ();
Crear una interfaz con dos métodos comer y dormir.

Esta interfaz debe ser implementada en canino. ComportamientoAnimal canino3 = new Canino();
canino3.come();
Proyecto
Descripción

La empresa AHA S.A. es una compañía líder en brindar servicios de información


a las instituciones del Gobierno de Costa Rica por lo que esta será la encargada
de crear una aplicación para el monitoreo de averías a nivel nacional.

Nosotros como miembros de esta empresa tenemos como principal objetivo


brindar una solución de alto nivel para la implementación de los requerimientos
necesarios para que la aplicación se lleve a cabo de forma eficiente y óptima en
los tiempos planteados por el patrocinador.
Estructura de la aplicación
La aplicación se compondrá de las siguientes pantallas:
1. Página de Login.
2. Página de registro de ciudadanos
3. Página de registro de instituciones
4. Mantenimiento de Reporte de averías
5. Mantenimiento de Listado de averías
6. Mantenimiento de Seguimiento de averías
7. Mantenimiento de Inversión por concepto de averías
Mantenimientos
Mantenimiento de Login

Ingreso a la aplicación

Campos requeridos:

• Usuario (input)

• Contraseña (password)

• Tipo de Rol (comboBox)


Mantenimiento de registro de
ciudadanos
Ingreso personal del ciudadano a denunciar alguna avería:

Campos mínimos:

• Cédula

• Contraseña

• Correo

• Nombre

• Apellido1

• Apellido2
Mantenimiento de registro de
instituciones
Ingreso de instituciones por parte del Gobierno

Campos mínimos:

• Nombre institución

• Identificador institución

• Correo institucional

• Razón social

• Contraseña

• EsReporteador
Mantenimiento de Reportes de
Averías
Ingreso de las averías por parte del ciudadano

Campos mínimos:

• Nivel Incidencia

• Provincia

• Cantón (dependiente de provincia)

• Distrito (dependiente de cantón)

• Dirección Exacta

• Descripción Avería

• Subir al menos una imagen de la Avería

• Institución a reportar
Mantenimiento de Listado de
averías
Lista con los registros de averías

Tipos de filtrado:

• Se puede filtrar y ordenar por provincia, cantón, distrito.

• Se puede filtrar y ordenar por fecha de ingreso.

• Se puede filtrar y ordenar por nivel incidencia.

*Si se ingresa con rol ciudadano o institución solo pueden ver las averías propias, si no

se puede filtrar y ordenar por institución.


Mantenimiento de Seguimiento
de averías (continuación)
Al ingresar al listado de averías el rol de institución puede presionar un registro de la
tabla (puede ser por medio de un botón en el registro), esto mientras el estado sea
“Abierto” o “Pausa”.

Al presionarse debe aparecer una ventana emergente que pregunte si la avería es


válida o no.

Si no es válida, el mantenimiento de seguimiento no aparece y se mantiene en la


lista de averías, además la avería se elimina (marca como enable = false)

No mostrar todas las averías enable = false.


Mantenimiento de Seguimiento
de averías
Si la avería es validada como verdadera, pasa a un mantenimiento propio.

Campos mínimos:

• Descripción sobre solución de la avería.

• Número de horas invertidas.

• Cantidad de empleados involucrados.

• Costo aproximado.

• Nombre de persona que valida el arreglo.

• Foto de finalización de la obra.

Al terminar la obra, esta cambia de estado a “Finalizado”, aunque puede quedar en “Pausa” si pasa algún inconveniente
y no se puede terminar.
Mantenimiento de Inversión por
concepto de averías
Es una pantalla en la que se ven los gastos totales por concepto de reparación de averías, es decir solo las averías ya en estado “Finalizado”.

Se puede filtrar por periodo de tiempo, institución, provincia, cantón y/o distrito.

Mostrar en una tabla:

• Numero de avería

• Costo de avería

• Tiempo invertido

• Cantidad de colaboradores

• Fecha de arreglo

• Nivel de incidencia

En el mismo mantenimiento debe aparecer también

Una sección en el que se describa tiempo total, costo total y promedio de personas involucradas.
Roles
Roles de la aplicación

La aplicación contara con los siguientes roles:

1. Gobierno Central

2. Institución

3. Ciudadano

4. Reportes
Rol Ciudadano

Es el encargado de crear las averías.

Puede ver las averías que este ha realizado solamente.


Rol Institucional

Es el encargado de validar las averías.

Es el encargado de dar seguimiento y reparación a las averías.

Puede ver el listado de las averías que sean propias de su


institución.

Puede ver ver el consolidado de averías pertenecientes a la


institución.
Rol Gobierno Central

Puede eliminar instituciones a nivel de base de datos.

Puede eliminar ciudadanos a nivel de base de datos.

Es el único que puede ver por averías sin ninguna restricción.

Es el único que puede ver el consolidado de averías sin ninguna restricción.

*Ningún registro puede ser borrado solo deshabilitado por lo que se recomienda
tener un valor “enable” en cada tabla por realizar.
Rol Reportes
Puede ver el listado de todas las averías.
Notas del proyecto
Utilizar la base de datos MySQL
Aplicar dos patrones de diseño a su elección.
El tipo de interfaz queda a elección del estudiante.
Las imágenes a utilizar son con fines educativos por lo que están
deben estar bajo el marco del respeto y no contener contenidos
que puedan ocasionar algún incidente.
Al menos tres clases deben estas cubiertas pruebas unitarias
respectivas.
Grupos no mayores a 3 personas.
Defensa

• Se debe presentar el esquema de base de datos.

• Explicar los patrones utilizados.

• Explicación breve de lo que hace la aplicación.

• No todos los integrantes deben presentar pero se puede


cambiar al estudiante por otro en medio de la presentación para
comprobar los conocimientos.
Recursos

• https://dev.to/charanrajgolla/beginners-guide---object-oriented-p
rogramming

• https://www.geeksforgeeks.org/java/?ref=lbp

• https://www.educative.io/blog/object-oriented-programming

• https://www.javatpoint.com/java-tutorial
Muchas gracias

You might also like