SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
2010
                       ESCUELA POLITECNICA NACIONAL




                  PROGRAMACIÓN ORIENTADA A OBJETOS
                             N




Allaica, Hidalgo , Tupiza                             1
2010
                       ESCUELA POLITECNICA NACIONAL

                                   INFORME


TEMA:     CREACION DE UNA AGENDA USANDO APPLETS EN JAVA


OBJETIVO:


   •   Crear una agenda personal adecuada a las exigencias de cada usuario.


MARCO TEORICO


Para la realización de este proyecto se utilizaran frames que permiten la
colocación de los distintos objetos en un lugar determinado.
Esto será implementado en la creación de una Applet.


Objetos utilizados


       JButton: Permite la inserción de un boton.




       JLabel: Permite la inserción de etiquetas.




       JPanel: Permite la inserción de objetos dentro del applet de manera
       mas organizada




       JTextField: Permite el ingreso de datos




Allaica, Hidalgo , Tupiza                                                     2
2010
                       ESCUELA POLITECNICA NACIONAL




       JComboBox: permite la visualizacion de los datos ingresados en una
       barra.




Implementación del programa


                                 CLASE AGENDA


       Procedemos a la importación de los elementos, obteniéndolos todos de
       la clase SWING y AWT
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;




Allaica, Hidalgo , Tupiza                                                     3
2010
                       ESCUELA POLITECNICA NACIONAL

   Cada uno de los objetos llamados cumplen con algún objetivo en particular,
   pero los objetos de la clase AWT, son utilizados principalmente para
   aplicaciones en ventanas, su entorno visual es muy limitado y por lo tanto
   nos ofrece un entorno visual agradable.
   Para corregir esto se creo la clase SWING que permita mejorar la
   apariencia de los objetos, creando una versión mejorada de la clase AWT.


       Creamos una clase que herede los métodos de JApplet e implemente la
       interface ActionListener.
           o ActionListener: Esta clase es la encargada de esperar a la
              escucha de algún suceso que ocurra dentro del applet, por
              ejemplo el clic en un botón.




public class AgendaPRO extends JApplet implements ActionListener {


       //importacion de metodos de otras clases
       Base base=new Base();




   o Private: Son modificadores de acceso que permiten solo a la clase
       usarlos y no por otra.


//DECLARACION DE STATIC
       private JLabel nom;
       private JLabel fono;
       private JLabel dir;
       private JLabel et1;
       private JLabel et2;
       private JLabel et3;
       private JLabel et4;
       private JLabel et5;
       private JLabel et6;


Allaica, Hidalgo , Tupiza                                                       4
2010
                       ESCUELA POLITECNICA NACIONAL



       //DECLARACION DE BOTONES


       private JButton agregar;
       private JButton borrar;
       private JButton mostrar;
       private JButton limpiar;




       //DECLARACION DE PANELES
       private JPanel contentPane;
       private JPanel jPanel1;
       private JPanel jPanel2;
       private JPanel jPanel3;
       private JPanel jPanel4;
       private JPanel jPanel5;
       private JPanel jPanel6;


       //DECLARACION DE EDITS


       private JTextField nom_t;
       private JTextField fono_t;
       private JTextField dir_t;


       //DECLARACION DE UN COMBOBOX
       private JComboBox Box2;




       Creamos un metodo extendido de la clase JApplet para la inicializacion
       de los objetos introducidos.
           o init(): Este método se usa para instanciar un constructor.




