miércoles, 31 de agosto de 2011

Ejemplo Moto

/**
/**
* Programa cuya función es diseñar motocicletas.
*
* Autor: Jair Viezca Esparza.
*
* Fecha de creación: 30 de Agosto del 2011.
*
* Última actualización: 30 de Agosto del 2011.
**/
 
import java.util.*;

public class Moto {

	public static void main(String[] args){
        // la motocicleta Dynamo recién fue creada, cuya placa es MTY 127
        // y su batería tiene una vida de 100
        DisenoMoto Dynamo = new DisenoMoto("MTY 127");
         
        int opc = 0;
        do{
         
           System.out.print("Que desea hacer?"+"\n"+"1.Encender la moto"+
           "\n"+"2.Apagar la moto"+"\n"+"3.Acelerar"+"\n"+"4.Frenar"+"\n"+
           "5.Ver la placa"+"\n"+"6.Ver velocidad"+"\n"+"7.Ver la vida de la bateria"+"\n"+
           "8. Irse"+"\n\n");
           
           opc = (new Scanner(System.in)).nextInt();
         
           switch(opc){
               case 1:
           
                   Dynamo.encender();
                   break;
               case 2:
                   Dynamo.apagar();
                   break;
               case 3:
                   Dynamo.acelerar();
                   System.out.println("\n");
                   break;
               case 4:
                   Dynamo.frenar();
                   System.out.println("\n");
                   break;
               case 5:
                   System.out.print(Dynamo.verPlaca()+"\n\n");
                   break;
               case 6:
                   System.out.print(Dynamo.verVelocidad()+"\n\n");
                   break;
               case 7:
                   System.out.println(Dynamo.vidaBateria()+"\n\n");
                    
           }
        }while(opc != 8);
   }
}

public class DisenoMoto {
	  private String placa;
	    //1 indica encendido, 0 apagado
	    private int estado;
	    private int velocidad;
	    private int vida_bateria;
	     
	    //Constructor
	    public DisenoMoto(String placa){
	        this.placa = placa;
	        estado = 0;
	        velocidad = 0;
	        vida_bateria = 100;
	    }
	     
	    public String verPlaca(){
	        return placa;
	    }
	     
	    public int vidaBateria(){
	        return vida_bateria;
	    }
	     
	    public int verVelocidad(){
	        return velocidad;
	    }
	     
	    public void encender(){
	        if(estado == 0){
	        	estado = 1;
	        if(vida_bateria == 0){
	            System.out.println("Favor de cambiar la bateria\n\n");
	        }else{
	        	System.out.println("La moto se encendio\n\n");
	            vida_bateria--;
	        }
	    }else{
	    	System.out.println("La moto ya esta encendida\n\n");
	    }
	    }
	     
	    public void apagar(){
	    	if(estado == 0){
	    		System.out.println("La moto ya esta apagada\n\n");
	    	}else{
	        estado = 0;
	        velocidad = 0;
	        System.out.println("La moto recien se apago\n\n");
	    }
	    	}
	     
	    public void acelerar(){
	        if (estado == 1){
	            velocidad += 20;
	        }else{
	            System.out.println("No podra acelerar si no enciende la moto\n\n");
	        }
	    }
	     
	    public void frenar(){
	        if(estado == 1 && velocidad > 0){
	            velocidad -= 20;
	        }else{
	            System.out.println("No funcionara el freno si la moto no esta en movimiento\n\n");
	        }
	    }
}


Al ejecutarse el programa se muestra un menú en donde se podrá elegir lo que se quiera hacer con la moto.

Mi primer programa en java

/**
* Programa cuya función es registrar empleados de una pequeña empresa textil.
*
* Autor: Jair Viezca Esparza.
*
* Fecha de creación: 30 de Agosto del 2011.
*
* Última actualización: 30 de Agosto del 2011.
**/



public class Registro {

 public static void main(String[] args){
 //Se crean dos objetos (emp1 y emp2) de la clase Empleado
 //El constructor recibe como parámetros el nombre, la edad y el sueldo de la persona (en ese orden)
 Empleado emp1 = new Empleado("Juan", 25, 2500);
 Empleado emp2 = new Empleado("Carlos", 34, 4000);

 //Se utilizan los métodos de los objetos de la clase Empleado para visualizarlos
 System.out.println("Nombre del primer empleado: "+emp1.obtenerNombre()+
 " ------ Edad: "+emp1.obtenerEdad()+" ------ Sueldo: "+emp1.obtenerSueldo());
 System.out.println("Nombre del segundo empleado: "+emp2.obtenerNombre()+
 " ------ Edad: "+emp2.obtenerEdad()+" ------Sueldo: "+emp2.obtenerSueldo());

 //Si en algún momento se requiere cambiar datos, se puede hacer llamando a los métodos
 //modificarEdad() o modificarSueldo() de los objetos de la clase Empleado
 emp1.modificarSueldo(3000);
 System.out.println("Nombre del primer empleado: "+emp1.obtenerNombre()+
 " ------ Edad: "+emp1.obtenerEdad()+" ------ Sueldo: "+emp1.obtenerSueldo());
   
 emp2.modificarEdad(35);
 System.out.println("Nombre del segundo empleado: "+emp2.obtenerNombre()+
 " ------ Edad: "+emp2.obtenerEdad()+" ------Sueldo: "+emp2.obtenerSueldo());
 }

}


