Programacion en C++ Orientada a Objetos - Clase Practica 1 Nicolás Silva 4 de julio de 2007 1. Herramientas CodeBlocks: (IDE de Programacion) Para instalar CodeBlocks: Linux: -Entrar a http://www.codeblocks.org -Ingresar a Forums -Ingresar en Nightly-Builds -Descargar la ultima versión que este disponible. Hacen click en el ultimo día y allí aparecerán paquetes para Ubuntu o Fedora -Hacer dobleclick al paquete descargado para instalar. Windows: -Instalar MinGW. En el instalador seleccionar las herramientas base y el compilador de c++ (g++). -Instalar GDB. -Entrar a http://www.codeblocks.org -Ingresar a Forums -Ingresar en Nightly-Builds -Descargar la ultima version para windows que este disponible y descomprimirla en un directorio. -Bajar el dll de WxWidget y descomprimirlo en la carpeta del CodeBlocks. -Bajar el dll de MinGW y descomprimirlo en la carpeta del CodeBlocks. Valgrind: (Detector de errores y fugas de memoria) http://www.valgrind.org Alleyoop: (GUI de Valgrind) http://alleyoop.sourceforge.net/ BOUML: (Editor UML con generación de código) http://bouml.free.fr 2. Declaracion de Clases 2.1. Organizacion de Archivos La declaracion de la clase va en un archivo header. La extension tipicamente usada es .h. La implementacion de la clase va en su correspondiente archivo de implementacion. La extension tipicamente usada es .cpp. Tambien se usa habitualmente .C y .cc. 2.2. ¾Que va en el .h? Condicionales de compilacion (#ifndef STACK_H, #dene STACK_H, ..., #endif ) Includes (#include <iostream>, #include miarchivo.h) 1 Declaracion de la clase Denicion de namespaces Deniciones inline Ej: #ifndef EMPLEADO_H #define EMPLEADO_H #include <iostream> using namespace std; class Empleado { public: Empleado(); Empleado(string nombre); void addSueldo(int monto); int getSueldo(); void imprimir(); ~Empleado(); private: string nombre; int sueldo; }; #endif 2.3. ¾Que va en el .cpp? Implementacion de cada metodo de la clase Ej: #include empleado.h void Empleado::addSueldo(int monto){ ... } int Empleado::getSueldo(){ ... } 2.4. Namespaces Se dene de la siguiente manera: namespace micodigo { void foo(); } En la implementacion del metodo tambien se puede denir: namespace micodigo { void foo() { std::cout < < foo() llamado en el namespace micodigo < < std::endl; } } Para usarlo: 2 micodigo::foo(); O tambien: using namespace micodigo; int main(int argc, char** argv) { foo(); // Llama a micodigo::foo(); } 2.5. Argumentos de Metodos (*, &) Los argumentos de las funciones se pasan por default por copia. Si uno antecede el argumento por & en la declaracion de la funcion, el argumento se pasara por referencia. Si uno antecede el argumento por * en la declaracion de la funcion, la funcion solo admite el puntero correspondiente como argumento. 3. Constructores Es el metodo que se llama al crear el objeto. Cuando no se declara ninguno, siempre existe uno sin parametros por default Es importante siempre denir un constructor sin parametros. Util para llamadas del tipo: Stack s 3.1. Ejercicios 3.1.1. Ejercicio 1 Dene a class to represent a bank account. Data members should include the depositor's name, the account number (use a string), and the balance. Member functions should allow the following: Creating an object and initializing it. Displaying the depositor's name, account number, and balance Depositing an amount of money given by an argument Withdrawing an amount of money given by an argument Just show the class declaration, not the method implementations. 3.1.2. Ejercicio 2 Provide code for a constructor for the bank account class. 4. Input/Output 4.1. Salida estandar: Ejemplo: cout < < Hola mundo < < endl; 4.2. Entrada estandar: Ejemplo: int numero; cout < < Ingrese un numero: ; cin > > numero 3 4.3. Ejercicios 4.3.1. Ejercicio 1 Write a program that requests the information shown below and that formats it as shown: Ingrese su nombre: Billy Gruff Ingrese No horas trabajadas: 12 Ingrese sueldo por hora: 7.5 Sueldo total empleado Billy Gruff = 90 5. Redenicion de operadores Ver ejemplo de Complejos. 5.1. Ejercicios 5.1.1. Ejercicio 1 Implementar un programa similar al de Complejo pero con Tiempo. 4