miércoles, 6 de julio de 2011

Problema de la partición


Buenos para esta clase estuve investigando sobre los problemas de np completos yo elegí el problemas de las particiones ya que me pareció interesante la forma en que un disco duro puede ser divido.

Este tipo de algoritmos puede servir como por ejemplo particionar un disco duro e instalar dos sistemas operativos como por ejemplo uno de sus aplicaciones.

Bueno primero que nada tenemos que saber que es la complejidad computacional.

La teoría de la complejidad computacional es la rama de la teoría de la computación que estudia, de manera teórica, la complejidad inherente a la resolución de un problema computable. Los recursos comúnmente estudiados son el tiempo (mediante una aproximación al número y tipo de pasos de ejecución de un algoritmo para resolver un problema) y el espacio (mediante una aproximación a la cantidad de memoria utilizada para resolver un problema).

Se pueden estudiar igualmente otros parámetros, tales como el número de procesadores necesarios para resolver el problema en paralelo. La teoría de la complejidad difiere de la teoría de la computabilidad en que ésta se ocupa de la factibilidad de expresar problemas como algoritmos efectivos sin tomar en cuenta los recursos necesarios para ello.

Fuente
Problema de la partición es un problema NP-completo, que visto como un problema de decisión, consiste en decidir si, dado un multiconjunto de números enteros, puede éste ser particionado en dos "mitades" tal que sumando los elementos de cada una, ambas den como resultado la misma suma.

Más precisamente, dado un multiconjunto S de enteros: ¿existe alguna forma de particionar S en dos subconjuntos S1 y S2, tal que la suma de los elementos en S1 sea igual que la suma de los elementos en S2
El problema de partición es equivalente a un caso particular del problema de la suma de subconjuntos, el cual dice: dado un conjunto S de enteros, ¿existe algún subconjunto S1 de S cuyos elementos suman exactamente t /2, donde t es la suma de todos los elementos de S?

La equivalencia puede verse definiendo S2 como la diferencia
S − S1. Por lo tanto, la solución con programación dinámica existente para resolver el problema de suma de subconjuntos, utilizando tiempo pseudo-polinomial, también es aplicable al problema de partición.



Aquí les dejo una pagina interesante que encontré de los problemas de la particiones y de sodoku de una forma interactiva.


Aquí dejo otro link muy interesante me hubiera gustado hablar sobre ello pero creo que tendré que esperar para una futura entrada es sobre Reduction of the Three-Partition Problem y aquí les dejo este pdf muy bueno que viene hablando sobre ello.


Otro link muy bueno es un pdf que habla sobre problemas np completos y en también habla del problema de la partición.


Saludos...

jueves, 30 de junio de 2011

Quicksort


El ordenamiento rápido (quicksort) es un algoritmo creado por el matemático John von Neumann basado en la técnica de divide y vencerás, que permite, en promedio, ordenar n elementos en un tiempo proporcional a n log n.

Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote.
Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su izquierda, dependiendo de la implementación deseada. En este momento, el pivote ocupa exactamente el lugar que le corresponderá en la lista ordenada.
La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha.
Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados.
Como se puede suponer, la eficiencia del algoritmo depende de la posición en la que termine el pivote elegido.
En el mejor caso, el pivote termina en el centro de la lista, dividiéndola en dos sublistas de igual tamaño. En este caso, el orden de complejidad del algoritmo es O(n·log n).
En el peor caso, el pivote termina en un extremo de la lista. El orden de complejidad del algoritmo es entonces de O(n²). El peor caso dependerá de la implementación del algoritmo, aunque habitualmente ocurre en listas que se encuentran ordenadas, o casi ordenadas. Pero principalmente depende del pivote, si por ejemplo el algoritmo implementado toma como pivote siempre el primer elemento del array, y el array que le pasamos está ordenado, siempre va a generar a su izquierda un array vacío, lo que es ineficiente.


Aquí les dejo de como funciona el quicksort



También un vídeo que comparada el método quick sort vs bubble sort.


Bueno aquí les dejo mi pseudocódigo que me base de lo leei y de un varios códigos dela wikipedia

funcion quicksort(parametros)
declarar las variables
mientras izquierda < que derecha
elementos en i < elpivote
incrementas i
mientras elementos en j > elpivote
decrementas a i
si i <= que j
temporal asigna a elementos de i
elementos de i asigna elementos de j
elementos de j asigna a temporal
incrementas i
decrementas j

si la izquierda es menor que la j
elementos = funcion
si la derecha es mayor que i
elementos = funcion
regersa datos



Saludos..

lunes, 16 de mayo de 2011

Servicio de alojamiento en la nube



Puntos Extras Taller de Programación Orientada a Objetos

Dropbox es un servicio de alojamiento de archivos multiplataforma en la nube, operado por la compañía Dropbox. El servicio permite a los usuarios almacenar y sincronizar archivos en línea y entre computadoras y compartir archivos y carpetas con otros.
El cliente de Dropbox permite a los usuarios dejar cualquier archivo en una carpeta designada. Ese archivo es sincronizado en la nube y en todas las demás computadores del cliente de Dropbox.

Los archivos en la carpeta de Dropbox pueden entonces ser compartidos con otros usuarios de Dropbox o ser accedidos desde la página Web de Dropbox. Asimismo, los usuarios pueden grabar archivos manualmente por medio de un navegador web.

Aquí les dejo como luce los archivos que subas a tu cuenta de Dropbox.

Características:

  • Compatible con Windows, Linux y Mac.
  • Solo sincroniza los archivos modificados.
  • Puede trabajar offline (Sincroniza los archivos y carpetas una vez restauremos nuestra conexión a internet).
  • Permite modificar el límite de consumo de Internet.
  • Guarda un historial de los archivos modificados durante 30 días (puede ampliarse este período con un pago adicional).
  • Compatible con dispositivos móbiles iPad, iPhone, Android y próximamente Blackberry.


Dropbox cuenta con transferencias SSL y almacena los datos mediante el protocolo de cifrado AES-256.

Aquí les dejo un vídeo de que es Dropbox y como funciona.


Aquí les deho el link de la paguina de Dropbox


Bueno en realidad es muy sencillo y muy útil espero y les aya gustado y les sirva de ayuda :D

Saludos...

jueves, 12 de mayo de 2011

Presentación final

Presentación final - Taller





Link

Saludos...

Presentación final

Presentación Final





Link

Saludos...

Interfaz gráfica



Interfaz gráfica - Taller


Hola que tal esta entrada trata sobre la aplicación de las interfaces gráficas de usuario de mi proyecto a continuación pondré el código de los archivos que se utilizan en mi proyecto.

El main.xml

Bueno empezando con el main.xml el tipo de layout que considere a usar y también los controladores a usar yo uso el Tipo de layout ScrollView por que si el usuario cambia de portrait mode a landscape mode la aplicación pueda ser visualizada completamente en cualquier tipo de resolución de celular con Android.

Mi layout es de tipo ScrollView y tiene la propiedad de scrollbar verticales para cuando la resolución de un celular con Android es muy pequeña aun así con la ayuda de las scrollbars el usuario pueda navegar en toda la interfaz gráfica de la aplicación sin ningún problema ya que puede deslizar las barras hasta donde el usuario deseé.Dentro del ScrollView tengo otro layout anidado de tipo LinearLayout para ir acomodando los componentes de la aplicación con la propiedad de que van a estar orientados verticalmente.





Bueno dentro de mi layout LinearLayout tengo un componente de tipo TextView este componente lo utilizo para poder mostrar en mi aplicación el texto que da referencia ala "Banda 1" de mi aplicación.





El TextView cuenta con un identificador único que se muestra en la siguiente linea.
android:id="@+id/MyBand01"

La linea siguiente hace referencia al tamaño de letra a usar.
android:textSize="10pt"

En el TextView la linea siguiente corresponde ala llamada de la cadena a mostrar en en layout:
android:text="@string/band01"

Después asigno los spinner yo utilice los spinner para poder mostrar la lista de colores disponibles de una forma sencilla.





Y se mostraría de la siguiente manera:

También contiene un botón que es el que hace la acción de calcular el valor de las resistencias ya una vez seleccionado los colores:





android:id="@+id/ButtonCalculate"
android:layout_height="wrap_content"
android:text="@string/calculate"
android:onClick="calculatenow"
android:layout_width="fill_parent">


strings.xml

El archivo strings.xml contiene las cadenas a utilizar dentro de la aplicación en ellas también se utilizan las cadenas del spinner para mostrar el nombre de los colores disponibles.


Resistors
Banda 1:
Escoja un color
Negro
Cafe
Rojo
Naranja
Amarillo
Verde
Azul
Violeta
Gris
Blanco



array.xml

Hace referencia para mostrar los colores disponibles dentro del spinner.


