Escolar Documentos
Profissional Documentos
Cultura Documentos
import java.util.*;
Exercícios:
1. Construir um programa orientado a objetos para armazenar e calcular Icq.
a. Declarar uma classe com o nome Icq capaz de armazenar os dados: Número do cartão de cidadão,
nome, perímetro de cintura (inteiro), perímetro do quadril (int) e sexo(String). A ficha pode ser
preenchida de 2 formas: todos os campos ou apenas os campos de perímetro de cintura e perímetro
de quadril.
b. Declarar uma classe com os construtores:
i. Icq_exc(cod_erro) para devolver um código de erro, número inteiro no caso de situações de
exceção em objetos do tipo Icq.
ii. Icq_exc(cod_erro), mensagem) para devolver um código de erro e uma mensagem no caso
de situações de exceção em objetos do tipo Icq.
c. Completar a definição na alínea a) para lançar exceções do tipo Icq_exc com código de erro ou
código de erro e mensagem no caso de dados inválidos para a ficha de Icq.
2. Criar uma classe com o nome Contacto para armazenar um nome, um número de telefone e o email.
a. Declarar construtores que criem um contacto no caso dos seguintes dados:
i. Nome, tel e email.
ii. Nome e tel
iii. Nome e email
b. De modo idêntico ao exercício anterior declarar uma classe Contacto_exc para representar situações
de exceção relativas a contactos.
3. Criar uma classe com o nome Aluno capaz de registar os seguintes dados: nome:texto, sexo: inteiro ( 0 –
masculino, 1 – feminino) , data_nascimento: data e morada_atual: texto.
a. Criar um método com o nome Idade(data_ref) que calcule a idade na data de data_ref.
b. Criar um método com o nome Idade() que calcule a idade em relação à data actual.
4. Uma classe com o nome Eq2grau capaz de representar uma equação do 2º grau ax2+bx+c=0.
a. Criar o métodos tem_solucoes() -> booleano que devolve verdadeiro ou falso conforma a equação
tem soluções ou não.
b. Criar o método soluções() -> Double[2] com as soluções da equação. Se a equação não tiver soluções
deve devolver NaN ou lançar uma exceção. No caso de ser lançada uma exceção escolher entre as
alternativas de usar uma das exceções pré-definidas no sistema ou criar a exceção Eq2grau_exc.
5. Criar uma classe com o nome ponto capaz de guardar as coordenadas (x,y).
Definir um construtor de pontos que apenas crie pontos a partir de 2 números reais que representam as
coordenadas de um ponto.
Definir um construtor de pontos que crie um ponto a partir de outro ponto, i.e., crie um novo ponto com
os valores das coordenadas do ponto inicial.
Definir um método com o nome distância que receba como argumento um ponto e calcule a distância
deste ponto até esse ponto.
Tornar os dados internos da classe (Lat e Lng) privados e definir os métodos necessários para processar
esses dados.
6. Definir uma classe com o nome Triangulo capaz de armazenar um triângulo recorrendo a 3 pontos.
Definir um método com o nome E_triangulo que indique se aqueles 3 pontos formam um triângulo
válido.
Definir um método com o nome perímetro que calcule o perímetro do triangulo.
Definir um método com o nome área que calcule a área do triângulo. Ver o exercício 19 da ficha 1.
Definir um método com o nome classifica_triangulo que devolva como resultado o texto “Equilátero”,
“Isósceles” ou “Escaleno” conforme o triângulo for equilátero, Isósceles ou escaleno.
7. Resolver o exercício 4 – Correlações da FT4 – vetores e matrizes com programação orientada a objetos.
a. Utilizando a linguagem UML especificar a classe Correlação: atributos, construtores e métodos.
b. Construir um programa para testar o funcionamento da classe:
i. Construr/usar uma função ler_matriz_correlação que devolva uma matriz de dimensão
[2,n] com as n amostras da correlação.
8. Definir uma classe com o nome jogoGalo capaz de armazenar um tabuleiro de 3 x 3 inteiros para o jogo do
Galo. Cada célula pode conter um valor: 0=vazia, 1= jogador 1 e 2=jogador 2.
a. Declarar o construtor para criar a matriz e inicializar as células a zero.
b. Construir um método com o nome limpa_tabuleiro que coloque todas as células a 0, para indicar
vazio.
c. Construir um método com o nome jogada(linha,coluna,jogador) que coloque na célula indicada por
linha, coluna o valor indicado em jogador (1 ou 2).
d. Construir um método com o nome vitoria que devolva como resultado um dos seguintes números
conforme a situação:
0 – empate, ie, nenhum jogador ganhou e o tabuleiro está cheio.
1 – ganhou o jogador 1.
2 – ganhou o jogador 2.
3 – ainda nenhum ganhou mas o jogo ainda decorre, ie, há células livres.
9. Definir uma classe com o nome LocalizacaoGPS para armazenar uma localização fornecida por um sensor
GPS constituída por:
a. Latitude (Lat): um número real com 7 ou 8 casas decimais de precisão.
b. Longitude (Lng): um número real com 7 ou 8 casas decimais de precisão.
c. DataHora: uma data (DD-MM-AAAA) e hora (HH:MM:SS) correspondente à data e hora da leitura
da latitude e longitude.
10. Definir uma classe com o nome Pergunta, para que permita criar perguntas para um questionário de escolha
múltipla. Conforme forem sendo resolvidas as alíneas, construir um mapa uml da classe pergunta.
Uma pergunta é constituída por:
id, um identificador (inteiro) único para a pergunta
Questão (texto) que contém o texto da pergunta a colocarão utilizador.
Opcao A, opcaoB, opcaoC e opcaoD (textos) que constituem as escolhas múltiplas a mostrar ao
utilizador. Não é obrigatório a questão ter 4 opções. A questão pode ter de 2 a 4 opções. Se, por
exemplo, só tiver 2 opções as opções opcaoc e opcaod devem ficar a null.
Resposta_correta, um inteiro de 1 a 4 que indica qual a opção correta.
a. Declarar a classe.
b. Declarar um método de classe com o nome Contador_perguntas que indique quantas perguntas foram
criadas até ao momento.
c. Declarar construtores de Pergunta que permitam criar perguntas com 2 a 4 opções. O construtor deve
validar que o número da resposta correta é valido naquela pergunta, por exemplo, um pergunta com
2 opções não pode ter como resposta_correta 3. Lançar exceções especificas do tipo
Pergunta_Exc() em caso de exceções em perguntas.
d. Construir o método ToString() que crie um texto com os dados da pergunta.
11. Declarar uma classe com o nome perguntas capaz de armazenar um conjunto de perguntas. Para armazenar
as perguntas utilizar um array. Construir um programa de opções, com uma opção para cada método que for
sendo criado.
a. Declarar o método construtor de Perguntas(), que inicialmente deve criar um array de perguntas de
tamanho 0.
b. Construir o método Count() que devolve um inteiro a indicar quantas perguntas existem no array de
perguntas.
c. Construir o método ToString() que gere um texto com a lista de perguntas existentes no array.
e. Construir o método get_pergunta( id) que devolve como resposta a pergunta com o identificador id
do array de perguntas. Se a pergunta não existir no vetor devolver uma exceção do tipo
Perguntas_Exc().
12. Utilizando a fig.1 exemplificativa da notação uml construir um programa java com um conjunto de opções
que permitam registar cursos, módulos, alunos e inscrições conforme descrito na fig.
a. Declarar as classes necessárias para a representação da informação descrita.
b. Efetuar uma lista das operações que o programa deve permitir realizar, tais como registar alunos,
módulos, cursos, inscrições ou módulos concluídos.
c. No programa principal construir uma interface por menus e opções numeradas para cada uma das
operações de cada classe.
13. Criar uma classe para representar o registo de um livro com os seguintes atributos:
Número de registo – indica o número de registo de entrada.
ISBN – número internacional de conteúdo de livro.
Titulo
a. Declarar uma variável de classe com o nome ContadorRegistos, inicialmente a 0. Este contador é
incrementado sempre que é criado um novo registo.
b. Construir uma função de classe com o nome dados_validos que receba um Isbn, um titulo e um autor e
devolva um booleano V/F a indicar se os dados formam um registo válido.
c. Declarar um construtor Livro(ISBN, titulo, Autor ) com Isbn >0 e autor≠ ””, titulo≠””.
d. Criar uma classe de exceção com o nome Livro_exc que além de um texto de erro possa ter um código
inteiro de erro. Alterar o construtor anterior para devolver uma exceção deste tipo se os dados não forem
válidos para o registo.
e. Redefinir o método toString para listar o conteúdo do registo do livro.
f. Redefinir o método Equals que devolva V/F respetivamente se 2 livros tiverem ISBN iguais ou não.
g. Redefinir o método HashCode() para devolver o nregisto do livro.