jueves, 31 de octubre de 2013

Modelo UML diagrama de clases del Juego de cartas UNO

Buenas noches comunidad


En la entrada de hoy mi compañero Manuel Cepeda y yo Andrés Murcia, vamos a empezar con un nuevo proyecto propuesto para la materia .NET + SQL, en esta oportunidad vamos a mostrarles como se haría un juego de cartas llamado UNO; antes de empezar a modelar necesitamos saber las reglas del juego, debemos saber que este juego se compone de 108 cartas, pero vamos a trabajar con 104 no vamos a tener en cuenta los 4 comodines de cambio de color + roba 4, la baraja se compone de 19 cartas con numeros del 0 al 9 azules, igualmente amarillas, verdes y rojas, hay también 8 cartas especiales roba+2, dos de cada color, 8 cartas especiales cambia de sentido dos de cada color, 8 cartas especiales pierde el turno dos de cada color, 4 cartas especiales comidín cambio de color, y 4 cartas especiales comodín cambio de color + roba 4 "estas ultimas no las vamos a tener en cuenta"; Bastaría con leerse un breve manual de instrucciones para saber las reglas del juego pero mas adelante nosotros las modelaremos para ustedes y validaremos en programación que el juego cumpla estas reglas; Inicialmente y para esta entrada vamos a mostrarles como hariamos el modelo UML, para ello vamos a usar starUML, este software es facil de encontrar en la web, le damos descargar y al abrirlo comprobamos que quedo instalado correctamente…


Desde aca le especificamos el nombre y la ruta en la que queremos guardar nuestro proyecto de diagrama de clases, le damos defualt aproach for UML aceptamos y en el siguiente entorno empezamos a trabajar.


Aca vemos que tenemos una barra de herramientas en la parte izquierda la cual tiene todos los elementos que necesitaremos para trabajar  nuestro diagrama de clases, vamos a esta barra de herramientas y agregamos las respectivas clases, vamos a crear una clase jugador que  tiene el siguientes atributo o característica, a nuestra forma de verlo, un alias de tipo string y que la denotamos con un (-) que quiere decir que va ser una caracteristica privada solamente del jugador, en esta misma clase en sus acciones que las vamos a definir por fuera de la clase exactamente en la flecha de asociación directa de clases la definimos como acciones concretas con un (-) debido a su privacidad de clase a clase, tenemos las cartas del jugador en una lista dinamica, debido a que el jugador puede elegir cualquiera de las cartas que tiene en su posesión para jugarla en su turno y va a ir relacionada con la clase abstracta principal a nuestra forma de verlo llamada carta veamos esta relación en la siguiente imagen de lo que les describimos arriba.


En esta imagen podemos ver un asterístico este representa que las cartas del jugador pueden variar de 0 a muchas cartas, entonces como esta cantidad pueden variar dependiendo de las penalizaciones entonces se simboliza con un (*). La clase que a continuación definimos es Carta que ya la había mencionado antes esta es abstracta como se ve en la anterior figura, sus atributos los hereda de otras clases por lo que no tiene definido atributos propios dentro de la clase. Veamos a continuación otra clase llamada Mazo, este debe tener 104 cartas y es una lista ordenada inicialmente pero ramdomica despues de ser barajada, esta se comporta como pila (LIFO) quiere decir que las ultimas que entran son las primeras en salir, ya que uno va tomando la carta de arriba del mazo la ultima en entrar. Veamos la siguiente imagen de la clase Mazo y como va relacionada con la clase pote. Que es una relación de dependencia el pote depende del mazo por esto va en lineas punteadas.


 Tenemos otra clase llamada pote que se ve en la figura, esta tiene como atributo o característica validar_secuencia(); ya que sobre este se va a desarrollar el juego entonces necesita validar que lo que se este jugando coincida por así decirlo con las reglas del UNO. y tenemos entre sus acciones de clase a clase la de cartas pote que es una lista tipo LIFO también ya que la última carta que quedo boca arriba es la primera para seguir la secuencia. Veamos ahora que el patrón solitario o singleton entran en acción desde una clase llamada Partida hasta la clase Pote y hasta la clase Mazo, la clase Partida se va a encargar de almacenar los turnos quien gano la parida "Alguno de los Alias" se encarga de recoger los datos y almacenarlos. los datos que se consideren necesarios.

Tenemos aca otras dos clases llamadas respectivamente CartaNumero y CartaComodín para CartaNumero vamos a definirle un atributo que va ser el numero de tipo entero "int" del 0 al 9 y privado para dicha clase (-) para CartaComodín no le vamos a definir atributos internamente pera esta va a ir asociada a otra clase llamada ComodinUNO por el momento vemas la imagen de las respectivas clases y como van asociadas por medio de una generalización hacia la clase Carta.



La siguiente clase la vamos a llamar ComodinUNO y va ser de tipo <<enum>> esta clase tiene como atributos las cartas comodín del UNO sea que tiene el mas 2, el Cambio de Sentido, el Salto de Turno y el Cambio de Color este va a ir relacionado con la clase CartaComidin por medio de una asociacion desde CartaComodín "#tipoComodin" hasta ComodinUNO veamos la figura para hacernos a la idea.



Listos ya estan todos nuestras clases definidas e implementadas en el diagrama de clases, despues de haberlas descritas todas y una por una, vamos a mostrar nuestro módelo de diagrama de clase con todas las relaciones que existen entra cada clase veamos el modelo completo



En nuestro diagrama de clase UML encontramos notas que son las que estan como en una especie de rectanguno o cuadrado con una pestaña doblada, en la parte superior derecha, estas nostas no son clases, pero nos ayudan a entender mejor nuestro modelo y tienen un NoteLink que siempre va desde la clase hasta la nota, estas notas nos dan información adicional de las acciones que deben cumplir dichas clases, tambien nos dicen que esta pendiente por implementar como en el caso de la clase CartaComodín que sabemos que necesitamos implementar el conrtrolador en esta instancia pero esto va ser programado en C# y por lo tanto va ser demostrado hasta entonces, tambien tenemos notas de tipo informativas como la que esta en la esquina superior derecha, nos habla de la multiplexación de las relaciones que existen entre clases de muchas cartas del jugador a muchas cartas del juego, o de una carta del jugador a muchas cartas del juego etc. Este es nuestro modelo UML de diagrama de clases corregido y analizado clase por clase para asegurarnos que se cumplan con las reglas del negocio o reglas del juego, espero este modelo les sea útil y con base en este vamos a seguir con las siguientes etapas de programación  implementación web e implementación de base de datos. 

"Solo triunfa en el mundo quien se levanta y busba a las circunstancias, creándolas si no las encuentra".
George Bernard Shaw




martes, 15 de octubre de 2013

Base de Datos Access del modelo ER, conexión desde Visual Studio + Consultas LinQ

Buenas tardes bloggeros en el día de hoy vengo a explicarles como hacer una base de datos access para el modelo que hemos venido trabajando de E-R de los cuadriláteros y luego lograr conectarla desde Visual Studio, esto como primer paso y posteriormente lo que vamos hacer son unas consultas de esta base de datos con los campos que hemos definido dentro de estas. 

Bueno primero vamos y abrimos Microsoft Access--->abrimos un proyecto de nueva base de datos---> y le damos un nombre a nuestra base de datos en mi caso le puse Parcial2Corte, vamos a las pestañas de la parte de arriba en la segunda de ellas dice crear como se puede observar en la figura donde tengo el cursor puesto:


Acá le damos crear tabla--->y creamos tres diferentes tablas como vemos en el modelo E-R que tenemos tres diferentes relaciones entre tablas, la primera tabla como vemos en el modelo se va a llamar: tabla cuadrilátero la segunda tabla la vamos a llamar: tabla tipo_cuadrilátero y la ultima tabla la llamaremos tabla_histórico siguiendo la normatividad del modelo E-R, veamos una imagen para hacernos a la idea de nuestra tres tablas:


Una vez creadas nuestras tablas las vamos a relacionar las unas a las otras, como en nuestro modelo E-R tenemos llaves primarias y foráneas y hacemos una relación de uno a muchos, uno desde nuestra tabla tipo_cuadrilátero a muchos hasta la tabla cuadriláteros, lo mismo con la tabla_histórico hasta la tabla cuadrilátero una vez hecha esta relación nos va quedar algo como lo de la imagen que es muy similar a nuestro modelo E-R:



Ahora bien lo que sigue será empezar a llenar las tablas, en cada uno de los campos agregamos la información que corresponda vamos inicialmente a crear un cuadrilátero de cada forma osea un rectángulo, un cuadrado, un rombo, un paralelogramo un trapezoide cada uno con sus respectivas características veamos donde podemos hacer esto---> dentro de la tabla cuadrilátero:



Una vez terminado de llenar todos los campos de todas las tablas procedemos a guardar, e investigando y leyendo algunos foros nos podremos dar cuenta que una base en Access no es posible conectarla a LinQ ya que este trabaja con bases de datos SQL, mas sin embargo no es trabajo perdido esta base de datos Access la podemos utilizar si vamos a subir la base de datos utilizando Visual Studio, bueno procedamos abrimos un nuevo proyecto, o podemos trabajar desde el que veníamos trabajando. Acordémonos un poco de como subimos nuestra base de datos Northwind que esto nos va ser útil, vamos a la parte de Visual Studio donde esta la base de datos para crear unas tablas (3 exactamente las que creamos anteriormente en Access) veamos la figura que nos indica como hacerlo y tambien crearemos un forms llamado Parcial2.

  

Lo siguiente que vamos hacer es crear la conecxión base de datos utilizando SQLEXPRESS, para ello tenemos que tener el motor de alguna versión de SQL en mi caso tengo el SQLEXPRESS 2008 corre perfecto con Visual Studio 2012 y lo que hacemos desde Visual Studio es lo siguiente


Como cuando hicimos la conexión de base de datos worthwind seguimos esa serie de pasos y finalmente llegamos a la configuración de origenes de base de datos le damos siguiente veamos la figura:

Esto lo hacemos por cada una de las tablas que tenemos; recordemos que tenemos 3 tablas aca les dejo la imagen de como debe ir quedando las tablas, voy a mostrarles la tabla cuadrilatero con sus respectivas características:

Finalmente al correrlo y haberlo relacionado con las otras tres (3) tablas nos debe quedar de la siguiente manera nos da los datos que le habíamos ingresado a una de las figuras cuadriláteros, por ejemplo cuando consultamos el cuadrado la hora o la fecha o los lados o incluso la cantidad de cuadriláteros existentes, todo esto hecho desde Access e importado a Visual Studio, en este caso voy hacer la consulta de tipo de cuadrilatero: cuadrado y obtenemos la siguiente respuesta desde la base de datos.


Bueno eso es todo gracias por la atención espero este post les sea de ayuda!!

domingo, 6 de octubre de 2013

Uso de las bases de datos Northwind como ejemplo para trabajar con C#

Hola comunidad hoy voy a explicarles que es una base de datos Northwind y como la podemos usar de ejemplo para utilizarla en C#, Northwind es una conocida base de datos de ejemplo de Microsoft que se utiliza en multitud de libros, cursos y artículos para ilustrar todo tipo de conceptos de acceso a datos. Esta base de datos simula la información acumulada del día a día en una empresa ficticia llamada Northwind Traders. Incluye tablas para clientes, proveedores, facturas, líneas de factura, regiones comerciales… y a tra vés de ellas aporta ejemplos de los principales tipos de relaciones entre tablas, tipos de datos habituales, etc… por lo que es muy apropiada para el aprendizaje del manejo de bases de datos. Es importante saber como trabaja y como podemos instalar esta base de datos que a pesar que ya es un poco des-actualizada y no contempla ni el correo electrónico, No obstante lo cierto es que no se deja de utilizar, y constantemente nos encontraremos ejemplos que hacen uso de ella, por lo que conviene tener claro cómo podemos obtenerla y ponerla en marcha en nuestro sistema. 


Como primera medida debemos instalar una versión completa de SQL server 2006 en adelante, en mi caso voy a descargarme SQL server 2008 ya que esta versión corre perfectamente para windows Vista Service Pack 1 de 32bits y es preciso descargarse una version completa ya que las que vienen con el Visual Studio son versiones express y no traen todos los componentes que necesitamos. Una vez instalado el SQL Server 2008 vamos a buscar las bases de datos Northwind, voy a dejarles un link de donde yo me las he descargado: http://www.microsoft.com/en-us/download/confirmation.aspx?id=23654 de la pagina de Microsoft, debemos seguir los pasos que nos indican, luego de instaladas vamos al menu de inicio encontramos una carpeta que dice Microsoft SQL Server 2000 sample Database Scripts, le damos doble-click a la carpeta y encontramos dos archivos que son los que debemos copiar a nuestra carpeta donde tenemos instalado el SQL  veamos la siguiente imagen para saber de que carpeta a cual otra debemos mover estos dos archivos:


en mi caso la carpeta de SQL Server la busco en Archivos de Programas ----> Microsoft SQL Server ---> MSSQL10.MSSQLSERVER---->MSSQL---->DATA y ahi mismo pego los dos archivos de la base de datos Northwind. Posteriormente abrimos SQL en el menú de inicio encontramos el sub-menú que dice Microsoft SQL server 2008--->Managment Studio, nos va a pedir nombre y contraseña que hemos proporcionado al instalar el usuario SQL de administrador de base de datos en mi caso anda así: Nombre del Servidor: AndresMurs1 y la contraseña que yo le proporcioné anteriormente. 

Al hacer la conexión nos va a una pantalla como esta: 


Aca podemos encontrar las bases de datos existentes, pero todavía no la de Northwind que nos interesa, entonces vamos a la parte de conectar en la barra de herramientas ---->Bases de Datos---->Click derecho---->Adjuntar luego buscamos una base de datos con el botón agregar, nos va a enviar directamente a la carpeta Data y allí podremos encontrar la base de datos Northwind, podemos hacer una consulta y darnos cuenta que la base de datos Northwind quedo instalada correctamente y se puede entrar digitandole un comando correspondiente de select* Data base existente. Este mismo ejemplo se puede abrir con la interfase de visual studio C# como habíamos venido trabajando al anterior base de datos de los cuadrilateros. Feliz noche bloggeros y hasta una próxima entrada.