La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Orientada a Objetos en C++

Presentaciones similares


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

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 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;
Crectangle.h class class_name { id_acceso1: miembro1; id_acceso2: miembro2; ... }; class CRectangle { int w, h; public: CRectangle(int,int); int area(void); }; 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 Coche Tren Avión
puertas vagones 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 queroseno aterrizar despegar Helicóptero
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 Detecta errores de compilación
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 Botón Run
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:

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 Pistas:
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++"

Presentaciones similares


Anuncios Google