Está en la página 1de 57

DESARROLLO DE SOFTWARE

BASADO EN OBJETOS

Julián Andrés Atencia Fonseca


Carlos David Barrios Martínez
José Daniel Leiva Olivera
INTRODUCCIÓN AL DISEÑO DE
SOFTWARE BASADO EN OBJETOS
El desarrollo de software basado en objetos es un modelo de
programación en el que el diseño del software se organiza
alrededor de datos u objetos.
Se enfoca en los objetos que los programadores necesitan
manipular, en lugar de centrarse en la lógica necesaria para
esa manipulación.
PRINCIPIOS DE LA ORIENTACIÓN
A OBJETOS
Los principios de la orientación a objetos es un paradigma de
programación poderoso y flexible que se basa en la creacion y
manipulacion de objetos.
Y sus principios fundamentales son:
-Encapsulamiento
-Herencia
-Polimorfismo
-Abstracción
ENCAPSULACIÓN Y OCULTAMIENTO DE
LA INFORMACIÓN DE LOS OBJETOS
Encapsulación: Es un mecanismo que consiste en organizar
datos y métodos de una estructura, es decir, evitando el acceso
a datos por cualquier otro medio distinto a los especificados. Por
lo tanto, la encapsulación garantiza la integridad de los datos
que contiene un objeto.
Ejemplo de encapsulamiento en
Python
• Proceso de Encapsulamiento
Consiste en unir en la Clase las características y
comportamientos, esto es, las variables y métodos. Es tener todo
esto es una sola entidad.
• Clases
La encapsulación da lugar a que las clases se dividan en dos
partes:
Interfaz: Captura la visión externa de una clase, abarcando la
abstracción del comportamiento común a los ejemplos de esa
clase
Implementación: Comprende la representación de la
abstracción, así como los mecanismos que conducen al
comportamiento deseado.
• Modificadores de Acceso

Público: funciones de toda clase pueden acceder a los datos o


métodos de una clase que se define con el nivel de acceso
público. Este es el nivel de protección de datos más bajo.
Protegido: el acceso a los datos está restringido a las funciones
de clases heredadas, es decir, las funciones miembros de esa
clase y todas las subclases.
Privado: el acceso a los datos está restringido a los métodos de
esa clase en particular. Este es nivel más alto de protección de
datos.
• Formas de Encapsulamiento

Estándar: (Predeterminado)
Abierto: Hace que el miembro de la clase pueda ser accedido
desde el exterior de la Clase y cualquier parte del programa.
Protegido: Sólo es accesible desde la Clase y las clases que
heredan (a cualquier nivel).
Semi cerrado: Sólo es accesible desde la clase heredada.
Cerrado: Sólo es accesible desde la Clase.
Ocultamiento de Datos
La clase contiene miembros de datos y métodos. La ocultación
de datos es el proceso de proteger a los miembros de la clase.
Por lo tanto, es el mecanismo para mejorar la seguridad.

• Modificadores de Acceso
La ocultación de datos utiliza el modificador de acceso privado.

Privado: el acceso a los datos está restringido a los métodos de


esa clase en particular. Este es nivel más alto de protección de
datos.
Herencia y Reutilizacion de codigo

La herencia permite compartir


automáticamente métodos y datos entre
clases, subclases y objetos.

La reutilización de código se refiere a la


práctica de usar código existente en
lugar de escribirlo desde cero.
Polimorfismo y Abstracción

El polimorfismo es la capacidad que tienen ciertos lenguajes


para hacer que, al enviar el mismo mensaje (o, en otras
palabras, invocar al mismo método) desde distintos objetos,
cada uno de esos objetos pueda responder a ese mensaje (o a
esa invocación) de forma distinta.
una abstracción es una manera de reducir la complejidad y
permitir un diseño e implementación más eficientes en sistemas
de software complejos. Oculta la dificultad técnica de los
sistemas detrás de APIs más simples.
Cohesión y Acoplamiento

Acoplamiento y cohesión son términos que ocurren juntos muy


frecuentemente.

El acoplamiento se refiere a la interdependencia entre módulos o


componentes de un sistema. Un acoplamiento bajo es deseable, ya que
indica que los módulos son independientes y pueden modificarse sin afectar
en gran medida a otros.

La cohesión describe cómo se relacionan las funciones dentro de un módulo


independiente. Una alta cohesión es preferible, ya que significa que las
funciones dentro del módulo están estrechamente relacionadas y se centran
en una tarea específica
Componentes fundamentales de la
orientación a objetos
Los componentes fundamentales de la orientación a objetos son:

Clases: Las clases son los planos o plantillas para crear objetos.
Definen la estructura y el comportamiento de los objetos que se
crearán a partir de ellas. Una clase contiene atributos y métodos que
describen las propiedades y acciones que los objetos de esa clase
pueden tener.

Objetos: Los objetos son las instancias concretas de una clase. Cada
objeto tiene sus propios valores para los atributos definidos en la clase
y puede invocar los métodos de la clase. Los objetos son las unidades
con las que interactúa un programa orientado a objetos.
Atributos: Los atributos, también conocidos como campos o
propiedades, son variables que representan las características
o datos del objeto. Cada objeto de una clase tendrá sus
propios valores para estos atributos. Por ejemplo, en una clase
"Coche", los atributos pueden ser "marca," "modelo," y "color."

Métodos: Los métodos son funciones o procedimientos


asociados a una clase que definen el comportamiento de los
objetos de esa clase. Los métodos pueden realizar acciones,
manipular datos o proporcionar información. Por ejemplo, en
una clase "Coche," los métodos pueden ser "arrancar,"
"detener," o "acelerar."
Análisis orientado a objetos vs
Diseño orientado a objetos
Análisis: Se centra en la representación del problema, es decir, en la
identificación de las abstracciones que representan el significado de las
especificaciones y de los requisitos del sistema. El énfasis del diseño se centra
en la definición de la solución. Entonces tenemos que en el análisis orientado a
objetos

• El enfoque principal es comprender y modelar el problema en términos de


conceptos, abstracciones y relaciones entre ellos.

• Busca identificar y definir las entidades clave del dominio del problema y sus
interacciones.

• Ayuda a traducir los requisitos y especificaciones del cliente en un modelo


abstracto y comprensible que sirve como base para el diseño.
Diseño:
Es un modelo de programación en el que el diseño de software se organiza
alrededor de datos u objetos, en vez de usar funciones y lógica. Se enfoca
en los objetos que los programadores necesitan manipular, en lugar de
centrarse en la lógica necesaria para esa manipulación.
• Se enfoca en la creación de soluciones técnicas para el problema
identificado durante el análisis.
• Utiliza el modelo creado durante el análisis y lo expande, definiendo
cómo se implementarán las abstracciones en forma de clases y objetos
en el código.
• Se toma en cuenta la eficiencia, la reutilización del código y la estructura
detallada del sistema.
Modelado de aplicaciones con UML
El lenguaje unificado de modelado es el lenguaje de modelado
de sistemas de software más conocido y utilizado en la
actualidad, respaldado por el Object Management Group (OMG).
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.
-Los objetos identificados en la etapa de análisis se plasman en
diferentes modelos, combatiendo de esta forma la complejidad
inherente del problema al que nos estamos enfrentando.

-Para la construcción de modelos de objetos, y modelos software