       public void init(){


Allaica, Hidalgo , Tupiza                                                       5
2010
                       ESCUELA POLITECNICA NACIONAL



              //CREACION DE UN PANEL GLOBAL
              contentPane = (JPanel)this.getContentPane();




              //CREACION DE LOS STATIC Y EDITS PARA EL PANEL1


              jPanel1=new JPanel();
              nom = new JLabel("Nombre:");
              fono = new JLabel("Telefono:");
              dir = new JLabel("Direccion:");
              et1=new JLabel("Nombre:");
              et2=new JLabel("Telefono:");
              et3=new JLabel("Direccion:");
              et4=new JLabel();
              et5=new JLabel();
              et6=new JLabel();
              nom_t = new JTextField();
              fono_t = new JTextField();
              dir_t = new JTextField();




              //CREACION DE BOTONES PARA EL PANEL2
              jPanel2=new JPanel();




              agregar = new JButton("Agregar");
              agregar.addActionListener(this); // hace referencia al boton
              borrar = new JButton("Borrar");
              borrar.addActionListener(this);
              mostrar = new JButton("Mostrar");
              mostrar.addActionListener(this);
              limpiar = new JButton("Nuevo");
              limpiar.addActionListener(this);


Allaica, Hidalgo , Tupiza                                                    6
2010
                         ESCUELA POLITECNICA NACIONAL

              //CREACION DE PANELES PARA LA DESCRIPCION
              jPanel3=new JPanel();
              jPanel4=new JPanel();
              jPanel5=new JPanel();
              jPanel6=new JPanel();
              Box2 = new JComboBox();

//Colocacion de un evento para la escucha de algun suceso
//en este objeto


Box2.addActionListener(new ActionListener() {
                     public void actionPerformed(ActionEvent e)
                     {
                             Box2_actionPerformed(e);
                     }


              });




       BorderFactory: Este metodo permite la construccion de distintas vistas
       para los paneles, es asi que tenemos los siguientes:




Allaica, Hidalgo , Tupiza                                                       7
2010
                       ESCUELA POLITECNICA NACIONAL




           o Ejemplos:
                      createEmptyBorder(): Este metodo quita el borde de los
                      paneles
                      createRaisedBevelBorder(): Este metodo forma un relieve
                      sobre el panel.
       //AGREGACION DE LOS OBJETOS A LOS PANELES


              /**
               * PANEL 1
               */
              jPanel1.setLayout(null);
              jPanel1.setBorder(BorderFactory.createEtchedBorder());
              addComponent(jPanel1, nom, 7,24,60,18);
              addComponent(jPanel1, fono, 7,45,60,18);
              addComponent(jPanel1, dir, 7,66,60,18);
              addComponent(jPanel1, nom_t, 67,15,424,22);



Allaica, Hidalgo , Tupiza                                                       8
2010
                       ESCUELA POLITECNICA NACIONAL

              addComponent(jPanel1, fono_t, 67,40,424,22);
              addComponent(jPanel1, dir_t, 67,64,424,22);


              /**
               * PANEL 2
               */
              jPanel2.setLayout(null);
              jPanel2.setBorder(BorderFactory.createEtchedBorder());
              addComponent(jPanel2, agregar, 11,16,83,28);
              addComponent(jPanel2, borrar, 10,54,83,28);
              addComponent(jPanel2, mostrar, 10,92,83,28);
              addComponent(jPanel2, limpiar, 9,132,83,28);


              /**
               * PANEL 3
               */
              jPanel4.setLayout(null);
              jPanel4.setBorder(BorderFactory.createRaisedBevelBorder());
              jPanel6.setLayout(null);
              jPanel6.setBorder(BorderFactory.createEtchedBorder());
              addComponent(jPanel6, jPanel4, 11,9,99,100);
              addComponent(jPanel6, jPanel5, 110,9,278,100);




              /**
               * PANEL 5
               */
              jPanel5.setLayout(null);
              jPanel5.setBorder(BorderFactory.createRaisedBevelBorder());
              addComponent(jPanel5, et1, 9,15,60,17);
              addComponent(jPanel5, et2, 9,40,60,17);
              addComponent(jPanel5, et3, 9,65,60,17);
              addComponent(jPanel5, et4, 67,15,202,18);
              addComponent(jPanel5, et5, 67,40,202,18);


Allaica, Hidalgo , Tupiza                                                   9
2010
                       ESCUELA POLITECNICA NACIONAL

              addComponent(jPanel5, et6, 67,65,202,18);




              /**
               * PANEL 6
               */
              jPanel3.setLayout(null);
              jPanel3.setBorder(BorderFactory.createEtchedBorder());
              addComponent(jPanel3, Box2, 175,9,91,19);




              /**
               * AGREGACION AL APPLET
               */
              contentPane.setLayout(null);
              addComponent(contentPane, jPanel1, 15,24,512,100);
              addComponent(contentPane, jPanel2, 17,140,104,171);
              addComponent(contentPane, jPanel3, 128,275,396,37);
              addComponent(contentPane, jPanel6, 129,141,399,128);




              //MODIFICANDO EL TAMAÑO DE LA VENTANA
              this.setLocation(new Point(0, 0));
              this.setSize(new Dimension(556, 359));




       }




Allaica, Hidalgo , Tupiza                                              10
2010
                       ESCUELA POLITECNICA NACIONAL