@string/color0
@string/color1
@string/color2
@string/color3
@string/color4
@string/color5
@string/color6
@string/color7
@string/color8
@string/color9



Bueno a continuación les dejo el codigo completo de cada uno de los xml que utilice.

main.xml
























strings.xml


Resistors
Banda 1 para calcular cualquier valor de cualquier resistencia!:
Escoja un color
Negro
Cafe
Rojo
Naranja
Amarillo
Verde
Azul
Violeta
Gris
Blanco
Banda 2:
Escoja un color
Negro
Cafe
Rojo
Naranja
Amarillo
Verde
Azul
Violeta
Gris
Blanco
Banda 3:
Escoja un color
Negro
Cafe
Rojo
Naranja
Amarillo
Verde
Azul
Violeta
Gris
Blanco
Tolerancia:
Escoja un color
Oro
Plata
Calcular



array.xml



@string/color0
@string/color1
@string/color2
@string/color3
@string/color4
@string/color5
@string/color6
@string/color7
@string/color8
@string/color9


@string/color00
@string/color01
@string/color02
@string/color03
@string/color04
@string/color05
@string/color06
@string/color07
@string/color08
@string/color09


@string/color000
@string/color001
@string/color002
@string/color003
@string/color004
@string/color005
@string/color006
@string/color007
@string/color008
@string/color009


@string/color0000
@string/color0001


Bueno y en la imagen siguiente es como luce la aplicación con la interfaz gráfica con los botones y los spinners.

Saludos...

Interfaz gráfica




Interfaz gráfica - Clase

Bueno esta semana en clase nos toco diseñar las interfaz gráfica de nuestro proyecto primero que es una interfaz gráfica:

La interfaz gráfica de usuario, conocida también como GUI (del inglés graphical user interface) es un programa informático que actúa de interfaz de usuario, utilizando un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz. Su principal uso, consiste en proporcionar un entorno visual sencillo para permitir la comunicación con el sistema operativo de una máquina o computador.


En la siguiente imagen se muestra algunos de los menús usados en las interfaces de usuario para la un manejo mas fácil entres los mas comunes se encuentran:

  • TextView.
  • Spinner.
  • Button.
  • ImageButton.
  • CheckBox.
  • EditText.
  • etc.
En las aplicaciones de Android al crear las las interfaces gráficas debe tenerse presente lo siguiente:

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).


Aquí les dejo un boceto de la interfaz gráfica que hice de mi aplicación la idea del boceto es para tener una idea de como va hacer la interfaz gráfica de mi aplicación para después incorporarla ala aplicación:

Bueno aquí les dejo como se visualiza el menu donde se puede ver el icono de mi aplicación con el smbolo de ohm para entrar ala aplicación.

Aquí les dejo una captura de como es la interfaz gráfica de mi proyecto como se puede observar mi interfaz gráfica en su mayoría esta constituida de Spinner de los cuales se despliega una lista de los colores disponibles.


Aquí les dejo una captura de como se visualiza el Spinner con los colores disponibles.

Ya una vez seleccionado los colores y de cada una de las bandas y de la tolerancia dando click en el boton Calcular calcula el valor el valor de la resistencia y lo despliega.

Saludos...

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...





Diagrama clase y secuencia UML



Diagrama clase y secuencia UML - Clase

Hola que tal bueno estos son los diagramas que hice para mi clase de programación orientada a objetos hice 2 tipos de diagramas el diagrama de clase y el diagrama de secuencia.

Bueno los diagramas UML son:

