Sei sulla pagina 1di 40

Programacin Orientada a

Objetos

POO
2/19/15

POO - AIGL

Unidad I:
El paradigma Orientado a Objetos.
1.1 Introduccin, surgimiento y
desarrollo del paradigma Orientado
a Objetos
1.2 Clases y Objetos
1.3 Encapsulamiento
1.4 Herencia
1.5 Polimorfismo
1.6 Sobrecarga de Operadores y
Funciones

2/19/15

POO - AIGL

Crisis del Software

2/19/15

POO - AIGL

Crisis del Software


Englob a una serie de sucesos que se venan
observando en los proyectos de desarrollo de software:
Los proyectos no terminaban en plazo.
Los proyectos no se ajustaban al presupuesto inicial.
Baja calidad del software generado.
Software que no cumpla las especificaciones.
Cdigo inmantenible que dificultaba la gestin y
evolucin del proyecto.

2/19/15

POO - AIGL


1.1.- INTRODUCCIN, SURGIMIENTOS Y DESARROLLO DEL PARADIGMA ORIENTADO A OBJETO

Lenguaje = Idioma Artificial

La palabra programacin se define como el proceso de creacin de un


programa de computadora, mediante la aplicacin de procedimientos
lgicos, a travs de los siguientes pasos:
El desarrollo lgico del programa para resolver un problema en
particular.
Escritura de la lgica del programa empleando un lenguaje de
programacin especfico (codificacin del programa).
Ensamblaje o compilacin del programa hasta convertirlo en lenguaje
de mquina.
Prueba y depuracin del programa.
Desarrollo de la documentacin.
Qu es un paradigma de programacin?
Paradigma un conjunto de teoras, estndar y mtodos que juntos representan un
medio de organizacin del conocimiento:
es decir
PARADIGMAS
DEun medio de visualizar el mundo.

PROGRAMACION
2/19/15

IMPERATIVA

LOGICO

C 1972,
PASCAL

PROLOG

FUNCIONAL
LISP
POO - AIGL

ORIENTADO A
OBJETO
Visual NET , JAVA

EL PARADIGMA IMPERATIVO
Este paradigma
paradigma duro
duro lo
lo suficiente
suficiente hasta
hasta que
que las
las compaas
compaas yy
Este
empresas tuvieron
tuvieron una
una explosin
explosin de
de sus
sus actividades
actividades yy pasaron
pasaron
empresas
de ser
ser locales
locales aa ser
ser regionales
regionales yy nacionales,
nacionales, aumentado
aumentado su
su
de
gradode
decomplejidad
complejidadyymanejo
manejode
deinformacin,
informacin,este
estese
seagudizo
agudizo
grado
cuandolas
lasnecesidades
necesidadespasaron
pasaronlas
lasfronteras
fronterasde
delos
lospases
pasesyylas
las
cuando
empresas nacionales
nacionales se
se trasformaron
trasformaron en
en compaas
compaas
empresas
internacionales. .
internacionales

Programacin Imperativa, los primeros lenguajes imperativo


fueron los lenguajes de mquina

2/19/15

POO - AIGL


EL PARADIGMA LGICO
Orientado a la Inteligencia Artificial
La programacin lgica comprende dos paradigmas de programacin: la
programacin declarativa y la programacin funcional.
La programacin declarativa gira en torno al concepto de predicado, o relacin
entre elementos.
le_gusta_a(juan,maria).
valioso(oro).
Tiene(juan,libro).
da(juan,libro,maria).

La programacin funcional se basa en el concepto de funcin (que no es ms que


una evolucin de los predicados), de corte ms matemtico.
En cambio, la lgica matemtica es la manera ms
sencilla, para el intelecto humano, de expresar
formalmente problemas complejos y de resolverlos
mediante la aplicacin de reglas, hiptesis y
teoremas. De ah que el concepto de "programacin
lgica" resulte atractivo en diversos campos donde
la programacin tradicional es un fracaso
2/19/15

POO - AIGL


.EL PARADIGMA LGICO
Campos de Aplicacin
Sistemas expertos, donde un sistema de informacin imita las
recomendaciones de un experto sobre algn dominio de
conocimiento.

Demostracin automtica de teoremas, donde un programa


genera nuevos teoremas sobre una teora existente.
Reconocimiento de lenguaje natural, donde un programa es
capaz de comprender (con limitaciones) la informacin
contenida en una expresin lingstica humana.

2/19/15

POO - AIGL

El paradigma Funcional

Entrada

Proceso

Salida

Los matemticos desde hace un buen tiempo estn


resolviendo problemas usando el concepto de funcin. Una
funcin convierte ciertos datos en resultados
Lisp el ms antiguo a mediado de los 50

2/19/15

POO - AIGL

El paradigma Funcional

Entrada

Proceso

Salida

Los matemticos desde hace un buen tiempo estn


resolviendo problemas usando el concepto de funcin. Una
funcin convierte ciertos datos en resultados
Lisp el ms antiguo a mediado de los 50

2/19/15

POO - AIGL

10

El paradigma Orientado a Objetos

Podemos afirmar que el paradigma orientado a objeto


reina en las metodologas actuales y pasaran varios
aos para que resulte un nuevo paradigma para que la
reemplace totalmente. La programacin orientada a objeto
vino para quedarse y mejorar nuestras vidas.
En POO, las entidades centrales son los objetos, que son
tipos de datos que encapsulan con el mismo nombre
estructuras de datos y las operaciones o algoritmos que
manipulan esos datos.

En filosofa un objeto es aquello que puede ser observado,


estudiado y aprendido.
El trmino objeto tiene el mismo significado que un nombre o
una frase nominal. Es una persona, lugar o cosa.
Un objeto en POO representa alguna entidad de la vida real, es
decir, alguno de los objetos que pertenecen al negocio con que
estamos trabajando o al problema con el que nos estamos
enfrentando, y con los que podemos interactuar
2/19/15

POO - AIGL

11

Objeto del Mundo Real


Objeto: Persona
Atributos: Caractersticas que lo
describen (nombre, edad raza,
fecha de nacimiento.)
Comportamiento: el cojunto de
cosas que puede hacer un objeto,
matar, llorar, trabajar caminar.

2/19/15

POO - AIGL

12

En sntesis los objetos conocen cosas y hacen cosas


Las cosas que un objeto conoce son ___________
Las cosas que hace un objetos es su ___________
Otros objetos

2/19/15

POO - AIGL

13

los objetos segn Shlaer, Mellor y Coad/Yourdon pueden caer


dentro de las categoras:

Cosas tangibles (camin, bicicleta, batera, motor, libro)


Roles o papeles jugados o representados por personas (gerentes, operarios, usuarios
cliente)
Organizaciones o instituciones (Empresas divisin, departamento, equipo)

Procesos u acciones que representan un suceso (evento) u ocurrencias, tales como


llamada a un servicio, juego, accin determinada, pueden ser fsica o real.
Interacciones Generalmente implican un contrato, o transaccin y relacionan dos o ms
objetos del problema en cuestin
Especificaciones muestran aplicaciones o plantillas de artculos, productos industriales
Lugares oficinas, sala de estudio, aula, muelle de embarque.
Cuando hemos determinados los posibles objetos pasamos a identificar los posibles
atributos y las operaciones sobre ellos

2/19/15

POO - AIGL

14

Qu clase de cosas puede ser objetos en un programa OO? La


respuesta solo se limita a la imaginacin. Ejemplos tpicos:

Objetos Fsicos
Aviones en un sistema de trafico areo.
Automviles en un sistema de control de
trafico terrestre.
Casas.

Elementos de interfaces grficos de


