Created
May 16, 2016 21:53
-
-
Save werbet/a42c2b97fc411dfc29ee3fc810ba9375 to your computer and use it in GitHub Desktop.
Listas de objetos
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <stdio.h> | |
using namespace std; | |
class Funcionario | |
{ | |
private: | |
int matricula; | |
char* cpf; | |
char* nome; | |
public: | |
Funcionario(int matricula, char* cpf, char* nome) | |
{ | |
this->matricula = matricula; | |
this->cpf = cpf; | |
this->nome = nome; | |
} | |
int getMatricula() | |
{ | |
return matricula; | |
} | |
void setMatricula(int mat) | |
{ | |
this->matricula = mat; | |
} | |
void imprimir() | |
{ | |
printf("%s tem matricula %d e cpf %s\n", nome, matricula, cpf); | |
} | |
}; | |
class No | |
{ | |
private: | |
Funcionario* valor; | |
No* proximo; | |
public: | |
No() | |
{ | |
this->valor = NULL; | |
this->proximo = NULL; | |
} | |
No(Funcionario* valor) | |
{ | |
this->valor = valor; | |
this->proximo = NULL; | |
} | |
void imprimir() | |
{ | |
this->valor->imprimir(); | |
} | |
void setValor(Funcionario* valor) | |
{ | |
this-> valor = valor; | |
} | |
Funcionario* getValor() | |
{ | |
return this->valor; | |
} | |
void setProximo(No* proximo) | |
{ | |
this->proximo = proximo; | |
} | |
No* getProximo() | |
{ | |
return this->proximo; | |
} | |
}; | |
class Lista | |
{ | |
private: | |
No* primeiro; | |
public: | |
Lista() | |
{ | |
this->primeiro = new No(); | |
} | |
Lista(Funcionario* valor) | |
{ | |
this->primeiro = new No(valor); | |
} | |
void inserirInicio(Funcionario* valor) | |
{ | |
No* novo = new No(valor); | |
novo->setProximo(this->primeiro); | |
this->primeiro = novo; | |
} | |
void imprimir() | |
{ | |
No* aux; | |
aux = this->primeiro; | |
while(aux != NULL) | |
{ | |
aux->imprimir(); | |
aux = aux->getProximo(); | |
} | |
} | |
Funcionario* buscaMatricula(int matricula) | |
{ | |
No* aux; | |
aux = this->primeiro; | |
while(aux != NULL) | |
{ | |
Funcionario* f = aux->getValor(); | |
int mat = f->getMatricula(); | |
if(mat == matricula) | |
return f; | |
aux = aux->getProximo(); | |
} | |
} | |
~Lista() | |
{ | |
No* aux; | |
aux = this->primeiro; | |
while(aux != NULL) | |
{ | |
No* anterior = aux; | |
aux = aux->getProximo(); | |
//anterior->imprimir(); | |
delete anterior; | |
} | |
} | |
}; | |
class Universidade | |
{ | |
private: | |
Lista* funcionarios; | |
char* nome; | |
public: | |
Universidade(char* nome, Funcionario* f) | |
{ | |
this->nome = nome; | |
funcionarios = new Lista(f); | |
} | |
void contratar(Funcionario* f) | |
{ | |
funcionarios->inserirInicio(f); | |
} | |
Funcionario* buscaFuncionario(int mat) | |
{ | |
return funcionarios->buscaMatricula(mat); | |
} | |
}; | |
class Centro | |
{ | |
private: | |
char* nome; | |
Lista* funcionarios; | |
public: | |
Centro(char* nome, Funcionario* f) | |
{ | |
this->nome = nome; | |
funcionarios = new Lista(f); | |
} | |
void lotar(Funcionario* f) | |
{ | |
funcionarios->inserirInicio(f); | |
} | |
Funcionario* buscaFuncionario(int mat) | |
{ | |
return funcionarios->buscaMatricula(mat); | |
} | |
}; | |
int main() | |
{ | |
/*Funcionario* eriko = new Funcionario(154, "6378", "Eriko"); | |
Universidade* unifor = new Universidade("UNIFOR", eriko); | |
Centro* CCT = new Centro("CCT", eriko); | |
Funcionario* f1 = unifor->buscaFuncionario(154); | |
Funcionario* f2 = CCT->buscaFuncionario(154); | |
f1->imprimir(); | |
f2->imprimir();*/ | |
Funcionario* eriko1 = new Funcionario(154, "6378", "Eriko"); | |
Funcionario* eriko2 = new Funcionario(154, "6378", "Eriko"); | |
Funcionario* eriko3 = new Funcionario(154, "6378", "Eriko"); | |
eriko2->setMatricula(777); | |
eriko1->imprimir(); | |
eriko2->imprimir(); | |
eriko3->imprimir(); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment