Story Transcript
EJERCICIOS SOBRE ARQUITECTURAS SOFTWARE DE VARIOS NIVELES 1.- La interfaz de usuario asociada a un caso de uso llamado CONSULTAR PRECIO aparece a continuación, junto con la clase Java correspondiente:
import java.awt.*; import java.awt.event.*; public class ConsPrecioIU extends Frame { Label label1 = new Label(); Panel panel1 = new Panel(); Button button1 = new Button(); Button button2 = new Button(); Panel panel2 = new Panel(); GridLayout gridLayout1 = new GridLayout(3,2); Label label2 = new Label(); TextField textField1 = new TextField(); Label label3 = new Label(); TextField textField2 = new TextField(); Label label4 = new Label(); TextField textField3 = new TextField(); public ConsPrecioIU() { super(); try { jbInit(); } catch (Exception e) { e.printStackTrace();
}
}
private void jbInit() throws Exception { this.setTitle("Frame Title"); label1.setText("CONSULTAR PRECIO"); label1.setAlignment(Label.CENTER); button1.setLabel("Consultar Precio"); button1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { button1_actionPerformed(e); } }); button2.setLabel("Cancelar"); button2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { button2_actionPerformed(e); } }); label2.setText("MANZANAS (Kg.)"); label3.setText("PERAS (Kg.)"); label4.setText("NARANJAS (Kg.)"); panel2.setLayout(gridLayout1); this.add(label1, BorderLayout.NORTH); this.add(panel1, BorderLayout.SOUTH); panel1.add(button1, null); panel1.add(button2, null); this.add(panel2, BorderLayout.CENTER); panel2.add(label2, null); panel2.add(textField1, null); panel2.add(label3, null); panel2.add(textField2, null);
panel2.add(label4, null); panel2.add(textField3, null); this.pack(); this.setVisible(true);} void button1_actionPerformed(ActionEvent e) {...} void button2_actionPerformed(ActionEvent e) {...} }
Se dispone también de una clase llamada Aviso que sirve para crear Dialog modales asociados al objeto Frame actual. La llamada new Aviso(this,"Pulsa Aceptar y me voy"); crearía lo siguiente:
Además, nos han proporcionado los siguientes métodos, los cuales no sabemos ni a qué clase pertenecen ni qué es lo que hacen exactamente, pero nos han dicho que son útiles para acceder a los datos almacenados en la siguiente tabla de una BD Access. Además nos dicen que dicha BD es accesible por medio de una fuente de datos ODBC llamada PRODS
public void inicializarBD () { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conexion=DriverManager.getConnection("jdbc:odbc:PRODS"); sentencia=conexion.createStatement(); } catch(Exception e){System.out.println("Error"+e.toString());} } public float getPrecio(String nombre) { try{ rs=sentencia.executeQuery("SELECT PRECIO FROM PRODUCTOS "+ "WHERE NOMBRE='"+nombre+"'"); if (rs.next()) return rs.getFloat("PRECIO"); } catch (Exception e) {System.out.println("Error: "+e.toString());} return 0; }
Se pide: Rellenar la clase ConsPrecioIU con el código necesario para que al pulsar el botón CONSULTAR PRECIO aparezca como resultado el precio de los productos escogidos. Por ejemplo, el resultado sería el siguiente:
si los precios actuales fueran los que aparecen en la tabla ACCESS anterior y se hubiera pulsado el botón CONSULTAR PRECIO con los siguientes datos de entrada:
La solución debe basarse en una arquitectura lógica en 3 niveles y ser extensible ante un futuro cambio en la lógica del negocio, ya que se está pensando en “aplicar porcentajes de descuento a cada producto dependiendo de la cantidad de Kg. que se compre”. 2.La interfaz de usuario asociada a un caso de uso llamado RESERVAR LABORATORIO aparece a continuación, junto con las clases Java correspondientes:
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ReservarLab extends JFrame { JPanel jPanel1 = new JPanel(); JLabel jLabel1 = new JLabel(); BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel2 = new JPanel(); JComboBox jComboBox1 = new JComboBox(); JComboBox jComboBox2 = new JComboBox(); JButton jButton1 = new JButton(); JPanel jPanel3 = new JPanel(); GridLayout gridLayout1 = new GridLayout(6,6); JTextField jTextField1 = new JTextField(); JTextField cajasTexto[][] = new JTextField[5][5]; GestorLabs gestor = new GestorLabs(); public ReservarLab() { super(); try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.setSize(new Dimension(400, 300)); jLabel1.setText("NOMBRE USUARIO:"); jPanel2.setLayout(gridLayout1); jButton1.setText("Reservar"); this.getContentPane().setLayout(borderLayout1); this.setTitle("Reservar Laboratorio"); jTextField1.setColumns(20);
this.getContentPane().add(jPanel1, BorderLayout.NORTH); jPanel1.add(jLabel1, null); jPanel1.add(jTextField1, null); this.getContentPane().add(jPanel2, BorderLayout.CENTER); jPanel2.add(new JLabel()); String etiqsDias[] = new String[5]; etiqsDias[0]="L"; etiqsDias[1]="M"; etiqsDias[2]="X"; etiqsDias[3]="J"; etiqsDias[4]="V"; for (int i=0;i