Unidad 1 Programacion Orientada
Unidad 1 Programacion Orientada
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
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.
Abstracción
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).
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.
Objeto: Pájaro
Características:
Pico
Alas
Patas
Plumas
Funcionalidades:
Volar
Picar
Aterrizar
Modularidad
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.
Encapsulamiento
Es la propiedad que permite asegurar que la información de un objeto está oculta del mundo
exterior.
Herencia
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 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
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).
Tipos de polimorfismo:
o Polimorfismo Ad Hoc
o Polimorfismo paramétrico
o Polimorfismo de subtipos
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
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:
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.
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.
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.
Crear diagramas detallados que resalten cualquier código específico que será necesario programar
e implementar en la estructura descrita.
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.
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.
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.
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.
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