THOUSANDS OF FREE BLOGGER TEMPLATES

terça-feira, 16 de dezembro de 2008

MODULO 9 - PARADIGMA ADT

Vou começar por dizer o que é ADT:
Tipo Abstracto de Dados (A.D.T.) é um conjunto de operações sobre uma
colecção de dados armazenados.
Por exemplo, no caso de uma lista ligada podemos sempre definir as operações de
inserção, remoção, comprimento, etc. sem que para isso tenhamos que definir qual a
estrutura de dados escolhida para a sua representação.
Bem será mais facilde explicar com um pequeno exemplo feito por mim na aula.

Neste programa, estou a criar uma casa muito simples com um comando á distancia onde ao clicar abre ou a porta ou a janela;
primeiro vou mostra-lo todo junto sem separar as funçoes:

#include <iostream>
#include <string>
using namespace std;
class Casa{
public:
Casa(){
Porta=false;
Luz=false;
}
void CarregouBotaoPorta();
void CarregouBotaoLuz();
void EstadoDaLuz();
void EstadoDaPorta();
void MostrarLuz();
void MostrarPorta();

private:
bool Porta;
bool Luz;
};

void Casa::CarregouBotaoPorta(){
if(Porta == true)
Porta = false;
else
Porta = true;
}
void Casa::CarregouBotaoLuz(){
if(Luz == true)
Luz = false;
else
Luz = true;
}
void Casa::EstadoDaLuz(){
if(Luz == true)
cout<<"a luz esta ligada"<<endl;
else
cout<<"a luz esta desligada"<<endl;
}
void Casa::EstadoDaPorta(){
if(Porta == true)
cout<<"a porta esta aberta"<<endl;
else
cout<<"a porta esta fechada"<<endl;
}
void Casa::MostrarPorta(){
if(Porta == false){
cout<<"porta fechada"<<endl;
cout<<" ______________________"<<endl;
cout<<" | |"<<endl;
cout<<" | |"<<endl;
cout<<" | |"<<endl;
cout<<" | +------------+ |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | o | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | +------------+ |"<<endl;
cout<<" ------------------------"<<endl;
}
else{
cout<<"porta aberta"<<endl;
cout<<" ______________________"<<endl;
cout<<" | |"<<endl;
cout<<" | |"<<endl;
cout<<" | |"<<endl;
cout<<" | +------------+ |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | +------------+ |"<<endl;
cout<<" ------------------------"<<endl;
}
}
void Casa::MostrarLuz(){
if(Luz==false){
cout<<"a luz esta fechada"<<endl;
cout<<" _______"<<endl;
cout<<"+ +"<<endl;
cout<<"+ +"<<endl;
cout<<"+ +"<<endl;
cout<<"+ +"<<endl;
cout<<"+ _ +"<<endl;
cout<<"+ | | +"<<endl;
cout<<"+ | | +"<<endl;
cout<<"+| |+"<<endl;
cout<<"/////"<<endl;
cout<<"/////"<<endl;
cout<<"/////"<<endl;
}
else{
cout<<"a luz esta acesa"<<endl;
cout<<" _______"<<endl;
cout<<"+ + + + +"<<endl;
cout<<"+ + + + +"<<endl;
cout<<"+ + + + + + +"<<endl;
cout<<"+ + + + + + +"<<endl;
cout<<"++ + _ + +"<<endl;
cout<<"+ +|+|+ +"<<endl;
cout<<"++|+|++"<<endl;
cout<<"+|+|+"<<endl;
cout<<"/////"<<endl;
cout<<"/////"<<endl;
cout<<"/////"<<endl;
}
}


int main(){
Casa tiago, porta, luz;
tiago.EstadoDaLuz();
tiago.EstadoDaPorta();

tiago.MostrarLuz();
tiago.MostrarPorta();



return 0;
}



Em primeiro começo por dizer que este programa é gravado como nome.cpp por exemplo.

agora um pequeno desenho basico do que faz este programa

Free Image Hosting at www.ImageShack.us


Agora o que ele faz; Ele cria uma casa com uma porta, uma luz e um comando; a partir desse comando podemos abrir a luz, fechar a luz, abrir a porta ou fechar a porta.
Em ADT os programas podem ser separados em 3 passos mas isso vou explicar mais a frente.

Agora vou explicar alguns passos aqui feitos:
-Criar uma funçao public e private; Na public criamos as funçoes void criados no programa á frente como esta:
void Casa::CarregouBotaoPorta(){
if(Porta == true)
Porta = false;
else
Porta = true;
}

-Na private criamos 2 bools um para a porta outra outro para a luz. Estas variaveis por estarem no private estao protegidas.

- A seguir criamos as funçoes void. as 2 primeiras para carregar na porta e na luz e criamos um if e um else que diz que caso a porta seja true significa que está aberta; false significa que está fechada e para a luz igual.

- Depois criamos um estado da luz e da porta.

- Por fim um mostrar luz e porta com um pequeno desenho em couts

-Depois para acabar é aberto um int main onde o programa mostra na consola o que fizemos nas funçoes void.

Depois deste programa todo junto vamos agora separa-lo em 3 ficheiros;

o primeiro é o Casa.h:
#ifndef CASA_H
#define CASA_H
#include <string>
using namespace std;
class Casa{
public:
Casa(){
Porta=false;
Luz=false;
}
void CarregouBotaoPorta();
void CarregouBotaoLuz();
void EstadoDaLuz();
void EstadoDaPorta();
void MostrarLuz();
void MostrarPorta();

private:
bool Porta;
bool Luz;
};
#endif



Agora um casa.cpp:
#include <iostream>
#include "Casa.h"
using namespace std;
void Casa::CarregouBotaoPorta(){
if(Porta == true)
Porta = false;
else
Porta = true;
}
void Casa::CarregouBotaoLuz(){
if(Luz == true)
Luz = false;
else
Luz = true;
}
void Casa::EstadoDaLuz(){
if(Luz == true)
cout<<"a luz esta ligada"<<endl;
else
cout<<"a luz esta desligada"<<endl;
}
void Casa::EstadoDaPorta(){
if(Porta == true)
cout<<"a porta esta aberta"<<endl;
else
cout<<"a porta esta fechada"<<endl;
}
void Casa::MostrarPorta(){
if(Porta == false){
cout<<"porta fechada"<<endl;
cout<<" ______________________"<<endl;
cout<<" | |"<<endl;
cout<<" | |"<<endl;
cout<<" | |"<<endl;
cout<<" | +------------+ |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | o | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | | | |"<<endl;
cout<<" | +------------+ |"<<endl;
cout<<" ------------------------"<<endl;
}
else{
cout<<"porta aberta"<<endl;
cout<<" ______________________"<<endl;
cout<<" | |"<<endl;
cout<<" | |"<<endl;
cout<<" | |"<<endl;
cout<<" | +------------+ |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | |////////////| |"<<endl;
cout<<" | +------------+ |"<<endl;
cout<<" ------------------------"<<endl;
}
}
void Casa::MostrarLuz(){
if(Luz==false){
cout<<"a luz esta fechada"<<endl;
cout<<" _______"<<endl;
cout<<"+ +"<<endl;
cout<<"+ +"<<endl;
cout<<"+ +"<<endl;
cout<<"+ +"<<endl;
cout<<"+ _ +"<<endl;
cout<<"+ | | +"<<endl;
cout<<"+ | | +"<<endl;
cout<<"+| |+"<<endl;
cout<<"/////"<<endl;
cout<<"/////"<<endl;
cout<<"/////"<<endl;
}
else{
cout<<"a luz esta acesa"<<endl;
cout<<" _______"<<endl;
cout<<"+ + + + +"<<endl;
cout<<"+ + + + +"<<endl;
cout<<"+ + + + + + +"<<endl;
cout<<"+ + + + + + +"<<endl;
cout<<"++ + _ + +"<<endl;
cout<<"+ +|+|+ +"<<endl;
cout<<"++|+|++"<<endl;
cout<<"+|+|+"<<endl;
cout<<"/////"<<endl;
cout<<"/////"<<endl;
cout<<"/////"<<endl;
}
}




E por fim um main.cpp:
#include "Casa.h"
int main(){
Casa tiago, porta, luz;
tiago.EstadoDaLuz();
tiago.EstadoDaPorta();

tiago.MostrarLuz();
tiago.MostrarPorta();



return 0;
}



Para compilar nao e igual á forma normal;
Basta abrir a consola, entrar na pasta onde está o programa e digitar o seguinte:
g++ -Wall main.cpp Casa.cpp -o casa

0 comentários: