Está en la página 1de 29

Programacin Orientada a

Objetos en C++
ndice
1. Teora de la Orientacin a Objetos
2. Desarrollo de un proyecto OO
3. Ejercicios
Orientacin a Objetos
Introduccin
Programacin Orientada a Objetos (POO):
Modo de entender y clasificar el mundo
Simple e intuitivo
Escalable
Un concepto se define en trminos de:
qu tiene? campos
qu hace? mtodos
Clases y objetos
Clase: concepto abstracto
coche
Objeto: instancia del concepto
seat ibiza matrcula 43456-FWZ
Una clase puede tener mltiples instancias
(objetos)

Clase: public class Car{ }


Objeto: Car miCoche();
Campos
Cosas que tiene un objeto
Coche: motor, puertas, depsito, velocidad
La configuracin 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 crticos
Mtodos
Cosas que puede hacer un objeto
Coche: acelerar, frenar, abrir/cerrar puertas

Los mtodos suelen modificar los campos


acelerar modifica la velocidad
abrir puerta modifica el estado de las
puertas
Identificadores de acceso
Campos y mtodos pueden definirse con
tres tipos de acceso
public: cualquier objeto puede acceder
private : slo mtodos del objeto pueden
acceder
protected: slo el objeto y objectos de sus
clases hijas pueden acceder
Ejemplos
Crectangle.h
class class_name class CRectangle
{ {
id_acceso1: miembro1; int w, h;
id_acceso2: miembro2; 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();
Herencia
A veces, campos y mtodos son
compartidos por varias clases:
Acelerar es un mtodo compartido por coches
y trenes
Para simplificar el cdigo, se usa la
herencia
Creamos una clase Vehiculo que tenga los
mtodos comunes a coche y tren
Creamos clases hijas que heredan de ella
Herencia
Vehculo
depsito
velocidad
acelerar
frenar

Coche Tren Avin


puertas vagones puertas
despegar
aterrizar
Mtodos abstractos
Si la clase padre define un mtodo, la
clase hija puede usar ese mtodo sin
necesidad de redefinirlo

Si la clase padre no define un mtodo


(mtodo abstracto), la clase hija tiene que
definirlo obligatoriamente.
Avin
Vehculo
areo aterrizaje horizontal
queroseno despegue horizontal

aterrizar
despegar
Helicptero
Vehculo
aterrizaje vertical
depsito despegue vertical
velocidad
Vehculo
acelerar
terrestre
frenar
gasolina Tren
1..n Vagn
vagones
puertas

asientos

Vagn Vagn
Coche conductor pasajeros
puertas=1 puertas=2
asientos=2 asientos=20

Construir un proyecto
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
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
Aadir clases
Clic derecho en el nombre del proyecto en
el men de la izquierda (New > Class) o
botn New C++ class
Los nombres de clase siempre comienzan por
mayscula y sin espacios
Construir el proyecto
Project > Build Project
Detecta errores de compilacin
Errores sintcticos generalmente

Genera los ficheros objeto (.o) si no hay


errores
Depurando el proyecto
Permite controlar la ejecucin del
programa:
Estableciendo puntos de control (checkpoints)
Ejecutando el programa paso a paso
Examinando el valor de las variables

Run > Debug (F11)


Aadir checkpoints: doble clic en el
margen gris izquierdo
Ejecutar el proyecto
Clic derecho sobre el proyecto
Run as > Local C/C++ Application
Botn Run
Men Run > Run (Ctrl+F11)

La entrada/salida aparece en la pestaa


Console en la parte de abajo del IDE
Ejecutar el proyecto
Una vez compilado, el proyecto tambin se
puede ejecutar externamente
Carpeta Binaries dentro del proyecto
Extensin .exe
Doble clic en el fichero ejecutable

Tutorial completo:
http://help.eclipse.org/stable/index.jsp?topic=/org.eclips
e.cdt.doc.user/getting_started/cdt_w_newproj.htm
Ejercicios
HelloWorld
Crear un proyecto en Eclipse+CDT

1. File > New > C++ Project


2. New > Class
3. Project > Build Project
4. Run > Run (Ctrl+F11)
HelloWorld
#include <iostream>
using namespace std;

int main ()
{
// Say Hello five times
for (int index = 0; index < 5; ++index)
cout << "HelloWorld!" << endl;

exit(0);
}
Ejemplo: mi Coche
Un coche desde la filosofa OO
Qu tiene?
Fsico: puertas, motor, depsito
Abstracto: velocidad, aceleracin, consumo
Estado:
parado con una puerta abierta
a 120 Km/h con el depsito medio lleno
Qu hace?
Acelerar, abrir/cerrar puertas, repostar
Ejercicio 1
Crear una clase coche que tenga los siguientes
campos:
Matrcula, marca y modelo (pblicos)
Velocidad, velocidad mxima y aceleracin
Nmero de puertas
Generar los constructores y destructores
Crear un constructor que inicie los parmetros
Instanciar un objeto de la clase y mostrar por
pantalla sus atributos pblicos
Ejercicio 2
Controlar el estado de las puertas
Crear mtodos 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)
Ejercicio 3
Implementar el movimiento del coche:
Acelerar
Entrada: tiempo durante el que acelera
Efecto: v=min(at, vmax)
Frenar: anlogo a la aceleracin
Considerar que una vez en movimiento se
mantiene a velocidad constante
Comprobar que no acelere si hay puertas
abiertas
Ejercicio 4
Implementar el consumo del coche:
Aadir campos:
deposito y depositoMax
consumo (litros por kilmetro)
cuentaKilometros
Aadir mtodo repostar(float litros)
Aadir mtodo crucero(int segundos) que modifique:
depsito, cuentaKilometros
d=vt
Comprobar que funciona correctamente
repostar 20 litros
acelerar 10s
crucero 1000s
frenar 10s

También podría gustarte