Lenguaje Unificado de Modelado (LUM o UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; está respaldado por el OMG (Object Management Group). Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes reutilizables.


Bueno aquí les dejo mi presentación de diagramas UML que subí espero y les guste.



Bueno para la clase de programación orientada objetos nos basamos en 2 tipos de diagramas UML el diagrama de clases y el diagrama de secuencia acontinuación les dejo la descripción de los diagrama de clases.

Un diagrama de clases es un tipo de diagrama estático que describe la estructura de un sistema mostrando sus clases, atributos y las relaciones entre ellos. Los diagramas de clases son utilizados durante el proceso de análisis y diseño de los sistemas, donde se crea el diseño conceptual de la información que se manejará en el sistema, y los componentes que se encargaran del funcionamiento y la relación entre uno y otro.
Representación de: - Requerimientos en entidades y actuaciones. - La arquitectura conceptual de un dominio - Soluciones de diseño en una arquitectura - Componentes de software orientados a objetos.

Mi diagrama de clase:

En los diagrama de clase las clases están representadas por rectángulos, con el nombre de la clase, y también pueden mostrar atributos y operaciones de la clase en otros dos «compartimentos» dentro del rectángulo.

Aquí les dejo el ejemplo de una clase de mi proyecto.


En UML, los atributos se muestran al menos con su nombre, y también pueden mostrar su tipo, valor inicial y otras propiedades. Los atributos también pueden ser mostrados visualmente:

  • + Indica atributos públicos
  • # Indica atributos protegidos
  • - Indica atributos privados

La métodos también se muestan al menos con su nombre, y pueden mostrar sus parámetros y valores de retorno. Las operaciones, al igual que los atributos, se pueden mostrar visualmente:

  • + Indica operaciones públicas
  • # Indica operaciones protegidas
  • - Indica operaciones privadas

El diagrama de secuencia es un tipo de diagrama usado para modelar interacción entre objetos en un sistema según UML. En inglés se pueden encontrar como "sequence diagram", "event-trace diagrams", "event scenarios" o "timing diagrams".

Mi diagrama de secuencia.
Los mensajes pueden ser o bien síncronos, el tipo normal de llamada del mensaje donde se pasa el control a objeto llamado hasta que el método finalize, o asíncronos donde se devuelve el control directamente al objeto que realiza la llamada. Los mensajes síncronos tienen una caja vertical en un lateral del objeto invocante que muestra el flujo del control del programa.


Bueno eso es todo saludos...

jueves, 24 de febrero de 2011

jueves, 17 de febrero de 2011

Documentación y herramientas de desarrollo


Documentación y herramientas de desarrollo - Taller

hola en esta entrada ahora mostrare el resultado de la documentación con javadoc.

Recordando que para poder crear la documentación con el entorno de desarrollo Eclipse es muy sencillo solo se tiene que ir ala pestaña "Project" después se muestra un menu donde seleccionas la opción de "Generate Javadoc" y despues "finish".

Bueno aquí les dejo una tablas con algunas etiquetas:
TagDescripciónUsoVersión
@authorNombre del desarrollador.nombre_autor1.0
@deprecatedIndica que el método o clase es antigua y que no se recomienda su uso porque posiblemente desaparecerá en versiones posteriores.descripción1.0
@paramDefinición de un parámetro de un método, es requerido para todos los parámetros del método.nombre_parametro descripción1.0
@returnInforma de lo que devuelve el método, no se puede usar en constructores o métodos "void".descripción1.0
@seeAsocia con otro método o clase.referencia (#método(); clase#método(); paquete.clase; paquete.clase#método()).1.0
@throwsExcepción lanzada por el métodonombre_clase descripción1.2
@versionVersión del método o clase.versión1.0



Bueno y aquí les dejo unas capturas de pantalla de mi proyecto y sus clases con la parte de la documentación:



Bueno y aquí les dejo unas capturas de como quedo la documentación ya en el explorador wen en HTML junto con CSS los archivos que genera automaticamente con javadoc.




Espero y les aya gustado un saludo a todos...

Documentación y herramientas



Documentación y herramientas - Clase

Hola que tal esta entrada trata acerca de la documentación y las herramientas que se pueden utilizar para documentar nuestros métodos clases de nuestro proyecto.

Bueno la idea de esta entrada es explicar el por que es bueno usar la documentación es bueno porque documentemos nuestro trabajo por que puede ser útil para otra persona o para nosotros mismo también es importante por que en un futuro nos puede servir de referencia para utilizarlas.

Bueno para todo esto existe Javadoc es una utilidad de Sun Microsystems para la generación de documentación de APIs en formato HTML a partir de código fuente Java. Javadoc es el estándar de la industria para documentar clases de Java. La mayoría de los IDEs los generan automáticamente.
Javadoc también proporciona una API para crear doclets y taglets, que le permite analizar la estructura de una aplicación Java. Así es como JDiff puede generar informes de lo que ha cambiado entre dos versiones de una API.

Bueno ya que mi aplicación la estoy desarrollando en Eclipse solo basta con ir ala pestaña "Project" y se mostrara un menu donde seleccionamos la opción de "Generate Javadoc" y después "finish" y es todo con esto hemos generado la documentación.


Para poder ver la documentación se guardan los archivos en la carpeta "doc" del workspace de Eclipse.

Links:


Un saludo a todos...