Está en la página 1de 5

Programación orientada a objetos (poo)

En inglés, object-oriented programming (poo), define los programas en


términos de clases de objetos, los objetos son entidades que combinan estado
(datos y valores), comportamiento (métodos o procedimientos) e identidad
(nombre del objeto que lo diferencia del resto). Esta técnica es utilizada para crear
aplicaciones informáticas extensas en base a objetos del mundo real denominados
entidades.

La poo tiene algunas ventajas frente a la programación tradicional, entre


ellas: la facilidad de analizar y diseñar programas con un enfoque realista, la
creación de programas extensos gracias a la reutilización y polimorfismo, la
facilidad de identificar errores, de entender y modificar el código fuente debido al
encapsulamiento.

La poo es un paradigma para crear programas que sobreviven a los


cambios inevitables que acompañan a la obsolescencia de cualquier sistema. Se
pueden extraer partes de un sistema antiguo con facilidad, puesto que se entiende
la función de cada objeto y se tienen interfaces limpias y fiables entre los mismos.

Características de la programación orientada a objetos

En el desarrollo de un programa orientado a objetos se tienen las siguientes


características:

1. Abstracción: consiste en crear un modelo de clases a partir de la


selección de las características esenciales y comportamientos comunes de un
grupo de objetos reales. Luego, las clases pueden ser agrupadas en bibliotecas
ocultando sus detalles de implementación y abstrayéndose del exterior. La
comunicación con otras clases será a través de su interfaz pública.

2. Encapsulamiento: el proceso de agrupar datos y métodos en una única


entidad con identidad propia se denomina encapsulamiento, en donde ciertos
datos y métodos están ocultos al exterior y solo mediante los métodos públicos es
posible acceder a ellos.
3. Modularidad: Es la propiedad que hace posible la división de un
programa en paquetes o componentes autónomos y a la vez relacionados y con
capacidad de compilarse por separado. En la POO, la modularidad se evidencia al
organizar un programa en paquetes, donde cada paquete agrupa un conjunto de
clases; y a su vez, una clase permite crear varias instancias independientes
denominadas objetos (composición o agregación de clases), o en su defecto
heredar nuevas clases.

4. Ocultación: la propiedad de la ocultación o aislamiento hace posible que los


objetos oculten detalles de declaración de datos e implementación de métodos,
protegiéndolos de posibles modificaciones no autorizadas y mostrando al exterior
sólo aquellos miembros que forman parte de su interfaz pública. El nivel de
ocultamiento de datos y métodos se establecen con los especificadores de
acceso.

5. Polimorfismo: Consiste en múltiples comportamientos de objetos cuando se


invoca a un mismo método en distintos contextos. El polimorfismo es posible en
una estructura de herencia, al sobrescribir métodos de clase base en clases
derivadas; entonces al crear una referencia de clase padre, ésta puede apuntar a
objetos de clase padre o a objetos de clases derivadas y dependiendo del objeto
al que esté referenciando, el método que se invoque será del objeto referenciado
en ese momento. Desde otra perspectiva, los arreglos de referencias de objetos
pueden contener objetos de diferentes clases y al invocar a un método en una
referencia producirá el comportamiento adecuado dependiendo del tipo real del
objeto referenciado. Cuando esto ocurre en tiempo de ejecución, se denomina
asignación dinámica o tardía.

6. Herencia: En la programación orientada a objetos, la herencia es quizá la


propiedad más importante, debido a que es posible implementar jerarquías de
clases de objetos con propósito de reutilización de código y creación de
programas extensos. Con la herencia, se ahorra tiempo en desarrollo de nuevas
clases (subclases) que implementan datos y métodos propios y a su vez heredan
datos y métodos de clases bases (superclases) ya probadas, sin necesidad de
añadir o modificar código a las clases base. Las clases derivadas pueden
convertirse en clases base de otras clases. Las clases derivadas son más
específicas que las clases base, representan un grupo especializado de objetos.
Además, las subclases pueden modificar o sobreescribir uno o varios métodos
(comportamientos) de la clase base, facilitando de esta manera el polimorfismo. La
herencia puede ser simple o múltiple, simple si una clase se hereda de una sola
clase y múltiple si hereda de varias clases.

7. Recolección de basura: garbage collector o recolección de basura es el


