1. 2. ABSTRACCIÓN
1.1. SEPARACIÓN DEL "QUÉ" Y EL "CÓMO" EN LA PROGRAMACIÓN ORIENTADA A OBJETOS
1.1.1. OBJETO COMO ESTRUCTURA BÁSICA
1.1.1.1. EN LA PROGRAMACIÓN ORIENTADA A OBJETOS, EL OBJETO SIRVE PARA SEPARAR EL "QUÉ" (DESCRIPCIÓN DE LA APLICACIÓN) DEL "CÓMO" (DETALLES DE IMPLEMENTACIÓN)
2. NIVELES DE REPRESENTACIÓN EN LA PROGRAMACIÓN ORIENTADA A OBJETOS
2.1. LA ABSTRACCIÓN EN LA PROGRAMACIÓN ORIENTADA A OBJETOS PERMITE ELEVAR EL NIVEL DE REPRESENTACIÓN DE UN SISTEMA, REDUCIENDO LA COMPLEJIDAD AL OMITIR DETALLES INNECESARIOS
3. MODULARIDAD EN LA PROGRAMACIÓN ORIENTADA A OBJETOS
3.1. LA MODULARIDAD EN LA PROGRAMACIÓN ORIENTADA A OBJETOS SE BASA EN COMPONENTES DE MÁS ALTO NIVEL, COMO LOS OBJETOS, LO QUE REDUCE LA COMPLEJIDAD Y FACILITA LA OPERACIÓN Y MANTENIMIENTO DEL SISTEMA
4. MODIFICACIÓN DE UN SISTEMA DURANTE SU VIDA ÚTIL
4.1. LA EXTENSIBILIDAD EN LA PROGRAMACIÓN ORIENTADA A OBJETOS PERMITE MODIFICAR UN SISTEMA DE MANERA MÁS SENCILLA DURANTE SU VIDA ÚTIL, YA QUE LOS CAMBIOS SE PUEDEN REALIZAR EN MÓDULOS ESPECÍFICOS EN LUGAR DE EN TODO EL SISTEMA
5. CAMBIOS EN DOS NIVELES EN LA PROGRAMACIÓN ORIENTADA A OBJETOS
6. MODIFICACIÓN EXTERNA
6.1. EN LA PROGRAMACIÓN ORIENTADA A OBJETOS, LOS CAMBIOS SE DAN A DOS NIVELES: MODIFICACIÓN EXTERNA Y MODIFICACIÓN INTERNA EN LOS OBJETOS
7. MODIFICACIÓN INTERNA EN LOS OBJETOS
7.1. LOS CAMBIOS EN LA PROGRAMACIÓN ORIENTADA A OBJETOS SE PUEDEN REALIZAR EN LOS OBJETOS INDIVIDUALES, LO QUE FACILITA LA EXTENSIBILIDAD DEL SISTEMA
8. 1. CONCEPTOS BÁSICOS
8.1. PROGRAMACIÓN ORIENTADA A OBJETOS
9. 3. EXTENSIBILIDAD
10. PROGRAMACIÓN TRADICIONAL
10.1. LA PROGRAMACIÓN TRADICIONAL SE BASA EN LA ARQUITECTURA VON NEUMANN Y UTILIZA FUNCIONES Y DATOS GLOBALES
11. VENTAJAS
11.1. LA PROGRAMACIÓN ORIENTADA A OBJETOS PERMITE UNA ORGANIZACIÓN MÁS CERCANA A LA MANERA DE PENSAR DE LAS PERSONAS Y ELIMINA LOS DATOS GLOBALES
12. ESTRUCTURA
12.1. EN LA PROGRAMACIÓN ORIENTADA A OBJETOS, LOS DATOS Y FUNCIONES SE GUARDAN DENTRO DE OBJETOS, LO QUE PERMITE CAMBIOS EN LA ESTRUCTURA DE LOS DATOS SIN AFECTAR AL RESTO DE LA APLICACIÓN
13. PROBLEMA DEL AÑO 2000 (Y2K)
13.1. EL PROBLEMA DEL AÑO 2000 PODRÍA HABERSE EVITADO SI LAS APLICACIONES AFECTADAS SE HUBIERAN HECHO MEDIANTE LA PROGRAMACIÓN ORIENTADA A OBJETOS
14. 4. MEJORA DE LA CALIDAD DEL SOFTWARE
15. ENCAPSULACIÓN
15.1. LA ENCAPSULACIÓN PERMITE OCULTAR LOS DETALLES INTERNOS DEL OBJETO Y DISTINGUIR ENTRE SU INTERFACE Y SU IMPLEMENTACIÓN
16. CLASIFICACIÓN
16.1. LA CLASIFICACIÓN PERMITE AGRUPAR OBJETOS SIMILARES Y SIMPLIFICAR LA APLICACIÓN
17. GENERALIZACIÓN
17.1. LA GENERALIZACIÓN PERMITE HEREDAR CARACTERÍSTICAS COMUNES ENTRE OBJETOS Y EXTENDER SU UTILIDAD
18. 5. MODIFICACIÓN DE OBJETOS
19. MODIFICACIÓN INTERNA
19.1. LOS CAMBIOS INTERNOS DE LOS OBJETOS AFECTAN PRINCIPALMENTE AL PROPIO OBJETO
20. MODIFICACIÓN EXTERNA
20.1. LOS CAMBIOS EXTERNOS DE LOS OBJETOS REPERCUTEN EN EL RESTO DEL SISTEMA
21. 6. REUTILIZACIÓN
22. MECANISMOS IMPORTANTES
22.1. LA REUTILIZACIÓN REDUCE EL TIEMPO Y COSTO DEL SISTEMA AL APROVECHAR COMPONENTES YA DESARROLLADOS
23. COMPONENTES GENÉRICOS
23.1. LA CONSTRUCCIÓN DE COMPONENTES GENÉRICOS ES UN ESFUERZO MAYOR, PERO PERMITE UNA MAYOR ESTANDARIZACIÓN Y SIMPLIFICACIÓN EN LAS APLICACIONES
24. PATRONES DE DISEÑO
24.1. LOS PATRONES DE DISEÑO BUSCAN SOLUCIONAR ASPECTOS PARTICULARES DE LAS ARQUITECTURAS DE SOFTWARE PARA LOGRAR NIVELES INTERMEDIOS DE REUTILIZACIÓN
25. 7. CARACTERÍSTICAS ESENCIALES DE LOS LENGUAJES ORIENTADOS A OBJETOS
26. ENCAPSULACIÓN
26.1. LA ENCAPSULACIÓN ES UN MECANISMO BÁSICO DE LA PROGRAMACIÓN ORIENTADA A OBJETOS PARA OCULTAR LOS DETALLES INTERNOS DEL OBJETO
27. CLASIFICACIÓN
27.1. LA CLASIFICACIÓN PERMITE DISTINGUIR ENTRE LA INTERFACE Y LA IMPLEMENTACIÓN DE UN OBJETO
28. GENERALIZACIÓN
28.1. LA GENERALIZACIÓN PERMITE HEREDAR CARACTERÍSTICAS COMUNES ENTRE OBJETOS Y EXTENDER SU UTILIDAD
29. POLIMORFISMO
29.1. EL POLIMORFISMO PERMITE QUE UN OBJETO PUEDA TOMAR DIFERENTES FORMAS Y COMPORTARSE DE MANERA DIFERENTE SEGÚN EL CONTEXTO
30. 8. Actividades del Proceso de Software
31. 1 Requisitos
31.1. Especificación de necesidades.
31.2. Base para negociaciones.
32. 2 Análisis
32.1. Comprensión de requisitos.
32.2. Estructuración de la arquitectura.
33. 3 Diseño
33.1. Refinamiento de la arquitectura.
33.2. Adaptación al entorno.
34. 4 Implementación
34.1. Codificación del sistema.
35. 5 Integración
35.1. Combinación de componentes.
36. 6 Pruebas
36.1. Validación y verificación funcional.
37. 7 Documentación
37.1. Descripción de aspectos destacados.
38. 8 Mantenimiento
38.1. Corrección de errores y actualizaciones.
39. 10. Entornos de Programación y Lenguajes Orientados a Objetos
39.1. Java
39.1.1. Interfaz
39.1.1.1. Eclipse: IDE popular, auto-completado, depurador, gestión de proyectos.
39.2. C#
39.2.1. Interfaz
39.2.1.1. Visual Studio: IDE potente, Intellisense, integración con Azure, pruebas unitarias.
39.3. Python
39.3.1. Interfaz
39.3.1.1. PyCharm: IDE especializado, análisis de código, refactorización, entornos virtuales.
39.4. Ruby
39.4.1. Interfaz
39.4.1.1. RubyMine: IDE para Ruby y Rails, auto-completado, integración de versiones.
39.5. JavaScript
39.5.1. Interfaz
39.5.1.1. WebStorm: IDE para JavaScript, soporte para frameworks, herramientas de pruebas.
40. 9. Aspectos Claves
40.1. 1 Estrategia de Desarrollo
40.1.1. Elección de tecnología y lenguaje (Ej: Java).
40.2. 2 Métodos y Metodologías
40.2.1. Enfoques orientados a objetos (UML, OOAD).
40.3. 3 Herramientas de Ingeniería de Software
40.3.1. Herramientas CASE para diversas actividades.