miércoles, 31 de octubre de 2018

GoF Estructurales


A continuación podrás encontrar dos enlaces, en los cuales verificarás unos ejemplos de cada uno de estos patrones, así mismo, se presentará un vinculo donde se podrá consultar un tutorial sobre cada uno de ellos con los presentes ejemplos.

Ejemplos:
https://drive.google.com/open?id=1p-jep7KZI4eCWIsBxBR4iuAB38iwLUBQ
Vídeo:
https://www.youtube.com/watch?v=5tLPVWpWe98&feature=youtu.be
Manuel Muñoz

martes, 23 de octubre de 2018

Presentacion GOF Estructurales




Presentación GOF Estructurales


En vídeo anexado en el link que aparece a continuación explicare los patrones GoF Estructurales con ejemplos fáciles de entender, cada uno de los ejemplo tienen un contexto, una representación gráfica y el correspondiente diagrama dando la solución a los problemas indicados en el mismo contexto.


Link para Acceder al Video:




Link para Acceder a la Presentación:

https://prezi.com/view/XNcIYtzCJARNmF9tMa4v/



Integrantes:

Yuliana Estefania Bacca Araujo

Video GOF Structural Pattern

Este es la presentacion explicada de mis patrones estructurales

Link: https://drive.google.com/file/d/1Tp7yS2C1Q5XUtClIFU3ZyR5T3QFt55JZ/view?usp=sharing

Carlos Julian Carranza Garcia

viernes, 19 de octubre de 2018

Video GoF Creacionales


Patrones GoF Creacionales








Autoras:
  • Marcela Andrea Bula Torres.
  • Yuliana Estefanía Bacca Araujo.
Ingeniería de software - Universidad Manuela Beltrán, 2018.

GoF Creacionales Abstract Factory


Abstract Factory





Lo que hacemos en este ejemplo es tener una fabrica de preguntas  la cual se relaciona directamente con nuestro proyecto, en esta fabrica de preguntas tendremos nuestra Fabrica Abstracta la cual se llama preguntas, esta fabrica abstracta tiene dos fabricas concretas la primera es de pregutas abiertas y la segunda que son preguntas de selección múltiple,  cada pregunta tiene productos abstractos; las preguntas abiertas que serian las de completar y de textos libres y para las de seleccion multiple tenemos las que son de única respuestas, las de varias respuestas correctas y falso y verdadero.
Nuestro producto concreto seria la pregunta que se genera en cada uno de los productos abstractos, las fabricas concretas son interfaces que se generan  y los productos abstractos extienden de ellas.

Neydaris Puentes
Kevin Rojas

GoF Creacionales



Un patrón de diseño es una solución general dada a un problema común en el diseño de software, este no es un diseño final que puede ser transferido a código, sino mas bien una descripción o plantilla de como solucionar un problema que se puede usar en diferentes situaciones.
Los patrones de diseño se usar para agilizar el desarrollo de software, al utilizar paradigmas de desarrollos ampliamente probados y bien establecidos, además de que permite mantener y extender el producto de software de forma más fácil, brindándole una proyección a futuro más sólida. La implementación de patrones de diseño ayuda a prevenir problemas que pueden causar grandes errores y aumentar la reusabilidad del código, así como también permite mejorar la facilidad de lectura del código para programadores y arquitectos que tienen nociones de cómo funcionan los mismos.
Una gran ventaja de los patrones de diseño es que permite que los equipos se comuniquen entre si con un lenguaje familiar y entender fácilmente las interacciones de estos en el software.

BlockScroller implementa AbstractFactory para definir temas del juego, así pues, se pueden crear motivos por las distintas estaciones o eventos, para este caso, se implementaron eventos de navidad y Halloween, con assets distintos, así como un diferente personaje principal, Jack en la versión de halloween y Santa en la versión de navidad.



El código del proyecto lo pueden encontrar en https://bitbucket.org/JCSOne/blockscroller/src/master/

GoF Creacionales


A continuación podrás encontrar dos enlaces, en los cuales podrás verificar unos ejemplos de cada uno de estos patrones, así mismo, se presentará un vinculo donde se podrá consultar un tutorial sobre cada uno de ellos con los presentes ejemplos.

Ejemplos


Tutorial


Integrantes: Eduard Casas y Manuel Muñoz.

Patrón Fábrica abstracta - Gof creacionales

En esta entrada compartiremos la explicación de las aplicaciones en casos reales de los patrones Gof creacionales, específicamente del patrón de fábrica abstracta.

¿Qué son los patrones Gof?



Los patrones GOF pueden entenderse como un conjunto o secuencia de variables constantes en procesos desarrollando una serie de recurrencias continuas, esto como objetivo de lograr la construcción de sistemas de software con limpieza, organización, funcionalidad y reutilizabilidad. (En este caso su aplicación es en la construcción de software, pero estos patrones son aplicables en cualquier tipo de sistema).

¿Patrón fábrica abstracta?


Este es un tipo de patrón creacional (se implementan en la búsqueda de la resolución de problemas que contengan creación de instancias, es decir donde habrá conceptos de abstracción, validación de existencias de las mismas y la reutilización máxima de cada una de ellas) en el cual una aplicación debe considerarse como una o más familias de productos. Este patrón permite crear mediante una interfaz conjuntos o familias de objetos ( más conocidos mediante su definición como productos) que dependen mutuamente sin una especificación de cual va a ser el producto concreto. 

Para la aplicación de este patrón hemos tomado parte de la estructura de un juego que hemos trabajado a través de este curso, denominado "Calabozos y Dragones". 



Link para una mejor visualización: Uml


En el ejemplo se manejan dos fabricas, una para crear personajes humanos y otra para crear dragones. Las personas y los dragones van a implementar los métodos de sus respectivas interfaces, definiendo comportamientos como el daño que hace el personaje ( teniendo en cuenta que los dragones queman y las personas atacan o se defienden con espadas. Se maneja de igual manera una fábrica general que nos permite especificar que tipo de personaje se va a crear, en cualquiera de los dos casos (dragón o humanoide) se pedirán los datos correspondientes en cada uno de sus constructores. 

Te invitamos a descargar  en el siguiente link el código de la aplicación del patrón de fabrica abstracta aplicada a este escenario explicado anteriormente:

Link de descarga: Abstract Factory

Desarrollado por:

Alejandro Moreno Sicua
Rodrigo Esteban Linares Torres 

Universidad Manuela Beltrán




Patrón Fábrica abstracta - Gof creacionales

En esta entrada compartiremos la explicación de las aplicaciones en casos reales de los patrones Gof creacionales, específicamente del patrón de fábrica abstracta.

¿Qué son los patrones Gof?



Los patrones GOF pueden entenderse como un conjunto o secuencia de variables constantes en procesos desarrollando una serie de recurrencias continuas, esto como objetivo de lograr la construcción de sistemas de software con limpieza, organización, funcionalidad y reutilizabilidad. (En este caso su aplicación es en la construcción de software, pero estos patrones son aplicables en cualquier tipo de sistema).

¿Patrón fábrica abstracta?


Este es un tipo de patrón creacional (se implementan en la búsqueda de la resolución de problemas que contengan creación de instancias, es decir donde habrá conceptos de abstracción, validación de existencias de las mismas y la reutilización máxima de cada una de ellas) en el cual una aplicación debe considerarse como una o más familias de productos. Este patrón permite crear mediante una interfaz conjuntos o familias de objetos ( más conocidos mediante su definición como productos) que dependen mutuamente sin una especificación de cual va a ser el producto concreto. 

Para la aplicación de este patrón hemos tomado parte de la estructura de un juego que hemos trabajado a través de este curso, denominado "Calabozos y Dragones".  


Link para una mejor visualización: UmlFábricaAbstracta

En el ejemplo se manejan dos fabricas, una para crear personajes humanos y otra para crear dragones. Las personas y los dragones van a implementar los métodos de sus respectivas interfaces, definiendo comportamientos como el daño que hace el personaje ( teniendo en cuenta que los dragones queman y las personas atacan o se defienden con espadas. Se maneja de igual manera una fábrica general que nos permite especificar que tipo de personaje se va a crear, en cualquiera de los dos casos (dragón o humanoide) se pedirán los datos correspondientes en cada uno de sus constructores. 

Te invitamos a descargar  en el siguiente link el código de la aplicación del patrón de fabrica abstracta aplicada a este escenario explicado anteriormente:

Link de descarga: Abstract Factory

Desarrollado por:

Alejandro Moreno Sicua
Rodrigo Esteban Linares Torres 

Universidad Manuela Beltrán










jueves, 18 de octubre de 2018

 
PRINCIPIOS GOF CREACIONALES 

Se presenta el programa de la fabrica asbtracta donde su principal funcion es la creacion de reinos, donde se muestra cada reino con su castillo y ejercito y rey cada uno tiene su propia interfaz donde so hijos de la interfaz principal que se llama fabrica reino donde nos permite generar cada reino de manera Adstracta siendo implementada en la clase creacion de reino.

Autores: Santiago Alejandro Gaviria Murcia ; Andres Felipe Calderon 
Vinculo de descarga:

miércoles, 17 de octubre de 2018

FabricaAbstracta

Mi aplicación utilizando el patrón creacional Abstract Factory, es sobre una fabrica que crea productos de hockey.

Click para ir a descarga en dropbox

Patrón de diseño - Abstract Factory

Patrón de diseño - Abstract  Factory




El patrón de diseño de software abstract Factory se usa para la creación de diferentes familias de objetos, trabaja alrededor de una superfábrica que crea otras fábricas.
En el abstract Factory se modela un interface responsable de crear una fábrica de objetos relacionados sin explícitamente especificar sus clases. Cada fábrica generada puede dar los objetos según el modelo de la fábrica, sea de tipo Joyas o Servicios. Los objetos creados por la fabrica Joyas son arete, cadena y reloj y en el caso de la fàbrica Servicios son mantenimiento, perforación orejas y soldadura.


Adjuntamos diagrama y proyecto de software con implementación del patrón creacional Abstract Factory.







Autoras:
  • Marcela Andrea Bula Torres.
  • Yuliana Estefanía Bacca Araujo.
Ingeniería de software - Universidad Manuela Beltrán, 2018.














































lunes, 8 de octubre de 2018

Principios SOLID

PRINCIPIOS SOLID



Inventado por Robert C.Martin para establecer los cinco principios básicos de la programación orientada a objetos y diseño. Estos principios tienen bastante relación con los patrones de diseño, en especial, con la alta cohesión y el bajo acoplamiento.

SRP: Responsabilidad simple. Destinar cada clase a una finalidad sencilla y concreta.
OCP: Abieto/cerrado. El diseño debe ser abierto para poderse extender pero cerrado para poderse modificar
LSP: Principio de Liskov. Crear todas las clases derivadas para que también puedan ser tratadas como la propia clase base.
ISP: Interfaces. Poder reaprovechar los interfaces en otras clases.
DIP:Dependencia. uso de abstracciones para conseguir que una clase interactue con otras clases sin que las conozca directamente.

Principios SOLID


Los principios SOLID fueron diseñados para solucionar problemas de la programación orientada a objetos y permitir el desarrollo de código que pueda satisfacer los requerimientos presentes, así como también la implementación de requerimientos futuros sin mayor traumatismo. El paradigma de la programación orientada a objetos permite abstraer objetos del mundo real en código, es por esto, que los principios se aplican a este paradigma.

S: Single Responsibility

Nos permite definir una responsabilidad a una clase, entre más responsabilidades tenga una clase, mayor va a ser el impacto al momento de agregar nuevos requerimientos, por lo cual es recomendable mantener responsabilidades únicas. Un ejemplo es la integración con redes sociales, si de repente, la interacción realizada con la red social cambia debido a las políticas de la misma, se debería tener una clase encargada únicamente de la interacción para que al momento de presentarse esto, los cambios que se deban realizar no se extiendan y puedan dañar otras partes del programa.

O: Open-Closed

Nos indica que el código debe estar abierto a extensiones y cerrado a modificaciones. Un ejemplo de como lograr esto son las figuras geométricas como circulo, cuadrado, rectángulo, triangulo, etc., en donde todas tienen perímetro, área, posición, alto, ancho, entre otras propiedades, en este caso es recomendable tener una clase o interfaz “figura”, que tenga las propiedades y a partir de esta crear nuevas figuras geométricas con sus especificidades.

L: Liskov Substitution

Indica que una clase hija puede ser reemplazada por una clase padre sin afectar el funcionamiento del programa. Un ejemplo de cómo no se cumpliría esto es el nombrado anteriormente, digamos que tenemos dos clases rectángulo y cuadrado, un cuadrado es en teoría un rectángulo con alto y anchos iguales, entonces al invocar propiedades como setAlto y setAncho, en un rectángulo se estarían modificando propiedades distintas, mientras que con un cuadrado, se modificaría la misma propiedad, lo que indica que la implementación de una interfaz seria mas apropiada.

I: interface Segregation

Indica como las interfaces deben ser específicas, es decir, es mejor tener múltiples interfaces pequeñas, en lugar de una interfaz grande, pues esto podría llevar a que se deban implementar métodos innecesarios para la clase.

D: Dependency Inversion

Propone depender de abstracciones y no de elementos concretos, digamos que nuestro sistema brinda al usuario la posibilidad de iniciar sesión con alguna plataforma como Twitter, si más adelante se quisiera cambiar el método de inicio de sesión por el de Facebook, se debería modificar la clase en donde se está haciendo el login, si por otro lado, tenemos abstracciones de módulos de login y la clase que hace el login solo invoca los métodos que se brindan en el módulo, se podría brindar la posibilidad de que la clase use cualquier modulo de login que se le asigne y se podrían crear o modificar los módulos de login de forma independiente sin alterar la funcionalidad inicial.

El proyecto se encuentra en: https://bitbucket.org/JCSOne01/solid/src

Principio Solid


Buenas noches adjunto el link donde se puede descargar el ejercicio de el principio de solid



https://drive.google.com/file/d/1gtQOO7hzhkLns0puG4mQYnJahXLyiK-_/view?usp=sharing

Principios SOLID

En conjunto de trabajo en nuestra asignatura de patrones y metodologías para la construcción de software, ha llegado el momento de entrar en la conceptualización y aplicación de los principios SOLID para el diseño y construcción de software de calidad.

¿Qué son los principios SOLID?

Podemos entenderlos como principios básicos de trabajo de desarrollo y diseño de código de calidad y de fácil mantenimiento, haciendo su implementación específicamente en el paradigma de la programación orientada a objetos. Con SOLID se busca principalmente que nuestra implementación de código sea mas legible, mejor estructura en dependencias y cohesión, además de obtener beneficios de crear sistemas extensibles y adaptables a diversos entornos de aplicación.

Acrónimos de los principios:


-Srp : se refiere al principio de responsabilidad única, en donde se define que cada clase debería tener solo una razón para cambiar, es decir, que cada una de estas debe poseer una sola responsabilidad, permitiendo así la contención de la propagación del cambio.

-Ocp: se refiere al principio abierto/cerrado, en el cual se define que las clases deben estar abiertas a extensiones pero cerradas a modificaciones. Esto busca que el software se vuelva específicamente mas extensible mediante la implementación de sus mismas clases, de igual manera brindando un mayor grado de seguridad en la estructura del software.

-Lsp: (principio de sustitución de Liskov) aquí se define que las herencias e implementaciones que realicen las clases hijas con respecto a una super clase deben ser completamente funcionales en cuanto a la definición de la abstracción.

-Isp: (principio de segregación de interfaces) en este principio se busca que los clientes no deben ser forzosamente dependientes de las interfaces que no utilizan. Las interfaces que se implementen deben tener una caracterización de estructura liviana, otorgando así mayores niveles de cohesión en la estructura general del sistema.

-Dip: (principio de inversión de dependencias) principio que establece que las clases de alto nivel no deben depender de las clases de bajo nivel, ambas deben depender de abstracciones. De igual manera, las abstracciones no deben depender de los detalles.

A continuación, te invito a descargar el siguiente archivo donde he implementado la funcionalidad y definición de cada uno de estos principios con un conjunto determinado de entidades que se relacionan entre si.

Link de descarga: SOLID

Descripción del Archivo

En el archivo anterior, están contenidos específicamente dos ejecutables, uno correspondiente a la aplicación del principio LSP y otro a SRP.

Para LSP, se tomo como ejemplo el modelamiento y la definición de un conjunto de animales (Alacrán, tarántula, perro y gato) mediante una abstracción y su respectiva herencia. Sin embargo para poder cumplir este principio, es necesario tomar en cuenta que no todos los animales se rigen bajo los mismos comportamientos.

En el caso de SRP, es importante definir estrictamente las responsabilidades y funciones reales de una entidad en un sistema determinado. En este ejemplo se tomó el modelamiento de un taller para autos. En el interactúan entidades como los carros, técnicos, lavanderos y personas dedicadas a la lubricación. ¿Qué función crees que cumplen realmente cada uno?

Te invito a conocer mas de los principios SOLID y a entender mejor los ejemplos mencionados anteriormente mediante la descarga del otro archivo referente a la representación grafica en diagramas UML de cada uno de los ejemplos trabajados.

Diagramas: Diagramas



Elaborado por:

Rodrigo Esteban Linares Torres

Universidad Manuela Beltrán
Patrones y metodologías para la construcción de software













domingo, 7 de octubre de 2018

SOLID PATRONES


PRINCIPIOS SOLID

En esta publicacion se encuntra el link de descarga del codigo del programa con todos los principios solid. Donde se muestra un ejemplo de cada uno de los principios para que sea mas claro su comprension .




Autor: Santiago Alejandro Gaviria Murcia 
Codigo:1016095368
Correo: santi20alejo@hotmai.com

Principios solid.

Cordial saludo compañeros, para esta ocasión realicé mis ejemplos prácticos siguiendo los principios de responsabilidad única, y principio abierto cerrado.

Responsabilidad única: Para este ejemplo, se propone crear un programa que le permita al usuario hallar el perímetro de un cuadrado. Consta de dos clases, (Rectángulo y perímetro) que cuentan con una única responsabilidad, definir los lados del rectángulo y hallar el perímetro de este respectivamente.

Principio abierto cerrado: Para este principio, se hace un ejemplo bastante sencillo, se crea una clase abstracta llamada Animal, la cual tiene dos métodos, comer y dormir. Dos animales heredan estos métodos y los implementan de diferente forma. El hacer de esta forma el software, permite que sus clases estén abiertas a extensiones pero no a modificaciones.


Principios Solid


Buen día, en el hipervínculo en contrado en la parte inferior, podrás encontrar dos ejemplos sobre los principios Solid, en los cuales, se especifica detalladamente el principio de Liskov y segregación de interfaces.

Enlace

Principios SOLID - Alejandro Moreno

Buenas compañeros. Hoy hablaremos sobre los principios SOLID


Los principios SOLID son un conjunto de principios utilizados en el  paradigma de la programación orientada a objetos con el objetivo de crear código limpio, óptimo, manejable y entendible, de
manera que el resultado final sea lo mejor posible. Estos principios fueron formulados por Robert Cecil Martin en los comienzos de los 2000 y se basan, principalmente, en eliminar dependencias que puedan hacer de nuestro Software un programa engorroso y difícil de manipular.

Estos principios son:

  • S: Single Responsability Principle
  • O: Open / Close Principle
  • L: Liskov Substitution Principle
  • I: Interface Segregation Principle
  • D: Dependency Inversion Principle
Como ejemplo de implementación, yo escogí los principios de Single Responsability Principle y Liskov Substitution Principle.

  1. Single Responsability Principle: El programa evidencia el proceso de impresión de un documento en una impresora, destacando solo una responsabilidad por clase. En total son 3 clases: Persona, Impresora y Documento. La persona envía un documento y la impresora lo imprime. 
  2. Liskov Substitution Principle: Este ejemplo es muy interesante, pues se crea una estructura titulada Car, que define una de las características más comunes de un carro: el modelo, que es implementada por la clase SportCar, que define la posibilidad de establecer qué velocidad tiene un vehículo deportivo, para ser implementada por la clase BugattiVeyron, que definirá qué velocidad maneja este modelo.
Para ver más a detalle estos ejemplos, los invito a descargar el siguiente archivo..

Gracias por su tiempo, espero haya sido de su agrado!!

Principios SOLID

dejo adjunto un archivo .rar con un programa de ejemplo de dos de los principios SOLID que son principio de abierto y cerrado y el principio de segregación de la interfaz el ejemplo consiste en un programa que calcula el área, perímetro y volumen de una figura geométrica


https://1drv.ms/u/s!AgZYIoOufzuKxX5Dm1vBX_sxFVrT

Patrones SOLID


Carlos Julian Carranza Garcia - UMB

Patrones SOLID (SRP y OSP)

Patrones SOLID

viernes, 5 de octubre de 2018

aplicación principios Solid (Esteban Posada)

Mi Aplicación en la cual muestro cada uno de los principios Solid por medio de ejemplos, y dos ejemplos creados por mí, uno de el principio de responsabilidad simple y uno de segregación de interfaces

Patrones GoF Final

Patrones Gof Final Proyecto para descargar https://drive.google.com/drive/folders/199j1kCiwIUcIhfggcftmzExUgxFUgZ5s?usp=sharing