jueves, 7 de julio de 2011

Selección e instalación de herramientas (Taller)

Para esta entrada voy a explicar las herramientas que utilice para poder llevar a cabo la elaboración de mi programa.
Al principio habia descargado el JDK (Java Development Kitde Java en Ubuntu. El diagrama de clases lo hice con Umbrello y el codigo en Emacs.
Desgraciadamente perdi lo que tenia de mi proyecto por lo que tuve que hacerlo de nuevo ahora utilizando Windows.
Estos fueron los pasos que hice para llevar a cabo la instalacion de las herramientas de desarrollo de la mejor manera:
1) Asi como en el Ubuntu, tuve que instalar el JDK aqui en windows.
Lo descargue desde esta pagina:


2) Despues de haber instalado el JDK instale un programa especial para telefonos Blackberry llamada JDE (Java Development Environment). Es importante descargar el JDE de la version del sistema operativo que tiene la version de Blackberry que deseas utilizar, por ejemplo, yo descargue la version v4.6.1

Aqui les dejo el link de un buen tutorial de JDE 


3) Ahora se tiene que instalar el simulador del Blackberry que vaya a utilizar la aplicacion para poder correrlo desde la computadora y verificar si este es compatible. Yo descargue el simulador para el Blackberry 8520 v4.6.1.272


Otra opcion que tenemos es descargar el Eclipse (nos sirve para hacer programas en Java) y despues instalar un plug-in de Blackberry que podemos encontrar en la pagina de Blackberry, de donde hemos estado descargando las herramientas. 

Despues de tener todas las herramientas necesarias pude comenzar a hacer la aplicacion...

Aqui les muestro una parte del codigo que use para la primera clase llamada Piano

import java.util.*;
import java.awt.*;



//clase Piano
    public class Piano {

//atributos
//private int sonido;
private char teclasociada;
private int estado = 0;
private int ubicacion = 0;
//constructor
public Piano () { };
  
//metodo
//set teclasoc newVar teclasociada
public void setTeclasociada ( char newVar ) { 
   newVar = 'q';
   teclasociada = newVar;
   
}
//get teclasociada return teclasociada
public char getTeclasociada ( ) {
   return teclasociada;
}
//set estado newvar estado
public void setEstado ( int newVar ) {
   estado = newVar;
}
//get estado return estado
public int getEstado ( ) {
   return estado;
}

//set ubicacion newvar ubicacion
public void setUbicacion ( int newVar ) {
   newVar = ubicacion++;
   ubicacion = newVar;
}

//get ubicacion return ubicacion
public int getUbicacion ( ) {
   return ubicacion;
   
   
}
}






miércoles, 6 de julio de 2011

Documentacion Tecnica

La Documentación Técnica es muy útil para saber manejar de una manera adecuada cualquier programa que se nos proporcione, optimizar los resultados y disminuir el tiempo de aprendizaje del programa.
Ademas, sirve para conocer completamente todas las funciones del programa y sacar máximo provecho de este. 
La documentación explica también las características tecnicas de un programa, así como los requerimientos y las necesidades para poder utilizar el programa de la manera mas adecuada y que su utilización sea la mejor posible.

Para la persona que creo el programa es muy fácil crear la documentación ya que conoce perfectamente el programa, sus características, requerimientos, entre otras cosas. 

martes, 5 de julio de 2011

lunes, 4 de julio de 2011

Proyecto (Clases, Atributos y Metodos)

Aquí les presento un avance de mi proyecto.
En este avance mostrare las clases, atributos y métodos que utilizare para realizar mi programa y que funcione correctamente.

La clase mas importante de mi proyecto seria Tecla.
Decidí asignar una clase por cada una de las teclas del piano por que cada una tendrá un sonido y una asignación diferente. La idea es que al presionar la tecla esta emita un sonido y se sombree, por lo que tiene que tener un estado (Presionado o no) y una ubicación (0,1,2,3,4,5) para saber donde esta esa tecla. También es importante asignarle una tecla asociada con el teclado que se utilizara (0q,1w,2e,3r,4t,5y...)

  • Clase: Teclas
  • Atributos: Sonido, Tecla asociada, Estado (Presionado), Ubicación
  • Método: Reproducir sonido, Sombrearse


La segunda clase que utilizare para mi proyecto sera una de Partitura.
En esta clase se presentara la opción de mostrar una partitura con diferentes letras de canciones para que el usuario sea capaz de tocar alguna utilizando las teclas y las teclas asociadas del teclado del teléfono.

  • Clase: Partitura
  • Atributos: Nombre, Titulo, Dificultad, Secuencia
  • Método: Imprimir, Mostrar imagen, Volver
