NIVEL 10

         ALGORÍTMICA Y PROGRAMACIÓN 2 (APO 2)




                     Mario José Villamizar Cano
                   mj.villamizar24@uniandes.edu.co
                             Oficina ML-637
http://sistemas.uniandes.edu.co/~mj.villamizar24/dokuwiki/doku.php
  Grupo de Tecnologías de Información y Comunicación (COMIT)
       Departamento de Ingeniería de Sistemas y Computación
           Universidad de los Andes, Bogotá D.C., Colombia
NIVEL 10

             REDES SOCIALES




           mjvc007@hotmail.com




        http://twitter.com/mariocloud




http://linkedin.com/in/mariojosevillamizarcano
NIVEL 10

NIVEL 10 – MECANISMOS DE REUTILIZACIÓN Y DESACOPLAMIENTO


Caso de estudio 1 – Editor de dibujos


   Interfaces

   Referencia de tipo interfaz

   Clases que implementas interfaces

   Interfaces para contenedores (Collection, List)

   Iteradores para recorrer secuencias (Iterator)

   Interfaces de niveles anteriores (ActionListener, ListSelectionListener,
   Serializable)
NIVEL 10

NIVEL 10 – MECANISMOS DE REUTILIZACIÓN Y DESACOPLAMIENTO


Caso de estudio 1 – Editor de dibujos


   Herencia

   Extensión de interfaces

   Uso de herencia en niveles anteriores

   Manejo de menús

   Manejo de eventos del ratón

   Dibujo básico en Java
NIVEL 10

                    CASOS DE ESTUDIO
Caso de estudio 1: Un Editor de Dibujos
NIVEL 10

                    HOJAS DE TRABAJO
Hoja de trabajo 1: Mapa de la Ciudad
NIVEL 10

                      HOJAS DE TRABAJO
Hoja de trabajo 2: Triqui
NIVEL 10

                     HOJAS DE TRABAJO
Hoja de trabajo 3: Partitura
NIVEL 10

                    CASOS DE ESTUDIO
Caso de estudio 1: Un Editor de Dibujos
NIVEL 10

       CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS
Requerimientos funcionales.
NIVEL 10

       CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS
Requerimientos funcionales.
NIVEL 10

       CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS
Requerimientos funcionales.
NIVEL 10

       CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS
Requerimientos NO funcionales.
NIVEL 10

     CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS
Modelo del Mundo
NIVEL 10

      CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS
Modelo del la Interfaz
NIVEL 10

                                       INTERFACES
    Responsabilidades de los tres tipos de figuras
              Líneas                                      Rectángulos

Responsabilidades de la clase Linea:         Responsabilidades de la clase Rectangulo:
Dibujar la figura                            Dibujar la figura
Está dentro un punto                         Está dentro un punto
Retornar el texto                            Retornar el texto
Cambiar el texto                             Cambiar el texto
Retornar el tipo de letra                    Retornar el tipo de letra
Cambiar el tipo de letra                     Cambiar el tipo de letra
Retornar el tipo de figura                   Retornar el tipo de figura
Guardar figura a archivo                     Guardar figura a archivo

              Óvalos                                   NUEVA FIGURA

Responsabilidades de la clase Ovalo:         Responsabilidades de una nueva figura:
Dibujar la figura                            Dibujar la figura
Está dentro un punto                         Está dentro un punto
Retornar el texto                            Retornar el texto
Cambiar el texto                             Cambiar el texto
Retornar el tipo de letra                    Retornar el tipo de letra
Cambiar el tipo de letra                     Cambiar el tipo de letra
Retornar el tipo de figura                   Retornar el tipo de figura
Guardar figura a archivo                     Guardar figura a archivo
NIVEL 10

                            INTERFACES
   Responsabilidades de los tres tipos de figuras

Todas las figuras tienen unas responsabilidades comunes.

La idea con una interfaz es agrupar bajo un mismo conjunto de
signaturas de métodos los compromisos de una o varias clases. Aunque
cada figura los puede implementar de manera distinta, todas las clases
que implementen las figuras DEBEN tener estos métodos o
responsabilidades.
                          Interface IFigura

              Responsabilidades de TODAS LAS FIGURAS:
              Dibujar la figura
              Está dentro un punto
              Retornar el texto
              Cambiar el texto
              Retornar el tipo de letra
              Cambiar el tipo de letra
              Retornar el tipo de figura
              Guardar figura a archivo
NIVEL 10

                       INTERFACES
Declaración de una interface
NIVEL 10

                           INTERFACES
   Declaración de una clase que implementa la interfaz

public class Linea implements IFigura
{
       //Implementación de los métodos de la interfaz
}

public class Rectangulo implements IFigura
{
       //Implementación de los métodos de la interfaz
}

public class Ovalo implements IFigura
{
       //Implementación de los métodos de la interfaz
}


      Con este esquema las tres clases deberían implementar
             TODOS los métodos de la interfaz IFigura
NIVEL 10

                   MODELO DE CLASES
Definición en UML de la interfaces


                        <<interface>>
                           IFigure



  <<implements>>                        <<implements>>




  Linea                  Rectangulo          Ovalo
NIVEL 10

                  REFERENCIA DE TIPO INTERFAZ
  Ejemplos con referencia de tipo Interfaz




 Una vez definida una interfaz, es posible crear atributos, parámetros o
variables y manipularlos como si fueran objetos normales, con la ÚNICA
restricción que los ÚNICOS métodos que se pueden invocar sobre estas
              referencias son los contenidos en la interfaz.
NIVEL 10

                 IMPORTANCIA DE LAS INTERFACES
   Ejemplos con referencia de tipo Interfaz




  Con la definición de la interfaz IFigura ya se logró un primer nivel de
desacoplamiento entre las clases del programa, lo que nos va a permitir a
     agregar nuevas figuras al editor con mínimas modificaciones.
NIVEL 10

                INTERFACES PARA CONTENEDORAS
   Interfaces para contenedoras

En Java existen dos interfaces llamadas Collection y List que permiten
a un programador manipular grupos de objetos, sin necesidad de
restringirse a una implementación concreta.

La clase ArrayList que se ha utilizado hasta el momento implementa las
interfaces Collection y List.

Las clases Vector y LinkedList de Java también implementan las
interfaces Collection y List, por lo cual estas clases pueden reemplazar
en cualquier momento a un ArrayList.

Este modelo permite que si un método recibe una referencia a un objeto
que cumpla con la interfaz Collection, este método podría recibir una
instancia de la clase ArrayList, LinkedList o Vector y dicho método
funcionará correctamente.
NIVEL 10

             INTERFACES PARA CONTENEDORAS
Definición en UML de la interfaces

                                            Vector

                       <<interface>>
                         Collection


 ArrayList

                      <<interface>>
                           List

                                            LinkedList
NIVEL 10

                 INTERFACES PARA CONTENEDORAS
    Interfaz Collection

Utilizada para manejar grupos de elementos, sin ningún orden o posición
específica.

public interface Collection
{

        public boolean add( Object o );
        public boolean addAll( Collection c );
        public void clear();
        public boolean contains( Object o );
        public boolean isEmpty( );
        public Iterator iterator( );
        public boolean remove( Object o);
        public int size();

}
NIVEL 10

                    INTERFACES PARA CONTENEDORAS
    Interfaz List

Incluye todos los métodos de la interfaz Collection concretando en
algunos casos su comportamiento. Contiene los métodos necesarios
para manejar secuencias de valores, en los cuales cada elemento tiene
una posición.

public interface List
{

        public void add( int i, Object o );
        public Object get( int i );
        public int indexOf( Object o );
        public Object remove( int i );
        public Object set( int i, Object o);

}
NIVEL 10

                 INTERFACES PARA CONTENEDORAS
   Clase ArrayList, LinkedList y Vector

Las clases ArrayList, LinkedList y Vector de Java implementan las
interfaces Collection y List.

public   class ArrayList implements Collection, List
{
    //   Implementación de los métodos de las interfaces
    //   Collection y List
}
public   class LinkedList implements Collection, List
{
    //   Implementación de los métodos de las interfaces
    //   Collection y List
}
public   class Vector implements Collection, List
{
    //   Implementación de los métodos de las interfaces
    //   Collection y List
}
NIVEL 10

           INTERFACES PARA CONTENEDORAS
Ejemplo con un ArrayList de figuras
NIVEL 10

           INTERFACES PARA CONTENEDORAS
Ejemplo con un LinkedList de figuras
                          Solo se cambia la implementación de la clase que
                             implementa las interfaces Collection y List.
NIVEL 10

           INTERFACES PARA CONTENEDORAS
Ejemplo con un Vector de figuras
                          Solo se cambia la implementación de la clase que
                             implementa las interfaces Collection y List.
NIVEL 10

   REFERENCIAS DE TIPO INTERFAZ EN EL CASO DE ESTUDIO
    Con el uso de interfaces se logra el desacoplamiento a nivel de
la implementación de la contenedora de figuras utilizada.




                                      La única restricción es que
                                      sólo se pueden llamar los
                                      métodos contenidos en la
                                             interfaz List.
NIVEL 10

   REFERENCIAS DE TIPO INTERFAZ EN EL CASO DE ESTUDIO
   Con el uso de interfaces se logra el desacoplamiento a nivel de
las diferentes clases de figuras que puede contener el editor de
dibujos.




       La única restricción es que sólo se pueden llamar los métodos
                       contenidos en la interfaz IFigura.
NIVEL 10

           ITERADORES PARA RECORRER SECUENCIAS
   Sirve para recorrer los elementos de una contenedora sin tener
en cuenta la implementación exacta de la contenedora (ArrayList,
LinkedList, Vector, etc.).

public interface Iterator
{
         public boolean hasNetx( );
         public Object next();
}
NIVEL 10

       ARCHIVO DE PERSISTENCIA DEL CASO DE ESTUDIO
    La información de todas las figuras se guardan en un archivo de
texto.
NIVEL 10

       ARCHIVO DE PERSISTENCIA DEL CASO DE ESTUDIO
    La información de todas las figuras se guardan en un archivo de
texto. Clase Dibujo:
NIVEL 10

       ARCHIVO DE PERSISTENCIA DEL CASO DE ESTUDIO
    La información de todas las figuras se guardan en un archivo de
texto. Clase Figura:
NIVEL 10

             IMPLEMENTACIÓN DEL EDITOR DE FIGURAS
    Defina los siguientes métodos en la clase Dibujo:

public void agregarFigura( IFigura f ); // Agrega una nueva figura

public void reiniciar ( ); // Borra todas las figuras

public void hacerClick ( int x, int y ); // Ultima figura en x, y

public IFigura darSeleccionada ( ); // Retorna la figura seleccionada

public void eliminarFigura ( ); // Elimina la figura seleccionada

public boolean haSidoModificado ( ); // Indica si el dibujo fue modificado

public int darNumeroOvalos ( ); // Retorna el número de óvalos del dibujo

public void darFigurasConTexto ( String texto ); // Retorna el número de
figuras del dibujo que tienen el texto recibido como parámetro.
NIVEL 10

        OTRAS INTERFACES UTILIZADAS ANTERIORMENTE
    En los niveles anteriores se habían trabajado con la siguientes
interfaces:


Nombre de la interface: ActionListener
Paquete: java.awt.event
Métodos: void actionPerformed ( ActionEvent e )

Nombre de la interface: ListSelectionListener
Paquete: java.swing.event
Métodos: void valueChanged ( ListSelectionEvent e )

Nombre de la interface: Serializable
Paquete: java.io
Métodos: Ninguno
NIVEL 10



PREGUNTAS
NIVEL 10




HOJA DE TRABAJO
NIVEL 10

                                   HERENCIA
Atributos de los tres tipos de figuras
            Líneas                                   Rectángulos

Atributos de una línea:                     Atributos de un rectángulo:
El primer punto (donde empieza)             El primer punto (donde empieza)
El segundo punto (donde termina)            El segundo punto (donde termina)
El texto                                    El texto
El color de la línea                        El color de la línea
El tipo de línea                            El tipo de línea
El ancho de la línea                        El ancho de la línea
                                            El color de fondo

                                   Óvalos

                     Atributos de un óvalo:
                     El primer punto (donde empieza)
                     El segundo punto (donde termina)
                     El texto
                     El color de la línea
                     El tipo de línea
                     El ancho de la línea
                     El color de fondo
NIVEL 10

                                      HERENCIA

   Atributos de los tres tipos de figuras

Todas las figuras tienen atributos comunes, algunas tiene atributos
particulares.
                      Líneas                             Rectángulos
       Atributos de una línea:               Atributos de un rectángulo:
       El primer punto (donde empieza)       El primer punto (donde empieza)
       El segundo punto (donde termina)      El segundo punto (donde termina)
       El texto                              El texto
       El color de la línea                  El color de la línea
       El tipo de línea                      El tipo de línea
       El ancho de la línea                  El ancho de la línea
                                             El color de fondo

                      Óvalos                              NUEVA FIGURA
       Atributos de un óvalo:                    Atributos de una nueva figura:
       El primer punto (donde empieza)           El primer punto (donde empieza)
       El segundo punto (donde termina)          El segundo punto (donde termina)
       El texto                                  El texto
       El color de la línea                      El color de la línea
       El tipo de línea                          El tipo de línea
       El ancho de la línea                      El ancho de la línea
       El color de fondo                         Atributos específicos
NIVEL 10

                              HERENCIA

    Permite crear una estructura base para crear nuevas clases a
bajo costo (sin tener que redefiniendo atributos comunes en todas
las figuras).
                                  Clase Figura
                   Atributos comunes a todas las figuras:
                   El primer punto (donde empieza)
                   El segundo punto (donde termina)
                   El texto
                   El color de la línea
                   El tipo de línea
                   El ancho de la línea
NIVEL 10

                SUPERCLASES Y SUBCLASES

  Atributos de los tres tipos de figuras (Revisión de todo el
modelo)
NIVEL 10

     DECLARACIÓN DE SUPERCLASES Y SUBCLASES

Revisión de todo el modelo
NIVEL 10

                     CLASES ABSTRACTAS


   Son una implementación parcial, que sólo puede ser utilizada
para construir otras clases de manera más eficiente.


   No se pueden crear instancias de una clase abstracta, así tenga
definido un método constructor.




                                                   En el modelo Figura
                                                      es una clase
                                                         abstracta
NIVEL 10

           DECLARACIÓN DE UNA CLASE ABSTRACTA

   En Java se utiliza la palabra abstract para definir este tipo de
clases.
NIVEL 10

                  MÉTODOS ABSTRACTOS

   Son definido en las clases abstractas.
   Un método abstracto es un método definido en una clase
abstracta, para el cual no existe una implementación.
   Las clases que se construyan de una clase abstracta serán
responsables de implementar los métodos abstractos.
NIVEL 10

           DECLARACIÓN DE MÉTODOS ABSTRACTOS

   En Java se utiliza la palabra abstract para definir este tipo de
métodos como parte de su signatura.
NIVEL 10

           DECLARACIÓN DE MÉTODOS ABSTRACTOS

    Todos los métodos de una clase abstracta NO son abstractos.
Son abstractos aquellos cuya implementación es específica para
las subclases (cada subclase los implementa de manera diferente).
NIVEL 10

ASPECTOS IMPORTANTES EN LA DECLARACIÓN DE SUPERCLASES
                     Y SUBCLASES

    Cuando una clase hereda (extiende) de otra, hereda todos los
atributos y métodos de la superclase, la subclase solo debe incluir:


Los nuevos atributos.

Los nuevos métodos.

Una implementación para los métodos abstractos de la superclase.

Los métodos de la superclase para los cuales se quiera cambiar la
implementación. Esto se logra utilizando la misma signatura del
método heredado, con esto, el compilador automáticamente
entiende que la nueva clase quiere modificar la implementación
definida en la superclase. En el momento de redefinir un método se
debe respetar exactamente la misma signatura.
NIVEL 10

             POLIMORFISMO Y ASOCIACIÓN DINÁMICA

    Polimorfismo: Propiedad de los lenguajes orientados a objetos que
le permite a una variable tomar como valor un objeto de cualquiera de
sus subclases.
    Asociación dinámica: Propiedad que garantiza que la decisión de
cuál método invocar se toma siempre en tiempo de ejecución.
NIVEL 10

             ELEMENTOS PRIVADOS Y PROTEGIDOS



    Hasta el momento hemos definido que todos los atributos son
privados y que todos los métodos son públicos.


   En muchos casos es deseable que los métodos de una subclase
tengan acceso directo a los métodos de la superclase, sin llegar al
extremo de dejarlos públicos para todo el mundo.


   Se puede utilizar el nuevo tipo de visibilidad denominado
protected.
NIVEL 10

              ELEMENTOS PRIVADOS Y PROTEGIDOS


   Dependiendo de la visibilidad de un elemento (atributo o
método) es posible restringir o permitir el acceso a ellos de la
siguiente manera:


Si es privado ( private ), el acceso está restringido a los métodos de
la clase.


Si es protegido ( protected ), tienen acceso los métodos de la clase
y los métodos de las subclases.


Si es público ( public ), todos tienen acceso al elemento.
NIVEL 10

            ACCESO A MÉTODOS DE LA SUPERCLASE


   La variable super nos permite acceder a los métodos de la
superclase cuando:


Queremos invocar su método constructor.


Queremos invocar el método que estamos redefiniendo.


En ningún otro caso es necesario usarla.
NIVEL 10

          EJERCICIO DE REPASO DE LOS TEMAS VISTOS

     Se desea desarrollar un programa que genere el número de puntos
académicos de los egresados de una universidad. Se sabe que por cada
título que tenga un egresado se otorgan MÁXIMO los siguientes puntos,
teniendo en cuenta el promedio acumulado que haya tenido el egresado
en cada título (de manera proporcional) :

Pregrado (Máximo 50 puntos, si sacó 5)
Especialización (Máximo 100 puntos, si sacó 5)
Maestría (Máximo 200 puntos, si sacó 5)
Doctorado (Máximo 400 puntos, si sacó 5)

De todos los egresados se conoce el código, y el nombre, la demás
información depende de los títulos que haya obtenido cada egresado.
El objetivo principal inicial de todo el mundo, es que dada la información
de UN egresado, se retorne el número de puntos que ha ganado el
egresado de acuerdo a sus títulos académicos. Tenga en cuenta que
en un futuro cercano dependiendo del título que tenga un egresado
se adicionarán nuevos atributos.
NIVEL 10

                                    TAREA

    Definir todo el modelo del mundo para el nuevo ejercicio planteado,
incluyendo.


Interfaces


Clases (abstractas y no abstractas)


Atributos (privados o protegidos)


