<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écima aula, vamos ver o uso de <strong>Interface Funcional</strong> dentro de um contexto de programação funcional. Apresentamos o conceito de <strong>Lambdas em Java</strong>. Fazemos uso de <strong>recursividade</strong> e de impressão de números dentro dos padrões utilizados no Brasil - usando <em>NumberFormat.getNumberInstance</em></p>
</span>
<h4>
Estrutura do projeto depois de finalizado
</h4>

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