Introduccción
a la POO (OOP)
TEMAS PARA EXPOSIONES
27 y 28 de Noviembre
1) Web Servicies
Mónica Gonzalez y Violetta
Javier Rojas y
2) SOA – Arquitectura Orientada a Servicios
Maximiliano Rodriguez
3) PHP
Elba Guerray Christian Poliycroniadys
Efrain Vasquez y Christian Becles
4) JSP
5) Javascript
Laura García y Edar Castro
6) Eclipse (plugins C++, C, PHP,..)
5) Qt / C++ y QtJambi
Rafael Andara y Aldo Grazzina
http://es.wikipedia.org/wiki/Portada
TEMAS PARA EXPOSIONES
26 y 28 de Noviembre
[Presentación 15min]
Contenido
Qué es?
● Areas de aplicación
● Ejemplos Básicos
● Relaciones con otras herramientas
(versiones, plungins, interfaces)
●
Introducción
●
Fases del ciclo de vida del software:
1) Análisis, 6%
2) Diseño, 5%
3) Implementación, 7%
4) Depuración, 15%
5) Mantenimiento, 67%
Factores calidad del
software
●
●
●
●
●
●
●
●
●
Eficiencia
Portabilidad
Verificabilidad
Integridad (protección contra procesos sin derecho de acceso)
Facilidad de uso
Robustez (situaciones anómalas)
Extensibilidad
Reutilización
Compatibilidad, ...
Abstracción en programación
●
●
Capacidad para encapsular y aislar la información
del diseño y ejecución.
Mecanismos en programación:



Procedimientos y funciones
Tipos de datos abstractos (TDA)
Objetos: son TDA a los que se añaden mecanismos
como herencia, métodos, etc.
Programación Orientada a
Objetos (POO)
●
●
La programación orientada a objetos trata de
amoldarse al modo de pensar del hombre y no al
de la máquina.
Esto es posible gracias a la forma racional con
la que se manejan las abstracciones que
representan las entidades del dominio del
problema, y a propiedades como la jerarquía o
el encapsulamiento.
Programación Orientada a
Objetos (POO)
●
El elemento básico de este paradigma no es la
función (elemento básico de la programación
estructurada), sino un ente denominado Objeto.
Programación Orientada a
Objetos (POO)
●
Un objeto es la representación de un concepto para
un programa, y contiene la información necesaria
para abstraer dicho concepto:


los datos que describen su estado
las operaciones que pueden modificar dicho estado, y
determinan las capacidades del objeto.
Programación Orientada a
Objetos (POO)
●
Un objeto es un trocito de programa
●
Un programa es un conjunto de objetos
●
Se programan cosas que pueden ser muy complejas
y para mantener esa complejidad bajo control hay
que partir el problema en piezas controlables

Divide y vencerásl
Programación Orientada a
Objetos (POO)
¿Los objetos son objetos?
●
●
●
Los objetos de programación NO son objetos materiales
Inicialmente los objetos se inventaron para estructurar
programas de simulación flujo viales: un auto, un peatón,
una calle, un semáforo, ...
Actualmente se usan para estructurar objetos materiales,
servicios, conceptos, ..., en general cualquier abstracción
mental.
Programación Orientada a
Objetos (POO)
Ejemplos de objetos
●
Una estructura algebraica (ej. un grupo)
●
Un ámbito de trabajo (ej. colores)
●
Un objeto material (ej. un satélite)
●
Un servicio inmaterial (ej. www)
●
Algo muy “real”: una cuenta corriente
Programación Orientada a Objetos
(POO) Clases de Objetos
●
Habitualmente un programa emplea muchos objetos de
la misma clase

●
muchos coches, muchos satélites, muchas conexiones
www, muchos transistores, ...
Los programadores definen clases
class Car { ... detalles ... }
●
Y luego crean objetos de las clases definidas
Car miAuto = new Car (...);
Programación Orientada a
Objetos (POO)
●
Ventajas de uso:




Reusabilidad (mecanismos de abstracción y herencia)
● En programación convencional: uso de funciones y
procedimientos
Adecuación a entornos de bases de datos.
Idónea para tratamiento de Interfaces de Usuario.
Adecuada en prototipos y simulación.
Características de POO, I
●
El modelo objeto
(Booch, Object-Oriented Analysis and Design with Applications,1994):


Abstracción
Las características esenciales del objeto
Documento: insertar, borrar, ...
Encapsulamiento (ocultamiento de información)
Una clase contiene:
+ una interfaz pública
+ una implementación
Documento: posicionPrevia
Características de POO, II

Modularidad
● Subdivisión de una aplicación en otras más pequeñas
(módulos).
 Un módulo es un conjunto de clases
Editor, Fuente, Documento, …
Características de POO, III

Jerarquía
● Ordenamiento de las abstracciones
● Tipos:
 Herencia (“es-un”); generalización/especialización
● Herencia simple o múltiple
Mensaje es-un Documento
 Agregación (“parte-de”)
Mensaje: Destinatarios,Asunto,Contenido
Características de POO, IV


Polimorfismo
● Una misma operación (método) realizada de diferente
modo
 Documento: Añadir texto, imagen, …
 Mensaje: Añadir destinatario, …
Otras propiedades
● concurrencia (multitarea)
● Persistencia (guardar)
● uso de excepciones (errores)
Importancia de las palabras
Nombres:
 Objetos
 Propiedades de objetos
● Adjetivos:
 Valores de las propiedades
Verbos:
 Comportamiento de los objetos
●
“El coche tiene color rojo y se mueve”
“El documento tiene letra grande y se muestra”
Lenguajes de POO
●
Cronología resumida:









Fortran (1958)
LISP (1959)
BASIC (1964)
Pascal (1969)
Prolog (1971)
C++ (1986)
Object Pascal (1988)
CLOS (1989)
Java (1995)
Lenguajes de POO, II
●
●
The journal of object-oriented programming (1988)
Primeros lenguajes POO:

Simula-67
●

Objeto (datos+métodos). Clase. Herencia.
Smalltalk-80
●
●
Verdadero primer lenguaje de POO
Concepto de paso de mensajes (activación de métodos)
Otros aspectos de la POO
●
Beneficios:




Mejor mantenimiento
Estructuras más reales de la información
Escalabilidad
Adaptabilidad
Otros aspectos de la POO, II
●
Inconvenientes:

Necesidades de estandarización (OMG, Object
Management Group)

Coste de conversión de software legado (legacy)
Conceptos de POO, I
●
Conceptos principales:



Clase
Objeto (una instancia de una clase)
Jerarquía de herencia entre clases
Conceptos de POO, II
●
Objetos:


objeto=datos+métodos
miembros de un objeto (o clase):
●
●

datos
métodos
identificador del objeto
●
nombre de variable
Conceptos de POO, III
●
Ejemplo:
 Clase: Robot
 Datos: x (entero), y (entero)
 Métodos:
● void avanzar (entero,
entero)
● entero posicionX ()
● entero posicionY ()


Métodos:
● void avanzar (entero)
● Constructores:
 Robot (entero, entero)
 Robot (entero)
Instanciación:
● objeto “robot1” (Robot)
● robot1 = Robot(1,2)
Creación y destrucción de
objetos
●
●
●
Equivalencia de conceptos con programación clásica:
 Tipo =~Clase
~
 Dato = Objeto
 Variable: existe en ambos tipos de programación
Creación (uso de constructor):
 Ejemplo:
robot1 = Robot(1,2) robot2 = Robot(3)
Destrucción
 Automática (Java, Garbage collection)
Encapsulamiento
●
●
Miembros privados y públicos
Interfaz pública de una clase:


Miembros públicos (datos y métodos)
Se pueden invocar desde fuera de la clase
Encapsulamiento, II
●
Ejemplo
 clase Robot
●
●
Datos:
 privado x (entero)
 privado y (entero)
Constructores:
● público Robot (entero, entero)
● público Robot (entero)
Encapsulamiento, III

clase Robot (continuación)
●
Métodos:
 público void avanzar (entero, entero)
 público entero getX ()
 público entero getY ()
 público void avanzar (entero)
Representación
clase: Robot
Datos
x
y
Métodos
Robot (entero, entero)
Robot (entero)
void avanzar (entero, entero)
void avanzar (entero)
entero getY ()
entero getX ()
Ejecución de métodos
●
●
Un método es un algoritmo que se puede ejecutar a partir de un
objeto.
 Se dice que un método se ejecuta cuando el objeto recibe un
mensaje de ejecución del método.
 Puede acceder a todos los miembros de la clase y a sus
argumentos, que son otros objetos.
Ejemplo:
 Objeto robot1 (Robot)
 robot1=Robot(3,2)
 robot1.avanzar(1,2)
Herencia
●
●
●
Representa el concepto de “ser un tipo especial de”
o “ser un/a”
Se establece mediante la definición de subclases,
que dan lugar a una jerarquía de clases
Ejemplo:
RobotConFrontera como subclase de Robot
hereda sus miembros (x, y)
y métodos (avanzar, getX, getY)
Herencia, II
●
Ejemplo:



Clase: RobotConFrontera
Clase padre: Robot
Datos:
● privado limX (entero)
● privado limY (entero)
Herencia, III

Clase: RobotConFrontera

Métodos:
● void avanzar (entero, entero)
● void avanzar (entero)
● Constructores:
 RobotConFrontera (entero, entero,
entero, entero)
 RobotConFrontera (entero, entero, entero)
Herencia, II
●
La definición en RobotConFrontera de:
void avanzar (entero, entero)
● void avanzar (entero)
es un “overriding” (especialización, redefinición, etc) de
los métodos ya definidos en la clase Robot
●

Herencia, III
●
Herencia simple:
●
●
Figura, Círculo, Rectángulo, Cuadrado, Triángulo
Herencia múltiple:
●
●
Persona, Profesor, Investigador, ProfesorUniversitario
Problemas de ambigüedad
Herencia, IV
●
Clase abstracta:

No admite una instancia directa. Ejemplo: clase Figura.
Sería inválido
 objeto f (Figura)
 f=Figura(....)
aunque sí sería válido
 objeto f (Figura)
 f=Cuadrado(3)
Herencia, V
●
Sobrecarga (overloading) de un método:

En una clase, el mismo nombre de método definido de
modos distintos
● Ejemplo: el método “avanzar” está sobrecargado en
la clase Robot
Herencia, IV
●
●
“Overloading” y “Overriding” son casos de polimorfismo:
 El mismo método definido de modos distintos
Ligadura dinámica:
 objeto r (Robot)
 r=RobotConFrontera(2,3,0,0)
 Al ejecutar r.avanzar(3), ¿qué definición se aplica?
 la de Robot (ligadura estática)
 la de RobotConFrontera (ligad. dinámica)
Framework
●
●
●
●
Conjunto de clases que se coordinan para realizar
una función
Para construir una aplicación hay que
subclasificarlas
El “main” usualmente incluido en el Framework
Diagramas de clases

Necesidad de un estándar de representación gráfica
UML
●
Unified Modeling Language
● Diagramas (condensación gráfica de estructuras de clases y
relaciones entre objetos y clases)
UML
●
Unified Modeling Language
● Diagramas (condensación gráfica de estructuras de clases y
relaciones entre objetos y clases)
Descargar

Curso de Java - LDC :: Noticias