Tenia pensado hacer una clase grande llamada Piano que englobara estas dos clases pero esta mas bien seria parte de la interfaz gráfica, ya que el programa no tendrá otras funciones ademas de las teclas y las partituras.

Conforme vaya pasando el tiempo les iré mostrando mis avances del proyecto.

Casos de Uso (Proyecto)

En esta entrada describiré algunos de los casos de uso para mi proyecto final.

Descripción:

El programa consistirá en un pequeño piano que reproducirá sonidos con la ayuda de las teclas del teléfono. Cada tecla tendrá un sonido diferente. Se pueden crear diferentes canciones. Las teclas que estén presionadas aparecerán en la pantalla sombreada. Habrá también un área que contendrá partituras para que al usuario le sea mas fácil ver y tocar canciones. Dichas partituras contienen las teclas asociadas del teclado del teléfono para poder tocar una canción conocida. Las partituras tendrán diferente nivel de dificultad. 

Casos de uso:
  • Presionar tecla: El actor podra presionar una tecla del telefono y al mismo tiempo ver que una tecla de la pantalla se sombrea.
  • Escuchar sonido: El usuario sera capaz de escuchar un sonido diferente por cada tecla que presione
  • Ver partituras: El usuario podra ayudarse de partituras para crear sonidos o canciones ya existentes
  • Seleccionar nivel para la partitura: El actor podra seleccionar el nivel de dificultad de la partitura dependiendo de las habilidades que posea.
  • Volver a la pantalla principal: Siempre que el usuario abra otra ventana tendra la opcion de volver a la pantalla principal. 
Ahora les mostrare el diagrama de casos de uso


Interfaz (Puntos Extra)


Una interfaz es una clase completamente abstracta (una clase sin implementación).

Caracteristicas

  • Sólo declaran comportamiento 
  • Se utiliza la palabra clave interface 
  • Por defecto todos sus métodos son públicos y abstractos 
  • No implementan el comportamiento 
  • Por defecto todos sus atributos son públicos, constantes y de clase 
  • Por legibilidad normalmente los declaramos static y final 
  • Permite simular algunos aspectos de la herencia múltiple 
  • Define un tipo de datos 
  • Posibilita el enlace dinámico 
  • Otras clases pueden implementar un interfaz 
  • Cualquier clase que implemente un interfaz debe definir todos los métodos de dicho interfaz 
  • Debe proporcionar la implementación de dichos métodos 
  • Si la clase no proporciona la implementación para todos los métodos del interfaz debe ser declarada como abstract 

Sintaxis

