Your UML design (Complete one of the UML designs below) see image.
In Listing 19.1, GenericStack< E> is implemented using composition. Define a new parameterized stack class that extends (inheritance) ArrayList. Include two methods, min and max which will return the minimum and maximum values in the stack.
Implement a program that generates and displays at least 15 random Integer objects and uses your new stack class' push method to place them on the stack. Once all the values are on the stack, display the minimum and maximum objects. Then use the stack to display the objects in reverse order.
Repeat the process two more times, once with random Character objects, and once with random Date objects.
Using a GUI (JavaFX or Swing) application is optional.