Anda di halaman 1dari 35

Programacin Orientada a Objeto

Marzo 2014
Programacin orientada a Objeto - POO
2
Partners
Principios
Capacidade
s
Requerimientos
En 1930 s, A. Turing desarroll una mquina
abstracta denominada Mquina de Turing para el
estudio de la computabilidad.
En 1940 s y 1950 s, se desarrollan unas mquinas
simples, en cuanto su funcionamiento, que fueron
conocidas como autmatas finitos, para modelar el
funcionamiento del cerebro.
Tambin en los 1950 s, N. Chomsky comienza el
estudio formal de las gramticas (generadoras de
lenguajes).
Historia (I)
Programacin orientada a Objeto - POO
3
En 1969, S. Cook extiende el estudio de Tuning. Cook
separa aquellos problemas que pueden ser
solucionados de aquellos que en principio pueden ser
solucionados pero que en la prctica toman
demasiados recursos.
Autmatas finitos y ciertas clases de gramticas
formales son usadas en el diseo y construccin de
software.
La Mquina de Turing ayuda a comprender que es lo
que podemos esperar de nuestro software.

Historia (II)
Programacin orientada a Objeto - POO
4
Conceptos bsicos de lenguajes
Programacin orientada a Objeto - POO
5
Programacin orientada a Objeto - POO
6
Programacin orientada a Objeto - POO
7
Programacin orientada a Objeto - POO
8
Java
Visual basic
C++
PHP
C#
Python
Programacin orientada a Objeto - POO
9
En 1991, la empresa Sun Microsystems crea el lenguaje
Oak. Mediante este lenguaje se pretenda crear un
sistema de televisin interactiva. Este lenguaje slo se
lleg a utilizar de forma interna en la empresa. Su
propsito era crear un lenguaje independiente de la
plataforma para uso en dispositivos electrnicos. En 1995
Oak pasa a llamarse Java.
Java es una isla de Indonesia, conocida por su produccin
de caf de calidad.
En USA pedir a cup of Java es sinnimo de pedir una
taza de caf.
Programacin orientada a Objeto - POO
10
Programacin orientada a Objeto - POO
11
Programacin orientada a Objeto - POO
12
Introduccin
Lo ms dificil de entender, cuando se estudia Programacin Orientada a Objetos
(POO o POO por su nombre en ingls) son los fundamentos bsicos.
Lo bueno es que, una vez que se entiende bien, el resto es muy fcil de
aprender.
Programacin orientada a Objeto - POO
13
Probablemente lo ms importante al programar con objetos, es entender que
no se trata de una forma de programar, si no una forma de pensar los
problemas.
No es el pensamiento estructurado, que busca crear algoritmos de resolucin
de problemas, ni el pensamiento orientado al comportamiento, donde se
desarrolla desde la interfaz del usuario.
En la programacin orientada a objetos tenemos que aprender a pensar las
cosas de una manera distinta, para escribir nuestros programas en trminos
de objetos, propiedades, mtodos y otras cosas que veremos rpidamente.
Vamos a modelar el mundo en trminos de objetos y acciones sobre estos
objetos, que finalmente resulta mucho ms natural que los acercamientos
conseguidos con otros lenguajes.
POO
Programacin orientada a Objeto - POO
14
Pensando en objetos
Resulta que ya pensamos en trminos de objetos.
Algunos ejemplos, un automovil tiene una serie de caracteristicas; color,
modelo, marca y nmero de patente. Adems tiene una serie de
funcionalidades asociadas, como ponerse en marcha, detenerse o estacionar.
Al pensarlo como "Objeto", el auto es un objeto, cuyas propiedades son
el color, modelo y marca mientras que los mtodos son equivalentes a las
funcionalidades, es decir avanzar, retroceder y detenerse.
Definicin de Clase (y porque no es lo mismo que Objeto)
Hablamos de programacin orientada a objetos, pero en realidad programamos
"Clases"
Una "Clase" describe un objeto segn sus atributos y mtodos.
De este modo, la clase "Auto" tiene atributos como; color, modelo, marca,
nmero de patente y mtodos que actuan sobre el objeto, como avanzar y
retroceder.
Programacin orientada a Objeto - POO
15
una clase es una entidad conceptual que describe un conjunto de objetos.
Su definicin sirve como modelo para crear sus representantes fsicos
llamados instancias u objetos.
Programacin orientada a Objeto - POO
16
Antes de empezar a desarrollar las caractersticas propias de la programacin
orientada a objeto, conviene hacer una revisin de alto nivel de la
programacin, sus fases y sus diferentes mtodos. En el proceso de desarrollo
de un sistema de informacin (un programa, software, en general) hay una
serie de etapas o fases en las que la programacin como tal es una de ellas, ni
tan siquiera la ms importante. Hay diferentes modelos de desarrollo en los
que se definen esas fases o etapas antes comentadas; uno de ellos es el
mtodo en cascada (waterfall ) que nos servir como gua en el desarrollo de
estas ideas.
Segn este modelo, a grandes rasgos, el desarrollo software consta de las
siguientes fases:
Introduccin
Programacin orientada a Objeto - POO
17
Anlisis: Esta es una de las fases ms importantes puesto que se trata de
definir y analizar el problema en su totalidad. En general, se trata de entender
el enunciado del problema. Evidentemente, para una resolucin correcta
(eficaz y eficiente) de un problema lo mejor es conocerlo.
Diseo: Junto con la anterior, la ms importante y consiste en, dado el anlisis
anterior, disear una solucin del problema. Se tratara de definir los mdulos,
patrones, algoritmos, etc. que nos ayudaran a su solucin. Entre esta fase y la
anterior, se debera consumir un 70-80% del tiempo del proyecto.
Implementacin: Sera un equivalente a la programacin. En este caso, el
diseo anterior se traducira a un lenguaje de programacin concreto; en esta
fase es donde realmente se programa (codifica).
Pruebas: Periodo en el que el producto se somete a diferentes tipos de
pruebas: de sistema, de integracin, etc.
Implantacin: Proceso de puesta en produccin del producto.
Mantenimiento: Realizar mejoras varias sobre el producto desde el punto de
vista tecnolgico, funcional, etc.
Programacin orientada a Objeto - POO
18
La Orientacin a Objetos
La orientacin a objetos promete mejoras de amplio alcance en la forma de
diseo, desarrollo y mantenimiento del software ofreciendo una solucin a
largo plazo a los problemas y preocupaciones que han existido desde el
comienzo en el desarrollo de software:
1. La falta de portabilidad del cdigo y su escasa reusabilidad.
2. Cdigo que es difcil de modificar.
3. Ciclos de desarrollo largos.
4. Tcnicas de codificacin no intuitivas.
Un lenguaje orientado a objetos ataca estos problemas. Tiene tres
caractersticas bsicas:
debe estar basado en objetos, basado en clases y capaz de tener herencia de
clases. Muchos lenguajes cumplen uno o dos de estos puntos; muchos
menos cumplen los tres.
Programacin orientada a Objeto - POO
19
Los objetos
El elemento fundamental de la POO es, como su nombre indica, el objeto.
Podemos definir un objeto como un conjunto complejo de datos y programas
que poseen estructura y forman parte de una organizacin. En este caso las
estructuras de datos y los algoritmos usados para manipularlas estn
encapsulados en una idea comn llamada objeto.
Esta definicin especifica dos propiedades caractersticas de los objetos:
En primer lugar, un objeto no es un dato simple, sino que contiene en su
interior cierto nmero de componentes bien estructurados.
En segundo lugar, cada objeto no es un ente aislado, sino que forma parte de
una organizacin jerrquica o de otro tipo.
Programacin orientada a Objeto - POO
20
Para ilustrar mejor las diferencias entre la programacin procedural clsica
y la POO vamos a plantear, de forma intuitiva, un pequeo ejemplo escrito
en C y despus planteado en Java. Se trata de tener en un array una serie
de figuras geomtricas que tendrn lgicamente los subprogramas
encargados de leer los datos, dibujarlos, etc...
La estructura de datos en C podra ser:
Programacin orientada a Objeto - POO
21
En el caso de que quisiramos dibujar todas las figuras que aparecen en el
array haramos algo parecido a esto:
En general, tendremos para cada figura sus correspondientes funciones que
se encarguen de leer las coordenadas, de dibujarlos por pantalla, etc. Qu
ocurre si quiero aadir una nueva figura geomtrica?
Programacin orientada a Objeto - POO
22
Si resolviramos este mismo problema de forma OO la solucin a la hora
de aadir una nueva figura geomtrica no sera tan aparatosa.
Programacin orientada a Objeto - POO
23
En la siguiente figura se muestra un esquema de cmo se ven los objetos
desde el punto de vista orientado a objeto.
Programacin orientada a Objeto - POO
24
Las clases
Una clase es la descripcin de una familia de objetos que tienen la misma
estructura (atributos) y el mismo comportamiento (mtodos). En el caso que
estamos siguiendo tendramos la clase Circulo en el que se definiran los
atributos y los mtodos que definen cualquier crculo. Cada ejemplar de
crculo sera un objeto (o instancia) de la clase crculo en los que cada uno
tendra sus propias coordenadas (su centro y su radio), y todos compartiran
los mismos mtodos.
De esta forma se organizan los conocimientos que tenemos del sistema; las
clases son el patrn habitual que proporcionan los lenguajes orientados a
objetos para definir la implementacin de los objetos.
Programacin orientada a Objeto - POO
25
Por ejemplo, supongamos que en
nuestro sistema detectamos la
necesidad de tener empleados,
por tanto definimos las
caractersticas comunes de todo
empleado en un pseudo-cdigo
orientado a objetos:
Programacin orientada a Objeto - POO
26
Todos los objetos son instancias de una clase, es decir, ejemplares o
ejemplos concretos de la clase. Como vemos, la clase lo define todo, es
una entidad autocontenida en cuanto que contiene todo lo necesario para
definir la estructura o los datos (atributos) que cada objeto tendr y la
manera de manejarse esos objetos a travs de los mtodos.
Programacin orientada a Objeto - POO
27
La iniciacin de instancias
Una clase es una entidad conceptual que describe un conjunto de
objetos. Su definicin sirve como modelo para crear sus representantes
fsicos llamados instancias u objetos.
En la declaracin de un objeto establecemos la referencia que identificar
al objeto mediante un identificador. Por creacin o iniciacin nos
referiremos a la asignacin de espacio de memoria para un nuevo objeto y
la ligadura de dicho espacio a su identificador; adems, por iniciacin
aludiremos no slo a la puesta de valores iniciales en el rea de datos
para un objeto, sino tambin al proceso ms general de establecer las
condiciones iniciales bsicas para la manipulacin de un objeto.
La iniciacin se facilita usando constructores de objetos. Un constructor es
un mtodo que tiene el mismo nombre que la clase de la cual es
constructor. El mtodo se invoca siempre que se crea un objeto de la
Clase asociada.
Programacin orientada a Objeto - POO
28
En primer lugar nos fijamos en
que hemos construido mtodos
para acceder a los atributos de la
clase. stos los hemos declarado
privados para enfatizar que slo
deben poder ser accedidos
desde fuera de la clase a travs
de los mtodos que creemos a
tal fin.
Programacin orientada a Objeto - POO
29
Si quisiramos hacer uso de un nmero complejo, deberamos tener una
porcin de cdigo similar a la siguiente:
Con lo que se crearaa un objeto de tipo Complejo con los valores 34 y 4
para la parte real e imaginaria, respectivamente. Una instancia es un
objeto particular, que se crea respetando los planes de construccin dados
por la clase a la que pertenece. Todas las instancias de una misma clase
tienen los mismos atributos con los valores que le corresponda. Todas las
instancias poseen los mismos mtodos, slo que al invocarlos, slo se
ejecuta el del objeto de esa clase al que se le invoca.
Programacin orientada a Objeto - POO
30
Aunque todas las instancias de la misma clase posean los mismos atributos,
stos pueden contener valores diferentes correspondientes a la naturaleza
particular de cada instancia. La lista de atributos es retenida por la clase,
mientras que las instancias poseen los valores de esos campos.
El mecanismo de constructores se hace considerablemente ms poderoso
cuando se combina con la capacidad de sobrecargar funciones (aunque
como veremos, esta cualidad no es exclusiva de los constructores). Se
dice que una funcin est sobrecargada cuando hay dos o ms cuerpos
de funcin conocidos por el mismo nombre. Se rompe la ambigedad de
las funciones sobrecargadas por las listas de parmetros. En nuestro
caso, el constructor est sobrecargado, de forma que si escribimos:
Programacin orientada a Objeto - POO
31
Se crear un nmero Complejo en el que tanto la parte real como la
imaginaria valen 0. El hecho de elegir uno de los dos mtodos se realiza
en funcin de los parmetros. En la siguiente figura se muestra esta
situacin esquemticamente.
Programacin orientada a Objeto - POO
32
Veamos cmo usaramos la clase anteriormente presentada con alguna
instruccin ms.
Algunas de las instrucciones que aparecen no las hemos explicado
todavaa pero no influyen en el objetivo del ejemplo:
Cuando en el ejemplo anterior escribamos c1.imag() estbamos
invocando el mtodo imag() al objeto de tipo Complejo de referencia c1
que provocaba la ejecucin del mtodo imag() definido en el mismo.
Programacin orientada a Objeto - POO
33
Herencia
Supongamos que estamos diseando un programa orientado a objetos y
nos damos cuenta de que aparece una Clase B que es idntica a una Clase
A excepto que tiene unos atributos y mtodos ms que sta. Una manera
muy sencilla y poco OO de solucionar la situacin
sera simplemente copiar el cdigo de la Clase A en la Clase B y aadir las
lneas de cdigo propias de esta clase. El mecanismo ideal, sin embargo,
es el concepto de herencia. En todo caso, sera un error pensar que el
principal uso de la herencia es evitarnos escribir cdigo, como veremos en
el tema correspondiente, la herencia tiene que ver con la relacin entre
tipos de datos.
Programacin orientada a Objeto - POO
34
Por herencia nos referimos a la propiedad por la que los ejemplares de
una clase hija (subclase) pueden tener acceso tanto a los datos como al
comportamiento (mtodos) asociados con una clase paterna (superclase).
La herencia significa que el comportamiento y los datos asociados con las
clases hijas son siempre una extensin de las propiedades asociadas con
las clases paternas. Una subclase debe reunir todas las propiedades de
la clase paterna y otras ms. Esquemticamente, la herencia la podemos
representar como se muestra en la siguiente figura.
Programacin orientada a Objeto - POO
35
Muchas Gracias

Eduardo Canales C.
lcanales@utalca.cl

Anda mungkin juga menyukai