Blog Archives

01: OOP vs FP with Java example – placing a trade

A Trade goes through 3 state changes – placed, filled, and settled. Let’s solve this simple problem using both OOP & FP approaches.

Place –> Fill –> Settle

OOP approach by mutating the state

State changes are maintained via a variable named “status“, which is mutable.… Read more ...



02: OOP vs FP with Java example – Conversion strategy pattern

Java code to convert given input values from KM to Meter, Meter to Centimetres, etc. OOP approach using the strategy design pattern Step 1: Define an interface.

Step 2: Define a generic “MyMetricConverter” that implements the “Converter”.

Step 3: Define different strategy classes that return different conversion rates….

Read more ...


03: Java FP composing functions example – calculate discount

FP – calculate the invoice price Invoice Price = (markedPrice * (100 – discountRate)/100) + deliveryCharge Example

Read more ...


04: Java OOP vs FP – Builder Pattern

Current Balance = Initial Amounts + Credits – Debits OOP approach using the builder design pattern Creating a constructor to take three BigDecimal values is NOT only readable, but also prone to errors as you can inadvertently supply the debit value instead of the credit value, and so on. Hence,…

Read more ...


05: Java OOP vs FP – Handling unchecked exceptions

int result = input / divideBy will throw an unchecked exception if divideBy = 0. OOP error handling by throwing exceptions In OOP errors are handled by throwing & catching exceptions. Here is a very simple OOP example. Step 1: Define an interface.

Step 2: Define an implementation. The…

Read more ...


06: Java FP – handling checked exceptions

FP error handling – checked exceptions The code below breaks the flow of execution as the input “ABC” throws a checked exception – “NumberFormatException”.

Outputs:

Read more ...


07: Java FP – CompletableFuture monadic chaining with examples – part 1

This extends Future Vs. CompletableFuture interview Q&As with Java 8 functional programming (i.e. FP). Q1. Why was CompletableFuture introduced in Java 8 when you already had the Future interface? A1. The CompletableFuture implements both CompletionStage<T> and Future<T> interfaces. Hence it provides the functionality of the Future interface in terms of…

Read more ...


08: CompletableFuture monadic chaining with examples – part 2

This extends Java FP – CompletableFuture monadic chaining with examples – part 1. f and g are processed asynchronously, and then combined A “Supplier” returns a result by taking nothing as an argument.

“CompletableFuture.supplyAsync” executes a “Supplier” without blocking. This means executes it asynchronously. By using the Async suffix,…

Read more ...


09: Java FP – CompletableFuture Error Handling

handle(…) returns a result or an exception A dummy exception is thrown from “f” to demonstrate an exceptional scenario. The “java.util.concurrent.ExecutionException” potentially thrown by f.get(), g.get(), and h.get() is a checked exception. Hence catching it and re throwing as an unchecked (i.e. RuntimeException) exception.

Read more ...


500+ Enterprise & Core Java programmer & architect Q&As

Java & Big Data Tutorials

Top