/* Segundo exemplo de como utilizar construtores para classes */
#include <iostream>
using namespace std;
/* Classe que representa retangulos */
class retangulo
{
/* Variaveis privadas para representar largura,
comprimento, area e perimetro do retangulo */
float larg, comp, area, perim;
public:
/* Contrutor da classe \'retangulo\', chamado somente na
declaracao de um objeto do tipo \'retangulo\'. Qualquer chamada
dessa funcao no resto do codigo ira gerar um erro de compilacao
(nao sera gerado um arquivo executavel) */
retangulo(float L, float C);
/* Outro contrutor da classe \'retangulo\', chamado somente na
declaracao de um objeto do tipo \'retangulo\'. Qualquer chamada
dessa funcao no resto do codigo ira gerar um erro de compilacao
(nao sera gerado um arquivo executavel) */
retangulo();
/* Funcao para definir os valores de \'larg\', \'comp\', \'area\' e \'perim\',
de acordo com os valores de entrada \'L\' (para a largura) e \'C\'
(para o comprimento do retangulo)*/
void define_ret(float L, float C);
/* Funcao para escrever os valores de \'larg\', \'comp\',
\'area\' e \'perim\' na tela */
void escreve_tela();
};
/* Definicao do construtor da classe \'retangulo\'
Construtores devem ter o mesmo nome da classe,
e nao retornam nenhum valor */
retangulo::retangulo(float L, float C)
{
/* \'larg\' recebe o valor de \'L\', que eh a primeira variavel de entrada */
larg = L;
/* \'comp\' recebe o valor de \'C\', que eh a segunda variavel de entrada */
comp = C;
/* Formula da area do retangulo */
area = larg * comp;
/* Formula do perimetro do retangulo */
perim = 2 * (larg + comp);
}
/* Definicao de outro construtor da classe \'retangulo\'
Este construtor serĀ· chamado quando um objeto da classe
\'retangulo\' for declarado sem nenhum valor de entrada,
Nesse caso, vamos definir \'larg\', \'comp\', \'area\' e \'perim\'
iguais a zero. Construtores devem ter o mesmo nome da classe,
e nao retornam nenhum valor */
retangulo::retangulo()
{
larg = comp = area = perim = 0;
}
/* Definicao da funcao que define os valores de \'larg\', \'comp\',
\'area\' e \'perim\', de acordo com os valores de entrada \'L\'
(para a largura) e \'C\' (para o comprimento do retangulo)*/
void retangulo::define_ret(float L, float C)
{
/* \'larg\' recebe o valor de \'L\', que eh a primeira variavel de entrada */
larg = L;
/* \'comp\' recebe o valor de \'C\', que eh a segunda variavel de entrada */
comp = C;
/* Formula da area do retangulo */
area = larg * comp;
/* Formula do perimetro do retangulo */
perim = 2 * (larg + comp);
}
/* Definicao da funcao que escreve os valores de
\'larg\', \'comp\', \'area\' e \'perim\' na tela */
void retangulo::escreve_tela()
{
cout << "---------------------------------" << endl;
cout << "Largura = " << larg << endl;
cout << "Comprimento = " << comp << endl;
cout << "Area = " << area << endl;
cout << "Perimetro = " << perim << endl;
cout << "---------------------------------" << endl;
}
int main()
{
/* Criacao de um objeto da classe \'retangulo\'
Os valores entre parenteses serao assinalados
para as variaveis \'L\' e \'C\' no primeiro construtor da classe */
retangulo r1(2.0, 3.4);
/* Criacao de outro objeto da classe \'retangulo\'
Como nao ha nenhum valor de entrada, sera chamado o segundo
construtor, \'retangulo()\' */
retangulo r2;
/*Chamada da funcao que escreve os valores de
\'larg\', \'comp\', \'area\' e \'perim\' na tela. Como \'r2\'
foi declarado pelo segundo construtor, todas as suas
variaveis devem estar iguais a zero. */
cout << "---------------------------------" << endl;
cout << "r2 no inicio do codigo:\\n";
r2.escreve_tela();
/*Chamada da funcao que define os valores de
\'larg\', \'comp\', \'area\' e \'perim\' para \'r2\'. */
r2.define_ret(10, 20);
/*Chamada da funcao que escreve os valores de
\'larg\', \'comp\', \'area\' e \'perim\' na tela. Agora, \'r2\'
tera valores novos definidos para as suas variaveis */
cout << "r2 atualizado:\\n";
r2.escreve_tela();
/*Chamada da funcao que escreve para \'r1\' os valores de
\'larg\', \'comp\', \'area\' e \'perim\' na tela */
cout << "r1:\\n";
r1.escreve_tela();
/* Fim do codigo */
return 0;
}