Você está na página 1de 71

Introduccin a la

Programacin Orientada a
Objetos (POO)

Una Perspectiva Histrica

Programacin Lineal

Desventajas de la Programacin
lineal
Los lenguajes basados en esta forma de
programacin
ofrecan
ventajas
al
principio, pero el problema ocurre cuando
los sistemas se vuelven complejos.
Estos
programas escritos al estilo
espaguetti no ofrecen flexibilidad y el
mantener una gran cantidad de lneas de
cdigo en slo bloque se vuelve una tarea
complicada.

Programacin Estructurada
Frente a esta dificultad aparecieron los
lenguajes basados en la programacin
estructurada.
La idea principal de esta forma de
programacin es separar las partes
complejas del programa en mdulos o
segmentos
que
sean
ejecutados
conforme se requieran.

Programacin Estructurada

De esta manera tenemos un diseo


modular,
compuesto
por
mdulos
independientes que puedan comunicarse
entre s. Poco a poco este estilo de
programacin fue reemplazando al estilo
espaguetti impuesto por la programacin
lineal.

Programacin Estructurada

Entonces, vemos que la evolucin que se


fue dando en la programacin se
orientaba siempre a ir descomponiendo
ms el programa. Este tipo de
descomposicin conduce directamente a
la programacin orientada a objetos.

Programacin Estructurada

Pues la creciente tendencia de crear


programas cada vez ms grandes y
complejos llev a los desarrolladores a
crear una nueva forma de programar que
les permita crear sistemas de niveles
empresariales y con reglas de negocios
muy complejas.

Programacin Estructurada
Para estas necesidades ya no bastaba la
programacin estructurada ni mucho
menos la programacin lineal.
Es as como aparece la programacin
orientada a objetos (POO).

La programacin orientada a objetos


La POO viene de la evolucin de la
programacin estructurada; bsicamente
la POO simplifica la programacin con la
nueva filosofa y nuevos conceptos que
tiene.
La POO se basa en la dividir el programa
en pequeas unidades lgicas de cdigo.
A estas pequeas unidades lgicas de
cdigo se les llama objetos.

La programacin orientada a objetos


Los

objetos son unidades


independientes que se
comunican entre ellos
mediante mensajes
(mtodos)

Cules son las ventajas de un


lenguaje orientado a objetos?
Fomenta la reutilizacin y extensin del
cdigo.
Permite crear sistemas ms complejos.
Relacionar el sistema al mundo real.
Facilita la creacin de programas visuales.
Construccin de prototipos
Agiliza el desarrollo de software
Facilita el trabajo en equipo
Facilita el mantenimiento del software

Cules son las ventajas de un


lenguaje orientado a objetos?
Lo

interesante de la POO es
que proporciona conceptos y
herramientas con las cuales se
modela y representa el mundo
real tan fielmente como sea
posible.

El modelo Orientado a Objetos


Para entender este modelo vamos a
revisar 4 conceptos bsicos:
Objetos
Clases
Herencia
Envo de mensajes

1. Objetos
Entender que es un objeto es la
clave para entender cualquier
lenguaje orientado a objetos.
Existen muchas definiciones que se
le ha dado al Objeto. Primero
empecemos entendiendo qu es un
objeto del mundo real.

1. Objetos
Un objeto del mundo real es cualquier
cosa que vemos a nuestro alrededor.
Digamos que para leer este artculo lo
hacemos a travs del monitor y una
computadora, ambos son objetos, al
igual que nuestro telfono celular, un
rbol o un automvil

1. Objetos
Un Objeto representa una entidad del
mundo real o inventada, concreta o
conceptual.
Es un concepto, una abstraccin o algo
que dispone de unos lmites bien definidos
y tiene una significacin para el sistema
que se pretende modelar.

1. Objetos
Un objeto tiene estado, exhibe algn
comportamiento bien definido y tiene una
identidad nica.
Todo lo que un objeto conoce est
representado en sus atributos (variables y
estado actual), y todo lo que puede
realizar est definido en sus mtodos
(comportamiento), y en sus interacciones
con otros objetos a travs del intercambio
de mensajes (dinmica del ciclo de vida).

Estructura y funcin de los objetos:


Identidad: Quien soy? = Atributos
Propsito: Cual es mi misin? =
Justificacin
Responsabilidades: Qu debo hacer? =
Mtodos
Procedencia: De qu Clase provengo?
= Origen
Relaciones: Qu mensajes entiendo? =
Comportamiento

Estructura y funcin de los objetos:

Analicemos un poco ms a un objeto del


mundo real, como la computadora. No
necesitamos ser expertos en hardware
para saber que una computadora est
compuesta internamente por varios
componentes: la tarjeta madre, el chip del
procesador, un disco duro, una tarjeta de
video, y otras partes ms. El trabajo en
conjunto de todos estos componentes
hace operar a una computadora

Estructura y funcin de los objetos:

Arquitectura de una PC

Internamente, cada uno de estos


componentes puede ser sumamente
complicado y puede ser fabricado por
diversas compaas con diversos mtodos
de diseo. Pero nosotros no necesitamos
saber cmo trabajan cada uno de estos
componentes, como saber que hace cada
uno de los chips de la tarjeta madre, o
cmo
funciona
internamente
el
procesador.

Estructura y funcin de los objetos:

Cada componente es una unidad autnoma, y


todo lo que necesitamos saber de adentro es
cmo interactan entre s los componentes,
saber por ejemplo si el procesador y las
memorias son compatibles con la tarjeta
madre, o conocer donde se coloca la tarjeta de
video. Cuando conocemos como interaccionan
los componentes entre s, podremos armar
fcilmente una computadora.

Que tiene que ver esto con la


programacin?
La programacin orientada a objetos
trabaja de esta manera.
Todo el programa est construido en base
a diferentes componentes (Objetos), cada
uno tiene un rol especfico en el programa y
todos los componentes pueden comunicarse
entre ellos de formas predefinidas
Todo objeto del mundo real tiene 2
componentes:
caractersticas
y
comportamiento.

La programacin orientada a objetos


Por

ejemplo, los automviles tienen


caractersticas (marca, modelo, color,
velocidad mxima, etc.) y
comportamiento (frenar, acelerar,
retroceder, llenar combustible,
cambiar llantas, etc.).

La programacin orientada a objetos


Los

Objetos de Software, al igual que


los objetos del mundo real, tambin
tienen caractersticas y
comportamientos.
Un objeto de software mantiene sus
caractersticas en una o ms "variables",
e implementa su comportamiento con
"mtodos". Un mtodo es una funcin o
subrutina asociada a un objeto.

La programacin orientada a objetos

El objeto Automvil

La programacin orientada a objetos


Para redondear estas ideas, imaginemos que
tenemos estacionado en nuestra cochera un
Ford Focus color azul que corre hasta 260 km/h.
Si pasamos ese objeto del mundo real al mundo
del software, tendremos un objeto Automvil con
sus caractersticas predeterminadas:
Marca = Ford
Modelo = Focus
Color = Azul
Velocidad Mxima = 260 km/h

La programacin orientada a objetos


Cuando a las caractersticas del objeto le
ponemos valores decimos que el objeto
tiene estados. Las variables almacenan
los estados de un objeto en un
determinado momento.
Definicin terica: Un objeto es una
unidad de cdigo compuesto de
variables y mtodos relacionados.

2. Las Clases

En el mundo real, normalmente tenemos


muchos objetos del mismo tipo. Por
ejemplo, nuestro telfono celular es slo
uno de los miles que hay en el mundo. Si
hablamos en trminos de la programacin
orientada a objetos, podemos decir que
nuestro objeto celular es una instancia de
una clase conocida como "celular".

2. Las Clases

Los celulares tienen caractersticas


(marca, modelo, sistema operativo,
pantalla, teclado, etc.) y comportamientos
(hacer y recibir llamadas, enviar mensajes
multimedia, transmisin de datos, etc.).

2. Las Clases

El Objeto Celular

2. Las Clases

Cuando se fabrican los celulares, los


fabricantes aprovechan el hecho de que
los
celulares
comparten
esas
caractersticas comunes y construyen
modelos o plantillas comunes, para que a
partir de esas se puedan crear muchos
equipos celulares del mismo modelo.

2. Las Clases
A

ese modelo o plantilla le


llamamos CLASE, y a los equipos
que sacamos a partir de ella la
llamamos OBJETOS.

Clases y Objetos (instancias)

2. Las Clases
Esto mismo se aplica a los objetos de
software, se puede tener muchos objetos
del mismo tipo y mismas caractersticas.
Definicin terica: La clase es un
modelo o prototipo que define las
variables y mtodos comunes a todos
los objetos de cierta clase. Tambin se
puede decir que una clase es una
plantilla genrica para un conjunto de
objetos de similares caractersticas.

