Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida em Class e funções (Orientação a objetos)


JardelCss

Pergunta

Boa noite, sou iniciante em orientação a objetos , estou tentando criar um menu simples para uma calculadora usando classes é me deparei com a seguinte questão,como instanciar a função a seguir ?

-------------------------------------------------------- ------  (Arquivo.h) grafico.h   ------------------------------------------------------------

#ifndef GRAFICO_H_INCLUDED
#define GRAFICO_H_INCLUDED
class grafico_imprime{              //class criada em grafico.h
    public:
        int numero_indice;            //Numero do indice.
        void menu(int menu_indice); //Função que imprime o menu.
};
#endif // GRAFICO_H_INCLUDED
 

--------------------------------------------------------------  (Arquivo.cpp) grafico.cpp ---------------------------------------------------------

#include "grafico.h"

grafico_imprime::menu(int menu_indice){  //Função responsavel em imprimir o menu.
switch(menu_indice){        //Switch usado para fazer a relação do 'numero_indice' é imprimir na tela a opção desejada.
    case 1:
        cout << "test 1";
break;
    case 2:
        cout << "test 2";
    default:
        cout << "test 3";

}
}

------------------------------------------------------------  (Principal.cpp) main.cpp   ------------------------------------------------------------

#include <iostream>
#include <stdlib.h>
#include "grafico.h"         // Biblioteca que conterá as Class e funções para imprimir menus,resultados etc.
using namespace std;
int main()
{
grafico_imprime menu_inicial;           // Cria o objeto.
cin >> menu_inicial.numero_indice;  // Atribui um numero ao indice.
                                                          // Duvida Aqui !!! Na chamada da função.

system("pause");
    return 0;
}
 

A minha ideia era criar um objeto é uma função que seria responsável em rodar a função switch que esta contida na função 'menu' sem a necessidade de escrever qualquer coisa diretamente na função principal.

Ainda não entendo muito bem a lógica envolvida em OO, se alguém tiver a resolução para esse problema por favor comente a maneira que ache mas eficiente para resolver o mesmo.

 

 

Editado por JardelCss
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

 

main.c

//main.c
#include <iostream>
using namespace std;
#include "Calc.h"


int main(){
    Calc calc;
    
    calc.run(); // <-tudo ja está aqui! Não precisamos nada mais que essa funçao.    
    
    return 0;
}

 

Calc.h

#ifndef CALC_H
#define CALC_H

class Calc {
    public:
        Calc(){}
        ~Calc(){}
        void run();
        int  menu();
        
        // posiveis operacoes de uma calculadora
        void soma(){
            cout << "Fazer aqui operaçoes de soma" << endl;
        }
        void subtrair(){
        cout << "Fazer aqui operaçoes de subtracao" << endl;
        }
    private:
    
};


#endif // CALC_H

 

Clac.cpp

#include <iostream>
using namespace std;
#include "Calc.h"

int Calc::menu() {
    cout<< "Escolha uma opcao.  " 
        << endl << "1) Somar.   " 
        << endl << "2) Subtrair." 
        << endl << "0) Sair.    " 
    << endl;
    int op;
    cin >> op;
    cin.sync(); //evita erros com buffer e strings ou chars
    return op; //<- essa é o valor que o switch vai tomar
}

void Calc::run() {
    bool sair = false;
    while ( !sair ) { //Por enquanto NAO saimos....
        switch ( menu() ) { // menu retorna um int lembra? XD 
            case 1:
                soma();
                break;
                
            case 2:
                subtrair();

            case 0:
                sair = true;
                cout << "Obrigado por usar softNoobs INC >_<." << endl;
                break;    
            default:
                cout << "Operacao inexistente" << endl;
                
        }
    }
}


você precisa fazer tudo dentro da mesma classe em teoria você só precisa arrancar uma só função membro, e se essa função você chama-la dentro do construtor não precisa nem isso.

Tenha claro que uma função não é mais que um conjunto de variáveis e funções que tem como objetivo resolver um problema comum, más não passa de um punhado de variáveis e funções. O objetivo de uma classe é "ofuscar" as variáveis para que não possam ser vistas por funções que estejam fora dessa mesma classe, en teoria si podemos chamar uma variável membro de uma classe desde fora sem ser através de uma função membro desta mesma classe estamos fazendo mal, pois tudo o que estamos fazendo é trabalho dobrado, pois essa variável não diferi muito de uma variável global, mas para isso existem já as variáveis globais, não é preciso usar todo esse mecanismo para isso XD. Com tudo isso o que eu quero deixar claro é que dentro de uma mesma classe você tem variáveis e funções membros, todas elas são visíveis umas a outras, e isso é o que quero demostrar nesse meu exemplo, analise o código, é bem simples, si quiser discutir sobre isso pode me add por skype o aqui mesmo pelo forum. Com seu exemplo de uma calculadora não fica demostrado a utilidade que tem as classes, isso não quer dizer que não seja util, o que quero dizer é que talvez com esse exemplo você não seja capaz de ver a necessidade de uma classe.

Sorte.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...