Página 72: Classes e Objetos
Exercício 1: Defina a classe Empregado, contendo os atributos nome e salário. Crie os métodos construtor, seletor e modificador (para cada atributo). Desenvolva as operações para:
a) Calcular e retornar o valor de imposto de renda a ser pago, sabendo que o imposto equivale a 5% do salário.
b) Faça um programa que crie um objeto da classe Empregado (leia o nome e o salário) e informe o nome do funcionário juntamente com o imposto de renda a ser pago.
a) Primeiramente criamos a classe Empregado e depois a classe que servirá de interface:
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author paulo.cayres
- */
- public class Empregado {
- private String nome;
- private double salario;
- public Empregado() {
- }
- //Construtor
- public Empregado(String nome, double salario) {
- this.nome = nome;
- this.salario = salario;
- }
- //Método seletor
- public String getNome() {
- return nome;
- }
- //Método modificador
- public void setNome(String nome) {
- this.nome = nome;
- }
- //Método seletor
- public double getSalario() {
- return salario;
- }
- //Método modificador
- public void setSalario(double salario) {
- this.salario = salario;
- }
- //Método que retorna (por isso que é public double) o cálculo do valor do imposto
- public double calcImpostoDeRenda(){
- return this.salario * 0.05;
- }
- }
Essa vai ser a classe que irá acessar a classe Empregado
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import java.text.DecimalFormat;
- import javax.swing.JOptionPane;
- import modelo.Empregado;
- /**
- *
- * @author Paulo Henrique Cayres
- */
- public class UIEmpregado {
- public static void main(String args[]){
- Empregado paulo = new Empregado();
- paulo.setNome("Paulo Henrique Cayres");
- paulo.setSalario(1234.25);
- DecimalFormat df = new DecimalFormat();
- df.applyPattern("R$ #,##0.00");
- JOptionPane.showMessageDialog(null, paulo.getNome()+", você terá que pagar "+df.format(paulo.calcImpostoDeRenda())+" de imposto de renda.");
- }
- }
Exercício 2: Defina uma classe Cliente, contendo os atributos: nome e total de despesas que a mesma teve num restaurante. Crie os métodos construtor, seletor e modificador (para cada atributo). Desenvolva as operações para:
a) Calcular e retornar o valor total a ser pago com gorjeta, considerando a taxa de 10%;
b) Faça um programa que crie um objeto da classe Cliente (leia o nome e o total de despesas) e informe o nome do cliente e o valor a ser pago com gorjeta.
a) Primeiro fazer a classe Cliente depois fazer a classe que servirá de interface para chamar a classe Cliente.
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author paulo.cayres
- */
- public class Cliente {
- private String nome;
- private double vlrTotalDespesas;
- // É necessário criar esse construtor por causa do new na classe que servirá de interface.
- public Cliente() {
- }
- // Método construtor
- public Cliente(String nome, double vlrTotalDespesas) {
- this.nome = nome;
- this.vlrTotalDespesas = vlrTotalDespesas;
- }
- // Método que irá acessar o estado de um objeto
- public String getNome() {
- return nome;
- }
- // Método que irá alterar o estado de um objeto
- public void setNome(String nome) {
- this.nome = nome;
- }
- // Método que irá acessar o estado de um objeto
- public double getVlrTotalDespesas() {
- return vlrTotalDespesas;
- }
- // Método que irá alterar o estado de um objeto
- public void setVlrTotalDespesas(double vlrTotalDespesas) {
- this.vlrTotalDespesas = vlrTotalDespesas;
- }
- // Método que irá calcular o valor da gorjeta. Repare que é public double por isso tem return.
- public double calcVlrGorjeta(){
- return this.vlrTotalDespesas * 0.1;
- }
- }
Essa vai ser a classe que irá acessar a classe Cliente
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import java.text.DecimalFormat;
- import javax.swing.JOptionPane;
- import modelo.Cliente;
- /**
- *
- * @author paulo.cayres
- */
- public class UICliente {
- public static void main(String args[]){
- Cliente paulo = new Cliente();
- paulo.setNome(JOptionPane.showInputDialog("Digite seu nome "));
- paulo.setVlrTotalDespesas(Double.parseDouble(JOptionPane.showInputDialog("Digite o total das despesas: ")));
- DecimalFormat df = new DecimalFormat();
- df.applyPattern("R$ #,##0.00");
- JOptionPane.showMessageDialog(null, paulo.getNome()+", você terá que pagar "+df.format(paulo.calcVlrGorjeta())+" de gorjeta.");
- }
- }
Exercício 3: Implemente a classe Triângulo representada abaixo. Crie um programa que leia os 3 lados do triângulo e diga se ele é equilátero, isósceles ou escaleno, utilizando a interface pública do objeto.
// Propriedade: cada lado de um triângulo é menor do que a soma dos outros dois lados.
boolean ehEscaleno() // tem o comprimento de seus 3 lados diferentes
boolean ehEquilatero() // tem o comprimento dos 3 lados iguais
boolean ehIsosceles() // tem o comprimento de 2 lados iguais.
Primeiramente definimos a classe Triângulo:
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author paulo.cayres
- */
- public class Triangulo {
- private int lado1;
- private int lado2;
- private int lado3;
- // Método construtor
- public Triangulo(int lado1, int lado2, int lado3) {
- this.lado1 = lado1;
- this.lado2 = lado2;
- this.lado3 = lado3;
- }
- public int getLado1() {
- return lado1;
- }
- public void setLado1(int lado1) {
- this.lado1 = lado1;
- }
- public int getLado2() {
- return lado2;
- }
- public void setLado2(int lado2) {
- this.lado2 = lado2;
- }
- public int getLado3() {
- return lado3;
- }
- public void setLado3(int lado3) {
- this.lado3 = lado3;
- }
- //Método que calcula se o triângulo é escaleno
- private boolean ehEscaleno(){
- if(this.lado1 != this.lado2 && this.lado1 != this.lado3 && this.lado2 != this.lado3)
- return true;
- else
- return false;
- }
- private boolean ehEquilatero(){
- if(this.lado1 == this.lado2 && this.lado2 == this.lado3)
- return true;
- else
- return false;
- }
- private boolean ehIsosceles(){
- if(this.lado1 == this.lado2 || this.lado1 == this.lado3 || this.lado2 == this.lado3)
- return true;
- else
- return false;
- }
- public String isTriangulo(){
- if (this.ehEquilatero())
- return "O triângulo é Equilátero.";
- else if(this.ehIsosceles())
- return "O triângulo é Isosceles.";
- else if(this.ehEscaleno())
- return "O triângulo é Escaleno.";
- else
- return "As medidas informadas não formam um triângulo!";
- }
- }
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import javax.swing.JOptionPane;
- import modelo.Triangulo;
- /**
- *
- * @author Paulo Henrique Cayres
- */
- public class UITriangulo {
- public static void main(String args[]){
- Triangulo triangulo = new Triangulo(3, 4, 5);
- JOptionPane.showMessageDialog(null, triangulo.isTriangulo(),"Tipo do Triângulo",JOptionPane.INFORMATION_MESSAGE);
- }
- }
Exercício 1 pág. 73: Defina uma classe Funcionário, contendo os atributos: nome, salário-base e nível do cargo (I, II ou III). Crie os métodos construtor, seletor e modificador (para cada atributo). Desenvolva as operações para:
a) Calcular o adicional por nível de cargo: não há para nível 1, 10% para nível 2 e 15% para nível 3;
b) Calcular o desconto de Imposto de renda sobre o salário-bruto: não há para salário até 1499,99, 7,5% para salário-bruto até 1999,99, 15% para salário-bruto até 2999,99 e de 20% para salário-bruto acima de 3000,00.
c) Calcular o desconto de Previdência Social: 5% para salário-bruto até 999,99, 9% para salário-bruto até 1799,99 e de 11% para salário-bruto até 3500,00. A partir de 3500,00 é descontado o teto, ou seja, 11% sobre 3500,00 (que é 385,00).
d) Mostrar o contracheque: exibe o nome do funcionário, seu salário-base, adicional, IRRF, INSS e o salário-líquido.
e) Faça um programa que crie um objeto da classe Funcionário (leia o nome, o salário-base e o nível do cargo) e mostre seu contracheque.
Para chamar a classe Funcionário criamos a classe que chama:
Exercício 2 pág 73:
2) Defina uma classe Produto, contendo os atributos: código, descrição, quantidade disponível e quantidade mínima (os atributos de quantidade não podem ser negativos) e também o preço de venda. Crie os métodos construtor, seletor e modificador (conforme necessário). Desenvolva as operações para:
a) reporEstoque (quantidade): dada uma quantidade comprada, aumentar a quantidade disponível do produto
b) alterarPreco (taxa): dada uma taxa, atualizar o preço de venda do produto
c) darBaixa (quantidade): dada uma quantidade vendida, diminuir a quantidade disponível do produto
d) precisaRepor: informa verdadeiro caso a quantidade disponível seja menor ou igual a quantidade mínima.
Primeiramente criamos a classe Produto:
Segue a interface para executar a classe:
Exercício 3 página 73: Faça um programa que crie um objeto da classe Produto (leia o código, a descrição e a quantidade mínima desejada) e mostre o menu:
1 - Registro da Compra (reporEstoque).
2 - Alterar Preço de venda (alterarPreco)
3 - Registro da Venda (dada a quantidade desejada do produto, verificar se há estoque. Se sim, dar baixa e informar o valor total da venda; se não, informar 'estoque insuficiente').
4 - Verificar Reposição (precisaRepor)
5 - Fim
Página 80: Herança
1) Defina a classe Funcionário, contendo os atributos nome, RG e total de vendas em R$. Crie o método construtor padrão e os métodos seletores e modificadores para cada um de seus atributos.
2) Defina a classe Vendedor, contendo o atributo valor comissão. Esta classe é subclasse da classe Funcionário e deverá implementar o método construtor padrão e os métodos seletores e modificadores para cada um de seus atributos. Implemente um método que calcule o retorno o valor da comissão do vendedor, sendo que o valor da comissão é de 5% sobre o valor total das vendas.
A interface para chamar a classe acima é:
3) Defina a classe Gerente, contendo o atributo valor comissão. Esta classe é subclasse da classe Funcionário e deverá implementar o método construtor padrão e os métodos seletores e modificadores para cada um de seus atributos. Implemente um método que calcule o retorno, o valor da comissão do gerente, sendo que o valor da comissão é de 7,5% sobre o valor total das vendas.
4) Desenvolva uma classe executável que instancie um objeto da classe Vendedor e depois calcule e escreva o valor da comissão a qual ele terá direito a receber.
5) Desenvolva uma classe executável que instancie um objeto da classe Gerente e depois calcule e escreva o valor da comissão a qual ele terá direito a receber.
A classe que instancia a classe Gerente é:
Página 82: Polimorfismo
1) Defina a classe Empregado, contendo os atributos nome e salário. Crie o método construtor padrão e os métodos seletores e modificadores para cada um de seus atributos. Implemente o método aumentarSalario() que aplique e retorne 5% de aumento no salário.
2) Defina a classe Programador. Esta classe é subclasse da classe Empregado. Implemente o método aumentarSalario() que aplique e retorne 10% de aumento de salário.
Abaixo definimos uma classe que irá criar uma instancia da classe Gerente
Página 93: Interfaces
2) Defina uma classe abstrata Veículo, cujos objetos representam veículos, contendo as seguintes informações: número de cilindradas, preço e combustível. Implemente construtor(es), e um método abstrato que possibilite a impressão de todos os atributos do objeto instanciado
a) Defina uma classe Moto, subclasse da classe Veículo, que contenha as seguintes informações adicionais: tipo de motor (2 ou 4 tempos, carburado, etc.) e tipo de freio (ventilado, a disco etc.). Redefina o construtor de objetos da classe e de impressão de suas informações de maneira apropriada.
b) Defina uma classe Carro, subclasse da classe Veículo, que contenha as seguintes informações adicionais: número de passageiros e capacidade do porta-malas. Redefina o construtor de objetos da classe e de impressão de suas informações de maneira apropriada.
c) Defina uma classe Caminhão, subclasse da classe Veículo, que contenha as seguintes informações adicionais: peso do veículo e peso da carga. Redefina o construtor de objetos da classe e de impressão de suas informações de maneira apropriada.
d) Desenvolva uma interface para instanciar um objeto de cada uma das classes implementadas e que imprima uma frase composta por todos os valores de seus atributos próprios e herdados. A classe de interface deverá estar no pacote visão (visão).
a)
a) Calcular o adicional por nível de cargo: não há para nível 1, 10% para nível 2 e 15% para nível 3;
b) Calcular o desconto de Imposto de renda sobre o salário-bruto: não há para salário até 1499,99, 7,5% para salário-bruto até 1999,99, 15% para salário-bruto até 2999,99 e de 20% para salário-bruto acima de 3000,00.
c) Calcular o desconto de Previdência Social: 5% para salário-bruto até 999,99, 9% para salário-bruto até 1799,99 e de 11% para salário-bruto até 3500,00. A partir de 3500,00 é descontado o teto, ou seja, 11% sobre 3500,00 (que é 385,00).
d) Mostrar o contracheque: exibe o nome do funcionário, seu salário-base, adicional, IRRF, INSS e o salário-líquido.
e) Faça um programa que crie um objeto da classe Funcionário (leia o nome, o salário-base e o nível do cargo) e mostre seu contracheque.
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- import java.text.DecimalFormat;
- /**
- *
- * @author Paulo Henrique Cayres
- */
- public class Funcionario {
- private String nome;
- private double salBruto;
- private String nivelCargo;
- private double salLiquido;
- private final double TETO = 3500.00;
- public Funcionario() {
- }
- //Método construtor
- public Funcionario(String nome, double salBruto, String nivelCargo) {
- this.nome = nome;
- this.salBruto = salBruto;
- this.nivelCargo = nivelCargo;
- }
- public String getNome() {
- return nome;
- }
- public void setNome(String nome) {
- this.nome = nome;
- }
- public double getSalBruto() {
- return salBruto;
- }
- public void setSalBruto(double salBruto) {
- this.salBruto = salBruto;
- }
- public String getNivelCargo() {
- return nivelCargo;
- }
- public void setNivelCargo(String nivelCargo) {
- this.nivelCargo = nivelCargo;
- }
- //Método que calcula o adicional dependendo do nível
- private double calcAdicionalNivel(){
- if (this.nivelCargo.equals("I"))
- return 0.0;
- else if (this.nivelCargo.equals("II"))
- return this.salBruto * 0.10;
- else if (this.nivelCargo.equals("III"))
- return this.salBruto * 0.15;
- return 0.0;
- }
- private double calcDescImpostoRenda(){
- if (this.salBruto <= 1499.99)
- return 0.0;
- else if (this.salBruto <= 1999.99)
- return this.salBruto * 0.075;
- else if (this.salBruto <= 2999.99)
- return this.salBruto * 0.15;
- else
- return this.salBruto * 0.20;
- }
- private double calcDescPrevicenciaSocial(){
- if (this.salBruto <= 999.99)
- return this.salBruto * 0.05;
- else if (this.salBruto <= 1799.99)
- return this.salBruto * 0.09;
- else if (this.salBruto <= 3500.00)
- return this.salBruto * 0.11;
- else
- return this.TETO * 0.11;
- }
- public String exibeContraCheque(){
- String frase;
- this.salLiquido = (this.salBruto+this.calcAdicionalNivel()) - (this.calcDescImpostoRenda()+this.calcDescPrevicenciaSocial());
- DecimalFormat df = new DecimalFormat();
- df.applyPattern("R$ #,##0.00");
- frase = "Contra Cheque";
- frase += "\nSalário Bruto: "+df.format(this.salBruto);
- frase += "\nAdicional: "+df.format(calcAdicionalNivel());
- frase += "\nIRRF: "+df.format(calcDescImpostoRenda());
- frase += "\nINSS: "+df.format(calcDescPrevicenciaSocial());
- frase += "\n\nSalário Líquido: "+df.format(this.salLiquido);
- return frase;
- }
- }
Para chamar a classe Funcionário criamos a classe que chama:
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import javax.swing.JOptionPane;
- import modelo.Funcionario;
- /**
- *
- * @author Paulo Henrique Cayres
- */
- public class UINFuncionario {
- public static void main(String args[]){
- Funcionario funcionario = new Funcionario("Paulo Henrique Cayres", 1234.56, "II");
- JOptionPane.showMessageDialog(null, funcionario.exibeContraCheque());
- }
- }
Exercício 2 pág 73:
2) Defina uma classe Produto, contendo os atributos: código, descrição, quantidade disponível e quantidade mínima (os atributos de quantidade não podem ser negativos) e também o preço de venda. Crie os métodos construtor, seletor e modificador (conforme necessário). Desenvolva as operações para:
a) reporEstoque (quantidade): dada uma quantidade comprada, aumentar a quantidade disponível do produto
b) alterarPreco (taxa): dada uma taxa, atualizar o preço de venda do produto
c) darBaixa (quantidade): dada uma quantidade vendida, diminuir a quantidade disponível do produto
d) precisaRepor: informa verdadeiro caso a quantidade disponível seja menor ou igual a quantidade mínima.
Primeiramente criamos a classe Produto:
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author paulo.cayres
- */
- public class Produto {
- private int codigo;
- private String nome;
- private double precoVenda;
- private double qtdMinima;
- private double qtdDisponivel;
- //Método construtor
- public Produto() {
- }
- public Produto(int codigo, String nome, double precoVenda, double qtdMinima, double qtdDisponivel) {
- this.codigo = codigo;
- this.nome = nome;
- this.precoVenda = precoVenda;
- this.qtdMinima = qtdMinima;
- this.qtdDisponivel = qtdDisponivel;
- }
- public int getCodigo() {
- return codigo;
- }
- public void setCodigo(int codigo) {
- this.codigo = codigo;
- }
- public String getNome() {
- return nome;
- }
- public void setNome(String nome) {
- this.nome = nome;
- }
- public double getPrecoVenda() {
- return precoVenda;
- }
- public void setPrecoVenda(double precoVenda) {
- this.precoVenda = precoVenda;
- }
- public double getQtdMinima() {
- return qtdMinima;
- }
- public void setQtdMinima(double qtdMinima) {
- this.qtdMinima = qtdMinima;
- }
- public double getQtdDisponivel() {
- return qtdDisponivel;
- }
- public void setQtdDisponivel(double qtdDisponivel) {
- this.qtdDisponivel = qtdDisponivel;
- }
- public void reporEstoque(int qtd){
- this.qtdDisponivel += qtd;
- }
- public void alterarPreco(double tx){
- this.precoVenda += (this.precoVenda * tx) / 100;
- }
- public boolean darBaixa(int qtd){
- if( (this.qtdDisponivel - qtd) >= 0){
- this.qtdDisponivel -= qtd;
- return true;
- }
- else
- return false;
- }
- public boolean precisaRepor(){
- if(this.qtdDisponivel < this.qtdMinima)
- return true;
- else
- return false;
- }
- }
Segue a interface para executar a classe:
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import java.text.DecimalFormat;
- import javax.swing.JOptionPane;
- import modelo.Produto;
- /**
- *
- * @author paulo.cayres
- */
- public class UIProduto {
- public static void main(String args[]){
- Produto p = new Produto(123, "Arroz", 12.34, 10, 13);
- DecimalFormat df = new DecimalFormat();
- df.applyPattern("R$ #,##0.00");
- int op = 5;
- do{
- String menu = "Menu de Opções\n\n1 - Registro da Compra\n2 - Alterar Preço de Venda\n3 - Registro da Venda\n4 - Verificar Reposição\n5 - Sair";
- op = Integer.parseInt(JOptionPane.showInputDialog(menu));
- switch(op){
- case 1:
- int qtdade = Integer.parseInt(JOptionPane.showInputDialog("Informe a quantidade comprada: "));
- p.reporEstoque(qtdade);
- break;
- case 2:
- double novoPreco = Double.parseDouble(JOptionPane.showInputDialog("Informe o novo preço de venda: "));
- p.alterarPreco(novoPreco);
- break;
- case 3:
- int qtdVenda = Integer.parseInt(JOptionPane.showInputDialog("Informe a quantidade comprada: "));
- if(p.darBaixa(qtdVenda))
- JOptionPane.showMessageDialog(null, "valor total da Venda: "+ df.format((qtdVenda*p.getPrecoVenda())),"Mensagem", JOptionPane.INFORMATION_MESSAGE);
- else
- JOptionPane.showMessageDialog(null, "Estoque insuficiente","Mensagem", JOptionPane.INFORMATION_MESSAGE);
- break;
- case 4:
- if(p.precisaRepor())
- JOptionPane.showMessageDialog(null, "Produto com estoque baixo. Efetuar compra para normalizar estoque.","Mensagem", JOptionPane.INFORMATION_MESSAGE);
- break;
- default:
- }
- }while(op != 5);
- }
- }
Exercício 3 página 73: Faça um programa que crie um objeto da classe Produto (leia o código, a descrição e a quantidade mínima desejada) e mostre o menu:
1 - Registro da Compra (reporEstoque).
2 - Alterar Preço de venda (alterarPreco)
3 - Registro da Venda (dada a quantidade desejada do produto, verificar se há estoque. Se sim, dar baixa e informar o valor total da venda; se não, informar 'estoque insuficiente').
4 - Verificar Reposição (precisaRepor)
5 - Fim
Página 80: Herança
1) Defina a classe Funcionário, contendo os atributos nome, RG e total de vendas em R$. Crie o método construtor padrão e os métodos seletores e modificadores para cada um de seus atributos.
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo.exHeranca;
- /**
- *
- * @author Aluno
- */
- public class Funcionario {
- private String nome;
- private String rg;
- private double totVendas;
- public Funcionario(String nome, String rg, double totVendas) {
- this.nome = nome;
- this.rg = rg;
- this.totVendas = totVendas;
- }
- public String getNome() {
- return nome;
- }
- public void setNome(String nome) {
- this.nome = nome;
- }
- public String getRg() {
- return rg;
- }
- public void setRg(String rg) {
- this.rg = rg;
- }
- public double getTotVendas() {
- return totVendas;
- }
- public void setTotVendas(double totVendas) {
- this.totVendas = totVendas;
- }
- }
2) Defina a classe Vendedor, contendo o atributo valor comissão. Esta classe é subclasse da classe Funcionário e deverá implementar o método construtor padrão e os métodos seletores e modificadores para cada um de seus atributos. Implemente um método que calcule o retorno o valor da comissão do vendedor, sendo que o valor da comissão é de 5% sobre o valor total das vendas.
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo.exHeranca;
- /**
- *
- * @author Aluno
- */
- public class Vendedor extends Funcionario {
- public Vendedor(String nome, String rg, double totVendas) {
- super(nome, rg, totVendas);
- }
- public double calculaComissao(){
- return getTotVendas()*0.05;
- }
- }
A interface para chamar a classe acima é:
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import java.text.DecimalFormat;
- import modelo.exHeranca.Vendedor;
- import modelo.exHeranca.Gerente;
- /**
- *
- * @author Aluno
- */
- public class UIFuncionario {
- public static void main(String[] args) {
- Vendedor v = new Vendedor("João da Silva","123456-7",1254.89);
- Gerente g = new Gerente("Maria da Glória", "987654-4",5984.62);
- DecimalFormat df = new DecimalFormat();
- df.applyPattern("R$ #,##0.00");
- System.out.println(v.getNome()+" - "+df.format(v.calculaComissao()));
- System.out.println(g.getNome()+" - "+df.format(g.calculaComissao()));
- }
- }
3) Defina a classe Gerente, contendo o atributo valor comissão. Esta classe é subclasse da classe Funcionário e deverá implementar o método construtor padrão e os métodos seletores e modificadores para cada um de seus atributos. Implemente um método que calcule o retorno, o valor da comissão do gerente, sendo que o valor da comissão é de 7,5% sobre o valor total das vendas.
4) Desenvolva uma classe executável que instancie um objeto da classe Vendedor e depois calcule e escreva o valor da comissão a qual ele terá direito a receber.
5) Desenvolva uma classe executável que instancie um objeto da classe Gerente e depois calcule e escreva o valor da comissão a qual ele terá direito a receber.
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo.exHeranca;
- /**
- *
- * @author Aluno
- */
- public class Gerente extends Funcionario {
- public Gerente(String nome, String rg, double totVendas) {
- super(nome, rg, totVendas);
- }
- public double calculaComissao(){
- return getTotVendas()*0.075;
- }
- }
A classe que instancia a classe Gerente é:
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import java.text.DecimalFormat;
- import modelo.exHeranca.Vendedor;
- import modelo.exHeranca.Gerente;
- /**
- *
- * @author Aluno
- */
- public class UIFuncionario {
- public static void main(String[] args) {
- Vendedor v = new Vendedor("João da Silva","123456-7",1254.89);
- Gerente g = new Gerente("Maria da Glória", "987654-4",5984.62);
- DecimalFormat df = new DecimalFormat();
- df.applyPattern("R$ #,##0.00");
- System.out.println(v.getNome()+" - "+df.format(v.calculaComissao()));
- System.out.println(g.getNome()+" - "+df.format(g.calculaComissao()));
- }
- }
Página 82: Polimorfismo
1) Defina a classe Empregado, contendo os atributos nome e salário. Crie o método construtor padrão e os métodos seletores e modificadores para cada um de seus atributos. Implemente o método aumentarSalario() que aplique e retorne 5% de aumento no salário.
- /**
- * a7_heranca: classe Empregado (superclasse)
- * - polimorfismo para aumentarSalario
- */
- package modelo.exPolimorfismo;
- import java.text.DecimalFormat;
- /**
- * Superclasse para Gerente e Programador
- */
- public class Empregado {
- protected String nome;
- protected float salario ;
- public Empregado(String nome, float salario) {
- this.nome = nome;
- this.salario = salario;
- }
- public void aumentarSalario(){
- salario = salario * 1.05f ;
- }
- public String getSalario() {
- DecimalFormat df = new DecimalFormat();
- df.applyPattern("R$ #,##0.00");
- return df.format(salario);
- }
- }
Abaixo definimos uma classe que irá criar uma instancia da classe empregado 
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import modelo.exPolimorfismo.Empregado;
- import modelo.exPolimorfismo.Gerente;
- import modelo.exPolimorfismo.Programador;
- /**
- *
- * @author Aluno
- */
- public class UIEmpregado {
- public static void main(String[] args) {
- Empregado e = new Empregado("Empregado 1", 1250.13f);
- Programador p = new Programador("Empregado 1", 1250.13f);
- Gerente g = new Gerente("Empregado 1", 1250.13f);
- //Repare que está sendo utilizado o método aumentarSalário e SERÁ impresso logo abaixo com
- //o método getSalario que está na classe Empregado
- e.aumentarSalario();
- p.aumentarSalario();
- g.aumentarSalario();
- System.out.println("Salário do empregado: "+e.getSalario());
- System.out.println("Salário do programador: "+p.getSalario());
- System.out.println("Salário do gerente: "+g.getSalario());
- }
- }
2) Defina a classe Programador. Esta classe é subclasse da classe Empregado. Implemente o método aumentarSalario() que aplique e retorne 10% de aumento de salário.
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo.exPolimorfismo;
- /**
- *
- * @author paulo.cayres
- */
- public class Programador extends Empregado {
- public Programador(String nome, float salario) {
- super(nome, salario);
- }
- @Override
- public void aumentarSalario(){
- salario = salario * 1.1f ;
- }
- }
Abaixo definimos uma classe que irá criar uma instancia da classe programador
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import modelo.exPolimorfismo.Empregado;
- import modelo.exPolimorfismo.Gerente;
- import modelo.exPolimorfismo.Programador;
- /**
- *
- * @author Aluno
- */
- public class UIEmpregado {
- public static void main(String[] args) {
- Empregado e = new Empregado("Empregado 1", 1250.13f);
- Programador p = new Programador("Empregado 1", 1250.13f);
- Gerente g = new Gerente("Empregado 1", 1250.13f);
- //Repare que está sendo utilizado o método aumentarSalário e SERÁ impresso logo abaixo com
- //o método getSalario que está na classe Empregado
- e.aumentarSalario();
- p.aumentarSalario();
- g.aumentarSalario();
- System.out.println("Salário do empregado: "+e.getSalario());
- System.out.println("Salário do programador: "+p.getSalario());
- System.out.println("Salário do gerente: "+g.getSalario());
- }
- }
- /**
- * a6_heranca: subclasse
- * - polimorfismo para aumentarSalario
- */
- package modelo.exPolimorfismo;
- /**
- * Subclasse Gerente de Empregado
- */
- public class Gerente extends Empregado {
- public Gerente(String nome, float salario) {
- super(nome, salario);
- }
- @Override
- public void aumentarSalario(){
- salario = salario * 1.15f;
- }
- }
Abaixo definimos uma classe que irá criar uma instancia da classe Gerente
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import modelo.exPolimorfismo.Empregado;
- import modelo.exPolimorfismo.Gerente;
- import modelo.exPolimorfismo.Programador;
- /**
- *
- * @author Aluno
- */
- public class UIEmpregado {
- public static void main(String[] args) {
- Empregado e = new Empregado("Empregado 1", 1250.13f);
- Programador p = new Programador("Empregado 1", 1250.13f);
- Gerente g = new Gerente("Empregado 1", 1250.13f);
- //Repare que está sendo utilizado o método aumentarSalário e SERÁ impresso logo abaixo com
- //o método getSalario que está na classe Empregado
- e.aumentarSalario();
- p.aumentarSalario();
- g.aumentarSalario();
- System.out.println("Salário do empregado: "+e.getSalario());
- System.out.println("Salário do programador: "+p.getSalario());
- System.out.println("Salário do gerente: "+g.getSalario());
- }
- }
Página 93: Interfaces
2) Defina uma classe abstrata Veículo, cujos objetos representam veículos, contendo as seguintes informações: número de cilindradas, preço e combustível. Implemente construtor(es), e um método abstrato que possibilite a impressão de todos os atributos do objeto instanciado
a) Defina uma classe Moto, subclasse da classe Veículo, que contenha as seguintes informações adicionais: tipo de motor (2 ou 4 tempos, carburado, etc.) e tipo de freio (ventilado, a disco etc.). Redefina o construtor de objetos da classe e de impressão de suas informações de maneira apropriada.
b) Defina uma classe Carro, subclasse da classe Veículo, que contenha as seguintes informações adicionais: número de passageiros e capacidade do porta-malas. Redefina o construtor de objetos da classe e de impressão de suas informações de maneira apropriada.
c) Defina uma classe Caminhão, subclasse da classe Veículo, que contenha as seguintes informações adicionais: peso do veículo e peso da carga. Redefina o construtor de objetos da classe e de impressão de suas informações de maneira apropriada.
d) Desenvolva uma interface para instanciar um objeto de cada uma das classes implementadas e que imprima uma frase composta por todos os valores de seus atributos próprios e herdados. A classe de interface deverá estar no pacote visão (visão).
a)
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author Aluno
- */
- public abstract class Veiculo {
- private int nrCilindradas;
- private double vlrCombustivel;
- public Veiculo(int nrCilindradas, double vlrCombustivel) {
- this.nrCilindradas = nrCilindradas;
- this.vlrCombustivel = vlrCombustivel;
- }
- public int getNrCilindradas() {
- return nrCilindradas;
- }
- public double getVlrCombustivel() {
- return vlrCombustivel;
- }
- // metodo abstrato que determinara a area
- public abstract String imprime();
- }
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author Aluno
- */
- public class Moto extends Veiculo{
- private String tipoMotor;
- private String tipoFreio;
- public Moto(int nrCilindradas, double vlrCombustivel) {
- super(nrCilindradas, vlrCombustivel);
- }
- public Moto(String tipoMotor, String tipoFreio, int nrCilindradas, double vlrCombustivel) {
- super(nrCilindradas, vlrCombustivel);
- this.tipoMotor = tipoMotor;
- this.tipoFreio = tipoFreio;
- }
- @Override
- public String imprime() {
- return "Informações da Moto\n"+
- "Nr. Cilindradas: "+this.getNrCilindradas()+"\n"+
- "Valor Combustível: "+this.getVlrCombustivel()+"\n"+
- "Tipo Freio: "+this.tipoFreio+"\n"+
- "Tipo Motor: "+this.tipoMotor;
- }
- }
b) 
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author Aluno
- */
- public class Carro extends Veiculo {
- private int nrPassageiros;
- private int capacidadePortaMalas;
- public Carro(int nrCilindradas, double vlrCombustivel) {
- super(nrCilindradas, vlrCombustivel);
- }
- public Carro(int nrPassageiros, int capacidadePortaMalas, int nrCilindradas, double vlrCombustivel) {
- super(nrCilindradas, vlrCombustivel);
- this.nrPassageiros = nrPassageiros;
- this.capacidadePortaMalas = capacidadePortaMalas;
- }
- @Override
- public String imprime() {
- return "Informações do Carro\n"+
- this.getNrCilindradas()+"\n"+
- this.getVlrCombustivel()+"\n"+
- this.nrPassageiros+"\n"+
- this.capacidadePortaMalas;
- }
- }
c) 
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author Aluno
- */
- public class Caminhao extends Veiculo {
- private double peso;
- private double carga;
- public Caminhao(int nrCilindradas, double vlrCombustivel) {
- super(nrCilindradas, vlrCombustivel);
- }
- public Caminhao(double peso, double carga, int nrCilindradas, double vlrCombustivel) {
- super(nrCilindradas, vlrCombustivel);
- this.peso = peso;
- this.carga = carga;
- }
- @Override
- public String imprime() {
- return "Informações do Carro\n"+
- this.getNrCilindradas()+"\n"+
- this.getVlrCombustivel()+"\n"+
- this.carga+"\n"+
- this.peso;
- }
- }
d) Interface:
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import modelo.Moto;
- /**
- *
- * @author Aluno
- */
- public class UIVeiculo {
- public static void main(String[] args) {
- Moto m = new Moto("4 tempos","a disco",4,2.45);
- javax.swing.JOptionPane.showMessageDialog(null, m.imprime(),"Mensagem",javax.swing.JOptionPane.INFORMATION_MESSAGE);
- }
- }
Exemplo de interface Cartão que servirá para que sejam criadas classes que implementem a interface de acordo com a data comemorativa.
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author Aluno
- */
- public interface Cartao {
- public String showMessage();
- }
Classe Aniversário que implementa a interface Cartão
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author paulo983
- */
- public class Aniversario implements Cartao{
- private String destinatario;
- public Aniversario(String destinatario) {
- this.destinatario = destinatario;
- }
- public String getDestinatario() {
- return destinatario;
- }
- public void setDestinatario(String destinatario) {
- this.destinatario = destinatario;
- }
- @Override
- public String showMessage() {
- return "Prezado(a) "+this.getDestinatario()+",\n\n" +
- "Feliz Aniversário!\n\n" +
- "Que sua vida seja pontilhada de bons e felizes momentos.\n\n"+
- "João";
- }
- }
Classe DiaDosNamorados que implementa a classe Cartão
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author Aluno
- */
- public class DiaDosNamorados implements Cartao{
- private String destinatario;
- public DiaDosNamorados(String destinatario) {
- this.destinatario = destinatario;
- }
- public String getDestinatario() {
- return destinatario;
- }
- public void setDestinatario(String destinatario) {
- this.destinatario = destinatario;
- }
- @Override
- public String showMessage() {
- return "Querido(a) "+this.getDestinatario()+",\n\n" +
- "Feliz Dia dos Namorados! \n\n" +
- "Espero que esse tenha sido o único cartão do dia dos namorados que tenha ganhado nessa data! \n" +
- "De todo meu coração,\n\n" +
- "João";
- }
- }
Classe Natal que implementa a classe Cartão
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package modelo;
- /**
- *
- * @author paulo983
- */
- public class Natal implements Cartao {
- private String destinatario;
- public Natal(String destinatario) {
- this.destinatario = destinatario;
- }
- public String getDestinatario() {
- return destinatario;
- }
- public void setDestinatario(String destinatario) {
- this.destinatario = destinatario;
- }
- @Override
- public String showMessage() {
- return "Prezado(a) "+this.getDestinatario()+",\n\n" +
- "Feliz Natal!\n\n"+
- "A Melhor mensagem de Natal é aquela que sai em silêncio de nossos corações\n"+
- "e aquece com ternura os corações daqueles que nos acompanham em nossa caminhada pela vida.\n\n"+
- "João";
- }
- }
Essa classe chama as outras:
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package visao;
- import javax.swing.JOptionPane;
- import modelo.Aniversario;
- import modelo.Cartao;
- import modelo.DiaDosNamorados;
- import modelo.Natal;
- /**
- *
- * @author Aluno
- */
- public class UICartao {
- public static void main(String[] args) {
- //Repare que foi criado um array de objetos do tipo Cartao
- Cartao[] dn = {new DiaDosNamorados("Cátia"),
- new Natal("Maria da Glória"),
- new DiaDosNamorados("Paula"),
- new Aniversario("Carlos Eduardo")
- };
- for(Cartao cartoes : dn)
- JOptionPane.showMessageDialog(null, cartoes.showMessage(),"Mensagem",javax.swing.JOptionPane.INFORMATION_MESSAGE);
- }
- }
 
No comments:
Post a Comment