Páginas

miércoles, 6 de marzo de 2013

Modelo vista controlador MVC

Introducción:

Cuando programamos siempre deberíamos tener tres componentes  básicos, la interfaz para el usuario, la lógica del negocio y un componte que conecte estos dos elementos; los docentes de programación y software siempre intentan que separemos estos componentes para tener una mayor organización y rendimiento en nuestros proyectos, sin embargo nosotros nos resistimos a este cambio con la excusa de "que estos funcionan igual" o "yo entiendo mi desorden", la idea de este articulo es contribuir a mejorar en estos aspectos y dar una introducción al paradigma de modelo vista controlador de ahora en adelante MVC.

El patrón de arquitectura de programación MVC descrito por primera vez en 1979 por Trygve Reenskaug, un programador que trabajaba en los laboratorio de investigación de Xerox, 33 años despues se sigue usando y ha tomado mucha fuerza con el desarrollo web.

Elementos:

La idea es muy simple, separar nuestro código en tres grupos:

La lógica del negocio: MODELO
La la interfaz de usuario: VISTA
La conexión entre el modelo y la vista: CONTROLADOR

Modelo: son las partes de la aplicación que implementan la lógica del negocio, a menudo estos recuperan y almacenan los objetos que están registrados en una base de datos. En este caso se haría referencia a las clases genéricas que creamos como "Persona", "Animal", "Universidad", entre otras, estas clases son representaciones estructurales de sus similares en el mundo real, tienen atributos (características del objeto) y métodos(operaciones relacionadas con el objeto).

Vista: son los componentes que muestran la interfaz de usuario de la aplicación (UI), esta interfaz se crea a partir de los datos del modelo y sirve para que el usuario final interactue con la aplicación. En este caso se habla de lo que ve el usuario la aplicación, osea la estructura con botones, campos de texto, casillas de verificación, párrafos entre otros, y las características de estos elementos.

Controlador: son los componentes que manejan la interacción del usuario, con el modelo de trabajo, y finalmente seleccionan una vista para mostrar información al usuario. En este caso es la parte que controla las interacciones del usuario y dependiendo el caso administra que modelos y que vistas usar para responder a estas interacciones, como las clases que se encargaban de controlar los eventos de los dispositivos de entrada del computador en los primeros programas que realizamos.

Ejemplo:

En una restaurante también se separa las funciones:



En la cocina se maneja la lógica del negocio, se prepara la comida y se organizan los platos este componente seria el modelo.



En la recepción se manejan los pedidos ( a cada cliente se le tiene que mandar preparar el plato que pidió) osea este seria el controlador. 




Y por ultimo los meseros serian la vista pues son quienes tratan con los usuarios finales. 


Proceso del  MVC

1. El usuario interactúa con la aplicación de alguna forma (por medio de algún elemento de la vista, como un botón o la pulsación de una tecla).

2. Se dispara el evento y el controlador lo recibe la notificación de la acción solicitada por el usuario (se entera que el usuario realizo una interacción).

3. El controlador gestiona el evento (decide que hacer con el).

4. El controlador accede al modelo y realiza la operación pertinente (generalmente se realiza un acceso a la información de la base de datos de la aplicación).

5. El controlador gestiona el despliegue de la vista adecuada ye en ella se reflejan los cambios en el modelo (la vista en si puede ser la misma pero la información del modelo ha cambiado).

6. La vista queda dispuesta para futuras interacciones del usuario.

MVC Architecture por http://developer.chrome.com


Ventajas de usar MVC:

  • Es más sencillo trabajar sobre una aplicación cuando esta esta ordenada y claramente separada en las áreas que se propone en MVC.
  • Es más fácil gestionar una aplicación que usa MVC, debido a las las interacciones de los usuarios pueden ser controladas.
  • Se mejora el campo de la reutilización de componentes.
  • Facilita las tareas de mantenimiento.
  • Los programas se vuelven más escalables (lo que quiere decir que si se añade elementos o se modifica el programa no se tienen tantos problemas).
Conclusiones:

El MVC esta siendo muy usado en el desarrollo web y es prácticamente un estándar de facto en el desarrollo actual de aplicaciones, por ello es importante conocerlo y usarlo desde nuestros proyectos más básicos.




El IF, el mejor amigo del programador

If:

La sentencia "if" es una de las sentencias mas sencillas y a la vez mas importantes en el mundo de la programación, esta expresión permite evaluar una condición y terminar si es verdadera o falsa, en caso de que sea verdadera permite la ejecución de más código.

Ejemplo:

                 if(5 > 3){
System.out.print("El numero 5 es mayor que que numero dos.");
}


Como le aprecia la estructura del if es muy simple, el nombre de la sentencia seguida de unos paréntesis donde va la condición que debe cumplirse para que se ejecute el código que esta encerrador por los corchetes.

Para poder sacarle provecho al if es necesario revisar los operadores relacionales y lógicos.

Operadores relacionales: permiten evaluar expresiones numéricas y en caso de "igual a" y "diferente de" también expresiones booleanas, recordando una expresión booleana solo puede tener dos valores "True" o "False", en java para evaluar la expresión "igual a" se usa "==" y para la expresión  "diferente de" se usa "!=".

Operador   Definición
<                menor que
>                mayor que
=                igual a
<>             diferente de
<=             menor que o igual a
>=             mayor que o igual a

Operadores lógicos: son operadores que permiten evaluar expresiones a nivel lógico son muy usados cuando se intenta evaluar un conjunto de expresión o para reducir la complejidad del código.

Operador   Definición
AND          Y (en java &&)
OR             O (en java ||)
NOT           No (en java !)

Ejemplo:

int numero = 10;
if(numero > 5 && numero < 15){
System.out.print("El numero es mayor que 5 y menor que 15.");
}

Como se aprecia se evaluar dos condiciones para el mismo elemento y se unieron con operador AND, para hacer que las dos se tengan que cumplir.

Else:

Adicional al operador if simple existe un complemento llamado else que evalúa el caso contrario, en este momento hay que resaltar que como se había mencionado el if solo tiene dos opciones, o la condición se cumple o no se cumple, el else entra en caso de que la condición no se cumpla y permite ejecutar código para este caso. 

Ejemplo:

int edad = 10;
if(edad >= 18){
System.out.print("Ud es mayor de edad");
}else {
System.out.print("Ud es menor de edad");
}

En este caso solo existen dos opciones, que el numero sea mayor o igual a 18 o que sea menor, gracias al else podemos trabajar con la segunda opción.

Else if:

Como se vio anteriormente, el else es muy útil en el caso de que solo queramos evaluar dos opciones, sin embargo nos vamos a encontrar con casos donde queremos evaluar más posibilidades, para ello podemos usar una combinación del if con el else llamada else if, esta va a seguir la misma estructura explicada anteriormente pero de una forma que va permitir evaluar más opciones.

Ejemplo:

int semestre = 10;
if(semestre == 1){
System.out.print("Ud esta en primer semestre. bienvenido.");
}else if(semestre == 10) {
System.out.print("Ud esta en décimo semestre, buena suerte.");
}else{
System.out.print("Ud no esta ni en primer ni  en décimo semestre, siga estudiando.");
}

Como se aprecia, se evalúan tres opciones, la primera si el estudiante esta en primer semestre, la segunda si esta en décimo y la tercera abarcaría el resto de semestres.

Ifs anidados

En muchas ocasiones nos encontramos con la necesidad de evaluar una expresión habiendo evaluado previamente una condición anterior, la solución es ordenar los ifs, uno dentro de otro.

Ejemplo:

int semestre = 10;
if(semestre < 4){
System.out.print("Ud tiene clase de programación: ");
if(semestre == 1){
System.out.print("I");
}else if (semestre == 2) {
System.out.print(" II");
}else {
System.out.print("III");
}
}

Como se aprecia, primero se evalúa si es semestre es inferior a cuarto, así podemos tomar un grupo especial, los estudiantes con semestre menor a cuarto, ahora a ese grupo le vamos a dejar un mensaje común o general para todos "Ud tiene clase de programación: ", eso quiere decir que ya evaluamos la primera condición, ahora dependiendo del semestre podemos ser más específicos con el mensaje.

Al tener un if dentro de otro podemos armar estructuras complejas y optimizar nuestro código.

Optimizar los if

Como programadores nuestro deber es optimizar nuestro código para ello podemos hacer cosas muy sencillas, incluso desde el uso de los if.

  • Evaluar primero las opciones más probables, en nuestro programa siempre tendremos varias opciones y depende cual evaluamos primero el programa puede rendir más, en ocasiones sera más eficiente el uso de sentencias como el Switch, un ejemplo se esto lo vemos en el if anidado, primero se evaluó una condición grande, así no fue necesario evaluar otras condiciones innecesarias.
  • No sobrecargar el if, aunque usando operadores lógicos podemos crear condiciones grandes, esto no es bueno para el rendimiento del programa, lo ideal es usar la técnica divide y vencerás para evaluar expresiones.
  • Usar expresiones lógicas pude ayudar a simplificar nuestro código y a optimizarlo si estas se usan correctamente.
If simple

Existe una forma simple de escribir un if, es la siguiente: (condición) + ? + sentencia si es verdadero + : + sentencia si es falso + ; .

Ejemplo:

String respuesta = (5 > 3) ? "El numero 5 es mayor que 3." : "Error"; 

Eso fue todo, por esta entrega, recuerden aprender a usar el if pues esta sentencia tan simple se va a convertir en su aliada a la hora de resolver problemas de programación.

miércoles, 27 de febrero de 2013

¿Por que es importante programar?

No voy a dar respuesta a esta pregunta, voy a dejar que grandes personalidades la contesten en este vídeo.

Aunque esta en ingles, es un excelente vídeo para motivar a la gente a programar y nos deja la duda ¿Ya es hora de que los colegios empiecen a enseñar programación?.

Pagina recomendada [5]

Cuando creamos un programa mechas veces necesitamos datos para probarlo, en ocasiones demasiados datos, esto se convierte en un problema pues no sabemos de donde obtener suficientes registros para asegurarnos que nuestro programa funcione adecuadamente, por ello la gente de GENERATE DATA nos ofrece una herramienta con este propósito.



Mediante una sencilla interfaz podemos generar los registros que necesitemos y exportarlos en un archivo ya sea SQL, HTML, Excel, XML o CSV.

Esta herramienta es muy útil para poner a prueba nuestros programas, pues cuando realizamos pruebas necesitamos tener en cuenta tanto variedad como cantidad en los datos.

Nuevo semestre (2013 - I)

Inicia un nuevo semestre y con el vienen cambios, en cuestión de ubicación seguiremos atendiendo las dudas de los estudiantes en el salón C-139 (Ges:rupo de investigación IFELCOM), pero los horarios para este semestre cambian pensando en la comodidad de los estudiantes:

Miercoles 8 am - 12 pm
Jueves 2 pm - 6 pm
Viernes 8 am- 12 pm

En los horarios mencionados, Alexander Castro y Jhefer Tellez estaremos atendiendo a los estudiantes.

Para todos un excelente semestre.