{joseana, rangel}@dsc.ufcg.edu.br
DSC/CCT/UFCG
Prof.: José Eustáquio Rangel de Queiroz
[email protected]
[email protected]
Carga Horária: 60 horas
Exemplo 01 - Circulo.h (1/1)
{joseana, rangel}@dsc.ufcg.edu.br
DSC/CCT/UFCG
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
// Circulo.h - Definição da classe Circulo
#ifndef Circulo_H
#define Circulo_H
#include <iostream>
class Circulo
{
int coordx;
int coordy;
int raio;
char * cor;
public:
Circulo(); //construtor
Circulo(int x, int y, int r, char *c); //construtor default
Circulo(const Circulo c); //construtor de cópia
~Circulo(); //destrutor
void Listar();
}; // fim da classe Circulo
2
Exemplo 01 - Circulo.cpp (1/2)
{joseana, rangel}@dsc.ufcg.edu.br
DSC/CCT/UFCG
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
// Exemplo de arquivo de código-fonte – Circulo.cpp
// definições das funções-membros para a classe Circulo.
#include <iostream>
using std::cout;
Circulo::Circulo()
{
coordx = 0;
coordy = 0;
raio = 0;
cor = NULL;
};
Circulo::Circulo(int x, int y, int r, char *c)
{
coordx = x;
coordy = y;
raio = r;
cor = new char[strlen(c) +1];
strcpy(cor, c);
};
3
Exemplo 01 - Circulo.cpp (2/2)
{joseana, rangel}@dsc.ufcg.edu.br
DSC/CCT/UFCG
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Circulo::Circulo (const Circulo &c) //construtor de cópia
{
raio = c.raio;
coordx = c.coordx;
coordy = c.coordy;
cor = new char [strlen(c.cor)+1] ;
strcpy(cor, c.cor);
};
Circulo::~Circulo () //destrutor
{
delete [] cor;
};
void Circulo::Listar()
{
cout << “coordenada x = ” << coordx << ‘\n’;
cout << “coordenada y = ” << coordy << ‘\n’;
cout << “raio = ” << raio << ‘\n’;
cout << “cor = ” << cor << ‘\n’;
}; // fim do construtor Horario
4
Exemplo 01 – Programa de Teste da
Classe Circulo (1/1)
{joseana, rangel}@dsc.ufcg.edu.br
DSC/CCT/UFCG
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
// Exemplo de programa de teste da classe Horario
// ATENÇÃO! Este arquivo deverá ser compilado juntamente com
// Circulo.cpp
#include <iostream>
using std::cout;
using std::endl;
// inclusão da definição da classe Circulo de Circulo.h
#include “Circulo.h”
int main()
{
Circulo circ1; // instanciação do objeto circ1 da classe Circulo
Circulo circ2(10, 15, 33, "Azul");
Circulo circ3(circ2);
// listagem dos atributos dos objetos circ1 e circ2
circ1.Listar();
circ2.Listar();
circ3.Listar();
} // fim do main
5
Lembretes I
DSC/CCT/UFCG
 Passagem
de Parâmetros
 Valor


{joseana, rangel}@dsc.ufcg.edu.br

Construtor de cópia do tipo de dados do
parâmetro formal sempre é executado
Destrutor do tipo de dados do parâmetro
formal libera o espaço utilizado
Exemplo
void circulo::TestarCoord1(float x)
{
x = 5.96;
coordx = x;
};
6
Lembretes II
DSC/CCT/UFCG
 Passagem
de Parâmetros
 Referência


{joseana, rangel}@dsc.ufcg.edu.br


Os parâmetros atuais são associados aos
parâmetros formais
Não existe cópia dos parâmetros
Nomes dos parâmetros formais substituem
os nomes dos parâmetros atuais
Exemplo
void circulo::TestarCoord2(float& x)
{
x = 7.19;
coordx = x;
};
7
Lembretes III
DSC/CCT/UFCG
 Passagem
de Parâmetros
{joseana, rangel}@dsc.ufcg.edu.br
 Referência Constante

Parâmetros formais substituem parâmetros
atuais, não se admite alteração de valor

Exemplo
void circulo::TestarCoord3(const float& x)
{
x = 1.89;
coordx = x;
};
8
Lembretes I
DSC/CCT/UFCG

Passagem de Parâmetros
 Valor

Construtor de cópia do tipo de dados do parâmetro formal
sempre é executado

Destrutor do tipo de dados do parâmetro formal libera
o espaço utilizado
{joseana, rangel}@dsc.ufcg.edu.br
 Referência
 Referência Constante
 Nota: Se não pretendemos alterar o valor do parâmetro actual
usamos uma passagem por valor no caso de tipos de
dados primitivos, no caso de outros tipos de dados deverse-á usar referência constante.
9
DSC/CCT/UFCG
Joseana Macêdo Fechine
José Eustáquio Rangel de Queiroz
{joseana, rangel}@dsc.ufcg.edu.br
{joseana, rangel}@dsc.ufcg.edu.br
UNIVERSIDADE FEDERAL DE CAMPINA GRANDE
CENTRO DE CIÊNCIAS E TECNOLOGIA
DEPARTAMENTO DE SISTEMAS E
COMPUTAÇÃO
Download

TP_NA04B - Computação UFCG