Skip to content

Instantly share code, notes, and snippets.

@romulomourao
Last active May 26, 2017 03:12
Show Gist options
  • Save romulomourao/9150ccfbf34779fa362258dc28b2e262 to your computer and use it in GitHub Desktop.
Save romulomourao/9150ccfbf34779fa362258dc28b2e262 to your computer and use it in GitHub Desktop.

Questão 1

Como a classe Ponto3D é filha de Ponto2D ela herda seus atributos e métodos, mas é necessaŕio colocar o super() para passar os parametros para a classe pai.

class Ponto2D {

    private double x, y;

    Ponto2D(double _x, double _y) {
        x = _x;
        y = _y;
    }
  
}

class Ponto3D extends Ponto2D {

    private double z;

    Ponto3D(double _x, double _y, double _z) {
        super(_x,_y);
        z = _z;
       
    }

}

Questão 2

Mesmo problema da questão 1

Questão 3 (a/b)

classe Funcionario

public class Funcionario {
    private String nome;
    private String matricula;
    private double salarioBruto;
    private double deducoes;

    public Funcionario(String nome, String matricula, double salarioBruto, double deducoes) {
        this.nome = nome;
        this.matricula = matricula;
        this.salarioBruto = salarioBruto;
        this.deducoes = deducoes;
    }

    public double salarioLiquido(){
        return salarioBruto - deducoes;
    }


    public double getSalarioBruto() {
        return salarioBruto;
    }


    public double getDeducoes() {
        return deducoes;
    }

    
    @Override
    public String toString(){
        return "Nome: " + this.nome +
                "\nMat.: " + this.matricula +
                "\nSalário bruto: R$" + this.salarioBruto +
                "\nDeduções: R$" + this.deducoes +
                "\nSalário líquido: R$"  + this.salarioLiquido()+
                "\n";
    }
    
}

classe Gerente

public class Gerente extends Funcionario {
    
    private int categoria; 
    private String departamento;
    
    public Gerente(String nome, String matricula, double salarioBruto, double deducoes, int categoria, String departamento) {
        super(nome, matricula, salarioBruto, deducoes);
        this.categoria = categoria;
        this.departamento = departamento;
    }

    @Override
    public double salarioLiquido() {
        double salarioBase = getSalarioBruto() - getDeducoes();
        double porcentagem = 0.1;
        switch(this.categoria){
            case 1:
                return salarioBase + (salarioBase * porcentagem);
            case 2:
                porcentagem = 0.2;
                return salarioBase + (salarioBase * porcentagem);
                
            default:
                System.out.println("Esta categoria não existe");
                return 0;
        }
    }
    
    public String toString(){
        return super.toString() + 
                "Departamento: " + this.departamento +
                "\nCategoria: " + this.categoria;
    }
    
    
    
}

classe Empresa (main)

public class Empresa {
    
    public static void main(String[] args) {
        Funcionario funcionario = new Funcionario("José", "12-341", 1200.0, 200.0);
        Gerente gerente1 = new Gerente("Carlos", "12-451", 2500.0, 300.0, 1, "Vendas");
        Gerente gerente2 = new Gerente("Marcos", "12-251", 3200.0, 400.0, 2, "Operações");
        System.out.println("Funcionario - R$" + funcionario.salarioLiquido());
        System.out.println("Gerente categoria 1 - R$" + gerente1.salarioLiquido());
        System.out.println("Gerente categoria 2 - R$" + gerente2.salarioLiquido());
        System.out.println("---------");
        System.out.println(funcionario.toString()+"\n -------");
        System.out.println(gerente1.toString()+"\n -------");
        System.out.println(gerente2.toString());
    }
    
}

Questão 4

Adicionando um atributo dataDeAdmissao na Classe funcionario, que pra fins de teste foi inicializada com a data de 2000-01-01, podemos usar o método tempoDeCasa() que retornará o a diferença entre a data atual e a data de admissão em anos. No exemplo abaixo o retorno seria 17 anos, levando em consideração que estamos em 2017.

import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.time.LocalDate;

public class Funcionario {
    private String nome;
    private String matricula;
    private double salarioBruto;
    private double deducoes;
    private LocalDate dataDeAdmissao;

    public Funcionario(String nome, String matricula, double salarioBruto, double deducoes) {
        this.dataDeAdmissao = LocalDate.of(2000, 1, 1);
        this.nome = nome;
        this.matricula = matricula;
        this.salarioBruto = salarioBruto;
        this.deducoes = deducoes;
    }

    public double salarioLiquido(){
        return salarioBruto - deducoes;
    }

    public void setDataDeAdmissao(LocalDate data){
   
        this.dataDeAdmissao = data;
    }

    public void tempoDecasa(){
        System.out.println(nome + 
                " está empregado há " + 
                ChronoUnit.YEARS.between(dataDeAdmissao, LocalDate.now())
                +" anos");
        
    }
    public double getSalarioBruto() {
        return salarioBruto;
    }
    ```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment