Introduccion A La Orientación A Objetos PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

Facultad de Ciencias e Ingeniería

Departamento de Computación
Carrera de Ingeniería en Sistemas de Información
2022

Introducción a la Programación
Orientada a Objetos

Elaborado por:
Marlen Guissell Alemán Bonilla
Lawdee N. Narváez Bello
Santiago R. Ríos Baca
Introducción a la programación orientada a objetos

El mundo de la programación en los últimos años ha venido tomando un gran auge, hoy el crear
programas para computadoras que ayuden a tareas cotidianas se ha convertido de suma necesidad. La
programación abre las puertas a un mundo de oportunidades donde un programador no necesariamente
tiene que ser un ingeniero en computación o sistemas. Puede ser alguien con solo el deseo y el entusiasmo
grande de querer programar.

Desde el surgimiento de los primeros lenguajes de programación por los años 50’ hasta la fecha, son
muchos los lenguajes de programación que han evolucionado, así como también el surgimiento de otros
nuevos. Cada uno de ellos orientado hacia un fin específico.

Hoy en día se tienen lenguajes de programación para crear aplicaciones móviles, para interactuar en la
Web, para el desarrollo de aplicaciones en entorno de escritorio, entre otros.

De la misma forma que han evolucionado los lenguajes de programación, también han evolucionado las
metodologías y paradigmas de programación, considerándose paradigma de programación como: “una
colección de patrones conceptuales que moldean la forma de razonar sobre problemas, de formular
soluciones y de estructurar programas” (Rodríguez Sala et al., 2003).

La Programación Orientada a Objetos es considerado como un paradigma donde la forma de manejar la


información y funcionalidad de un Programa se basa en cuatro conceptos, presentes para todo programa.
Estos son:

• Clase: se trata de un tipo de datos con determinadas propiedades y funcionalidades.

• Objeto: Se trata de representación de una entidad de una clase con un determinado estado, con
la capacidad de interactuar con otros objetos.

• Mensajes: la representación de un mecanismo de comunicación que se establece entre los objetos


que componen el programa.

• Métodos: Representación de las acciones o tareas que deben de ser realizadas por el objeto.

La programación orientada a objetos (POO) es un modelo o paradigma de programación que utiliza


objetos, ligados mediante mensajes, para la solución de problemas. Se define como un paradigma de la
programación, donde el código está organizado en unidades o modularidades a las se les llaman clases,
y a partir de estas clases, se crean objetos que se relacionan para conseguir el resultado deseado.
Este paradigma es una forma especial de programar, que trata de asemejar las cosas que expresamos en
la vida real.

La Programación Orientada a Objetos es uno de los paradigmas que más ha prevalecido en los últimos
años en el desarrollo de software, aplicaciones Web y aplicaciones para móvil.

Desarrollo de software orientado a objetos

La demanda de software con mejores resultados es cada vez más creciente, la creación de software en el
menor tiempo posible con la funcionalidad correcta y bajo costo, se convierte en un objetivo difícil de
lograr. Las clases que sirven de base para la creación de los objetos que se representan en un software
son considerado como componentes de software reutilizables.

En el ámbito del desarrollo orientado a objetos Deitel & Deitel (2016), señalan que casi cualquier tipo
de sustantivo puede ser representado de forma razonable como un objeto de software en términos de sus
atributos y comportamientos.

En general los grupos desarrolladores de software hacen uso de una metodología de diseño e
implementación orientada a objetos que reemplazan técnicas antiguas, como por ejemplo el análisis y
diseño estructurado.

Aquellos programas que se han desarrollo bajo el enfoque orientado a objetos presentan la característica
de ser fáciles de comprender, corregir y de modificar.

Un aporte fundamental que introdujo el desarrollo orientado a objetos es poder hacer reutilización de
componentes (clases), lo que permite la creación de objetos las veces que sea requerido, al hacer uso de
clases existentes para generar clases nuevas permitiendo ahorra tiempo y esfuerzo.

Por tanto, la reutilización puede también ayudar a crear sistemas confiables y efectivos, puesto que los
componentes han pasado por un extenso proceso de prueba, depuración y optimización del desempeño.

La programación orientada a objetos proporciona la facilidad de desarrollar programas largos.


