jueves, 7 de abril de 2011

Incorporación de eventos, excepciones y errores

Incorporación de eventos, excepciones y errores - Taller

Eventos:

Eventos implementados en mi proyecto.

Para mostrar los colores, utilizo una serie de botones que muestra los colores par que el usuario, al momento de tocar el botón, se vaya asignando los valores de las resistencias.



























Excepciones:

Implementare excepciones para cuando el usuario ingrese un valor muy alto de la resistencia (No real) , nos tire una excepción al respecto.





Saludos...

Identificación de eventos, errores y excepciones


Identificación de eventos, errores y excepciones - Clase

Ala hora de diseñar una aplicación todos estamos expuestos a los errores y las excepciones también generamos eventos que nos sirven para realizar acciones dentro de nuestro aplicación.

Eventos:

La programación dirigida por eventos es un paradigma de programación en el que tanto la estructura como la ejecución de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos provoquen.



La programación dirigida por eventos es la base de lo que llamamos interfaz de usuario, aunque puede emplearse para desarrollar interfaces entre componentes de Software como módulos del núcleo también.

Excepciones:

El manejo de excepciones es una estructura de control de los lenguajes de programación diseñada para manejar condiciones anormales que pueden ser tratadas por el mismo programa que se desarrolla.


Por ejemplo, un programa puede admitir cierto número de errores en el formato de los datos y continuar su proceso para producir el mejor resultado posible en lugar de producir una salida aparatosa llena de mensajes de error probablemente incomprensibles para el usuario. Muchas veces, la acción asociada a una excepción es simplemente producir un mensaje informativo y terminar; otras veces, es sólo indicación de la necesidad de un cambio en la estrategia de resolución del problema.

Errores:

Un defecto de software (computer bug en inglés), es el resultado de un fallo o deficiencia durante el proceso de creación de programas de ordenador o computadora (software). Dicho fallo puede presentarse en cualquiera de las etapas del ciclo de vida del software aunque los más evidentes se dan en la etapa de desarrollo y programación. Los errores pueden suceder en cualquier etapa de la creación de software.



Errores de programación comunes:

División por cero
Ciclo infinito
Problemas aritméticos como desbordamientos o subdesbordamientos.
Exceder el tamaño del array
Utilizar una variable no inicializada
Acceder a memoria no permitida.
Pérdida de memoria.
Desbordamiento o subdesbordamiento de la pila.
Desbordamiento de búfer.
Bloqueo mutuo.
Indizado inadecuado de tablas en bases de datos.

Identificación de eventos, errores y excepciones en mi proyecto.

Bueno encontré estas recomendaciones de errores en diseño de aplicaciones Android.

No incluir screenshots: Un error bastante común es el no incluir las dos pantallas de previsualización de ejemplo en la descripción de una aplicación en el Market. Muchos de nosotros, si no vemos una pantalla de la aplicación, buscamos otra.

¡Rotar, rotar, rotar!: Recuerda que a muchos usuarios les gusta rotar la pantalla del móvil para utilizarla tanto en vertical como en horizontal. Si no controlas cómo se ve en horizontal. Al menos quita la rotación automática que deforma la vista vertical.

Diseño: Una de las grandes verdades en el mundo del software es la que dice que los programas entran por los ojos. Hay que cuidar minimamente el diseño de una aplicación, para que sea agradable y usable.

Utiliza DIP en lugar de Pixels: Es muy común, venir de diseño gráfico tradicional y utilizar los pixels como unidad. Sin embargo, los pixels son un tipo de unidad estática, que no debería utilizarse (se vería bien en sólo el tipo de móvil que hayamos usado: pantallas pequeñas o medianas o grandes). En su lugar, una buena alternativa son los dip, un tipo de resolución que ajusta la densidad dependiendo de la resolución del dispositivo (viéndose bien en todas).

Eventos:

La gran mayoría de mis eventos estarán enfocados a la interfaz gráfica ya que pondré varios botones para que sea una forma mas facíl de interactuar con la aplicación y sea una interfaz muy amigable.

Incluiré varios eventos para la interfaz gráfica y también eventos de tipo TextEvent para ir notificando los valores de la resistencias de mi aplicación cuando los valores vayan cambiando debe ser modificados.

Excepciones:

Unas de las excepciones que e pensado para mi proyecto es que cuando el usuario ingrese un valor muy alto de la resistencia (No real) , nos tire una excepción al respecto.

Fuentes:

Saludos...

jueves, 31 de marzo de 2011

Aplicación de patrones de diseño - Taller

