S@brin@ 0 Denunciar post Postado Novembro 12, 2008 Boa tarde galera ^_^ É o seguinte, como projeto final para uma discplina da faculdade estou fazendo um projeto simples. É um sisteminha de estacionamento. O professor pediu para criarmos uma aplicação qualquer ( o tema é livre ), mais tem que conter os seguintes conceitos dado em sala de aula: * Classe, Atributo e Método; * Método Construtor e Método Destrutor; * Sobrecarga; * Herança; * Tratamento de Exceção; E estou com 3 dúvidas :unsure: : 1º) Como e aonde eu posso usar Sobrecarga e Tratamento de Exceção no meu programa? Se alguém tiver algum exemplo parecido ou me da alguma idéia de em q parte do programa eu posso usar seria bom, pois fiquei totalmente perdida nessa parte. Os exemplos que meu professor passou foram muito vagos, não entendi muita coisa. 2º) Tem mais de uma hora que eu estou tentando descobrir o erro q tá dando em void Veiculo :: consultaPlaca() alguém me da uma luz por favor. 3º) E uma ultima coisa http://forum.imasters.com.br/public/style_emoticons/default/blush.gif em C++ tem alguma variavel que eu possa usar para escrever letras e numeros ao mesmo tempo? Tipo em Placa do Veículo, todas as placas de carro tem letras e números, tudo junto né? Como q eu faço pro C++ aceitar isso? Vou postar o código para vcs darem uma olhada. Lembrando que eu n terminei o sistema ainda cadastraVeiculo(), mostraVeiculo() e consultaPlaca(). E outra coisa, eu sou super iniciante em C++, portanto não me xinguem hehe http://forum.imasters.com.br/public/style_emoticons/default/grin.gif Espero que vocês possam me ajudar http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif #include <iostream> #include <conio.h> #include <string.h> #include <math.h> #include <stdlib.h> using namespace std; class Empresa{ public: void setPlaca(); int getPlaca(); void setFabricante(); char *getFabricante(); void setMarca(); char *getMarca(); int placa; char *fabricante; char *marca; Empresa(); }; class Estacionamento: public Empresa{ public: void setAno(); int getAno(); void setCor(); char *getCor(); int ano; char *cor; void cadastraVeiculo(); char resp; Estacionamento(); }; Empresa :: Empresa(){ fabricante = new char[20]; marca = new char[20]; } Estacionamento :: Estacionamento(){ cor = new char [20]; } void Empresa :: setPlaca(){ cout<<" PLACA DO VEICULO: "<<endl; cin>>placa; } int Empresa :: getPlaca(){ return placa; } void Empresa :: setFabricante(){ cout <<" FABRICANTE DO VEICULO: "<<endl; fflush(stdin); cin.getline(fabricante,20,'\n'); strupr(fabricante); } char* Empresa :: getFabricante(){ return fabricante; } void Empresa :: setMarca(){ cout <<" MARCA DO VEICULO: "<<endl; fflush(stdin); cin.getline(marca,20,'\n'); strupr(marca); } char* Empresa :: getMarca(){ return marca; } void Estacionamento :: setAno(){ cout<<" ANO DO VEICULO: "<<endl; cin>>ano; } int Estacionamento :: getAno(){ return ano; } void Estacionamento :: setCor(){ cout<<" COR DO VEICULO: "<<endl; fflush(stdin); cin.getline(cor,20,'\n'); strupr(cor); } char* Estacionamento :: getCor(){ return cor; } class Veiculo : public Estacionamento{ Estacionamento cadastro[5]; public: Veiculo(); void cadastraVeiculo(); void mostraVeiculo(); void consultaPlaca(); void registraEntrada(); void registraSaida(); void Resposta(); int i, b, k, x, aux; int ex, exclusao; int pesq_placa; ~Veiculo(); }; Veiculo :: Veiculo(){ i=0; } void Veiculo :: Resposta(){ do{ cout << endl << "Deseja cadastrar mais uma placa? "; cin >> resp; resp = toupper( resp ); if((resp != 'S') && (resp != 'N')) cout << "Resposta invalida!!!"; }while((resp != 'S') && (resp != 'N')); } void Veiculo :: cadastraVeiculo(){// 1. if (i>4){ cout<<"Estacionamento cheio"<<endl; return; } do{ system("cls"); i++; cadastro[i].setPlaca(); cadastro[i].placa = cadastro[i].getPlaca(); cadastro[i].setFabricante(); strcpy(cadastro[i].fabricante,cadastro[i].getFabricante()); cadastro[i].setMarca(); strcpy(cadastro[i].marca,cadastro[i].getMarca()); cadastro[i].setAno(); cadastro[i].ano = cadastro[i].getAno(); cadastro[i].setCor(); strcpy(cadastro[i].cor,cadastro[i].getCor()); system("cls"); cout << endl << "VEICULO CADASTRADO COM SUCESSO!!"<<endl; Resposta(); }while((resp == 'S') && (i<=5)); return; } void Veiculo :: mostraVeiculo(){//3. if( i != 0){ for(b=1; b<=i; b++){ cout << endl << endl << "DADOS DO VEICULO: "<<endl; cout << endl << " Placa: " << cadastro[b].placa; cout << endl << " Fabricante: " << cadastro[b].fabricante; cout << endl << " Ano: " << cadastro[b].ano; cout << endl << " Marca: " << cadastro[b].marca; cout << endl << " Cor: " << cadastro[b].cor; } }else cout << endl << "NENHUMA PLACA FOI CADASTRADA NO SISTEMA"<<endl; return; } void Veiculo :: consultaPlaca(){//5. cout << endl << " INFORME A PLACA PARA CONSULTA: " << endl; cin >> pesq_placa; cout << endl; aux = 0; if( i != 0){ for(b=1; b<=i; b++){ if(pesq_placa == cadastro[b].placa)) { aux = 1; cout << endl << endl << "DADOS DO VEICULO: "<<endl; cout << endl << " Placa: " << cadastro[b].placa; cout << endl << " Fabricante: " << cadastro[b].fabricante; cout << endl << " Ano: " << cadastro[b].ano; cout << endl << " Marca: " << cadastro[b].marca; cout << endl << " Cor: " << cadastro[b].cor; }//fecha if }//fecha for }//fecha if else{ cout << endl << "NENHUMA PLACA FOI CADASTRADA NO SISTEMA"<<endl; return; }//fecha else if( aux == 0 ) cout << endl << "ESSA PLACA NAO ESTA CADASTRADA"<<endl; return; } Veiculo :: ~Veiculo(){ delete cadastro; } int main(){ Veiculo *v; v = new Veiculo(); char resposta; int op; do{ system("cls"); cout<<"________________________________________________ "<<endl; cout<<"________________ESTACIONAMENTO__________________ "<<endl; cout<<"1 -> CADASTRAR VEICULO"<<endl; cout<<"2 -> ALTERAR DADOS"<<endl; cout<<"3 -> MOSTRAR VEICULOS"<<endl; cout<<"4 -> EXCLUIR CADASTRO"<<endl; cout<<"5 -> CONSULTAR PLACA"<<endl; cout<<"6 -> REGISTRAR ENTRADA"<<endl; cout<<"7 -> REGISTRAR SAIDA"<<endl; cout<<"8 -> SAIR DO SISTEMA"<<endl<<endl; cout<<"INFORME UMA OPCAO: "; cin >> op; system("cls"); switch(op){ case 1: v->cadastraVeiculo(); break; case 2: break; case 3: v->mostraVeiculo(); break; case 4: break; case 5: v->consultaPlaca(); break; case 6: break; case 7: break; case 8: do{ cout<<"Deseja sair?[S ou N]"; cin>>resposta; resposta=toupper(resposta); system("cls"); if(resposta!='S'&&resposta!='N'){ system("cls"); cout<<"Resposta invalida."<<endl; } }while(resposta!='S'&&resposta!='N'); break; delete v; system("pause"); break; } getch(); }while(op != 8); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 12, 2008 Cara,você fez uma salada. class Empresa { string nome; public: Empresa(string NOME) { nome = NOME; } }; class Carro { int cor; string placa; int ano; public: void setPlaca(string PLACA) { placa = PLACA; } string getPlaca() { return placa; } void setAno(int ANO) { ano = ANO; } int getAno() { return ano; } void setCor(int COR) { cor = COR; } int getCor() { return cor; } }; class Fabricante:Empresa { vector<string> cores; vector<Carro> listaCarros; public: Fabricante(string NOME) { nome = NOME; } void cadastraCor(string NomeCor) { // Algoritmo de cadastramento de cor da paleta da fábrica // Caso uma cor já exista, você pode adicionar tratamento de exceção ou apenas // imprimir uma mensagem } string getCor(int COR) { // Algoritmo de busca de Cor baseado no indice do array // Se o indice não existir, tratamento de exceção ou mensagem } void cadastrarCarro() { // Algoritmo para cadastro do carro NA MONTADORA } }; class Estacionamento:Empresa { vector<Carro> listaEstacionados; public: Estacionamento(string NOME) { nome = NOME; } void registraEntrada() { } void registraSaida() {} }; Compartilhar este post Link para o post Compartilhar em outros sites
S@brin@ 0 Denunciar post Postado Novembro 13, 2008 Cara,você fez uma salada. Eita...é q eu tomei como base os exercicios que o professor deu em sala de aula :unsure: E o sistema não tem montadora... é so estacionamento de veículos, aqueles que paga por hora. Na verdade fiquei mais confusa ainda com os seus exemplos... :huh: Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 13, 2008 Não importa que não tenha Montadora no exercicio. O carro foi feito por uma e faz mais sentido criar uma classe montadora que contem a lista de carros fabricados p/ depois usar como 'banco de dados' do que ficar colocando string de fabricante em cada carro. Isso é orientacao a objetos. Compartilhar este post Link para o post Compartilhar em outros sites
S@brin@ 0 Denunciar post Postado Novembro 13, 2008 Não importa que não tenha Montadora no exercicio. O carro foi feito por uma e faz mais sentido criar uma classe montadora que contem a lista de carros fabricados p/ depois usar como 'banco de dados' do que ficar colocando string de fabricante em cada carro. Isso é orientacao a objetos. Sim, eu entendi a sua lógica. Só que não sei fazer do jeito que você falou. Só que eu não sei programar em C++, sei menos que o básico. Foi o que eu aprendi na faculdade. E só estou me baseando nos exercicios que o professor passou. Por isso que eu vim aqui pedir ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 13, 2008 bom seu programa ta indo + pro lado de orientacao a objeto, você entende bem disso??? ow prefere fazer td estruturado?? * e para fazer tratamento de erro, você precisa analizar onde o programa podera gerar erro neh! * sobrecarga [e facil, você tem nocaum do q [e sobrecarga neh? vai postando as duvidas ai, no q eu puder ajudar eu ajudo.. []s Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 13, 2008 Simples: - pro estacionamento não interessa se a Peugeot comprou a Volkswagen ou se a Citroen entrou numa parceria estranha e comecou a produzir carros da Renault. A importância de um atributo fabricante no estacionamento é simplesmente p/ indexar direto a tabela das montadoras, verificar se ela trabalha com a paleta de cores em um determinado modelo de carro.Nesse caso,o atributo é um inteiro. Sem ele você tem que pesquisar sequencialmente numa lista de fabricantes. Isso já começa a mesclar coisas da laia de desempenho de buscas/banco de dados com OO. - cor não é atributo do estacionamento, mas dos carros. Se o estacionamento possui uma lista de carros registrados na entrada, é o método dos carros que você usa pra definir a cor da instância do carro que foi registrado. - placa é atributo do carro, assim como ano, que pode ser estendido para um modelo específico.Ex: Fusca 1969, Fusca 1979. O que vem a ser isso? int i, b, k, x, aux; int ex, exclusao; int pesq_placa; você está usando C++: pq você usa char * quando se tem a classe string? Veiculo *v; Um objeto já é uma referência. Declarando Veiculo v e fazendo v.metodo() você altera o objeto. Compartilhar este post Link para o post Compartilhar em outros sites