- A modo de prefacio.
- Orientación a Objetos.
- Orígenes.
- Paradigma.
- Objetos y clases.
- Orientación a objetos y modularidad.
- Características fundamentales de la POO.
- Ejercicios selectos.
- Un vistazo a Java.
- Un vistazo a C++.
- Orígenes y características.
- Estructura general de una clase.
- Bienvenid@ a Java / C++.
- Compilación en línea de comandos.
- Ejemplos selectos de transición (Java).
- Ejemplos selectos de transición (C++).
- Lectura de datos.
- Estructuras de control.
- Arreglos.
- Argumentos en la línea de comandos.
- Excepciones.
- Genéricos (sólo Java).
- Espacios de nombres y plantillas (templates)(sólo C++).
- Ejercicios selectos de transición (Java).
- Ejercicios selectos de transición (C++).
- Programación Orientada a Objetos.
- Mensajes, métodos y atributos (Java).
- Mensajes, métodos y atributos (C++).
- Métodos sin argumentos.
- Métodos con argumentos.
- Métodos y atributos.
- Métodos y constructores.
- Sobrecarga (overloading).
- Herencia / Generalización.
- Abstracción.
- Implementación (Java).
- Implementación (C++).
- Composición, Agregación y Asociación.
- Consideraciones adicionales (Java).
- Consideraciones adicionales (C++).
- Respecto al envío de mensajes.
- Respecto a la sobrecarga de operadores.
- Respecto al paradigma.
- Respecto al polimorfismo (early binding vs late binding).
- Clases abstractas e interfaces (Java).
- Ejercicios selectos (Java).
- Ejercicios selectos (C++).
- Estructuras de datos.
- Panorama general.
- Tipos de datos y referencias.
- Tipos de datos abstractos (ADT).
- Especificación del ADT Racional.
- Implementación del ADT Racional (Java).
- Implementación del ADT racional (C++).
- Abstracción de estructuras de datos.
- Clases autorreferidas.
- Implementación.
- Consideraciones adicionales.
- Ejercicios selectos (Java).
- Ejercicios selectos (C++).
- Pilas.
- Definición y operaciones primitivas.
- Implementación (Java).
- Implementación (C++).
- Pila primitiva.
- Pila genérica.
- Aplicaciones.
- Análisis básico de expresiones.
- Notación interfija, postfija y prefija.
- Evaluación de expresiones.
- Consideraciones adicionales.
- Ejercicios selectos (Java).
- Ejercicios selectos (C++).
- Colas de espera.
- Definición.
- Operaciones primitivas.
- Representación.
- Colas de prioridad (Java).
- Colas de prioridad (C++).
- Cola de prioridad ascendente.
- Implementación.
- Cola de prioridad descendente.
- Consideraciones adicionales.
- Ejercicios selectos (Java).
- Ejercicios selectos (C++).
- Listas enlazadas.
- Definición.
- Operaciones primitivas.
- Representación.
- Implementación (Java).
- Implementación (C++).
- Herencia vs. composición (Java).
- Herencia vs composición (C++).
- Implementación de una pila utilizando herencia.
- Implementación de una pila utilizando composición.
- Listas circulares.
- El problema de Josephus.
- Listas doblemente enlazadas.
- Definición.
- Operaciones primitivas.
- Representación.
- Consideraciones adicionales (iteradores).
- Ejercicios selectos (Java).
- Ejercicios selectos (C++).
- Árboles binarios.
- Definición.
- Representación y conceptos.
- Operaciones primitivas.
- Recorridos.
- Árbol binario de búsqueda (ABB).
- Operaciones primitivas.
- Representación y diseño.
- Implementación (Java).
- Implementación (C++).
- Eliminación.
- Árboles binarios balanceados (AVL).
- Definición y conceptos.
- Rotación simple.
- Rotación doble.
- Consideraciones finales.
- Ejercicios selectos (Java).
- Ejercicios selectos (C++).
- Excepciones (Java).
- Atrapando y manejando excepciones.
- Especificación de excepciones lanzadas por un método.
- Lanzando y encadenamiento.
- Ventajas de las excepciones.
- Ejercicios selectos.
- Hilos (Java).
- Creación de hilos.
- Trabajando con hilos.
- Hilos y pausas.
- Hilos interactuando.
- Consideraciones.
- Sincronización.
- Interferencia de hilos.
- Errores de consistencia de memoria.
- Candados intrínsecos y sentencias sincronizadas.
- Conclusión.
- Interbloqueo.
- Ejercicios selectos.
- Breve introducción a redes y sockets.
- Conceptos básicos de redes.
- Puertos.
- Manos a la obra (Java).
- Trabajando con URLs.
- Trabajando con Sockets.
- Ejercicios selectos (Java).
- Referencias sugeridas.
- Miscelánea
- BlueJ (A free Java Development Environment designed for beginners).
- Desarrollo de un Generador de Código Swift a Partir de Modelos de Clase en UML 2.
- FOLDOC (Free OnLine Dictionary Of Computing).
- Java API 8.
"Un lenguaje de programación cumple dos propósitos relacionados entre sí: proporciona un vehículo para que el programador especifique acciones que deben ejecutarse y proporciona un conjunto de conceptos para que el programador los use cuando piense en lo que se puede hacer..."
...
"Para escribir un buen programa hace falta inteligencia, gusto y paciencia."
Bjarne Stroustrup