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

Passo 1

Beleza, vamos lá! O que a gente tem aqui é um exercício de programação orientada a objetos. A gente precisa criar uma classe que tenha o método main e, dentro dele, instanciar quatro objetos diferentes: uma Pessoa, duas Funcionário e duas Professor, cada uma com atributos específicos como nome, sobrenome e salário. Para resolver isso, vamos precisar entender como criar classes em Java, como usar herança (já que Funcionario e Professor provavelmente herdam de Pessoa) e como instanciar objetos com valores específicos.

Passo 2

Primeiro, vamos criar a classe base chamada Pessoa. Essa classe vai ter atributos básicos que todas as pessoas vão ter, como nome e sobrenome. Em Java, a gente define uma classe assim:
public class Pessoa {
    private String nome;
    private String sobrenome;

    // Construtor
    public Pessoa(String nome, String sobrenome) {
        this.nome = nome;
        this.sobrenome = sobrenome;
    }

    // Getters e Setters
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSobrenome() {
        return sobrenome;
    }

    public void setSobrenome(String sobrenome) {
        this.sobrenome = sobrenome;
    }
}
Aqui, private significa que os atributos não podem ser acessados diretamente de fora da classe, e usamos métodos get e set para acessar e modificar esses atributos.

Passo 3

Agora, vamos criar a classe Funcionario que herda de Pessoa e adiciona um atributo específico: salario. Herança é quando uma classe herda os atributos e métodos de outra, facilitando a reutilização de código. Em Java, usamos a palavra-chave extends para isso:
public class Funcionario extends Pessoa {
    private double salario;

    // Construtor
    public Funcionario(String nome, String sobrenome, double salario) {
        super(nome, sobrenome); // Chama o construtor da classe Pessoa
        this.salario = salario;
    }

    // Getters e Setters
    public double getSalario() {
        return salario;
    }

    public void setSalario(double salario) {
        this.salario = salario;
    }
}
Aqui, super(nome, sobrenome) chama o construtor da classe Pessoa para inicializar os atributos herdados.

Passo 4

Vamos criar também a classe Professor, que pode ser uma especialização de Funcionario. Se todos os professores são funcionários, podemos fazer com que Professor estenda Funcionario:
public class Professor extends Funcionario {
    // Podemos adicionar atributos específicos do Professor aqui

    // Construtor
    public Professor(String nome, String sobrenome, double salario) {
        super(nome, sobrenome, salario); // Chama o construtor da classe Funcionario
    }

    // Métodos específicos do Professor podem ser adicionados aqui
}
Até agora, temos as classes básicas necessárias: Pessoa, Funcionario e Professor.

Passo 5

Agora, vamos criar a classe que contém o método main. O método main é o ponto de entrada de qualquer programa Java. Dentro dele, vamos instanciar os objetos conforme o enunciado:
public class Main {
    public static void main(String[] args) {
        Pessoa pessoa1 = new Pessoa("João", "Silva");
        Funcionario pessoa2 = new Funcionario("Maria", "Medeiros", 1750.00);
        Professor pessoa3 = new Professor("José", "Souza", -500.00);
        Professor pessoa4 = new Professor("Ana", "Oliveira", 1500.00);

        // Opcional: imprimir os objetos para verificar
        System.out.println("Pessoa1: " + pessoa1.getNome() + " " + pessoa1.getSobrenome());
        System.out.println("Pessoa2: " + pessoa2.getNome() + " " + pessoa2.getSobrenome() + " - Salário: " + pessoa2.getSalario());
        System.out.println("Pessoa3: " + pessoa3.getNome() + " " + pessoa3.getSobrenome() + " - Salário: " + pessoa3.getSalario());
        System.out.println("Pessoa4: " + pessoa4.getNome() + " " + pessoa4.getSobrenome() + " - Salário: " + pessoa4.getSalario());
    }
}
Nesse código:
  • pessoa1 é uma instância de Pessoa com nome “João” e sobrenome “Silva”.
  • pessoa2 é uma instância de Funcionario com nome “Maria”, sobrenome “Medeiros” e salário 1750.00.
  • pessoa3 é uma instância de Professor com nome “José”, sobrenome “Souza” e salário -500.00 (note que um salário negativo pode não fazer sentido, mas estamos seguindo o enunciado).
  • pessoa4 é uma instância de Professor com nome “Ana”, sobrenome “Oliveira” e salário 1500.00.

Resposta

Aqui está a classe completa com o método main que instancia os objetos conforme o exercício:
public class Main {
    public static void main(String[] args) {
        Pessoa pessoa1 = new Pessoa("João", "Silva");
        Funcionario pessoa2 = new Funcionario("Maria", "Medeiros", 1750.00);
        Professor pessoa3 = new Professor("José", "Souza", -500.00);
        Professor pessoa4 = new Professor("Ana", "Oliveira", 1500.00);

        // Opcional: imprimir os objetos para verificar
        System.out.println("Pessoa1: " + pessoa1.getNome() + " " + pessoa1.getSobrenome());
        System.out.println("Pessoa2: " + pessoa2.getNome() + " " + pessoa2.getSobrenome() + " - Salário: " + pessoa2.getSalario());
        System.out.println("Pessoa3: " + pessoa3.getNome() + " " + pessoa3.getSobrenome() + " - Salário: " + pessoa3.getSalario());
        System.out.println("Pessoa4: " + pessoa4.getNome() + " " + pessoa4.getSobrenome() + " - Salário: " + pessoa4.getSalario());
    }
}
Observação: Certifique-se de que as classes Pessoa, Funcionario e Professor estejam definidas no mesmo pacote ou sejam importadas corretamente se estiverem em pacotes diferentes. Além disso, é uma boa prática validar os valores dos atributos, como garantir que o salário não seja negativo, mas isso vai além do que foi solicitado no exercício.

Exercícios relacionados

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 .
(String) Escreva um programa que muda a ordem da primeira e da última palavra de uma frase.
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.
Escreva as seguintes classes:
c) Uma subclasse de Funcionario, chamada Professor. Todo professor recebe seu salário em uma única parcela. Assim, deve-se sobrecrever os métodos getSalarioPrimeiraParcela e getSalarioSegundaParcela. O método getSalarioPrimeiraParcela da classe Professor deve retornar o valor integral do salário do professor e o método getSalarioSegundaParcela do professor deve retornar o valor zero.