martes, 1 de noviembre de 2011

Tercera Entrega: Interfaz Grafica, Eventos y Excepciones

Interfaz Grafica

Aqui muestro la interfaz que llevo hasta el momento:

CLASE INTERFAZ

En esta primera imagen que les muestro nos muestra una ventana con 2 botones los cuales son alarma y cronometro.

En esta segunda imagen si ven despliega una ventana mas grande porque, porque se le dio click al boton alarma, lo cual cambio de ventana, pero aun le falta agregarle mas formato.

En esta otra nos muestra una ventana mas grande porque en esta le dimos click al boton cronometro lo cual nos llevo a su ventana, pero la cual aun no tiene otra funcionalidad.

Aqui esta el codigo hecho hasta el momento de esta parte:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Interfaz extends JFrame implements ActionListener {
private JButton boton, boton2;

public Interfaz(){
super("Reloj Digital");
boton = new JButton("Alarma");
boton2 = new JButton("Cronometro");

setLocationRelativeTo(null);
setLayout(new BorderLayout());
setLayout(new FlowLayout());
add(boton);
add(boton2);
boton.addActionListener(this);
boton2.addActionListener(this);
boton.setBackground(Color.WHITE);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

manejadorEvent maneja = new manejadorEvent();
boton.addActionListener(maneja);

manejadorEvent maneja2 = new manejadorEvent();
boton2.addActionListener(maneja2);
}

public class manejadorEvent implements ActionListener {

public void actionPerformed(ActionEvent e){
if(e.getSource()==boton){
setVisible(false);
final Interfaz ventana2 = new Interfaz();
ventana2.setVisible(true);
ventana2.setSize(400,300);
}else if (e.getSource()==boton2){
setVisible(false);
final Interfaz ventana3 = new Interfaz();
ventana3.setVisible(true);
ventana3.setSize(500,400);
}
}
}

public void actionPerformed(ActionEvent e){
System.out.println("00:00:00");
Object fuente = e.getSource();
if(fuente == boton){
setTitle("Alarma");
}else if (fuente == boton2){
setTitle("Cronometro");
}
}

public static void main(String[] args){
final Interfaz ventana = new Interfaz();
ventana.setVisible(true);
ventana.setSize(300,200);
}
}


CLASE RELOJ


Esta pantalla nos muesta en la terminal la hora actualizandose cada segundo, aun le falta darle formato a esta parte pero lo que queria aqui es mostrarles la hora.

Aqui el codigo de la clase reloj:

import javax.swing.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;
import java.awt.event.*;
import java.awt.*;


