Pensar en C++ (Volumen 2)

Traducción (INACABADA) del libro Thinking in C++, Volumen 2

Bruce Eckel

Mindview, Inc.

Tabla de contenidos

1. Introducción
1.1. Objetivos
1.2. Capítulos
1.3. Ejercicios
1.4. Código fuente
1.5. Compiladores
1.6. Estándares del lenguaje
1.7. Seminarios, CD-ROMs y consultoría
1.8. Errores
1.9. Sobre la portada
1.10. Agradecimientos
I. Construcción de Sistemas estables
2. Tratamiento de excepciones
2.1. Tratamiento tradicional de errores
2.2. Lanzar una excepción
2.3. Capturar una excepción
2.4.
2.5. Limpieza
2.6. Excepciones estándar
2.7. Especificaciones de excepciones
2.8. Seguridad de la excepción
2.9. Programar con excepciones
2.10. Sobrecarga
2.11. Resumen
2.12. Ejercicios
3. Programación defensiva
3.1. Aserciones
3.2. Un framework de pruebas unitarias sencillo
3.3. Técnicas de depuración
3.4. Resumen
3.5. Ejercicios
II. La librería Estándar de C++
4. Las cadenas a fondo
4.1. ¿Qué es un string?
4.2. Operaciones con cadenas
4.3. Buscar en cadenas
4.4. Una aplicación con cadenas
4.5. Resumen
4.6. Ejercicios
5. Iostreams
5.1. ¿Por que iostream?
5.2. Iostreams al rescate
5.3. Manejo errores de stream
5.4. Iostreams de fichero
5.5. Almacenamiento de iostream
5.6. Buscar en iostreams
5.7. Iostreams de string
5.8. Formateo de stream de salida
5.9. Manipuladores
5.10.
5.11.
5.12.
5.13.
6. Las plantillas en profundidad
6.1.
6.2.
6.3.
6.4.
6.5.
6.6.
6.7.
6.8.
7. Algoritmos genéricos
7.1. Un primer vistazo
7.2. Objetos-función
7.3. Un catálogo de algoritmos STL
7.4. Creando sus propios algoritmos tipo STL
7.5. Resumen
7.6. Ejercicios
III. Temas especiales
8. Herencia múltiple
8.1. Perspectiva
8.2. Herencia de interfaces
8.3. Herencia de implementación
8.4. Subobjetos duplicados
8.5. Clases base virtuales
8.6. Cuestión sobre búsqueda de nombres
8.7. Evitar la MI
8.8. Extender una interface
8.9. Resumen
8.10. Ejercicios
9. Patrones de Diseño
9.1. El Concepto de Patrón
9.2. Clasificación de los patrones
9.3. Simplificación de modismos
9.4. Singleton
9.5. Comando: elegir la operación
9.6. Desacoplamiento de objetos
9.7. Adaptador
9.8. Template Method
9.9. Estrategia: elegir el algoritno en tiempo de ejecución
9.10. Cadena de Responsabilidad: intentar una secuencia de estrategias
9.11. Factorías: encapsular la creación de objetos
9.12. Builder: creación de objetos complejos
9.13. Observador
9.14. Despachado múltiple
9.15. Resumen
9.16. Ejercicios
10. Concurrencia
10.1. Motivación
10.2. Concurrencia en C++
10.3. Utilización de los hilos
10.4. Comparición de recursos limitados
10.5. Finalización de tareas
10.6. Cooperación entre hilos
10.7. Bloqueo letal
10.8. Resumen
10.9. Ejercicios

Lista de figuras

8.1.
8.2.

Índice de listados