procedimiento para destruir automáticamente los objetos que ya no posean
ninguna referencia y desvincularlos de la memoria asignada. De esta manera, el
programador no debe preocuparse por la asignación o liberación de memoria
debido a que es automática.

Uml:

Es un conjunto de herramientas, que permite modelar (analizar y diseñar)


sistemas orientados a objetos. UML no es un lenguaje de programación ni un
método de desarrollo. No indica cómo trasladar los modelos de análisis al diseño y
de éste al código. Al no ser un método de desarrollo, es independiente del ciclo del
software y puede encajar en un tradicional ciclo en cascada o en un ciclo evolutivo
o en espiral, o incluso en los métodos ágiles de desarrollo.

Grady Booch, James Rumbaugh e Ivar Jacobson trabajaron por separado


en el desarrollo de notaciones para el análisis y diseño de sistemas orientados a
objetos, los tres llegaron a obtener bastante reconocimiento por lo que fueron
contratados por la empresa Rational y como resultado de ese trabajo salió a la luz
la versión 1.0 de uml en 1997.

Técnicas de programación

A continuación se presenta la evolución de las técnicas de programación:

Programación Secuencial o Lineal:


Esta técnica consiste en crear instrucciones de código una a continuación
de otra y su ejecución es de igual forma secuencial incluyendo algunos saltos
incondicionales, provocando algunos inconvenientes en la ejecución del programa
y la comprensión del código, así como, la poca facilidad de reutilizar código y de
controlar la visibilidad de los datos, debido a que todos los datos eran globales y
podían ser modificados desde cualquier parte del programa.

Programación modular (funcional o procedimental):

Es una técnica “divide y vencerás” o descendente (Top-Down). El código se


organiza en procedimientos (subprogramas o subrutinas) y/o funciones, que
consiste en un conjunto de instrucciones con el propósito de resolver una tarea
determinada. Utilizan el modelo de la caja negra, donde los procedimientos tienen
mayor importancia que los datos; mientras que ciertos datos se introducen en los
procedimientos, otros salen de él. Además, los diseñadores de estos lenguajes
partieron de la idea de que el mantenimiento no es necesario y que las
necesidades no cambian; una vez que el código está corregido y funciona
correctamente, debería ser guardado en una caja negra. El procedimiento no pudo
dar solución a los problemas complejos, ya que se requerían muchos
procedimientos y prolijos sistemas de comunicación entre ellos.

Programación estructurada:

Es una técnica orientada a mejorar la claridad y calidad de los programas


utilizando subrutinas y estructuras de control (secuencial, selección: if..else, switch
e iteración o bucles: while y for), es posible crear programas fáciles de corregir o
modificar, porque en un programa estructurado es suficiente con conocer que un
procedimiento dado realiza una tarea específica, sin necesidad de conocer cómo
se realiza la tarea. Esto se conoce como una abstracción funcional.

Programación Orientada a Objetos:

Es una técnica o estilo de programación que utiliza objetos como bloque


esencial de construcción. Se parte de la creación de clases que son en realidad
tipos abstractos de datos donde se definen datos y métodos. Es decir, un objeto
es una instancia de una clase que posee una copia de la definición de datos y
métodos, considerándose estado a los datos con sus valores (atributos o
características), y comportamiento a los métodos que trabajan con estos datos.

Entonces la poo enfatiza en los tipos de datos y las operaciones intrínsecas que
pueden desarrollarse en aquellos tipos de datos, los datos no fluyen libremente
por el sistema, ya que están protegidos de alguna modificación accidental; son los
“mensajes” los que pueden mover en el sistema, pues se envía un mensaje a un
objeto para que ejecute una acción.

Programación Visual:

Es una técnica de programación que crea aplicaciones del mundo real para
entorno Windows o Web, combinando la potencia de poo con la programación de
Interfaces Gráficas de Usuario; es decir, es una programación bajo eventos:
gráficos y acciones. Esta técnica permite a los programadores simplificar y
racionalizar el proceso de creación de aplicaciones.

La programación tradicional

La programación tradicional considerada así a la programación: secuencial,


modular y estructurada, organiza el código fuente de una aplicación en
librerías que contienen módulos (funciones, procedimientos) y estructuras de
datos por separado; cada procedimiento es una caja negra que realiza una tarea y
en ciertos casos accede a estructuras de datos globales y se comunican entre sí
mediante el paso de parámetros.

También podría gustarte