public class Reloj2 extends JFrame implements Runnable{
private Thread t;
private String FormatoHora;
private Calendar obj;
private int seg, min, hora, dia, diaSemana, mes, ano;

public Reloj2 (){
this.t = new Thread(this);
this.actualizarHora();
t.start();
}

public void start(){
if(t==null){
t=new Thread(this);
t.start();
}
}

public void stop(){
if(t!=null){
t.stop();
t=null;
}
}

public void run(){
while(t!=null){
this.actualizarHora();

System.out.println("" +hora+ ":" +min+ ":" + seg);
try{
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
}

public void actualizarHora() {
obj = new GregorianCalendar();
seg = obj.get(Calendar.SECOND);
min = obj.get(Calendar.MINUTE);
hora = obj.get(Calendar.HOUR_OF_DAY);
dia = obj.get(Calendar.DAY_OF_MONTH);
diaSemana = obj.get(Calendar.DAY_OF_WEEK);
mes = obj.get(Calendar.MONTH);
ano = obj.get(Calendar.YEAR);
return;
}
}


Eventos, Excepciones y errores

La siguiente parte de codigo realiza el evento de cuando al momento de hacer click en alguno de los botones, se abrira una nueva ventana la cual contendra la inforación de cada uno de los botones.

public class manejadorEvent implements ActionListener {

public void actionPerformed(ActionEvent e){
if(e.getSource()==boton){
setVisible(false);
final Interfaz ventana2 = new Interfaz();
ventana2.setVisible(true);
ventana2.setSize(400,300);
}else if (e.getSource()==boton2){
setVisible(false);
final Interfaz ventana3 = new Interfaz();
ventana3.setVisible(true);
ventana3.setSize(500,400);
}
}
}


En el caso de las excepciones, la que yo necesitare usar es la siguiente:
public void run(){
while(t!=null){
this.actualizarHora();

System.out.println("" +hora+ ":" +min+ ":" + seg);
try{
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
}

Esta lo que hace es detener el hilo que creamos por mil milisegundos, lo que nos permitira imprimir correctamente la hora y esoo ocurre en la parte de try{}catch{}, y es por eso que necesitamos hacer esa excepción porque de lo contrario no nos funcionaria correctamente el hilo y al momento de querer compilarlo no veriamos nada ya que el proceso ocurre muy rapido y no se detiene.

viernes, 7 de octubre de 2011

Segunda Entrega: Autogeneracion de codigo, Documentación Tecnica




AutoGeneración de Codigo


CLASE RELOJ generado
import java.util.*;
public class Reloj {
protected String formatoHora;

public Reloj () { };
protected void setFormatoHora ( String newVar ) {
formatoHora = newVar;
}

protected String getFormatoHora ( ) {
return formatoHora;
}
public void fijarHora( )
{
}
public void modificar( )
{
}
public void guardar( )
{
}
 
}

En este codigo que me genero con el diagrama de UML a diferencia del mio nos muestra que en la clase reloj tenemos FormatoHora como protected y al momento de hacer esa operación también nos manda un parametro a la que llama newVar, ademas de que usa 2 metodos el get y el set en el cual en el set nos manda esa variable newVar y en el get regresa el formatoHora.

CLASE RELOJ hecho

public class Reloj extends JLabel implements Runnable{

private String FormatoHora;

public Reloj (){
FormatoHora = new String("hh:mm:ss");
}

public void FijarHora(){
}
public void Modificar(){
}
public void Guardar(){
}
}

En mi codigo yo en la clase reloj yo declaro el FormatoHora como privado y no lo pongo como metodo en lo cual en el constructor el FormatoHora lo que realizara sera imprimir lo que son las horas, minutos y segundos.

CLASE ALARMA

import java.util.*;
public class Alarma {
private String hora;
private String sonido;
public Alarma () { };
private void setHora ( String newVar ) {
hora = newVar;
}
private String getHora ( ) {
return hora;
}
private void setSonido ( String newVar ) {
sonido = newVar;
}
private String getSonido ( ) {
return sonido;
}
public void modificarHora( )
{
}
public void agregarHora( )
{
}
public void activar( )
{
}
public void guardar( )
{
}
public void borrar( )
{
}
 
}

En la clase alarma pues lo unico que cambia al igual que en la de reloj es de que me crea el parametro newVar, ademas de que agrega los metodos get y set en los metodos sonido y hora.

CLASE CRONOMETRO

public class Cronometro extends Reloj {
private boolean estado;
public Cronometro () { };
private void setEstado ( boolean newVar ) {
estado = newVar;
}
private boolean getEstado ( ) {
return estado;
}
public void iniciar( )
{
}
public void detener( )
{
}

En esta clase a diferencia de lo mio igual crea el parametro newVar ademas de los metodos get y set, ademas de que aplica la herencia la cual la hereda de reloj.

CLASE EVENTOS

public class Eventos extends Notas {
private String fecha;
private String hora;
public Eventos () { };
private void setFecha ( String newVar ) {
fecha = newVar;
}
private String getFecha ( ) {
return fecha;
}
private void setHora ( String newVar ) {
hora = newVar;
}
private String getHora ( ) {
return hora;
}
public void crear( )
{
}
public void programar( )
{
}
public void sincronizar( )
{
}
}

CLASE NOTAS

public class Notas {
protected String texto;
public Notas () { };
protected void setTexto ( String newVar ) {
texto = newVar;
}
protected String getTexto ( ) {
return texto;
}
public void escribir( )
{
}
public void agregar( )
{
}
public void modificar( )
{
}
public void verNotas( )
{
}
public void guardar( )
{
}
}

En las ultimas dos clases es lo mismo la unica diferencia seria lo del parametro newVar y que agrega los metodos set y get ademas de que pues en ves de este protected texto, lo tendria private.




Herencia


public class Cronometro extends Reloj {

Bueno la herencia que aplico en mis clases en mi programa es de la clase cronometro con la clase Reloj.
¿porque lo hereda?
porque cronometro ademas de depender mucho de reloj pues se maneja con el mismo formatoHora pero a diferencia del Reloj, el cronometro iniciaria en cero y iria incrementando, lo unico seria que agarraria el formato de reloj pero iniciandolo en cero.


Documentación tecnica

viernes, 2 de septiembre de 2011

Primera Entrega: Esqueleto de las clases y Implementación de una clase

Esqueleto del Proyecto

Aqui les dejo parte de como va quedando mi esqueleto de las clases para mi proyecto.

public class AlarmaVirtual {
private int Hora;
private int Sonido;

public AlarmaVirtual{
hora();
sonido();
}
public void DefinirHora(){
}
public void ModificarHora(){
}
public void AgregarHora(){
}
public void EscogerDia(){
}
public void Activar(){
}
public void Guardar(){
}
public void Borrar(){
}

public class Reloj{
private int Color;
private int FormatoHora;

public Reloj{
Color();
FormatoHora();
}
public void FijarHora(){
}
public void Modificar(){
}
public void Guardar(){
}
}
public class Cronometro{
private int Numeros;

public Cronometro{
Numeros();
}

public void Iniciar(){
}
public void Detener(){
}
public void Reiniciar(){
}
public void Reanudar(){
}
public void AregarVueltas(){
}
}
public class Notas{
private String Texto;

public String Texto(){
return Texto;

public void EscribirNota(){
}
public void Agregar(){
}
public void Modificar(){
}
public void Recordatorios(){
}
public void VerNotas(){
}
public void Guardar(){
}
public void Borrar(){
}
}
public class Eventos{
private String Texto;

public String Texto{
return Texto();
}

public void Crear(){
}
public void Organizar(){
}
public void Programar(){
}
public void Sincronizar(){
}
}
}

Es mas o menos en si lo que va contener mi proyecto y pues conforme ira avanando el tiempo y curso ire haciendo modificaciones para que quede mas claro.

Implementación de una Clase

pues yo hice el ejemplo de moto y pues esta es la codificación:
primero en esta parte tenemos lo que es donde identificaremos todos los metodos, atributos y las clases de nuestro programa.

public class moto { //clase y atributos//
private boolean estadoMotor;
private String numPlaca;
private int velocidad;
private int vidaBateria;

public moto (String numPlaca){ //Constructor//
this.numPlaca = numPlaca;
estadoMotor=false;
velocidad=0;
vidaBateria= 100;
}
public String getverPlaca(){ //metodos//
return numPlaca;
}
public int getverVelocidad(){
return velocidad;
}
public int getVidaBateria(){
return vidaBateria;
}
public void encender()
{
estadoMotor = true;
vidaBateria--;
}
public void Apagar()
{
estadoMotor= false;
velocidad=0;

}
public void Acelerar()
{
if(estadoMotor==true){
velocidad += 20;
}else{
System.out.println("\nLa moto esta apagada no puede acelerar");
}
}
public void Frenar()
{
if(estadoMotor=true && velocidad > 20)
velocidad -= 20;
}
}

En esta segunda parte que es otro programa definimos lo que es un objeto y las instancias que sera donde hara todos los procedimientos que definimos en la primera parte, solo que aqui con el main los mandara llamar y los realizara.

import java.util.*;
public class DemoMoto {
public static void main (String[] args){
moto Joel = new moto("J1234");
int op=0;
do{
System.out.println("\nEliga su opcion:" + "\n1.Ver Placa" + "\n2.Encender motor" +
"\n3.Apagar motor" + "\n4.Acelerar" + "\n5.Frenar" + "\n6.Salir" + "\n\n");
op = (new Scanner(System.in)).nextInt();
switch (op){
case 1:
System.out.println("\nLa placa de la moto es: " + Joel.getverPlaca());
break;
case 2:
Joel.encender();
System.out.println("\nEl motor esta encendido" );
System.out.println("La vida de la bateria es:" + Joel.getVidaBateria());
break;
case 3:
Joel.Apagar();
System.out.println("\nEl motor esta apagado");
System.out.println("\nLa Velocidad de la moto es: " + Joel.getverVelocidad());
break;
case 4:
Joel.Acelerar();
System.out.println("\nLa Velocidad de la moto es: " + Joel.getverVelocidad());
break;
case 5:
Joel.Frenar();
System.out.println("\nLa Velocidad de la moto es: " + Joel.getverVelocidad());
break;
}
}while(op!=6);
}
}

Ese seria todo el codigo ahora les mostrare lo que es la imagen donde se muestra el programa ya corriendo.


En esta primera imagen como se puede apreciar lo primero que realizamos es correr el programa con el java DemoMoto pero antes de eso primero tecleamos javac DemoMoto.java para verificar que no tengamos ningun error y aqui tecleamos el numero 1 que es para ver la placa de la moto.




En esta imagen lo que hacemos es escoger el numero 2 que es para encender el motor el cual nos muestra que la vida de la bateria va disminuir 1 cada que se encienda y despues escogemos el numero 4 para la opción de acelerar en la cual nos muestra que acelero a 20.



Después en esta imagen volvemos acelerar por lo que llega a 40 y luego ponemos la función frenar el cual disminuye la velocidad por 20.




En esta ultima imagen escogemos el numero 3 para apagar el motor el cual nos muestra que la velocidad de la moto llega a 0 y despues para checar que pasaria si aceleramos sin prender el motor, el cual nos arroja el mensaje de que como esta apagada no se puede acelerar la moto y pues su velocidad es 0 y ya al ultimo viene la función de salir.


lunes, 29 de agosto de 2011

Primera Entrega: Herramientas de trabajo

Instalación del JDK en Windows

Primero que nada tenemos que ir a la pagina de java que es la siguiente:
www.java.sun.com

Después le damos click donde dice downloads y vamos a ubicar el mouse en la parte donde dice popular downloads como se muestra en la siguiente figura:

después en la ventana que visualizamos en contorno negro de popular downloads seleccionamos la opción java for Developers






después seleccionaremos ahi la imagen que dice Java Plataform (JDK) 7 como se muestra en la siguiente imagen


a continuación nos despliega otra pantalla donde nos aparecen todos los JDK para diferentes sistemas operativos. primero tenemos que seleccionar la opción de Accept License Agreement y después seleccionamos el sistema operativo que tenemos que en este caso sera windows y le damos click.
Nos va desplegar una ventana donde nos dira que si queremos guardar el archivo como se muestra en la siguiente imagen:
le damos guardar y seleccionamos la ruta donde queremos que se guarde el archivo.
Buscamos el archivo que acabamos de descargar que tendra un nombre como este:

le damos click y instalamos el software.

Pero para poder hacer jalar el JDK primero tenemos que configuar las variables
para esto les dejo el siguiente video para que chequen como editar las variables para poder empezar a utiliar java con el JDK.

http://www.youtube.com/watch?v=2pza7YwaOUw&feature=related

espero les sirva de mucho.

Pero aun no podemos realizar programas porque necesitamos un editor de texto que en mi caso yo descarge el Crimson Editor que pues es parecido al Eclipse y también sirve para hacer programas en diferentes lenguajes de programación ya que nos aparecen como se van declarando las variables, clases etc.

El cual se podria descargar de su pagina www.crimsoneditor.com y ahi vienen varias versiones.
esta es una imagen del editor.