Tecnicismos de C++ antes de empezar

Definición vs. Declaración

Definición

Son declaraciones que además le otorgan un valor a la variable.

No se pueden repetir.

class Persona {
	string nombre;
	string apellido;
};
int x = 5;
bool foo(int x) {
	return x == 10;
}
// acá y ya está tomando un valor
int y;

Declaración

Asocian un nombre a un tipo.

Se pueden repetir

class Persona;
bool foo(int x);
extern int y;

Scopes

namespace NS {
	int ns1 = 1;
	int ns2 = ns1 + 1;
}

int global1 = 2;
int global2 = NS::ns2;

Módulos y Clases

Para relacionar módulos de TADs con clases de C++ escribiremos una interfaz (pero eso lo vamos a ver más adelante).

Representación interna

Clases como abstracciones y variables concretas como instancias.

Para representar estas diferencias tenemos que definir una representación interna.

La representación es un conjunto de variables que componen la instancia y cuyo estado la definen. Sobre estas variables se ejecutan las operaciones y mantenemos información del módulo en el tiempo.

class Truco {
	public:
		uint puntaje_j1();
		uint puntaje_j2();

		Truco();
		void sumar_punto(uint);

		bool buenas(uint);

// Definimos las variables de representación interna como privadas
// No son parte de la interfaz	
private:
		int puntaje_j1_;
		int puntaje_j2_;
}

Comportamiento genérico

¿Cómo definimos comportamiento genérico para las instancias?

void Truco::sumar_punto(uint j) {
	if (j == 1 {	
		this -> puntaje_j1_++;
	} else {
		this -> puntaje_j2_++;
	}
};

Keyword this: