Universidade do Estado de Santa Catarina - udesc

Propaganda
Universidade do Estado de Santa Catarina (UDESC)
Centro de Ciências Tecnológicas (CCT)
Prof(o).: Alexandre Parra Carneiro da Silva
Disciplina: Linguagem de Programação II (LPG-II) Turma: A Ano/Semestre: 2008/2
Exercícios sobre Sintaxe da Linguagem Java
1) Realizar cálculos de Folha de Pagamento (FP) baseados nos tipos de empregados da
empresa. Utilizar polimorfismo com classes abstratas e métodos abstratos.
Interface de implementação: utilizar uma superclasse abstract Empregado. Esta
classe possui dentre os seus métodos um método abstrato chamado calcularGanho
(visualizar o diagrama simples abaixo). As subclasses de Empregado são:
-
Chefe: empregado pago com um salário fixo semanal independente do
número de horas trabalhadas. O retorno do método ganho desta classe é o
próprio valor atribuído ao atributo salarioMensal, consultar diagrama;
-
TrabalhadorComissionado: empregado pago com um salário fixo mais
uma porcentagem sobre as vendas. O retorno do método ganho desta classe é
o resultado da operação sobre os valores atribuídos aos atributos (ver
diagrama abaixo) desta classe da seguinte forma: salario + (comissao *
quantidade);
-
TrabalhadorPecaProduzida: empregado pago pelo número de itens
produzidos. O retorno do método ganho desta classe é o resultado da
operação sobre os valores atribuídos aos atributos (ver diagrama abaixo)
desta classe da seguinte forma: remuneracão * quantidade ;
-
TralhadorHora: empregado que é pago por hora e que recebe um adicional
por hora extra trabalhada. O retorno do método ganho desta classe é o
resultado da operação sobre os valores atribuídos aos atributos (ver diagrama
abaixo) desta classe da seguinte forma: salarioHora * horas.
A chamada de método ganho pode ser aplica genericamente a todos os tipos de
empregados. Mas a maneira como os rendimentos de cada pessoa são calculados
depende da classe do empregado, e essas classes derivam-se da superclasse
Empregado. Então o método calcularGanho é declarado abstract na superclasse
Empregado e as implementações apropriadas deste método são preparadas para cada
uma das subclasses. Portanto, para calcular os rendimentos de qualquer empregado, o
programa pode utilizar uma referência de superclasse para o objeto desse empregado e
invocar o método calcularGanho.
Observação: A classe Empregado deve ter o seguinte construtor:
 public Empregado(String primeiroNome, String ultimoNome);
a) Implementar as classes em Java.
b) Explicar e informar onde estão os conceitos de OO presentes no sistema FP
implementado.
2) Implementar um RadioRelogio, na linguagem Java, segundo o diagrama simples
apresentado abaixo. A classe RadioRelogio deve ter o seguinte construtor public
RadioRelogio(Date horario).
Observação: Uma interface em Java modela um comportamento esperado. Pode-se
entendê-la como uma classe que contenha apenas métodos abstratos (ou seja, só tem as
suas assinaturas, mas não são implementadas). Embora uma classe não possa conter
mais de uma superclasse, a classe pode implementar mais de uma interface. Uma classe
que implementa uma ou mais interfaces deve implementar todos os métodos que foram
definidos nestas interfaces.
Java não suporta herança múltipla, ou seja, uma classe não pode herdar características
e comportamentos de mais de uma classe. Para “simulá-lo” pode-se fazê-lo através de
uma classe que implementa mais de uma interface. Portanto, a classe RadioRelogio
implementa essas duas interfaces.
a) Implementar a classe e as Interfaces em Java.
b) Explicar e informar onde estão os conceitos presentes no sistema FP.
3) Identifique e explique o(s) erro(s), se existir, na classe abaixo. Qual(is) o(s)
conceito(s) de Orientação a Objetos está(ão) presente(s) no código abaixo? Explique.
4) Identifique e explique o(s) erro(s), se existir, na classe abaixo. Qual(is) o(s)
conceito(s) de Orientação a Objetos está(ão) presente(s) no código abaixo? Explique.
5) Identifique e explique o(s) erro(s), se existir, na classe abaixo. Qual(is) o(s)
conceito(s) de Orientação a Objetos está(ão) presente(s) no código abaixo? Explique.
6) Identifique e explique o(s) erro(s) na classe abaixo.
Download