Anteriormente este tipo de programas largos eran desarrollados por medio de la conocida Programación
Procedural, donde los programas eran descompuestos en partes pequeñas o en tareas para encontrar la
solución al problema. En cambio, en la programación orientada a objetos antes de pensar en las tareas a
realizar, se debe pensar en que debe representar el programa, para ello se determinan, que elementos de
la realidad se requiere que el programa modele.
En la programación orientada a objetos los programas se encuentran organizados como colecciones de
objetos donde cooperan para proporcionar una solución a un problema.

Esencialmente los programas orientados a objetos destacan por cuatro características fundamentales:

• Abstraer
• Encapsular
• Jerarquizar
• Polimorfismo

Abstraer
Las personas cuando tratamos de estudiar por lo general lo hacemos a través de ideas generales de un
modelo que lo simplifique, pasando por alto los detalles.

En la orientación objetos la abstracción surge de reconocer las similitudes entre objetos del mundo real,
concentrándose en tales similitudes e ignorando las diferencias. De esta forma, una abstracción se
focaliza sobre una posible vista ayudando a separar el comportamiento esencial del objeto de su
implementación.

Un lenguaje de programación orientado a objeto debe facilitar la característica de abstracción a través de


las definiciones de interfaces comunes para comunicarse con clases de objetos. Normalmente un objeto
puede tener varias interfaces.

Encapsular

Cuando se habla de encapsular, se entiende como la capacidad que permite mantener oculta la
implementación de una abstracción para usuarios de la misma. Con la encapsulación lo que se pretende
es ocultar la implementación con el fin que ninguna otra parte de un programa complejo dependa de
cómo se ha implementado otra parte.

En términos prácticos la abstracción y encapsulación son complementarias; la abstracción se centra en el


comportamiento observable, la encapsulación se centra en cómo se construye dicho comportamiento. Por
tanto, puede afirmarse que la abstracción define la interfaz, mientras la encapsulación se encarga de los
detalles de la implementación.
Entre ventajas de la encapsulación se puede mencionar el hecho que facilita que, al realizar un cambio
en el funcionamiento interno de una abstracción, los clientes de la misma no lo perciban.

Jerarquizar (Herencia)

Se entiende como jerarquizar a la capacidad que permite ordenar abstracciones. Dado que un conjunto
de abstracciones que pueden encontrarse al elaborar un programa bajo la orientación a objeto, con
frecuencia puede formarse jerarquías, lo que puede simplificar la comprensión del problema.

La ventaja que se tiene con la jerarquización es que se pueden detectar estructuras y comportamientos
comunes y con ello simplificar el desarrollo.

Generalmente la jerarquización en la programación orientada a objetos, definen relaciones de herencia,


donde se cumple que los elementos de los que se hereda son más generales y los elementos que heredan
se encuentran más especializados.

Este ejemplo lo podemos apreciar a través de las figuras geométricas, donde podemos tener una jerarquía
de objetos de figuras geométricas. Para ello consideremos el hecho de una clase que englobe todo, la que
se denominaría “Figura”, a partir de figura se podrían derivar los diferentes tipos de figuras geométricas,
siendo una de ellas las figuras “Rectángulo”, pero además tendríamos una clase “Cuadrilátero”,
“Circulo”, etc. los objetos de la clase Rectángulo, Cuadrilátero y Circulo, compartirán el comportamiento
definidos en la clase Figura, pero también estos objetos de las clases señaladas agregaran ciertas
características y comportamientos nuevos.

Polimorfismo

El polimorfismo en conjunto con la herencia, son considerados dos de los elementos esenciales para la
reusabilidad de componentes en un programa orientado a objetos.

E l polimorfismo brinda la facilidad de tener una variable de una clase superior en una jerarquización y
luego a partir de ella designar objetos de clases diferentes pertenecientes si, a la misma jerarquía de
clases. Por ello la afirmación anterior en cuanto a la reutilización de código.
Mecanismos de la programación orientada a objetos

Un programa orientado a objetos se encuentra compuesta por objetos y la interacción entre esos objetos
a fin de responder a las distintas tareas que debe realizar el programa. Para que este proceso se lleve a
cabo se requiere de cuatro mecanismos, requeridos en todo programa que se desarrolle bajo este enfoque.

Estos mecanismos se encuentran en correspondencia a la vez con las cuatro características de la


programación orientada a objetos.

