Jump to content
Fórum Script Brasil
  • 0

[ajuda]classes


Iod

Question

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

Edited by Iod
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...