interface NombreInterfaz {
tipo static final NOMBRECONSTANTE1 = valor;
…….….….
public tipoDevuelto nombreMetodo1(listaParámetros);
…….….….
}
class NombreClase implements NombreInterfaz1
[, NombreInterfaz2 ..] {
// declaración atributos y métodos de la clase
…….….….


A continuacion les presentare un ejemplo de codigo de interfaz

public interface Nombrable {
static final boolean CIERTO = true;
public void mostrarNombre();
}
public class Elemento implements Nombrable {
String nombre;
public Elemento(String nom) {
nombre = nom; }
// obligatorio implementar método mostrarNombre
public void mostrarNombre(){
System.out.println("Nombre: "+nombre);
if (CIERTO)
System.out.println("Constante CIERTO ");
}}clases abstractas e Interfaces 15

Referencias
Interfaz


Herencias

Una herencia es una de las principales características de los lenguajes orientados a objetos. Es un mecanismo que permite compartir características entre las clases padre y las clases hijos para extender funcionalidades. 
Existen dos tipos de herencias:

Herencia simple: Este tipo de herencia solo puede tener una sola clase padre. (Java)
Herencia multiple: Esta herencia sucede cuando la clase hijo puede obtener características de varias clases padres. (C++)

En esta actividad la profesora nos pidió que identificáramos herencias en clases de dos programas.
Los programas fueron los siguientes:

  • Buscaminas
Este programa consiste en un juego en el que el usuario tiene que obtener la mayor cantidad de puntos posibles sin tocar las bombas ubicadas en las casillas del juego 

Clases padres:
Casilla, Tablero, Timer, Juego, Jugador, Historial.

Clases hijas:
Tablero: Principiante, Intermedio, Avanzado
Juego: Principiante, Intermedio, Experto

  • SIASE (Sistema Integral para la Administración de los Servicios Educativos)
El Siase es una plataforma educativa utilizada por la Universidad Autonoma de Nuevo Leon para controlar el registro de alumnos y maestros, calificaciones, horarios, kardex, entre otras muchas funciones que realiza este sistema.


Clases padres: Usuario, Inscripción, Horario, Calificación, Encuesta, Kardex, Pago, Beca, Grupo

Clases Hijas: 
Usuario: Estudiante, Administrador, Maestro
Inscripcion: Clase ordinaria, Laboratorio
Encuesta: Verano, Beca
Pago: Cuota Interna, Cuota Externa
Beca: Deportiva, Bajos Recursos, Académica

A continuacion les comparto el codigo de un programa que encontre en internet que utiliza herencias.

class punto
{
protected
int x, y ;
public c:
punto (int mx, int my);
int dax ();
int day ();
};
class pixel: public punto
{
protected
booleano visible
public
pixel (int mx, int my);
void mostrar ();
void ocultar ();
booleano es_visible ();
void mover_hacia (int nueva x, int nueva y);
};



Referencias

domingo, 3 de julio de 2011

Casos de Uso

Los casos de uso son una técnica para especificar el comportamiento de un programa. 
Todo software ofrece a sus usuarios una serie de instrucciones a los servicios y acciones que realiza el programa para poder utilizarlo de una mejor manera.
Un caso de uso es una secuencia de interacciones entre un sistema y alguien o algo que usa alguno de sus servicios.

Para esta actividad se nos pidió identificar los diferentes casos de uso de un popular juego llamado Buscaminas.

Descripción:
El Buscaminas es un juego que consiste en que el jugador busca obtener el mayor puntaje posible sin tocar las casillas de las bombas ubicadas en el juego. 


Actor: El usuario puede seleccionar la casilla de su interés, cambiar la dificultad y la apariencia, marcar casillas, reiniciar el juego, ver estadisticas de los jugadores anteriores o entrar a la sección de ayuda para solucionar dudas que tenga sobre el juego.

A continuación se hará una breve descripción de algunos casos de uso mencionados anteriormente.

Dificultad: Cada jugador puede elegir la dificultad que desee: Principiante, Intermedio o Avanzado, según sus habilidades y destreza en el juego. 
Apariencia: El usuario puede cambiar el color de las casillas a verde o azul según su gusto.
Reiniciar: Si el usuario ya no quiere jugar esa partida puede reiniciarla o bien comenzar una nueva.
Ver estadísticas: El jugador puede ver estadísticas sobre los juegos anteriores, así como los mayores puntajes obtenidos en el juego.
Marcar casillas: El usuario puede marcar las casillas que desee y buscar las que tengan números para sumar los puntos. 

Referencias



Clases Atributos y Metodos


Para poder realizar esta actividad fue necesario identificar las clases, atributos y metodos de uno de los programas que nos proporciono la maestra. Fue una tarea algo dificil al principio pero despues de la explicacion fue mas facil identificar cada uno y diferenciarlos. 

Itunes



Itunes es un reproductor desarrollado por Apple. Es muy completo y funciona para reproducir, descargar y comprar musica, aplicaciones, escuchar radio, entre otras funciones que ofrece. 

Clase: Musica (Reproduccion)
Atributo: Genero, Titulo, Nombre
Metodo: Reproducir, Descargar, Mover, Cambiar nombre

Clase: Videos
Atributo: Duracion, Nombre, Tamaño
Método: Reproducir, Descargar, Comprar 





Crisis de Software


La crisis del software es un termino que se refiere a la dificultad para desarrollar programas eficaces y comprensibles. Las causas son, entre otras, la complejidad que supone la tarea de programar, y los cambios a los que se tiene que ver sometido un programa para ser continuamente adaptado a las necesidades de los usuarios, ademas de la falta de algoritmos y soluciones adecuadas para los problemas proporcionados por los usuarios o clientes.

El término “Crisis del Software” fue utilizado a principios de los años 70, cuando la ingeniería de software era prácticamente inexistente. 

Englobó a una serie de sucesos que se venían observando en los proyectos de desarrollo de software:
  • Los proyectos no terminaban en plazo. 
  • Los proyectos no se ajustaban al presupuesto inicial. 
  • Baja calidad del software generado. Software que no cumplía las especificaciones.
  • Código inmantenible que dificultaba la gestión y evolución del proyecto. 

Aunque se han propuesto diversas metodologías para intentar subsanar los problemas mencionados, lo cierto es que todavía hoy no existe ningún método que haya permitido estimar de manera fiable el coste y duración de un proyecto antes de su comienzo.