TALLER DE CONCEPTOS Y PRINCIPIOS DE PROGRAMACIÓN ORIENTADA A
OBJETOS (POO)
EVIDENCIA DE CONOCIMIENTO: GA4-220501095-AA2-EV01
TECNOLOGÍA EN ANALISIS Y DESARROLLO DE SOTFWARE
APRENDIZ
SERGIO ALEXANDER RUIZ RAMIREZ
FICHA
2977489
INSTRUCTOR
OSCAR JULÍAN PIRABAN RODRÍGUEZ
CENTRO DE DESARROLLO AGROEMPRESARIAL CHIA - REGIONAL
CUNDINAMARCA
21/02/2025
Versión del Documento: 1.0
ÍNDICE
1. Introducción
2. Glosario de Terminología en Programación Orientada a Objetos
3. Características y Principios o Pilares Básicos de la POO
4. Conclusiones
5. Bibliografía
1. Introducción
En la realización del presente documento se tiene como objetivo principal la
apropiación de conceptos básicos y principios de la programación orientada
a objetos para una mayor comprensión del tema.
La programación orientada a objetos difiere de la programación estructurada
tradicional, en la que los datos y los procedimientos están separados y sin relación,
ya que lo único que se busca es el procesamiento de unos datos de entrada para
obtener otros de salida. La programación estructurada prima el concepto de
procedimientos o funciones sobre el de estructuras (se emplean principalmente
funciones que procesan datos). La programación orientada a objetos, en cambio,
primero se definen los objetos o estructuras para posteriormente solicitar la
ejecución de sus métodos.
La programación orientada a objetos se diferencia de la programación estructurada
tradicional, en que los datos y los procedimientos operan de manera independiente
y aislada. Ya que el principal objetivo es procesar un conjunto de datos de entrada
para generar unos resultados específicos de salida. En la programación
estructurada, se enfatiza el uso de procedimientos o funciones en lugar de
estructuras de datos. La programación orientada a objetos, en cambio, primero se
definen los objetos o estructuras para posteriormente solicitar la ejecución de sus
métodos.
2. Glosario de Terminología en Programación Orientada a Objetos
La Programación Orientada a Objetos (POO) es un paradigma de
programación, es decir, un modelo o un estilo de programación que nos da
unas guías sobre cómo trabajar con él. Se basa en el concepto de clases y
objetos. Este tipo de programación se utiliza para estructurar un programa de
software en piezas simples y reutilizables de planos de código (clases) para
crear instancias individuales de objetos.
A lo largo de la historia, han ido apareciendo diferentes paradigmas de
programación. Lenguajes secuenciales como COBOL o procedimentales como
Basic o C, se centraban más en la lógica que en los datos. Otros más
modernos como Java, C# y Python, utilizan paradigmas para definir los
programas, siendo la Programación Orientada a Objetos la más popular.
Con el paradigma de Programación Orientado a Objetos lo que buscamos es
dejar de centrarnos en la lógica pura de los programas, para empezar a pensar
en objetos, lo que constituye la base de este paradigma. Esto nos ayuda
muchísimo en sistemas grandes, ya que, en vez de pensar en funciones,
pensamos en las relaciones o interacciones de los diferentes componentes del
sistema.
Un programador diseña un programa de software organizando piezas
de información y comportamientos relacionados en una plantilla llamada clase.
Luego, se crean objetos individuales a partir de la plantilla de clase. Todo el
programa de software se ejecuta haciendo que varios objetos interactúen entre
sí para crear un programa más grande.
POO: Es un modelo o un estilo de programación, que nos brinda unas guías
sobre como trabajar con él. Lo que se busca con este paradigma es dejar de
centrarnos en la lógica pura de los programas y empezar a pensar en objetos,
con la POO se buscaba resolver diferentes situaciones creando mejores
condiciones para poder desarrollar aplicaciones cada vez más complejas.
CLASES: Es una plantilla que define los atributos y métodos que son comunes para
todos los objetos y se utiliza para crear objetos más fácilmente.
HERENCIAS: Define relaciones jerárquicas entre clases, permitiendo heredar las
características (atributos y métodos) de otra clase. También permite que se
puedan definir nuevas clases basadas en una ya existente, generando así una
jerarquía de clases dentro de una aplicación y puede añadir nuevos atributos,
métodos o redefinir los heredados.
OBJETOS: Representan la entidad en el problema que estamos trabajando,
es decir, la información sobre una cosa dentro del código de un programa. Los
objetos son las instancias o miembros de una clase definida, como las
propiedades, atributos y características que los definen del resto.
MÉTODOS: Son aquellas funciones que permite efectuar el objeto y que nos
rinden algún tipo de servicio durante el transcurso del programa. Determinan a su
vez como va a responder el objeto cuando recibe un mensaje.
EVENTOS: Es un suceso en el sistema (tal como una interacción del usuario con
la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento
enviando el mensaje adecuado al objeto pertinente. También se puede
definir como evento la reacción que puede desencadenar un objeto; es
decir la acción que genera.
ATRIBUTOS: Características que aplican al objeto solo en el caso en que él sea
visible en pantalla por el usuario; entonces sus atributos son el aspecto que refleja,
tanto en color, tamaño, posición, si está o no habilitado.
ABSTRACCIÓN: Consiste en representar las características esenciales de un
objeto y ocultar los detalles innecesarios. Permite simplificar la complejidad
centrándose en lo que realmente importa.
ENCAPSULAMIENTO: Es el mecanismo que protege los datos de un objeto,
ocultando su implementación y exponiendo solo lo necesario mediante métodos o
interfaces públicas. De esta forma, se controla el acceso a los atributos y la
manera en que se manipulan.
POLIMORFISMO: Es la capacidad de que los métodos con el mismo nombre
actúen de forma diferente según el objeto o la clase que los invoque. En otras
palabras, una misma llamada a un método puede tener múltiples
implementaciones dependiendo del contexto.
3. Características y Principios o Pilares Básicos de la POO
La abstracción es cuando el usuario interactúa solo con los atributos y
métodos seleccionados de un objeto, utilizando herramientas simplificadas de
alto nivel para acceder a un objeto complejo.
En la programación orientada a objetos, los programas suelen ser muy grandes y
los objetos se comunican mucho entre sí. El concepto de abstracción facilita el
mantenimiento de un código de gran tamaño, donde a lo largo del tiempo pueden
surgir diferentes cambios. Así, la abstracción se basa en usar cosas simples para
representar la complejidad. Los objetos y las clases representan código
subyacente, ocultando los detalles complejos al usuario; por consiguiente,
supone una extensión de la encapsulación.
Ejemplo Sencillo: Al diseñar un sistema de facturación, nos centramos en los datos
importantes del cliente (nombre, dirección, identificación fiscal), sin preocuparnos
en este momento por cómo se imprimirá la factura o qué tipografía se utilizará.
La encapsulación contiene toda la información importante de un objeto dentro
del mismo y solo expone la información seleccionada al mundo exterior. Esta
propiedad permite asegurar que la información de un objeto esté oculta para
el mundo exterior, agrupando en una Clase las características o atributos
que cuentan con un acceso privado, y los comportamientos o métodos que
presentan un acceso público.
La encapsulación de cada objeto es responsable de su propia información y de su
propio estado. La única forma en la que este se puede modificar es mediante los
propios métodos del objeto. Por lo tanto, los atributos internos de un objeto
deberían ser inaccesibles desde fuera, pudiéndose modificar sólo llamando a las
funciones correspondientes. Con esto conseguimos mantener el estado a salvo
de usos indebidos o que puedan resultar inesperados.
Ejemplo Sencillo: Una clase “Compra” puede tener atributos como formas de pago
y un método “pagarOnline()”. Los detalles de cómo se descuenta el saldo se
mantienen ocultos al exterior; únicamente se ofrece un método público para realizar
la operación.
La herencia define relaciones jerárquicas entre clases, de forma que
atributos y métodos comunes puedan ser reutilizados. Las clases principales
extienden atributos y comportamientos a las clases secundarias. A través de la
definición en una clase de los atributos y comportamientos básicos, se pueden
crear clases secundarias, ampliando así la funcionalidad de la clase principal y
agregando atributos y comportamientos adicionales. A la clase de la que se
hereda se le llama clase base, y a la clase que hereda de ésta se le llama clase
derivada. La herencia es una de las características más potentes de la POO ya que
fomenta la reutilización del código permitiendo al mismo tiempo la particularización
o especialización del mismo.
Ejemplo Sencillo: Una clase “Usuario” puede heredar de una clase “Cliente”,
obteniendo automáticamente atributos como nombre y edad. Además, puede
agregar métodos propios de un “Usuario” como realizarReserva().
El polimorfismo consiste en diseñar objetos para compartir comportamientos, lo
que nos permite procesar objetos de diferentes maneras. Es la capacidad
de presentar la misma interfaz para diferentes formas subyacentes o tipos de
datos. Al utilizar la herencia, los objetos pueden anularlos comportamientos
principales compartidos, con comportamientos secundarios específicos. El
polimorfismo permite que el mismo método ejecute diferentes comportamientos
de dos formas: anulación de método y sobrecarga de método. Alrededor de estos
principios de la programación orientada a objetos se construyen muchas cosas. Por
ejemplo, los Principios SOLID, o los Patrones de diseño, que son recetas que se
aplican a problemas recurrentes que se han encontrado y se repiten en varios
proyectos.
Ejemplo Sencillo: Un método “cancelarReserva()” puede implementarse de forma
diferente en las clases “Cliente ” y “Administrativo”. Aunque se llame igual, sus
acciones concretas difieren dependiendo del tipo de usuario.
¿Por qué utilizar POO?
La Programación Orientada a objetos permite que el código sea reutilizable,
organizado y fácil de mantener. Sigue el principio de desarrollo de software
utilizado por muchos programadores DRY (Don’t Repeat Yourself), para evitar
duplicar el código y crear de esta manera programas eficientes. Además, evita el
acceso no deseado a los datos o la exposición de código propietario mediante la
encapsulación y la abstracción.
Beneficios de Programación Orientada a Objetos
•Reutilización del código.
•Convierte cosas complejas en estructuras simples reproducibles.
•Evita la duplicación de código.
•Permite trabajar en equipo gracias al encapsulamiento ya que minimiza la
posibilidad de duplicar funciones cuando varias personas trabajan sobre un mismo
objeto al mismo tiempo.
•Al estar la clase bien estructurada permite la corrección de errores en varios
lugares del código.
•Protege la información a través de la encapsulación, ya que solo se puede acceder
a los datos del objeto a través de propiedades y métodos privados.
•La abstracción nos permite construir sistemas más complejos y de una forma más
sencilla y organizada.
4. Conclusiones
• La Programación Orientada a Objetos es actualmente el paradigma que más
se utiliza para diseñar aplicaciones y programas informáticos, por lo
tanto, podemos decir que los lenguajes de programación orientados a objetos
tratan a los programas como conjuntos de objetos que se ayudan entre
ellos para realizar acciones, permitiendo que los programas sean más
fáciles de escribir, mantener y reutilizar.
• Además, la POO se ha consolidado como un estándar en diversos lenguajes
de programación, como Java, C++, Python y C#, dada su capacidad para
gestionar proyectos de gran escala mediante la separación de
responsabilidades y la interacción entre objetos. Su adopción en múltiples
dominios, desde el desarrollo de aplicaciones empresariales hasta la
inteligencia artificial y los sistemas embebidos, demuestra su versatilidad y
eficacia en la resolución de problemas computacionales.
• En conclusión, la Programación Orientada a Objetos representa un enfoque
esencial en la ingeniería de software moderna. Su correcta aplicación permite
construir soluciones robustas, eficientes y adaptables a cambios futuros,
promoviendo buenas prácticas de desarrollo y optimizando el ciclo de vida
del software.
5. Bibliografía
https://slideplayer.es/slide/5415118/
https://www.northware.mx/blog/programacion-orientada-a-objetos/
https://sena.territorio.la/content/index.php/institucion/Titulada/institution/SENA/Tec
nologia/228118/Contenido/OVA/CF16/index.html#/introduccion