Escreva as seguintes classes:
d) Uma classe que contenha o método main e instancie os seguintes objetos com os respectivos valores:
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 dePessoa
com nome “João” e sobrenome “Silva”.pessoa2
é uma instância deFuncionario
com nome “Maria”, sobrenome “Medeiros” e salário 1750.00.pessoa3
é uma instância deProfessor
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 deProfessor
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
.
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
(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.
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.
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.