Aplicación de patrones de diseño - Taller

Aquí les dejo lo patrones de diseño implementados en mi proyecto


Observer:

La idea de este patrón lo utilizo para que este observando los cambios de los avlores de la resistencia para ir la actualizando con forme vaya cambiando.


package resistor.a;

import java.util.Observable;
import java.util.Observer;


public class Graphics extends Colors {


public class PaintR implements Observer {

public void update (Observable color, Object actual){
if(actual instanceof String){

}
}
}
}


Singleton:

La idea de este patrón es utilizarlo para asegurarme que los valores de las resistencias que estén en una única instancia.


package resistor.a;


public class Colors {

public class Singleton {
private final Singleton INSTANCE = new Singleton();
private Singleton(){}

// Atributos

protected int black [] = new int [0];
protected int brown [] = new int [1];
protected int red [] = new int [2];
protected int orange [] = new int [3];
protected int yellow [] = new int [4];
protected int green [] = new int [5];
protected int blue [] = new int [6];
protected int violet [] = new int [7];
protected int gray [] = new int [8];
protected int white [] = new int [9];

// Tolerance

protected int tolerance [] = new int [0];
protected int tolerance1 [] = new int [1];
protected int tolerance2 [] = new int [2];


public final Singleton getInstance(){
return INSTANCE;
}
}
}




Bueno estos son los patrones de diseñó que llevo hasta ahorita

Salduos...

Identificación de Patrones Diseño



Identificación de Patrones Diseño - Clase

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.Un patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.

Las características de un patrón son tres:

Contexto: situación en la que se presenta el problema de diseño.

Problema: descripción del problema a resolver, y enumeración de las fuerzas a equilibrar (requisitos no funcionales como eficiencia, portabilidad, cambiabilidad.

Solución: conjunto de medidas que se han de tomar, como crear alguna clase, atributo o método, nuevos comportamientos entre clases.


Existen tres clases de patrones de diseño:
Creacionales: son los que patrones que, como su nombre lo dice, crean instancias de objetos, ocultando los procesos de como los objetos fueron creados o inicializados.

Estructurales: son los patrones que combinando varias clases junto con objetos para crear estructuras agregando nuevas funciones.
Comportamiento: son patrones en los que los objetos de un software pueden realizar una comunicación e iteración.

Identificación en el Proyecto:

Observer (patrón de diseño)


El patrón Observador también conocido como "spider" define una dependencia del tipo uno-a-muchos entre objetos, de manera que cuando uno de los objetos cambia su estado, el observador se encarga de notificar este cambio a todos los otros dependientes.

Yo lo puedo utilizar al generar la interfaz gráfica en donde se dibujaría una resistencia con los colores por defecto e ir seleccionando los colores para ir asignando los valores alas resistencias el observador estará ala escucha para cuando aya un cambio notificar los cambios existentes.

Singleton (patrón de diseño)
El patrón de diseño singleton (instancia única) está diseñado para restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto.

Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella.

El patrón singleton se implementa creando en nuestra clase un método que crea una instancia del objeto sólo si todavía no existe alguna. Para asegurar que la clase no puede ser instanciada nuevamente se regula el alcance del constructor (con atributos como protegido o privado).

Yo lo puedo utilizar para asegurarme que los valores de las resistencias que estén en una única instancia.


Android Patterns

Para desarrollar una aplicación es tan importante conocer el SDK de Android como las reglas básicas de diseño de interfaces de usuario. Basándose en muchas de las aplicaciones que están disponibles para Android se ha creado Android Patterns. Útil para los diseñadores de interacción que se estén introduciendo en el mundo Android y necesiten resolver dudas sobre diseño y los patrones de comportamiento típicos que se dan en las aplicaciones Android.


En muchas ocasiones nos encontramos con el problema de adaptar una aplicación ya desarrollada para iPhone a Android. Tenemos que tener cuidado a la hora del diseño de esas pantallas debido a la naturaleza de cada plataforma. Android, por ejemplo, al tener controles físicos utiliza más los menús contextuales invisibles a primera vista, mientras que en iPhone siempre están visibles los botones en cada pantalla.

Aquí les dejo la paguina Android Patterns


Bueno eso es todo espero :D
Saludos...

jueves, 24 de marzo de 2011

Presentaciones de diagramas de proyectos - Clase


Presentaciones de diagramas de proyectos - Clase

Hola a todos

Este es el video que subi a youtube y las diapositivas que corresponden a la presentación de mis diagramas UML referentes a mi proyecto.





Un saludo...

miércoles, 23 de marzo de 2011

Demostraciones de avance parcial - Taller Semana 8


Demostraciones de avance parcial - Taller

Bueno por ahora mi aplicación no hace mucho que digamos pero ya logre que compilara
Bueno aquí les dejo el código de mi avance

Clase Colors:


package resistor.a;

public class Colors {

// Atributos

protected int black [] = new int [0];
protected int brown [] = new int [1];
protected int red [] = new int [2];
protected int orange [] = new int [3];
protected int yellow [] = new int [4];
protected int green [] = new int [5];
protected int blue [] = new int [6];
protected int violet [] = new int [7];
protected int gray [] = new int [8];
protected int white [] = new int [9];

// Tolerance

protected int tolerance [] = new int [0];
protected int tolerance1 [] = new int [1];
protected int tolerance2 [] = new int [2];

}

Clase Values


package resistor.a;

/** Esta clase es la encargada de evaluar
* las resistencias
* @author Alejandro
*
*/

public class Values extends Colors {

/** Esta clase se encarga de evaluar
* el valor de la resistencia dependiendo
* al codigo de colores
* @author Alejandro
* @version beta
*
*/


// formatea el valor de la resistencia a kilo o etc

public class Format {


}

int band1, band2, band3;
int ohmage;


void CheckC (int ohmage) {

ohmage = (band1*10) + band2;

}

public class CheckV{

// Metodo

}

}

Clase Resistor

package resistor.a;

import android.app.Activity;
import android.os.Bundle;

/** Esta es la clase donde empesara
* a ejecutar la aplicacion
* @author Alejandro
* @version beta
*
*/

public class Resistor extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}






Bueno se que no es mucho pero es el avance que llevo hasta ahora
Un saludo...

jueves, 17 de marzo de 2011

Código autogenerado

Código autogenerado - Taller

En esta entrada aquí les dejo el código que se genero con los diagramas UML y el programa Umbrello en la siguiente imagen se puede ver como los archivos se generan en la carpeta que asignemos.


Bueno empezando con la clase Color:


package resistor.a;


/**
* Class Colors
*/
public class Colors {

//
// Fields
//

protected int black = 0;
protected int brown = 1;
protected int red = 2;
protected int orange = 3;
protected int yellow = 4;
protected int green = 5;
protected int blue = 6;
protected int violet = 7;
protected int gray = 8;
protected int white = 9;

//
// Constructors
//
public Colors () { };

//
// Methods
//


//
// Accessor methods
//

/**
* Set the value of black
* @param newVar the new value of black
*/
protected void setBlack ( int newVar ) {
black = newVar;
}

/**
* Get the value of black
* @return the value of black
*/
protected int getBlack ( ) {
return black;
}

/**
* Set the value of brown
* @param newVar the new value of brown
*/
protected void setBrown ( int newVar ) {
brown = newVar;
}

/**
* Get the value of brown
* @return the value of brown
*/
protected int getBrown ( ) {
return brown;
}


Aquí les dejo la clase Graphics:

package resistor.a;


/**
* Class Graphics
*/
public class Graphics {

//
// Fields
//


//
// Constructors
//
public Graphics () { };

//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
*/
public void PaintR( )
{
}


}

La clase Resistor:

package resistor.a;


/**
* Class Graphics
*/
public class Graphics {

//
// Fields
//


//
// Constructors
//
public Graphics () { };

//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
*/
public void PaintR( )
{
}


}

La clase Values:

package resistor.a;


/**
* Class Values
*/
public class Values {

//
// Fields
//


//
// Constructors
//
public Values () { };

//
// Methods
//


//
// Accessor methods
//

//
// Other methods
//

/**
*/
public void CheckC( )
{
}


/**
*/
public void CheckV( )
{
}


}

La forma de generar el código es muy sencilla lo que tenemos que hacer una vez que ya hayas terminado el diagrama solo ve en el menu de arriba en la pestaña le das click a code:

Se despliega un menu en el cual buscamos la opción que dice Code Generation Wizard y con el Wizard ya es muy sencillo solo es de especificar en la carpeta que deseas generar el código y darle siguiente y finalizar el mismo wizard te lleva paso a paso.

La otra opción es en ese mismo menu pero ahora en la opción que dice Generate All Code la diferencia en esta y la opción anterior es que en esta el proceso es mucho mas rápido ya que te genera el código con solo darle el click pero te genera el código en la carpeta de default y te genera el código de todas las clases existentes no como en el otro puedes escoger cuales son las clases que deseas generar el código.


Bueno eso es todo saludos...