<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> ![](https://i.imgur.com/r4uRNQJ.jpg) <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>