Title: Curso de Programacin Orientada Objetos en JAVA
1Curso de Programación Orientada Objetos en JAVA
- Dictado por
- Alejandro Alliana Granada
- Ale Feltes Quenhan
- Pablo Santa Cruz Cosp
- Colaboradores
- Mirna Cantero
- Dani Cricco
2Programación Orientada a Objetos en Java
3Evaluación
- 5 puntos
- Ganados individualmente en un examen teórico
inicial previsto para la clase número 3. - 10 puntos
- Ganados individualmente en una guerra de robots
del - proyecto Robocode. http//robocode.alphaworks.ibm.
com/home/home.html - Cada alumno presentará un robot, que ganará los
puntos en el campo de batalla y los profesores
presentarán tres robots que competirán en la
arena.
4Evaluación
- 30 puntos
- Tres trabajos prácticos individuales de 10 puntos
cada uno sobre puntos (temas) a ser tratados en
c2lase. - 55 puntos
- Ganados por todo el curso completo en una
presentación del trabajo final. - De estos 55 puntos, la distribución será la
siguiente - 1) 25 puntos nota por individual para cada grupo
de trabajo a definir - 2) 30 puntos nota global que será multiplicada
por el siguiente factor F - F 0,5 NotaIndividualGrupal/50
5Evaluación
- Créditos
- A los alumnos que aprueben la materia, se les
otorgarán 6 (seis) créditos académicos. - El trabajo práctico será presentado a una mesa
examinadora compuesta por profesores de la
universidad, que otorgará eventualemente 2
créditos académicos más.
6Bibliografía Consultada
- Thinking in Java, 3rd ed., Bruce Eckel, Prentice
Hall - Applying UML And Patterns 2d. Edicion, Craig
Larman , Prentice Hall - UML in a NutShell (1998), Sinan Sir Alhir ,
O'Reilly - Java 2 - Exam Cram Series (1999), Bill Brogden,
Coriolis - Java Swing (1998), Robert Ecktstein, Marc Loy,
Dave Wood, O'Reilly - Cómo programar en Java, Deitel Deitel, Prentice
Hall
7JDBC
8Acceso a Bases de Datos
- Se logra a través de JDBC (Java Data Base
Connectivity) - JDBC provee un API de programación el cual se
utiliza para conectarnos a diferentes bases de
datos
9Capas de JDBC
- Capa Aplicación (Application Layer)
- Conjunto de clases (API) usadas para hacer
llamados a la base de datos a través de SQL,
obtener y procesar los resultados. - Capa Manejador (Driver Layer)
- Conjunto de clases (API) que se encargan de
establecer, manejar y terminar la comunicación
con un DBMS - (Implementación especifica de un driver)
10(No Transcript)
11Ventajas
- El Driver Manager instancia el driver adecuado.
- Los driver no tienen que ser precargados
- Los tipos de datos SQL son mapeados a tipos de
datos Java (flexibilidad)
12Ejemplo de uso
- dbDriverManager.getConnection(Jdbcpostgresqldat
abase, usr, pwd) - st db.createStatement()
- st.executeQuery( sql code )
13SWING
14Swing
-
- Es el conjunto de clases de JFC que nos permite
construir interfaces gráficas para usuario (GUI).
15Ejemplo de componentes
16Swing JDBC
17J2ME
18J2ME
- Esta diseñado para equipos con baja capacidad de
memoria y procesamiento. - Se puede programar orientando el programa a una
gran gama de dispositivos.
19SDK
- Sun Microsystem provee varios emuladores junto
con un sdk para j2me, con lo cual no necesitamos
tener un dispositivo para probar. - Varios distribuidores proveen versiones de
emuladores de sus productos. Sony Ericsson,
Motorola,et.
20Caso práctico Truco ME
21Servlets / JSP
- Desarrollo de aplicaciones WEB con Java
22Servlets y JSP
- Son métodos de creación de páginas web dinámicas
en servidor usando el lenguaje Java - En ese sentido son similares a otros métodos o
lenguajes tales como PHP, los CGIs (common
gateway interface), que generan páginas web en el
servidor, o los ASP (Active Server Pages), un
método específico de Microsoft. - Sin embargo, se diferencian de ellos en otras
cosas.
23Java Servlets
- Son programas escritos en JAVA que se ejecutan
en el marco de un servicio de red(ej. Servidor
HTTP ) que reciben y responden peticiones de los
clientes.
24Servidores HTTP
- Resin, de Caucho Technologies
- Enfocado al servicio de páginas XML, con licencia
libre para desarrolladores. - Dice ser bastante rápido.
- Incluye soporte para Javascript además de Java y
un lenguaje de templates llamado XTP. - Fácil de instalar.
- BEA Weblogic
- Servidor de aplicaciones de alto nivel, y alto
precio. - Escrito íntegramente en Java.
- Se combina con otra serie de productos, tales
como Tuxedo, un servidor de bases de datos para
XML.
25Servidores HTTP
- JRun, de Macromedia
- Servidor de aplicaciones de Java
- Se puede bajar una versión de evaluación gratuita
- Lutris Enhydra
- Servidor gratuito y Open Source, aunque tiene una
versión de pago. - Enfocado a servir XML, y para plataformas
móviles. - Las versiones más actualizadas son de pago.
- Jakarta Tomcat
- El más popular, Open Source, y continuamente en
desarrollo.
26Arquitectura Cliente/Servidor
27Caracteristicas de los Servlets
- Al igual que los programas CGI, los servlets
permiten la generación dinámica de código HTML. - Permiten la utilización de cookies y sesiones de
forma que se puede guardar informaciones
específicas de un usuario. - Pueden actuar de enlace entre el cliente y una o
varias Bases de Datos en arquitecturas cliente
servidor de 3 capas.
28JSP
- Un JSP se compila a un programa en Java la
primera vez que se invoca, y del programa en Java
se crea una clase que se empieza a ejecutar en el
servidor como un servlet. -
- Enfoque de la programación un JSP es una página
Web con etiquetas especiales y código Java
incrustado, mientras que un servlet es un
programa que recibe peticiones y genera a partir
de ellas una página web.
Diferencia entre Servlet y JSP
29El paradigma OO y la producción de Juegos
30El paradigma OO
- Orientación a objetos
- Reusabilidad
- Confiabilidad
- Robustez
- Extensibilidad
- Mantenibilidad
- En todos los niveles del proceso de desarrollo
Análisis, diseño y programación
31Desafíos en el desarrollo de juegos
- Inexperiencia en el área en el país
- Manejo de un grupo de desarrollo de más de 15
personas - División eficiente de las tareas a realizar
- Definición conveniente de las interfaces entre
los grupos. - Documentación y comunicación intergrupal
- Elección del mejor paradigma a ser aplicado en
base a los objetivos propuestos y los recursos
disponibles
32OO para enfrentar esos desafíos
- División del proyecto en subsistemas bien
definidos (conjuntos de objetos) - El más bajo acoplamiento posible
- Interfaces definidas como paso de mensajes entre
objetos - Uso del UML caso exitoso de buena documentación
y comunicación intergrupal
33Caso de estudio Proyecto TOLUCA
- Truco en línea de la Universidad Católica
- T (ruco)
- OL (online)
- UCA (Universidad Católica)
- Arquitectura
- cliente/servidor
- Componentes principales
- Proceso servidor de solicitudes corriendo sobre
protocolo TCP/IP - Cliente corriendo como Applet de Java en
navegadores con esta capacidad - Lenguaje para ambos componentes Java
34Arquitectura
35El Toluca
36Componentes principales de la arquitectura interna
Sala (Room)
Mesa (Table)
Juego (TrucoGame)
Cliente
CommunicatorClient
INTERNET
CommunicatorServer
Sala (Room)
Juego (TrucoGame)
Mesa (Table)
BD
Servidor
37Comunicación entre Rooms
CommunicatorClient
INTERNET
CommunicatorServer
Sala (Room)
BD
Servidor
38Comunicación entre Tables
Mesa (Table)
Cliente
CommunicatorClient
INTERNET
CommunicatorServer
Mesa (Table)
Servidor
39Comunicación entre TrucoGames
Juego (TrucoGame)
Cliente
CommunicatorClient
INTERNET
CommunicatorServer
Juego (TrucoGame)
BD
Servidor
40Protocolo común de Comunicaciónentre Componentes
Eventos - Interfaces
Cliente
TableListener
TrucoListener
RoomListener
TrucoEvent
RoomEvent
TableEvent
CommunicatorClient
41Protocolo común de Comunicación Cliente-Servidor
Juego (TrucoGame) Java Bean
Representación XML
Cliente
CommunicatorClient
INTERNET
CommunicatorServer
Representación XML
BD
Servidor
42Modalidad de trabajo
- Grupos
- Servidor
- Chat Panel
- Redes
- Interfaz de Inicio
- Interfaz de Juego
- Game (engine)
- Base de datos
- Análisis y diseño en UML (OO)
43Diagrama de clases principales
44Diagrama de secuencia login
45Diagrama de secuencia play
46Lenguaje JAVA
- Por qué JAVA?
- Lenguaje que hizo posible que alumnos con menos
experiencia OO formen parte del proyecto. - Extenso y sencillo API hace que los proyectos
puedan ser desarrollados en tiempo relativamente
corto - Bajo acoplamiento (buena integración entre
componentes si las interfaces están bien
definidas) - Ventajas del lenguaje
47Orientación a Objetos
Programación Orientada a Objetos
48Contenido de la clase de hoy
- Introduccíón a la Orientación a objetos
- Introducción a la Programación Orientada a
Objetos
49Ciclo de Vida de una Aplicación
Análisis
Diseño
Implementación
Pruebas
Mantenimiento
50La base Orientación a Objetos
- Qué es?
- Paradigma (Qué es un paradigma?)
- Basado en objetos y clases
- Aplicables al análisis, diseño y programación de
una solución - Un sistema software es un conjunto de objetos que
cooperan.
51La base Orientación a Objetos
- Los objetos poseen una funcionalidad (operaciones
que son capaces de hacer o mensajes a los que son
capaces de reaccionar). - En este curso enfocamos la aplicación de la
orientación a objetos a la programación en java
52Orientación a Objetos Historia
- Cuándo surge?
- Kristen Nygaard y su equipo (Noruega)
- Simula I (61-64)
- Primer reporte (65)
- Simula 67 (67)
- Desarrollo en el mundo
- Delta (lenguaje no compilable, 73-75)
- Smalltalk (mediados de los 70s)
- C/Eiffel (desde los 80s)
- Java (mediados de los 90s)
- Objective C (mediados de los 90s)
- C (2001)
- Por qué se tardó tanto en expandir el uso de los
lenguajes orientados a objeto?
53Orientación a Objetos
Áreas de Aplicación
- Simulaciones (65)
- Programación en general (65)
- Módulos (componentes) reusables de SoftWare (80s)
- Desarrollo de sistemas (90s)
- Aplicaciones para Internet (mediados de los 90s)
54Programación orientada a objetos
- Qué es?
- Cómo se hacen los programas?
- Paradigma orientado a objetos, aplicado a los
lenguajes de programación - Algunos lenguajes
- C - C - Objective C Java Delphi
Smalltalk Simula Eiffel Delphi Python
Ruby - etc.
55Distintas formas de construcción de sistemas
software
- Programación estructurada. (Imperativos)
- C, Pascal, Modula.
- Programación funcional.
- Lisp, Cammel.
- Programación lógica. (Declarativos)
- Prolog.
- Programación orientada a objetos.
- Smalltalk, C, Java, C
- Programación con agentes.
56Contraste con otros paradigmas de programación
57Programación orientada a objetos
Ventajas
- Desarrollo más rápido
- Incremento en la calidad
- Mantenimiento más sencillo (Modularidad)
- Los cambios son más sencillos de hacer
- Reutilización de SoftWare
- Sistemas que pueden evolucionar de una manera más
conveniente y sencilla (Extensibilidad) - Reducción del riesgo en el desarrollo de sistemas
complejos porque la integración es más simple - Naturalidad en la forma de encarar los problemas
58POO Conceptos
- Objeto
- Mensaje
- Clase
- Herencia
- Interfaz
Cómo traducir estos conceptos en código?
JAVA
59Objeto
- Qué es?
- Clave para entender el paradigma orientado a
objetos - Cualquier objeto de la vida real
60(No Transcript)
61Objeto Qué podemos representar?
- Objetos reales
- Casas, perros, gatos, sillas, mezas, clubes de
fútbol, etc, etc. - Objetos abstractos
- Eventos (Cambios de estado, cotización de
productos, etc)
- Desde el punto de vista de la programación,
un
objeto es una variable.
62Objeto Esquema visual de un objeto en SOFTWARE
63Objeto Una bicicleta modelada con un objeto de
SOFTWARE
64Objeto Beneficios
- Modularidad
- Information hiding (Encapsulación)
65Mensaje
- Qué es?
- Formas de comunicación entre objetos
- Un objeto de una clase
- responde a cualquiera de los mensajes definidos
en la clase. Ej - float x unRectangulo.getX()
unRectangulo.Mover(0, 20) unRectangulo.Dibujar(
)
66Mensaje Alguien enviando mensajes a una bicicleta
67Mensaje Beneficios
- El comporamiento de un objeto se expresa a través
de sus métodos (en vez de acceso directo a sus
variables) - El paso de mensajes soporta TODA la interacción
entre objetos - Los objetos no necesitan estar siquiera en la
misma máquina para comunicarse entre sí
68Clase
Agrupador de objetos que comparten
características y comportamientos, describe un
conjunto de ejemplares con propiedades y
comportamientos similares.
Qué es?
69(No Transcript)
70Clase Esquema
71Clase Objetos como Instancias
Los objetos son instanciaciones de las clases
72Clase
- Una clase se describe por
- Nombre.
- Interfaz Operaciones (métodos, mensajes) que
manipulan el estado. - Conjunto de atributos (datos) que definen el
estado. - Desde el punto de vista de la programación una
clase es un tipo de dato (Ejs. Rectangulo,
Lista, Cola, NumeroComplejo, etc.).
73Clase Cómo son diferentes a los objetos?
74Herencia
- Qué es?
- Una relación entre Clases que permite
Generalizar o Especializar las mismas - Posibilidad de definir nuevas clases a partir de
clases existentes compartiendo ciertas
características.
75Herencia
- Heredar (inherit)
- Redefinir (override)
- Crear una jerarquía
76Herencia Beneficios
- La subclases proveen especialización a los
elementos básicos comunes provistos por las
super-clases - La clase hija puede extender o redefinir
(override) el comportamiento de la clase padre. - Extensión Se añaden operaciones y/o atributos
(ej. Volar en el caso de Ave). - Redefinición Se cambia la implementación de
alguna operación heredada (o se le da una
implementación si no la tenía).
77Herencia Beneficios
- En java, se dice que las clases EXTIENDEN a su
super-clase o clase padre - Ej.
- Integer extends Number
- Number extends Object
78Interfaces
- Qué es?
- Traducción literal dispositivo que utilizan dos
entidades para interactuar. - En POO, las interfaces son utilizadas por los
objetos no relacionados para interactuar - En otros lenguajes OO a las interfaces se las
suele llamar protocolos - En java, se dice que las clases IMPLEMENTAN
interfaces
79Diferencia entre los conceptos de clase e
interfaz
- El concepto de clase hace referencia a los
atributos y a las operaciones, junto con su
implementación. - El concepto de interfaz hace referencia sólo a
los prototipos de las operaciones visibles.
80Muchas gracias por su atención!!!!