Especialidad Programacin Mdulo Programacin Orientada a Objetos compuestos
Especialidad Programación Módulo Programación Orientada a Objetos compuestos Programación orientada a objetos Extraído y modificado de MIT Open Courseware
IDENTIFICAR, CREAR OBJETOS COMPUESTOS E INTERFACES EN JAVA
¿Qué pasa si un objeto se compone de varios objetos? • Una clase puede tener referencia a otros miembros. • Es una forma de reutilización de software. • Los objetos contenidos en la clase se declaran con acceso privado y se inicializan en el constructor de la clase. La mayor parte de los productos manufacturados están constituidos por partes. Por ejemplo, el Auto está compuesto por ruedas, motor, transmisión, carrocería, etc. ¿Qué otro tipo de objetos son compuestos?
EJEMPLO
EJEMPLO
OTRO EJEMPLO
OTRO EJEMPLO
DIAGRAMA
VIDEO TUTORIAL
INTERFACES Manipula objetos sin saber cómo funcionan. • Útil cuando tienes objetos similares (Bus y avión sirven para transportar gente). • Útil cuando usas código hecho por otros. Cuando un conjunto de clases comparten métodos. • Se declara una interfaz para los métodos comunes. • Puedes usar la interfaz, sin conocer el tipo específico del método. Características de la interfaz. • Está compuesta por métodos. • No proveen código, solo la definición (llamada firma). • Una clase puede implementar los métodos que desee.
DECLARACIÓN DE LA INTERFAZ Una interfaz es una plantilla para la construcción de clases, que entrega un conjunto de declaraciones de cabeceras de métodos (sin implementar). Esta especifica un conjunto de comportamientos para una o varias clases. Corresponde a un proceso de ocultamiento de ciertos detalles, mostrando únicamente información esencial al usuario, siendo este un grado de abstracción de datos.
IMPLEMENTACIÓN DE MÉTODOS
EJECUCIÓN
¿CUÁNDO USAR INTERFAZ? Para obtener seguridad, escondiendo detalles de la implementación, mostrando detalles importantes del objeto. Java no soporta “Herencia múltiple”, sin embargo puede ser simulada a través de múltiples interfaces. • Para implementar múltiples interfaces, separarlas con una “, ”
CASTING Permite la conversión de una variable primitiva de un tipo a otro, o un objeto de una clase a otra clase, siempre y cuando exista una relación de herencia entre ambas. ● En el ejemplo el “otro. Object” (que no sabemos qué tipo de objeto puede ser), recibe un casteo y ahora es un objeto Nadador.
DESAFÍO 1 - Primera parte
ESPORTS REQUERIMIENTOS 1. Crear la clase “Coach” con los datos correspondientes al entrenador del equipo. • Eres programador de un portal de E-sports Latinoamérica y tiene como objetivo, crear las siguientes clases: • Crear constructor con los parámetros correspondientes. Incluir métodos accesores, modificadores y to. String(). 2. Crear la clase jugador con los datos correspondientes a los jugadores del equipo. • • Crear constructor con los parámetros correspondientes. Incluir métodos accesores, modificadores y to. String().
ESPORTS REQUERIMIENTOS 3. Crear la clase “Equipo” incluyendo atributos como: • Primitivo: Nombre del equipo • Primitivo: Juego • Objeto: Coach • Objeto: Jugador (Array. List para gestionar jugadores) • Crear constructor con los parámetros correspondientes • Crear métodos accesores, modificadores y to. String() de los métodos primitivos, mostrar. Jugadores() y mostrar. Coach() 4. El ejecutable (método main) debe: • • • Pedir datos correspondientes al equipo por teclado Permitir ver datos del equipo Salir del programa Bonus 1: ¿Qué otra funcionalidad puede tener esta aplicación? Bonus 2: Implementar sistema de puntuación ELO. Guía paso aquí
ESPORTS ENTREGABLE Deberá subir su código fuente + README. txt en Github detallando: • La solución propuesta del programa realizado. • Un paso a paso del programa para que funcione correctamente. Fecha de entrega: XX/XX/XXXX hasta las 23: 59 hrs.
ESPORTS CONSIDERACIONES Buena documentación de código fuente a través de comentarios. Realizar commit en Github por cada funcionalidad o ajuste realizado. ¡Evitar subir el trabajo a Github de una vez!
DESAFÍO 1 - Segunda parte
ESPORTS TESTING Una vez completada la actividad 8, refuerza esos contenidos incluyendo el proceso de testing y depuración en este ejercicio práctico.
DESAFÍO 2 - Primera parte
ANALISTA DEPORTIVO REQUERIMIENTOS 1. Clase “Nadador” • Atributos: nombre, peso, altura, velocidad. Eres programador de una empresa de análisis deportivo y tienes como objetivo realizar lo siguiente: 2. Clase “Futbolista” • Atributos: nombre, peso, cantidad. Goles, cantidad. Pases. 3. Una interfaz definida de esta manera
ANALISTA DEPORTIVO REQUERIMIENTOS El programa debe comparar los atributos numéricos de los deportistas y entregar por ejemplo: • Juanito pesa 10 kg más que Phelps. • Phelps es más rápido 5 seg. • Hazard da 20 pases más que Ronaldo. • Ronaldo ha hecho 3 goles más que hazard. Bonus 1: Bonus 2: import java. lang. Math; (Math. abs(algo_va_aqui)) Comparar una lista de objetos y ordenarlos de mayor a menor.
ANALISTA DEPORTIVO ENTREGABLE Deberá subir su código fuente + README. txt en Github detallando: • La solución propuesta del programa realizado. • Un paso a paso del programa para que funcione correctamente. Fecha de entrega: XX/XX/XXXX hasta las 23: 59 hrs.
ANALISTA DEPORTIVO CONSIDERACIONES Buena documentación de código fuente a través de comentarios. Realizar commit en Github por cada funcionalidad o ajuste realizado. ¡Evitar subir el trabajo a Github de una vez!
DESAFÍO 2 - Segunda parte
ANALISTA DEPORTIVO TESTING Una vez completada la actividad 8, refuerza esos contenidos incluyendo el proceso de testing y depuración en este ejercicio práctico.
CIERRE
Feedback ● ● ¿Preguntas? Siéntete libre de compartir ideas y opiniones ⊂(◉‿◉)つ ¡No olvides ingresar al Discord “Programación TP” para resolver dudas y cruzar ideas! https: //discord. gg/HVnpa 3 t
- Slides: 31