2.1. C01/Nonlocal.cpp
2.2. C01/MyError.cpp
2.3. C01/Nonlocal2.cpp
2.4. C01/Autoexcp.cpp
2.5. C01/Basexcpt.cpp
2.6. C01/Terminator.cpp
2.7. C01/Cleanup.cpp
2.8. C01/Rawp.cpp
2.9. C01/Wrapped.cpp
2.10. C01/Auto_ptr.cpp
2.11. C01/InitExcept.cpp
2.12. C01/FunctionTryBlock.cpp
2.13. C01/StdExcept.cpp
2.14. C01/Unexpected.cpp
2.15. C01/BadException.cpp
2.16. C01/Covariance.cpp
2.17. C01/SafeAssign.cpp
2.18. C01/HasDestructor.cpp
3.1. C02/HiLo.cpp
3.2. C02/Date1.h
3.3. C02/SimpleDateTest.cpp
3.4. C02/SimpleDateTest2.cpp
3.5. C02/DateTest.h
3.6. C02/DateTest.cpp
3.7. C03/StringSuite.cpp
3.8.
3.9.
3.10.
3.11.
3.12. C03/Trace.h
3.13. C03/Tracetst.cpp
3.14. C02/MemCheck.h
3.15. C02/MemCheck.cpp
3.16. C02/MemTest.cpp
3.17. C02/Rational.h
4.1. C03/StringStorage.h
4.2. C03/StrSize.cpp
4.3. C03/StringReplace.cpp
4.4. C03/Replace.cpp
4.5. C03/ReplaceAndGrow.cpp
4.6. C03/ReplaceAll.h
4.7. C03/ReplaceAll.cpp
4.8. C03/ReplaceAllTest.cpp
4.9. C03/StringCharReplace.cpp
4.10. C03/AddStrings.cpp
4.11. C03/Sieve.h
4.12. C03/Sieve.cpp
4.13. C03/Find.h
4.14. C03/Find.cpp
4.15. C03/Rparse.h
4.16. C03/Rparse.cpp
4.17. C03/Trim.h
4.18. C03/TrimTest.h
4.19. C03/TrimTest.cpp
4.20. C03/TrimTestMain.cpp
4.21. C03/HTMLStripper.cpp
4.22. C03/CompStr.h
4.23. C03/CompStr.cpp
4.24. C03/Equivalence.cpp
4.25. C03/Compare.cpp
4.26. C03/Compare2.cpp
4.27. C03/StringIndexing.cpp
4.28. C03/BadStringIndexing.cpp
4.29. C03/ichar_traits.h
4.30. C03/ICompare.cpp
4.31. C03/iwchar_traits.h
4.32. C03/IWCompare.cpp
4.33. C03/ExtractCode.cpp
5.1. C04/FileClass.h
5.2. C04/FileClass.cpp
5.3. C04/FileClassTest.cpp
5.4. C04/Fullwrap.h
5.5. C04/Strfile.cpp
5.6. C04/Stype.cpp
5.7. C04/Sbufget.cpp
5.8. C04/Seeking.cpp
5.9. C04/Iofile.cpp
5.10. C04/Istring.cpp
5.11. C04/DateIOTest.cpp
5.12. C04/Ostring.cpp
5.13. C04/HTMLStripper2.cpp
5.14. C04/StringSeeking.cpp
5.15. C04/Unitbuf.cpp
5.16. C04/Format.cpp
5.17. C04/Manips.cpp
5.18. C04/InputWidth.cpp
5.19. C04/nl.cpp
5.20. C04/Effector.cpp
5.21. C04/Cppcheck.cpp
5.22. C04/Showerr.cpp
5.23. C04/DataLogger.h
5.24. C04/DataLogger.cpp
5.25. C04/Datagen.cpp
5.26. C04/Datascan.cpp
5.27. C04/Locale.cpp
5.28. C04/Facets.cpp
5.29. C04/Exercise14.cpp
5.30. C04/Exercise15.txt
6.1. C05/Urand.h
6.2. C05/UrandTest.cpp
6.3. C05/FuncDef.cpp
6.4. C05/TempTemp.cpp
6.5. C05/TempTemp2.cpp
6.6. C05/TempTemp3.cpp
6.7. C05/TempTemp4.cpp
6.8. C05/TypenamedID.cpp
6.9. C05/PrintSeq.cpp
6.10. C05/UsingTypename.cpp
6.11. C05/DotTemplate.cpp
6.12. C05/MemberClass.cpp
6.13. C05/StringConv.h
6.14. C05/StringConvTest.cpp
6.15. C05/ImplicitCast.cpp
6.16. C05/ArraySize.cpp
6.17. C05/MinTest.cpp
6.18. C05/TemplateFunctionAddress.cpp
6.19. C05/FailedTransform.cpp
6.20. C05/StrTolower.cpp
6.21. C05/Tolower.cpp
6.22. C05/ToLower2.cpp
6.23. C05/ApplySequence.h
6.24. C05/Gromit.h
6.25. C05/ApplyGromit.cpp
6.26. C05/PartialOrder.cpp
6.27. C05/MinTest2.cpp
6.28. C05/PartialOrder2.cpp
6.29. C05/Sortable.h
6.30. C05/Sortable.cpp
6.31. C05/DelayedInstantiation.cpp
6.32. C05/Nobloat.h
6.33. C05/NobloatTest.cpp
6.34. C05/Lookup.cpp
6.35. C05/Lookup2.cpp
6.36. C05/FriendScope.cpp
6.37. C05/FriendScope2.cpp
6.38. C05/FriendScope3.cpp
6.39. C05/Box1.cpp
6.40. C05/Box2.cpp
6.41. C05/BearCorner.h
6.42. C05/BearCorner2.cpp
6.43. C05/CountedClass.cpp
6.44. C05/CountedClass2.cpp
6.45. C05/CountedClass3.cpp
6.46. C05/Factorial.cpp
6.47. C05/Fibonacci.cpp
6.48. C05/Power.cpp
6.49. C05/Accumulate.cpp
6.50. C05/Unroll.cpp
6.51. C05/Max.cpp
6.52. C05/Conditionals.cpp
6.53. C05/StaticAssert1.cpp
6.54. C05/StaticAssert2.cpp
6.55. C05/MyVector.cpp
6.56. C05/MyVector2.cpp
6.57. C05/OurMin.h
6.58. C05/MinInstances.cpp
6.59. C05/OurMin.cpp
6.60. C05/OurMin2.h
6.61. C05/OurMin2.cpp
6.62. C05/Exercise4.cpp
6.63. C05/Exercise7.cpp
6.64. C05/Exercise8.cpp
7.1. C06/CopyInts.cpp
7.2. C06/CopyStrings.cpp
7.3. C06/CopyVector.cpp
7.4. C06/InsertVector.cpp
7.5. C06/CopyInts2.cpp
7.6. C06/CopyStrings2.cpp
7.7. C06/ReplaceStrings.cpp
7.8. C06/CopyInts3.cpp
7.9. C06/CopyIntsToFile.cpp
7.10. C06/CopyIntsFromFile.cpp
7.11. C06/GreaterThanN.cpp
7.12. C06/CopyInts4.cpp
7.13. C06/CountNotEqual.cpp
7.14. C06/Generators.h
7.15. C06/Generators.cpp
7.16. C06/FunctionObjects.cpp
7.17. C06/FBinder.cpp
7.18. C06/BinderValue.cpp
7.19. C06/PtrFun1.cpp
7.20. C06/PtrFun2.cpp
7.21. C06/MemFun1.cpp
7.22. C06/MemFun2.cpp
7.23. C06/FindBlanks.cpp
7.24. C06/NumStringGen.h
7.25. C06/MemFun3.cpp
7.26. C06/ComposeTry.cpp
7.27. C06/ComposeFinal.cpp
7.28. C06/PrintSequence.h
7.29. C06/NString.h
7.30. C06/FillGenerateTest.cpp
7.31. C06/Counting.cpp
7.32. C06/Manipulations.cpp
7.33. C06/SearchReplace.cpp
7.34. C06/Comparison.cpp
7.35. C06/Removing.cpp
7.36. C06/SortedSearchTest.cpp
7.37. C06/MergeTest.cpp
7.38. C06/SetOperations.cpp
7.39. C06/Counted.h
7.40. C06/ForEach.cpp
7.41. C06/Transform.cpp
7.42. C06/Inventory.h
7.43. C06/CalcInventory.cpp
7.44. C06/TransformNames.cpp
7.45. C06/SpecialList.cpp
7.46. C06/NumericTest.cpp
7.47. C06/copy_if.h
8.1. C09/Interfaces.cpp
8.2. C09/Interfaces2.cpp
8.3. C09/Database.h
8.4. C09/UseDatabase.cpp
8.5. C09/Countable.h
8.6. C09/DBConnection.h
8.7. C09/UseDatabase2.cpp
8.8. C09/DBConnection2.h
8.9. C09/UseDatabase3.cpp
8.10. C09/Offset.cpp
8.11. C09/Duplicate.cpp
8.12. C09/VirtualBase.cpp
8.13. C09/VirtualBase2.cpp
8.14. C09/VirtualBase3.cpp
8.15. C09/VirtInit.cpp
8.16. C09/AmbiguousName.cpp
8.17. C09/BreakTie.cpp
8.18. C09/Dominance.cpp
8.19. C09/Dominance2.cpp
8.20. C09/Vendor.h
8.21. C09/Vendor.cpp
8.22. C09/Paste.cpp
9.1. C10/MessengerDemo.cpp
9.2. C10/CollectingParameterDemo.cpp
9.3. C10/SingletonPattern.cpp
9.4. C10/LogFile.h
9.5. C10/LogFile.cpp
9.6. C10/UseLog1.h
9.7. C10/UseLog1.cpp
9.8. C10/UseLog2.cpp
9.9. C10/SingletonPattern2.cpp
9.10. C10/FunctionStaticSingleton.cpp
9.11. C10/CuriousSingleton.cpp
9.12. C10/CommandPattern.cpp
9.13. C10/MulticastCommand.cpp
9.14. C10/ProxyDemo.cpp
9.15. C10/KissingPrincess.cpp
9.16. C10/KissingPrincess2.cpp
9.17. C10/FibonacciGenerator.h
9.18. C10/FibonacciGeneratorTest.cpp
9.19. C10/FibonacciAdapter.cpp
9.20. C10/TemplateMethod.cpp
9.21. C10/Strategy.cpp
9.22. C10/ChainOfReponsibility.cpp
9.23. C10/ShapeFactory1.cpp
9.24. C10/ShapeFactory2.cpp
9.25. C10/AbstractFactory.cpp
9.26. C10/VirtualConstructor.cpp
9.27. C10/Bicycle.h
9.28. C10/Bicycle.cpp
9.29. C10/BuildBicycles.cpp
9.30. C10/Observer.h
9.31. C10/Observable.h
9.32. C10/InnerClassIdiom.cpp
9.33. C10/ObservedFlower.cpp
9.34. C10/PaperScissorsRock.cpp
9.35. C10/BeeAndFlowers.cpp
10.1. C11/LiftOff.h
10.2. C11/NoThread.cpp
10.3. C11/BasicThreads.cpp
10.4. C11/MoreBasicThreads.cpp
10.5. C11/UnresponsiveUI.cpp
10.6. C11/ResponsiveUI.cpp
10.7. C11/ThreadedExecutor.cpp
10.8. C11/PoolExecutor.cpp
10.9. C11/ConcurrentExecutor.cpp
10.10. C11/SynchronousExecutor.cpp
10.11. C11/YieldingTask.cpp
10.12. C11/SleepingTask.cpp
10.13. C11/SimplePriorities.cpp
10.14. C11/Incrementer.cpp
10.15. C11/ReferenceCounting.cpp
10.16. C11/EvenChecker.h
10.17. C11/EvenGenerator.cpp
10.18. C11/MutexEvenGenerator.cpp
10.19. C11/GuardedEvenGenerator.cpp
10.20. C11/TemporaryUnlocking.cpp
10.21. C11/TimedLocking.cpp
10.22. C11/SynchronizedClass.cpp
10.23. C11/ThreadLocalVariables.cpp
10.24. C11/Display.h
10.25. C11/OrnamentalGarden.cpp
10.26. C11/Interrupting.cpp
10.27. C11/Interrupting2.cpp
10.28. C11/Interrupting3.cpp
10.29. C11/WaxOMatic.cpp
10.30. C11/ToastOMatic.cpp
10.31. C11/TQueue.h
10.32. C11/TestTQueue.cpp
10.33. C11/ToastOMaticMarkII.cpp
10.34. C11/CarBuilder.cpp
10.35. C11/DiningPhilosophers.h
10.36. C11/DeadlockingDiningPhilosophers.cpp
10.37. C11/FixedDiningPhilosophers.cpp