Download Presentación - Departamento de Informática y Sistemas

Document related concepts

Scala (lenguaje de programación) wikipedia , lookup

Polimorfismo (informática) wikipedia , lookup

Transcript
Ingeniería en Informática
Curso 2003/2004
Programación Orientada a
Objetos
Jesús García Molina
Dpto. Informatica y Sistemas
Universidad de Murcia
http://dis.um.es/~jmolina/
1
Construcción de Software OO
Las técnicas de la orientación a objetos son el medio
adecuado para mejorar la calidad del software
¿Por qué?
POO favorece extensibilidad
y reutilización
¿Cómo?
Clases y Objetos
Mensajes
Herencia y
Polimorfismo y Ligadura
Dinámica
2
¿Cómo surge la programación OO?
Simula
60’s
Smalltalk
70’s
80’s
Eiffel, Trellis-Owl,...
Lenguajes OO puros
OO es útil en IS
C++, Delphi, ...
Lenguajes OO híbridos
En 1995 ¡Java! y en 2002 C#
3
Evolución OO
• A finales de los ochenta, mito de la OO:
“Mi gato es OO”
• En los noventa deja de ser algo exótico
• Consenso en la comunidad software:
“OO es el camino a seguir”
• La OO no resuelve todos los problemas de la I.S.
• Existen buenos entornos profesionales
• Existe experiencia de su aplicación
4
Evolución OO
Lenguajes OO
Métodos OO
Análisis y Diseño OO
Bases de Datos OO
5
Evolución OO
• Integración de cliente-servidor y OO:
Objetos Distribuidos
• Desarrollo basado en componentes
“Alcanzar el viejo sueño de construir el
software como el hardware”
• Lenguaje estándar para modelado OO: UML
Procesos OO basados en UML
6
Ciclo de vida OO
• Se reduce el salto semántico entre dominio del
problema y la aplicación
• Análisis y Diseño basados en los objetos del
dominio.
• Se favorece la extensibilidad
7
Situación actual
•
•
•
•
•
•
Componentes
Objetos Distribuidos
UML: Un estándar para el modelado
Frameworks
Patrones de Diseño
Bases de datos OO y Objeto-Relacionales
8
Situación actual
• La tecnología OO ha madurado
• Desarrollo de software OO está extendido
– Fenómeno Java
• Crece el uso de las técnicas de Análisis y diseño OO
– Procesos basados en UML: RUP
• Estándares: CORBA, UML, JDO,...
9
OMG
• Consorcio de la industria software
• Dos objetivos
– Promover la ingeniería del software OO
– Definir un estándar para la infraestructura que posibilite
las aplicaciones distribuidas OO
• UML
• CORBA
• MDA (Arquitectura dirigida por modelos)
10
OO en el plan de estudios
3º
OB
Programación OO
Introducción a la
Programación OO
4º
OB
Análisis y Diseño de
Software
Diseño OO (UML,
Proceso y Patrones)
5º
Desarrollo basado en
OPT componentes
Componentes Software
5º
Desarrollo de aplicaciones
OPT distribuidas
Objetos Distribuidos
(Java RMI, Servlet, EJB)
5º
Arquitectura del software
OPT
Patrones EJB,
Frameworks
11
Objetivos de la parte teórica
• Describir el núcleo de conceptos que caracterizan al
paradigma orientado a objetos, OO.
• Contrastar como diferentes lenguajes de programación
OO reflejan los conceptos del paradigma.
• Valorar en que medida las técnicas OO mejoran la
calidad del software.
• Enseñar un lenguaje OO junto con su entorno de
programación.
• Enseñar técnicas de programación OO.
12
Programa de Teoría
Tema 1.
Tema 2.
Tema 3.
Tema 4.
Orientación a Objetos, una técnica para
mejorar la calidad del software.
Clases y Objetos
Diseño por Contrato
Herencia
13
Objetivos de la parte práctica
• Aplicar los conceptos teóricos
• Aplicar técnicas de programación
• Adquirir destreza en el manejo de un lenguaje OO,
junto con su entorno de programación.
– Lenguaje Java
– Entorno JBuilder 7 Personal
• Realizar un conjunto de ejercicios de programación
• Realizar un pequeño proyecto.
14
Lenguaje ideal para docencia
• Buenas propiedades
–
–
–
–
–
–
–
OO puro
reflejar con claridad los conceptos
legible
pequeño
tipado estáticamente
alto nivel
soporte para corrección
15
Lenguaje ideal para docencia
•
•
•
•
•
Entorno fácil de aprender y manejar, robusto.
Requisitos hardware y software mínimos.
Muy utilizado en las empresas e industrias
Buena documentación
Libre distribución
16
¿Por qué Java?
•
•
•
•
•
•
Tipado estáticamente
Simple
Orientado a objetos “casi puro”
Muy extendido en la industria
Abundante documentación
Tecnología Java: Servlet, RMI, Java Beans, EJB,..
17
Características de Java
• Simplifica y acerca C++ a la OO
– Semántica referencia
– Garbage Collection
– No es necesario declarar funciones “virtuales”
• Lenguaje de uso general
• Portabilidad: Bytecodes y MáquinaVirtual Java
• Apropiado para crear software para la web:
– aplicaciones seguras independientes de la plataforma
– applets Java
18
Características de Java
•
•
•
•
Herencia múltiple basada en interfaces
Mecanismo de excepciones
Mecanismo de concurrencia
Persistencia
19
Programa de Prácticas
Tema 1.
Tema 2.
Tema 3.
Tema 4.
Tema 5.
Tema 6.
Clases, Objetos y Mensajes en Java
Entorno de Programación Java
Herencia en Java
Clases abstractas
Interfaces
Clases Básicas: Colecciones, Cadenas, E/S
Clases internas
Concurrencia y Persistencia
Desarrollo de aplicaciones interactivas
20
Horario de Prácticas
Horario:
Lunes 18.30-20.30
Jueves 16.30-18.30
Jueves 18.30-20.30
Laboratorio 1/3
21
Evaluación
• Examen teórico con cuestiones teórico-prácticas.
• Entrega de ejercicios y proyecto de programación
• Entrevista para evaluación del trabajo práctico
• Necesario aprobar parte teórica y práctica
• Nota final: Media ponderada entre la nota de teoría
(60%) y la nota de prácticas (40%).
22
Bibliografía Básica
TEORIA
1. Arnold, K. y Gosling, J., “El lenguaje de programación Java”, Addison-Wesley, 3ª
Ed., 2001.
2. Budd, T.,“An Introduction to Object-Oriented Programming”, 3ª ed., Addison-Wesley,
2002.
3. Meyer, B., "Construcción de Software Orientado a Objetos", 2ª edición, PrenticeHall, 1998.
4. Stroustrup, B., "El Lenguaje de Programación C++", Edición Especial, AddisonWesley, 2000.
PRACTICAS
1. Arnold, K., Gosling, J. y Jomes, D. “El lenguaje de Programación Java”, 3ª Edición,
Addison-Wesley, 2001.
2. J. Bloch, “Effective Java”, Addison-Wesley, 2001
3. Eckel, B. “Piensa en Java”, 2ª Edición, Prentice-Hall, 2002.