Métodos (privados o protegidos) (abstractos y no abstractos)
NIVEL 10

              SOLUCIÓN TAREA CON ATRIBUTOS PRIVADOS

      Definir todo el modelo del mundo para el nuevo ejercicio planteado.

     <<interface>>                   Estudiante             EgresadoPregrado
      IEstudiante                 codigo                   promedioPregrado
                                  nombre




EgresadoDoctorado           EgresadoMaestria          EgresadoEspecializacion
notaProyectoDoctorado       promedioMaestria         promedioEspecializacion



           Si TODOS los atributos SON PRIVADOS, a cuantos atributos
                   podría acceder cada clase directamente.
NIVEL 10

SOLUCIÓN TAREA CON ATRIBUTOS PRIVADOS

             <<interface>>
              IEstudiante
NIVEL 10

         SOLUCIÓN TAREA CON ATRIBUTOS PRIVADOS




  Estudiante
codigo
nombre
NIVEL 10

SOLUCIÓN TAREA CON ATRIBUTOS PRIVADOS

          EgresadoPregrado
          promedioPregrado
NIVEL 10

SOLUCIÓN TAREA CON ATRIBUTOS PRIVADOS

        EgresadoEspecializacion
        promedioEspecializacion
NIVEL 10

SOLUCIÓN TAREA CON ATRIBUTOS PRIVADOS
          EgresadoMaestria
          promedioMaestria
NIVEL 10

SOLUCIÓN TAREA CON ATRIBUTOS PRIVADOS
         EgresadoDoctorado
         notaProyectoDoctorado
NIVEL 10

            SOLUCIÓN TAREA CON ATRIBUTOS PROTEGIDOS

      Definir todo el modelo del mundo para el nuevo ejercicio planteado.

     <<interface>>                   Estudiante            EgresadoPregrado
      IEstudiante                 codigo                  promedioPregrado
                                  nombre




EgresadoDoctorado           EgresadoMaestria         EgresadoEspecializacion
notaProyectoDoctorado       promedioMaestria        promedioEspecializacion



         Si TODOS los atributos SON PROTEGIDOS, a cuantos atributos
                   podría acceder cada clase directamente.
NIVEL 10

SOLUCIÓN TAREA CON ATRIBUTOS PROTEGIDOS

              <<interface>>
               IEstudiante
NIVEL 10

         SOLUCIÓN TAREA CON ATRIBUTOS PROTEGIDOS




  Estudiante
codigo
nombre
NIVEL 10

SOLUCIÓN TAREA CON ATRIBUTOS PROTEGIDOS

           EgresadoPregrado
           promedioPregrado
NIVEL 10

SOLUCIÓN TAREA CON ATRIBUTOS PROTEGIDOS

         EgresadoEspecializacion
         promedioEspecializacion
NIVEL 10

SOLUCIÓN TAREA CON ATRIBUTOS PROTEGIDOS
           EgresadoMaestria
           promedioMaestria
NIVEL 10

SOLUCIÓN TAREA CON ATRIBUTOS PROTEGIDOS
          EgresadoDoctorado
          notaProyectoDoctorado
NIVEL 10

CLASE PRINCIPAL DEL MUNDO PARA AMBOS CASOS
                                 <<interface>>
SistemaEgresados    estudiante
                                  IEstudiante
NIVEL 10



PREGUNTAS
NIVEL 10




HOJA DE TRABAJO
NIVEL 10

                          LA CLASE OBJECT


   Todas las clases de Java heredan de la clase Object de manera
implícita (no es necesarios colocar el extends).

   Es la única clase que no tiene superclase.

   La clase Object NO es abstracta y tiene tres métodos:

public boolean equals (Object o): Recibe como parámetro otro objeto y
retorna un valor indicando si dicho objeto y el objeto a quién se le llama
el método son el mismo.

public String toString ( ): Retorna una representación como cadena de
caracteres del objeto. Por defecto nombreClase@numero.

protected Object clone ( ): Retorna una copia del objeto.
NIVEL 10

LA CLASE OBJECT
NIVEL 10

                         LA CLASE OBJECT


   Sirve para garantizar que         todos   los   objetos   tengan   un
comportamiento común mínimo.



    Son las base para construir clases adaptables que aprovechen el
polimorfismo y la asociación dinámica. Por ejemplo el ArrayList.



    En una ArrayList se almacenan objetos de tipo Object, por lo cual en
estas contenedoras es posible guardar objetos de cualquier clase.
Debido a esto es que es necesario hacer una operación de casting cada
vez que se saca un elemento con el método get.
NIVEL 10

                        EXTENSIÓN DE INTERFACES


     <<interface>>           <<interface>>
           I1                      I2
    3 métodos propios      5 métodos propios




                                      public interface I3 extends I1, I2
                  <<interface>>
                                      {
                        I3
               6 métodos propios
                                      }

    La herencia también es aplicable a las interfaces. En este caso se
interpreta como la suma de los contratos de la interfaces de las cuales
se hereda.
NIVEL 10

 USO DEL MECANISMO DE HERENCIA EN NIVELES ANTERIORES

   En niveles anteriores se ha utilizado la herencia en tres casos
específicos.

Para crear Ventanas.

public class InterfazNueva extends JFrame
public class DialogoNuevo extends JDialog

Para crear Panels

public class PanelNuevo extends JPanel implements ActionListener

Para crear Excepciones.

public class NuevaException extends Exception
NIVEL 10

                         MANEJO DE MENÚS

   En Java los menús se proveen utilizando tres clase principales.




JMenuBar: contiene los JMenu

JMenu: contiene los JMenuItem

JMenuItem
NIVEL 10

                             MANEJO DE MENÚS

    Clases JMenuBar, JMenu y JMenuItem.


JMenuBar                                   JMenu

JMenuBar( )                                JMenu( título )
add ( instancia_de_JMenu )                 add ( instancia_de_JMenuItem )
                                           addSeparator ( )



                   JMenuItem

                   JMenuItem( nombre )
                   setActionCommand ( comando )
                   addActionListener ( responsable )
NIVEL 10

                     MANEJO DE MENÚS

La barra de menús en el modelo de clases de la interfaz.
NIVEL 10

                     MANEJO DE MENÚS

Creación de la barra de menús.
NIVEL 10

                     MANEJO DE MENÚS

Creación de la barra de menús.
NIVEL 10

                     MANEJO DE MENÚS