2. Las Clases
Para qu sirve una clase?
Bueno una definicin de clase sera
que es una representacin abstracta
de un objeto, pero esto nos deja con
bastantes interrogantes,

2. Las Clases

Un objeto puede ser cualquier cosa, por


ejemplo una casa, la clase es la
representacin abstracta del objeto, en

este caso serian los planos de la


casa.
En ellos la casa se ve representada por

completo, ya que en el plano podemos ver


que tendr la casa, donde lo tendr, como
estar hecho.

2. Las Clases
Ms

sin embargo no podemos


sentarnos en las escaleras del plano
de la casa porque la casa an no
existe.
La clase es solo el plano del que
despus podremos construir el objeto.

2. Las Clases
Ms

sin embargo una clase por si


sola no nos es de utilidad en lo
absoluto hasta que la convertimos en
un objeto.
Es decir no podemos habitar el plano
de una casa, necesitamos construirla
primero es decir construir el objeto.
A dicho proceso de construccin se le
llama instancia.

2. Las Clases
Ejemplo:
class Casa
{
decimal Altura;
decimal Ancho;
decimal Profundidad;
string Color;
void Entrar();
void Salir();
}

2. Las Clases
Ahora tenemos un ejemplo mas formal de
lo que sera una clase, en este ejemplo
declaramos una clase llamada Casa.
Una Casa en la vida real tiene diversas
caractersticas o "Atributos", la clase
guarda dentro de si tanto los atributos de
la Casa como la forma en que se
comportar.

2. Las Clases
Dicho comportamiento define como
reaccionara ante otras clases.
Una vez que se ha definido la clase Casa
TODA clase que heredase de ella tendra
todas las caractersticas de nuestra Casa
original.

Objetos
Un objeto es la consolidacin de una
clase, retomando el ejemplo de la casa,
deciamos que los planos de la Casa serian
la Clase casa, es decir la representacin
abstracta del objeto miCasa
Pero para que podamos utilizar la clase
Casa necesitamos instanciarla.
La instancia es el proceso de construir
la Casa.

Ejemplo de creacin de una


instancia con VB

Tomando como Base la Clase Casa


ahora lo que haremos ser declarar
miCasa del tipo Casa.
Ejemplo:
Dim miCasa As New Casa

Ejemplo de creacin de una


instancia C#
Tomando como Base la Clase Casa ahora
lo que haremos ser declarar miCasa del
tipo Casa.
Ejemplo:
Casa miCasa = new Casa();

Instancia
Por

otro lado, una instancia de una


clase es otra forma de llamar a un
objeto. En realidad no existe
diferencia entre un objeto y una
instancia. Slo que el objeto es un
trmino ms general, pero los objetos
y
las
instancias
son
ambas
representacin de una clase.

Instancias
Definicin Terica:
Una instancia es un objeto de una
clase en particular.

Instancias
Quizs

sea un poco difcil de captar al


principio, pero en realidad es de lo
mas sencillo,
Miren: toda clase es un tipo de datos,
es decir, en el mundo real existen
nmeros no decimales menores a
cierto tamao.

Instancias

Bueno, en C# se creo una clase llamada


int para representarlos de manera
abstracta, es por esto que cada que
declaramos un entero declaramos:
int miNumero = 0;
tipo nombre
valor

Instancias
Pero porque usamos new y los ()?
Bueno, porque en el caso de los
enteros(int) simplemente contienen un
dato y no hacen nada mas son simples
contenedores.
Sin embargo las clases que a nosotros
nos interesan y que son las que
estaremos creando deben actuar de
distintas maneras, ya sea leyendo bases
de datos, actualizando paginas web,
realizando operaciones matemticas, etc..

Instancias
Es por esto que se utiliza el operador new
Eso nos permite mandarle datos a la
clase que hemos creado.

Instancias
Estos parmetros de entrada provocan
que el objeto "reaccione" realizando una
serie de acciones, como por ejemplo,
publicar la casa en un sitio web de venta
de casas,
Es un ejemplo sencillo, pero que nos da
una idea de como reaccionan los objetos.

Caractersticas de los objetos


Una caracteristica de los objetos es que
presentan siempre 3 caractersticas:
Identidad
Comportamiento y
Estado.

Caractersticas de los objetos

1. Identidad: Nos permite distinguir a un


objeto de los dems objetos en la misma
clase. Por ejemplo imaginemos que
tenemos una casa igual que la de nuestro
vecino,
como
en
los
conjuntos
habitacionales donde todas las casas son
iguales. En ese caso el Nmero de casa
es lo que nos distingue, porque aunque
tuvieran el mismo color, los mismos
arreglos al frente, etc., 2 casas no pueden
tener el mismo numero

