domingo, 3 de noviembre de 2013

Tutorial de como crear una página Web usando Visual Studio 2010

Buenas noches comunidad

En esta oportunidad vengo a introducirlos en las herramientas básicas para crear una página web con Visual Studio 2010, que tambien se puede hacer con Microsoft Visual Web Developer y debería ser muy parecido una vez instalada la herramienta lo que hacemos es ir a nuevo proyecto y le damos en la aplicacion web ASP.NET veamolo en la figura:


Una vez seleccionado este menú le damos un nombre y una ubicación la cual tengamos presente para saber donde esta nuestro archivo, uno vez creado esto podemos ir a a la carpeta donde lo guardamos en mi caso C://---->luego docuementos----->Visual studio 2010------>Project y dentro de esta carpeta vemos que hay varios archivos .apsx que son de las hojas de estilo de cascada para AJAX, basicamente esto quiere decir que aunque hagamos todo por medio de objetos arrastrandolos como en visual basic nos queda un soporte html que nos da una estructura de una pagina web en este lenguaje. 

Una vez creado el formulario ASP.NET nos va salir un código inicial que en este caso es lo que hay por defecto de código html hasta el momento al ir agregandole cosas nos va a ir saliendo el código html sin mayores esfuerzos, esta es una de las grandes ventajas de utilizar esta herramienta y no estar programando linea por linea, 

Veamos nuestro código inicial que nos sale, bueno yo le he ido agregando par de cosas pero ahorita voy a explicarles que le he agregado, pero inicialmente el código que sale es el que muestro en este pantallazo..


Para poder hacer buenas páginas tenemos que manejar las ventanas de propiedades principales de esta software, si ya hemos trabajado antes en visual studio nos damos cuenta que sus propiedades en las respectivas ventanas son muy parecidas, encontramos botones labels textbox tal y como en visual studio, ya familiarizados con estas herramientas vamos agregar un boton un label y un textbox en nuestra parte grafica, importante darnos cuenta que contamos con la parte grafica con la parte con la parte de código y con una parte híbrida o dividida, pues al irnos a la parte grafica o de diseño agregamos estos elementos arrastrandolos, luego vamos a la parte de herramientas buscamos una que dice calendario y tambien lo agregamos debajo de el label del boton y del textbox tal y como se muestra en la siguiente figura


Lo siguiente sera ir a la parte de explorador de soluciones en la parte izquierda, buscamos el buscamos el ASP que creamos con anterioridad en mi caso yo le puse PrimeraPaginaWeb.aspx le damos click derecho y posteriormente establecer como pagina principal----->lo siguiente sera guardar Ctrl+S y ejecutamos con Ctrl+f5 el resultado será que lo podemos reproducir en nuestro buscador, con una conexion local sin necesidad de haber utilizado un ISS ("Internet information Service") observemos como lo reproduciría el buscador yo por defecto utilizo Opera así que lo reproducirá en este buscador.

Esto sería todo lo que necesitaremos ver en este tutorial, espero les halla servido como guia para subir sus propias paginas web, de manera mas sencilla que digitando linea por linea del codigo php + html de cada página; Para mayor información guiarse por medio de este turorial http://msdn.microsoft.com/es-es/library/k4cbh4dh%28v=vs.100%29.aspx

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.

domingo, 29 de septiembre de 2013

Bases de Datos SQL Server en el proyecto de Cuadriláteros de C#

Hola amigos que tal el fin de semana, bueno en esta oportunidad voy a explicarles como hacer bases de datos en unos pasos muy sencillos en poco tiempo y sin necesidad de meterse con el tedioso código SQL por el momento, esto quiere decir que en el momento no vamos a utilizar código para hacer bases de datos, las vamos a crear manualmente y arrastrándolas, ya que esta ventaja no la brinda C#, bueno como primera medida debemos abrir nuestro proyecto existente de cuadriláteros en el vamos a trabajar una base de datos global llamada cuadriláteros, el primer paso es ir a add new items vamos a clickear donde dice service based database le ponemos un nombre en mi caso le puse proyecto cuadrilateros, cancelamos la configuración de la base de datos por el momento, luego nos vamos a la pestaña de tablas y creamos una tabla, cuando hacemos esto nos aparece una ventana como la siguiente:


Al crear la base de datos con todos los componentes como se ve en la figura es necesario programar un botón el cual haga referencia a calcular la figura deseada con las características que le hemos pedido al usuario en nuestra base de datos, es necesario utilizar el siguiente código para configurar este botón y que al clickear nos muestre la figura que calculó el programa con los datos que le hemos insertado:

// Redefinimos como mostrar la figura
public override void Muestra()
{
   Graphics g = control.CreateGraphics();
   g.DrawRectangle(myPen,x,y,ancho,alto);
   visible = true
Podemos ver todos los atributos que le dimos a la base de datos para poder hallar la respectiva figura de cuatro lados y posteriormente así mostrar a cual cuadrilátero pertenecen todas esas características, es importante recordar que cada campo de la base de datos se debe llenar con su característica correspondiente sea varchar o nchar o decimal o float o dependiendo de su característica, también como segunda medida se debe asociar el botón calcular figura con las cuadriláteros que hemos instanciado ya en el momento para que este botón valla a la base de datos y nos pueda generar la figura correspondiente. Como podemos ver también la ventaja de usar una base de datos es que se puede modificar los valores de cada figura y al sobre-escribir con el override lo que hacemos es crear sobre la figura existente una nueva con las características insertadas en nuestra base de datos, tal cual y vimos en uno de los videos de youtube: https://www.youtube.com/watch?feature=player_embedded&v=3w2JkLcp-UA este es el URL del video por si necesitan recordar los conceptos, en el que vimos como al final Tim inserta un dato y lo puede modificar sin ningún problema y queda guardado en la base de datos.

Bueno Bloggeros acá les dejo el enlace de mi proyecto con base de datos:
https://www.dropbox.com/s/tutg8aaa30463en/Proyecto%20Cuadrilateros%20DB.rar


Nota: en visual studio 2012 corre bien y con windows 7 halle un problema al intentarlo correr con visual Studio 2010 y con windows vista, no estoy seguro pero puede ser un problema de compatibilidad.


domingo, 22 de septiembre de 2013

Extensión del Modelo "Vista" del proyecto Cuadriláteros

Buenas noches bloggeros, como ya nuestro proyecto a tomado vuelo, en esta entrada quiero darles a conocer los cuadriláteros que hemos venido trabajando, también unos últimos que acabo de implementar, los que habíamos venido trabajando son el rectángulo que hereda directamente de la clase abstracta cuadriláteros, el cuadrado que hereda de la clase rectángulo, habíamos trabajado el rombo que hereda también de la clase abstracta cuadrilátero, y dos nuevos que en esta entrada voy a explicarles como se hallan sus respectivas áreas y perímetros, estoy hablando de el paralelogramo y el deltoide también conocido como trapezoide por algunos textos de algebra; Bueno para empezar nos conviene dejar claro como se halla la base y el perímetro de estas últimas 2 figuras que no las habíamos implementado a nuestro proyecto, para el paralelogramo es importante saber que el Area se halla multiplicando la base por la altura "A=bxh" pero al hallar el perímetro nos debemos valer de un ángulo, el angulo α interno que se ve en la figura:


Para de esta forma hallar el lado a que nos interesa para sumar el lado a + lado + lado a + lado b y así hallar el perímetro, valiéndonos de las propiedades trigonométricas tenemos que sinα= cateto opuesto / hipotenusa, siendo la hipotenusa el lado a, despejando de acá y encontramos el lado a y ya con estos tres datos una base una altura y el ángulo interno que le pidamos al usuario podremos encontrar el área y el perímetro. Ahora para el deltoide necesitamos únicamente 2 datos, una Mediatriz que es lo mismo que fuera una Diagonal Mayor en el caso del rombo, y una diagonal menor veamos una figura para hacernos a la idea de lo que es un deltoide:


Podemos observar que la Mediatriz y la Diagonal Menor forman cuatro triángulos los cuales podemos saber cada una de sus áreas debido a que conocemos su base y su altura, si hacemos estas operaciones sumamos cada una de las áreas de los triángulos nos podemos dar cuenta que reduciendo términos el Área vendría siendo igual a D*d/2 y el perímetro lo hallamos fácilmente aplicando pitágoras en cada uno de los triángulos para hallar las hipotenusas correspondientes a los lados del deltoide. teniendo clara esta información ahora si vamos a  nuestro proyecto en Visual Studio C# y con base en el proyecto que veníamos trabajando en las anteriores entradas le agregamos estas dos figuras, observemos en nuestro modelo de vista como debe estar quedando nuestro proyecto con todos los cuadriláteros que hemos trabajado:


Acá podemos ver los 5 cuadriláteros que debimos haber implementado en nuestro proyecto, sino fue así no hay problema porque acá les voy a refrescar conceptos y también les voy a adjuntar mi proyecto de C# para que con este se puedan guiar es las partes que mas tengan dudas, bueno es esta imagen se puede ver los cuadriláteros que tenemos en el rectángulo necesitaremos únicamente dos datos la base y la altura, en el cuadrado necesitaremos un solo dato un lado, en el rombo necesitaremos dos datos también una diagonal mayor y una diagonal menor, en el paralelogramo necesitaremos tres datos como ya explique al principio de este post y en el deltoide también dos datos la mediatriz y la diagonal menor. Como pudieron notar yo diseñe este modelo de tal forma que cada cuadrilátero es un botón con el fin de escoger el que uno quiera hallarle el área y el perímetro veamos en la siguiente imagen como se ve nuestro proyecto cuando lo corremos y escogemos un cuadrilátero para calcular área y perímetro.


En este caso escogimos el Rombo y podemos observar que al ejecutarse no aparecen los datos de los demás cuadriláteros únicamente del que nos interesa en ese momento, esto se logra en primera instancia poniendo visible false en las propiedades de cada uno de los labels y textbox y segundo para que al hacer click aparezca la info de nuevo, se hace con código, pero no se preocupen por este código al final de mi post les dejare el proyecto, mientras tanto es importante que entiendan muy bien como vamos a implementar las fórmulas de cada cuadrilátero al código y sobre todo entender como trabaja la herencia la sobrecarga "override" el patrón solitario "singleton" para definir un controlador sobre cada una de los cuadriláteros a crear "ctrl". De este proyecto podemos darnos cuenta que el perímetro se instancia general para todos los cuadriláteros mientras que el área si varía como lo habíamos recalcado anteriormente, por lo que calcule_area es abstracta mientas que calcule_perimetro no lo es, y es importante tener esto claro. 

Ahora bien es muy importante manejar buen conocimiento lógico en cuanto al código que se va a implementar podemos ver en la imagen de arriba que cuando el usuario digita un valor con puntos decimales el area y el perímetro tambien va a retornar con puntos decimales esto se logra con un .ToString("F") o ToString("d) marca los decimales y los opera según lo que corresponda, también es importante darle el atributo de "private" a cada botón al codificarlo para que aparezca cuando tenga que aparecer, quiere decir cuando uno le da click sobre la respectiva figura de cuatro lados. 

Ahora veamos como esta distribuido nuestro proyecto es muy importante el orden, manejar de ser posible la nomenclatura Hungara con el fin de facilitar a otros programadores el entendimiento del código, y como se ve en esta imagen crear elementos a parte y con sus respectivos nombres para que se vea en este caso el modelo vista-controlador veamos:


Podemos ver que en una carpeta esta el modelo en la otra esta la vista y el otra esta el controlador, esta separado los recursos que vamos a necesitar que en este caso son las imágenes, también cada .cs se hizo a parte para no confundirnos este orden también aplica cuando nombramos los botones y los labels y otros elementos que utilicemos en el proyecto, para cuando vallamos a programar no tengamos inconvenientes de haber invocado un método que se llame parecido o que entre en conflicto con otro. Es claro que hay que pulir mas este modelo ya que cuando el usuario no agrega ningún valor en las casillas de base y altura por ejemplo este marca un error y este error es de validación por ejemplo veamos lo que pasa en mi proyecto cuando no metemos ningún dato.


   
Acá intentamos calcular el área y el perímetro del rectángulo pero el usuario no le agregó ningún valor en base y altura nos va aparecer el siguiente error:


Estas validaciones y detalles los trabajaremos en nuestro próximo post, por el momento es preciso entender todo lo que se ha visto, cada una de las fórmulas para calcular área y perímetro, también como funciona el controlador para crear un cuadrilátero y como esto evita la saturación de memoria, por ejemplo con la utilización de este controlador se evita crear una nueva figura de la misma especie todo el tiempo, sino que la sobre-escribe no se utiliza new_cuadrado sino desde el controlador si ya creo un cuadrado se sobre-escribe. bueno sin mas largas al asunto aqui les dejo mi proyecto espero les sirva.



sábado, 31 de agosto de 2013

Modelo Vista Controlador (MVC) aplicado al proyecto de cuadrilateros...

Hola de nuevo y bienvenidos a mi blog, en está oportunidad voy a explicarles el modelo de Vista-Controlador aplicado al proyecto que hemos venido trabajando "Proyecto de Cuadrilateros" ; Sin mas preambulos de lo que se encarga el modelo de vista-controlador es de separar cada uno de los métodos que se invocan y ponerlos en la fase o en la zona en donde corresponde, ya sea la parte de vista, o en el control o en el modelo esto es un poco dificil de entender, pero a su vez es muy util porque nos permite ver organizadamente cada elemento a donde pertenece, y como va organizado dentro del modelo general. veamos nuestro modelo vista-controlador (MVC) con UML para entenderlo dentro de nuestro proyecto.


Al observar y analizar nuestro modelo de Vista-Controlador tenemos tres niveles y analizandolos el primero es la vista: en esta tenemos todo lo correspondiente a la parte visual del programa como labels botones textbox combobox, todo el entorno gráfico contenido en el windows forms, tenemos tambien la parte de control o controlador: en esta fase debemos controlar las características que nos pide el usuario, si este nos dice que quiere un rombo generamos un objeto tipo cuadrilatero pero en caso de que nuestro usuario eliga haver otra figura reutilizaremos la clase abstracta cuadrilatero y generaremos un entorno nuevo de trabajo para poder graficar esta nueva figura obvio con características ya establecidas por la clase cuadrilatero, lo mismo con cuadrado que va a heredar de rectangulo;y en la fase de modelo es lo que hemos venido trabajando de herencia pues aca vemos como los diferentes cuadrilateros heredan de la clase superior cuadrilatero que además es abstracta.

De aca en adelante usamos lo que es el constructor privado esto con el fin de que sea la misma clase controlador la que lo maneje, la variable del método controlador a la que hemos llamado crtl esta la vamos a declarar como estatica "static" en programación y porque estatica pues para que solo se use una vez y no pueda ser modificada o instanciada de nuevo, esto con el fin de tener todo bien organizado como lo habiamos mencionado antes y tambien por si se requiere incluir mas metodos atributos o figuras se tenga bein claro donde esta cada cosa.

A partir de aca ya al heber definido un metódo "estatico" vamos a ahorrar por decir así la memoria que utilizamos en el computador para crear los distintos cuadrilateros, mas importante es saber que definimos el metodo controlador como estático para evitarnos crear objetos sin ninguna clase de control ya que deberiamos si queremos trabajar pulidamente reescribir figuras cuadradas mas no acumular la basura en la memoria del Pc. La clave para hacer esto que acabo de explicar es preguntarle a nuestro método estatico que si nuestro controlador es nulo entonces nos genere un nuevo controlador en memoria para crear la nueva figura, pero si no lo es que no llene mas espacio en memoria sino que reemplaze lo que se habia creado de las mismas características de esa figura y realice una nueva.

Controlador static demeControl(){ if(ctrl == null) ctrl = new Controlador(); return ctrl; }   

Esto es lo que conocemos como el patrón solitario o <<singleton>> y es una gran ventaja a la hora de programar pues lo podemos invocar cuando queramos y nos ayuda enormemente en llamar a cada una de las funciones que controla a los diferentes cuadrilateros, ya sea un rectangulo un cuadrado un rombo un deltoide o lo que sea....
Aca un ejemplo de como se utilizaria el singleton para crear un cuadrado:

Controlador.demeControl().creaCuadrado(4);Controlador.demeControl().consultarPerimetro();Controlador.demeControl().consultarArea() ...

Y nos crea un cuadrado de lados de valor 4 unidades y con el mismo controlador le pedimos que nos de el area y el perimetro, que ya esta determinado al hacer la reutilización del código. Bueno muchachos espero les halla sido de utilidad esta explicación de lo que es el modelo vista-controlador "MVC" y de como es muy útil para aplicarlo en este caso al proyecto que hemos venido trabajando de cuadrilateros.