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

[ajuda]classes


Iod

Pergunta

ola começei a aprender classes hoje por meio de uma apostila, mais o codigo da classe e muito trabalhoso e

não faz quase nada a principio existem exemplos nessa apostila que tem 100 linhas e fazem a mesma coisa que uma

estrutura faria em 10, não sei se o intuito da apostila e entroduzir as classes de forma trabalhosa para entender melhor

todo o seu conteudo ou se classes são uma dor de cabeça mesmo. se alguém conheser alguma apostila,livro ou tutorial

que ensine classes de forma descomplicada ou ate mesmo me dizer qual e o real sentido das classes eu agradeço

// ConstMt.cpp
// Ilustra o uso
// de métodos const.
#include <iostream.h>
// Define uma classe.
class Cliente
{
// Por default, estes membros
// são
//private:
int numCliente;
float saldo;
// Estes métodos
// são private e const.
int acessaNumCliente() const;
float acessaSaldo() const;
public:
// Construtor default.
Cliente();
// Outro construtor.
Cliente(int, float);
// Destrutor.
~Cliente();
// Métodos public.
void exibe() const;
void defineNumCliente(int);
void defineSaldo(float);
}; // Fim de class Cliente.
int main()
{
// Cria um objeto
// da classe cliente
// sem definir valores.
Cliente objCliente1;
// Cria um objeto
// da classe cliente
// inicializado.
Cliente objCliente2(572, 777.77);
// Exibe valores.
cout << "\n*** Valores p/ objcliente1 ***";
objCliente1.exibe();
cout << "\n*** Valores p/ objcliente2 ***";
objCliente2.exibe();
// Modifica valores.
cout << "\nModificando valores...\n";
objCliente1.defineNumCliente(1000);
objCliente1.defineSaldo(300.00);
objCliente2.defineNumCliente(2000);
objCliente2.defineSaldo(700.00);
// Exibe novos valores.
cout << "\n*** Novos valores p/ objcliente1 ***";
objCliente1.exibe();
cout << "\n*** Novos valores p/ objcliente2 ***";
objCliente2.exibe();
} // Fim de main()
// Implementação dos métodos.
// Construtores.
Cliente::Cliente()
{
numCliente = 0;
saldo = 0.0;
} // Fim de Cliente::Cliente()
Cliente::Cliente(int i, float f)
{
numCliente = i;
saldo = f;
} // Fim de Cliente::Cliente(int, float)
// Destrutor.
Cliente::~Cliente()
{
cout << "\nDestruindo cliente...";
} // Fim de Cliente::~Cliente()
int Cliente::acessaNumCliente() const
{
return numCliente;
} // Fim de Cliente::acessaNumCliente()
float Cliente::acessaSaldo() const
{
return saldo;
} // Fim de Cliente::acessaSaldo()
void Cliente::exibe() const
{
cout << "\nCliente = "
<< acessaNumCliente()
<< ", Saldo = "
<< acessaSaldo()
<< "\n";
} // Fim de Cliente::exibe()
void Cliente::defineNumCliente(int iVal)
{
numCliente = iVal;
} // Fim de Cliente::defineNumCliente()
void Cliente::defineSaldo(float fVal)
{
saldo = fVal;
} // Fim de Cliente::defineSaldo()

a unica funçao desse codigo e atribuir valores a uma variavel int e um float

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

1 resposta a esta questão

Posts Recomendados

  • 0

Olá!

Realmente este código está confuso para ser apenas a introdução a classes. E concordo que é muito mais do que seria feito com uma estrutura simples!

Porém nesse código já se vê conceitos importantes:

1) Construtores: funções que são chamadas quando se instancia um objeto da classe, dando a oportunidade de se controlar a inicialização como valores iniciais de variáveis, etapas adicionais como carregamento de uma dll, por exemplo

2) Proteção no acesso aos dados: diferentemente do que acontece em uma estrutura, existe a proteção quanto ao acesso dos dados (através do private e protected). Assim você consegue garantir a integridade dos valores carregados nas variáveis, tornando o programa mais seguro quanto a erros de programação, por exemplo.

3) Destrutores: sempre que uma instância for destruída é possível executar uma função sua onde você pode, por exemplo, desalocar áreas de memória, notifica outras partes do programa, etc. Assim não depende do programador a realização de certas tarefas que podem ser eventualmente esquecidas, afetando a qualidade do programa.

Além disso ainda existem muitas e muitas outras características na programação orientada a objetos como herança, polimorfismo, etc...

Segue abaixo um exemplo mais simples:

#include <stdio.h>

class Pessoa {
    private:
        char nome[100];
        int    idade;

    public:
        void carregar(char *novo_nome, int nova_idade) { strcpy(nome, novo_nome); idade = nova_idade; }
        void exibir(void) { printf("Eu sou %s e tenho %d anos.\n", nome, idade); }
};

int main(void)
{
    Pessoa p;

    p.carregar("Fulano", 20);
    p.exibir();

    return 0;
}

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...