---
# System prepended metadata

title: "\n Java OO Aula 3\n"

---

<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>
