Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Febrero 2009
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
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
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
class class_name { id_acceso1: miembro1; id_acceso2: miembro2; ... }; class CRectangle { int w, h; public: CRectangle(int,int); int area(void); };
Crectangle.h
Crectangle.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
Herencia
Vehculo
depsito velocidad
acelerar frenar
Coche puertas
Tren vagones
Avin 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
aterrizaje horizontal despegue horizontal
Helicptero
aterrizaje vertical despegue vertical
Tren
vagones 1..n Vagn puertas asientos
Coche
Construir un proyecto
Compilador de C/C++
Windows: MinGW o Cygwin Linux: GCC (GNU C/C++ Compiler)
Ya instalado
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
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. 2. 3. 4. File > New > C++ Project New > Class Project > Build Project 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
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