Você está na página 1de 5

CURSO DE SISTEMAS DE INFORMAÇÃO – 4º PÉRIODO – NOTURNO – PROFª.

GISELLE TEIXEIRA DE ALMEIDA


LISTA DE EXERCICIOS - REVISÃO DA DISCIPLINA INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETOS
NOME: _______________________________________________________________________________________

1. Marque V (verdadeiro) ou F (falso) para os itens a seguir:

( ) 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.

3. O que é uma classe abstrata?


a) É uma classe sem classes filhas.
b) É qualquer classe pai com mais de uma classe filha.
c) É uma classe que não pode ser instanciada.
d) É um outro nome para “classe base”.
4. O que é uma classe abstrata?

( ) Os métodos de classe só podem fazer referência a atributos de classe.


( ) Os métodos showMessageDialog( ) e showInputDialog( ) são exemplos de métodos de classe existentes
na classe JOptionPane.
( ) Uma classe abstrata pode possuir métodos de classe, métodos concretos e método abstratos.
( ) O termo this pode ser utilizado para referir-se aos atributos do objeto de referência e às variáveis locais.
( ) As operações polimórficas são aquelas que podem ter a mesma implementação em diferentes classes.
( ) Apenas os métodos abstratos de uma superclasse podem ser sobrepostos (redefinidos) nas subclasses.
( ) Os atributos de classe são utilizados para armazenar dados compartilhados apenas por alguns objetos de
uma classe.
( ) O objeto de referência é aquele que está executando um determinado método em um dado instante da
execução da aplicação.
( ) Os métodos sqrt( ) e pow( ) da Classe Math não são métodos de classe.
( ) O termo super pode ser utilizado para referir-se aos métodos concretos e aos construtores de uma
superclasse.

5. O que é um método abstrato?


a) É qualquer método de uma classe abstrata.
b) É um método que não pode ser herdado.
c) É um método sem um corpo que é declarado com a palavra reservada abstract.
d) É um método na classe filha que redefine um método da classe pai.

6. Analise o código abaixo e marque a afirmação correta:

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();
}
}

7. Analise a hierarquia de classes a seguir e marque V ou F para as afirmações abaixo:


A

<abstract> met_1( )

E B C D F

met_5( ) met_1( ) met_1(int value ) met_5( ) met_1( )

( ) A classe A pode ser uma classe abstrata ou concreta.


( ) O método met_1( ) pode ser implementado de forma diferente nas subclasses da superclasse A.
( ) A subclasse D não está definida corretamente, uma vez que não apresenta o método met_1( ).
( ) A subclasse E não está definida corretamente, uma vez que apresenta o método met_5( ).
( ) Seja obj uma instância da subclasse E, a mensagem obj.met_1( ) irá executar o método met_1( ) definido
na classe B.
8. Analise as classes a seguir e responda as solicitações feitas em cada abaixo:
a) Faça o desenho (modelagem) da classe NUMERO;
b) Ao executar a aplicação, informe quantos objetos da Classe NUMERO foram criados?
c) Faça o desenho (modelagem) de cada um destes objetos informados no item anterior;
d) Ao executar a aplicação, informe qual será o resultado produzido (linha 08 da Classe GuiNumero);
e) Finalizada a execução da aplicação, informe qual dos objetos criados é o objeto de referência.
01 public class Numero 01 public class GuiNumero
02 { 02 {
03 private int valor; 03 public static void main(String args[])
04 public void setValor(int n) 04 {
05 { valor = n; } 05 int x=1;
06 public int getValor() 06 Numero num = new Numero();
07 { return valor; } 07 num.setValor(x);
08 public int misterio() { 08 System.out.println(num.misterio());
09 if (valor==0) 09 }
10 return 1; 10 }
11 else
12 { Numero obj = new Numero();
13 obj.setValor(valor-1);
14 return valor*obj.misterio();
15 }
16 }

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.

CLASSE PESSOAFISICA e CLASSE 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.