Guνa de aprendizaje


Introducción
Objetivos
Contenidos
Planificación del aprendizaje
Evaluaciσn
Bibliografνa


Introducción

En este curso aprenderéis qué es la orientación a objetos, la importancia que tiene actualmente en la industria del software y la influencia que ha ejercido sobre muchas tecnologías informáticas.

Fundamentaréis los conocimientos teóricos aprendiendo un lenguaje orientado a objetos, el Java, tanto en los ejemplos como en los ejercicios del curso.

Seguramente, de entre todos los beneficios que ofrece la orientación a objetos, el más importante y el que ha tenido más influencia en el hecho de que toda la industria se volcase en esta nueva tecnología, es el que se conoce con el nombre de reutilización. La reutilización, como veremos, nos permite desarrollar un nuevo sistema aprovechando partes hechas anteriormente. Presentaremos las razones por las que la orientación a objetos permite un nivel tan alto de reutilización pero también veremos que la reutilización no viene sola, sino que se debe diseñar para reutilizar.

Aunque normalmente parece que todo el mundo entiende lo mismo por orientación a objetos, veremos que no es así; se dan grandes diferencias entre los diferentes autores, especialmente cuando nos acercamos a los lenguajes de programación.

Finalmente, aunque este curso está pensado para personas que ya saben programar y que, por lo tanto, ya saben poner a punto un programa, presentaremos algunas recomendaciones y criterios muy específicos de estos dos temas por lo que respecta a los programas orientados a objetos

Objetivos

Al final del programa debéis ser capaces de:

  1. Aprender los conceptos de orientación a objetos y la influencia de este paradigma en otros ámbitos de la informática, aparte de la programación. Conocer los beneficios que reporta la orientación a objetos y las razones por las que se producen.
  2. Comprender los motivos por los que en la orientación a objetos se obtienen unos niveles tan elevados de reutilización y los requerimientos que nos impone el hecho de querer obtener esta reutilización.
  3. Conocer la sintaxis y la semántica de Java en los aspectos no orientados a objetos. Saberos instalar un compilador de Java y usarlo.
  4. Aprender a programar los aspectos orientados a objetos de Java y a implementar todos aquellos aspectos teóricos de la orientación a objetos que permite Java.
  5. Aprender a usar algunos de los componentes visuales que ofrece el Java, y también introducir el modelo de eventos.
  6. Introduciros en una notación gráfica estándar, conocida con el nombre de UML, que sirve para describir sistemas orientados a objetos.

Contenidos

Los contenidos de este curso se incluyen en el material web que se adjunta con el curso.

El curso está estructurado en dos grandes bloques conceptuales, uno teórico y otro más práctico.

En el bloque teórico veréis los conocimientos necesarios para entender qué es la Orientación a Objetos (OO) y cómo se debe programar en este paradigma. Encontramos estos conocimientos estructurados en los módulos siguientes:

T1. Génesis, evolución e influencia de la Orientación a Objetos
T2. Qué es la Orientación a Objetos y qué aporta
T3. Conceptos y terminología: objetos y clases
T4. Conceptos y terminología: herencia y relaciones entre clases
T5. Otros aspectos técnicos de la Orientación a Objetos

Por otro lado, en el bloque práctico veremos cómo aplicar los conocimientos teóricos en un lenguaje orientado a objetos, que en vuestro caso será Java. Concretamente, estos conocimientos prácticos están repartidos en los módulos siguientes:

P1. Introducción a JDK
P2. Introducción al lenguaje Java (I)
P3. Introducción al lenguaje Java (II)
P4. Introducción al AWT

Módulo teórico 1
Génesis, evolución e influencia de la Orientación a Objetos

Objetivos

  • Conocer cómo nació la orientación a objetos y qué problemas resolvió.
  • Conocer también cómo, a partir de aquellas primeras ideas, evolucionó la orientación a objetos y cuáles fueron las aportaciones posteriores más importantes.
  • Conocer la influencia que ha tenido en otros ámbitos de la industria del software que afectan directamente a cualquier ingeniero informático. En concreto, es necesario revisar su influencia en las metodologías de análisis y diseño, en las bases de datos, en los sistemas operativos y los entornos gráficos.
  • Obtener una idea de las diferentes organizaciones que trabajan en la estandarización y evolución de la orientación a objetos.

Contenidos

  1. Génesis
  2. Evolución de la OO en los lenguajes de programación
  3. Influencia en la informática y la industria

Módulo teórico 2
Qué es la Orientación a Objetos y qué aporta

Objetivos

  • Repasar las tecnologías que se integraron hasta llegar a la orientación a objetos.
  • Entender que la orientación a objetos es un nuevo paradigma y, por lo tanto, una nueva manera de ver y entender la realidad
  • Conocer los nuevos conceptos que aporta la orientación a objetos.
  • Ver cómo las ganancias que nos reporta la orientación a objetos vienen de la sinergia de las diferentes tecnologías que enmarca.
  • Analizar los beneficios que aporta la orientación a objetos y las razones por las que se producen, y también el coste o la inversión necesaria para llegar a obtener estos beneficios. Asimismo, analizar los inconvenientes de una mala aplicación de la orientación a objetos.

Contenidos

  1. La orientación a objetos, una manera de pensar
  2. Bases de la orientación a objetos
  3. Beneficios, costes y peligros

Módulo teórico 3
Conceptos y terminología: objetos y clases

Objetivos

  • Profundizar en el concepto de clase.
  • Poder crear y usar objetos a partir de una clase.
  • Entender la diferencia entre lenguajes puros y lenguajes híbridos.
  • Aprender los conceptos de atributo y servicio. Ver los diferentes grados de visibilidad que pueden tener.
  • Aprender los conceptos de responsabilidad de instancia y responsabilidad de clase.

Contenidos

  1. Clase
  2. Instancia y uso
  3. Atributos y servicios

Módulo teórico 4
Conceptos y terminología: herencia y relaciones entre clases

Objetivos

  • Poder definir subclases mediante la herencia simple y saber qué cambios se pueden introducir en el momento de heredar. Conocer otros tipos de herencia y las implicaciones de cada uno
  • Presentar los diferentes tipos de clases desde el punto de vista conceptual y las ventajas e inconvenientes de cada uno. Saber cuáles de estas clases están disponibles en Java y cuáles no.
  • Introducir el concepto de interficie y su utilidad para simular de manera eficiente la herencia múltiple y potenciar el polimorfismo.
  • Presentar y usar los tres tipos de relaciones existentes en el análisis y diseño y saber cómo se transforman en la programación.
  • Aprender la programación por contrato que permite usar los formalismos de las aserciones vistos en otros cursos.

Contenidos

  1. Herencia
  2. Tipos de clases
  3. Relaciones entre clases
  4. Programación por contrato

Módulo teórico 5
Otros aspectos técnicos de la Orientación a Objetos

Objetivos

  • Saber los costes en recursos de hardware del trabajo con lenguajes orientados a objetos y las dificultades que se pueden tener si no se adopta un lenguaje con gestión de memoria automática.
  • Conocer un concepto nuevo, las metaclases, poco frecuente pero importante en la inteligencia artificial.
  • Conocer los aspectos esenciales de la arquitectura MVC y las razones por las que nos ofrece un nivel tan alto de reutilización.
  • Aprender los conceptos básicos de los frameworks y los patrones.
  • Conocer de qué manera la reutilización afecta profesionalmente a los informáticos por los nuevos roles y la forma de evaluar su productividad.

Contenidos

  1. Conceptos
  2. Reutilización

 Módulo práctico 1
Introducción a JDK

Objetivos

  • Entender qué es Java y conocer sus características.
  • Obtener los conceptos necesarios para entender el proceso de instalación y saber en todo momento qué hemos estado instalando.
  • Mostrar todo el conjunto de utilidades que acompañan al JDK.

Contenidos

  1. Concepto y características de Java
  2. Conceptos para entender el proceso de instalación
  3. Utilidades y herramientas que acompañan al JDK 1.2

 

Módulo práctico 2
Introducción al lenguaje Java (I)

Objetivos

  • Conocer la sintaxis de Java.
  • Conocer los tipos de datos básicos de Java.
  • Aprender la estructura de los ficheros fuente de Java.

Contenidos

  1. Elementos básicos
  2. Tipos de datos
  3. Expresiones y control de flujo
  4. Estructura de los ficheros fuente
  5. Primeros programas con Java

 Módulo práctico 3
Introducción al lenguaje Java (II)

Objetivos

  • Conocer la manera de declarar clases en Java e instanciarlas.
  • Conocer cómo se hace la herencia en Java.
  • Ver la forma de agrupar varias clases dentro de un paquete (package).
  • Aprender a tratar excepciones.
  • Conocer la manera como Java trata la entrada/salida.

