Exercicios de Revisão de POO
Exercicios de Revisão de POO
Exercicios de Revisão de POO
( ) Quando a visibilidade de um membro da classe não está explícita, isto significa que ele é visível e acessível
por todas as classes de todos os pacotes da aplicação.
( ) Set é um método de acesso a partir do qual um determinado valor pode ser inserido em um determinado
atributo de um objeto.
( ) O encapsulamento é um princípio da Orientação a Objetos que visa garantir que o relacionamento entre
objetos ocorra exclusivamente a partir de suas interfaces.
( ) Os membros de uma classe só podem ser referenciados através de uma instância da referida classe ou
através da própria classe.
( ) A Orientação a Objetos trata-se de um paradigma na forma de pensar, modelar e implementar software
através da simulação de objetos do mundo real.
( ) Get é um método de classe que retorna o valor de um determinado atributo de um objeto.
( ) Uma Classe é uma representação de um tipo abstrato de dados, podendo ser equivalentemente comparada
a um registro em programação estruturada.
( ) Uma operação trata-se da descrição detalhada, isto é, o algoritmo de cada função desempenhada pelo
objeto; ao passo que um método corresponde à assinatura da referida operação.
( ) As variáveis de instância de uma classe não podem ser diretamente referenciadas pelo nome dentro dos
métodos que compõem a referida classe.
( ) Quando um objeto necessita de alguma funcionalidade de outro, deve enviar-lhe uma mensagem que, por
sua vez, nada mais é do que a chamada de uma operação.
2. Relacione os itens abaixo com os conceitos (1) This, (2) Super e (3) Polimorfismo:
( ) Mecanismo utilizado para se fazer referência à superclasse de um objeto visando execução de um método.
( ) Uma mesma mensagem pode ser interpretada de forma diferente por diferentes objetos.
( ) Conceito bastante utilizado em programação orientada a objeto para indicar o objeto de referência.
( ) Uma mesma mensagem é enviada a diferentes objetos que ao receberem esta mensagem podem
responder de forma diferente à mesma mensagem.
( ) É utilizado sempre que é necessário fazer referência à super classe ou aos seus respectivos membros.
( ) Torna a programação mais clara.
( ) Um mesmo método pode ser implementado de diversas formas em classes diferentes.
( ) É utilizado para se ter acesso aos atributos e métodos do objeto de referência ou ao próprio objeto.
( ) Evita conflitos entre variáveis locais e atributos do objeto de referência.
( ) A interpretação de uma mensagem é da responsabilidade do objeto que a recebe.
public class Pessoa a) A classe Pessoa deve ser obrigatoriamente uma classe
{ public abstract void getNome(); } abstrata
public class Aluno extends Pessoa b) A classe Aluno deve ter obrigatoriamente um atributo nome
{ public void getNome() c) A instância de Aluno não pode ser atribuída à variável do tipo
{ System.out.println(“O nome é Maria”); } Pessoa
public static void main() d) A classe Aluno não pode ser subclasse da classe Pessoa
{ Pessoa p = new Aluno();
p.getNome();
}
}
<abstract> met_1( )
E B C D F
9. Modele e implemente a classe Círculo com seu(s) respectivo(s) atributo(s), os métodos de acesso e os métodos
calcularArea(), calcularPerimetro() e calcularDiametro(). Defina a visibilidade de todos os membros da classe.
Crie a classe GuiCirculo e dentro do seu método main(), instancie a classe Círculo, solicitando ao usuário que
informe o(s) valor(es) do(s) respectivo(s) atributo(s) através do método showInputDialog() de JOptionPane. Depois
faça chamada a todos os métodos da classe Círculo, mostrando os resultados produzidos por cada um deles na tela
através do método showMessageDialog( ) de JOptionPane. Modele o objeto Círculo criado.
10. Implemente em Java uma superclasse abstrata chamada Polígono contendo os métodos abstratos calcularArea() e
calcularPerimetro(). Implemente as subclasses Retângulo, Triângulo e Quadrado. Implemente os métodos
abstratos dentro de cada uma das subclasses. Além dos métodos herdados, a subclasse Retângulo também deve
conter o método calcularDiagonal(). ATENÇÃO: implemente os métodos de acesso SET e GET para cada atributo
de cada classe; defina a visibilidade de cada membro de cada classe; os valores dos atributos de todas as classes
devem ser solicitados ao usuário dentro do método construtor de cada classe, onde o usuário deverá informá-los
através do uso método showInputDialog( ) de JOptionPane. Feito isto, crie uma classe GuiTeste com um método
main() que, por sua vez, deverá instanciar cada subclasse e fazer chamada a cada um dos seus respectivos
métodos, mostrando os resultados produzidos por cada um deles na tela através do método showMessageDialog( )
de JOptionPane. Crie o diagrama UML com a modelagem de cada uma das classes citadas acima.
11. Implemente em Java as classes de acordo com o diagrama UML abaixo. A classe Conta deve conter dois métodos
construtores Conta (String n) e Conta (String n, double v), além das seguintes operações:
a) depositar(): que deve receber um valor a ser acrescentado ao atributo saldo e informar o novo saldo atual.
b) sacar(): que deve verificar se o saque pode ser feito ou não. Se o valor solicitado para saque existir na conta,
deve-se decrementar o atributo saldo e informar o novo saldo atual. Caso contrário, deve-se informar “Saque
não realizado! Saldo insuficiente!”.
c) Obs.: implemente os métodos de acesso e defina a visibilidade de todos os membros desta classe. A classe
GuiConta deve conter um método main() que deve simular a criação de um objeto Conta e o uso dos métodos
depositar e sacar.
Conta GuiConta
saldo: double
nome: String objConta: Conta
depositar (double v)
main()
sacar (double v)
12. Implemente as classes conforme o diagrama UML abaixo, atendendo as seguintes recomendações:
a) A Classe HOSPEDE, além dos seus atributos, deve conter os métodos de acesso SET e GET para cada um deles.
Além disso, todos os membros desta classe devem ter sua visibilidade definida.
b) A operação inicializar() da Classe HOSPEDE deve solicitar ao usuário que informe os valores de todos os seus
atributos através do método showInputDialog de JOptionPane.
c) A operação calcularDespesa() da Classe HOSPEDE deve calcular e retornar o valor (em reais) da despesa de
um determinado hóspede no hotel. Para isto considere que o hotel cobra R$ 300,00 por diária mais uma taxa
adicional de serviços por dia. Se o número de diárias por pessoa for menor que 5, a taxa de serviços é de R$
30,00. Se o número de diárias por pessoa for igual a 5, a taxa de serviço é de R$ 20,00. E se o número de diárias
por pessoa for maior que 5, a taxa de serviço é de R$ 10,00.
d) A operação imprimirConta() da Classe HOSPEDE deve listar na tela todos os dados do hóspede e fazer
chamada à operação calcularDespesa(), mostrando na tela o valor da despesa do hóspede. Todos os dados do
hóspede devem ser exibidos na tela usando o método showMessageDialog de JOptionPane.
e) A Classe HOTEL deve conter o método main() dentro do qual deve-se criar uma instância da Classe ALUNO,
fazendo chamada às suas operações inicializar() e imprimirConta().
HOSPEDE HOTEL
cpf
nome main(String args[])
numeroDiarias
inicializar()
calcularDespesa()
imprimirConta()
13. Implemente as classes conforme o diagrama UML abaixo, atendendo as seguintes recomendações:
a. A Classe ALUNO, além dos seus atributos, deve conter os métodos de acesso SET e GET para cada um deles.
Além disso, todos os membros desta classe devem ter sua visibilidade definida.
b) A operação inicializar() da Classe ALUNO deve solicitar ao usuário que informe os valores de todos os seus
atributos através do método showInputDialog de JOptionPane.
c) A operação calcularMedia() da Classe ALUNO deve calcular e retornar a média de um determinado aluno em
uma determinada disciplina.
d) A Classe GUIALUNO deve conter o método main() dentro do qual deve-se criar uma instância da Classe
ALUNO, fazer chamada às suas operações inicializar() e calcularMedia(). Ao chamar a operação
calcularMedia(), deve-se exibir o valor da média retornado e informando a situação do aluno (aprovado ou
reprovado), considerando para efeitos de aprovação média >=6. Use o método showMessageDialog de
JOptionPane para exibir na tela os dados solicitados.
ALUNO
GUIALUNO matricula
nome
disciplina
main(String args[]) notaP1
notaP2
inicializar()
calcularMedia()
14. Implemente as classes de acordo com o diagrama UML abaixo, atendendo as seguintes recomendações:
a) A classe Cliente, além dos seus atributos, deve conter os métodos de acesso SET e GET para cada UM
DELES. Além disso, todos os membros desta classe devem ter sua visibilidade definida.
b) O método inicializar() deve solicitar ao usuário os valores de todos os atributos através do método
showInputDialog() de JOptionPane.
2
c) O método calcularIMC() deve calcular e retornar o Índice de Massa Corporal de um cliente (peso/altura ). Os
dados devem ser exibidos na tela usando o método showMessageDialog de JOptionPane.
d) A classe GuiCliente deve conter um método main() que deve simular a criação de um objeto Cliente e fazer
chamada às suas operações inicializar() e calcularMedia(). Ao chamar a operação calcularMedia(), deve-se
exibir o valor do IMC retornado e mostrar na tela a categoria em que o cliente se encontra conforme tabela
abaixo. Todos os dados devem ser exibidos na tela usando o método showMessageDialog de JOptionPane
2
CLIENTE GUICLIENTE IMC (Kg/m ) CATEGORIA
nome Abaixo de 18,5 Abaixo do peso
peso Entre 18,5 e 24,9 Peso Normal
main(String args[])
altura Entre 25,0 e 29,9 Sobrepeso
Acima de 29,9 Obesidade
inicializar()
calcularIMC()
15. O diagrama de classes abaixo representa, de forma simplificada, o funcionamento de uma agenda de contatos.
Implemente em Java o código da aplicação que representa o referido cenário de acordo com as recomendações.
DIAGRAMA DE CLASSES
AGENDA
main(String args[])
ENDERECO
rua TELEFONE
numero PESSOA ddi
complemento ddd
nome numero
bairro
cidade inicializar() tipo
cep imprimir() operadora
estado
PESSOAFISICA PESSOAJURÍDICA
cpf cnpj
dataNascimento razaoSocial
inicializar() inicializar()
imprimir() imprimir()
Considerações:
ATENÇÃO: é obrigatória a implementação dos métodos de acesso SET e GET para cada atributo de cada classe,
bem como a definição da visibilidade de todos os atributos e métodos das classes. Os valores armazenados nos
atributos das classes deverão ser informados pelo usuário obrigatoriamente através do componente gráfico
JOptionPane. Inicie a implementação pelas classes mais simples: ENDERECO e TELEFONE.
CLASSE PESSOA
A superclasse PESSOA deve ser uma classe abstrata, isto é, não pode ser instanciada. A superclasse PESSOA
relaciona-se com as classes ENDEREÇO e TELEFONE, portanto deve conter um atributo de referência para cada
delas. ATENÇÃO: é preciso implementar os métodos de acesso SET e GET também para os atributos de referência
provenientes do relacionamento entre classes; suponha que cada pessoa (jurídica ou física) possui apenas um único
telefone e um único endereço. Os métodos inicializar() e imprimir() da superclasse PESSOA são abstratos, devendo
ser implementados obrigatoriamente nas subclasses PESSOAFISICA e PESSOAJURIDICA.
O método inicializar() destas subclasses é responsável por inicializar todos os atributos das respectivas subclasses,
inclusive os atributos de referência oriundos a partir do relacionamento herdado da superclasse com as classes
ENDERECO e TELEFONE. Por esta razão, na implementação do referido método deve-se criar uma instância da
classe ENDERECO e uma instância da classe TELEFONE e solicitar ao usuário que informe os valores dos seus
respectivos atributos através do componente gráfico JOptionPane.
O método imprimir() deve mostrar na tela através do componente gráfico JOptionPane todas as informações da
PESSOA (nome, endereço completo e telefone).
CLASSE AGENDA
A classe AGENDA é a classe principal da aplicação, contendo, portanto, o método MAIN, dentro do qual deve-se
criar um objeto da classe PESSOAFISICA e um objeto da classe PESSOAJURIDICA. Feito isto, deve-se fazer
chamada aos métodos inicializar() e imprimir() de cada um dos objetos criados.