       private void Box2_actionPerformed(ActionEvent e){


                     String o = (String) Box2.getSelectedItem();
                     String cad=base.buscar(o);
                     String []val=cad.split("_");
                     et4.setText(val[0]);
                     et5.setText(val[1]);
                     et6.setText(val[2]);




              }
       Metodo que implemeta el metodo Container y Component.
           o Container: Metodo que actua como un contenedor para objetos.
           o Component: Metodo que permite la inserción de un objeto de
              tipo(JButton, JTextField,…etc).
           o setBounds(x,y,width,height): Accesorio que guarda las
              posiciones y las dimensiones del objeto
       // METODO PARA LA AGREGACION DE OBJETOS EN UNA
POSICION DETERMINADA
       private void addComponent(Container container,Component c,int x,int
y,int width,int height)
       {
              c.setBounds(x,y,width,height);
              container.add(c);
       }


       Metodo que captura todos los sucesos provocados por los botones
           o ActionEvent: Metodo de la interface ActionListener de tipo event
              para la captura de eventos.
       public void actionPerformed(ActionEvent e) {


              try{
              manejador(e);
              }catch(ExceptionInInitializerError e1){


Allaica, Hidalgo , Tupiza                                                       11
2010
                         ESCUELA POLITECNICA NACIONAL

                     System.out.println("Error");
              }


       }




       Manejador(): Metodo que permite la manipulación de los eventos, de
       acuerdo a las etiquetas de los botones.


       private void manejador(ActionEvent e) {
              String comand=e.getActionCommand();
              if(comand.equals("Agregar")){
                     String a=nom_t.getText();
                     String b=fono_t.getText();
                     String c=dir_t.getText();
                     Persona body=new Persona(a,b,c);
                     base.addPersona(body);


              }
              else if(comand.equals("Borrar")){


              }
              else if(comand.equals("Mostrar")){




                     Box2.removeAllItems();
                     String cad=base.toString();
                     String []val=cad.split("_");
                     for(int i=0;i<val.length;i++){
                             Box2.addItem(val[i]);
                     }




              }


Allaica, Hidalgo , Tupiza                                                   12
2010
                       ESCUELA POLITECNICA NACIONAL

              else if(comand.equals("Nuevo")){
                      nom_t.setText("");
                      fono_t.setText("");
                      dir_t.setText("");


              }
              else{


              }


              }
}


VISTA PREVIA DEL RESULTADO DE LA UTILIZACION DE LOS METODOS.




Esto es todo para la ejecución de la Applet y funcional en todo sentido, ahora
hay que agregarle las funciones para que las ejecute.




Allaica, Hidalgo , Tupiza                                                        13
2010
                        ESCUELA POLITECNICA NACIONAL

                                     CLASE BASE
         ArrayList<?>: Esta clase permite la manipulación de datos de tipo
         object

import java.util.ArrayList;


public class Base {

         //Creacion de una base para almacenar datos de tipo persona
         public ArrayList<Persona>persona;

         /**
          * Constructor para la inicializacion del array
          */
         public Base(){
               persona=new ArrayList<Persona>();

         }

         /**
          * Metodo para la agregacion de una nueva persona al arreglo
          * @param p
          */
         public void addPersona(Persona p){
                persona.add(p);
         }

         /**
          * Metodo para la eliminacion de un contacto del arreglo
          * @param index
          */
         public void deleteContacto(int index){

                persona.remove(index);
                System.out.println("Delete Succesfull");

         }

         /**
          * Metodo Sobreescrito para la estraccion de un arreglo en una linea de
texto,
         * separado por un "_"
         *
         */
         public String toString(){

                String ref="";
                for(Persona p:persona){
                       ref=ref+p.getNom()+"_";


Allaica, Hidalgo , Tupiza                                                          14
2010
                         ESCUELA POLITECNICA NACIONAL

              }
              return ref;

       }

       /**
        * Metodo para la búsqueda de una persona en el arreglo
        * @param ref
        * @return
        */
       public String buscar(String ref){
              String result="";
              for(Persona p:persona){
                     if(ref.equals(p.getNom())){


       result=result+p.getNom()+"_"+p.getTel()+"_"+p.getDir();

                     }

              }
              return result;

       }




       }




Allaica, Hidalgo , Tupiza                                        15
2010
                       ESCUELA POLITECNICA NACIONAL

                                CLASE PERSONA

public class Persona {

       //Creacion de variables de tipo String

       private String nom;
       private String dir;
       private String tel;

       /**
        * Constructor para la inicializacion de las variables
        * @param nom
        * @param tel
        * @param dir
        */
       public Persona(String nom,String tel,String dir){
             this.dir=dir;
             this.nom=nom;
             this.tel=tel;
       }

       /**
        * Metodo que retorna el nombre de la persona
        * @return
        */
       public String getNom() {
              return nom;
       }
       /**
        * Metodo que inserta un nombre de una la persona
        * @param nom
        */
       public void setNom(String nom) {
              this.nom = nom;
       }
       /**
        * Metodo para obtener la direccion
        * @return
        */
       public String getDir() {
              return dir;
       }
       /**
        * Metodo para asignar una direccion
        * @param dir
        */
       public void setDir(String dir) {
              this.dir = dir;
       }


Allaica, Hidalgo , Tupiza                                       16
2010
                                          ESCUELA POLITECNICA NACIONAL



            /**
             * Metodo para obtener el telefono
             * @return
             */
            public String getTel() {
                   return tel;
            }
            /**
             * Metodo para asignar una telefono
             * @param tel
             */
            public void setTel(String tel) {
                   this.tel = tel;
            }



}
                                                         UML DEL PROYECTO

                                          AgendaPRO                                                                Base

    ~base: Base = new Base()                                                                         +ArrayList<?>: Persona
    -nom: JLabel                                                                                     +Attribute2
    -fono: JLabel
    -dir: JLabel                                                                                     +addPersona(p: Persona): void
    -et1: JLabel                                                                                     +deleteContacto(index: int): void
    -et2: JLabel                                                                                     +toString(): String
    -et3: JLabel                                                                                     +buscar(ref: String): String
    -et4: JLabel
    -et5: JLabel
    -et6: JLabel
    -agregar: JButton
    -borrar: JButton
    -mostrar: JButton
    -limpiar: JButton
    -contentPane: JPanel
    -jPanel1: JPanel
    -jPanel2: JPanel                                                                                                    Persona
    -jPanel3: JPanel
                                                                                                 -nom: String
    -jPanel4: JPanel
                                                                                                 -dir: String
    -jPanel5: JPanel
                                                                                                 -tel: String
    -jPanel6: JPanel
    -nom_t: JTextField                                                                           <<create>>+Persona(nom: String, tel: String, dir: String)
    -fono_t: JTextField                                                                          +getNom(): String
    -dir_t: JTextField                                                                           +setNom(nom: String)
    -Box2: JComboBox                                                                             +getDir(): String
    ~index: int = 0                                                                              +setDir(dir: String)
                                                                                                 +getTel(): String
    +init()
                                                                                                 +setTel(tel: String)
    -Box2_actionPerformed(e: ActionEvent)
                                                                                                 +imprimePersona()
    -addComponent(container: Container, c: Component, x: int, y: int, width: int, height: int)
    +actionPerformed(e: ActionEvent)
    -manejador(e: ActionEvent)




Allaica, Hidalgo , Tupiza                                                                                                                                    17
2010
                       ESCUELA POLITECNICA NACIONAL

Conclusiones:
       Los Applets son muy utilizado hoy en día para la estructuración de
       software educativo, que ayude a los mas pequeños a divertirse
       aprendiendo y jugando.
       La compañía SUN MICROSYTEM ha desarrollado gran cantidad de
       software libre para el desarrollo de aplicaciones java, entre las
       principales ha sido su evolución en el ámbito de las redes e Internet, las
       applets son la base para la evolución de la tecnología y disminución de
       la piratería, gracias a sus métodos envolventes que dificultan el robo de
       información.




Allaica, Hidalgo , Tupiza                                                           18

Contenu connexe

Similaire à AGENDA (20)

Programas de Java en BlueJ
Programas de Java en BlueJProgramas de Java en BlueJ
Programas de Java en BlueJ
 
Informe tecnico eventos
Informe tecnico   eventosInforme tecnico   eventos
Informe tecnico eventos
 
Informe#23
Informe#23Informe#23
Informe#23
 
24
2424
24
 
SCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner ClassesSCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner Classes
 
Curso java desde cero nivel i - modulo v
Curso java desde cero   nivel i - modulo vCurso java desde cero   nivel i - modulo v
Curso java desde cero nivel i - modulo v
 
In 21
In 21In 21
In 21
 
Clase8 innerclasses
Clase8 innerclassesClase8 innerclasses
Clase8 innerclasses
 
Java tema06a
Java tema06aJava tema06a
Java tema06a
 
Guia5 java
Guia5 javaGuia5 java
Guia5 java
 
Informe tecnico unidad 4
Informe tecnico unidad 4Informe tecnico unidad 4
Informe tecnico unidad 4
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
Resumen
ResumenResumen
Resumen
 
Programa
ProgramaPrograma
Programa
 
Resumen
ResumenResumen
Resumen
 
Ejemplo j internalframe_gine
Ejemplo j internalframe_gineEjemplo j internalframe_gine
Ejemplo j internalframe_gine
 
Lab3-POO
Lab3-POOLab3-POO
Lab3-POO
 
Java
JavaJava
Java
 
Import javax
Import javaxImport javax
Import javax
 
Interfaces con Java
Interfaces con JavaInterfaces con Java
Interfaces con Java
 

Dernier

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 

Dernier (11)

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

