28
FACULDADE ANHANGUERA DE TAUBATÉ – UNIDADE II ATIVIDADES PRÁTICAS SUPERVISIONADAS Programação Orientada à Objetos II 2º Bimestre / 2015 Curso: Ciência da Computação Semestre: 5º e 6º - Turma A – Ano: 2015 Nome RA 1

ATPS POO2

Embed Size (px)

DESCRIPTION

Etapa 3 e 4 da atps de programação orientada a objetos 2.

Citation preview

Page 1: ATPS POO2

FACULDADE ANHANGUERA DE TAUBATÉ – UNIDADE II

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Programação Orientada à Objetos II

2º Bimestre / 2015

Curso: Ciência da ComputaçãoSemestre: 5º e 6º - Turma A – Ano: 2015

Nome RA

Taubaté26 de novembro de 2015

1

Page 2: ATPS POO2

Lista de figuras.

Figura 1: Tela principal.............................................................................................................21Figura 2: Cadastro de celetista..................................................................................................21Figura 3: Pagamento de celetista..............................................................................................21Figura 4: Imposto de celetista...................................................................................................21Figura 5: Cadastro de pessoa jurídica.......................................................................................21Figura 6: Imposto de pessoa jurídica........................................................................................22Figura 7: Pagamento de pessoa jurídica....................................................................................22Figura 8: Imposto de produto....................................................................................................22Figura 9: Cadastro de produto...................................................................................................22

2

Page 3: ATPS POO2

Sumário.

1. Código Fonte.......................................................................................................................4

1.1 Classe ATPS........................................................................................................................4

1.2 Classe Colaborador..............................................................................................................5

1.3 Classe Celetista....................................................................................................................6

1.4 Classe Pessoa Jurídica..........................................................................................................9

1.5 Classe Imposto...................................................................................................................12

1.6 Classe Produto...................................................................................................................13

1.7 Classe Formulário Celetista...............................................................................................14

1.8 Classe Formulário Pessoa Jurídica.....................................................................................17

1.9 Classe Formulário Produto................................................................................................19

2. Conclusão..........................................................................................................................22

3. Referências........................................................................................................................22

3

Page 4: ATPS POO2

1. Código Fonte:

1.1 Classe ATPS:

package atps;

import javax.swing.JOptionPane;

public class ATPS {

public static void main(String[] args) {

//criando ojetos do tipo formulário

FrmCLT meuFormCLT = new FrmCLT();

FrmPJ meuFormPJ = new FrmPJ();

FrmProduto meuFormProduto = new FrmProduto();

String opcao;

do {

opcao = JOptionPane.showInputDialog("CLT, PJ ou PRODUTO?");

if (opcao == null) {

System.exit(0); }

opcao = opcao.toUpperCase(); }

while (!opcao.equals("CLT") && !opcao.equals("PJ") && !opcao.equals("PRODUTO"));

switch (opcao) {

case "CLT":

meuFormCLT.setVisible(true); //mostra o formulário "Celetista" break;

case "PJ":

meuFormPJ.setVisible(true); //mostra o formulário "Pessoa Jurídica" break;

case "PRODUTO":

meuFormProduto.setVisible(true); //mostra o formulário "Produto" break; } } }

4

Page 5: ATPS POO2

1.2 Classe Colaborador:

package atps;

public abstract class Colaborador {

//atributos encapsulados

private String nome, endereco, telefone;

//metodos setter's

public void setNome(String nome) {

this.nome = nome; }

public void setEndereco(String endereco) {

this.endereco = endereco; }

public void setTelefone(String telefone) {

this.telefone = telefone; }

//metodos getter's

public String getNome() {

return this.nome; }

public String getEndereco() {

return this.endereco; }

public String getTelefone() {

return this.telefone; }

//construtor da classe

public Colaborador(String nome, String endereco, String telefone) {

this.nome = nome;

this.endereco = endereco;

this.telefone = telefone; }

//sobrecarga do construtor(overloading)

5

Page 6: ATPS POO2

public Colaborador() {

this.nome = " ";

this.endereco = " ";

this.telefone = " "; }

//método que recebe horas trabalhadas e calcula o valor bruto

public abstract void valorBruto(int horas);

//método que recebe horas trabalhas e retorna um array

public abstract Imposto[] Inpostos(int horas); }

1.3 Classe Celetista:

package atps;

import javax.swing.JOptionPane;

public class Celetista extends Colaborador {

Imposto[] imp = new Imposto[2];

//atributos encapsulados

private String rg, cpf;

private double salarioMensal;

//atributos globais

int horaExtra, horaTrabalhada;

double valorHoraExtra, valorBruto = 0, valorLiquido, irff, inss, totalImpostos;

//metodos setter's

public void setRg(String rg) {

this.rg = rg; }

public void setCpf(String cpf) {

6

Page 7: ATPS POO2

this.cpf = cpf; }

public void setSalarioMensal(double salarioMensal) {

this.salarioMensal = salarioMensal; }

//metodos getter's

public String getRg() {

return this.rg; }

public String getCfp() {

return this.cpf; }

public double getSalarioMensal() {

return this.salarioMensal; }

//construtor da classe

public Celetista(String nome, String endereco, String telefone, String rg,

String cpf, double salarioMensal) {

super(nome, endereco, telefone);

this.rg = rg;

this.cpf = cpf;

this.salarioMensal = salarioMensal; }

//sobrecarga do construtor(overloading)

public Celetista() {

super(" ", " ", " ");

this.rg = " ";

this.cpf = " ";

this.salarioMensal = 1; }

public String totImpostos() {

return "Total de impostos: R$" + totalImpostos; }

public Imposto[] totalImposto() {

//calculando o total dos impostos

7

Page 8: ATPS POO2

totalImpostos = irff + inss;

Imposto[] tot = new Imposto[1];

tot[0] = new Imposto("Total de impostos: R$", totalImpostos);

return tot; }

@Override

public void valorBruto(int horas) {

//calculando o salario bruto

if (horaTrabalhada < 160) {

valorBruto = salarioMensal;

} else if (horaTrabalhada >= 160) {

valorHoraExtra = salarioMensal / 160;

valorBruto = salarioMensal + (horaTrabalhada * valorHoraExtra); }

//calculando o valor liquído

valorLiquido = valorBruto - (irff + inss);

//calculando o total dos impostos

totalImpostos = irff + inss;

JOptionPane.showMessageDialog(null, "Valor bruto: R$" + valorBruto

+ " - IRFF: R$" + irff

+ " - INSS: R$" + inss

+ " - Valor liquido: R$" + valorLiquido,

"Informacoes de pagamento para CLT",

JOptionPane.INFORMATION_MESSAGE); }

@Override

public Imposto[] Inpostos(int horas) {

//descontando o IRRF

if (salarioMensal < 1499.15) {

8

Page 9: ATPS POO2

irff = 0;

} else if (salarioMensal > 1499.15 && salarioMensal <= 2246.75) {

irff = (salarioMensal * 0.075) - 112.43;

} else if (salarioMensal > 2246.75 && salarioMensal <= 2995.70) {

irff = (salarioMensal * 0.15) - 280.94;

} else if (salarioMensal > 2995.70 && salarioMensal <= 3743.19) {

irff = (salarioMensal * 0.225) - 505.62;

} else {

irff = (salarioMensal * 0.275) - 692.78; }

imp[0] = new Imposto(" - IRRF: R$", irff);

//descontando o INSS

if (salarioMensal < 965.67) {

inss = salarioMensal * 0.08;

} else if (salarioMensal > 965.67 && salarioMensal <= 1609.45) {

inss = salarioMensal * 0.09;

} else {

inss = salarioMensal * 0.11;

}

if (inss > 354.08) {

inss = 354.08; }

imp[1] = new Imposto(" - INSS: R$", inss);

return imp; } }

1.4 Classe Pessoa Jurídica:

package atps;

import javax.swing.JOptionPane;

public class PessoaJuridica extends Colaborador {

//atributos encapsulados

9

Page 10: ATPS POO2

private String cnpj;

private double valorHora = 0;

//atributos globais

int horaTrabalhada;

double valorBruto, irrf, pis, iss, valorLiquido, totalImpostos;

//metodos setter's

public void setCnpj(String cnpj) {

this.cnpj = cnpj; }

public void setValorHora(double valorHora) {

this.valorHora = valorHora; }

//metodos getter's

public String getCnpj() {

return this.cnpj;}

public double getValorHora() {

return this.valorHora; }

//construtor da classe

public PessoaJuridica(String nome, String endereco, String telefone,

String cnpj, double valorHora) {

super(nome, endereco, telefone);

this.cnpj = cnpj;

this.valorHora = valorHora; }

//sobrecarga do construtor(overloading)

public PessoaJuridica() {

super(" ", " ", " ");

this.cnpj = " ";

this.valorHora = 1; }

10

Page 11: ATPS POO2

public String totImpostos() {

return "Total de impostos: R$" + totalImpostos; }

public Imposto[] totalImposto() {

//calculando o total dos impostos

totalImpostos = irrf + iss;

Imposto[] tot = new Imposto[1];

tot[0] = new Imposto("Total de impostos: R$", totalImpostos);

return tot; }

@Override

public void valorBruto(int horas) {

//calculando o salario bruto

valorBruto = valorHora * horaTrabalhada;

//calculando o valor liquido

valorLiquido = valorBruto - (irrf + pis + iss);

JOptionPane.showMessageDialog(null, "Valor bruto: R$" + valorBruto

+ " - IRRF: R$" + irrf

+ " - PIS/CONFINS/CSLL/ISS: R$" + iss

+ " - Valor liquido: R$" + valorLiquido,

"Informacoes de pagamento para PJ",

JOptionPane.INFORMATION_MESSAGE);}

@Override

public Imposto[] Inpostos(int horas) {

Imposto[] imp = new Imposto[3];

//descontando o IRFF

11

Page 12: ATPS POO2

irrf = valorBruto * 0.015;

imp[0] = new Imposto("IRRF: R$", irrf);

//descontando o PIS/CONFINS/CSLL e o ISS

if (valorBruto > 5000.00) {

pis = valorBruto * 0.0465;

iss = valorBruto * 0.04;

} else {

pis = 0;

iss = 0; }

imp[1] = new Imposto("PIS: R$", pis);

imp[2] = new Imposto("ISS: R$", iss);

return imp; } }

1.5 Classe Imposto:

package atps;

public class Imposto {

private String nomeImposto;

private double valorImposto;

public Imposto(String nomeImposto, double valorImposto) {

this.nomeImposto = nomeImposto;

this.valorImposto = valorImposto; }

public String getNomeImposto() {

return nomeImposto; }

public void setNomeImposto(String nomeImposto) {

this.nomeImposto = nomeImposto; }

public double getValorImposto() {

return valorImposto; }

12

Page 13: ATPS POO2

public void setValorImposto(double valorImposto) {

this.valorImposto = valorImposto; } }

1.6 Classe Produto:

package atps;

public class Produto {

//atributos encapsulados

private String nomeProduto;

private double precoProduto;

//atributos globais

double icms, ipi, pis, cofins;

//métodos setter's

public void setNomeProduto(String nomeProduto) {

this.nomeProduto = nomeProduto; }

public void setPrecoProduto(double precoProduto) {

this.precoProduto = precoProduto; }

//métodos getter's

public String getNomeProduto() {

return nomeProduto; }

public double getPrecoProduto() {

return precoProduto; }

//construtor da classe

public Produto(String nomeProduto, double precoProduto) {

this.nomeProduto = nomeProduto;

13

Page 14: ATPS POO2

this.precoProduto = precoProduto; }

//sobrecarga do construtor(overloading)

public Produto() {

this.nomeProduto = " ";

this.precoProduto = 1; }

//método da classe

public String totalImpostos() {

double totalImpostos, total;

//calculando icms,ipi,pis,cofins

icms = precoProduto * 0.07;

ipi = precoProduto * 0.05;

pis = precoProduto * 0.0165;

cofins = precoProduto * 0.076;

//calculando o total de impostos

totalImpostos = icms + ipi + pis + cofins;

total = precoProduto + totalImpostos;

return "Nome do produto: " + nomeProduto

+ " - Preco do produto: R$" + precoProduto

+ " - Total de impostos: R$" + totalImpostos

+ " - Preco total: R$" + total; } }

1.7 Classe Formulário Celetista:

package atps;

import java.awt.HeadlessException;

import javax.swing.JOptionPane;

14

Page 15: ATPS POO2

public class FrmCLT extends javax.swing.JFrame {

//criando um objeto do tipo celetista

Celetista meuCeletista = new Celetista();

public FrmCLT() {

initComponents();

setTitle("Folha de Pagamento"); //titulo do formulário

this.setLocationRelativeTo(null); //inicializa o formulário no centro da tela }

private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {

try {

meuCeletista.setNome(txtNome.getText());

meuCeletista.setEndereco(txtEndereco.getText());

meuCeletista.setTelefone(txtTelefone.getText());

meuCeletista.setRg(txtRG.getText());

meuCeletista.setCpf(txtCPF.getText());

meuCeletista.setSalarioMensal(Double.parseDouble(txtSalario.getText()));

JOptionPane.showMessageDialog(null, "Dados salvos com sucesso!");

} catch (NumberFormatException | HeadlessException ex) {

JOptionPane.showMessageDialog(null, "Todos os campos sao obrigatorios!"); } }

private void btnPagamentoActionPerformed(java.awt.event.ActionEvent evt) {

//verificando se o colaborador existe

if (" ".equals(meuCeletista.getNome()) || " ".equals(meuCeletista.getEndereco())

|| " ".equals(meuCeletista.getTelefone()) || " ".equals(meuCeletista.getRg())

|| " ".equals(meuCeletista.getCfp()) || meuCeletista.getSalarioMensal() == 1) {

JOptionPane.showMessageDialog(null, "Crie um colaborador primeiro!", "Erro!",

JOptionPane.ERROR_MESSAGE);

} else {

//dados necessários para os cálculos

15

Page 16: ATPS POO2

String horaTrabalhadaStr = JOptionPane.showInputDialog("Informe o numero de

horas trabalhadas");

if (horaTrabalhadaStr != null) {

meuCeletista.horaTrabalhada = Integer.parseInt(horaTrabalhadaStr); }

if (meuCeletista.horaTrabalhada >= 160) {

String horaExtraStr = JOptionPane.showInputDialog("Digite o numero de horas

extras");

if (horaExtraStr != null) {

meuCeletista.horaExtra = Integer.parseInt(horaExtraStr); }

String valorHoraExtraStr = JOptionPane.showInputDialog("Digite o valor da hora

extra");

if (valorHoraExtraStr != null) {

meuCeletista.valorHoraExtra = Double.parseDouble(valorHoraExtraStr); } }

//mostra o pagamento

meuCeletista.Inpostos(1);

meuCeletista.valorBruto(1); } }

private void btnTotalImpostosActionPerformed(java.awt.event.ActionEvent evt) {

//mostra o total de impostos

meuCeletista.totalImposto();

JOptionPane.showMessageDialog(null, meuCeletista.totImpostos()); }

/* Create and display the form */

java.awt.EventQueue.invokeLater(() -> {

new FrmCLT().setVisible(true); }); }

// Variables declaration - do not modify

private javax.swing.JButton btnPagamento;

private javax.swing.JButton btnSalvar;

16

Page 17: ATPS POO2

private javax.swing.JButton btnTotalImpostos;

private javax.swing.JLabel lblCPF;

private javax.swing.JLabel lblEndereco;

private javax.swing.JLabel lblNome;

private javax.swing.JLabel lblRG;

private javax.swing.JLabel lblSalario;

private javax.swing.JLabel lblTelefone;

private javax.swing.JTextField txtCPF;

private javax.swing.JTextField txtEndereco;

private javax.swing.JTextField txtNome;

private javax.swing.JTextField txtRG;

private javax.swing.JTextField txtSalario;

private javax.swing.JTextField txtTelefone;

// End of variables declaration }

1.8 Classe Formulário Pessoa Jurídica:

package atps;

import java.awt.HeadlessException;

import javax.swing.JOptionPane;

public class FrmPJ extends javax.swing.JFrame {

//criando um objeto do tipo Pessoa Jurídica

PessoaJuridica meuPessoaJuridica = new PessoaJuridica();

public FrmPJ() {

initComponents();

setTitle("Folha de Pagamento"); //titulo do formulário

this.setLocationRelativeTo(null); //inicializa o formulário no centro da tela }

17

Page 18: ATPS POO2

private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {

try {

meuPessoaJuridica.setNome(txtNome.getText());

meuPessoaJuridica.setEndereco(txtEndereco.getText());

meuPessoaJuridica.setTelefone(txtTelefone.getText());

meuPessoaJuridica.setCnpj(txtCNPJ.getText());

meuPessoaJuridica.setValorHora(Double.parseDouble(txtValorHora.getText()));

JOptionPane.showMessageDialog(null, "Dados salvos com sucesso!");

} catch (NumberFormatException | HeadlessException ex) {

JOptionPane.showMessageDialog(null, "Todos os campos sao obrigatorios!"); }

}

private void btnPagamentoActionPerformed(java.awt.event.ActionEvent evt) {

//verificando se o colaborador existe

if (" ".equals(meuPessoaJuridica.getNome()) || "

".equals(meuPessoaJuridica.getEndereco())

|| " ".equals(meuPessoaJuridica.getTelefone()) || "

".equals(meuPessoaJuridica.getCnpj())

|| meuPessoaJuridica.getValorHora() == 1) {

JOptionPane.showMessageDialog(null, "Crie um colaborador primeiro!", "Erro!",

JOptionPane.ERROR_MESSAGE);

} else {

//dados necessários para os cálculos

String horaTrabalhadaStr = JOptionPane.showInputDialog("Informe o numero de

horas trabalhadas");

if (horaTrabalhadaStr != null) {

meuPessoaJuridica.horaTrabalhada = Integer.parseInt(horaTrabalhadaStr); }

//mostra o pagamento

meuPessoaJuridica.valorBruto(1);

meuPessoaJuridica.Inpostos(1);

} }

18

Page 19: ATPS POO2

private void btnImpostosActionPerformed(java.awt.event.ActionEvent evt) {

//mostra o total de impostos

meuPessoaJuridica.totalImposto();

JOptionPane.showMessageDialog(null, meuPessoaJuridica.totImpostos()); }

/* Create and display the form */

java.awt.EventQueue.invokeLater(() -> {

new FrmPJ().setVisible(true); }); }

// Variables declaration - do not modify

private javax.swing.JButton btnImpostos;

private javax.swing.JButton btnPagamento;

private javax.swing.JButton btnSalvar;

private javax.swing.JLabel lblCNPJ;

private javax.swing.JLabel lblEndereco;

private javax.swing.JLabel lblNome;

private javax.swing.JLabel lblTelefone;

private javax.swing.JLabel lblValorHora;

private javax.swing.JTextField txtCNPJ;

private javax.swing.JTextField txtEndereco;

private javax.swing.JTextField txtNome;

private javax.swing.JTextField txtTelefone;

private javax.swing.JTextField txtValorHora;

// End of variables declaration }

1.9 Classe Formulário Produto:

package atps;

import java.awt.HeadlessException;

import javax.swing.JOptionPane;

19

Page 20: ATPS POO2

public class FrmProduto extends javax.swing.JFrame {

//criando um objeto do tipo produto

Produto meuProduto = new Produto();

public FrmProduto() {

initComponents();

setTitle("Folha de Pagamento"); //titulo do formulário

this.setLocationRelativeTo(null); //inicializa o formulário no centro da tela }

private void btnTotalImpostosActionPerformed(java.awt.event.ActionEvent evt) {

//verificando se o produto existe

if (" ".equals(meuProduto.getNomeProduto()) || meuProduto.getPrecoProduto() == 1) {

JOptionPane.showMessageDialog(null, "Cadastre um produto primeiro!", "Erro!",

JOptionPane.ERROR_MESSAGE);

} else {

//mostra o total de impostos de um produto

JOptionPane.showMessageDialog(null, meuProduto.totalImpostos(),

"Informacoes de imposto sobre um

produto",JOptionPane.INFORMATION_MESSAGE); } }

/* Create and display the form */

java.awt.EventQueue.invokeLater(() -> {

new FrmProduto().setVisible(true); }); }

// Variables declaration - do not modify

private javax.swing.JButton btnSalvar;

private javax.swing.JButton btnTotalImpostos;

private javax.swing.JLabel lblNomeProduto;

private javax.swing.JLabel lblPreco;

private javax.swing.JTextField txtNomeProduto;

20

Page 21: ATPS POO2

private javax.swing.JTextField txtPreco;

// End of variables declaration }

2.

Conclusão.

Na etapa 3 e 4 deste trabalho, foram usados os conceitos de atributos, métodos,

construtores, sobrecarga, herança, polimorfismo, interfaces gráficas, classes e métodos

abstratos. O programa permite que o usuário cadastre um colaborador (celetista ou pessoa

jurídica) ou um produto; calcula e mostra o seu salário líquido e o valor dos impostos.

3. Referências.

Figura 1: Tela principal

Figura 2: Cadastro de celetista Figura 3: Pagamento de celetista

Figura 4: Imposto de celetista Figura 5: Cadastro de pessoa jurídica

Figura 6: Pagamento de pessoa jurídica Figura 7: Imposto de pessoa jurídica

Figura 9: Cadastro de produto Figura 8: Imposto de produto

21

Page 22: ATPS POO2

Livro-texto da disciplina de Programação Orientada a Objetos (SANTOS, Rafael. Introdução

à Programação Orientada a Objetos Usando Java. 1ª ed. Rio de Janeiro: Campus Elsevier,

2008).

TOLEDO, Rafael. Classes e Métodos Abstratos. Publicado em: 19 de dezembro de 2011.

Disponível em: < http://www.rafaeltoledo.net/classes-e-metodos-abstratos/>. Acesso em: 23

de novembro de 2015.

22