Creación de la barra de menús.
NIVEL 10

                     MANEJO DE MENÚS

Creación de la barra de menús.
NIVEL 10

                       TEMAS PENDIENTES

Manejo de eventos del ratón



Modelo gráfico en Java



Manejo de la superficie de dibujo



Manejo de formas geométricas



Evolución del editor
NIVEL 10

          LABORATORIO DEL NIVEL 10




    EN EL LABORATORIO DEL NIVEL SE
REPASARAN TODOS LOS TEMAS DEL NIVEL 10
NIVEL 10



PREGUNTAS
NIVEL 10




HOJA DE TRABAJO

APO2 - Presentacion nivel 10

  • 1.
    NIVEL 10 ALGORÍTMICA Y PROGRAMACIÓN 2 (APO 2) Mario José Villamizar Cano mj.villamizar24@uniandes.edu.co Oficina ML-637 http://sistemas.uniandes.edu.co/~mj.villamizar24/dokuwiki/doku.php Grupo de Tecnologías de Información y Comunicación (COMIT) Departamento de Ingeniería de Sistemas y Computación Universidad de los Andes, Bogotá D.C., Colombia
  • 2.
    NIVEL 10 REDES SOCIALES mjvc007@hotmail.com http://twitter.com/mariocloud http://linkedin.com/in/mariojosevillamizarcano
  • 3.
    NIVEL 10 NIVEL 10– MECANISMOS DE REUTILIZACIÓN Y DESACOPLAMIENTO Caso de estudio 1 – Editor de dibujos Interfaces Referencia de tipo interfaz Clases que implementas interfaces Interfaces para contenedores (Collection, List) Iteradores para recorrer secuencias (Iterator) Interfaces de niveles anteriores (ActionListener, ListSelectionListener, Serializable)
  • 4.
    NIVEL 10 NIVEL 10– MECANISMOS DE REUTILIZACIÓN Y DESACOPLAMIENTO Caso de estudio 1 – Editor de dibujos Herencia Extensión de interfaces Uso de herencia en niveles anteriores Manejo de menús Manejo de eventos del ratón Dibujo básico en Java
  • 5.
    NIVEL 10 CASOS DE ESTUDIO Caso de estudio 1: Un Editor de Dibujos
  • 6.
    NIVEL 10 HOJAS DE TRABAJO Hoja de trabajo 1: Mapa de la Ciudad
  • 7.
    NIVEL 10 HOJAS DE TRABAJO Hoja de trabajo 2: Triqui
  • 8.
    NIVEL 10 HOJAS DE TRABAJO Hoja de trabajo 3: Partitura
  • 9.
    NIVEL 10 CASOS DE ESTUDIO Caso de estudio 1: Un Editor de Dibujos
  • 10.
    NIVEL 10 CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS Requerimientos funcionales.
  • 11.
    NIVEL 10 CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS Requerimientos funcionales.
  • 12.
    NIVEL 10 CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS Requerimientos funcionales.
  • 13.
    NIVEL 10 CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS Requerimientos NO funcionales.
  • 14.
    NIVEL 10 CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS Modelo del Mundo
  • 15.
    NIVEL 10 CASO DE ESTUDIO 1 – UN EDITOR DE DIBUJOS Modelo del la Interfaz
  • 16.
    NIVEL 10 INTERFACES Responsabilidades de los tres tipos de figuras Líneas Rectángulos Responsabilidades de la clase Linea: Responsabilidades de la clase Rectangulo: Dibujar la figura Dibujar la figura Está dentro un punto Está dentro un punto Retornar el texto Retornar el texto Cambiar el texto Cambiar el texto Retornar el tipo de letra Retornar el tipo de letra Cambiar el tipo de letra Cambiar el tipo de letra Retornar el tipo de figura Retornar el tipo de figura Guardar figura a archivo Guardar figura a archivo Óvalos NUEVA FIGURA Responsabilidades de la clase Ovalo: Responsabilidades de una nueva figura: Dibujar la figura Dibujar la figura Está dentro un punto Está dentro un punto Retornar el texto Retornar el texto Cambiar el texto Cambiar el texto Retornar el tipo de letra Retornar el tipo de letra Cambiar el tipo de letra Cambiar el tipo de letra Retornar el tipo de figura Retornar el tipo de figura Guardar figura a archivo Guardar figura a archivo
  • 17.
    NIVEL 10 INTERFACES Responsabilidades de los tres tipos de figuras Todas las figuras tienen unas responsabilidades comunes. La idea con una interfaz es agrupar bajo un mismo conjunto de signaturas de métodos los compromisos de una o varias clases. Aunque cada figura los puede implementar de manera distinta, todas las clases que implementen las figuras DEBEN tener estos métodos o responsabilidades. Interface IFigura Responsabilidades de TODAS LAS FIGURAS: Dibujar la figura Está dentro un punto Retornar el texto Cambiar el texto Retornar el tipo de letra Cambiar el tipo de letra Retornar el tipo de figura Guardar figura a archivo
  • 18.
    NIVEL 10 INTERFACES Declaración de una interface
  • 19.
    NIVEL 10 INTERFACES Declaración de una clase que implementa la interfaz public class Linea implements IFigura { //Implementación de los métodos de la interfaz } public class Rectangulo implements IFigura { //Implementación de los métodos de la interfaz } public class Ovalo implements IFigura { //Implementación de los métodos de la interfaz } Con este esquema las tres clases deberían implementar TODOS los métodos de la interfaz IFigura
  • 20.
    NIVEL 10 MODELO DE CLASES Definición en UML de la interfaces <<interface>> IFigure <<implements>> <<implements>> Linea Rectangulo Ovalo
  • 21.
    NIVEL 10 REFERENCIA DE TIPO INTERFAZ Ejemplos con referencia de tipo Interfaz Una vez definida una interfaz, es posible crear atributos, parámetros o variables y manipularlos como si fueran objetos normales, con la ÚNICA restricción que los ÚNICOS métodos que se pueden invocar sobre estas referencias son los contenidos en la interfaz.
  • 22.
    NIVEL 10 IMPORTANCIA DE LAS INTERFACES Ejemplos con referencia de tipo Interfaz Con la definición de la interfaz IFigura ya se logró un primer nivel de desacoplamiento entre las clases del programa, lo que nos va a permitir a agregar nuevas figuras al editor con mínimas modificaciones.
  • 23.
    NIVEL 10 INTERFACES PARA CONTENEDORAS Interfaces para contenedoras En Java existen dos interfaces llamadas Collection y List que permiten a un programador manipular grupos de objetos, sin necesidad de restringirse a una implementación concreta. La clase ArrayList que se ha utilizado hasta el momento implementa las interfaces Collection y List. Las clases Vector y LinkedList de Java también implementan las interfaces Collection y List, por lo cual estas clases pueden reemplazar en cualquier momento a un ArrayList. Este modelo permite que si un método recibe una referencia a un objeto que cumpla con la interfaz Collection, este método podría recibir una instancia de la clase ArrayList, LinkedList o Vector y dicho método funcionará correctamente.
  • 24.
    NIVEL 10 INTERFACES PARA CONTENEDORAS Definición en UML de la interfaces Vector <<interface>> Collection ArrayList <<interface>> List LinkedList
  • 25.
    NIVEL 10 INTERFACES PARA CONTENEDORAS Interfaz Collection Utilizada para manejar grupos de elementos, sin ningún orden o posición específica. public interface Collection { public boolean add( Object o ); public boolean addAll( Collection c ); public void clear(); public boolean contains( Object o ); public boolean isEmpty( ); public Iterator iterator( ); public boolean remove( Object o); public int size(); }
  • 26.
    NIVEL 10 INTERFACES PARA CONTENEDORAS Interfaz List Incluye todos los métodos de la interfaz Collection concretando en algunos casos su comportamiento. Contiene los métodos necesarios para manejar secuencias de valores, en los cuales cada elemento tiene una posición. public interface List { public void add( int i, Object o ); public Object get( int i ); public int indexOf( Object o ); public Object remove( int i ); public Object set( int i, Object o); }
  • 27.
    NIVEL 10 INTERFACES PARA CONTENEDORAS Clase ArrayList, LinkedList y Vector Las clases ArrayList, LinkedList y Vector de Java implementan las interfaces Collection y List. public class ArrayList implements Collection, List { // Implementación de los métodos de las interfaces // Collection y List } public class LinkedList implements Collection, List { // Implementación de los métodos de las interfaces // Collection y List } public class Vector implements Collection, List { // Implementación de los métodos de las interfaces // Collection y List }
  • 28.
    NIVEL 10 INTERFACES PARA CONTENEDORAS Ejemplo con un ArrayList de figuras
  • 29.
    NIVEL 10 INTERFACES PARA CONTENEDORAS Ejemplo con un LinkedList de figuras Solo se cambia la implementación de la clase que implementa las interfaces Collection y List.
  • 30.
    NIVEL 10 INTERFACES PARA CONTENEDORAS Ejemplo con un Vector de figuras Solo se cambia la implementación de la clase que implementa las interfaces Collection y List.
  • 31.
    NIVEL 10 REFERENCIAS DE TIPO INTERFAZ EN EL CASO DE ESTUDIO Con el uso de interfaces se logra el desacoplamiento a nivel de la implementación de la contenedora de figuras utilizada. La única restricción es que sólo se pueden llamar los métodos contenidos en la interfaz List.
  • 32.
    NIVEL 10 REFERENCIAS DE TIPO INTERFAZ EN EL CASO DE ESTUDIO Con el uso de interfaces se logra el desacoplamiento a nivel de las diferentes clases de figuras que puede contener el editor de dibujos. La única restricción es que sólo se pueden llamar los métodos contenidos en la interfaz IFigura.
  • 33.
    NIVEL 10 ITERADORES PARA RECORRER SECUENCIAS Sirve para recorrer los elementos de una contenedora sin tener en cuenta la implementación exacta de la contenedora (ArrayList, LinkedList, Vector, etc.). public interface Iterator { public boolean hasNetx( ); public Object next(); }
  • 34.
    NIVEL 10 ARCHIVO DE PERSISTENCIA DEL CASO DE ESTUDIO La información de todas las figuras se guardan en un archivo de texto.
  • 35.
    NIVEL 10 ARCHIVO DE PERSISTENCIA DEL CASO DE ESTUDIO La información de todas las figuras se guardan en un archivo de texto. Clase Dibujo:
  • 36.
    NIVEL 10 ARCHIVO DE PERSISTENCIA DEL CASO DE ESTUDIO La información de todas las figuras se guardan en un archivo de texto. Clase Figura:
  • 37.
    NIVEL 10 IMPLEMENTACIÓN DEL EDITOR DE FIGURAS Defina los siguientes métodos en la clase Dibujo: public void agregarFigura( IFigura f ); // Agrega una nueva figura public void reiniciar ( ); // Borra todas las figuras public void hacerClick ( int x, int y ); // Ultima figura en x, y public IFigura darSeleccionada ( ); // Retorna la figura seleccionada public void eliminarFigura ( ); // Elimina la figura seleccionada public boolean haSidoModificado ( ); // Indica si el dibujo fue modificado public int darNumeroOvalos ( ); // Retorna el número de óvalos del dibujo public void darFigurasConTexto ( String texto ); // Retorna el número de figuras del dibujo que tienen el texto recibido como parámetro.
  • 38.
    NIVEL 10 OTRAS INTERFACES UTILIZADAS ANTERIORMENTE En los niveles anteriores se habían trabajado con la siguientes interfaces: Nombre de la interface: ActionListener Paquete: java.awt.event Métodos: void actionPerformed ( ActionEvent e ) Nombre de la interface: ListSelectionListener Paquete: java.swing.event Métodos: void valueChanged ( ListSelectionEvent e ) Nombre de la interface: Serializable Paquete: java.io Métodos: Ninguno
  • 39.
  • 40.
  • 41.
    NIVEL 10 HERENCIA Atributos de los tres tipos de figuras Líneas Rectángulos Atributos de una línea: Atributos de un rectángulo: El primer punto (donde empieza) El primer punto (donde empieza) El segundo punto (donde termina) El segundo punto (donde termina) El texto El texto El color de la línea El color de la línea El tipo de línea El tipo de línea El ancho de la línea El ancho de la línea El color de fondo Óvalos Atributos de un óvalo: El primer punto (donde empieza) El segundo punto (donde termina) El texto El color de la línea El tipo de línea El ancho de la línea El color de fondo
  • 42.
    NIVEL 10 HERENCIA Atributos de los tres tipos de figuras Todas las figuras tienen atributos comunes, algunas tiene atributos particulares. Líneas Rectángulos Atributos de una línea: Atributos de un rectángulo: El primer punto (donde empieza) El primer punto (donde empieza) El segundo punto (donde termina) El segundo punto (donde termina) El texto El texto El color de la línea El color de la línea El tipo de línea El tipo de línea El ancho de la línea El ancho de la línea El color de fondo Óvalos NUEVA FIGURA Atributos de un óvalo: Atributos de una nueva figura: El primer punto (donde empieza) El primer punto (donde empieza) El segundo punto (donde termina) El segundo punto (donde termina) El texto El texto El color de la línea El color de la línea El tipo de línea El tipo de línea El ancho de la línea El ancho de la línea El color de fondo Atributos específicos
  • 43.
    NIVEL 10 HERENCIA Permite crear una estructura base para crear nuevas clases a bajo costo (sin tener que redefiniendo atributos comunes en todas las figuras). Clase Figura Atributos comunes a todas las figuras: El primer punto (donde empieza) El segundo punto (donde termina) El texto El color de la línea El tipo de línea El ancho de la línea
  • 44.
    NIVEL 10 SUPERCLASES Y SUBCLASES Atributos de los tres tipos de figuras (Revisión de todo el modelo)
  • 45.
    NIVEL 10 DECLARACIÓN DE SUPERCLASES Y SUBCLASES Revisión de todo el modelo
  • 46.
    NIVEL 10 CLASES ABSTRACTAS Son una implementación parcial, que sólo puede ser utilizada para construir otras clases de manera más eficiente. No se pueden crear instancias de una clase abstracta, así tenga definido un método constructor. En el modelo Figura es una clase abstracta
  • 47.
    NIVEL 10 DECLARACIÓN DE UNA CLASE ABSTRACTA En Java se utiliza la palabra abstract para definir este tipo de clases.
  • 48.
    NIVEL 10 MÉTODOS ABSTRACTOS Son definido en las clases abstractas. Un método abstracto es un método definido en una clase abstracta, para el cual no existe una implementación. Las clases que se construyan de una clase abstracta serán responsables de implementar los métodos abstractos.
  • 49.
    NIVEL 10 DECLARACIÓN DE MÉTODOS ABSTRACTOS En Java se utiliza la palabra abstract para definir este tipo de métodos como parte de su signatura.
  • 50.
    NIVEL 10 DECLARACIÓN DE MÉTODOS ABSTRACTOS Todos los métodos de una clase abstracta NO son abstractos. Son abstractos aquellos cuya implementación es específica para las subclases (cada subclase los implementa de manera diferente).
  • 51.
    NIVEL 10 ASPECTOS IMPORTANTESEN LA DECLARACIÓN DE SUPERCLASES Y SUBCLASES Cuando una clase hereda (extiende) de otra, hereda todos los atributos y métodos de la superclase, la subclase solo debe incluir: Los nuevos atributos. Los nuevos métodos. Una implementación para los métodos abstractos de la superclase. Los métodos de la superclase para los cuales se quiera cambiar la implementación. Esto se logra utilizando la misma signatura del método heredado, con esto, el compilador automáticamente entiende que la nueva clase quiere modificar la implementación definida en la superclase. En el momento de redefinir un método se debe respetar exactamente la misma signatura.
  • 52.
    NIVEL 10 POLIMORFISMO Y ASOCIACIÓN DINÁMICA Polimorfismo: Propiedad de los lenguajes orientados a objetos que le permite a una variable tomar como valor un objeto de cualquiera de sus subclases. Asociación dinámica: Propiedad que garantiza que la decisión de cuál método invocar se toma siempre en tiempo de ejecución.
  • 53.
    NIVEL 10 ELEMENTOS PRIVADOS Y PROTEGIDOS Hasta el momento hemos definido que todos los atributos son privados y que todos los métodos son públicos. En muchos casos es deseable que los métodos de una subclase tengan acceso directo a los métodos de la superclase, sin llegar al extremo de dejarlos públicos para todo el mundo. Se puede utilizar el nuevo tipo de visibilidad denominado protected.
  • 54.
    NIVEL 10 ELEMENTOS PRIVADOS Y PROTEGIDOS Dependiendo de la visibilidad de un elemento (atributo o método) es posible restringir o permitir el acceso a ellos de la siguiente manera: Si es privado ( private ), el acceso está restringido a los métodos de la clase. Si es protegido ( protected ), tienen acceso los métodos de la clase y los métodos de las subclases. Si es público ( public ), todos tienen acceso al elemento.
  • 55.
    NIVEL 10 ACCESO A MÉTODOS DE LA SUPERCLASE La variable super nos permite acceder a los métodos de la superclase cuando: Queremos invocar su método constructor. Queremos invocar el método que estamos redefiniendo. En ningún otro caso es necesario usarla.
  • 56.
    NIVEL 10 EJERCICIO DE REPASO DE LOS TEMAS VISTOS Se desea desarrollar un programa que genere el número de puntos académicos de los egresados de una universidad. Se sabe que por cada título que tenga un egresado se otorgan MÁXIMO los siguientes puntos, teniendo en cuenta el promedio acumulado que haya tenido el egresado en cada título (de manera proporcional) : Pregrado (Máximo 50 puntos, si sacó 5) Especialización (Máximo 100 puntos, si sacó 5) Maestría (Máximo 200 puntos, si sacó 5) Doctorado (Máximo 400 puntos, si sacó 5) De todos los egresados se conoce el código, y el nombre, la demás información depende de los títulos que haya obtenido cada egresado. El objetivo principal inicial de todo el mundo, es que dada la información de UN egresado, se retorne el número de puntos que ha ganado el egresado de acuerdo a sus títulos académicos. Tenga en cuenta que en un futuro cercano dependiendo del título que tenga un egresado se adicionarán nuevos atributos.
  • 57.
    NIVEL 10 TAREA Definir todo el modelo del mundo para el nuevo ejercicio planteado, incluyendo. Interfaces Clases (abstractas y no abstractas) Atributos (privados o protegidos) Métodos (privados o protegidos) (abstractos y no abstractos)
  • 58.
    NIVEL 10 SOLUCIÓN TAREA CON ATRIBUTOS PRIVADOS Definir todo el modelo del mundo para el nuevo ejercicio planteado. <<interface>> Estudiante EgresadoPregrado IEstudiante codigo promedioPregrado nombre EgresadoDoctorado EgresadoMaestria EgresadoEspecializacion notaProyectoDoctorado promedioMaestria promedioEspecializacion Si TODOS los atributos SON PRIVADOS, a cuantos atributos podría acceder cada clase directamente.
  • 59.
    NIVEL 10 SOLUCIÓN TAREACON ATRIBUTOS PRIVADOS <<interface>> IEstudiante
  • 60.
    NIVEL 10 SOLUCIÓN TAREA CON ATRIBUTOS PRIVADOS Estudiante codigo nombre
  • 61.
    NIVEL 10 SOLUCIÓN TAREACON ATRIBUTOS PRIVADOS EgresadoPregrado promedioPregrado
  • 62.
    NIVEL 10 SOLUCIÓN TAREACON ATRIBUTOS PRIVADOS EgresadoEspecializacion promedioEspecializacion
  • 63.
    NIVEL 10 SOLUCIÓN TAREACON ATRIBUTOS PRIVADOS EgresadoMaestria promedioMaestria
  • 64.
    NIVEL 10 SOLUCIÓN TAREACON ATRIBUTOS PRIVADOS EgresadoDoctorado notaProyectoDoctorado
  • 65.
    NIVEL 10 SOLUCIÓN TAREA CON ATRIBUTOS PROTEGIDOS Definir todo el modelo del mundo para el nuevo ejercicio planteado. <<interface>> Estudiante EgresadoPregrado IEstudiante codigo promedioPregrado nombre EgresadoDoctorado EgresadoMaestria EgresadoEspecializacion notaProyectoDoctorado promedioMaestria promedioEspecializacion Si TODOS los atributos SON PROTEGIDOS, a cuantos atributos podría acceder cada clase directamente.
  • 66.
    NIVEL 10 SOLUCIÓN TAREACON ATRIBUTOS PROTEGIDOS <<interface>> IEstudiante
  • 67.
    NIVEL 10 SOLUCIÓN TAREA CON ATRIBUTOS PROTEGIDOS Estudiante codigo nombre
  • 68.
    NIVEL 10 SOLUCIÓN TAREACON ATRIBUTOS PROTEGIDOS EgresadoPregrado promedioPregrado
  • 69.
    NIVEL 10 SOLUCIÓN TAREACON ATRIBUTOS PROTEGIDOS EgresadoEspecializacion promedioEspecializacion
  • 70.
    NIVEL 10 SOLUCIÓN TAREACON ATRIBUTOS PROTEGIDOS EgresadoMaestria promedioMaestria
  • 71.
    NIVEL 10 SOLUCIÓN TAREACON ATRIBUTOS PROTEGIDOS EgresadoDoctorado notaProyectoDoctorado
  • 72.
    NIVEL 10 CLASE PRINCIPALDEL MUNDO PARA AMBOS CASOS <<interface>> SistemaEgresados estudiante IEstudiante
  • 73.
  • 74.
  • 75.
    NIVEL 10 LA CLASE OBJECT Todas las clases de Java heredan de la clase Object de manera implícita (no es necesarios colocar el extends). Es la única clase que no tiene superclase. La clase Object NO es abstracta y tiene tres métodos: public boolean equals (Object o): Recibe como parámetro otro objeto y retorna un valor indicando si dicho objeto y el objeto a quién se le llama el método son el mismo. public String toString ( ): Retorna una representación como cadena de caracteres del objeto. Por defecto nombreClase@numero. protected Object clone ( ): Retorna una copia del objeto.
  • 76.
  • 77.
    NIVEL 10 LA CLASE OBJECT Sirve para garantizar que todos los objetos tengan un comportamiento común mínimo. Son las base para construir clases adaptables que aprovechen el polimorfismo y la asociación dinámica. Por ejemplo el ArrayList. En una ArrayList se almacenan objetos de tipo Object, por lo cual en estas contenedoras es posible guardar objetos de cualquier clase. Debido a esto es que es necesario hacer una operación de casting cada vez que se saca un elemento con el método get.
  • 78.
    NIVEL 10 EXTENSIÓN DE INTERFACES <<interface>> <<interface>> I1 I2 3 métodos propios 5 métodos propios public interface I3 extends I1, I2 <<interface>> { I3 6 métodos propios } La herencia también es aplicable a las interfaces. En este caso se interpreta como la suma de los contratos de la interfaces de las cuales se hereda.
  • 79.
    NIVEL 10 USODEL MECANISMO DE HERENCIA EN NIVELES ANTERIORES En niveles anteriores se ha utilizado la herencia en tres casos específicos. Para crear Ventanas. public class InterfazNueva extends JFrame public class DialogoNuevo extends JDialog Para crear Panels public class PanelNuevo extends JPanel implements ActionListener Para crear Excepciones. public class NuevaException extends Exception
  • 80.
    NIVEL 10 MANEJO DE MENÚS En Java los menús se proveen utilizando tres clase principales. JMenuBar: contiene los JMenu JMenu: contiene los JMenuItem JMenuItem
  • 81.
    NIVEL 10 MANEJO DE MENÚS Clases JMenuBar, JMenu y JMenuItem. JMenuBar JMenu JMenuBar( ) JMenu( título ) add ( instancia_de_JMenu ) add ( instancia_de_JMenuItem ) addSeparator ( ) JMenuItem JMenuItem( nombre ) setActionCommand ( comando ) addActionListener ( responsable )
  • 82.
    NIVEL 10 MANEJO DE MENÚS La barra de menús en el modelo de clases de la interfaz.
  • 83.
    NIVEL 10 MANEJO DE MENÚS Creación de la barra de menús.
  • 84.
    NIVEL 10 MANEJO DE MENÚS Creación de la barra de menús.
  • 85.
    NIVEL 10 MANEJO DE MENÚS Creación de la barra de menús.
  • 86.
    NIVEL 10 MANEJO DE MENÚS Creación de la barra de menús.
  • 87.
    NIVEL 10 TEMAS PENDIENTES Manejo de eventos del ratón Modelo gráfico en Java Manejo de la superficie de dibujo Manejo de formas geométricas Evolución del editor
  • 88.
    NIVEL 10 LABORATORIO DEL NIVEL 10 EN EL LABORATORIO DEL NIVEL SE REPASARAN TODOS LOS TEMAS DEL NIVEL 10
  • 89.
  • 90.