Vous êtes sur la page 1sur 47

Ing. S.

Roxana Justiniano Siles

CONCEPTOS
Introduccin
Un concepto muy importante introducido por la
programacin estructurada es la abstraccin. La
abstraccin se puede definir como la capacidad de
examinar algo sin preocuparse de los detalles
internos.
En un programa estructurado es suficiente
conocer que un procedimiento dado realiza una
tarea especfica. El cmo se realiza la tarea no
es importante; mientras el procedimiento sea
fiable se puede utilizar sin tener que conocer
cmo funciona su interior. Esto se conoce como
abstraccin funcional.

Una debilidad de la programacin estructurada


aparece cuando programadores diferentes
trabajan en una aplicacin como un equipo.
Dado que programadores diferentes manipulan
funciones separadas que pueden referirse a tipos de
datos mutuamente compartidos, los cambios de
un programador se deben reflejar en el trabajo del
resto del equipo. Otro problema de la programacin
estructurada es que raramente es posible anticipar
el diseo de un sistema completo antes de que se
implemente realmente.

En esencia, un defecto de la programacin


estructurada, como se acaba de ver, consiste
en la separacin conceptual de datos y cdigo.
Este defecto se agrava a medida que el tamao
Del programa crece.

Abstraccin de datos
La abstraccin de datos permite no preocuparse
de los detalles no esenciales. Existe en casi
todos los lenguajes de programacin. Las
estructuras de datos y los tipos de datos son un
ejemplo de abstraccin. Los procedimientos y
funciones son otro ejemplo. Slo recientemente
han emergido lenguajes que soportan sus
propios tipos abstractos de datos (TAD), como
Pascal, Ada, Modula-2 ,C++, etc...

Qu es la programacin orientada a
objetos?
Se puede definir POO como una tcnica o estilo
de programacin que utiliza objetos como bloque
esencial de construccin.
Los objetos son en realidad como los tipos
abstractos de datos. Un TAD es un tipo definido por
el programador junto con un conjunto de
operaciones que se pueden realizar sobre ellos. Se
denominan abstractos para diferenciarlos de los
tipos de datos fundamentales o bsicos.

Al igual que los tipos de datos definidos por el


usuario, un objeto es una coleccin de datos, junto
con las funciones asociadas, utilizadas para operar
sobre esos datos. Sin embargo la potencia real de los
objetos reside en las propiedades que soportan:
herencia, encapsulacin y polimorfismo, junto con
los conceptos bsicos de objetos, clases, mtodos y
mensajes.

Trabajando con objetos


En programacin convencional los programas se
dividen en dos componentes: procedimientos y
datos. Este mtodo permite empaquetar cdigo
de programa en procedimientos, pero Qu
sucede con los datos? Las estructuras de datos
utilizadas en programacin son globales o se
pasan como parmetros. En esencia los datos se
tratan separadamente de los procedimientos.
En POO un programa se divide en componentes
que contienen procedimientos y datos. Cada
componente
se
considera
un
objeto.

Un objeto es una unidad que contiene datos y


las funciones que operan sobre esos datos. A
los elementos de un objeto se les conoce como
miembros; las funciones que operan sobre los
datos se denominan mtodos y los datos se
denominan miembros, atributos o datos. En
Java un programa consta de objetos. Los
objetos de un programa se comunican entre s
mediante el paso o envo de mensajes
(acciones que debe ejecutar el objeto).
En POO los objetos pueden ser cualquier
entidad del mundo real:

- Objetos fsicos
* automviles en una simulacin de
trfico
* aviones en un sistema de control de
trfico areo
* animales mamferos, etc
- Elementos de interfaces grficos de usuarios
* ventanas
* iconos
* mens
* ratones

- Estructuras de datos
* arrays
* pilas
* rboles binarios
- Tipos de datos definidos por el usuario
* nmeros complejos
* hora del da

Definicin de objetos
Un objeto es una unidad que contiene datos
y las funciones que operan sobre esos
datos. Los datos se denominan miembros
dato y las funciones mtodos o funciones
miembro.
Los datos y las funciones se encapsulan en
una nica entidad. Los datos estn ocultos
y slo mediante las funciones miembro es
posible acceder a ellos

Clases
Una clase es un tipo definido por el usuario que
determina las estructuras de datos y las operaciones
asociadas con ese tipo. Cada vez que se construye un
objeto de una clase, se crea una instancia de esa
clase. En general, los trminos objetos e instancias de
una clase se pueden utilizar indistintamente.
Una clase es una coleccin de objetos similares y un
objeto es una instancia de una definicin de una clase.
La comunicacin con el objeto se realiza a travs del
paso de mensajes. El envo a una instancia de una
clase produce la ejecucin de un mtodo o funcin
miembro. El paso de mensajes es el trmino utilizado
para referirnos a la invocacin o llamada de una
funcin miembro de un objeto.

Mensajes: activacin de objetos


Los objetos pueden ser activados mediante la
recepcin de mensajes o mtodos. Un
mtodo es simplemente una peticin para
que un objeto se comporte de una
determinada manera, ejecutando una de sus
funciones miembro. La tcnica de enviar
mensajes se conoce como paso de mensajes.

Estructuralmente un mensaje consta de tres


partes:
- la identidad del objeto receptor
- la funcin miembro del receptor cuya
ejecucin se ha solicitado
- cualquier otra informacin adicional que el
receptor pueda necesitar para ejecutar el
mtodo requerido.
La notacin utilizada es
nombre_del_objeto.funcin_miembro

Ejemplo: Se tiene un objeto o1 con los


siguientes miembros dato: nombre_alumno y
curso y con las funciones miembro:
leer_nombre e imprimir. Si el objeto o1
recibe el mensaje imprimir, esto se expresa:
o1.imprimir()
La sentencia anterior se lee: "enviar mensaje
imprimir al objeto o1". El objeto o1 reacciona
al mensaje ejecutando la funcin miembro de
igual nombre que el mensaje.

El mensaje puede llevar parmetros:


o1.leer_nombre("Pedro Prez")
Sin los mensajes los objetos que se definan no
podrn comunicarse con otros objetos. Desde
un punto de vista convencional, el paso de
mensajes no es ms que el sinnimo de
llamada a una funcin.

Programa orientado a objetos


Un programa orientado a objetos es una coleccin
de clases. Necesitar una funcin principal que
cree objetos y comience la ejecucin mediante
la invocacin de sus funciones miembro.
Esta organizacin conduce a separar partes
diferentes de una aplicacin en distintos
archivos. La idea consiste en poner la descripcin
de la clase para cada una de ellas en un archivo
separado. La funcin principal tambin se pone
en un archivo independiente. El compilador
ensamblar el programa completo a partir de los
archivos independientes en una nica unidad.

En realidad, cuando se ejecuta un programa


orientado a objetos, ocurren tres acciones:
1. Se crean los objetos cuando se necesitan
2. Los mensajes se envan desde uno objetos
y
se
reciben
en
otros
3. Se borran los objetos cuando ya no son
necesarios y se recupera la memoria ocupada
por ellos

Herencia
La herencia es la propiedad que permite a los
objetos construirse a partir de otros
objetos.
Una clase se puede dividir en subclases. La
clase original se denomina clase base; las
clases que se definen a partir de la clase
base, compartiendo sus caractersticas y
aadiendo otras nuevas, se denominan
clases
derivadas.
Las clases derivadas pueden heredar cdigo
y datos de su clase base aadiendo su propio
cdigo
y
datos
a
la
misma.

La
herencia
impone
una
relacin
jerrquica entre clases en la cual una
clase hija hereda de su clase padre. Si
una
clase
slo
puede
recibir
caractersticas de otra clase base, la
herencia se denomina herencia simple.
Si una clase recibe propiedades de ms
de una clase base, la herencia se
denomina herencia mltiple.

Polimorfismo
En un sentido literal, significa la cualidad de
tener ms de una forma. En el contexto de
POO, el polimorfismo se refiere al hecho
de que una misma operacin puede tener
diferente comportamiento en diferentes
objetos. Por ejemplo, consideremos la
operacin sumar. El operador + realiza la
suma de dos nmeros de diferente tipo.
Adems se puede definir la operacin de
sumar dos cadenas mediante el operador
suma.

