Introducción a la programación orientada a objetos /
Timothy Budd.
- Wilmington : Addison-Wesley, 1994
- 409 p.
CONTENIDO 1. Pensar al estilo orientado a objetos 1 Un nuevo paradigma 2 Una manera de ver el mundo 3 Computación como simulación 8 Manejo de la complejidad 10 Mecanismos de abstracción 11 Software reutilizable 15 2. Diseño dirigido por responsabilidades 19 Tarjetas CRC 20 Descubrimiento de las clases 23 Diseño a partir de escenarios 24 Estudio de caso: Un cajero automático 25 Manejadores de datos 28 Descubrimiento de la herencia 31 Errores comunes en el diseño 34 3. Clases y métodos 37 Encapsulación 37 Ejemplo: Un juego de cartas 38 Interfaz e implantación 42 Clases y métodos 42 Clases y métodos en Object Pascal 43 Clases y métodos en Smalltalk 45 Clases y métodos en Objective-C 48 Clases y métodos en C++ 52 4. Mensajes, ejemplares e Iniciación 59 Sintaxis del paso de mensajes 59 Paso de mensajes en Object Pascal 59 Paso de mensajes en C++ 60 Paso de mensajes en SmaIltalk 61 Paso de mensajes en Objective-C 62 Creación e iniciación 63 Direccionamiento por pila versus direccionamiento por montículo 63 Recuperación de memoria 65 Vida de los valores 65 Apuntadores 66 Creación inmutable 66 Mecanismos para creación e iniciación 67 Creación e iniciación en C++ 67 Creación e iniciación en Object Pascal 70 Creación e iniciación en Smalltalk 72 Creación e iniciación en Objetive-C 74 5. Estudio de caso: Las ocho reinas 77 El acertijo de las ocho reinas 77 Las ocho reinas en Object Pascal 82 Las ocho reinas en C++ 83 Las ocho reinas en Objetive-C 84 Las ocho reinas en Smalltalk 86 6. Herencia 87 Beneficios de la herencia 88 Reusabilidad del software 88 Compartición de código 88 Consistencia de la interfaz 89 Componentes de software 89 Modelado rápido de prototipos 89 Polimorfismo 89 Ocultación de información 91 Costo de la herencia 91 Velocidad de ejecución 91 Tamaño del programa 91 Tiempo de procesamiento adicional del paso de mensajes 92 Complejidad de los programas 92 Heurística para crear subclases 92 Especialización 93 Especificación 93 Construcción 94 Generalización 94 Extensión 95 Limitación 95 Variaciones 96 Combinación 97 Si no está roto 97 Árbol versus bosque 98 Composición versus construcción 99 7. Enlace estático y dinámico 105 Asignación Estática y Dinámica de Tipos 105 El problema del contenedor 107Enlace estático y dinámico de métodos 108 Méritos del enlace estático versus el enlace dinámico 109 Enlace en Object Pascal 111 Enlace en Smalltalk 112 Enlace en Objective-C 113 Enlace en C++ 113 8. Estudio de caso: Aritmética de tipo mixto 115 Generalidad coercitiva 115 Despacho doble 118 Una comparación 119 9. Reemplazo y refinamiento 123 Añadir, reemplazar y refinar 123 Reemplazo 124 Reemplazo en C++ 126 Reemplazo en Object Pascal 129 Reemplazo en Objective-C y Smalltalk 129 Refinamiento 130 Refinamiento en C++ 131 Refinamiento en Object Pascal 133 Refinamiento en Objective-C y Smalltalk 134 10. Estudio de caso: El solitario 137 La clase Carta 137 Herencia y anulación 138 Interfaces para usuarios orientadas a objetos 146 11. Herencia y tipos 153 Distribución de memoria 153 Mínima asignación estática de espacio 155 Máxima asignación estática de espacio 157 Asignación dinámica de memoria 158 Asignación 159 Asignación en C++ 160 Asignación en Object Pascal 162 Asignación en Smalltalk 162 Asignación en Objective-C 163 Igualdad 163 Igualdad en Objective-C y Object Pascal 165 Igualdad en Smalltalk 166 Igualdad en C++ 166 Conversión de tipos 167 12. Herencia múltiple 171 Números complejos incomparables 172 Menús anidados 173 Ambig edad en los nombres 175 Herencia de antecesores comunes 176 Herencia Múltiple en C++ 177 13. Polimorfismo 187 Objetos polimorfos 190 Sobrecarga 191 Anulación 194 Métodos diferidos 196 Métodos diferidos en C++ 197 Métodos diferidos en Object Pascal 198 Métodos diferidos en Objective-C 198 Métodos diferidos en Smalltalk 199 Polimorfismo 199 Eficiencia y polimorfismo 201 14. Estudio de caso: Colecciones en Smalltalk 203 Enfoques de implantación 206 Operaciones 206 Ciclos e iteración 207 Inyección 209 Cálculo del número de elementos 209 Impresión 210 Selección 210 Prueba de elementos211 Recuperación de elementos 211 Inserción de elementos 212 El problema tipo yoyo 213 15. Visibilidad y dependencia 217 Acoplamiento y cohesión 218 Variedades de acoplamiento 218 Variedades de cohesión 219 Acoplamiento y cohesión en los sistemas orientados a objetos 221 La ley de Demeter 221 Valores activos 223 Clientes de subclases y clientes usuarios 224 Construcción y herencia 226 Control de acceso y visibilidad 227 Visibilidad en Smalltalk 227 Visibilidad en Object Pascal 228 Visibilidad en C++ 228 Visibilidad en Objective-C 233 16. Estudio de caso: Un juego de billar 235 Interfaz de una ventana simple 236 Un universo grafico 238 Componentes gráficos del juego de billar 240 El programa principal 241 17. Estudio de caso: Clases contenedoras en C++ 245 Elementos básicos 245 Listas ligadas 249 Conjuntos 249 Colecciones ordenadas 254 Tablas 256 18. Una segunda mirada a las clases 261 Naturaleza de las clases 261 Las clases como tipos 261 Las clases como objetos 265 Datos de clase 271 Variables de clase en Smalltalk 272 Variables de clase en C++ 272 Variables de clase en Objective-C 274 ¿Son necesarias las clases? 274 Clases parametrizadas 278 19. Implantación 283 Compiladores 284 Tablas de métodos virtuales 285 Codificación de nombres 287 Tablas de despacho 288 Intérpretes 291 Lecturas avanzadas 293 20. Información adicional 295 C++ 295 Objective-C 296 Smalltalk 297 Object Pascal 298 Turbo Pascal 298 Otros lenguajes 298 Selección de un lenguaje orientado a objetos 299 Temas adicionales 300 Entorno de programación 300 Despacho genérico 301 Persistencia 302 Bases de datos de objetos 302 Referencias sobre investigaciones 302