Caracteristicas de los objetos

2. Comportamiento: Esto hace tiles a


los objetos, ya que los objetos existen
para hacer algo, si los objetos no hicieran
nada no tendra chiste crearlos. El
comportamiento hace accesible a un
objeto, as mismo los objetos que vienen
de una misma clase comparten el mismo
comportamiento.
Por ejemplo, una Casa es una Casa
porque se puede habitar, un Carro es un
Carro porque se puede manejar, etc.

Caractersticas de los objetos

3. Estado: Tiene que ver con el


funcionamiento interno de una clase.
Dicho funcionamiento interno es el que le
permite proporcionar su comportamiento.
Un objeto bien diseado mantiene
inaccesible su estado, esto es porque a
uno no le interesa como le hace un
objeto para hacer lo que hace, a uno
simplemente le interesa que lo haga.

3. Herencia

La herencia es uno de los conceptos ms


cruciales
en
la
POO.
La
herencia
bsicamente consiste en que una clase
puede heredar sus variables y mtodos a
varias subclases (la clase que hereda es
llamada superclase o clase padre). Esto
significa que una subclase, aparte de los
atributos y mtodos propios, tiene incorporados
los atributos y mtodos heredados de la
superclase. De esta manera se crea una
jerarqua de herencia.

3. Herencia

Por ejemplo, imaginemos que estamos


haciendo el anlisis de un Sistema para
una tienda que vende y repara equipos
celulares.

3. Herencia

3. Herencia
En el grfico vemos 2 Clases ms que
posiblemente necesitemos para crear
nuestro Sistema.
Esas 2 Clases nuevas se construirn a
partir de la Clase Celular existente. De esa
forma utilizamos el comportamiento de la
SuperClase.

Jerarqua de Clases

4. Envo de Mensajes
Un

objeto es intil si est aislado.


El medio empleado para que un
objeto interacte con otro son los
mensajes. Hablando en trminos un
poco ms tcnicos, los mensajes
son invocaciones a los mtodos de
los objetos.

Caractersticas asociadas al POO


1. Abstraccin
La abstraccin consiste en
captar las caractersticas
esenciales de un objeto, as
como su comportamiento.

1. Abstraccin

Por ejemplo, volvamos al ejemplo de los


automviles, Qu caractersticas
podemos abstraer de los automviles? O
lo que es lo mismo Qu caractersticas
semejantes tienen todos los automviles?
Todos tendrn una marca, un modelo,
nmero de chasis, peso, llantas, puertas,
ventanas, etc. Y en cuanto a su
comportamiento todos los automviles
podrn acelerar, frenar, retroceder, etc.

1. Abstraccin
En

los lenguajes de programacin


orientada a objetos, el concepto
de Clase es la representacin y
el mecanismo por el cual se
gestionan las abstracciones.

1. Abstraccin
Por ejemplo, en Java tenemos:
public class Automovil
{
// variables
// mtodos
}

2. Encapsulamiento
El

encapsulamiento consiste en unir


en la Clase las caractersticas y
comportamientos, esto es, las
variables y mtodos. Es tener todo
esto en una sola entidad.
En los lenguajes estructurados esto era
imposible. Es evidente que el
encapsulamiento se logra gracias a la
abstraccin y el ocultamiento que
veremos a continuacin.

2. Encapsulamiento

La utilidad del encapsulamiento va por la


facilidad para manejar la complejidad, ya
que tendremos a las Clases como cajas
negras donde slo se conoce el
comportamiento pero no los detalles
internos, y esto es conveniente porque
nos interesar ser conocer qu hace la
Clase pero no ser necesario saber cmo
lo hace.

3. Ocultamiento
Es

la capacidad de ocultar los


detalles
internos
del
comportamiento de una Clase
y exponer slo los detalles que
sean necesarios para el resto
del sistema.

3. Ocultamiento

El ocultamiento permite 2 cosas:


restringir y controlar el uso de la Clase.
Restringir
porque
habr
cierto
comportamiento privado de la Clase que
no podr ser accedido por otras Clases. Y
controlar
porque
daremos
ciertos
mecanismos para modificar el estado de
nuestra Clase y es en estos mecanismos
dnde se validarn que algunas
condiciones se cumplan.

3. Ocultamiento

El ocultamiento se logra usando las


palabras reservadas: public, private y
protected delante de las variables y
mtodos.

Você também pode gostar