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