Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2. Los preprocesadores Incluyen: Directivos de inclusin de ficheros y directivos de compilacin condicional Unidad de translacin: el fichero resultado del pre-procesador 2.1 Directivos de inclusin de ficheros Especificar el nombre de un fichero que forma parte de la unidad de translacin y substituye el directivo mismo. Dos formas: #include <NombreDeFichero> // para los en directorios estndar del sistema #include NombreDeFichero // Significa que el sistema tiene que buscar // puede ser una ruta absoluta o relativa // por defecto es la carpeta actual
2.2 Directivos de compilacin condicional Incluyen #ifndef (si no se ha definido) y #ifdef (si se ha definido) #ifndef ALGO #ifdef ALGO la seccin. #endif #endif Para decidir si compilar o no compilar la seccin. Ejemplo: Garantizar la definicin de a, b solamente ocurrir una vez. #ifndef NO_MAS_A_Y_B int a; int b; #define NO_MAS_A_Y_B #endif
3. Las libreras de software Los espacios de nombres globales : .h Ejemplos: #include <math.h> #include rect.h Los espacios de nombres no globales
Qu se puede utilizar durante todo el fichero de programa No hace falta de utilizar using namespace
Sin ninguna extensin Hay que poner su espacio de nombres donde se define
Ejemplo: #include <iostream> using namespace std; cout << Hello world << endl; // la primera manera O en este formato: #include <iostream> std::cout << Hello world << endl; // la segunda manera
La librera assert
Dispone un preprocesador macro assert assert usa una expresin como su parmetro Cuando se utiliza, comprueba su parmetro si tiene el valor cero. Si no es cero, el programa continua normalmente Si es cero, enva un mensaje y termina la ejecucin Ejemplo: #include <assert.h> assert(Denominator); Si Denominator es cero: sale el error: Assertion failed: Denomiator, file my.cpp line 12
4. Sobrecarga de funciones Sobrecarga de los operadores: el significativo de los operadores depende de los tipos de sus operandos ejemplo: el operador + : depende que est sumando. Sobrecarga de las funciones: se puede crear ms que una funcin con mismo nombre que comportan diferentemente ejemplo: una funcin Swap() // la versin de entero void Swap(int &x, int &y) { int tmp = x;
x = y; y = tmp; return; } // la versin de double void Swap(double &x, double &y) { double tmp = x; x = y; y = tmp; return; } Ejemplo: double w = 1.2, z = 3.4; Swap(w, z); La resolucin de funciones sobrecargadas : decide cul de las versiones va a ejecutar.
Un ejemplo class RectangleShape { public: RectangleShape(SimpleWindow &Window, float Xcoord, float Ycoord, const color &Color, float Width, float Height); void Draw(); color GetColor() const; void GetSize(float &Width, float &Height) const; float GetWidth() const; float GetHeight() const; void GetPosition(float &Xcoord, float &Ycoord) const; void SetSize(float Width, float Height); private: SimpleWindow &Window; float Xcenter; float Ycenter; color Color; float width; float Height; };
class NombreDeClase { public: // Aqu se colocan los prototipos para los constructores // miembros de atributos pblicos de datos // miembros de las funciones pblicas private: // Aqu se colocan los miembros de las funciones privados // miembros de atributos privados de datos de la clase }; La parte privada (private) Es la parte que no se puede tocar por las funciones fuera de la clase para esconder la informacin interna Cada declaracin corresponde a cada atributo del objeto SimpleWindow &window; declara un subobjeto que contiene la referencia de SimpleWindow que va a dibujar el objeto RectangleShape si se lo declara. Se utiliza referencia para no instanciar cada vez. Otros atributos: sub-objetos para contener el centro del rectngulo, su color, su ancho y altura.
Es la parte interfaz de la clase que se puede acceder por las funciones fuera de la clase para usar la clase El constructor: es una funcin de la clase que se convoca automticamente cuando un objeto de la clase se define Tiene el mismo nombre de la clase Puede iniciar una parte o todos los valores de los miembros
El constructor de la clase RectangleShape: RectangleShape(SimpleWindow &Window, float Xcoord, float Ycoord, const color &Color, float Width, float Height); Inspectores: las funciones que retornan atributos de los objetos de la clase Mutadores: Las funciones que pueden modificar los atributos de una clase Facilitadores: las acciones o servicios que el objeto de la clase puede facilitar.
void Draw();
color GetColor() const; 2. El uso de las clases El concepto de instanciacin: Declarar un objeto de una clase despus de su construccin.
RectangleShape R(W, 4.0, 4.0, Blue, 2.0, 3.0); // Declara y crea un objeto RectangleShape e inicia lo. RectangleShape R(W); // declara un rectngulo por valores defectos
El acceso de la clase:
Parte privada: solamente los miembros las funciones de la clase Parte pblica: no hay que ser miembros de la clase. Para enviar mensajes a los objetos de una clase Se acceder con "." R.draw() R.SetColor(Cyan); R.SetSize(1.0, 2.0);
4. La definicin de las funciones de miembros El uso del operador :: (de mbito) Para referir la relacin de la clase y sus miembros fuera de la parte de declaracin de la clase float RectangleShape::GetWidth() const { return Width; } Las funciones de los miembros suelen definirse fuera de la declaracin de la clase