usuario
Ventanas
Mens
Objetos grficos (cuadrados, tringulos,
etc.)
Teclado
Cuadros de dialogo
Ratn.

Animales
Vertebrados
Invertebrados
Pescados

2/19/15

Tipos de datos definidos por el


usuario
Datos complejos
Puntos
de
un
sistema
de
coordenadas.
Alimentos
Carnes
Frutas
Pescados
Verduras
Pasteles

POO - AIGL

15

Cuando hemos determinados los posibles


objetos pasamos a identificar los posibles
atributos y las operaciones sobre ellos
Objeto: Empleado
Atributos:
Nombre
Direccin
Ubicacin
Nombre del
departamento
Nivel de estudio

2/19/15

Objeto: Pelcula
Atributos: Nombre
Director
Genero
Duracin
Color

POO - AIGL

16

Dentro del contexto de un Lenguaje OO (LOO), un objeto


encapsula datos y los procedimientos/funciones (mtodos)
que manejan esos datos. La notacin grafica varia de una
metodologa a otras.
Nombre del
objeto
Datos

Nombre
Atributos
Mtodos
Notacin Grafica OMT

Mtodos
Notacin grafica Yourdon / Coad

2/19/15

Atributos Datos o variables que


caracterizan o describen el estado del
objeto.
Mtodos Procedimientos o acciones
que
cambian el estado de un objeto.
POO - AIGL
Describen el comportamiento

17

Ejemplo.
Coche 1
Matricula
Marca
Precio
Ao compra
Calcular_Precio_Actua
l

2/19/15

POO - AIGL

18

Los principios bsicos orientados a objetos son:


Objetos como instancia de
una clase

Atribut
os

Mtod
os

Mensaj
e

Las clases se organizan en las siguiente


relaciones:
Asociaci
Herenci
a

Agregacin

Uso

Los cuatro elementos (propiedades) que ayudan a


definir un objeto son
Modulari
Polimorfism
Jerarqu
Abstracc Encapsulami
dad
o
a
in
ento

2/19/15

POO - AIGL

19

Abstraccin
Las caractersticas esenciales de un objeto, sin preocuparse de las
restantes caractersticas (no esenciales)
Centrado en la vista externa de un objeto, de modo que sirva para
separar el comportamiento esencial de un objeto de su implementacin.
Con nfasis al Qu hace? Ms al Cmo lo hace?
Permite disponer de las caractersticas de un objeto.
Por ejemplo para un sistemas de matrcula del objeto persona
podemos obtener las caractersticas nombre, edad, direccin,
estado civil, etc.
si lo requerimos para el rea de biologa, dentro de sus atributos
quiz tengamos, ADN, Tipo de Sangre, etc.
2/19/15

POO - AIGL

20

Abstraccin

Modelando una fraccin, por ejemplo

La fraccin ser el objeto y tendr dos propiedades, el


numerador y el denominador.
Luego podra tener varios mtodos como simplificarse,
sumarse con otra fraccin o nmero, restarse con otra
fraccin
Fraccion
Numerador
Denominador
Simplificar()
Sumar()
Restar()
2/19/15

POO - AIGL

21

Encapsulamiento
Permite asegurar que el contenido de la informacin de un objeto
est oculta al mundo exterior: El contenido del objeto A est oculto
al contenido del objeto B.
Conocida como la ocultacin de la informacin.
La encapsulacin permite la divisin de un programa en mdulos.
Estos mdulos se implementan mediante clases, de forma que una
clase representa la encapsulacin de una abstraccin, en la
prctica esto significa que cada clase debe tener dos partes: un
interfaz y una implementacin.
El interfaz de una clase captura solo su vista externa y la
implementacin contiene la representacin de la abstraccin, as
como los mecanismos que realizan el comportamiento deseado.
2/19/15

POO - AIGL

22

ocultamiento del estado, es decir, de los datos miembro, de


un objeto de manera que slo se puede cambiar mediante
las operaciones definidas para ese objeto.

