Escreva as seguintes classes:
b) Uma subclasse de Pessoa, chamada Funcionario. A classe Funcionario deve ter os atributos matricula (inteiro) e salário (double), com seus respectivos métodos get e set. O salário de um funcionário jamais poderá ser negativo. Todo funcionário recebe seu salário em duas parcelas, sendo na primeira parcela e 40% na segunda parcela. Assim, escreva os métodos getSalarioPrimeiraParcela que retorna o valor da primeira parcela do salário (60%) e getSalarioSegundaParcela que retorna o valor da segunda parcela do salário .

Passo 1

Beleza, vamos resolver esse exercício juntos! A gente precisa trabalhar com Programação Orientada a Objetos (POO), que é uma maneira de organizar o código usando classes e objetos. No caso, vamos criar uma subclasse chamada Funcionario que herda de uma classe Pessoa. Precisamos adicionar alguns atributos como matricula e salario, garantir que o salário não seja negativo, e criar métodos para obter as duas parcelas do salário (60% e 40%). Para isso, vamos usar conceitos como encapsulamento (usando getters e setters) e herança.

Passo 2

Primeiro, vamos definir a classe Funcionario como uma subclasse de Pessoa. Isso significa que Funcionario vai herdar todos os atributos e métodos da classe Pessoa. Em muitas linguagens de programação, como Java, usamos a palavra-chave extends para isso.
public class Funcionario extends Pessoa {
    // Atributos e métodos vão aqui
}

Passo 3

Agora, vamos adicionar os atributos específicos da classe Funcionario: matricula (um número inteiro que identifica o funcionário) e salario (um número de ponto flutuante que representa o salário). Esses atributos devem ser privados para seguir o princípio do encapsulamento, o que significa que só podem ser acessados através de métodos.
public class Funcionario extends Pessoa {
    private int matricula;
    private double salario;
    
    // Métodos vão aqui
}

Passo 4

Vamos criar os métodos getters e setters para esses atributos. Os getters servem para obter o valor dos atributos, e os setters para definir esses valores. No caso do salario, queremos garantir que ele nunca seja negativo. Para isso, no setter do salario, vamos verificar se o valor é positivo antes de atribuir.
public class Funcionario extends Pessoa {
    private int matricula;
    private double salario;
    
    // Getter para matricula
    public int getMatricula() {
        return matricula;
    }
    
    // Setter para matricula
    public void setMatricula(int matricula) {
        this.matricula = matricula;
    }
    
    // Getter para salario
    public double getSalario() {
        return salario;
    }
    
    // Setter para salario com verificação
    public void setSalario(double salario) {
        if(salario >= 0){
            this.salario = salario;
        } else {
            System.out.println("O salário não pode ser negativo.");
        }
    }
}

Passo 5

Por fim, vamos criar os métodos que retornam as duas parcelas do salário: getSalarioPrimeiraParcela que retorna 60% do salário, e getSalarioSegundaParcela que retorna 40% do salário. Usamos a fórmula da porcentagem para calcular esses valores.
A fórmula para calcular uma porcentagem é:
Então, para 60%:
á
E para 40%:
á
Vamos implementar isso nos métodos.
public class Funcionario extends Pessoa {
    private int matricula;
    private double salario;
    
    // Getters e Setters anteriores
    
    // Método para obter a primeira parcela (60%)
    public double getSalarioPrimeiraParcela() {
        return salario * 0.60;
    }
    
    // Método para obter a segunda parcela (40%)
    public double getSalarioSegundaParcela() {
        return salario * 0.40;
    }
}

Resposta

Aqui está a classe completa Funcionario seguindo todas as especificações:
public class Funcionario extends Pessoa {
    private int matricula;
    private double salario;
    
    // Getter para matricula
    public int getMatricula() {
        return matricula;
    }
    
    // Setter para matricula
    public void setMatricula(int matricula) {
        this.matricula = matricula;
    }
    
    // Getter para salario
    public double getSalario() {
        return salario;
    }
    
    // Setter para salario com verificação
    public void setSalario(double salario) {
        if(salario >= 0){
            this.salario = salario;
        } else {
            System.out.println("O salário não pode ser negativo.");
        }
    }
    
    // Método para obter a primeira parcela (60%)
    public double getSalarioPrimeiraParcela() {
        return salario * 0.60;
    }
    
    // Método para obter a segunda parcela (40%)
    public double getSalarioSegundaParcela() {
        return salario * 0.40;
    }
}
Com essa classe, você pode criar objetos Funcionario, definir suas matrículas e salários (garantindo que o salário não seja negativo), e obter as duas parcelas do salário conforme solicitado.

Exercícios relacionados

(String) Escreva um programa que muda a ordem da primeira e da última palavra de uma frase.
Apresente um esquema recursivo para dividir dois números inteiros usando contagens sucessivas. Por exemplo: calcular A/B sendo e . Sabemos que dividir A por B é o mesmo que descobrir quantas vezes B cabe em A . Assim, para dividir 18 por 4 podemos contar o no. de vezes que 4 cabe dentro de 18 .
Escreva as seguintes classes:
d) Uma classe que contenha o método main e instancie os seguintes objetos com os respectivos valores:
pessoa1 (Pessoa) pessoa2 pessoa3 pessoa4
nome: João (Funcionario) (Professor) (Professor)
sobrenome: Silva nome: Maria nome: José nome: Ana
sobrenome: sobrenome: sobrenome:
Medeiros Souza Oliveira
salário: 1750.00 salário: -500.00 salário: 1500.00
Implemente:
a) Uma classe MeioDeTransporte com atributos ligado (boolean) e velocidade (inteiro) e métodos liga() e desliga (). O método ligado torna o atributo ligado true e o método desliga torna o atributo ligado false, além de tornar a velocidade zero. Crie também métodos get e set para modificar o atributo velocidade, sendo que a velocidade não pode ser negativa.