Mecanismos que componen un programa orientado a objetos:

▪ Clases
▪ Objetos
▪ Mensajes
▪ Métodos

Clase

Según Rumbaugh (2007), una clase representa un concepto discreto dentro de la aplicación que se está
modelando, que representa un elemento de un tipo particular.

▪ Una cosa física (como un avión).


▪ Un elemento de negocio (como una solicitud)
▪ Un elemento lógico (como la programación de la retransmisión de un evento)
▪ Un elemento de una aplicación (como el botón de cancelar).
▪ Un elemento de computación (como una tabla indexada) o un elemento de comportamiento (como
una tarea)
“Una clase es una descripción de todos los objetos que define” Dean & Dean (2009).

Las clases proporcionan los atributos y acciones que deben de realizar el objeto. Por tanto, estos se
encuentran muy relacionados entre sí. Por ello una clase es considerada como una descripción para todos
los objetos que define, por lo que se considera como una abstracción, dado que simplifica la
representación de un objeto en su forma más general y simplificada posible, sin proporcionar muchos los
detalles.

Para García (2010), una clase es un modelo o plantilla que indica cómo será un modelo de dicha clase.

En términos de programación las clases constituyen una estructura de datos en la cuales se definen todas
las características y comportamientos comunes de un objeto para luego producir réplicas de ese objeto a
lo largo de la vida del programa.
Figura 1. Representación de Entidades Empleados (García, 2010).

De acuerdo con Izquierdo (s.f), 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 terminología de la programación orientada a objetos, diremos que
mi bicicleta es una instancia de la clase de objetos conocida como bicicletas.

Ejemplos:

▪ La Universidad Nacional Agraria y la Universidad Centroamericana pertenecen a la clase


Universidad, donde tienen una dirección y un grado máximo.

▪ Banpro y BAC pertenecen a la clase Bancos, donde todas tienen dirección y número de clientes,
capital para crédito, utilidades, etc.

▪ Los objetos impresora láser, impresora de burbuja e impresora de punto son todos objetos que
pertenecen a la clase impresora.

Dentro de una clase, los nombres de los atributos deben ser únicos.

Ejemplo: Las clases Persona y Compañía pueden tener ambas un atributo dirección; en cambio no pueden
existir dos atributos llamados dirección dentro de la clase Persona.

Para modelar una clase y un objeto se utiliza la notación UML (Lenguaje Unificado de Modelado).
Objeto

“En la programación orientada a objetos el elemento básico de trabajo es el objeto. Un objeto se puede
considerar como una representación de un objeto real” (Azpitarte et al., 2007, p. 80).

Por ello en la programación orientada a objetos, el objeto se trata como una entidad que engloba datos y
funciones. En términos de programación, un objeto contiene toda la información necesaria para
abstraerlo. El cual puede ser algo tangible como intangible.

Los objetos pueden realizar cosas por ellos mismos, dado que se encuentran compuestos por atributos y
por métodos (comportamiento) que representan acciones que puede llevar a cabo el objeto.

“Un objeto se llama una instancia de una clase. Un objeto es una instancia de exactamente una clase”
(Wu, 2008, p. 17).

“Un objeto es: un conjunto de datos relacionados que identifican el estado actual del objeto + un conjunto
de comportamientos” (Dean, John S. Dean, 2009, p. 177).

Pavón (2007), afirma que, los objetos son representaciones (simples/complejas) (reales/imaginarias) de
cosas: reloj, avión, coche, casa, correo electrónico, etc.

Características de un objeto:

• Tangibles (carro) o Intangibles (deudas).

• Todo objeto se identifica unívocamente

• Todo objeto tiene unos datos propios (atributos) y un comportamiento

Ejemplos:

1. Una mesa es un objeto concreto, en tanto que un viaje es un objeto abstracto. Aquellos objetos
que comparten características comunes se pueden agrupar en clases.

2. Mesa y viaje son ambos sustantivos y, por tanto, objetos. Trabajando y estudiando son gerundios
por lo que no se consideran objetos.

Cualquier cosa que incorpore una estructura y un comportamiento o acción se le puede considerar un
objeto.

