jueves, 27 de octubre de 2011

Interfaz gráfica.

Esta es la interfaz gráfica de mi proyecto, tenemos dos bloques, el del lado izquierdo es el bloque que contiene los botones numéricos y los de operaciones, los del lado derecho son los botones que contienen las funciones trigonométricas mas conocidas (seno, coseno y tangente) así como los botones de raíz cuadrada, pi (3.1416) y el botón de borrar. En la parte de arriba se muestra el título de la ventana y el botón cerrar.
La interfaz gráfica la hice con las herramientas de Power Point.

Eventos, errores y excepciones.

Eventos.
Componente gráfico generador
Tipo de evento
Acción que se dispara
Botón numérico
Oprimir
Aparece el número en la pantalla.
Botón de operación
Oprimir
Una vez oprimido un botón numérico, se oprime un botón de operación (+, -, *, /, sin, cos) y luego otro numérico para llegar a un resultado.
Botón clear
Oprimir
Limpia la pantalla.
Botón cerrar
Oprimir
Cierra la ventana


Errores y excepciones.

Modo en que se genera
Manejo
Se le da una letra en lugar de un número
No permitir operaciones si se da un carácter invalido
División entre cero
Denegar la operación.

Patrones de diseño.

El patrón de diseño aplicable a mi proyecto es el Modelo Vista Controlador, es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario y la lógica de negocio en tres componentes distintos:


Modelo: Hacer las operaciones mediante la introducción de números, tales como sumar, restar, multiplicar, dividir, usar las funciones trigonométricas, trigonométricas inversas, calcular el reciproco de un número, borrar los números.


Vista: Sería mi interfaz gráfica, es decir, la distribución que yo le voy a dar a los botones y el cuadro de texto donde van a aparecer los números.


Controlador: Aquí se responde a los eventos que el usuario provoca al interactuar con el software, en mi caso, que es lo que sucede cuando el usuario le da click a los botones numéricos, que sucede si le da click a los botones de operaciones, que es lo que sucede si le da click al botón de borrar.


Referencias:
http://es.wikipedia.org/wiki/Modelo_Vista_Controlador
http://www.fdi.ucm.es/profesor/jpavon/poo/2.14.MVC.pdf

Diagramas de secuencia.

Diagrama de secuencia para el caso sumar:

Diagrama de secuencia para el caso restar:

Diagrama de secuencia para el caso dividir (fallido - división entre cero):

Referencias:

martes, 25 de octubre de 2011

Patrones de diseño.

Eventos y excepciones.

Estas son las posibles excepciones que se generan en mi proyecto:


import java.io.*;

public class Excepcion {
public static void main(String args[]) throws IOException  {

try {

  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

  int n1, n2, n;
  System.out.print("Da un numero: ");
  n1 = Integer.parseInt(in.readLine());
  System.out.print("Da otro numero: ");
  n2 = Integer.parseInt(in.readLine());
  System.out.print("La division = " + n1/n2);
 }

 catch (NumberFormatException nfe) {
  System.out.println("Numero invalido " + nfe.toString());
 }
 catch (ArithmeticException ae) {
  System.out.println("Division invalida " + ae.toString());
 }
}
}
Aquí se muestra como funciona:

Con respecto a los eventos tenemos los siguientes:
1. Cuando oprimimos el botón cerrar.



addWindowListener(new WindowAdapter()
      {
         public void windowClosing(WindowEvent e)
            {
               Calc.this.dispose();
               System.runFinalization();
               System.gc();
               System.exit(0);
            }
      });

2. Cuando oprimimos cualquier botón.



       jb_one.addActionListener(Calc.this);
       jb_two.addActionListener(Calc.this);
       jb_three.addActionListener(Calc.this);
       jb_four.addActionListener(Calc.this);
       jb_five.addActionListener(Calc.this);
       jb_six.addActionListener(Calc.this);
       jb_seven.addActionListener(Calc.this);
       jb_eight.addActionListener(Calc.this);
       jb_nine.addActionListener(Calc.this);
       jb_zero.addActionListener(Calc.this);
       jb_plus.addActionListener(Calc.this);
       jb_minus.addActionListener(Calc.this);
       jb_divide.addActionListener(Calc.this);
       jb_multiply.addActionListener(Calc.this);
       jb_sin.addActionListener(Calc.this);
       jb_cos.addActionListener(Calc.this);
       jb_tan.addActionListener(Calc.this);
       jb_asin.addActionListener(Calc.this);
       jb_acos.addActionListener(Calc.this);
       jb_atan.addActionListener(Calc.this);
       jb_pie.addActionListener(Calc.this);
       jb_E.addActionListener(Calc.this);
       jb_decimalpoint.addActionListener(Calc.this);
       jb_equalto.addActionListener(Calc.this);
       jb_fact.addActionListener(Calc.this);
       jb_power.addActionListener(Calc.this);
       jb_changesign.addActionListener(Calc.this);
       jb_reciporcal.addActionListener(Calc.this);
       jb_todeg.addActionListener(Calc.this);
       jb_torad.addActionListener(Calc.this);
       jb_round.addActionListener(Calc.this);
       jb_CA.addActionListener(Calc.this);
       jb_CE.addActionListener(Calc.this);

Interfaz gráfica.

Esta será la interfaz gráfica para mi proyecto final: