0% encontró este documento útil (0 votos)
84 vistas10 páginas

Unidad 1 Programacion Orientada

Este documento presenta los elementos fundamentales del paradigma de programación orientada a objetos, incluyendo clases, objetos, abstracción, modularidad, encapsulamiento, herencia y polimorfismo. Define cada uno de estos conceptos clave en 1 o 2 oraciones.
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)
84 vistas10 páginas

Unidad 1 Programacion Orientada

Este documento presenta los elementos fundamentales del paradigma de programación orientada a objetos, incluyendo clases, objetos, abstracción, modularidad, encapsulamiento, herencia y polimorfismo. Define cada uno de estos conceptos clave en 1 o 2 oraciones.
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
Está en la página 1/ 10

Unidad 1: Introducción al paradigma de la programación orientada a objetos.

1.1 Elementos del modelo de objetos: clases, objetos, abstracción, modularidad,


encapsulamiento, herencia y polimorfismo.
 Clase

En la programación orientada a objetos, una clase es una construcción que


se utiliza como un modelo (o plantilla) para crear objetos de ese tipo. El
modelo describe el estado y el comportamiento que todos los objetos de la
clase comparten. Un objeto de una determinada clase se denomina una instancia de la clase. La
clase que contiene (y se utilizó para crear) esa instancia se puede considerar como del tipo de ese
objeto, por ejemplo, una instancia del objeto de la clase "Personas" sería del tipo "Personas".

Una clase por lo general representa un sustantivo, como una persona, lugar o (posiblemente
bastante abstracta) cosa - es el modelo de un concepto dentro de un programa de computadora.
Fundamentalmente, encapsula el estado y el comportamiento del concepto que representa.
Encapsula el estado a través de marcadores de datos llamados atributos (o variables miembro o
variables de instancia), encapsula el comportamiento a través de secciones de código reutilizables
llamados métodos.

La clase es un modelo o prototipo que define las variables y métodos comunes a todos los objetos
de cierta clase. También se puede mencionar que una clase es una plantilla genérica para un
conjunto de objetos de similares características. Una clase define el estado y el comportamiento
que todos los objetos creados a partir de esa clase tendrán.

 Objeto

En el paradigma de programación orientada a objetos (POO, o bien OOP en


inglés), un objeto se define como la unidad que en tiempo de ejecución
realiza las tareas de un programa. También a un nivel más básico se define
como la instancia de una clase.

Estos objetos interactúan unos con otros, en contraposición a la visión tradicional en la cual un
programa es una colección de subrutinas (funciones o procedimientos), o simplemente una lista
de instrucciones para el computador. Cada objeto es capaz de recibir mensajes, procesar datos y
enviar mensajes a otros objetos de manera similar a un servicio.
Los objetos de software, al igual que los objetos del mundo real, también tienen características y
comportamientos. Un objeto de software mantiene sus características en uno o más atributos e
implementa su comportamiento con métodos.

Es una entidad real o abstracta, con un papel definido en el dominio del problema.

Un objeto es una instancia de una clase, que tiene: identidad, estado(atributos) y


comportamiento(métodos).

 Abstracción

La abstracción consiste en aislar un elemento de su contexto o del resto de


los elementos que lo acompañan. En programación, el término se refiere al
énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (característica de
caja negra). El común denominador en la evolución de los lenguajes de
programación, desde los clásicos o imperativos hasta los orientados a objetos, ha sido el nivel de
abstracción del que cada uno de ellos hace uso.

Los lenguajes de programación son las herramientas mediante las cuales los diseñadores de
lenguajes pueden implementar los modelos abstractos. La abstracción ofrecida por los lenguajes
de programación se puede dividir en dos categorías: abstracción de datos (pertenecientes a los
datos) y abstracción de control (perteneciente a las estructuras de control).

Los diferentes paradigmas de programación han aumentado su nivel de abstracción, comenzando


desde los lenguajes de máquina, lo más próximo al ordenador y más lejano a la comprensión
humana; pasando por los lenguajes de comandos, los imperativos, la orientación a objetos (OO), la
Programación Orientada a Aspectos (POA); u otros paradigmas como la programación declarativa,
etc.

La abstracción es un proceso de interpretación y diseño que implica reconocer y enfocarse en las


características importantes de una situación u objeto, y filtrar o ignorar todas las particularidades
no esenciales.

Dejar a un lado los detalles de un objeto y definir las características específicas de éste, aquellas
que lo distingan de los demás tipos de objetos.

Hay que centrarse en lo que es y lo que hace un objeto, antes de decidir cómo debería ser
implementado.
Se hace énfasis en el qué hace más que en el cómo lo hace.

Ejemplo: Imaginemos que queremos aplicar la abstracción a las aves:

Objeto: Pájaro

Características:

Pico

Alas

Patas

Plumas

Funcionalidades:

Volar

Picar

Aterrizar

 Modularidad

En programación modular, y más específicamente en programación


orientada a objetos, se denomina Modularidad a la propiedad que
permite subdividir una aplicación en partes más pequeñas (llamadas
módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en
sí y de las restantes partes.

Estos módulos que se puedan compilar por separado, pero que tienen conexiones con otros
módulos. Al igual que la encapsulación, los lenguajes soportan la Modularidad de diversas formas.

Según Bertrand Meyer "El acto de particionar un programa en componentes individuales para
reducir su complejidad en algún grado. . . . A pesar de particionar un programa es útil por esta
razón, una justificación más poderosa para particionar un programa es que crea una serie de
límites bien definidos y documentados en el programa. Estos límites, o interfaces, son muy
valiosos en la comprensión del programa.
El modularidad es la propiedad que permite dividir una aplicación en partes más pequeñas
(llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la
aplicación en sí y de las restantes partes.

En el lenguaje de programación Java y en algunos entornos de desarrollo integrado (IDE), el


modularidad radica en la separación de todos los posibles paquetes de código. La siguiente imagen
muestra la división que se hace a partir de una aplicación base o un servicio general, que se divide
en diferentes módulos con un propósito especial y finalmente una subdivisión en pequeños
paquetes de código que integran las clases.

 Encapsulamiento

En programación modular, y más específicamente en programación


orientada a objetos, se denomina encapsulamiento al ocultamiento del
estado, es decir, de los datos miembro, de un objeto de manera que sólo
se puede cambiar mediante las operaciones definidas para ese objeto.

Cada objeto está aislado del exterior, es un módulo natural, y la aplicación


entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos
asociados a un objeto contra su modificación por quien no tenga derecho a acceder a ellos,
eliminando efectos secundarios e interacciones.

Es la propiedad que permite asegurar que la información de un objeto está oculta del mundo
exterior.

El encapsulamiento consiste en agrupar en una Clase las características(atributos) con un acceso


privado y los comportamientos (métodos) con un acceso público.

Acceder o modificar los miembros de una clase a través de sus métodos.

 Herencia

En orientación a objetos la herencia es el mecanismo fundamental para


implementar la reutilización y extensibilidad del software. A través de ella
los diseñadores pueden construir nuevas clases partiendo de una jerarquía
de clases ya existente (comprobadas y verificadas) evitando con ello el
rediseño, la modificación y verificación de la parte ya implementada. La herencia facilita la
creación de objetos a partir de otros ya existentes, obteniendo características (métodos y
atributos) similares a los ya existentes.

Es la relación entre una clase general y otra clase más específica. Por ejemplo: Si declaramos una
clase párrafo derivada de una clase texto, todos los métodos y variables asociadas con la clase
texto, son automáticamente heredados por la subclase párrafo.

Es una propiedad que permite crear clases a partir de otras ya existentes, obteniendo
características (métodos y atributos) similares a los ya existentes. En otras palabras, la nueva clase
(subclase o clase derivada) puede utilizar la misma implementación de su superclase (clase base) o
especificar una nueva implementación.

Es la relación entre una clase general y otra clase más específica.

Es un mecanismo que nos permite crear clases derivadas a partir de clases base.

Nos permite compartir automáticamente métodos y datos entre clases, subclases y objetos. Por
ejemplo: Si declaramos una clase párrafo derivada de una clase texto todos los métodos y
variables asociadas con la clase texto son automáticamente heredados por la subclase párrafo.

Herencia simple: Es cuando una clase hereda de sólo una clase base.

Herencia múltiple: Es cuando una clase hereda de dos o más clases base.

 Polimorfismo

En programación orientada a objetos el polimorfismo se refiere a


la capacidad para que varias clases derivadas de una antecesora
utilicen un mismo método de forma diferente.

Por ejemplo, podemos crear dos clases distintas: Pez y Ave que
heredan de la superclase Animal. La clase Animal tiene el método abstracto mover que se
implementa de forma distinta en cada una de las subclases (peces y aves se mueven de forma
distinta).

Como se mencionó anteriormente, el concepto de polimorfismo se puede aplicar tanto a


funciones como a tipos de datos. Así nacen los conceptos de funciones polimórficas y tipos
polimórficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a
diferentes tipos de datos de forma indistinta; los tipos polimórficos, por su parte, son aquellos
tipos de datos que contienen al menos un elemento cuyo tipo no está especificado.

Son comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo


nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto
que se esté usando.

Tipos de polimorfismo:

o Polimorfismo Ad Hoc
o Polimorfismo paramétrico
o Polimorfismo de subtipos

Polimorfismo Ad Hoc: Se refiere a funciones que cambian su comportamiento dependiendo del


tipo de argumentos que reciben (sobrecarga de métodos o funciones).

La sobrecarga de métodos hace referencia a varios métodos con el mismo nombre, pero con
diferentes firmas.

Polimorfismo paramétrico: El polimorfismo paramétrico permite que las funciones y las clases
puedan escribirse de forma genérica, de tal manera que pueda manipular los datos de la misma
manera sin importar el tipo. Ejemplos:

C++ - Templates

Java – Generics

Polimorfismo de subtipos: Es una forma de polimorfismo en la cual los subtipos de un tipo pueden
sustituir el comportamiento de las funciones del supertipo con su propia implementación.

Bibliografía:

https://ferestrepoca.github.io/paradigmas-de-programacion/poo/poo_teoria/concepts.html

https://pooitsavlerdo.blogspot.com/2012/05/11-elementos-del-modelo-de-objetos.html

1.2 Lenguaje de modelado unificado: Diagrama de clase.

UML es una herramienta que ayuda a capturar mediante un conjunto de


símbolos y diagramas a comunicar la idea de un sistema (software orientado
a objetos), a quien esté involucrado en su proceso de desarrollo sirviendo de apoyo en los
procesos de análisis y diseño de un problema.

El objetivo es capturar las partes esenciales del sistema mediante notaciones gráficas, a esto se le
conoce como “modelado visual”, el cual es independiente del lenguaje de implementación (el
lenguaje que se usará para codificar).

Una clase es un elemento de modelado que define las características del objeto que representa,
incluidos sus atributos y comportamientos.

Tomemos como ejemplo la clase 'Car'. 'Car' tiene un conjunto de atributos estáticos, como marca,
modelo, año y color. La clase 'Car' también tiene métodos (cosas que los coches pueden hacer)
como acelerar, desacelerar, detenerse y arrancar. Dado que un objeto es una instancia de la clase:
una instancia de objeto puede ser: Subaru, Forester, 2023, verde oscuro. En este ejemplo, los
atributos de este coche son marca, modelo, año y color.

Un diagrama de clases UML tiene dos propósitos principales como modelo estático de un sistema
orientado a objetos:

- Visualizar las clases de un sistema y sus propiedades.

- Mostrar y analizar las relaciones entre las clases.

Además de estos, los diagramas de clases UML también son la base para los diagramas de
componentes y despliegue que muestran los aspectos de hardware y software de un sistema.

 ¿Qué es un diagrama de clases en UML?

El Lenguaje Unificado de Modelado (UML, por sus siglas en inglés) puede


ayudarte a modelar sistemas de diversas formas. Uno de los tipos más
populares en el UML es el diagrama de clases. Popular entre los ingenieros de
software para documentar arquitectura de software, los diagramas de clases son un tipo de
diagrama de estructura porque describen lo que debe estar presente en el sistema que se está
modelando. Sin importar tu nivel de familiaridad con diagramas UML o diagramas de clases,
nuestro software UML está diseñado para ser simple y fácil de usar.

El UML se estableció como un modelo estandarizado para describir un enfoque de programación


orientada a objetos (POO). Como las clases son los componentes básicos de los objetos, los
diagramas de clases son los componentes básicos del UML. Los diversos componentes en un
diagrama de clases pueden representar las clases que se programarán en realidad, los objetos
principales o la interacción entre clases y objetos.

La figura de clase en sí misma consiste en un rectángulo de tres filas. La fila superior contiene el
nombre de la clase, la fila del centro contiene los atributos de la clase y la última expresa los
métodos o las operaciones que la clase puede utilizar. Las clases y las subclases se agrupan para
mostrar la relación estática entre cada objeto.

 Beneficios de los diagramas de clases

Los diagramas de clases ofrecen una serie de beneficios para toda organización. Usa los diagramas
de clases UML para:

Ilustrar modelos de datos para sistemas de información, sin importar qué tan simples o complejos
sean.

Comprender mejor la visión general de los esquemas de una aplicación.

Expresar visualmente cualesquier necesidades específicas de un sistema y divulgar esa


información en toda la empresa.

Crear diagramas detallados que resalten cualquier código específico que será necesario programar
e implementar en la estructura descrita.

Ofrecer una descripción independiente de la implementación sobre los tipos empleados en un


sistema que son posteriormente transferidos entre sus componentes.

 Componentes básicos de un diagrama de clases

El diagrama de clases estándar está compuesto por tres partes:

Sección superior: Contiene el nombre de la clase. Esta sección siempre es necesaria, ya sea que
estés hablando del clasificador o de un objeto.

Sección central: Contiene los atributos de la clase. Usa esta sección para describir cualidades de la
clase. Esto solo es necesario al describir una instancia específica de una clase.
Sección inferior: Incluye operaciones de clases (métodos). Esto está organizado en un formato de
lista. Cada operación requiere su propia línea. Las operaciones describen cómo una clase puede
interactuar con los datos.

 ¿Cuál es la diferencia entre un diagrama de clases y un diagrama UML?

Mientras que los diagramas de clase se utilizan para ilustrar las estructuras de clase, los diagramas
UML (lenguaje de modelado unificado) tienen muchos propósitos. Los diagramas de clase UML son
uno de los muchos tipos de diagramas UML que se usan para describir sistemas de modelo. La
diferencia principal entre un diagrama de clases y un diagrama UML es que un diagrama de clases
muestra la estructura de las clases, mientras que los otros tipos de diagramas de clases UML
siguen diferentes convenciones.

 ¿Qué es un diagrama de clases?

Para entender un diagrama de clase, debemos definir en primer lugar qué es una clase. Una clase
representa la unidad principal del programa en la programación orientada a objetos. Las clases son
estructuras de datos que contienen código y representan objetos en una aplicación.

Un diagrama de clases es una representación visual de los objetos de clases en un sistema de


modelo, clasificados por tipos de clases. Cada tipo de clase es representada como un rectángulo
con tres compartimientos para el nombre de la clase, los atributos, y las operaciones.

 Ventajas de usar un diagrama de clases

Usar un diagrama de clases es una excelente manera de que tu negocio pueda comunicar una
estructura de clase de un proyecto a las partes interesadas y al equipo. Un diagrama de clases es
especialmente útil para comunicar las clases de jerarquía y colaboraciones entre clases.

 ¿Qué incluye un diagrama de clases?

Los componentes principales de un diagrama de clases son las clases, los objetos, los atributos, las
operaciones, las asociaciones, las generalizaciones y los estereotipos.

Bibliografías:

https://www.itesrc.edu.mx/portal/articles.php?id_art=1#:~:text=UML%20es%20una
%20herramienta%20que,y%20dise%C3%B1o%20de%20un%20problema.
https://www.lucidchart.com/pages/es/tutorial-de-diagrama-de-clases-uml#:~:text=En%20UML
%2C%20una%20clase%20representa,sus%20atributos%20y%20sus%20operaciones

https://es.venngage.com/blog/diagrama-de-clases/#:~:text=Un%20diagrama%20de%20clases
%20es,de%20clases%20en%20un%20sistema

También podría gustarte