AGENDA

  • 1. 2010 ESCUELA POLITECNICA NACIONAL PROGRAMACIÓN ORIENTADA A OBJETOS N Allaica, Hidalgo , Tupiza 1
  • 2. 2010 ESCUELA POLITECNICA NACIONAL INFORME TEMA: CREACION DE UNA AGENDA USANDO APPLETS EN JAVA OBJETIVO: • Crear una agenda personal adecuada a las exigencias de cada usuario. MARCO TEORICO Para la realización de este proyecto se utilizaran frames que permiten la colocación de los distintos objetos en un lugar determinado. Esto será implementado en la creación de una Applet. Objetos utilizados JButton: Permite la inserción de un boton. JLabel: Permite la inserción de etiquetas. JPanel: Permite la inserción de objetos dentro del applet de manera mas organizada JTextField: Permite el ingreso de datos Allaica, Hidalgo , Tupiza 2
  • 3. 2010 ESCUELA POLITECNICA NACIONAL JComboBox: permite la visualizacion de los datos ingresados en una barra. Implementación del programa CLASE AGENDA Procedemos a la importación de los elementos, obteniéndolos todos de la clase SWING y AWT import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.Image; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; Allaica, Hidalgo , Tupiza 3
  • 4. 2010 ESCUELA POLITECNICA NACIONAL Cada uno de los objetos llamados cumplen con algún objetivo en particular, pero los objetos de la clase AWT, son utilizados principalmente para aplicaciones en ventanas, su entorno visual es muy limitado y por lo tanto nos ofrece un entorno visual agradable. Para corregir esto se creo la clase SWING que permita mejorar la apariencia de los objetos, creando una versión mejorada de la clase AWT. Creamos una clase que herede los métodos de JApplet e implemente la interface ActionListener. o ActionListener: Esta clase es la encargada de esperar a la escucha de algún suceso que ocurra dentro del applet, por ejemplo el clic en un botón. public class AgendaPRO extends JApplet implements ActionListener { //importacion de metodos de otras clases Base base=new Base(); o Private: Son modificadores de acceso que permiten solo a la clase usarlos y no por otra. //DECLARACION DE STATIC private JLabel nom; private JLabel fono; private JLabel dir; private JLabel et1; private JLabel et2; private JLabel et3; private JLabel et4; private JLabel et5; private JLabel et6; Allaica, Hidalgo , Tupiza 4
  • 5. 2010 ESCUELA POLITECNICA NACIONAL //DECLARACION DE BOTONES private JButton agregar; private JButton borrar; private JButton mostrar; private JButton limpiar; //DECLARACION DE PANELES private JPanel contentPane; private JPanel jPanel1; private JPanel jPanel2; private JPanel jPanel3; private JPanel jPanel4; private JPanel jPanel5; private JPanel jPanel6; //DECLARACION DE EDITS private JTextField nom_t; private JTextField fono_t; private JTextField dir_t; //DECLARACION DE UN COMBOBOX private JComboBox Box2; Creamos un metodo extendido de la clase JApplet para la inicializacion de los objetos introducidos. o init(): Este método se usa para instanciar un constructor. public void init(){ Allaica, Hidalgo , Tupiza 5
  • 6. 2010 ESCUELA POLITECNICA NACIONAL //CREACION DE UN PANEL GLOBAL contentPane = (JPanel)this.getContentPane(); //CREACION DE LOS STATIC Y EDITS PARA EL PANEL1 jPanel1=new JPanel(); nom = new JLabel("Nombre:"); fono = new JLabel("Telefono:"); dir = new JLabel("Direccion:"); et1=new JLabel("Nombre:"); et2=new JLabel("Telefono:"); et3=new JLabel("Direccion:"); et4=new JLabel(); et5=new JLabel(); et6=new JLabel(); nom_t = new JTextField(); fono_t = new JTextField(); dir_t = new JTextField(); //CREACION DE BOTONES PARA EL PANEL2 jPanel2=new JPanel(); agregar = new JButton("Agregar"); agregar.addActionListener(this); // hace referencia al boton borrar = new JButton("Borrar"); borrar.addActionListener(this); mostrar = new JButton("Mostrar"); mostrar.addActionListener(this); limpiar = new JButton("Nuevo"); limpiar.addActionListener(this); Allaica, Hidalgo , Tupiza 6
  • 7. 2010 ESCUELA POLITECNICA NACIONAL //CREACION DE PANELES PARA LA DESCRIPCION jPanel3=new JPanel(); jPanel4=new JPanel(); jPanel5=new JPanel(); jPanel6=new JPanel(); Box2 = new JComboBox(); //Colocacion de un evento para la escucha de algun suceso //en este objeto Box2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Box2_actionPerformed(e); } }); BorderFactory: Este metodo permite la construccion de distintas vistas para los paneles, es asi que tenemos los siguientes: Allaica, Hidalgo , Tupiza 7
  • 8. 2010 ESCUELA POLITECNICA NACIONAL o Ejemplos: createEmptyBorder(): Este metodo quita el borde de los paneles createRaisedBevelBorder(): Este metodo forma un relieve sobre el panel. //AGREGACION DE LOS OBJETOS A LOS PANELES /** * PANEL 1 */ jPanel1.setLayout(null); jPanel1.setBorder(BorderFactory.createEtchedBorder()); addComponent(jPanel1, nom, 7,24,60,18); addComponent(jPanel1, fono, 7,45,60,18); addComponent(jPanel1, dir, 7,66,60,18); addComponent(jPanel1, nom_t, 67,15,424,22); Allaica, Hidalgo , Tupiza 8
  • 9. 2010 ESCUELA POLITECNICA NACIONAL addComponent(jPanel1, fono_t, 67,40,424,22); addComponent(jPanel1, dir_t, 67,64,424,22); /** * PANEL 2 */ jPanel2.setLayout(null); jPanel2.setBorder(BorderFactory.createEtchedBorder()); addComponent(jPanel2, agregar, 11,16,83,28); addComponent(jPanel2, borrar, 10,54,83,28); addComponent(jPanel2, mostrar, 10,92,83,28); addComponent(jPanel2, limpiar, 9,132,83,28); /** * PANEL 3 */ jPanel4.setLayout(null); jPanel4.setBorder(BorderFactory.createRaisedBevelBorder()); jPanel6.setLayout(null); jPanel6.setBorder(BorderFactory.createEtchedBorder()); addComponent(jPanel6, jPanel4, 11,9,99,100); addComponent(jPanel6, jPanel5, 110,9,278,100); /** * PANEL 5 */ jPanel5.setLayout(null); jPanel5.setBorder(BorderFactory.createRaisedBevelBorder()); addComponent(jPanel5, et1, 9,15,60,17); addComponent(jPanel5, et2, 9,40,60,17); addComponent(jPanel5, et3, 9,65,60,17); addComponent(jPanel5, et4, 67,15,202,18); addComponent(jPanel5, et5, 67,40,202,18); Allaica, Hidalgo , Tupiza 9
  • 10. 2010 ESCUELA POLITECNICA NACIONAL addComponent(jPanel5, et6, 67,65,202,18); /** * PANEL 6 */ jPanel3.setLayout(null); jPanel3.setBorder(BorderFactory.createEtchedBorder()); addComponent(jPanel3, Box2, 175,9,91,19); /** * AGREGACION AL APPLET */ contentPane.setLayout(null); addComponent(contentPane, jPanel1, 15,24,512,100); addComponent(contentPane, jPanel2, 17,140,104,171); addComponent(contentPane, jPanel3, 128,275,396,37); addComponent(contentPane, jPanel6, 129,141,399,128); //MODIFICANDO EL TAMAÑO DE LA VENTANA this.setLocation(new Point(0, 0)); this.setSize(new Dimension(556, 359)); } Allaica, Hidalgo , Tupiza 10
  • 11. 2010 ESCUELA POLITECNICA NACIONAL private void Box2_actionPerformed(ActionEvent e){ String o = (String) Box2.getSelectedItem(); String cad=base.buscar(o); String []val=cad.split("_"); et4.setText(val[0]); et5.setText(val[1]); et6.setText(val[2]); } Metodo que implemeta el metodo Container y Component. o Container: Metodo que actua como un contenedor para objetos. o Component: Metodo que permite la inserción de un objeto de tipo(JButton, JTextField,…etc). o setBounds(x,y,width,height): Accesorio que guarda las posiciones y las dimensiones del objeto // METODO PARA LA AGREGACION DE OBJETOS EN UNA POSICION DETERMINADA private void addComponent(Container container,Component c,int x,int y,int width,int height) { c.setBounds(x,y,width,height); container.add(c); } Metodo que captura todos los sucesos provocados por los botones o ActionEvent: Metodo de la interface ActionListener de tipo event para la captura de eventos. public void actionPerformed(ActionEvent e) { try{ manejador(e); }catch(ExceptionInInitializerError e1){ Allaica, Hidalgo , Tupiza 11
  • 12. 2010 ESCUELA POLITECNICA NACIONAL System.out.println("Error"); } } Manejador(): Metodo que permite la manipulación de los eventos, de acuerdo a las etiquetas de los botones. private void manejador(ActionEvent e) { String comand=e.getActionCommand(); if(comand.equals("Agregar")){ String a=nom_t.getText(); String b=fono_t.getText(); String c=dir_t.getText(); Persona body=new Persona(a,b,c); base.addPersona(body); } else if(comand.equals("Borrar")){ } else if(comand.equals("Mostrar")){ Box2.removeAllItems(); String cad=base.toString(); String []val=cad.split("_"); for(int i=0;i<val.length;i++){ Box2.addItem(val[i]); } } Allaica, Hidalgo , Tupiza 12
  • 13. 2010 ESCUELA POLITECNICA NACIONAL else if(comand.equals("Nuevo")){ nom_t.setText(""); fono_t.setText(""); dir_t.setText(""); } else{ } } } VISTA PREVIA DEL RESULTADO DE LA UTILIZACION DE LOS METODOS. Esto es todo para la ejecución de la Applet y funcional en todo sentido, ahora hay que agregarle las funciones para que las ejecute. Allaica, Hidalgo , Tupiza 13
  • 14. 2010 ESCUELA POLITECNICA NACIONAL CLASE BASE ArrayList<?>: Esta clase permite la manipulación de datos de tipo object import java.util.ArrayList; public class Base { //Creacion de una base para almacenar datos de tipo persona public ArrayList<Persona>persona; /** * Constructor para la inicializacion del array */ public Base(){ persona=new ArrayList<Persona>(); } /** * Metodo para la agregacion de una nueva persona al arreglo * @param p */ public void addPersona(Persona p){ persona.add(p); } /** * Metodo para la eliminacion de un contacto del arreglo * @param index */ public void deleteContacto(int index){ persona.remove(index); System.out.println("Delete Succesfull"); } /** * Metodo Sobreescrito para la estraccion de un arreglo en una linea de texto, * separado por un "_" * */ public String toString(){ String ref=""; for(Persona p:persona){ ref=ref+p.getNom()+"_"; Allaica, Hidalgo , Tupiza 14
  • 15. 2010 ESCUELA POLITECNICA NACIONAL } return ref; } /** * Metodo para la búsqueda de una persona en el arreglo * @param ref * @return */ public String buscar(String ref){ String result=""; for(Persona p:persona){ if(ref.equals(p.getNom())){ result=result+p.getNom()+"_"+p.getTel()+"_"+p.getDir(); } } return result; } } Allaica, Hidalgo , Tupiza 15
  • 16. 2010 ESCUELA POLITECNICA NACIONAL CLASE PERSONA public class Persona { //Creacion de variables de tipo String private String nom; private String dir; private String tel; /** * Constructor para la inicializacion de las variables * @param nom * @param tel * @param dir */ public Persona(String nom,String tel,String dir){ this.dir=dir; this.nom=nom; this.tel=tel; } /** * Metodo que retorna el nombre de la persona * @return */ public String getNom() { return nom; } /** * Metodo que inserta un nombre de una la persona * @param nom */ public void setNom(String nom) { this.nom = nom; } /** * Metodo para obtener la direccion * @return */ public String getDir() { return dir; } /** * Metodo para asignar una direccion * @param dir */ public void setDir(String dir) { this.dir = dir; } Allaica, Hidalgo , Tupiza 16
  • 17. 2010 ESCUELA POLITECNICA NACIONAL /** * Metodo para obtener el telefono * @return */ public String getTel() { return tel; } /** * Metodo para asignar una telefono * @param tel */ public void setTel(String tel) { this.tel = tel; } } UML DEL PROYECTO AgendaPRO Base ~base: Base = new Base() +ArrayList<?>: Persona -nom: JLabel +Attribute2 -fono: JLabel -dir: JLabel +addPersona(p: Persona): void -et1: JLabel +deleteContacto(index: int): void -et2: JLabel +toString(): String -et3: JLabel +buscar(ref: String): String -et4: JLabel -et5: JLabel -et6: JLabel -agregar: JButton -borrar: JButton -mostrar: JButton -limpiar: JButton -contentPane: JPanel -jPanel1: JPanel -jPanel2: JPanel Persona -jPanel3: JPanel -nom: String -jPanel4: JPanel -dir: String -jPanel5: JPanel -tel: String -jPanel6: JPanel -nom_t: JTextField <<create>>+Persona(nom: String, tel: String, dir: String) -fono_t: JTextField +getNom(): String -dir_t: JTextField +setNom(nom: String) -Box2: JComboBox +getDir(): String ~index: int = 0 +setDir(dir: String) +getTel(): String +init() +setTel(tel: String) -Box2_actionPerformed(e: ActionEvent) +imprimePersona() -addComponent(container: Container, c: Component, x: int, y: int, width: int, height: int) +actionPerformed(e: ActionEvent) -manejador(e: ActionEvent) Allaica, Hidalgo , Tupiza 17
  • 18. 2010 ESCUELA POLITECNICA NACIONAL Conclusiones: Los Applets son muy utilizado hoy en día para la estructuración de software educativo, que ayude a los mas pequeños a divertirse aprendiendo y jugando. La compañía SUN MICROSYTEM ha desarrollado gran cantidad de software libre para el desarrollo de aplicaciones java, entre las principales ha sido su evolución en el ámbito de las redes e Internet, las applets son la base para la evolución de la tecnología y disminución de la piratería, gracias a sus métodos envolventes que dificultan el robo de información. Allaica, Hidalgo , Tupiza 18