0% encontró este documento útil (0 votos)
77 vistas17 páginas

Programación Orientada A Objetos

La programación orientada a objetos (POO) es una metodología que organiza programas en torno a objetos, facilitando su escritura, mantenimiento y reutilización. Los conceptos clave incluyen abstracción, encapsulamiento, herencia y polimorfismo, que permiten modelar la realidad y gestionar la complejidad del software. Comparado con C, Java ofrece gestión automática de memoria y un enfoque más estructurado hacia la programación orientada a objetos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
77 vistas17 páginas

Programación Orientada A Objetos

La programación orientada a objetos (POO) es una metodología que organiza programas en torno a objetos, facilitando su escritura, mantenimiento y reutilización. Los conceptos clave incluyen abstracción, encapsulamiento, herencia y polimorfismo, que permiten modelar la realidad y gestionar la complejidad del software. Comparado con C, Java ofrece gestión automática de memoria y un enfoque más estructurado hacia la programación orientada a objetos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

1. PROGRAMACIN ORIENTADA A OBJETOS.

Es una forma especial de programar, ms cercana a como expresaramos las


cosas en la vida real que otros tipos de programacin.
La programacin Orientada a Objetos es una metodologa que basa la estructura
de los programas en torno a los objetos.
Los lenguajes de POO ofrecen medios y herramientas para describir los objetos
manipulados por un programa. Ms que describir cada objeto individualmente, estos
lenguajes proveen una construccin (Clase) que describe a un conjunto de objetos que
poseen las mismas propiedades.
Esta expresa un programa como un conjunto de estos objetos, que colaboran
entre ellos para realizar tareas. Esto permite hacer los programas y mdulos ms
fciles de escribir, mantener y reutilizar.
Ejemplo:

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. Cuando montamos un ordenador ensamblamos los componentes necesarios
para construir el ordenador. Utilizamos una placa base, un disco duro, memoria, etc.
Manejamos estos dispositivos a un nivel funcional. Es decir, abstraemos las funciones
de cada dispositivo para trabajar con ellos. En ningn momento nos paramos a pensar
cmo funcionan internamente o de cuntos condensadores y transistores est
compuesto.
La abstraccin es una herramienta muy potente en programacin, pues reduce
considerablemente el trabajo de implementacin y aumenta la portabilidad del
cdigo. La programacin orientada a objetos aporta elementos para abstraer el
problema en dos sentidos:

Por un lado nos permite referirnos a objetos para representar la realidad,


describiendo el problema en trminos del problema en lugar de en trminos de
la solucin. En un programa de gestin comercial, tendremos el objeto cliente
o el objeto factura, que no son ms que representaciones de otros objetos en el

espacio del problema.


La clave de la programacin orientada a objetos est en abstraer los mtodos y
los datos comunes a un conjunto de objetos y agruparlos en una clase. Gracias
a este nivel de abstraccin, aadir o eliminar un objeto nuevo supondr muy
poco esfuerzo.

Encapsulamiento

La encapsulacin es un mecanismo que consiste en organizar datos y mtodos


de una estructura, conciliando el modo en que el objeto se implementa, es decir,
evitando el acceso a datos por cualquier otro medio distinto a los especificados. Por lo
tanto, la encapsulacin garantiza la integridad de los datos que contiene un objeto.
Formas de encapsular:

Estndar (Predeterminado)
Abierto: Hace que el miembro de la clase pueda ser accedido desde el exterior

de la Clase y cualquier parte del programa.


Protegido: Solo es accesible desde la Clase y las clases que heredan (a

cualquier nivel).
Semi cerrado: Solo es accesible desde la clase heredada.
Cerrado: Solo es accesible desde la Clase.

Entidad
Representan agrupaciones de objetos del mundo real que son relevantes al
sistema de informacin. Una entidad representa una coleccin de objetos (cosas) del
mundo real, los cuales se desean modelar y emplear para almacenar informacin.
Clases
La clase puede definirse como la agrupacin o coleccin de objetos que
comparten una estructura comn y un comportamiento comn.
Consta de atributos y mtodos que resumen las caractersticas y el
comportamiento comunes de un conjunto de objetos. Todo objeto (tambin llamado
instancia de una clase), pertenece a alguna clase. Mientras un objeto es una entidad
concreta que existe en el tiempo y en el espacio, una clase representa solo una
abstraccin.

Son un pilar fundamental de la programacin orientada a objetos. Permiten


abstraer los datos y sus operaciones asociadas al modo de una caja negra.
Su sintaxis algortmica es:
Clase <Nombre de la Clase>

FClase <Nombre de la Clase>;


Objeto

Atributos

Mtodos

Atributos
Son las caractersticas individuales que diferencian un objeto de otro y
determinan su apariencia, estado u otras cualidades. Los atributos se guardan en
variables denominadas de instancia, y cada objeto particular puede tener valores
distintos para estas variables.

Las variables de instancia tambin denominados miembros dato, son


declaradas en la clase pero sus valores son fijados y cambiados en el objeto.
Adems de las variables de instancia hay variables de clase, las cuales se
aplican a la clase y a todas sus instancias. Por ejemplo, el nmero de ruedas de un
automvil es el mismo cuatro, para todos los automviles.
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 +
Privado: Atributos (o Mtodos) que slo son accesibles dentro de la
implementacin de la clase. Tambin se puede representar con el smbolo
Protegido: Atributos (o Mtodos) que son accesibles para la propia clase y
sus clases hijas (subclases). Tambin se puede representar con el smbolo #.
Objeto
Es una entidad (tangible o intangible) que posee caractersticas y acciones que
realiza por s solo o interactuando con otros objetos.
Un objeto es una entidad caracterizada por sus atributos propios y cuyo
comportamiento est determinado por las acciones o funciones que pueden
modificarlo, as como tambin las acciones que requiere de otros objetos. Un objeto
tiene identidad e inteligencia y constituye una unidad que oculta tanto datos como la
descripcin de su manipulacin. Puede ser definido como una encapsulacin y una
abstraccin: una encapsulacin de atributos y servicios, y una abstraccin del mundo
real.

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.
Eventos
Son el medio como interacta una clase con otras o con el propio usuario, se
encargan de avisar que algo ha ocurrido y de manejarlo de una forma o de otra. Cada
vez que escribimos con nuestro teclado, que hacemos click en un botn o un link, que
cambiamos el tamao de un objeto, estamos generando eventos. Es por ello que,
cuando programamos, debemos tener en cuenta la posibilidad (no siempre necesaria,

pero lo ser a medida que generemos clases cada vez ms complejas), tanto de
manejar eventos que slo implican a nuestra clase como de generar nuestros propios
eventos, de modo que los usuarios de nuestras clases puedan decidir cmo
reaccionar su cdigo ante ellos.
El modo de manejar los eventos en P.O.O. se conoce como emisor/receptor,
tambin llamado despachador/escuchador o simplemente dispatcher/listener.
Instancias
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.
Mensaje
Es la peticin de un objeto a otro para solicitar la ejecucin de alguno de sus
mtodos o para obtener el valor de un atributo pblico.
Estructuralmente, un mensaje consta de 3 partes:

Identidad del receptor: Nombre del objeto que contiene el mtodo a

ejecutar.
Nombre del mtodo a ejecutar: Solo los mtodos declarados pblicos.
Lista de Parmetros que recibe el mtodo (cero o mas parmetros)

Su sintaxis algortmica es: <Variable_Objeto>.<Nombre_Mtodo> ( [<Lista de


Parmetros> ] );
Cuando el objeto receptor recibe el mensaje, comienza la ejecucin del algoritmo
contenido dentro del mtodo invocado, recibiendo y/o devolviendo los valores de los
parmetros correspondientes, si los tiene ya que son opcionales: ( [ ] ).

Reutilizacin
Capacidad de usar un mismo cdigo para varias implementaciones o
necesidades (desarrollos).
Modularidad
Proceso de crear partes de un todo que se integran perfectamente entre s para
que funcionen por un objetivo general, y a las cuales se les pueden agregar ms
componentes que se acoplen perfectamente al todo, o extraerle componentes sin
afectar su funcionamiento. En el caso que se requiera actualizar un mdulo, no hay
necesidad de hacer cambios en otras partes del todo. Un ejemplo clsico es un
conjunto de mdulos que, al integrarlos conforman un armario, el cual puede
agregarle ms funcionalidad si se le agregan ms mdulos, o al contrario. Tambin se
puede cambiar su finalidad si se acomodan esos mdulos para darle otro objetivo:
volverlo una mesa.
Esto ayuda a la descomposicin de problemas en subproblemas, es decir, a la
solucin de problemas por composicin de soluciones a subproblemas.
Constructor
El objetivo de un constructor es el de inicializar un objeto cuando ste es
creado. Asignaremos los valores iniciales as como los procesos que sta clase deba
realizar.
Se utiliza para crear tablas de mtodos virtuales y poder as desarrollar el
polimorfismo, una de las herramientas de la programacin orientada a objetos (POO).
Al utilizar un constructor, el compilador determina cul de los objetos va a responder

al mensaje (virtual) que hemos creado. Tiene un tipo de acceso, un nombre y un


parntesis.
En java es un mtodo especial dentro de una clase, que se llama
automticamente cada vez que se crea un objeto de esa clase.
Posee el mismo nombre de la clase a la cual pertenece y no puede regresar
ningn valor (ni siquiera se puede especificar la palabra reservada void). Por ejemplo
si aadiramos a la clase Suma un constructor, tendramos que llamarlo tambin
Suma. Cuando en una clase no se escribe propiamente un constructor, java asume uno
por defecto (que es el Constructor vaco, es decir sin parmetros).
Estado
El estado de un objeto es la apariencia que el objeto presenta al usuario, y
depende del valor que tenga sus propiedades. Un cambio de estado se logra alterando
al menos una de las propiedades del objeto.
Clases abstractas
Este Tipo de Clases nos permiten crear mtodo generales, que recrean un
comportamiento comn, pero sin especificar cmo lo hacen. A nivel de cdigo tienen
por particularidad que algunos de sus mtodos no tienen cuerpo de declaracin,
qu quiere decir esto? no tienen las llaves { } ni cdigo dentro de ellos y deben estar
precedidos por la palabra clave abstract. Si una clases contiene uno o ms mtodos
abstractos est clase debe ser abstracta. Estas clases como son generalidades no
pueden ser instanciadas por ningn objeto (se dice que su nivel de abstraccin es
demasiado alto), entonces su nico fin es ser heredado/extendido por otras clases.

Ejemplo

Ocultamiento de informacin
Es la propiedad del EOO (Enfoque orientado a objetos) que permite ocultar al
mundo exterior la representacin interna del objeto. Esto quiere decir que el objeto
puede ser utilizado, pero los datos esenciales del mismo no son conocidos fuera de l.
Modificadores de acceso
Los modificadores de acceso permiten al diseador de una clase determinar
quin accede a los datos y mtodos miembros de una clase.
Los modificadores de acceso preceden a la declaracin de un elemento de la
clase (ya sea dato o mtodo), de la siguiente forma:
[Modificadores]

tipo_variable nombre;

[Modificadores]

tipo_devuelto nombre_Metodo ( lista_Argumentos );

Existen los siguientes modificadores de acceso:

public - Todo el mundo puede acceder al elemento. Si es un dato miembro,


todo el mundo puede ver el elemento, es decir, usarlo y asignarlo. Si es un

mtodo todo el mundo puede invocarlo.


private - Slo se puede acceder al elemento desde mtodos de la clase, o slo

puede invocarse el mtodo desde otro mtodo de la clase.


protected - Se explicar en el captulo dedicado a la herencia.
sin modificador - Se puede acceder al elemento desde cualquier clase del
package donde se define la clase.

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).
Polimorfismo
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.
Por ejemplo, el rea de un cuadrado, rectngulo y crculo, son calculados de
manera distinta; sin embargo, en sus clases respectivas puede existir la
implementacin del rea bajo el nombre comn rea. En la prctica y dependiendo
del objeto que llame al mtodo, se usar el cdigo correspondiente.
Ejemplos, Superclase: Clase Animal Subclases: Clases Mamfero, Ave, Pez
Se puede definir un mtodo Comer en cada subclase, cuya implementacin
cambia de acuerdo a la clase invocada, sin embargo el nombre del mtodo es el
mismo.
Mamifero.Comer Ave.Comer Pez.Comer

Otro ejemplo de polimorfismo es el operador +. Este operador tiene dos


funciones diferentes de acuerdo al tipo de dato de los operandos a los que se aplica. Si
los dos elementos son numricos, el operador + significa suma algebraica de los
mismos, en cambio s por lo menos uno de los operandos es un String o Carcter, el
operador es la concatenacin de cadenas de caracteres.
Otro ejemplo de sobrecarga es cuando tenemos un mtodo definido
originalmente en la clase madre, que ha sido adaptado o modificado en la clase hija.
Por ejemplo, un mtodo Comer para la clase Animal y otro Comer que ha sido
adaptado para la clase Ave, quien est heredando de la clase Animal.
Cuando se desea indicar que se est invocando (o llamando) a un mtodo
sobrecargado y que pertenece a otra clase (por ejemplo, a la clase padre) lo indicamos
con la siguiente sintaxis:
Clase_Madre: nombre_mtodo;
Para el ejemplo, la llamada en la clase hija Ave del mtodo sobrecargado Comer de la
clase madre Animal sera:
Animal: Comer

2. C vs Java
C, C++

Java

Liberacin de memoria a cargo del

La liberacin de memoria es automtica;


los

programador.

objetos

creados

son

destruidos

automticamente cuando se quedan sin


referencia.

Se

pueden

escribir

programas

orientados a objetos, no orientados a


objetos, o mezcla de ambos (por
ejemplo, tener clases con funciones

globales en el mismo programa)


El programador tiene control del
procesador

Existen punteros con una aritmtica bien

Es puramente orientado a objetos; cualquier


funcin debe pertenecer a alguna clase.
Existe la funcin main, pero es un mtodo
esttico de una clase.
El programa se ejecuta sobre un procesador
virtual que abstrae al programador de la
plataforma concreta.
No existe el concepto de puntero; los
objetos son accedidos mediante referencias.

definida.

Lentitud

Rapidez.

frente

un

programa

equivalente en C o C++.

No

existe

el

concepto

de
Existe el concepto de interfaz

interfaces

como conjunto de especificaciones de


mtodos y de atributos constantes.

Los objetos no tienen ningn

Todos

ancestro en comn

automticamente de la clase Object.

los

objetos

heredan

3. PROGRAMACIN PROCEDIMENTAL
Un programa procedimental (escrito en BASIC, FORTRAN, PASCAL, COBOL,
C, etc.), se caracteriza porque las instrucciones que lo componen se ejecutan
secuencialmente, en un orden preestablecido, que solo depende de los valores de los
datos a los que se aplica y que se puede deducir de estos, inspeccionando el
programa.
En este paradigma de programacin, la atencin se centra en el procesamiento, es
decir, en las acciones necesarias para resolver un determinado problema.
Los lenguajes soportan este paradigma mediante la definicin de subprogramas
(procedimientos y funciones) para la realizacin de dichas acciones, y el suministro
de utilidades para el intercambio de informacin entre subprogramas (paso por valor,
paso por referencia).
Convencionalmente, la programacin de computadores ha sido una tarea en la que
se prescinda de todo tipo de metodologa, es decir, no se segua ninguna tcnica de
diseo. Entre las numerosas desventajas de esta programacin convencional podemos
destacar:

Rigidez e inflexibilidad de los programas.


Prdida excesiva de tiempo en la correccin de errores.
Documentacin deficiente e insuficiente, incluso nula.
Imposibilidad de reutilizar el programa o fragmentos suyos en proyectos
futuros.

Basada en la tcnica de resolucin de problemas de "Divide y Vencers", aparece


una de las metodologas ms empleadas en programacin:
"Diseo Descendente".

Con esta metodologa, en cada paso del diseo, el problema se divide en


unidades ms pequeas que posteriormente pueden ser especificadas en ms detalle.
Los lenguajes soportan esta metodologa de diseo mediante la abstraccin
procedimental proporcionada por los subprogramas. Dicha abstraccin se basa en el
conocimiento del problema que resuelve un determinado subprograma, ignorando la
forma de resolverlo.
Dentro de la programacin procedimental, nos encontramos con la
programacin estructurada o programacin sin GOTO, que presenta mejoras como
son la facilidad de mantenimiento de los programas, gracias a la modularidad que se
realiza en el diseo y posterior desarrollo de los programas. Cabe considerar a los
lenguajes estructurados como PASCAL o C como una mejora aconsejable frente a los
no estructurados como BASIC, FORTRAN o COBOL
(FORTRAN 77 se considera un lenguaje estructurado)

4. POO vs Programacin procedimental


POO

Programacin procedimental

Encapsula datos (atributos) y mtodos


(comportamientos) en objetos que estn
relacionados entre s.
Su unidad es la clase.
Resuelve el problema identificando los
actores que tienen participacin en dicho
problema e identificando sus acciones.
Es ms moderna
Los procedimientos estn separados y
sin relacin.
No es tan rpido en encontrar fallas

Esta orientados a acciones


Su unidad es la funcin.
Pretende resolver un problema de
principio a fin en una sola estructura
de cdigo.
Los programas son ms fciles de
entender
La estructura del programa es ms
clara puestos que las instrucciones
estn ms relacionadas.
El seguimiento de los fallos o errores
del programa se facilita debido a su
estructura ms sencilla.

También podría gustarte