Vous êtes sur la page 1sur 43

Introducccin

a la POO (OOP)

TEMAS PARA EXPOSIONES


27 y 28 de Noviembre

1) Web Servicies

Mnica Gonzalez y Violetta

Javier Rojas y
2) SOA Arquitectura Orientada a Servicios
Maximiliano Rodriguez
Elba Guerray Christian Poliycroniadys
3) PHP
Efrain Vasquez y Christian Becles
4) JSP
Laura Garca y Edar Castro
5) Javascript
6) Eclipse (plugins C++, C, PHP,..)
Rafael Andara y Aldo Grazzina
5) Qt / C++ y QtJambi

http://es.wikipedia.org/wiki/Portada

TEMAS PARA EXPOSIONES


26 y 28 de Noviembre

[Presentacin 15min]
Contenido
Qu es?

Areas de aplicacin

Ejemplos Bsicos

Relaciones con otras herramientas


(versiones, plungins, interfaces)

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.

Programacin Orientada a
Objetos (POO)

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) Clases de Objetos

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 (...);

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
x
y
Mtodos
Robot (entero, entero)
Robot (entero)
void avanzar (entero, entero)
void avanzar (entero)
entero getY ()
entero getX ()

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)

Vous aimerez peut-être aussi