AEMGA Ficha de Trabalho 1 Módulo 10 · PDF fileClasses e Classes Derivadas...
Click here to load reader
Transcript of AEMGA Ficha de Trabalho 1 Módulo 10 · PDF fileClasses e Classes Derivadas...
Classes e Classes Derivadas
Exercício 1. Crie um programa que implemente a classe sequencia.
A classe sequencia é composta por um atributo privado lim e por um conjunto de funções-
membro publicas com o objectivo de gerarem sequências de números:
dobro()
triplo()
quadrado()
Deverá conter um construtor da classe cujo único parâmetro é lim.
Por exemplo, com lim=10 a série dobro() gerará a sequencia de 10 números:
0 2 4 6 8 10 12 14 16 18
Proposta de resolução
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
class sequencias
{
private:
int lim;
public:
sequencias(int l) { lim=l;}
void dobro() { for(int i=0; i<lim; i++)
cout<<2*i<<' '; }
void triplo() { for(int i=0; i<lim; i++)
cout<<3*i<<' '; }
void quadrado() { for(int i=0; i<lim; i++)
cout<<i*i<<' '; }
};
int main()
{
sequencias s1(20);
s1.dobro();
cout<<endl;
Ficha de Trabalho 1 – Módulo 10
Disciplina: Programação e Sistemas de Informação – 12.º GPSI
Curso Profissional Técnico de Gestão e Programação de Sistemas Informáticos
Ano Letivo 2015/2016
AEMGA
s1.triplo();
cout<<endl;
s1.quadrado();
cout<<endl;
getch();
return 0;
}
Exercício 2. Crie um programa que implemente a classe data e a classe pessoa
A classe data é composta por três atributos do tipo inteiro, dia, mês e ano.
Deve conter um construtor para esta classe.
A classe pessoa é uma classe derivada da classe data que é composta pelo atributo bi,
sendo este o número do bilhete de identidade da pessoa.
Deve conter um construtor que permita criar uma nova pessoa com o respectivo bi e data
de nascimento.
Proposta de resolução
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
class data
{
private:
int dia;
int mes;
int ano;
public:
data(int d, int m, int a) {dia=d; mes=m; ano=a;}
void mostrar();
};
class pessoa : public data
{
private:
int bi;
public:
pessoa(int b, int d, int m, int a) : data(d,m,a) { bi=b;}
void mostrar();
};
void pessoa::mostrar() //redefinir métodos na classe derivada
{
data::mostrar();
cout << "BI:"<<bi<<endl;
};
void data::mostrar()
{
cout << "Dia_nasc:"<<dia<<endl;
cout << "Mes_nasc:"<<mes<<endl;
cout << "Ano_nasc:"<<ano<<endl;
};
int main()
{
int b,d,m,a;
cout<<"Qual o n de BI?";
cin>>b;
cout<<"Data de nascimento\n";
cout<<"Dia:";
cin>>d;
cout<<"Mes:";
cin>>m;
cout<<"Ano:";
cin>>a;
pessoa p1(b,d,m,a); //criação de objetos da classe pessoa
pessoa p2(345532,20,2,2000);
p1.mostrar();
p2.mostrar();
getch();
return 0;
}
Exercício 3. Escreva um programa que implemente a classe Círculo e a sua classe derivada
Cilindro. Desenvolva os construtores e funções-membro que julgar úteis para esta classe.
Proposta de resolução
#include <iostream>
#include <conio.h>
#define PI 3.14159
using namespace std;
class circulo
{
private:
float raio;
public:
circulo(float r) {raio=r;}
float getraio() {return raio;}
float getarea() {return PI*raio*raio;}
};
class cilindro : public circulo {
private:
float altura;
public:
cilindro(float a, float r) : circulo(r) {altura=a;}
float getaltura() {return altura;}
float volume(); //função definida fora da classe
};
float cilindro::volume() {return getaltura()*getarea();}
int main()
{
cilindro cil_1(4,3);
cilindro cil_2(10,10);
cout<<"Volume do cilindro 1: "<<cil_1.volume()<<endl;
cout<<"Volume do cilindro 2: "<<cil_2.volume()<<endl;
getch();
return 0;
}