Portal Chamar Táxi

Classes Introdução

Serr@no™

GF Ouro
Membro Inactivo
Entrou
Set 23, 2006
Mensagens
1,690
Gostos Recebidos
0
Até agora tudo o que vimos, também estava incluido no C (com outros métodos), as classes são o que distingue verdadeiramente o C do C+. São as classes que fazem do C+ uma linguagem orientada a objectos.
Um outro nome para classe, é objecto. E é para isso que as classes servem, para simular objectos. Imaginemos uma cadeira, em C++ seria uma classe, com diversos atributos, como a cor, peso, material... E como objecto totalmente manipulado pelo programador, a qualquer hora poderiamos mudar a cor da cadeira, ou qualquer outro atributo.
Para introduzir as classes, vamos começar por simular a tal cadeira de que tenho falado, eu sei que é um exemplo demasiado simples, mas é sobretudo para mostrar as bases das classes que o faço.
#ifndef _TUT_CADEIRA_H_
#define _TUT_CADEIRA_H_


// para a cor das cadeiras
enum Cor { BRANCO, PRETO };


class Cadeira {


private:
// atributos privados
unsigned altura, peso;
Cor cor;


public:
// metodos publicos
Cadeira( unsigned a, unsigned p, Cor c )
{ altura=a; peso=p; cor=c; }


// metodos para alterar os atributos do objecto
void mudarPeso( unsigned p ) { peso=p; }
void mudarAltura( unsigned a ) { altura=a; }
void mudarCor( Cor c ) { cor=c; }


// metodos para saber os atributos do objecto
unsigned retornarAltura() { return altura; }
unsigned retornarPeso() { return peso; }
Cor retornarCor() { return cor; }


}; // nunca esquecer deste ;


#endif // _TUT_CADEIRA_H_
Por norma, uma classe fica sempre alojada num ficheiro de cabeçalho(.h), esta classe estaria no ficheiro Cadeira.h
Comecemos pelas duas primeiras linhas, imaginemos que tinhamos chamado o ficheiro Cadeira.h em dois sítios, o que aconteceria é que a classe cadeira seria definida duas vezes, dando erro ao compilar. Em todos os ficheiros de cabeçalho se têm de por aquelas duas linhas e no fim acabar com o #endif.
Dentro da classe cadeira econtramos os atributos depois da palavra private. Todos os atributos ou métodos que sejam privados só podem ser acedidos pela classe em questão, ficando inacessíveis ao exterior. Por outro lado, os métodos ou atributos públicos (public), podem ser acedidos pelo exterior.
Uma classe tem de ter sempre um construtor, um método com o mesmo nome da classe, onde o programador inicializa o que achar necessário. Cada classe também possui um destrutor, que é chamado quando o objecto é eliminado. Nesta classe cadeira o destrutor não é necessário, mas se usássemos variáveis dinamicas, seria no destrutor que teriamos oportunidade de libertar essa memória.
Todos os métodos da classe Cadeira estão definidos inline, mas poderiam estar num outro ficheiro. No próximo capítulo veremos esses aspectos.
O seguinte exemplo mostra como se poderia usar a classe cadeira:
#include <iostream>
using namespace std;
// demonstração do uso da class Cadeira


// incluir o ficheiro onde se encontra a classe cadeira
#include "Cadeira.h"


int main()
{
// criado um objecto cadeira
Cadeira cadeira ( 10, 20, BRANCO );


// a seguinte linha daria erro
// cout<< cadeira.peso
// isto porque não se pode aceder aos métodos privados


cout<< cadeira.retornarPeso() <<endl;


cadeira.mudarPeso( 30 );


cout<< cadeira.retornarPeso() <<endl;


cout<<endl;
cin.get();
return 0;
}
O ficheiro "Cadeira.h" está entre aspas e não entre <> porque só os ficheiros standard do C++ é que devem/podem estar entre <>. Todos os fcheiros criados pelo programador estão entre aspas.
A matéria que envolve as classes é muito extensa, como referi na introdução, apenas irei expor simples tópicos, porque não tenho assim tanto tempo para a elaboração deste Tutorial.. (nem paciência
regular_smile.gif
. Para quem queira aprofundar mais o conhecimento, vá à secção bibliografia e veja os livros que aconselho, ou os links que lá estão, que contêm muita informação e tuturiais sobre C/C++.
 
Topo