240 likes | 501 Views
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/. Construcción de Software OO. POO favorece extensibilidad y reutilización. ¿Por qué?.
E N D
IngenieríaenInformá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/
Construcción de Software OO POO favorece extensibilidad y reutilización ¿Por qué? Las técnicas de la orientación a objetos son el medio adecuado para mejorar la calidad del software Clases y Objetos Mensajes Herencia y Polimorfismo y Ligadura Dinámica ¿Cómo?
¿Cómo surge la programación OO? 60’s Simula Smalltalk 70’s 80’s OO es útil en IS Eiffel, Trellis-Owl,... C++, Delphi, ... Lenguajes OO puros Lenguajes OO híbridos En 1995 ¡Java! y en 2002 C#
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
Evolución OO Lenguajes OO Métodos OO Análisis y Diseño OO Bases de Datos OO
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
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
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
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,...
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)
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º OPT Desarrollo basado en componentes Componentes Software 5º OPT Desarrollo de aplicaciones distribuidas Objetos Distribuidos (Java RMI, Servlet, EJB) 5º OPT Arquitectura del software Patrones EJB, Frameworks
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.
Programa de Teoría Tema 1.Orientación a Objetos, una técnica para mejorar la calidad del software. Tema 2.Clases y Objetos Tema 3.Diseño por Contrato Tema 4. Herencia
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.
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
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
¿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,..
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
Características de Java • Herencia múltiple basada en interfaces • Mecanismo de excepciones • Mecanismo de concurrencia • Persistencia
Programa de Prácticas Tema 1. Clases, Objetos y Mensajes en Java Entorno de Programación Java Tema 2. Herencia en Java Clases abstractas Interfaces Tema 3. Clases Básicas: Colecciones, Cadenas, E/S Tema 4. Clases internas Tema 5. Concurrencia y Persistencia Tema 6.Desarrollo de aplicaciones interactivas
Horario de Prácticas Horario: Lunes 18.30-20.30 Jueves 16.30-18.30 Jueves 18.30-20.30 Laboratorio 1/3
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%).
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, Prentice-Hall, 1998. 4. Stroustrup, B., "El Lenguaje de Programación C++", Edición Especial, Addison-Wesley, 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.