Método
La realización de una tarea en un programa orientado a objetos requiere que un objeto dispare una acción
para la realización de dicha tarea, es lo que en apartados anteriores hemos nombrado método. Según lo
plantean Deitel & Dietel (2016, p. 11), un método aloja las instrucciones que requiere el programa a fin
de realizar dicha tarea. Ocultando al usuario tales instrucciones.

“Un método definido para una clase se llama método de clase y un método definido para un objeto es un
método de instancia” (Wu, 2008, p. 19).

Un método se escribe en una clase de objetos y determina como tiene que actuar el objeto cuando recibe
el mensaje vinculado con ese método. A su vez, un método puede también enviar mensajes a otros objetos
solicitando una acción o información Pavón (2007).

Mensaje
Un programa orientado a objetos, fundamentalmente se basa en clases y objetos, siendo necesaria la
interacción entre los objetos que componen el programa para llevar a cabo la realización de una tarea en
específico. Esa interacción entre los objetos se da a través de mensajes; los objetos intercambien mensajes
entre ellos a fin de poder desarrollar las acciones que se requieren para la solución de un problema.

De acuerdo con el planteamiento de Pavón (2007), los objetos interactúan enviándose mensajes uno a
otro.

Para que un objeto pueda procesar el mensaje se requiere que se programe en forma adecuada, es decir
no se puede mandar el mensaje entre los objetos simplemente por mandarlos. Los mensajes son enviados
a objetos que pueden comprender el mensaje o que han sido programado para entender dicho mensaje.

En otras palabras, el método debe ser compatible con el objeto que envié el mensaje. Los mensajes
pueden estar constituidos por argumentos, los cuales especifican aún más el cómo y qué debe realizar en
la tarea solicitada el objeto.

Tras la recepción de un mensaje el objeto actuará. La acción puede ser el envío de otros mensajes, el
cambio de su estado, o la ejecución de cualquier otra tarea que se requiera que haga el objeto.

Es decir, cuando un objeto A necesita que el objeto B ejecute alguno de sus métodos, el objeto A le
manda un mensaje al objeto B. Al recibir el mensaje del objeto A, el objeto B ejecutará el método
adecuado para el mensaje recibido.

Cuando se ejecuta un programa orientado a objetos, los objetos están recibiendo, interpretando y
respondiendo a mensajes de otros objetos.
Notación UML

Hasta ahora, se ha dicho que, tanto las clases como los objetos pueden ser representados bajo una
notación UML, pera no se abordado formalmente que es este tipo de notación.
El Lenguaje Unificado de Modelado (UML) fue creado para forjar un lenguaje de modelado visual
común, semántica y sintácticamente rico para la arquitectura, el diseño y la implementación de sistemas
de software complejos, tanto en estructura como en comportamiento.

UML no es un lenguaje de programación, pero existen herramientas que se pueden usar para generar
código en diversos lenguajes de programación usando los diagramas UML.

UML guarda una relación directa con el análisis y el diseño de sistemas orientado a objetos.

Según Rumbaugh (2007), UML permite modelar sistemas de información y su objetivo es lograr modelos
que, además de describir con cierto grado de formalismo, tales sistemas puedan ser entendidos por los
clientes o usuarios de aquello que se modela.

Representación de clases con UML:

Ejemplo

Representación de objetos según UML:

Los objetos se describen gráficamente por medio de un diagrama de objetos o diagrama de instancias.
La notación general para un objeto es una caja rectangular, que contiene el nombre del objeto subrayado,
el cual sirve para identificar al objeto.
Bibliografía
Dean, J. & Dean, R. (2009). Introducción a la programación con JAVA. México: McGRAW-
HILL/INTERAMERICANA EDITORES, S.A.

Deitel P & Deitel H. (2016). Java Como Programar. México: Pearson Educación de Mexico, S.A.

Izquiero, L. (s.f). Introducción a la programación orientada a objetos.

Pavón, J. (2007). Fundamentos de la programación Orientada a Objetos. Objetos y Clases. Madrid:


Universidad Complutense.

RUMBAUGH, J., JACOBSON, I., & BOOCH, G. (2000). El Lenguaje Unificado de Modelado.
Manual de Referencia. Madrid, España: PERSON EDUCACION, S.A.

Weitzenfeld, A. (2005). Objetos. In Ingeniería de Software Orientada a Objetos con UML, Java e
Internet (pp. [69]- 72). México City: Cengage Learning.

También podría gustarte