Ejemplos
Cuando vemos televisin no nos preocupamos del modo
como ste funciona, o lo que hace para cambiar de canal o
aumentar de volumen

2/19/15

POO - AIGL

23

La encapsulacin se encarga de mantener ocultos los


procesos internos que necesita para hacer lo que sea que
haga, dndole al programador accesoslo a lo que
necesita
Esto da dos ventajas iniciales:
Lo que hace el usuario puede ser controlado internamente (incluso
sus errores), evitando que todo colapse por una intervencin
indeseada

Te imaginas a tu mam que no


tiene ni idea de electrnica
desarme el televisor y juegue
con los circuitos para cambiar
manualmente?? o.O

2/19/15

POO - AIGL

24

La segunda ventaja es que, al hacer que la mayor parte del


cdigo estoculto, puedes hacer cambios y/o mejoras sin
que eso afecte el modo como los usuarios van a utilizar tu
cdigo. Slo tienes que mantener igual la forma de acceder
a l
en el caso del control de la tele, que
los botones sigan siendo los mismos y
que el botn de apagado no cambie
el volumen
Estaspuertas de accesoque das a los usuarios son lo que se
conoce comointerfaz.
El encapsulamiento consiste en unir
en la Clase las caractersticas y
comportamientos, esto es, las
variables y mtodos.

2/19/15

POO - AIGL

25

Encapsulamiento
Una de las premisas de POO, es que la mayora, sino todos, los
atributos de un objeto deben ser privados, esto para tener
seguridad sobre los valores del objeto, pero entonces...cmo
acceder a los atributos de una clase?, la respuesta,
encapsulamiento, los mtodos de encapsulamiento se utilizan slo
cuando es apropiado entregar los datos a otro objeto que solicite la
informacin.
Piensa en tus atributos, tienes nombres, apellidos, etc , todos esos
atributos son privados, pero si son privados...porque la gente me
llama por mi nombre? fcil, por los mtodos de encapsulamiento
que permiten al objeto entregar la informacin que sea solicitada
por otro objeto...

2/19/15

POO - AIGL

26

Encapsulamiento
te encuentras en un Bar, a lo lejos en la
penumbra vez una sombra que se acerca a tu
mesa, ests slo era de esperarse porque
nadie te quiere...
(s ests leyendo esto es porque eres
programador, los programadores no tienen
amigos, eso todo el mundo lo sabe)...
pero la sombra se sigue acercando,
cuando la reducida luz que se
encuentra sobre tu persona, alcanza
a iluminar ligeramente a la persona
desconocida vez que es lo que
estabas esperando, es la mujer ms
hermosa
del mundo
te para
tieneconocer
ganas,
ella
atraves
todo el ybar
tu atributo privado nombre, tu utilizas
t mtodo de des-encapsulamiento
para
entregarle a la desconocida
ese
2/19/15
POO - AIGL
valor...

27

Encapsulamiento
pfff entonces, para qu encapsulo si al final voy a entregar el
valor a cualquier desconocido?.
Imagina la misma escena, slo que
esta vez no es el amor de tu vida sino
un ladrn que te va a hacer el paso
millonario y que esta vez no est
interesado en tu nombre sino en tu
PIN de la tarjeta, tu se lo entregas?,
NO! por eso es importante encapsular
los atributos de una clase, para que
los objetos slo puedan entregar los
valores que sean programados por ti
y no por nadie ms.

2/19/15

POO - AIGL

28

Encapsulamiento
(ocultamiento de la informacin) es
la idea de empacar juntas en una
Unidad de programacin una
coleccin de miembros de datos y
sus funciones (Operaciones) bien
definida.

2/19/15

POO - AIGL

29

Encapsulamiento
(ocultamiento de la informacin) es
la idea de empacar juntas en una
Clase de programacin una
coleccin de miembros de datos y
sus funciones (Operaciones) bien
definida.