Las clases son uno de los principales


componentes de un lenguaje de programacin,
pues en ellas ocurren todos los procesos lgicos
requeridos para un sistema, en si podemos
definirlas como estructuras que representan
objetos del mundo real, tomando como objetos
a personas, lugares o cosas, en general las
clases poseen propiedades, comportamientos y
relaciones con otras clases del sistema. (Ver
Ejemplo...)

Una clase se compone por tres partes


fundamentales:
Nombre : Contiene el Nombre de la Clase.
Atributos : Representan las propiedades que
caracterizan la clase.
Mtodos : Representan el comportamiento u
operaciones, la forma como interacta la clase
con su entorno.

Los objetos representan una entidad concreta o


abstracta del mundo real, en programacin
bsicamente se le conoce como la instancia de
una clase en si es lo que da el sentido a estas.
Al igual que las clases se componen de tres
partes fundamentales:
Estado: Representa los atributos o
caractersticas con valores concretos del objeto.
Comportamiento : Se define por los mtodos u
operaciones que se pueden realizar con el.
Identidad : Es la propiedad nica que
representa al objeto y lo diferencia del resto.

En la imagen, los moldes representan las clases,


mientras que las galletas obtenidas de estos moldes
representan los objetos instancias de estas clases,
por ejemplo atributos del objeto galleta podra ser
sabor, color, tamao etc......

En java se representa creando una instancia de


la clase por medio de la palabra new al hacer
eso creamos el objeto de la clase y podemos
hacer uso de los mtodos o atributos de esta
(dependiendo de la visibilidad de los mismos )
por medio de un punto (.) as:

La herencia en javarepresentalo que


conocemos de herencia en el mundo real,
bsicamente mediante esta obtenemos las
caractersticas o rasgos comunes de nuestros
padres o abuelos, en java es el mismo enfoque
permitiendo la creacin de nuevas clases
basadas en clases ya existentes, con las cuales
podemos obtener las caractersticas de las
clases padres, heredando campos, atributos,
mtodos o funcionalidades.

En Java solo se puede heredar de una sola clase


padre y se representa mediante la palabra
extends (Ver Ejemplo...)


Este concepto es uno de los mas importantes
en trminos de seguridad dentro de nuestra
aplicacin, la encapsulacin es la forma de
proteger nuestros datos dentro del sistema,
estableciendo bsicamente los permisos o
niveles de visibilidad o acceso de nuestros
datos

Pblico: Se puede acceder a todos los


atributos o mtodos de la clase.
Protegido: Se puede acceder a los atributos o
mtodos solo en la misma jerarqua de
herencia.
Privado: Solo se puede acceder a los atributos
o mtodos de la clase en la que se encuentran.

Con la Encapsulacin mantenemos nuestros


datos seguros, ya que podemos evitar que por
ejemplo se hagan modificaciones al estado o
comportamiento de un objeto desde una clase
externa, una buena practica es trabajar
conmtodossetter y getter que permiten
manipular nuestros datos de forma segura.

La abstraccin permite resaltar la parte mas representativa


de algo, ignorando detalles para centrarse en lo principal.
La imagen es muy fcil de identificar, con base a ella
podemos crear una clase persona, o la
clase hombre, humano entre otras, pero obviamente
vemos que la imagen no tiene elementos como ojos, nariz,
boca, rostro en general, ni dedos, pies, manos o
cuello....... pero entonces porque decimos que es una
persona?.........Precisamente aqu estamos aplicando el
concepto de abstraccin, ya que nos fijamos en lo mas
representativo de algo, en este caso vemos que se tiene
una cabeza, tronco, brazos y pies, con esto es suficiente
para saber que es una persona sin fijarnos en los detalles
mencionados anteriormente.

Las clases abstractas permiten crear mtodos generales


con un comportamiento comn para otras clases concretas
sin importar sus caractersticas ni el comportamiento que
usen
para
dichos
mtodos.
La Abstraccin en java solo tiene lgica mediante la
Herencia, ya que una clase abstracta posee al menos un
mtodo abstracto el cual no tiene implementacin, el
comportamiento de estos mtodos lo definen las clases
concretas
que
lo
hereden.
Podemos usarlos cuando existan varias clases con
caractersticas o acciones comunes pero con diferentes
comportamientos..............mediante el uso de la
herencia y componentes abstractos hacemos mas ptima y
organizada nuestra aplicacin. (hay que tener en cuenta
que a diferencia de las clases concretas, las clases
abstractas no se pueden instanciar).
(Ver Ejemplo...)

Las interfaces son el mecanismo que utiliza Java para


simular la herencia mltiple, como mencionamos en Java
solo se puede extender de una sola clase, mediante el uso de
interfaces esto se puede simular ya que el lenguaje permite
implementar el numero de interfaces que necesitemos,
bsicamente son clases completamente abstractas, es comn
relacionarlas con un contrato en el que se define que se
debe hacer, as cada clase concreta que implemente una
interfaz esta obligada a implementar todos los mtodos que
la
compongan.
Las interfaces definen lo que la clase que la implemente
deber hacer, mas no la forma como lo har.

Al decir que las interfaces son clases completamente


abstractas significa que todos sus mtodos lo son y por
ende no poseen implementacin, no requieren el uso
de la palabra reservada abstract, ya que al ser
completamente abstracta todo dentro de ella lo es, al
igual que las clases abstractas la implementacin de
losmtodosdepende de las clases concretas que las
usen.
Se debe tener en cuenta que toda variable definida en
una interfazautomticamentese convierte en una
constante, adems tampoco se puede instanciar una
interfaz.....
(Ver Ejemplo...)

En java se representan con la palabra interface y


se usan con la palabra implements as:

Este tal vez sea uno de los conceptos de la


programacin orientada a objetos mas usados
pero muchas veces sin saber que se aplica ya
que el concepto inicialmente puede ser un poco
confuso, bsicamente mediante el polimorfismo
programamos de forma general en lugar de
hacerlo de forma especifica, se usa cuando se
trabajen con la herencia y objetos de
caractersticas comunes los cuales comparten la
misma superClase y rbol jerrquico, al trabajar
con este concepto optimizamos y simplificamos
en gran medida nuestro trabajo.

Bsicamente podemos definirlo como la


capacidad que tienen los objetos de
comportarse de mltiples formas sin olvidar
que para esto se requiere de la herencia, en si
consiste en hacer referencia a objetos de una
clase que puedan tomar comportamientos de
objetos descendientes de esta.


Con el polimorfismo usamos la generalizacin
olvidando los detalles concretos de los objetos para
centrarnos en un punto en comn mediante una clase
padre.
Tomando como ejemplo la imagen anterior, podemos
decir que un objeto de la clase FiguraGeometrica
puede usarse para referirse a cualquier objeto de
cualquier subClase de FiguraGeometrica..............
en otras palabras una figura geomtrica puede ser un
cuadro, un tringulo, un cuadrado o cualquier figura
que en trminos generales sea geomtrica......
(Ejemplo1) (Ejemplo2)

Como vemos en el ejemplo la clase


FiguraGeometrica
puede convertirse en
cualquier figura que se encuentra en su
jerarqua de Herencia pudiendo utilizar las
propiedades que compartan entre ellas, hay
que tener presente que solo se permite
elpolimorfismode clases padre a clases hija
mas no al contrario

En Java existe la sobrecarga y la sobreescritura,


y de ellas solo la sobrecarga es de herencia.
El polimorfismo en POO se refiere a la capacidad
de nombrar a varios atributo mtodos o
funciones de la misma forma y aun as poder
diferenciarlos, ya sea por los parmetros, o la
clase a donde pertenece. Para ponerlo fcil es la
forma de englobar los comportamientos y
atributos que pueden ser comunes, y aun as
poder usar sus diferentes "variantes" del mismo,
de ah lo de polimorfismo (varias formas)

Vous aimerez peut-être aussi