Introducción a la POO y C++ Pablo San Segundo (C-206)
Problemas de la industria del SW La calidad y productividad del SW todavía no ha alcanzado la de otras tecnologías SW caro SW lento (producción) Los proyectos empiezan desde cero Reutilización POO Recientemente se ha empezado a utilizar realmente software prefabricado Componentes COM, ActiveX Patrones de diseño Marcos de trabajo(frameworks), STL, MFC, etc.
Paradigma OO Filosofía OO Mundo de las ideas de Platón Universo computacional como poblaciones de objetos Objeto tiene estado (atributos), comportamiento e identidad (Ej. perro) La estructura y comportamiento de objetos similares están definidos en una clase común
Programación estructurada Lenguajes antiguos utilizan GOTO Difícil mantenimiento y legibilidad Dijkstra (finales de los años 70) Cualquier programa se puede implementar mediante: Flujo secuencial de instrucciones Sentencias IF-ELSE Bucle iterativo WHILE GOTO innecesario paradigma de la programación estructurada Ejemplos: C, Pascal, ADA Se mantiene el GOTO pero con un uso totalmente marginal Algoritmos (FUNCIONES) + Datos = Programa
Programación OO Deja de pensar en funciones Piensa en OBJETOS Lenguajes Orientados a Objetos C++ Java Python etc. No basta con aprender el lenguaje de programación: es necesario un cambio en la forma de pensar Saber poner ladrillos no te hace un arquitecto! Objetivo del curso Aprender C++ (sintaxis) Interiorizar el concepto de objeto y clase como entidad lógica Ejemplos Prácticas Aplicación: Trabajo de la asignatura Algoritmos (Datos Objetos) = Programa
Ejemplo: Centroide de una nube de puntos CC Datos struct punto array de puntos Algoritmo double med(v_puntos*) POO Datos clase punto clase VectorPuntos Algoritmo Preguntar al objeto de la clase VectorPuntos por su punto medio
Elementos Programación OO Elementos Clases Objetos Métodos Mensajes Características Abstracción Extracción de comportamientos comunes Encapsulamiento Caja negra Herencia Reutilización: Permite crear clases derivadas (especialización) a partir de las clases base (generalización) Polimorfismo Misma interfaz para objetos de distinto tipo (no confundir con sobrecarga).
Lenguaje C++ Autor: Bjarne Stroustrup Evolución OO de C Estandarización multiplataforma C++98, C++03: incluye la STL (Standard Template Library) C++11, C++14 TIOBE index Medida de la evolución del uso de los diferentes lenguajes