Você está na página 1de 3

Disciplina: POO I

Lista de Exerccios Professor: Douglas X. T. de Oliveira

Lic. Computao 3Bim.

Data: 29.11.2013 Nome:

Figura 1 Trecho do Diagrama de Classes

Contexto: o diagrama de classes da Figura 1 modela parte de um sistema de uma empresa de desenvolvimento e venda de softwares. Considerando as convenes e padres adotados em sala de aula, crie as classes contidas no diagrama. Para todas as classes, quando adequado, faa o construtor completo, os mtodos get e set de todos os atributos e sobrescreva os mtodos toString e equals. Outras questes so especificadas a seguir, onde se aborda assuntos especficos ou regras de negcio que no so visualizveis no diagrama. Diferente das listas anteriores, uma questo pode no estar concentrada em apenas uma classe. Vamos a elas!
1.

A classe Empregado contm um mtodo abstrato chamado vencimentos, que quando implementado deve retornar o salrio bruto (sem considerar descontos, etc.) pago a cada empregado da empresa, seja ele assalariado, comissionado ou horista. Sempre que for conveniente faa validaes nos mtodos set. Alguns casos: salrios no so negativos, o percentual que o Empregado comissionado tem em relao a sua venda mensal no pode ser maior que 100%, o empregado no pode trabalhar mais de 31(dias) x 24 (horas por dia) em um ms, etc. O clculo do salrio mensal de cada tipo de empregado varia. De acordo com os atributos de cada empregado, defina clculos de salrios adequados. Alm disso, considere tambm que o empregado horista ganha 50% por hora extra trabalhada, sendo que as horas que excederem 160 so consideras extras. Antes a empresa tinha alguns poucos empregados e todos sabiam quantos eram. Agora ela cresceu, e deseja-se que esta informao esteja disponvel na classe Empregado. Altere a classe empregado para que ela conte quantos funcionrios temos na empresa, e quando quisermos saber bastar chamar algo assim: Empregado.getNumeroFuncionarios(). Dica: crie um atributo de classe privado e esttico, e manipule-o no construtor da classe. Faa tambm um mtodo esttico para acessar este valor (o tal getNumeroEmpregados). Considere que por questes legais no se pode ter vrios tipos de empregados horistas em uma empresa. Foram detectados alguns casos em folhas de pagamento de empresas, onde se tinham vrios tipos de empregados horistas e o pagamento era de feito de forma desigual e irregular. Por isso, desejamos evitar tal risco no nosso sistema, j que ele responsvel por gerar a folha de pagamento. Modifique o sistema para garantir que tal fato no ocorra, ou seja, para que no sistema que no haja mais de um tipo de funcionrio horista. Imagine que a Empresa tenha mudado de gestor e a partir de agora se instituiu que todo empregado tem que contribuir com 1.5% do seu salrio bruto para a empresa, que ser investido em treinamento de empregados, compra de livros, sesses de relaxamento no intervalo.... Esse mtodo tem que ser comum para qualquer Empregado e ele no deve ser reescrito por nenhuma Classe. Implemente tal mtodo com o nome contribuicaoEmpresarial. O percentual, que comum a todos os empregados, deve ser armazenado em um atributo. Suponha que por questes legais todo o empregado assalariado (no nosso caso 2 tipos de funcionrio) tenha que ser um membro de sindicato. Quando se membro do sindicato tem-se algumas responsabilidades a mais, como por exemplo, fazer uma contribuio de 1% do salrio mensal e listar direitos de sindicalizados (este ltimo deve ter uma implementao fictcia). Crie a interface InterfaceEmpregadoMembroSindicato com estas responsabilidades (contribuicaoSindical e direitosMembroSindicato) e faa as demais alteraes para que a interface seja implementada pelos empregados assalariados. Defina o mtodo abstrato na classe Empregado chamado salarioLiquido e faa as demais modificaes necessrias. Crie uma classe chamada FolhaPagamento, que tem o atributo totalFolhaPagamento e o mtodo registrar (onde se pode observar o polimorfismo). O mtodo registrar deve acumular no atributo o valor do salrio bruto do Empregado informado no parmetro, bem como imprimir o nome completo, salrio bruto e salrio liquido de cada empregado registrado. Considerando as classes criadas anteriormente, crie uma nova classe chamada AplicacaoEmpresa, que faa os seguintes passos no mtodo main:
a) Crie uma instncia de todas as classes que permitem criar objetos. Utilize informaes adequadas para

2.

3.

4.

5.

6.

7.

8.

9.

10.

posteriormente observarmos se a sada est correta.


b) Aps criados todos os objetos, altere uma informao (que voc desejar) de cada um deles

c) Mostre na tela quantos funcionrios temos na Empresa. d) Para cada empregado, mostre na tela todas as suas informaes (toString), mais o seu salrio e o valor de

sua contribuio empresarial.


e) Em vez de declarar uma varivel para manipular cada objeto criado, crie um array para armazenar todos os

empregados da empresa. Isso facilitaria bastante a sua vida para fazer a questo d, principalmente quando o nmero de empregados for grande, o que geralmente acontece....
f)

Refaa a questo d utilizando um lao e o array criado. o total da folha de pagamento.

g) Registre na folha de pagamento todos os empregados contidos no array (lao obrigatrio). Aps isso mostre
11.

Crie uma classe similar a FolhaPagamento para demonstrar a utilizao do polimorfismo por meio da interface criada na questo 7. Faa tambm uma aplicao para demonstrar a utilizao desta nova classe (questo 11) e da interface (questo 7). Use array.

12.

Você também pode gostar