Contenidos

  1. Objetos y clases
  2. Herencia
  3. Excepciones
  4. Paquetes (Packages)
  5. Entrada/salida estándar

Módulo práctico 4
Introducción al AWT

Objetivos

  • Conocer el AWT, la librería gráfica con un modelo de eventos que proporciona el JDK.
  • Conocer los mecanismos de eventos que ofrece Java.
  • Animar al estudiante a estudiar y probar la librería, ya que es una buena introducción a otras librerías de Java como Swing y Java2D, el futuro de los entornos gráficos realizados con Java. Al menos, si se usa el JDK de Sun.
  • Profundizar aún más en el uso de interficies de Java (ya que en AWT se usan muchas interficies, veremos aún más ejemplos de simulación de herencia múltiple en Java mediante interficies).

Contenidos

  1. Elementos del AWT
  2. Modelo de eventos

Planificación del aprendizaje

La planificación del aprendizaje sirve al participante como punto de referencia a partir del cual acceder al material didáctico del curso. Este material está dividido en dos "libros digitales" en formato UOC, uno para la parte teórica y otro para la parte práctica. Con la ayuda de esta planificación, deberéis realizar un estudio en paralelo de los dos libros.

  • Columna de objetivos. En ella encontraréis la descripción del objetivo de cada uno de los elementos del módulo, de manera que su suma garantice la consecución de los objetivos del módulo, igual que la suma de los objetivos de los módulos significa la consecución de los objetivos generales del programa.
  • Columna de contenidos. Establece la relación con la parte que da apoyo al curso y que aporta contenido. En este caso se trata de los contenidos y ejercicios que os son facilitados en soporte web.
  • Columna de materiales. Especifica la situación de los contenidos dentro del material web asociado a la asignatura.
  • Columna de actividades. Las actividades y los ejercicios de autoevaluación los encontraréis en el menú del módulo correspondiente, en el material web asociado a este curso. Podéis comprobar la solución haciendo un clic en el icono correspondiente.
  • Columna de tiempo. Indica el tiempo estimado de dedicación para alcanzar el objetivo previsto para cada apartado. Con esta información os queremos ayudar a tener una orientación inicial que os permita organizar vuestro tiempo de dedicación.

Consideraciones

Los estudiantes deben estudiar los apuntes en formato web y realizar actividades individuales, que se anunciarán en el tablón del profesor durante el curso.

Por lo que respecta al estudio del material didáctico, conviene remarcar que se hace en paralelo el estudio de la parte teórica y de la parte práctica. Juntamente a este estudio, se considera fundamental la realización tanto de las actividades propuestas en los apuntes (ejercicios y autoevaluación) como las que propondrán los consultores en el tablón del profesor durante el curso. Se recomienda sobre todo no mirar la solución de ninguna actividad antes de haberla resuelto.

Las implicaciones que tiene la realización de las actividades de cara a la nota final se explicitan en el apartado "Evaluación final del curso".

Debe tenerse en cuenta que se trata de actividades individuales; si se da el caso de copia o similitud excesiva entre las prácticas de diferentes estudiantes, el consultor se reserva el derecho de adoptar las medidas oportunas (incluida la decisión de no evaluarlas: calificación E).

Módulo teórico 1. Génesis, evolución e influencia de la Orientación a Objetos

Objetivos

Contenidos

Materiales

Actividades

Tiempo

Conocer cómo nació la orientación a objetos y qué problemas resolvió.

Génesis

Tema:

"Génesis"

Lectura de los contenidos:

– El nacimiento de un nuevo paradigma

– Dos pájaros de un tiro y la vuelta

– El primer lenguaje de OO: Simula67

30 min.

Conocer también cómo, a partir de aquellas primeras ideas, evolucionó la orientación a objetos y cuáles fueron sus aportaciones posteriores más importantes.

 

 

Evolución de la orientación a objetos en los lenguajes de programación

 

 

Tema:

"Evolución de la OO en los lenguajes de programación"

Lectura de los contenidos:

– Smalltalk y herencia

– El lenguaje C y la orientación a objetos: genericidad, herencia
múltiple, clases diferidas

– La introducción de la OO en otros lenguajes de programación: aserciones y programación por contrato, interficies

40 min.

Conocer la influencia que ha tenido en otros ámbitos de la industria del software que afectan directamente a todo ingeniero informático. Concretamente, debe revisarse la influencia en las metodologías de análisis y diseño, en las bases de datos, en los sistemas operativos y los entornos gráficos.

Obtener una idea de las diferentes
organizaciones que trabajan en la estandarización y evolución de la orientación a objetos.

 

Influencia en los diferentes ámbitos de la informática y la industria

 

Tema:

"Influencia en la informática y la industria"

 

 

Lectura de los contenidos:

La OO en el análisis y el diseño

– Les bases de datos y la OO
– Los sistemas operativos
– GUI
– Influencias
– Nuevas industrias
– Grupos de influencia

Autoevaluación

 

50 min.

Módulo teórico 2. Qué es la orientación a objetos y qué aporta

Objetivos

Contenidos

Materiales

Actividades

Tiempo

Repasar las tecnologías que se integraron hasta llegar a la orientación a objetos.

Entender que la orientación a objetos es un nuevo paradigma y, por lo tanto, una nueva manera de ver y modelar la realidad.

La orientación a objetos, una manera de pensar

 

 

Tema:

"La orientación a objetos, una manera de pensar"

 

Lectura de los contenidos:

– Introducción a la filosofía

– Terminología de la orientación a objetos

– Las tres etapas de Stroustrup

 

1 h 20 min.

Conocer los nuevos conceptos que aporta la OO.

Los conceptos básicos de la OO

Tema:

"Bases de la OO"

Lectura de los contenidos:

– Encapsulación

– Ocultación de la información

– Abstracción

– Clasificación

– Herencia

– Polimorfismo

1 h 20 min.

Ver cómo los beneficios que nos reporta la orientación a objetos vienen de la sinergia de las diferentes tecnologías que engloba.

Conocer los beneficios que aporta la orientación a objetos y las razones por las que se producen, y también el coste o la inversión necesaria para llegar a obtener estos beneficios. También analizar los inconvenientes de una mala aplicación de la orientación a objetos.

 

Beneficios, costes y peligros existentes cuando se usa la OO

 

 

Tema:

"Beneficios, costes y peligros"

 

Lectura de los contenidos:

– Beneficios

– Costes

– Peligros

– Conclusión

Autoevaluación

1 h 20 min.

Módulo teórico 3. Conceptos y terminología: objetos y clases

Objetivos

Contenidos

Materiales

Actividades

Tiempo

 

Profundizar en los conceptos de clase.

 

 

Descripción de una clase

 

 

Tema:

"Clase"

 

Lectura de los contenidos:

Representación

Datos

Operaciones

Una clase en Java

Ejercicio 1.1.

 

2 h

Poder crear y utilizar objetos de una clase.

Entender la diferencia entre lenguajes puros y lenguajes híbridos.

Instanciación y uso de una clase

Tema:

"Instanciación y uso"

Lectura de los contenidos:

Lenguajes puros e híbridos

Un primer ejemplo

Instanciación

Uso

4 h

Aprender los conceptos de atributo y servicio. Ver los diferentes grados de visibilidad que pueden tener.

Aprender los conceptos de responsabilidad de instancia y responsabilidad de clase.

Descripción de atributos y servicios

 

Tema:

"Atributos y servicios"

 

Lectura de los contenidos:

Terminología

Visibilidad

Responsabilidades

Servicios de clase

Atributos de clase

Ejercicios 3.1 y 3.2

Autoevaluación

 

6 h

Módulo teórico 4. Conceptos y terminología: herencia y relaciones entre clases

Objetivos

Contenidos

Materiales

Actividades

Tiempo

 

Poder definir subclases mediante la herencia simple y saber qué cambios se pueden introducir en el momento de heredar. Conocer otros tipos de herencia y las implicaciones de cada uno.

 

Introducir el concepto de interficie y su utilidad para simular de manera eficiente la herencia múltiple y potenciar el polimorfismo.

 

 

Descripción del mecanismo de herencia

 

 

Tema:

"Herencia"

 

Lectura de los contenidos:

ΏQué es la herencia?

Herencia simple y múltiple

Adaptaciones posibles

Polimorfismo

Identidad de los objetos

Trampas de la herencia

Ejercicios 1.1. y 1.2.

 

6 h

 

Presentar los diferentes tipos de clases desde el punto de vista conceptual y las ventajas e inconvenientes de cada uno de ellos. Saber cuáles están disponibles en Java y cuáles no.

 

Descripción de los tipos de clases

Tema:

"Tipos de clases"

Lectura de los contenidos:

Clases abstractas

Clases diferidas

Clases genéricas

Clases terminales

 

5 h

Presentar y utilizar los tres tipos de relaciones existentes en el análisis y diseño y saber cómo se transforman en la programación.

 

Descripción de las relaciones entre clases

 

Tema:

"Relaciones entre clases"

 

Lectura de los contenidos:

Utilidad de los diagramas

Agregación

Asociación

Uso

Delegación

Interficies

Propagación

 

5 h

 

Aprender la programación por contrato que permite usar los formalismos de las aserciones.

 

Descripción del mecanismo de la aserción

 

Tema:

"Programación por contrato"

Lectura de los contenidos:

Precondiciones, postcondiciones e invariantes

Aserción y herencia

Excepciones

Autoevaluación

 

4 h

Módulo teórico 5. Otros aspectos de la Orientación a Objetos

Objetivos

Contenidos

Materiales

Actividades

Tiempo

Saber los costes en recursos de hardware del trabajo con lenguajes orientados a objetos y las dificultades que se pueden encontrar si no se adopta un lenguaje con gestión de memoria automática.

Conocer un nuevo concepto, las metaclases, poco frecuente pero importante en la inteligencia artificial

Introducción a otros aspectos de la orientación a objetos.

Tema:

"Conceptos"

Lectura de los contenidos:

– Coste en recursos

– Garbagge collection

– Metaclases

 

1 h

Conocer los aspectos esenciales de la arquitectura MVC y las razones por las que nos ofrece un nivel tan alto de reutilización.

 

Aprender los conceptos básicos de los frameworks (marcos de aplicación) y patrones.

 

Conocer cómo afecta la reutilización a los informáticos por los nuevos roles y la manera de evaluar su productividad.

Introducción al concepto de reutilización.

Tema:

"Reutilización"

Lectura de los contenidos:

– Patrones

– Frameworks

– Frameworks: ventajas e inconvenientes

– Patrones frente a frameworks

– Roles

– Productividad

Autoevaluación

1 h

Módulo práctico 1. Introducción a JDK

Objetivos

Contenidos

Materiales

Actividades

Tiempo

Entender qué es Java y conocer sus características.

 

Introducción a Java

Tema:

"ΏQué es Java?"

Lectura de los contenidos:

– Características

– Java e Internet

– Conceptos erróneos comunes de Java

– ΏPor qué Java?

– La máquina virtual

 

1 h

Obtener los conceptos necesarios para entender el proceso de instalación y saber en todo momento qué hemos estado instalando.

Mostrar el conjunto de utilidades que acompañan a JDK.

Introducción a JDK, el entorno de desarrollo Java

Tema:

"El entorno de desarrollo Java"

Lectura de los contenidos:

– Instalación del JDK

– Las diferentes versiones del JDK

– Otros API Java

– Órdenes disponibles

· Órdenes básicas

· Órdenes auxiliares

– Ayuda en JDK

Ejercicios 2.1 a 2.3

2 h

Módulo práctico 2. Introducción al lenguaje Java (I)

Objetivos

Contenidos

Materiales

Actividades

Tiempo

Conocer la manera de declarar clases en Java e instanciarlas.

 

Introducción a la definición e instanciación de las clases

 

Tema:

"Objetos y clases"

Lectura de los contenidos:

– Declaración de una clase
– Modificadores
– Construir e instanciar objetos

– Usar objetos

– Comparación
– Copia
– Los más usados
– Otra manera de programar aplicaciones Java

Ejercicios 5.1. a 5.6.

9 h

Conocer los tipos básicos de Java.

 

Introducción a los tipos básicos de Java y a sus agrupaciones más fundamentales: las matrices (arrays).

Tema:

"Tipos de datos"

Lectura de los contenidos:

– Tipos de datos simples

– Matrices

1 h 30 min.

Aprender la estructura de los ficheros fuente.

Definición de las estructuras externas de Java (fichero de código fuente Java).

 

Tema:

"Estructura de los ficheros fuente"

Lectura de los contenidos:

– Declaración de clases

– Declaración de métodos de clase
– Declaración de variables

– Ejemplo de fichero fuente
– Reglas de ámbito en Java

1 h 30 min.

Módulo práctico 3. Introducción al lenguaje Java (II)

Objetivos

Contenidos

Materiales

Actividades

Tiempo

Conocer la sintaxis de Java.

 

Introducción a la sintaxis de Java

 

Temas:

"Elementos básicos",

"Expresiones y control de flujo", "Primeros programas"

Lectura de los contenidos:

– Comentarios
– Sentencias
– Bloques de código
– Palabras reservadas
– Identificadores
– Literales
– Expresiones
– Operadores
– Sentencias de control de flujo
– Diferencias entre aplicaciones y applets
– Aplicaciones Java
– Applets
Ejercicios 1.1. a 1.5.

4 h

Conocer cómo se hace la herencia en Java.

 

Introducción al mecanismo de herencia

Tema:

"Herencia

Lectura de los contenidos:

– Herencia simple

– Herencia múltiple

Ejercicio 2.1.a 2.6.

4 h

Ver la forma de agrupar varias clases dentro de un paquete (package).

Definición y uso de los packages

 

Tema:

"Packages"

Lectura de los contenidos:

– Uso de los packages

– Cómo coloca el compilador los packages
– Ámbito del package

1 h

Aprender a tratar excepciones.

Introducción al mecanismo de excepciones

 

Tema:

"Excepciones"

Lectura de los contenidos:

– Excepciones en Java

– Anunciar excepciones
– Creación
– Captura

Ejercicios 3.1. y 3.2.

1 h

Conocer la manera como Java trata la entrada/salida.

Introducción a la entrada salida estándar en Java

 

Tema:

"Entrada/Salida estándar"

Lectura de los contenidos:

– Los ficheros: la clase File
– Ficheros de acceso aleatorio
– Canales de E/S
Ejercicio 5.1.

2 h

Módulo práctico 4. Introducción al AWT

Objetivos

Contenidos

Materiales

Actividades

Tiempo

Conocer el AWT, la librería gráfica con un modelo de eventos que proporciona el JDK.

Animar al estudiante a estudiar y probar la librería, ya que es una buena introducción a otras librerías de Java, como Swing y Java2D, que son el futuro de los entornos gráficos hechos con Java. Al menos, si se usa el JDK de Sun.

Profundizar aún más en el uso de interficies de Java (ya que en AWT se usan muchas interficies, veremos aún más ejemplos de simulación de herencia múltiple en Java mediante interficies).

 

Introducción a la librería gráfica AWT.

 

Tema:

"Elementos de AWT"

Lectura de los contenidos:

– Los componentes
– Los contenedores
– Los gestores de posición
– Tipos de contenedores
– Tipos de componentes
– Tipos de gestores de posición

Ejercicios 1.1. a 1.9.

14 h

Conocer los mecanismos de eventos que ofrece Java.

Introducción a los mecanismos de eventos.

 

Tema:

"Modelo de eventos"

Lectura de los contenidos:

– Modelo de eventos en Java 1.1. y 1.2.
– Modelo de eventos en Java 1.0
Ejercicios 2.1. a 2.5.

9 h

Evaluaciσn

La evaluación final consistirá en la combinación de:

  1. Un examen final sobre el contenido de todos los módulos de la asignatura.
  2. Una evaluación continua (EC) que consta de unas actividades que se realizarán a lo largo del curso. Para tener nota de EC, será necesario presentar al menos el cincuenta por ciento de las actividades.

Bibliografνa

Bibliografia bàsica

Bertrand, M. (1997). Object-Oriented Software Construction (2a. ed.). Prentice-Hall.

Henderson-Sellers, B.; Edwards, J. (1994). Booktwo of Object-Oriented Knowledge, The Working Object. Prentice-Hall.

Cornell, G.; Horstmann, C.S. (1997). Core Java (2a. ed.). SunSoft Press. Prentice Hall.
Una descripción completa sobre todos los aspectos del lenguaje Java.

Flanagan, D. (1997). JAVA in a nutshell (2a. ed.). O’Reilly&Associates, Inc.
Un completo manual de referencia de los paquetes de la versión 1.1 de Java.

Geary, D.M. (1997). Graphic JAVA. Mastering the AWT (second edition). SunSoft Press. Prentice Hall.
Describe la manera de usar el paquete AWT.

Campione, M. y otros (1999). The Java Tutorial, Second Edition: Object Oriented Programming for the Internet. SunSoft Press. Prentice Hall.
Un buen libro para aprender a programar en Java desde cero.

 

Bibliografía complementaria

Fowler, M.; Scott, K. UML Distilled. Addison Wesley Longman Inc.

Eriksson, H.E.; Penker, M. UML Toolkit. John Wiley & Sons.