en general, se debe contar con un lenguaje de modelado, es
decir, un lenguaje para especificar, visualizar, construir y
documentar los componentes de los sistemas software.
Tipos de diagramas UML
• Diagramas de casos de uso
• Diagramas de clases
• Diagramas de secuencias
• Diagramas de estado
• Diagramas de actividades
• Diagramas de colaboración
• Diagramas de componentes
• Diagramas de estructura compuesta
• Diagramas de paquetes
Diagramas de casos de uso en UML
El diagrama de casos de uso es una forma de diagrama de
comportamiento en lenguaje de modelado unificado (UML, del inglés
Unified Modelling Language), con la que se representan procesos
empresariales, así como sistemas y procesos de programación
orientada a objetos. Por lo tanto, UML no es un lenguaje de
programación, sino un lenguaje de modelado, es decir, un método
estandarizado para representar sistemas planificados o ya existentes.
En este diagrama, todos los objetos involucrados se estructuran y se
relacionan entre sí.
Elementos y estructura del
diagrama de casos de uso
Para garantizar que el diagrama de casos de uso sea comprensible
para todo el mundo de un vistazo, se utilizan elementos estandarizados
para elaborarlo. En primer lugar, hay tres elementos principales:
Actor: tanto si es una persona, como un sistema, se representa con el
dibujo de una figura humana esquemática.
Sistema: el sistema al que se refiere el caso de uso tiene forma de
rectángulo.
Caso de uso: se muestra como una elipse que suele incluir un texto
describiendo brevemente el proceso.
Diagramas de clases en UML
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
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 programaran en realidad, los
objetos principales o la interacción entre clases y objetos.
Beneficios de los diagramas de clases:
• 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.
Diagrama de secuencias
Un diagrama de secuencias muestra la interacción de un
conjunto de objetos de una aplicación a través del tiempo, en el
cual se indicarán los módulos o clases que formarán parte del
programa y las llamadas que se hacen cada uno de ellos para
realizar una tarea determinada, por esta razón permite observar
la perspectiva cronológica de las interacciones.
Elementos de un Diagrama de Secuencias:
Rol de la Clase
El rol de la clase describe la manera en que un objeto se va a comportar
en el contexto. No se listan los atributos del objeto.
Activación
Los cuadros de activación representan el tiempo que un objeto necesita
para completar una tarea.
Mensajes
Los mensajes son flechas que representan comunicaciones entre
objetos. Las medias flechas representan mensajes asincrónicos. Los
mensajes asincrónicos son enviados desde un objeto que no va a
esperar una respuesta del receptor para continuar con sus tareas.
Líneas de Vida
Las líneas de vida son verticales y en línea de puntos, ellas indican la
presencia del objeto durante el tiempo.
Destrucción de Objetos
Los objetos pueden ser eliminados tempranamente usando una flecha
etiquetada «<<destruir>>» que apunta a una X.
Loops
Una repetición o loop en un diagrama de secuencias, es representado
como un rectángulo. La condición para abandonar el loop se coloca en
la parte inferior entre corchetes [ ].
Diagramas de estado UML
Un diagrama de estado UML (también llamado diagrama de
estado, diagrama de transición de estados o diagrama de
máquina de estados) muestra los estados por los que pasa una
máquina de estados finitos, es decir, un modelo de
comportamiento que consiste en acciones y estados o
transiciones a otros estados. El diagrama proporciona un estado
inicial y uno final, así como al menos un estado intermedio para
cada objeto
¿Para qué sirve el diagrama de estado UML?
Los diagramas de estado tienen como objetivo describir con
precisión el comportamiento de un sistema, respondiendo a
preguntas clave sobre qué sucede en estados concretos, cuándo
cambia el comportamiento, los desencadenantes y las
propiedades necesarias para los cambios. Son herramientas
útiles en el desarrollo para visualizar estados de objetos y las
condiciones de transición.
Diagrama de actividades UML
Un diagrama de actividades en UML (Lenguaje de Modelado
Unificado) es un tipo de diagrama que se utiliza para modelar el
flujo de trabajo o el comportamiento de un sistema o proceso de
negocio. Es útil para representar procesos, procedimientos y
algoritmos complejos en una forma visual fácil de entender.
Los diagramas de actividades muestran una secuencia de
acciones, un flujo de trabajo que va desde un punto inicial hasta
un punto final.
Diagramas de colaboracion y
comunicacion
El diagrama de colaboración es un tipo de diagrama de interacción cuyo
objetivo es describir el comportamiento dinámico del sistema de
información mostrando cómo interactúan los objetos entre sí, es decir,
con qué otros objetos tiene vínculos o intercambia mensajes un
determinado objeto.
Diagrama de componentes y
despliegue
Un diagrama de despliegue es un tipo de diagrama UML que muestra la
arquitectura de ejecución de un sistema, incluyendo nodos como
entornos de ejecución de hardware o software, y el middleware que los
conecta.
Los diagramas de despliegue se utilizan normalmente para visualizar el
hardware y el software físico de un sistema. Usándolo puedes entender
cómo el sistema se desplegará físicamente en el hardware.
Los diagramas de despliegue ayudan a modelar la topología de hardware
de un sistema en comparación con otros tipos de diagramas UML, que
en su mayoría esbozan los componentes lógicos de un sistema.
Diagrama de estructura compuesta UML
El Diagrama de estructura compuesta es uno de los diagramas más
nuevos, ya que fue incluido en la versión 2.0 de UML. Un diagrama de
estructura compuesto es un tipo de diagrama estructural que contiene
clases, interfaces, paquetes y sus relaciones, y que proporciona una
vista lógica de todo, o parte de un sistema de software. Muestra la
estructura interna (incluidas las partes y los conectores) de un
clasificador estructurado.
Elementos del diagrama de estructura compuesta:
Los elementos clave de los diagramas de estructura compuesta identificadas en
la especificación UML 2.0 son los siguientes:

Parte: una parte representa una función desempeñada en tiempo de ejecución


por una instancia de un clasificador o por una colección de instancias. La parte
sólo puede nombrar el rol, puede nombrar una superclase abstracta o puede
nombrar una clase concreta específica. La parte puede incluir un factor de
multiplicidad, como el [0 .. *] que se muestra para el Visor en el diagrama.
Puerto: Un puerto es un punto de interacción que se puede usar para conectar
clasificadores estructurados con sus partes y con el entorno. Los puertos pueden
especificar opcionalmente los servicios que prestan y los servicios que requieren
de otras partes del sistema.
Conector: un conector une dos o más entidades, lo que les permite
interactuar en tiempo de ejecución. El conector se muestra como una línea
entre una combinación de partes, puertos y clasificadores estructurados. El
diagrama muestra tres conectores entre puertos y un conector entre un
clasificador estructurado y una parte.
Colaboración: una colaboración es generalmente más abstracta que un
clasificador estructurado. Se muestra como un óvalo punteado que contiene
roles que las instancias pueden utilizar en la colaboración.
Clasificador estructurado: Representa una clase, a menudo una clase
abstracta, cuyo comportamiento se puede describir completa o parcialmente a
través de las interacciones entre las partes.
Clasificador encapsulado: Es un tipo de clasificador estructurado que
contiene puertos
Diagramas de paquetes UML
El diagrama de paquetes es uno de los diagramas estructurales
comprendidos en UML 2.5, por lo que, como tal, representa de forma
estática los componentes del sistema de información que está siendo
modelado. Es utilizado para definir los distintos paquetes a nivel lógico que
forman parte de la aplicación y la dependencia entre ellos. Es principalmente
utilizado por desarrolladores y analistas.
Es importante destacar que este diagrama es utilizado en los sistemas de
información con programación orientada a objetos. El objetivo principal del
diseño debe maximizar la cohesión y minimizar el acoplamiento.
Herramientas de modelado UML
Lucidchart:
Es una herramienta muy completa; ya que no solamente podrás
crear diagramas UML, sino múltiples diseños como: wireframes,
canvas, redes de datos, entre otros. Adicionalmente cuenta con
licencias gratuitas, de costo y académicas.
Diagrams:
Una de las peculiaridades que posee, es la capacidad de
respaldar tus diagramas en diferentes fuentes coo: google drive,
github, dropbox,one drive. Es una buenísima herramienta
puedes crear infinidad de diagramas y/o diseños de: redes,
negocios, software, infografías, iconos,etc
Cacoo:
Es una herramienta de diseño colaborativo. Es de costo y tiene
su versión gratuita. Contribuye a la lluvia de ideas y mejora
continua de productos. Permite trabajar con diseños de AWS,
Visio y múltiples integraciones como: Google drive, Adobe
Creative Cloud y Confluence
Genmymodel:
Buenisima herramienta web para modelar datos, te permite crear
diagramas UML,BPMN, ArchiMate, Journey Mapping, diagramas
de flujo y muchas más.

También podría gustarte