package br.edu.ifsp.lp3a5.aula6;

public class Exemplo1 {

    public static double multiplicarPorDez(double n) {
        return n * 10;
    }

    public static double dividirPorCinco(double n) {
        return n / 5;
    }

    public static double arredondar(double n) {
        return Math.round(n);
    }

    public static double aplicarOperacao(double n1) {
        final double n2 = multiplicarPorDez(n1);
        final double n3 = dividirPorCinco(n2);
        final double n4 = arredondar(n3);
        return n4;
    }

    public static void main(String[] args) {
        System.out.println("Saida = " + aplicarOperacao(12));
    }
	
}
package br.edu.ifsp.lp3a5.aula6;

public class Exemplo2 {

    public static double multiplicarPorDez(double n) {
        return n * 10;
    }

    public static double dividirPorCinco(double n) {
        return n / 5;
    }

    public static double arredondar(double n) {
        return Math.round(n);
    }

    public static double aplicarOperacao(double n1) {
        return arredondar( dividirPorCinco( multiplicarPorDez( n1 ) ) );
    }

    public static void main(String[] args) {
        System.out.println("Saida = " + aplicarOperacao(20.5));
    }
	
}
package br.edu.ifsp.lp3a5.aula6;

import java.util.Optional;

public class Exemplo3 {

    public static Optional<Double> multiplicarPorDez(Double n) {
        return Optional.of( n * 10 );
    }

    public static Optional<Double> dividirPorCinco(Double n) {
        return Optional.of( n / 5 );
    }

    public static Optional<Double> arredondar(Double n) {
        return Optional.of( Double.valueOf( Math.round(n) ) );
    }

    public static Optional<Double> aplicarOperacao(Double n1) {
    	return multiplicarPorDez(n1)
    				.flatMap( n ->  dividirPorCinco( n ))
    				.flatMap( n -> arredondar( n ) );
    }

    public static void main(String[] args) {
    	final Double entrada = null;
    	
    	final Optional<Double> optEntrada = Optional.ofNullable(entrada);
    	
    	optEntrada
    		.ifPresent( n -> aplicarOperacao( n ).ifPresent( System.out::println ) );
    	
    	optEntrada
			.ifPresentOrElse(
						n -> aplicarOperacao( n ).ifPresent( System.out::println ) 
						, () -> System.out.println("Valor informado não pode ser nulo.") );
    }
	
}