2/19/15

POO - AIGL

30

Existen tres niveles de acceso:


pblico: funciones de toda clase pueden acceder a
los datos o mtodos de una clase que se define con el nivel
de accesopblico. Este es el nivel de proteccin de datos
ms bajo
protegido: el acceso a los datos est restringido a las
funciones de clasesheredadas, es decir, las funciones
miembro de esa clase y todas lassubclases
privado: el acceso a los datos est restringido a los
mtodos de esa clase en particular. Este es nivel ms alto de
proteccin de datos(10)

2/19/15

POO - AIGL

31

Encapsulamiento
La Clase es, por otro lado, una encapsulacin porque constituye
una cpsula o saco que encierra y amalgama de forma clara
tanto los datos de que constan los objetos como los
procedimientos que permiten manipularlos. Las Clases se
constituyen, as, en abstracciones encapsuladas

2/19/15

POO - AIGL

32

CLASES

Una clase es la descripcin de un conjunto de objetos; consta de mtodos y


datos que resumen caractersticas comunes de un conjunto de objetos.
Una clase puede definir un numero virtualmente infinito de objetos, y cada
objeto es denominado una instancia de la clase.

Por consiguiente, los objetos no son mas que instancias de una clase. Una
instancia es una variable de tipo objeto.
Ejemplo:

Carro
Ao
Pasajeros
Color
Modelo
Encender
Apagar
2/19/15

POO - AIGL

33

CLASES
Clases
Una descripcin abstracta de un conjunto de objetos, cada
uno de los cuales se diferencia por su estado especfico y
por la posibilidad del objeto de realizar una serie de
operaciones.

Una clase en trminos coloquiales, es el plano de un objeto,


es donde se deben definir todas las caractersticas de los
objetos de la vida real o de objetos abstractos

2/19/15

POO - AIGL

34

Clases
Las clases son una descripcin abstracta, ideal de un
grupo de objetos, cada uno de los cuales se diferencia
por un estado especifico y es capaz de realizar una
serie de operaciones.
1.- Carlos Meja Godoy, Katia Cardenal, Jos Manuel Espinoza
pertenecen a la clase cantantes de Nicaragenses
2.- Jeff, Alejandra, Moiss, Alejandro pertenecen a la clase de
Estudiantes del 2M4-Co
3.- Carlos Andrs Prez, Violeta Barrios, Bill Clinton,
pertenecen a la clase Ex presidentes de Amrica
2/19/15

POO - AIGL

35

Clases

2/19/15

POO - AIGL

36

Clase:
Trabajadores
UNI

2/19/15

POO - AIGL

37

Modularidad

Es la propiedad que permite subdividir una aplicacin en partes


mas pequeas (llamadas mdulos), cada una las cuales debe ser
tan independiente como sea posible de la aplicacin en si y de las
restantes partes.

Por su parte Brbara Liskov establece que "modularizacin


consiste en dividir un programa en mdulos que pueden ser
compilados de forma separada, pero que tienen conexiones con
otros mdulos"2

2/19/15

POO - AIGL

38

Mtodos
Algoritmo asociado a un objeto (o Clase
de objetos), cuya ejecucin se
desencadena tras la recepcin de un
mensaje.
Desde el punto de vista del
comportamiento, es lo que el objeto
puede hacer.
Un mtodo puede producir un cambio en
del
objetos.
2/19/15 las propiedades POO
- AIGL
39

Mensajes
Los objetos de un programa interactan
y se comunican entre ellos por medio de
mensajes
A veces el objeto que recibe el mensaje
necesita ms informacin Esta
informacin se pasa junto con el
mensaje enElforma
de parmetro.
objeto al cual se manda el
mensaje
Partes del mensaje
El mtodo o funcin

2/19/15

Los parmetros que necesita


ese mtodo
POO - AIGL

40

Potrebbero piacerti anche