Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tema
Curso
Ciclo
Tutor
Alumnos :
VI
2015
DEDICATORIA
AGRADECIMIENTOS.
NDICE
DEDICATORIA...................................................................................................... 3
AGRADECIMIENTOS............................................................................................. 4
INTRODUCCIN................................................................................................... 6
Programacin Orientada a Objeto (POO)...................................................................8
Una Forma Nueva De Pensar.................................................................................. 8
Un Primer Ejemplo............................................................................................... 10
Qu es un objeto?.............................................................................................. 12
Qu es un mensaje?........................................................................................... 14
Qu es una clase?............................................................................................. 16
Relacin entre Clase y Objeto................................................................................ 17
La declaracin de una variable de una clase NO crea el objeto...................................18
Atributo............................................................................................................... 18
Mtodo............................................................................................................... 19
Caractersticas Generales..................................................................................... 19
Creacin de Objetos y Mtodos Constructores:........................................................20
Mtodo de Destructores de objetos:........................................................................20
Instancia:............................................................................................................ 20
Herencia............................................................................................................. 21
La herencia proporciona las siguientes ventajas:......................................................23
Fundamentos del Enfoque Orientado a Objeto.........................................................24
CONCLUSIONES................................................................................................ 28
FUENTES DE INFORMACIN............................................................................... 29
INTRODUCCIN
el valor del discriminante; y por ltimo, en funcin del signo del discriminante, calcular
ninguna, una o dos races.
Como podemos ver, descomponamos el problema en acciones, en verbos; por ejemplo el
verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular.
La programacin orientada a objetos es otra forma de descomponer problemas. Este
nuevo mtodo de descomposicin es la descomposicin en objetos; vamos a fijarnos no en
lo que hay que hacer en el problema, sino en cul es el escenario real del mismo, y vamos
a intentar simular ese escenario en nuestro programa.
Los lenguajes de programacin tradicionales no orientados a objetos, como C, Pascal,
BASIC, o Modula-2, basan su funcionamiento en el concepto de procedimiento o
funcin. Una funcin es simplemente un conjunto de instrucciones que operan sobre
unos argumentos y producen un resultado. De este modo, un programa no es ms que
una sucesin de llamadas a funciones, ya sean stas del sistema operativo,
proporcionadas por el propio lenguaje, o desarrolladas por el mismo usuario.
En el caso de los lenguajes orientados a objetos, como es el caso de C++ y Java, el
elemento bsico no es la funcin, sino un ente denominado precisamente objeto. Un
objeto es la representacin en un programa de un concepto, y contiene toda la
informacin necesaria para abstraerlo: datos que describen sus atributos y operaciones que
pueden realizarse sobre los mismos.
La programacin orientada a objetos es una nueva forma de pensar, una manera distinta de
enfocar los problemas. Ah radica la dificultad de aprender un lenguaje totalmente
orientado a objetos, como es Java, sin conocer previamente los pilares de la
programacin orientada a objetos. Hecha esta importante aclaracin, conviene destacar
que Java, ms que un lenguaje orientado a objetos, es un lenguaje de objetos. Java
incorpora el uso de la orientacin a objetos como uno de los pilares bsicos y
fundamentales del lenguaje. Esto constituye una importante diferencia con respecto a C+
+. C++ est pensado para su utilizacin como lenguaje orientado a objetos, pero tambin
es cierto que con C++ se puede escribir cdigo sin haber odo nada de la programacin
orientada a objetos. Esta situacin no se da en Java, dotado desde las primeras etapas de
su diseo de esta filosofa, y donde no cabe obviar la orientacin a objetos para el
desarrollo de programas, por sencillos que stos sean. Al contrario que en C++, en Java
nada se puede hacer sin usar al menos un objeto.
Un Primer Ejemplo
Si nos detenemos a pensar sobre cmo se nos plantea un problema cualquiera en la
realidad podremos ver que lo que hay en la realidad son entidades (otros nombres que
podramos usar para describir lo que aqu llamo entidades son agentes u objetos).
Estas entidades poseen un conjunto de propiedades o atributos, y un conjunto de
mtodos mediante los cuales muestran su comportamiento. Y no slo eso, tambin
podremos descubrir, a poco que nos fijemos, todo un conjunto de interrelaciones entre las
entidades, guiadas por el intercambio de mensajes; las entidades del problema responden
a estos mensajes mediante la ejecucin de ciertas acciones. El siguiente ejemplo, aunque
pueda parecer un poco extrao, creo que aclarar algunos conceptos y nos servir como
introduccin para desarrollarlos con profundidad.
Imaginemos la siguiente situacin: un domingo por la tarde estoy en casa viendo la
televisin, y de repente mi madre siente un fuerte dolor de cabeza; como es natural, lo
primero que hago es tratar de encontrar una caja de aspirinas.
Lo que acabo de describir es una situacin que probablemente no resulte muy extraa a
muchos de nosotros. Vamos a verla en clave de objetos: el objeto hijo ha recibido un
mensaje procedente del objeto madre. El objeto hijo responde al mensaje o evento
ocurrido mediante una accin: buscar aspirinas. La madre no tiene que decirle al hijo
dnde debe buscar, es responsabilidad del hijo resolver el problema como considere ms
oportuno. Al objeto madre le basta con haber emitido un mensaje. Continuemos con la
historia.
10
11
color de cabello es rubio, color de ojos azul, estatura 175 cm., peso 50 Kg., y as
sucesivamente.
A continuacin veremos con ms detalle qu son los objetos, las clases, los mensajes y
otros conceptos bsicos de la programacin orientada a objetos.
Qu es un objeto?
Un objeto no es ms que un conjunto de variables (o datos) y mtodos (o funciones)
relacionados entre s. Los objetos en programacin se usan para modelar objetos o
entidades del mundo real (el objeto hijo, madre, o farmacutica, por ejemplo). Un objeto es,
por tanto, la representacin en un programa de un concepto, y contiene toda la
informacin necesaria para abstraerlo: datos que describen sus atributos y operaciones que
pueden realizarse sobre los mismos. La siguiente figura muestra una representacin visual
de un objeto.
Los atributos del objeto (estado) y lo que el objeto puede hacer (comportamiento) estn
expresados por las variables y los mtodos que componen el objeto respectivamente. Por
ejemplo, un objeto que modelase una bicicleta en el mundo real tendra variables que
indicaran el estado actual de la bicicleta: su velocidad es de 20 km/h, su cadencia de
pedaleo 90 r.p.m. y su marcha actual es la 5. Estas variables se conocen
12
El diagrama del objeto bicicleta muestra las variables objeto en el ncleo o centro
del objeto y los mtodos rodeando el ncleo y protegindolo de otros objetos del
programa. Este hecho de empaquetar o proteger las variables miembro con los
mtodos miembro se denomina encapsulacin. Este dibujo conceptual que
muestra el ncleo de variables miembro del objeto protegido por una membrana
protectora de mtodos o funciones miembro es la representacin ideal de un
objeto y es el ideal que los programadores de objetos suelen buscar. Sin embargo,
debemos matizarlo. A menudo, por razones prcticas, es posible que un objeto
desee exponer alguna de sus variables miembro, o proteger otras de sus propios
mtodos o funciones miembro. Por ejemplo, Java permite establecer 4 niveles de
13
proteccin de las variables y de la funcin miembro para casos como ste. Los
niveles de proteccin determinan qu objetos y clases pueden acceder a qu
variables o a qu mtodos.
De cualquier forma, el hecho de encapsular las variables y las funciones miembro
relacionadas proporciona dos importantes beneficios a los programadores de
aplicaciones:
Capacidad de crear mdulos: El cdigo fuente de un objeto puede
escribirse y mantenerse independiente del cdigo fuente del resto de los
objetos. De esta forma, un objeto puede pasarse fcilmente de una parte a
otra del programa. Podemos dejar nuestra bicicleta a un amigo, y sta
seguir funcionando.
Proteccin de informacin: Un objeto tendr una interfaz pblica
perfectamente definida que otros objetos podrn usar para comunicarse
con l. De esta forma, los objetos pueden mantener informacin privada y
pueden cambiar el modo de operar de sus funciones miembros sin que esto
afecte a otros objetos que usen estas funciones miembro. Es decir, no
necesitamos entender cmo funciona el mecanismo de cambio de marcha
para hacer uso de l.
Qu es un mensaje?
Normalmente un nico objeto por s solo no es muy til. En general, un objeto
aparece como un componente ms de un programa o una aplicacin que contiene
otros muchos objetos. Es precisamente haciendo uso de esta interaccin como los
programadores consiguen una funcionalidad de mayor orden y modelar
comportamientos mucho ms complejos. Una bicicleta (a partir de ahora
particularizaremos) colgada de un gancho en el garaje no es ms que una
estructura de aleacin de titanio y un poco de goma. Por s sola, tu bicicleta (por
poner una bicicleta en concreto) es incapaz de desarrollar ninguna actividad. Tu
14
bicicleta es realmente til en tanto que otro objeto (t) interacta con ella
(pedalea).
Los objetos de un programa interactan y se comunican entre ellos por medio de
mensajes. Cuando un objeto A quiere que otro objeto B ejecute una de sus funciones
miembro (mtodos de B), el objeto A manda un mensaje al objeto
15
Estas tres partes del mensaje (objeto destinatario, mtodo y parmetros) son suficiente
informacin para que el objeto que recibe el mensaje ejecute el mtodo o la funcin
miembro solicitada. Los mensajes proporcionan dos ventajas importantes:
El comportamiento de un objeto est completamente determinado (a
excepcin del acceso directo a variables miembro pblicas) por sus
mtodos, as que los mensajes representan todas las posibles interacciones
que pueden realizarse entre objetos.
Los objetos no necesitan formar parte del mismo proceso, ni siquiera residir
en un mismo ordenador para mandarse mensajes entre ellos (y de esta
forma interactuar).
Qu es una clase?
Normalmente en el mundo real existen varios objetos de un mismo tipo, o como
diremos enseguida, de una misma clase. Por ejemplo, mi bicicleta es una de las
muchas bicicletas que existen en el mundo. Usando la terminologa de la
programacin orientada a objetos, diremos que mi bicicleta es una instancia de la
clase de objetos conocida como bicicletas. Todas las bicicletas tienen algunos
estados o atributos (color, marcha actual, cadencia actual, dos ruedas) y algunos
mtodos (cambiar de marcha, frenar) en comn. Sin embargo, el estado particular
de cada bicicleta es independiente del estado de las dems bicicletas. La
particularizacin de estos atributos puede ser diferente. Es decir, una bicicleta
podr ser azul, y otra roja, pero ambas tienen en comn el hecho de tener una
variable color. De este modo podemos definir una plantilla de variables y
mtodos para todas las bicicletas. Las plantillas para crear objetos son
denominadas clases.
Una clase es una plantilla que define las variables y los mtodos que son
comunes para todos los objetos de un cierto tipo.
16
17
Por el contrario, los objetos son instancias particulares de una clase. Las clases son una
especie de molde de fbrica, en base al cual son construidos los objetos. Durante la
ejecucin de un programa slo existen los objetos, no las clases.
Atributo
Son los datos o variables que caracterizan al objeto y cuyos valores en un momento dado
indican su estado.
Un atributo es una caracterstica de un objeto. Mediante los atributos se define
informacin oculta dentro de un objeto, la cual es manipulada solamente por los mtodos
definidos sobre dicho objeto Un atributo consta de un nombre y un valor. Cada atributo
est asociado a un tipo de dato, que puede ser simple (entero, real, lgico, carcter, string)
o estructurado (arreglo, registro, archivo, lista, etc.)
Su sintaxis algortmica es: <Modo de Acceso> <Tipo de dato> <Nombre del Atributo>;
Los modos de acceso son:
Pblico: Atributos (o Mtodos) que son accesibles fuera de la clase. Pueden ser
llamados por cualquier clase, aun si no est relacionada con ella. Este modo de
acceso tambin se puede representar con el smbolo +
18
Mtodo
Son las operaciones (acciones o funciones) que se aplican sobre los objetos y que
permiten crearlos, cambiar su estado o consultar el valor de sus atributos.
Los mtodos constituyen la secuencia de acciones que implementan las operaciones
sobre los objetos. La implementacin de los mtodos no es visible fuera de objeto.
La sintaxis algortmica de los mtodos expresados como funciones y acciones es:
Para funciones se pueden usar cualquiera de estas dos sintaxis:
<Modo de Acceso> Funcin <Nombre> [(Lista Parmetros)]: <Descripcin del Tipo de
datos>
Para acciones:
<Modo de Acceso> Accin <Nombre> [(Lista Parmetros)] donde los parmetros son
opcionales
Ejemplo: Un rectngulo es un objeto caracterizado por los atributos Largo y Ancho, y por
varios mtodos, entre otros Calcular su rea y Calcular su permetro.
Caractersticas Generales
Cada mtodo tiene un nombre, cero o ms parmetros (por valor o por referencia) que
recibe o devuelve y un algoritmo con el desarrollo del mismo.
19
20
Instancia:
Se llama instancia a todo objeto que derive de algn otro. De esta forma, todos los
objetos son instancias de algn otro, menos la clase Object que es la madre de todas.
Clases: Descripcin de objeto. Consta de una serie de mtodos y datos que resumen
las caractersticas de este objeto. Definir clases permite trabajar con cdigo reutilizable.
Puesto que desde una clase se puede crear una instancia y as reutilizar el cdigo
escrito para este si tener que volver a escribir el cdigo para la instancia. La instancia
toma el patrn de la clase padre. Sin embargo, las variables son independientes.
Herencia
Una vez que hemos visto el concepto de clase y el de objeto, estamos en condiciones
de introducir otra de las caractersticas bsicas de la programacin orientada a
objetos: el uso de la herencia.
El mecanismo de herencia permite definir nuevas clases partiendo de otras ya
existentes. Las clases que derivan de otras heredan automticamente todo su
comportamiento, pero adems pueden introducir caractersticas particulares propias que
las diferencian.
Como hemos visto, los objetos se definen a partir de clases. Con el mero hecho de
conocer a qu clase pertenece un objeto, ya se sabe bastante sobre l. Puede que no
21
sepamos lo que es la Espada, pero si nos dicen que es una bicicleta, ya sabremos que
tiene dos ruedas, manillar, pedales.
La programacin orientada a objetos va ms all, permitindonos definir clases a partir de
otras clases ya construidas. Por ejemplo, las bicicletas de montaa, las de carretera y los
tndems son todos, en definitiva, bicicletas. En trminos de programacin orientada a
objetos, son subclases o clases derivadas de la clase bicicleta. Anlogamente, la clase
bicicleta es la clase base o superclase de las bicicletas de montaa, las de carretera y los
tndems. Esta relacin se muestra en la siguiente figura.
Cada subclase hereda los estados (en forma de declaracin de variables) de la superclase de
la cual deriva. Las bicicletas de montaa, las de carretera y los tndems comparten
22
algunos estados: cadencia, velocidad... Adems, cada subclase hereda los mtodos de su
superclase.
Las bicicletas de montaa, las de carretera y los tndems comparten algunos
comportamientos: frenar y cambiar la cadencia de pedaleo, por ejemplo.
Sin embargo, las clases derivadas no se encuentran limitadas por los estados y
comportamientos que heredan de su superclase. Muy al contrario, estas
subclases pueden aadir variables y mtodos a aquellas que han heredado. Los
tndems tienen dos asientos y dos manillares; algunas bicicletas de montaa
tienen una catalina adicional con un conjunto de marchas con relaciones de
transmisin mucho ms cortas. Las clases derivadas pueden incluso sobrescribir
los mtodos heredados y proporcionar implementaciones ms especializadas para
esos mtodos. Por ejemplo, si nuestra bicicleta de montaa tuviera una catalina
extra, podramos sobrescribir el mtodo CambiarDeMarcha para poder usar esas
nuevas marchas.
Adems, no estamos limitados a un nico nivel de herencia. El rbol de herencias
o jerarqua de clases puede ser tan extenso como necesitemos. Los mtodos y las
variables miembro se heredarn hacia abajo a travs de todos los niveles de la
jerarqua. Normalmente, cuanto ms abajo est una clase en la jerarqua de
clases, ms especializado es su comportamiento. En nuestro ejemplo, podramos
hacer que la clase bicicleta derivase de una superclase de vehculos.
La herencia es una herramienta clave para abordar la resolucin de un problema
de forma organizada, pues permite definir una relacin jerrquica entre todos los
conceptos que se estn manejando. Es posible emplear esta tcnica para
descomponer un problema de cierta magnitud en un conjunto de problemas
subordinados a l. La resolucin del problema original se consigue cuando se han
resuelto cada uno de los problemas subordinados, que a su vez pueden contener
otros. Por consiguiente, la capacidad de descomponer un problema o concepto en
23
24
Fundamento 1: Abstraccin
Es el principio de ignorar aquellos aspectos de un fenmeno observado que no son
relevantes, con el objetivo de concentrarse en aquellos que s lo son. Una
abstraccin denota las caractersticas esenciales de un objeto (datos y
operaciones), que lo distingue de otras clases de objetos. Decidir el conjunto
correcto de abstracciones de un determinado dominio, es el problema central del
diseo orientado a objetos.
Los mecanismos de abstraccin son usados en el EOO para extraer y definir del
medio a modelar, sus caractersticas y su comportamiento. Dentro del EOO son
muy usados mecanismos de abstraccin: la Generalizacin, la Agregacin y la
clasificacin.
La generalizacin es el mecanismo de abstraccin mediante el cual un conjunto de
clases de objetos son agrupadas en una clase de nivel superior (Superclase),
donde las semejanzas de las clases constituyentes (Subclases) son enfatizadas, y
las diferencias entre ellas son ignoradas. En consecuencia, a travs de la
generalizacin, la superclase almacena datos generales de las subclases, y las
subclases almacenan slo datos particulares. La especializacin es lo contrario de
la generalizacin. La clase Mdico es una especializacin de la clase Persona, y a
su vez, la clase Pediatra es una especializacin de la superclase Mdico.
La agregacin es el mecanismo de abstraccin por el cual una clase de objeto es
definida a partir de sus partes (otras clases de objetos). Mediante agregacin se
puede definir por ejemplo un computador, por descomponerse en: la CPU, la ULA,
la memoria y los dispositivos perifricos. El contrario de agregacin es la
descomposicin.
25
26
Fundamento 3: Modularidad
Es la propiedad que permite tener independencia entre las diferentes partes de un
sistema. La modularidad consiste en dividir un programa en mdulos o partes, que
pueden ser compilados separadamente, pero que tienen conexiones con otros
mdulos. En un mismo mdulo se suele colocar clases y objetos que guarden una
estrecha relacin. El sentido de modularidad est muy relacionado con el
ocultamiento de informacin.
Fundamento 4: Herencia
Es el proceso mediante el cual un objeto de una clase adquiere propiedades
definidas en otra clase que lo preceda en una jerarqua de clasificaciones. Permite
la definicin de un nuevo objeto a partir de otros, agregando las diferencias entre
ellos (Programacin Diferencial), evitando repeticin de cdigo y permitiendo la
reusabilidad.
Las clases heredan los datos y mtodos de la superclase. Un mtodo heredado
puede ser sustituido por uno propio si ambos tienen el mismo nombre.
La herencia puede ser simple (cada clase tiene slo una superclase) o mltiple
(cada clase puede tener asociada varias superclases). La clase Docente y la clase
Estudiante heredan las propiedades de la clase Persona (superclase, herencia
simple). La clase Preparador (subclase) hereda propiedades de la clase Docente y
de la clase Estudiante (herencia mltiple).
Fundamento 5: Polimorfismo
27
Es una propiedad del EOO que permite que un mtodo tenga mltiples
implementaciones, que se seleccionan en base al tipo objeto indicado al solicitar la
ejecucin del mtodo.
El polimorfismo operacional o Sobrecarga operacional permite aplicar operaciones
con igual nombre a diferentes clases o estn relacionados en trminos de
inclusin. En este tipo de polimorfismo, los mtodos son interpretados en el
contexto del objeto particular, ya que los mtodos con nombres comunes son
implementados de diferente manera dependiendo de cada clase
28
CONCLUSIONES
29
FUENTES DE INFORMACIN
http://downloads.gvsig.org/download/documents/learning/collaborations/ce_
1104_01/Programacion_personalizacion_SIG_1.pdf
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/clases.ht
m
http://help.adobe.com/es_ES/ActionScript/3.0_ProgrammingAS3/WS5b3ccc
516d4fbf351e63e3d118a9b90204-7f35.html
http://downloads.gvsig.org/download/documents/learning/collaborations/ce_
1104_01/Programacion_personalizacion_SIG_1.pdf
http://www.upv.es/amiga/43.htm
http://www.ciberaula.com/articulo/tecnologia_orientada_objetos/
http://www.desarrolloweb.com/articulos/499.php
http://www.nebrija.es/~abustind/Informatica/MetodologiaII/Introduccion.pdf
http://candyluna.galeon.com/aficiones836769.html
http://elvex.ugr.es/decsai/builder/intro/5.html
30
http://www.cc.uah.es/jlcastillo/POO/POO_06.htm
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/clases.ht
m
http://frameworkphp.wordpress.com/2007/09/19/definicion-deprogramacion-orientada-a-objetos/
31