Download Presentación - Departamento de Informática y Sistemas
Document related concepts
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.