Programación III
Introducción
A3F
Presentación (I)
● Profesor: Carlos Fontela
● JTP:
● Pablo Suárez (jueves x 2)
● Diego Fontdevila (lunes)
A3F
1
Presentación (II)
● Ayudantes:
– Marcio Degiovannini
– Juan Ignacio Garzón
– Margarita Manterola
– Ricardo Markiewicz
– Nicolás Páez
– Eugenio Yolis
A3F
Presentación (III)
● Colaboradores:
– Gastón Massón Moliné
– Gabriel Falcone
– Nuevos…
A3F
2
Temario (I)
● Programación orientada a objetos
– Java y C#.Net
– Comparación con otros: Object Pascal, C++, Smalltalk,
Ruby?, Python?
A3F
Temario (II)
● Temas de programación superior
– Excepciones
– Pruebas
– Documentación
– Interfaces de usuario
– Persistencia
– Concurrencia
– Aplicaciones distribuidas e integración
– Diseño y arquitecturas
A3F
3
Bibliografía general (I)
● Bruce Eckel, “Piensa en Java” o “Thinking in Java”
– Versión inglesa descargable de Mindview
– Doug Lea, “Programación concurrente en Java”
A3F
A3F
4
Otros recursos (I)
● Lista de correo:
– Mat7507f en fi.uba.ar
– ¡Suscribirse ya!
● http://www.fi.uba.ar/materias/7507F
● http://www.mindview.net
– El sitio de Bruce Eckel
A3F
A3F
5
POO
● Influencias previas
– Programación estructurada
– Programación modular
– Abstracción (!)
– Tipos definidos por el programador (!)
– Ocultamiento de implementación (!)
● Más otras cuestiones
– Énfasis en encapsulamiento
– Herencia
– Polimorfismo, con o sin herencia
A3F
A3F
6
Mini-Historia (I)
● Paradigma “lineal” o “espagueti”
– Código dirigido por orden de ejecución, con saltos
y sin modularidad
– Todas las cuestiones mezcladas
– Lenguajes: Fortran IV, Cobol
● Paradigma “estructurado” o “funcional”
– Centrado en lo que “hace” el software
– Separación de funcionalidades en módulos
– Sin separación de entidades, tipos o clases
– Lenguajes: Fortran 77, C, Pascal, ¿Ada?
A3F
Mini-Historia (II)
● Paradigma orientado a objetos
– Centrado en las entidades afectadas por el
software
– Las entidades son clases, y sus instancias objetos
– Lenguajes: Smalltalk, Eiffel, Ada95, C++,
ObjectPascal, Java, C#, Python, Ruby
● Paradigma(?) de aspectos
– Basado en Programación Orientada a Aspectos
– Modulariza cuestiones no funcionales
– Ya volveremos
– Lenguajes: AspectJ, Spring, JBoss, …
A3F
7
Desambiguando… (I)
● Ingeniería de software
● ¿Industria?
– Cada vez se produce algo nuevo
– Mayor inmadurez
● ¿Ingeniería?
– Más como la Civil
– Pero con los problemas de la flexibilidad
A3F
Desambiguando… (II)
A3F
8
Ocultar implementación
● Cliente
– Necesita conocer interfaz
– No necesita conocer aspectos internos
(implementación)
● Riesgos
– Impedir evolución
– Violación de restricciones
● Concepto de contrato cliente-proveedor
– Interfaz
– Comportamiento
A3F
AccesoAcceso
a datosa (DAL)
datos
A3F
9
Desarrollo hoy (II)
A3F
Próximos Pasos
A3F
10