<p><img src="https://i.imgur.com/D01Fpky.png" alt="" title="Entre no nosso site e veja nossos cursos"></p>
<h1>
<img class="emoji" alt=":coffee:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/coffee.png"> Java OO Aula 3
</h1>
O objetivo deste curso é abordar os principais conceitos, empregar as principais estruturas de dados, e trabalhar utilizando as principais boas práticas de Programação Orientada a Objetos [POO] em **Java**.
<h2 id="-Tema-da-aula" data-id="-Tema-da-aula"><a class="anchor hidden-xs" href="#-Tema-da-aula" title="-Tema-da-aula"><span class="octicon octicon-link"></span></a><img class="emoji" alt=":book:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/book.png">
<span> Tema da aula:</span></h2><p><span>Nessa terceira aula, mostramos um caso de Polimorfismo com Sobrescrita de Métodos - esse tipo de sobrescrita é utilizado em <strong>Herança</strong>, o principal tema da aula. Mostramos uma <strong>Classe Abstrata e método abstrato</strong> Também apresentamos <strong>Array e Lista</strong>, que são duas estruturas de dados muito utilizadas. Mostramos um laço de repetição [loop] usando <strong>for</strong>, e usamos o método <strong>forEach</strong>, que é do <strong>Java8</strong>. </span><br>
<h4>
Estrutura do projeto depois de finalizado
</h4>

<h3>
Funcionario.java
</h3>
<p>Classe abstrata</p>
```java=
package entity;
public abstract class Funcionario {
private Integer codigo;
private String nome;
private String sexo;
private Double salario;
public Funcionario() {
}
public Funcionario(Integer codigo, String nome, String sexo,
Double salario) {
this.codigo = codigo;
this.nome = nome;
this.sexo = sexo;
this.salario = salario;
}
@Override
public String toString() {
return "Funcionario [codigo=" + codigo + ", nome="
+ nome + ", sexo="
+ sexo + ", salario=" + salario + "]";
}
public Integer getCodigo() {
return codigo;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSexo() {
return sexo;
}
public void setSexo(String sexo) {
this.sexo = sexo;
}
public Double getSalario() {
return salario;
}
public void setSalario(Double salario) {
this.salario = salario;
}
public abstract Double gerarBonus();
public String gerarMessage() {
return "Classe Abstrata";
}
}
```
<h3>
Programador.java
</h3>
```java=
package entity;
public class Programador extends Funcionario {
public Programador() {
super();
}
public Programador(Integer codigo, String nome,
String sexo, Double salario) {
super(codigo, nome, sexo, salario);
}
@Override
public Double gerarBonus() {
return this.getSalario()*0.11;
}
public String gerarMessage() {
return "Sub Classe Programador";
}
}
```
<h3>
Estagiario.java
</h3>
```java=
package entity;
public class Estagiario extends Funcionario {
private Integer periodo_faculdade;
public Integer getPeriodo_faculdade() {
return periodo_faculdade;
}
public void setPeriodo_faculdade(Integer periodo_faculdade) {
this.periodo_faculdade = periodo_faculdade;
}
public Estagiario() {
super();
}
public Estagiario(Integer codigo, String nome,
String sexo, Double salario,
Integer periodo_faculdade) {
super(codigo, nome, sexo, salario);
this.periodo_faculdade = periodo_faculdade;
}
@Override
public Double gerarBonus() {
return 300.;
}
public String gerarMessage() {
return "Sub Classe Estagiario";
}
}
```
<h3>
PrintList.java
</h3>
```java=
package control;
import java.util.Arrays;
import java.util.List;
import entity.Funcionario;
public class PrintList {
public static void imprimeLista(Funcionario[] f1) {
for (int i = 0; i < f1.length; i++) {
System.out.println(f1[i]);
}
System.out.println("* * *");
List<Funcionario> itens = Arrays.asList(f1);
for (Funcionario item : itens) {
System.out.println(item);
}
System.out.println("* * *");
itens.forEach(System.out::println);
}
}
```
<h3>
Main.java
</h3>
```java=
package main;
import control.PrintList;
import entity.Estagiario;
import entity.Funcionario;
import entity.Programador;
public class Main {
public static void main(String[] args) {
Funcionario flista[] = new Funcionario[2];
flista[0] = new Programador();
flista[0].setNome("joao");
flista[0].setSalario(10000.);
System.out.println("Nome: " + flista[0].getNome() + ", "
+ "Salário Final: R$ " +
(flista[0].getSalario()+flista[0].gerarBonus()));
flista[1] = new Estagiario();
flista[1].setCodigo(10);
flista[1].setNome("carlos");
flista[1].setSalario(2000.);
System.out.println("\nBonus do estagiário: R$ "
+ flista[1].gerarBonus());
System.out.println("Mensagem: " + flista[1].gerarMessage());
System.out.println("---");
PrintList.imprimeLista(flista);
}
}
```
<h5>
Rodando o método main, temos:
</h5>
```=
Nome: joao, Salário Final: R$ 11100.0
Bonus do estagiário: R$ 300.0
Mensagem: Sub Classe Estagiario
---
Funcionario [codigo=null, nome=joao, sexo=null, salario=10000.0]
Funcionario [codigo=10, nome=carlos, sexo=null, salario=2000.0]
* * *
Funcionario [codigo=null, nome=joao, sexo=null, salario=10000.0]
Funcionario [codigo=10, nome=carlos, sexo=null, salario=2000.0]
* * *
Funcionario [codigo=null, nome=joao, sexo=null, salario=10000.0]
Funcionario [codigo=10, nome=carlos, sexo=null, salario=2000.0]
```
<span></span></p><blockquote style="border-left-color: red;">
<p><span class="color" data-color="red"></span><span> </span><small><i class="fa fa-user"></i> Prof Fernando Gomes - fernandojnr@gmail.com</small></p>