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.