Índice General
  1. Evolución de los lenguajes de programación
    1. Los inicios de la abstracción
    2. Los lenguajes de programación de alto nivel
    3. Abstracción, ocultación de la información, encapsulado y moludaridad
    4. El mundo de los objetos
    5. Tendencias actuales
      1. La programación basada en componentes
      2. La programación orientada a aspectos


  2. Conceptos y mecanismos de la programación orientada a objetos
    1. Clases y objetos
    2. Métodos y mensajes
    3. Herencia
      1. Herencia estricta y no estricta
      2. Herencia selectiva y no selectiva
      3. Herencia múltiple
      4. Delegación frente a herencia
    4. Composición de objetos
    5. Polimorfismo sobre los datos y vinculación dinámica
    6. Clases abstractas
    7. Soluciones genéricas


  3. El lenguaje de programación Java
    1. Evolución de Java
    2. Programas y paquetes en Java
    3. La clase como entidad básica de Java
      1. Algunos modificadores en Java
      2. Una definición de clase simple
      3. El papel de la clase principal
    4. Acceso a las variables e invocación de operaciones
      1. Métodos y variables de instancia
      2. Métodos y variables de clase
      3. Creación y manipulación de objetos
      4. Referencias y objetos
      5. Las pseudo-variables this y super
    5. Clases abstractas e interfaces
    6. Herencia de clases e implementación de interfaces
    7. Clases parametrizadas
      1. Restricciones sobre los parámetros formales
      2. Métodos parametrizados
      3. Algunas consideraciones sobre los parámetros genéricos
    8. Anidammiento de clases
      1. Clases anidadas de nivel superior
      2. Clases internas
      3. Clases locales
      4. Clases anónimas
    9. Conceptos básicos del lenguaje: de variables y operadores a instrucciones
      1. Tipos y valores
      2. Operadores y expresiones
      3. Instrucciones
    10. Arrays
    11. Tipos enumerados
    12. Ejercicios propuestos


  4. Tratamiento de excepciones
    1. Software tolerante a fallos: el concepto de excepción
    2. Captura y tratamiento de excepciones
    3. Propagación de excepciones
    4. Lanzamiento de excepciones
    5. La clase Throwable y las excepciones predefinidas
    6. Definición de nuevas excepciones
    7. Un ejemplo completo: La clase Pila<T>
    8. Ejercicios propuestos


  5. Biblioteca de clases
    1. Paquetes
      1. Importación de clases
      2. Creación de paquetes
      3. Localización de paquetes
      4. Protección de acceso en paquetes
    2. Clases básicas: el paquete java.lang
      1. La clase Object
      2. La clase Class<T>
      3. La clase System
      4. La clase Math
      5. Cadenas de caracteres: la clase String
      6. La clase StringBuilder
      7. La clase StringBuffer
      8. Las clases envoltorio
      9. Otras clases y paquetes en java.lang
    3. Clases de utilidad: el paquete java.util
      1. La clase StringTokenizer
      2. La clase Random
      3. Las interfaces Comparable<T> y Comparator<T>
    4. Aplicaciones gráficas
      1. El patrón Modelo-Vista-Controlador
      2. El paquete javax.swing
      3. Creación de vistas
      4. Algunos gestores de esquemas
      5. Rápido paseo por algunos contenedores intermedios
      6. Rápido paseo por algunos componentes visuales
      7. Un ejemplo algo más elaborado de panel de contenidos
      8. Pintar con Swing
      9. El modelo de eventos
      10. Un ejemplo MVC completo: cuentas bancarias
    5. Ejercicios Propuestos


  6. Colecciones e iteradores
    1. El marco de colecciones
      1. Las interfaces básicas
      2. Implementaciones de las interfaces básicas
      3. Algoritmos sobre colecciones
    2. Iteradores
    3. La interfaz Colecction<T>
    4. La interfaz Set<T>
    5. La interfaz List<T>
    6. La interfaz Map<K,V>
    7. Conjuntos y aplicaciones ordenadas
      1. La interfaz SortedSet<T>
      2. La interfaz SortedMap<K,V>
    8. Ejercicios Propuestos


  7. Entrada y salida en un lenguaje orientado a objetos
    1. La clase File
    2. Características básicas de un flujo de datos
    3. Los flujos binarios de entrada y salida
      1. Flujos sobre ficheros
      2. Filtros sobre flujos
      3. Otros flujos y filtros de entrada y salida
    4. Flujos de caracteres
      1. InputStreamReader y OutputStreamWriter
      2. Interacción con ficheros: FileReader y FileWriter
      3. Otros iniciadores de flujo
      4. PrintWriter
      5. BufferedReader y BufferedWriter
      6. Entrada/Salida estándar
    5. Serialización de objetos
    6. Ejercicios propuestos


  8. Ejercicios adicionales
    1. El juego del ajedrez
    2. Agencia de viajes
    3. El juego del amigo invisible


  9. Bibliografía

    Índice analítico