Anda di halaman 1dari 10

Algoritmos y

Programación III
Introducción

Carlos Fontela, 2009

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?

● Programación para interfaces gráficas


● Algo de desarrollo de software, diseño,
metodología
● Ubicación en el desarrollo de software actual

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”

● C. Fontela, “Orientación a objetos – diseño y


programación” (2008)
– C. Fontela, “Orientación a objetos con Java y UML” (2004)
– C. Fontela, “Programación orientada a objetos” (2002)

● Martin Fowler, “UML gota a gota”


– Jacobson-Booch-Rumbaugh, “El Lenguaje Unificado de Modelado”

A3F

Bibliografía general (II)


● Freeman & Freeman, “Head-First Design Patterns”
– Gamma y otros, “Patrones de diseño”

● Martin Fowler, “Refactoring”


– Joshua Kerievsky, “Refactoring to Patterns”

● Kent Beck, “Una explicación de la programación


extrema”
– Tom Demarco – Timothy Lister, “Peopleware”

– Ken Schwaber, “Agile Software Development with Scrum”

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

Otros recursos (I)


● http://java.sun.com
– Documentación en línea de Java
– Muchísimo material
● http://learningconnection.sun.com
– Cursos y exámenes gratuitos para alumnos y profesores, asi
como también los descuentos en certificaciones
● http://msdn2.microsoft.com/en-
us/library/default.aspx
– Ídem .NET
– Ver
http://blogs.sun.com/Argentina_ambassador/date/20070312

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

OO: objetivo principal


● Manejo de la complejidad
– Abstracción: construir en base a
componentes
– Lo hacen todas las industrias
● Economía
● División del trabajo
● Ya probado y optimizado
● Se adquiere y se ensambla
● Hay que definir interfaces: contrato
● No fue cierto hasta fines de los 90

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)

● Tipos definidos por el programador


– Ampliar el lenguaje
– Se definen estructura y operaciones

● No los llamamos “abstractos”


– En POO eso es otra cosa

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

Desarrollo hoy (I)

Patrón de 3 Interfaz de usuario


capas
Modelo de negocio

AccesoAcceso
a datosa (DAL)
datos

A3F

9
Desarrollo hoy (II)

A3F

Próximos Pasos

● Comenzar con POO


– Objetos y clases
– Herencia
– Polimorfismo
– Interfaces

A3F

10

Anda mungkin juga menyukai