Buscar

[Prof. Emiliana] Aula Prática 3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E BIOLÓGICAS 
DEPARTAMENTO DE COMPUTAÇÃO 
BCC702 – PROGRAMAÇÃO DE COMPUTADORES II 
 
3a Aula prática de BCC702 – Programação Orientada a Objetos 
Classes - Construtores e métodos get e set. 
 
O construtor é um método especial de uma classe que permite a inicialização dos 
atributos de um objeto da classe. Ele possui as seguintes propriedades: 
 
� Tem o mesmo nome da classe; 
� Não tem valor de retorno, nem mesmo void; 
� Pode ter vários parâmetros; 
� Uma classe pode ter vários construtores que se diferem pela lista de parâmetros. 
 
A seguir é apresentada a classe Ponto da aula prática 4. Foram adicionados métodos 
construtores à classe. 
 
Exemplo da interface para a classe Ponto: 
 
#include <iostream> 
using namespace std; 
 
class Ponto{ 
 private: 
 int x; 
 int y; 
 
 public: 
 
 //Construtor: inicializa x e y com o valor 0 
 Ponto(); 
 
 //Construtor: inicializa x com o valor px e y com o valor py 
 Ponto(int px, int py); 
 
 //Construtor: inicializa x e y com o valor p 
 Ponto(int p); 
 
 void setCoordenadas(int px, int py); 
 void imprimirCoordenadas(); 
}; 
Ponto.h 
 
 
Exemplo de implementação da classe Ponto: 
 
#include "Ponto.h" 
 
Ponto::Ponto(){ 
 
 setCoordenadas(0, 0); 
 
} 
 2 
 
Ponto::Ponto(int px, int py){ 
 
 setCoordenadas(px, py); 
 
} 
 
Ponto::Ponto(int p){ 
 
 setCoordenadas(p, p); 
 
} 
 
void Ponto::setCoordenadas(int px, int py){ 
 
 x = px; 
 y = py; 
 
} 
 
void Ponto::imprimirCoordenadas(){ 
 
 cout << "Coordenadas do ponto(x, y): (" << x << ", " << y << ")"; 
 cout << endl; 
 
} 
Ponto.cpp 
 
 
Agora vamos utilizar a classe Ponto no programa principal. 
 
#include "Ponto.h" 
 
int main(){ 
 
 Ponto p1; 
 Ponto p2(1, 2); 
 Ponto p3(5); 
 
 p1.imprimirCoordenadas(); 
 p2.imprimirCoordenadas(); 
 p3.imprimirCoordenadas(); 
 
 system("pause"); 
 return 0; 
 
} 
<<saída>> 
 
Coordenadas do ponto(x,y): (0, 0) 
Coordenadas do ponto(x,y): (1, 2) 
Coordenadas do ponto(x,y): (5, 5) 
 
Métodos get e set são usados para acessar e modificar dados encapsulados da classe 
indiretamente. 
 
� get (obter o valor de): Serve para se ter acesso aos atributos encapsulados de 
uma classe; 
 3 
 
� set (atribuir valor a): Útil para permitir a modificação dos atributos da classe 
encapsulados; 
 
 
Exercícios 
 
1. Implemente a classe Intervalo que corresponde a um intervalo real fechado. Esta 
classe terá: 
 
� Os atributos esq e dir que correspondem aos limites, respectivamente, inferior e 
superior do intervalo; 
 
� Método construtor que inicializa esq e dir com o valor zero; 
 
� Método set para redefinir um intervalo (especificar novos valores para esq e 
dir); 
 
� Métodos gets para retornar os valores das variáveis esq e dir; 
 
� Método para imprimir os limites do intervalo (esq e dir); 
 
� Método para verificar se um dado valor passado como parâmetro está ou não no 
intervalo, retornando true se estiver e false caso contrário; 
 
 
 
Definição de um intervalo real fechado 
 
 
2. Teste a classe Intervalo implementada. Para tanto siga os seguintes passos: 
 
a) Crie um objeto do tipo Intervalo; 
b) Imprima os limites deste intervalo criado; 
c) Verifique se o valor “2.0” está no intervalo e imprima uma mensagem 
correspondente; 
d) Especifique novos limites para o intervalo. O intervalo será [-5, 5]. 
e) Verifique se o valor “3.6” está no intervalo e imprima uma mensagem 
correspondente; 
f) Verifique se o valor “-5.6” está no intervalo e imprima uma mensagem 
correspondente; 
g) Imprima os limites deste intervalo; 
h) Especifique novos limites para o intervalo. Para tanto, subtraia o valor três do 
limite inferior atual e some dois ao limite superior atual; 
i) Imprima os limites deste intervalo; 
esq dir 
}dirxesq/x{]dir,esq[ ≤≤ℜ∈=
 4 
 
3. Modifique a classe Intervalo criando dois novos métodos construtores: 1- 
Construtor que recebe dois valores como parâmetro (um para inicializar esq e outro 
para inicializar dir); 2- Construtor que recebe como parâmetro um único valor que 
inicializará tanto esq quanto dir. Faça testes criando objetos do tipo Intervalo 
utilizando os três construtores da classe e imprima os seus limites. 
 
4. Modifique a classe Intervalo criando métodos para aumentar o tamanho do 
intervalo: 1- Método que utiliza um mesmo valor (passado como parâmetro) para 
decrementar esq e incrementar dir; 2- Método que especifica valores distintos para 
decrementar esq e incrementar dir. Teste as modificações realizadas. 
 
5. Modifique a classe Intervalo de tal forma que seja evitada a definição de intervalos 
inválidos (esq > dir). Teste as modificações realizadas.

Outros materiais