//
// main
//

#include <iostream.h>
#include <string.h>

#include "generic.h"
#include "AlunoBach.h"
#include "AlunoCESE.h"
#include "ListaAluno.h"

void main()
{
	CAlunoBach aBach;
	CAlunoCESE aCESE;

	aBach.Leitura();

	aCESE.Leitura();

	cout << "operador=" << endl;
	CAlunoBach aBachAux = aBach;


	//
	// funcoes virtuais
	//
	CAluno* pAluno;

	cout << "funcao virtual apresenta" << endl;
	pAluno = &aCESE;
	pAluno->Apresenta(); // dynamic bind

	cout << "funcao virtual apresenta" << endl;
	pAluno = &aBach;
	pAluno->Apresenta(); // dynamic bind


	//
	// lista de alunos
	//
	CListaAluno listaAlunos;

	// Add
	//
	cout << "Add...\n";
	if ( listaAlunos.Add(aBach) )
		cout << "Colocado na lista " << aBach.GetNumero() << endl;
	else
		cout << "Numero duplicado " << aBach.GetNumero() << endl;

	if ( listaAlunos.Add(aCESE) )
		cout << "Coloca na lista " << aCESE.GetNumero() << endl;
	else
		cout << "Numero duplicado " << aCESE.GetNumero() << endl;

	cout << "Apresenta lista\n";
	listaAlunos.Apresenta();

	// Get
	//
	cout << "Get...\n";

	int nAux;
	cout << "Numero para procurar: ";
	cin >> nAux;
	CAluno a;
	a.SetNumero(nAux);
	listaAlunos.Get(a);

	a.Apresenta();

	// Delete
	//
	cout << "Apaga " << a.GetNumero() << endl;

	listaAlunos.Delete(a);
	cout << "Apresenta lista\n";
	listaAlunos.Apresenta();

	char c;
	cin >> c;
}

1