1 / 29

Programación Orientada a Objetos en C++

Programación Orientada a Objetos en C++. Febrero 2009. Índice. Teoría de la Orientación a Objetos Desarrollo de un proyecto OO Ejercicios. Orientación a Objetos. Introducción. Programación Orientada a Objetos (POO): Modo de entender y clasificar el mundo Simple e intuitivo Escalable

penny
Download Presentation

Programación Orientada a Objetos en C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programación Orientada a Objetos en C++ Febrero 2009

  2. Índice • Teoría de la Orientación a Objetos • Desarrollo de un proyecto OO • Ejercicios

  3. Orientación a Objetos

  4. Introducción • Programación Orientada a Objetos (POO): • Modo de entender y clasificar el mundo • Simple e intuitivo • Escalable • Un concepto se define en términos de: • ¿qué tiene?  campos • ¿qué hace?  métodos

  5. Clases y objetos • Clase: concepto abstracto • coche • Objeto: instancia del concepto • seat ibiza matrícula 43456-FWZ • Una clase puede tener múltiples instancias (objetos) • Clase: public class Car{ …} • Objeto: Car miCoche(…);

  6. Campos • Cosas que tiene un objeto • Coche: motor, puertas, depósito, velocidad… • La configuración en un momento dado de los campos se llama estado • Pueden tener cualquier tipo, incluso ser otros objetos • El objeto debe controlar el cambio de valor de todos los campos críticos

  7. Métodos • Cosas que puede hacer un objeto • Coche: acelerar, frenar, abrir/cerrar puertas… • Los métodos suelen modificar los campos • acelerar  modifica la velocidad • abrir puerta  modifica el estado de las puertas

  8. Identificadores de acceso • Campos y métodos pueden definirse con tres tipos de acceso • public: cualquier objeto puede acceder • private : sólo métodos del objeto pueden acceder • protected: sólo el objeto y objectos de sus clases hijas pueden acceder

  9. class class_name { id_acceso1: miembro1; id_acceso2: miembro2; ... }; class CRectangle { int w, h; public: CRectangle(int,int); int area(void); }; Ejemplos Crectangle.h Crectangle.cpp int CRectangle::area () {return (w*h);} void CRectangle::CRectangle (int a, int b) { w = a; h = b;} main.cpp #include "Car.h" CRectangle rect(3,4); cout << "area: " << rect.area();

  10. Herencia • A veces, campos y métodos son compartidos por varias clases: • Acelerar es un método compartido por coches y trenes • Para simplificar el código, se usa la herencia • Creamos una clase Vehiculo que tenga los métodos comunes a coche y tren • Creamos clases hijas que heredan de ella

  11. Herencia Vehículo depósito velocidad acelerar frenar Tren Avión Coche vagones puertas puertas despegar aterrizar

  12. Métodos abstractos • Si la clase padre define un método, la clase hija puede usar ese método sin necesidad de redefinirlo • Si la clase padre no define un método (método abstracto), la clase hija tiene que definirlo obligatoriamente.

  13. Avión Vehículo aéreo aterrizaje horizontal despegue horizontal queroseno aterrizar despegar Helicóptero Vehículo aterrizaje vertical despegue vertical depósito velocidad Vehículo terrestre acelerar frenar Tren gasolina Vagón 1..n vagones puertas asientos … Vagón conductor Vagón pasajeros Coche puertas=1 asientos=2 puertas=2 asientos=20 …

  14. Construir un proyecto

  15. Construir un proyecto C++ • Entorno de desarrollo • Eclipse IDE (Integrated Development Environment) • plugin CDT (C/C++ Development Tooling) • Compilador de C/C++ • Windows: MinGW o Cygwin • Linux: GCC (GNU C/C++ Compiler) • Ya instalado

  16. Proyecto C++ en Eclipse • File >New > Project > C++ Project • Si no aparece en el menú, buscar en Other… • Project Name: el que queramos, normalmente sin espacios • HelloWorld, cars, pruebaC … • Toolchain: MinGW GCC o GCC • depende de la plataforma y requisitos

  17. Añadir clases • Clic derecho en el nombre del proyecto en el menú de la izquierda (New > Class) o botón “New C++ class” • Los nombres de clase siempre comienzan por mayúscula y sin espacios

  18. Construir el proyecto • Project > Build Project • Detecta errores de compilación • Errores sintácticos generalmente • Genera los ficheros objeto (.o) si no hay errores

  19. Depurando el proyecto • Permite controlar la ejecución del programa: • Estableciendo puntos de control (checkpoints) • Ejecutando el programa paso a paso • Examinando el valor de las variables • Run > Debug (F11) • Añadir checkpoints: doble clic en el margen gris izquierdo

  20. Ejecutar el proyecto • Clic derecho sobre el proyecto • Run as > Local C/C++ Application • Botón Run • Menú Run > Run (Ctrl+F11) • La entrada/salida aparece en la pestaña Console en la parte de abajo del IDE

  21. Ejecutar el proyecto • Una vez compilado, el proyecto también se puede ejecutar externamente • Carpeta Binaries dentro del proyecto • Extensión .exe • Doble clic en el fichero ejecutable • Tutorial completo: http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.cdt.doc.user/getting_started/cdt_w_newproj.htm

  22. Ejercicios

  23. HelloWorld • Crear un proyecto en Eclipse+CDT • File > New > C++ Project • New > Class • Project > Build Project • Run > Run (Ctrl+F11)

  24. HelloWorld #include <iostream> using namespace std; int main () { // Say Hello five times for (int index = 0; index < 5; ++index) cout << "HelloWorld!" << endl; exit(0); }

  25. Ejemplo: mi Coche • Un coche desde la filosofía OO • ¿Qué tiene? • Físico: puertas, motor, depósito… • Abstracto: velocidad, aceleración, consumo… • Estado: • parado con una puerta abierta • a 120 Km/h con el depósito medio lleno • ¿Qué hace? • Acelerar, abrir/cerrar puertas, repostar…

  26. Ejercicio 1 • Crear una clase coche que tenga los siguientes campos: • Matrícula, marca y modelo (públicos) • Velocidad, velocidad máxima y aceleración • Número de puertas • Generar los constructores y destructores • Crear un constructor que inicie los parámetros • Instanciar un objeto de la clase y mostrar por pantalla sus atributos públicos

  27. Ejercicio 2 • Controlar el estado de las puertas • Crear métodos para abrir y cerrar puertas • Almacenar el estado de las puertas (abiertas/cerradas) • Pistas: • usar array de bool (true=abierto) • usar constantes enteras para identificar las puertas (MALETERO=0, DETRAS_IZQ=1, etc)

  28. Ejercicio 3 • Implementar el movimiento del coche: • Acelerar • Entrada: tiempo durante el que acelera • Efecto: v=min(a·t, vmax) • Frenar: análogo a la aceleración • Considerar que una vez en movimiento se mantiene a velocidad constante • Comprobar que no acelere si hay puertas abiertas

  29. Ejercicio 4 • Implementar el consumo del coche: • Añadir campos: • deposito y depositoMax • consumo (litros por kilómetro) • cuentaKilometros • Añadir método repostar(float litros) • Añadir método crucero(int segundos) que modifique: • depósito, cuentaKilometros • d=vt • Comprobar que funciona correctamente • repostar 20 litros • acelerar 10s • crucero 1000s • frenar 10s

More Related