Publicado el 31 de Mayo del 2018
795 visualizaciones desde el 31 de Mayo del 2018
284,0 KB
14 paginas
Creado hace 18a (28/09/2006)
Programación Orientada a
Objetos
Teoría: Begoña Moros Valle
Prácticas: Marcos Menárguez Tortosa
Contenido
• Presentación contenido teórico
• Presentación contenido práctico
• Introducción a la Programación Orientada
a Objetos
1
TEORÍA
Programación Orientada a Objetos
Curso 2006 / 2007
Objetivos
• Describir los conceptos que caracterizan
el modelo OO
• Valorar en qué medida las técnicas OO
favorecen la calidad del software
• Contrastar cómo diferentes
(Eiffel, Java, C++, C#)
conceptos del paradigma OO
lenguajes
los
reflejan
2
Programa de teoría
TEMA1: CALIDAD DEL SOFTWARE
Modularidad
• Extensibilidad
• Reutilización
• Variación de tipos
• Agrupar características
• Variación de algoritmos y est. de datos
• Independencia de la representación
• Factorizar comportamiento común
Ocultamiento de Información
Principio Abierto-Cerrado
Principio de Elección Única
…
TEMA 2 Clases y Objetos
Genericidad
Clase: estructura (ref)
comportamiento (mens)
Niveles de acceso a propiedades
TEMA 3 Corrección y
robustez
Asertos. Diseño por Contrato
Excepciones
• Fiabilidad
• Corrección
• Robustez
...
TEMA5 Herencia múltiple
TEMA4 Herencia
• Polimorfismo
• Ligadura dinámica
• Clases diferidas
• Código genérico
Evaluación de la asignatura
• Exámenes:
– 13 febrero
– 29 junio
– 7 septiembre
• NOTA = Teoría * 0’6 + Prácticas * 0’4
• El aprobado del examen o las prácticas
sólo se guardará durante un año
3
Bibliografía básica
TEMA 1
TEMA 2
TEMA 3
TEMA 4
TEMA 5
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
Horario de atención alumnos
Teoría
Facultad de Informática (2ª planta): 2.37
Entrada al Depto
• Martes: 16:30 a 18:30
• Miércoles: 16:30 a 18:30
• Jueves: 11:00 a 13:00
4
PRÁCTICAS
Programación Orientada a Objetos
Curso 2006 / 2007
Objetivos
• Aprender el lenguaje de programación
Java
• Dominar las librerías básicas del lenguaje
• Practicar los conceptos de orientación a
objetos en Java
• Manejar un entorno de programación Java
5
Programa de Prácticas
• Introducción a Java
• Entorno de programación
• Sintaxis del lenguaje
• Clases y objetos
• Mecanismo de excepciones
• Cadenas y Entrada/Salida
• Herencia, clases abstractas
• Genericidad
• Interfaces
• Colecciones e Iteradores
Metodología
• Seminarios semanales.
• Prácticas laboratorio abierto.
• Ejercicios semanales.
• Entrevistas de control y revisión.
• Dos correcciones generales de prácticas.
• Defensa de prácticas al azar dentro del
grupo.
6
Modalidad de prácticas
• S3 (9 octubre):
– Práctica laboratorio cerrado: IDE Eclipse
– Comienza el seminario en clase de teoría
• A partir de la S4 (16 octubre)
– Prácticas de laboratorio abierto
Práctica
• Desarrollo de un videojuego
• Grupos de 2 alumnos
• Propuesta de otra práctica para
Junio/Septiembre
• Entrega de prácticas en SUMA y en papel
• Entorno: Eclipse
7
Evaluación de las prácticas
• Penalización:
– Por faltar entrega programadas
– No hacer las correcciones de las entrevistas
• No realizar la primera entrega general
pérdida de convocatoria de febrero
• Defensa de prácticas
Horario
• Seminario:
– Miércoles de 12:00 – 13:00
• Laboratorio 1.3:
– Grupo 1: Martes de 16:30 – 18:30
– Grupo 2: Miércoles de 16:30 – 18:30
• Tutorías Marcos (despacho 2.33):
– Martes: 9:30 – 13:30
– Miércoles: 18:30 - 20:30
– Horas de laboratorio
8
Bibliografía Básica
• Gratuitos (versiones en PDF):
– Curso de Java en español. Iván Párraga García
– Tutorial de Eclipse. http://eclipsetutorial.forge.os4os.org/in1.htm
– Thinking in Java, 3ª edición (inglés), en español en la biblioteca
• Biblioteca:
– Java 2. Vol I. Fundamentos. Cay S. Horstmann, Gary Cornell
– Java 2. Vol II. Características Avanzadas. Cay S. Horstmann,
Gary Cornell
– El lenguaje de programación Java, de J. Gosling
– Effective Java. Programming Language Guide.
INTRODUCCIÓN
Programación Orientada a Objetos
Curso 2006 / 2007
9
¿Qué significa Orientación a Objetos?
• El software se organiza como una colección de
objetos que contienen tanto estructura como
comportamiento.
¿Qué es el desarrollo OO?
• Una nueva forma de pensar acerca del software
basándose en abstracciones que existen en el
mundo real.
Bombilla
color
encender()
apagar()
Paradigma de programación
Colección de conceptos
que guían el proceso de
construcción de un programa, determinando su estructura.
Estos conceptos controlan la forma en que pensamos y
formulamos los programas.
• Un lenguaje de programación refleja un paradigma.
PARADIGMA
•
Imperativo
• Funcional
• Lógico
• Orientado a Objetos
LENGUAJE
C, Pascal, Cobol, ...
Lisp, Hope, Miranda, ...
Prolog, Parlog, ...
Smalltalk, C++, Eiffel, Java, ...
10
Marco Conceptual del paradigma OO
Programación Orientada a Objetos
Métodos de Análisis y Diseño OO
Modelo de Objetos
Abstracción
Encapsulación
Modularidad
Herencia
Polimorfismo
El futuro del paradigma OO
El futuro del paradigma OO
Bases de Datos OO
Desarrollo basado en componentes (CORBA COM, EJB, COM)
Tecnología de objetos distribuidos (CORBA, RMI, Plataforma .NET)
1
2
3
4
5
Titulación Ingeniero en Informática (Plan
2002)
Metodología y tecnología de la programación
Algoritmos y estructuras de datos
POO (3T+3P)
Ingeniería de Requisitos
Análisis y diseño del Software
Ingeniería de SI
Intensificación en Tecnología del software:
- Ampliación de bases de datos
- Desarrollo de aplicaciones distribuidas
- Desarrollo basado en componentes
- Arquitectura del software
11
Problemas en la creación del software
• A finales de los 60 se acuñó el término crisis del software:
– Los proyectos no cumplían los plazos y presupuestos.
• Dificultades inherentes a la naturaleza del software:
– Complejidad
• dificultad de enumerar todos los estados posibles del programa
• dificultad de comunicación entre los miembros del equipo
– Conforme a otras interfaces
– Sujeto a continuos cambios
– El software es intangible, no tiene representación gráfica
• Especificación de requisitos completa, precisa y correcta.
Problemas en la creación del software
“La construcción de software siempre será una
tarea difícil. No hay bala de plata”
[Brooks, 1987]
• Soluciones:
– Reutilizar componentes (Comprar y no construir)
– Prototipado
– Buenos programadores/diseñadores
12
Historia de los LPOO
• 1964- SIMULA (Dahl y Nygaard):
– comienzo de la OO
– Se identificaba como lenguaje de simulación
– Ha influido en el desarrollo de otros LPOO
• 1972- SMALLTALK (Kay, Goldberg, Ingalls)
– Simula + LISP (sin tipos) -> LPOO puro
– Características de un LPOO [Byte81]:
• Todo es un objeto.
• Programa = cjto de objetos que se comunican mediante
mensajes
un objeto
• Todo objeto es instancia de una clase (tiene un tipo).
• La clase es el repositorio de comportamiento asociado con
• Las clases se organizan en jerarquías de herencia
Historia de los LPOO – Años 70-80
• “orientado a objetos” era sinónimo de “bueno”.
• Soportar el concepto de objeto no es suficiente.
BASADO EN
OBJETOS
+ clases
Ada, Modula 2
(1979)
BASADO EN
CLASES
+ herencia de clases
ORIENTADO
A OBJETOS
CLU
(1974)
Smalltalk
(1972)
[Wegner87]
13
Híbridos:
• Basados en C:
Historia de los LPOO - Años 80
• Proliferación de LPOO
• Clasificación atendiendo al origen:
B. Stroustrup
Brad Cox y Tom Love
Apple con Wirth
1988 Digital y Olivetti
1988
1972
1985
o C++
1985
o Objective-C
1983
o Object Pascal 1985
o Modula-3
o CLOS
o Smalltalk
o Eiffel
Alan Kay
Bertrand Meyer
• Basados en Pascal:
• Basados en Lisp:
Púros:
Historia de los LPOO – Años 90
• Aplicaciones centradas en el web
• 1995 JAVA- SUN
– “comportamiento” en páginas HTML
– Tecnología de implementación: bytecode+MV
• 2000 C# - Microsoft
– Plataforma .NET
– Máquina virtual para conseguir la portabilidad
– Combina Java y C++
– Son más de 20 lenguajes los que están en
proceso de migrarse a la plataforma .NET
14
Comentarios de: Programación Orientada a Objetos (0)
No hay comentarios