Está en la página 1de 43

Introducccin

a la POO (OOP)

1) Web Servicies
2) SOA Arquitectura Orientada a Servicios
3) PHP
4) JSP
5) Javascript
6) Eclipse (plugins C++, C, PHP,..)
5) Qt / C++ y QtJambi

http://es.wikipedia.org/wiki/Portada
TEMAS PARA EXPOSIONES

Mnica Gonzalez y Violetta
Javier Rojas y
Maximiliano Rodriguez
Elba Guerray Christian Poliycroniadys
Efrain Vasquez y Christian Becles
Laura Garca y Edar Castro
Rafael Andara y Aldo Grazzina
27 y 28 de Noviembre
[Presentacin 15min]

Contenido
Qu es?
Areas de aplicacin
Ejemplos Bsicos
Relaciones con otras herramientas
(versiones, plungins, interfaces)
TEMAS PARA EXPOSIONES
26 y 28 de Noviembre
Introduccin
Fases del ciclo de vida del software:
1) Anlisis, 6%
2) Diseo, 5%
3) Implementacin, 7%
4) Depuracin, 15%
5) Mantenimiento, 67%
Factores calidad del
software
Eficiencia
Portabilidad
Verificabilidad
Integridad (proteccin contra procesos sin derecho de acceso)
Facilidad de uso
Robustez (situaciones anmalas)
Extensibilidad
Reutilizacin
Compatibilidad, ...
Abstraccin en programacin

Capacidad para encapsular y aislar la informacin
del diseo y ejecucin.

Mecanismos en programacin:
Procedimientos y funciones
Tipos de datos abstractos (TDA)
Objetos: son TDA a los que se aaden mecanismos
como herencia, mtodos, etc.
La programacin orientada a objetos trata de
amoldarse al modo de pensar del hombre y no al
de la mquina.
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 jerarqua o
el encapsulamiento.
Programacin Orientada a
Objetos (POO)
El elemento bsico de este paradigma no es la
funcin (elemento bsico de la programacin
estructurada), sino un ente denominado Objeto.
Programacin Orientada a
Objetos (POO)
Un objeto es la representacin de un concepto para
un programa, y contiene la informacin necesaria
para abstraer dicho concepto:
los datos que describen su estado
las operaciones que pueden modificar dicho estado, y
determinan las capacidades del objeto.
Programacin 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 vencersl
Programacin Orientada a
Objetos (POO)
Los objetos son objetos?
Los objetos de programacin NO son objetos materiales
Inicialmente los objetos se inventaron para estructurar
programas de simulacin flujo viales: un auto, un peatn,
una calle, un semforo, ...
Actualmente se usan para estructurar objetos materiales,
servicios, conceptos, ..., en general cualquier abstraccin
mental.
Programacin Orientada a
Objetos (POO)
Ejemplos de objetos

Una estructura algebraica (ej. un grupo)
Un mbito de trabajo (ej. colores)
Un objeto material (ej. un satlite)
Un servicio inmaterial (ej. www)
Algo muy real: una cuenta corriente
Programacin Orientada a
Objetos (POO)
Habitualmente un programa emplea muchos objetos de
la misma clase
muchos coches, muchos satlites, muchas conexiones
www, muchos transistores, ...
Los programadores definen clases
class Car { ... detalles ... }
Y luego crean objetos de las clases definidas
Car miAuto = new Car (...);
Car autoDeElisa = new Car (...);
Programacin Orientada a Objetos
(POO) Clases de Objetos
Programacin Orientada a
Objetos (POO)
Ventajas de uso:
Reusabilidad (mecanismos de abstraccin y herencia)
En programacin convencional: uso de funciones y
procedimientos
Adecuacin a entornos de bases de datos.
Idnea para tratamiento de Interfaces de Usuario.
Adecuada en prototipos y simulacin.

Caractersticas de POO, I
El modelo objeto
(Booch, Object-Oriented Analysis and Design with Applications,1994):
Abstraccin
Las caractersticas esenciales del objeto
Documento: insertar, borrar, ...
Encapsulamiento (ocultamiento de informacin)
Una clase contiene:
+ una interfaz pblica
+ una implementacin
Documento: posicionPrevia
Caractersticas de POO, II


Modularidad
Subdivisin de una aplicacin en otras ms pequeas
(mdulos).
Un mdulo es un conjunto de clases
Editor, Fuente, Documento,
Caractersticas de POO, III
Jerarqua
Ordenamiento de las abstracciones
Tipos:
Herencia (es-un); generalizacin/especializacin
Herencia simple o mltiple
Mensaje es-un Documento
Agregacin (parte-de)
Mensaje: Destinatarios,Asunto,Contenido

Caractersticas de POO, IV
Polimorfismo
Una misma operacin (mtodo) realizada de diferente
modo
Documento: Aadir texto, imagen,
Mensaje: Aadir 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
Cronologa 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+mtodos). Clase. Herencia.
Smalltalk-80
Verdadero primer lenguaje de POO
Concepto de paso de mensajes (activacin de mtodos)
Otros aspectos de la POO


Beneficios:
Mejor mantenimiento
Estructuras ms reales de la informacin
Escalabilidad
Adaptabilidad
Otros aspectos de la POO, II


Inconvenientes:
Necesidades de estandarizacin (OMG, Object
Management Group)

Coste de conversin de software legado (legacy)
Conceptos de POO, I


Conceptos principales:
Clase
Objeto (una instancia de una clase)
Jerarqua de herencia entre clases
Conceptos de POO, II

Objetos:
objeto=datos+mtodos
miembros de un objeto (o clase):
datos
mtodos
identificador del objeto
nombre de variable
Conceptos de POO, III
Ejemplo:
Clase: Robot
Datos: x (entero), y (entero)
Mtodos:
void avanzar (entero,
entero)
entero posicionX ()
entero posicionY ()


Mtodos:
void avanzar (entero)
Constructores:
Robot (entero, entero)
Robot (entero)
Instanciacin:
objeto robot1 (Robot)
robot1 = Robot(1,2)
Creacin y destruccin de
objetos
Equivalencia de conceptos con programacin clsica:
Tipo = Clase
Dato = Objeto
Variable: existe en ambos tipos de programacin
Creacin (uso de constructor):
Ejemplo:
robot1 = Robot(1,2) robot2 = Robot(3)
Destruccin
Automtica (Java, Garbage collection)
~
~
Encapsulamiento

Miembros privados y pblicos
Interfaz pblica de una clase:
Miembros pblicos (datos y mtodos)
Se pueden invocar desde fuera de la clase
Encapsulamiento, II
Ejemplo
clase Robot
Datos:
privado x (entero)
privado y (entero)
Constructores:
pblico Robot (entero, entero)
pblico Robot (entero)

Encapsulamiento, III

clase Robot (continuacin)
Mtodos:
pblico void avanzar (entero, entero)
pblico entero getX ()
pblico entero getY ()
pblico void avanzar (entero)

Representacin


clase: Robot
Datos
Mtodos
x
y
void avanzar (entero, entero)
void avanzar (entero)
entero getX ()
entero getY ()
Robot (entero, entero)
Robot (entero)
Ejecucin de mtodos
Un mtodo es un algoritmo que se puede ejecutar a partir de un
objeto.
Se dice que un mtodo se ejecuta cuando el objeto recibe un
mensaje de ejecucin del mtodo.
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 definicin de subclases,
que dan lugar a una jerarqua de clases
Ejemplo:
RobotConFrontera como subclase de Robot
hereda sus miembros (x, y)
y mtodos (avanzar, getX, getY)
Herencia, II

Ejemplo:
Clase: RobotConFrontera
Clase padre: Robot
Datos:
privado limX (entero)
privado limY (entero)
Herencia, III
Clase: RobotConFrontera
Mtodos:
void avanzar (entero, entero)
void avanzar (entero)
Constructores:
RobotConFrontera (entero, entero,
entero, entero)
RobotConFrontera (entero, entero, entero)
Herencia, II

La definicin en RobotConFrontera de:
void avanzar (entero, entero)
void avanzar (entero)
es un overriding (especializacin, redefinicin, etc) de
los mtodos ya definidos en la clase Robot
Herencia, III

Herencia simple:
Figura, Crculo, Rectngulo, Cuadrado, Tringulo
Herencia mltiple:
Persona, Profesor, Investigador, ProfesorUniversitario
Problemas de ambigedad
Herencia, IV

Clase abstracta:
No admite una instancia directa. Ejemplo: clase Figura.
Sera invlido
objeto f (Figura)
f=Figura(....)
aunque s sera vlido
objeto f (Figura)
f=Cuadrado(3)
Herencia, V

Sobrecarga (overloading) de un mtodo:
En una clase, el mismo nombre de mtodo definido de
modos distintos
Ejemplo: el mtodo avanzar est sobrecargado en
la clase Robot
Herencia, IV
Overloading y Overriding son casos de polimorfismo:
El mismo mtodo definido de modos distintos
Ligadura dinmica:
objeto r (Robot)
r=RobotConFrontera(2,3,0,0)
Al ejecutar r.avanzar(3), qu definicin se aplica?
la de Robot (ligadura esttica)
la de RobotConFrontera (ligad. dinmica)

Framework
Conjunto de clases que se coordinan para realizar
una funcin
Para construir una aplicacin hay que
subclasificarlas
El main usualmente incluido en el Framework
Diagramas de clases
Necesidad de un estndar de representacin grfica
UML
Unified Modeling Language
Diagramas (condensacin grfica de estructuras de clases y
relaciones entre objetos y clases)
UML
Unified Modeling Language
Diagramas (condensacin grfica de estructuras de clases y
relaciones entre objetos y clases)

También podría gustarte