Análisis y Programación
Orientada a Objetos
Clase 1:
2
Temario tentativo
• Introducción a los conceptos de POO
• Metodología de Objetos: UML
• Lenguajes OO: C++, Java
• *Entornos para POO: C++ Builder,
Visual C++, Forte, compilaciones en
línea
• Motivos de impartir esta asignatura:
– Importancia de la asignatura:
• Conocimiento de las técnicas de Programación Orientada a Objetos, imprescindibles para un programador actual. • Conocimiento de dos lenguajes muy conocidos e
importantes (C++/Java).
• Mentalidad de programadores.
• Consolidación como programadores.
– Salidas laborales relacionadas con esta asignatura.
Algunas consideraciones (2)
• Criterios de evaluación:
– Último curso de programación -> hay que saber programar para aprobar.
5
• Criterios de evaluación:
– No se evalúa la cantidad de trabajo ni el esfuerzo, sino los conocimientos.
– Imprescindible: saber depurar y consultar ayuda en inglés.
– Aplicaremos y exigiremos todos los conocimientos previos -> ponerse las pilas, repasar.
Criterios de evaluación:
• Criterios de evaluación:
– No se evalúa la cantidad de trabajo ni el esfuerzo, sino los conocimientos.
– Imprescindible: saber depurar y consultar ayuda en inglés. – Aplicaremos y exigiremos todos los conocimientos previos ->
ponerse las pilas, repasar.
• Criterios de evaluación:
– No se admitirá ninguna práctica después de la fecha límite por ningún motivo -> antes sí, después no.
– 2 prácticas individuales (C++ y Java), una por cuatrimestre.
– Defensa individual de cada práctica.
– Los conocimientos esenciales del temario y de las prácticas se validarán individualmente.
Algunas consideraciones (5)
• Criterios de evaluación:
– Mucho trabajo en clase. Clases muy dinámicas y participativas.
– Se dedicarán algunas horas sueltas conforme avance el curso para resolver dudas sobre las prácticas, y realizar lo que de tiempo de ellas.
– Algunos ejercicios para casa, para comprender y afianzar mejor conceptos. Optativos y poco frecuentes.
• Facilitar incorporación laboral:
– Directivas, normas y consejos de programación orientadas a vuestra incorporación laboral.
• Reutilización código y de 'trabajo'.
• Nomenclaturas de nombres de variables...
– Búsqueda de problemas y posibles soluciones por internet. Casos prácticos.
– 'Mentalización' de programador/analista.
– ¿Cómo es exáctamente la relación entre un programador y la empresa para la que trabaja?
Algunas consideraciones (7)
• Motivos que me motivan a impartir esta
asignatura:
– Desarrollo académico del ciclo (tan práctico)
– Grupo reducido de alumnos
– Alumnos involucrados en aprender
11
• También conocida como Programación Dirigida a Objetos (Object Oriented Programming)
• Qué no es: Visual Basic, C++
• Se puede programar sin objetos en un lenguaje de objetos (desgraciadamente, se suele)
• Ante la crisis del software, nace una nueva filosofía
• Algoritmos + Estructuras de Datos = Programa (Estructurado) • Estado + Métodos = Objeto
• Nuevos conceptos: herencia, polimorfismo, sobrecarga, clases, etc.
12
Historia
• Simula 67
– Simulación de la realidad
• Smalltalk 80
– Alan Kay y el Dynabook (PARC)
• C++
– Gestión de grandes programas en C: Bjarne
Soustrap
• Eiffel
– Buena idea, mala ejecución
13
• Para modelado de elementos del
mundo real
• Los datos y los procedimientos se
empaquetan en un solo elemento
• Se crean “clases” de dichos paquetes
• Padres e hijos de una clase (herencia)
• Por primera vez, se unen estructuras de
14
Smalltalk 80
• Alan Kay y el Dynabook
• Ordenador de propósito general para gente corriente (el PC de hoy día)
• Interfaz gráfica interactiva
• Incluía el concepto de ventana (Microsoft no las inventó…) • Smalltalk fue desarrollado como lenguaje para el prototipo
(demasiado grande…)
• Muy influenciado por Simula 67 • Objetos que se envían mensajes
15
• Buena idea, mala ejecución
• Creado por Bertrand Meyer
• Refuerza el concepto de mensaje a objeto y
encapsulación
• ¿Porqué no tuvo éxito?
– Era más fácil pasar de C a C++
– Los compiladores de C++ son fáciles y baratos
– C++ estuvo soportado por los Laboratorios Bell
16
C++
• Manejo de grandes programas en C: Bjarne
Soustrap
• Empezó como "C con Clases“, a partir de
Simula 67 & Smalltalk
• Objetivos
– Organizar programas en clases con herencia
– No mucho menos eficiente que C
• Lo cual es peligroso en cierto modo (muy permisivo)
17
• A partir de C++, se buscaba algo más
– Pequeño
– Simple
– Seguro
• Preparado para empotrar en sistemas
– Tostadoras, microondas, TVs
• Programación de Webs
– A partir de cierto momento, los browsers
empezaron a ejecutarlo (páginas activas)
18
Principios básicos
• Tipos de Datos Abstractos
• Encapsulación de datos y comportamiento
• Clases, como plantillas para crear ejemplares o instancias de objetos.
• Herencia
• Reutilización de código
• Polimorfismo/Enlace dinámico
• Objetos distintos de la misma familia pueden tener métodos con el mismo nombre
19
• Aprenderemos conceptos de POO
• Aprenderemos una metodología (UML)
• Aprenderemos lenguajes y entornos
(C++, Java)
• POO nace de la simulación y los
entornos gráficos
• Mejora problemas de los lenguajes
estructurados tradicionales
• Usar un lenguaje de POO no implica
usar POO !!
20