{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