---
# System prepended metadata

title: "\n Java OO Aula 10\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 10
</h1>

<p>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.
<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></blockquote>


<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><span>
<p>Nessa d&eacute;cima aula, vamos ver o uso de <strong>Interface Funcional</strong> dentro de um contexto de programa&ccedil;&atilde;o funcional. Apresentamos o conceito de <strong>Lambdas em Java</strong>. Fazemos uso de <strong>recursividade</strong> e de impress&atilde;o de n&uacute;meros dentro dos padr&otilde;es utilizados no Brasil - usando <em>NumberFormat.getNumberInstance</em></p>

</span>

<h4>
Estrutura do projeto depois de finalizado
</h4>

![](https://i.imgur.com/9maP1E0.jpg)


<h3>
ICalculoLong.java
</h3>

```java=
package control;

//@FunctionalInterface

public interface ICalculoLong {

	public Long operacao(Long a);

}


```

<h3>
Recursividade.java
</h3>

```java=
package control;

public class Recursividade {

	public static Long fatorial(Long i) {

		Long fat;

		if (i < 2) {
			fat = 1l;
		} else {
			fat = i * fatorial(i - 1);
		}

		return fat;
	}

	public static Long fib(Long i) {

		Long f;

		if (i == 0) {
			f = 0l;
		} else {
			if (i < 2) {
				f = 1l;
			} else {
				f = fib(i - 1) + fib(i - 2);
			}

		}

		return f;

	}

	public static ICalculoLong FIBlambda = 
			(a) -> (a == 0 ? 1
			: a <= 2 ? 1 : 
				(Recursividade.FIBlambda.operacao(a - 1) 
				+ Recursividade.FIBlambda.operacao(a - 2)));

	public static ICalculoLong FATlambda = 
			(a) -> (a < 2 ? 1 
			: (a * Recursividade.FATlambda.operacao(a - 1)));

}


```

<h3>
Main.java
</h3>

```java=
package main;

import java.text.NumberFormat;
import java.util.Locale;

import control.Recursividade;

public class Main {

	public static final Locale bra = new Locale("pt", "BR");

	public static void main(String[] args) {

		System.out.println(NumberFormat.getNumberInstance(bra)
				.format(Recursividade.fatorial(11L)));
		System.out.println("===");
		System.out.println(NumberFormat.getNumberInstance(bra)
				.format(Recursividade.fib(23L)));
		System.out.println("===");
		System.out.println(NumberFormat.getNumberInstance(bra)
				.format(Recursividade.FATlambda.operacao(11L)));
		System.out.println("===");
		System.out.println(NumberFormat.getNumberInstance(bra)
				.format(Recursividade.FIBlambda.operacao(23L)));

	}

}


```

<h5>
Rodando o método main, temos:
</h5>

```=
39.916.800
===
28.657
===
39.916.800
===
28.657


```

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

<br>
<div class="alert alert-info">
<blockquote style="border-left-color: blue;">
<p><span class="color" data-color="blue"></span><span> </span><small><i class="fa fa-user"></i> E.B. Cursos https://www.cursoseb.com.br/</small><br>
<span class="color" data-color="blue"></span><span> </span><small><i class="fa fa-user"></i> E.B. Cursos EAD https://edsonbelemtreinamento.com.br/ead/</small></p>
</blockquote>
</div>




