La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Programación Orientada a Objetos en C++ Febrero 2009."— Transcripción de la presentación:

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

2 Índice 1.Teoría de la Orientación a Objetos 2.Desarrollo de un proyecto OO 3.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 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 Ejemplos class class_name { id_acceso1: miembro1; id_acceso2: miembro2;... }; class CRectangle { int w, h; public: CRectangle(int,int); int area(void); }; int CRectangle::area () {return (w*h);} void CRectangle::CRectangle (int a, int b) {w = a; h = b;} #include "Car.h" CRectangle rect(3,4); cout << "area: " << rect.area(); Crectangle.h Crectangle.cpp main.cpp

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 acelerar frenar depósito velocidad Coche puertas Tren vagones Avión despegar aterrizar puertas

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

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: e.cdt.doc.user/getting_started/cdt_w_newproj.htm

22 Ejercicios

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

24 HelloWorld #include 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


Descargar ppt "Programación Orientada a Objetos en C++ Febrero 2009."

Presentaciones similares


Anuncios Google