Diseñando mi solución en POO (Galaga)

Slides:



Advertisements
Presentaciones similares
10. Modelación de un Videojuego. BALLOON ATTACK. El planeta está siendo invadido por extraños extraterrestres en forma de globos, y ningún arma existente.
Advertisements

Enseñando Programación con Alice Leonel Morales Díaz Ingeniería Simple Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple.
CREANDO HABITACIONES Para crear un cuarto, selecciona Add Room en el menu Add. Se muestra la siguiente ventana: : En la parte.
Desarrollo de juegos de video Aprendiendo a programar en C# de manera divertida Sesión 6: Control del jugador de los sprites
Curso de java básico (scjp)
Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
Lenguaje de programación Java
Programación II Recursividad
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Arquitectura CLARO-TECNOTREE
El proceso de desarrollo de software
1.5 Algoritmos, Pseudocódigo y Diagramas de Flujo
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Programación Orientada a Objetos Encapsulamiento.
COMPONENTIZACIÓN DE ALGORITMOS GENETICOS Y SU IMPLEMENTACIÓN EN UNA PLATAFORMA ABIERTA PARA APRENDIZAJE COMPUTACIONAL.
FUNCIONES EN C.
Programación 1 Introducción
Aplicación del paradigma orientado a objetos
Programación Orientada a Objetos
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
UNIDAD I. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA.
El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño.
DIAGRAMA DE CLASE.
METODOLOGIA DE LA PROGRAMACION
Método en Java.
Paginación y Segmentación Giselle M. Agosto Carlos R. Pérez
Estructuras dinámicas de datos, TAD Lista, parte 2
USA agenda e itemAgenda
INFOMATICA EMPRESARIAL Principales Contenidos: Clase 26 de Mayo de 2012 Alejandra Meliza Caro Profesor.
Décimo Curso de Programación Básica con NQC “Tercera Clase” Cristián A. Arenas Ulloa Septiembre 5 de 2009.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
ATON Presentación del diseño del juego de mesa Aton.
Valor X Valor Y Punto (0,0) Coordenadas.
Visual Basic.Net Profesor José A. Donis. Que es Visual Basic.NET Un ambiente de programación Permite desarrollar programas para Windows Evoluciono de.
Agenda Clase 16 Motivación e Historia de la Programación Funcional y la Programación Lógica. Concepto y Características de la Programación Funcional. Ventajas.
Curso de Java Programación Orientada a Objetos
Sistemas Inteligentes Distribuidos Sistemas Inteligentes Distribuidos Sesión 13 L. Enrique Sucar / Marco López Sesión 13 L. Enrique Sucar / Marco López.
Luis Pereda Calvo1 Comportamiento de Objetos Estrategia (Strategy) *Política (Policy)
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
UNIVERSIDAD COOPERATIVA DE COLOMBIA FACULTAD DE INGENIERIA ELECTRONICA
PROCESOS DEL PENSAMIENTO
Administración de Servicios de Red 1 Escuela de Informática y Telecomunicaciones Suplementos: Shell scripts rpm RHA 030 Sistemas Operativos de Red.
Java.
Algoritmos y programación 3 - cátedra Fontela Diseñando mi solución en POO Eugenio Yolis - Marzo 2008.
3. Resolución de Problemas..  Conocer lo que se quiere resolver.  Buscar las herramientas para poder solucionar el problema.  Implementar la solución.
TEMA 9: DIAGRAMA DE CLASE EN UML
Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de.
Algoritmos y Programación III
1. Introducción..  Conceptos: ◦ Problema. ◦ Objeto. ◦ Instancia. ◦ Modelo.  Estrategia para la resolución de problemas.
Curso de Java Introducción al Paradigma Orientado a Objetos Prof. Ing. Guido Acosta.
Fundamentos de Programación
Definición y cumplimiento de responsabilidades Giovanni Hernández P. Nivel 4.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Simulación del patrón … (5)
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
Torneos Virtuales Técnicas de Diseño – 2 cuatrimestre 2009 Grupo D.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Encapsulamiento Miguel Ángel Rojas Aguilar Esthela Carmina Carranza Cabrera.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
Fundamentos de Ingeniería de Software
Herencias Conceptos básicos i
Es una metodología ágil diseñada para el desarrollo de software, basada en la calidad y el monitoreo constante del proyecto. Consiste esencialmente en.
PARADIGMA viene del Griego Paradeima = Modelo. Un paradigma es el resultado de los usos, y costumbres, de creencias establecidas de verdades a medias,
Arquitectura de Computadores Clase 18 Memoria Caché: Fundamentos IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Prof. Manuel B. Sánchez.  El origen del término polimorfismo es simple: proviene de las palabras griegas poly (muchos) y morphos (forma) multiforme.
1 Clase 6: control (1ª parte) iic1102 – introducción a la programación.
1 Clase 11: orientación a objetos (2ª parte) iic1102 – introducción a la programación.
Transcripción de la presentación:

Diseñando mi solución en POO (Galaga) Eugenio Yolis - Mayo 2010

Agenda El problema Solución rápida Limitaciones Buscando objetos Resumen Preguntas?

El problema

Implementar modelo del “Galaga” Ø las naves se mueven por el espacio Ø el jugador maneja su nave Ø la nave del usuario dispara a las otras, y las otras le disparan al él

Solución rápida

Diagrama de clases Ø   creo que ya tengo el diseño base... empiezo a codificar y despues le voy agregando la funcionalidad pedida

Ejemplos de código int incX, incY; if (this.direccion == 1) { incX = 0; incY = 1; // arriba } else if ... { .... } this.x = this.x + incX; this.y = this.y + incY; if (this.y > getEspacio().getY()) { // choque contra el borde superior this.y = this.y - 1; } // voy a “chocar” al jugador int posJugY = espacio.getNaveJug().getY(); int incY = posJugY / Math.abs(posJugY); this.y = this.y + incY;

Limitaciones

Limitaciones Repetición de codigo Constantes magicas Una mejora es hacer un “ObjetoMovil” abstracto, pero igual es un problema Constantes magicas if (this.direccion == 1) Calculos y condiciones dificiles de entender Esto va empeorando cada vez que se agrega un nuevo caso a contemplar Poco encapsulamiento Diferentes metodos de la clase van a manipular el “x” y el “y” directamente

Buscando objetos

Diagrama de clases Las naves delegan en movimiento la logica del “mover” Dirección y Posición encapsulan calculos Diferentes naves pueden usar las mismas estrategias de movimiento

Ejemplos de código // en Nave.mover this.posicion = this.movimiento.calcularPosSiguiente(this.posicion) // en Movimiento.calcularPosSiguiente posicion = this.direccion.desplazarPos(posicion) // en Movimiento.calcularPosSiguiente if (!posicion.dentroDe(espacio.getLimites()) { // choque contra algun borde del espacio this.direccion = direccion.dirOpuesta(); }

Resumen

Resumen Encapsular todo lo posible Pensar de quién es la responsabilidad Revisar métodos “largos” Revisar clases que tienen “getters” y “setters” para todos sus atributos Revisar el uso de condicionales y estructuras “case” Revisar el uso de tipos “standard” (primitivos, String, List) como parametros de entrada y de retorno

¿Preguntas?