.

public class Empleado {

// Atributos
private String nombre;
private int edad;
private int sueldo;

 //Método Constructor
 public Empleado(String nombre, int edad, int sueldo){
 this.nombre = nombre;
 this.edad = edad;
 this.sueldo = sueldo;
 }

 //Método que te permite mostrar el nombre del empleado
 public String obtenerNombre(){
 return nombre;
 }

 //Método que te permite mostrar la edad actual del empleado
 public int obtenerEdad(){
 return edad;
 }

 //Método que te permite mostrar el sueldo que percibe actualmente el empleado
 public int obtenerSueldo(){
 return sueldo;
 }

 //Método que te permite modificar la edad
 public void modificarEdad(int edad){
 this.edad = edad;
 }

 //Método que te permite modificar el sueldo
 public void modificarSueldo(int sueldo){
 this.sueldo = sueldo;
 }
}



Las dos primeras líneas de mi programa representan el nombre del primer y segundo empleado, además de su respectiva edad y sueldo. Las dos últimas líneas de nueva cuenta representan a mis dos empleados pero utilice ciertos métodos que me permitieron actualizar algunos datos como el caso de las edades en ambos trabajadores y el sueldo en el primero.

Algunos ejemplos de diagramas de casos de uso (Puntos Extras)

A continuación les presentaré algunos diagramas de casos de uso de las aplicaciones mas típicas para nosotros en Internet.

martes, 30 de agosto de 2011

Metodologías para el análisis y diseño de software (Puntos Extras)

¿Qué es una metodología?

En este caso, es un conjunto de pasos, técnicas, procedimientos que guían a un desarrollador a realizar un software de calidad (eso se pretende).


Para que sea un software que cumpla con los requerimientos pedidos se debe hacer un buen análisis (un paso de cualquier método):

  • ·         Conocer las necesidades del cliente.
  • ·         Realizar un análisis técnico y económico.
  • ·         Establecer restricciones de presupuesto y tiempo, etc.

Un poco de historia
La creación de metodologías no es reciente, es algo que se ha venido dando a través de los años. Cada una de ellas con su propia forma de hacer las cosas pero, en general,  coinciden en un aspecto: producir un software ideal para quien lo necesite.

Como se puede apreciar en la imagen anterior, es a partir de 1968 que se empieza a buscar soluciones a los grandes problemas iniciales de la creación de software. La tabla termina con METRICA Versión 2.1 en 1995, sin embargo han emergido recientemente algunas otras como:

  • ·         Rational Unified Process (RUP) desde 1999
  • ·         Extreme Programming (XP) desde 1999.
  • ·         Enterprise Unified Process (EUP) extensions RUP desde 2002.
  • ·         Constructionist Design Methodology (CDM) desde 2004.
  • ·         Agile Unified Process (AUP) desde 2005.

La mayoría de las metodologías descritas están obsoletas, especialmente las más antiguas.


Características deseables de una metodología.
  • ·         Planificación y control.
  • ·         Herramientas CASE.
  • ·         Fácil formación
  • ·         Soporte de mantenimiento.
  • ·         Soporte de reutilización del software, etc.


Enfoques de desarrollo de software.
Cada sistemática de desarrollo de software tiene un enfoque en el cual se basa para crear programas. Algunos de los enfoques o patrones más comunes son:
  • ·        Modelo en cascada
  • ·         Prototipado
  • ·         Incremental
  • ·         Espiral
  • ·         RAD




lunes, 29 de agosto de 2011

Java en Windows

Para poder programar por primera vez java en Windows es necesario descargar las herramientas necesarias para realizar dicha acción. Si lo que se pretende es programar en un bloc de notas y, compilar y ejecutar desde la línea de comandos o la consola de Windows, con descargar el JDK (Java Development Kit) será más que suficiente.  Si en dado caso quieres programar en un IDE, tendrás que descargar dicho IDE (Netbeans, Eclipse, etc.) aparte del JDK.  

A continuación se presentarán los pasos a seguir para programar en java:
  • 2. Buscar la categoría “Java“, en la cual se elegirá  la opción” Java SE (Java Standard Edition)”.
  • 3. Descargar solamente el JDK (inmediatamente después se tendrá que decidir la versión adecuada según el sistema operativo en la cual se utilizará dicha herramienta, así como también del número de bits). Nota: no hay que olvidar aceptar la licencia.
  • 4. Esperar a que se descargue.

 
El siguiente paso es opcional, ya que depende de donde se vaya a compilar y ejecutar el programa java. Si en donde se quiere hacer es desde la consola de Windows se tendrá que agregar una variable de entorno aunque independientemente, si es en algún IDE o en la línea de comandos, donde se quiera programar se recomienda hacer estos sencillos pasos.
Para agregar una variable de entorno en Windows Vista se debe ir a:
Panel de control > Sistema > Configuración Avanzada del sistema > Variables de entorno




Se creará una nueva variable de entorno para lo cual se presionará el botón “Nueva…”. Aparecerá una nueva ventana en donde escribiremos el nombre de la variable (sugiero poner Path como nombre) y su valor, el cual deberá ser la ruta de acceso a la carpeta donde se instalo el JDK. Una vez hecho lo anterior presionar “Aceptar” y a continuación en la lista del variables del sistema se verá la variable que justamente se ha creado. Después presionar “Aceptar” y salir hasta llegar al escritorio.





 
Para probar que todo esté bien se puede hacer un simple hola mundo en el bloc de notas y compilarlo desde la consola utilizando el comando “javac holamundo.java” (sin las comillas).
Ejecutarlo sería solo poner “java holamundo” en el cmd.



 Funciona al 100%, entonces...  ¡A programar se ha dicho!


Una cosa más que quiero agregar es la aplicación con la cual voy a programar y ésta es Notepad++.


Notepad++ es un editor de texto y código exclusivo para Windows, el cual soporta varios lenguajes de programación, entre ellos java.
Se parece al bloc de notas pero con más funciones.

domingo, 28 de agosto de 2011

Descomposición en clases de mi proyecto


Editor de texto


Clases
Principal (contiene el main en donde se creará el objeto de la clase editor)
Editor (hará la función principal del programa... editará)

                                                                                                                                                            
Atributos
He tenido problemas en lo que respecta a este rubro. Conforme la vaya realizando actualizare los atributos que vaya creando.


Métodos
copiar (editor)
pegar (editor)
guardar (editor)
cortar (editor)

miércoles, 24 de agosto de 2011

Crisis del Software (Puntos Extras)


Es una frase empleada para referirse a un software que no cumple con las expectativas del cliente, además de que excede los tiempos y el presupuesto establecidos. Todo lo anterior a consecuencia de una falta de análisis y manejo de riesgo.

¿Qué viene a originar una mala planeación?  Que el software sea de baja calidad, confiabilidad cuestionable, más tiempo y quizás más dinero, etc.

¿Qué se puede hacer para evitar que pase? Tomar en cuenta las fases de análisis y diseño de software, construir modelos, usar herramientas de modelación como la UML.

La crisis del software no es una inquietud de hoy sino que siempre ha estado presente como un posible problema a la hora de realizar programas.
Hubo una época (comprendida entre 1965 y 1970) en la cual fue demasiado complicado crear programas informáticos, ya que su desarrollo era inalcanzable. Había ineficiencia, errores y costos impredecibles. Todo esto debido a que no había métodos de diseño y la suficiente tecnología.
A partir de 1970  las cosas fueron mejorando.  Emergió una innovación conceptual a partir de la cual fueron floreciendo distintas soluciones, como verificaciones y metodologías de diseño.
En la actualidad, y  a pesar de la variedad de métodos que existen, no se puede lidiar con una crisis de software del todo, ya que las aplicaciones típicas son grandes y complejas para que un individuo las entienda y, por ello, lleva gran tiempo implementar software. Sin embargo, se sigue trabajando para mejorar eso.

Ha habido varios sucesos en el que el software ha estado inmerso. Muchos piensan que el tener un software defectuoso es una cosa de poca importancia, sin embargo a través de la historia ha habido accidentes en los cuales se ha cobrado vidas. De ahí la importancia de hacer un software correctamente.

Referencias:

Casos de uso de mi proyecto

Los casos de uso son utilizados para ver como se comporta el sistema y que dispositivos o personas interactúan con él.

A continuación se presenta los casos de uso del proyecto que realizaré: 
Nota: Es posible que durante la realización del proyecto agregue nuevas funciones



Descripción de los casos de uso

Proyecto: Un editor de texto


Programa que permite al usuario editar texto de forma simple. ¿Qué tan simple? El realizar un editor de texto es complicado, y más si la intención es hacerlo como Microsoft Word 2007 o parecido. En primera instancia lo que hará es cambiar un texto a negrita, cursiva, ambos, y volverlo a la normalidad. Conforme las clases pasen y sí el tiempo me lo permite le iré agregando más opciones que le den más funcionalidad, ya que ¿A quién le interesaría un editor que sólo cambie una oración a negrita y cursiva?

Además se pretende que contenga
una barra de menús en donde se puedan realizar las funciones básicas que en cualquier editor de texto se pueden hacer como copiar, pegar, cortar, guardar, etc.  También y si es posible, quisiera ponerle una barra de herramientas con pequeñas imágenes relacionadas a la opción de copiar, pegar, etc.

Un ejemplo de lo que quiero está dado en la siguiente imagen:


 
El lenguaje de programación orientado a objetos que tengo en mente para utilizar en la realización del proyecto ya descrito arriba, es java. ¿Por qué? Porque es el lenguaje en el cual tengo un poco más de conocimiento e interés por seguir progresando. Si en un dado caso que tenga la necesidad de utilizar un lenguaje de programación adicional al java, lo utilizaré.