#import "/template.typ": * #show: A => apply(A) #set raw(lang: "java-new") #set par(leading: 0.6em) #assignment(4)[ Write a menu-driven program to perform addition, subtraction and multiplication operations on matrix objects. ] #scos("MatrixOperations") === Discussion #skind[Classes, interfaces and methods used from Java standard library] - `java.util.Scanner` class: - `float nextFloat()`: Scan a `float` value from the the input stream. - `java.util.function.BinaryOperator` Interface: - Objects of this interface represent operations upon two operands of the same type, producing a result of the same type as the operands. - This is a subinterface of `BiFunction` whose functional method is `T apply(T, T)`. - `java.lang.IllegalArgumentException` class represents the exception to be thrown when an illegal argument is provided to a function. - `java.util.ArrayList` class provides a resizeable array from the Java Collections framework. - `T get(int)`: Returns the value at the specified position in the list. - `void add(T)`: Appends the specified element to the end of the list. - `java.util.InputMismatchException` is thrown by the methods of `Scanner` class when encountering invalid input. #skind[Classes and methods implemented in the program] - The `Matrix` class provides sufficient interface to operate on a matrix of `float` values. - Constructor `Matrix(int, int)`: Creates the underlying two dimensional array with the given matrix dimensions. - `int rows(), int cols()`: Returns the number of rows and columns of the matrix, respectively. - `float get(int, int)`: Returns the value at the specified position. - `void set(int, int, float)`: Sets the value at the specified position. - `void input(Scanner)`: Take the elements of the matrix from the user using the provided `Scanner` instance. - `void display()`: Displays the matrix elements in a tabular format. - The `MatrixOperations` class implements the matrix operations as static methods. - `static Matrix add(Matrix, Matrix) throws IllegalArgumentException`, - `static Matrix subtract(Matrix, Matrix) throws IllegalArgumentException`, - `static Matrix multiply(Matrix, Matrix) throws IllegalArgumentException`: Perform the respective operations on the provided two matrices, taking care of the compatibility to the operations. - The `MatrixOperationsCLI` orchestrates the main program with: - `static void menu()`: Displays the menu. - `static Matrix takeMatrix(Scanner)`: Takes requisite user input to create a new matrix object. - `static void displayMatrix(Scanner, ArrayList)`: Asks the user to choose the matrix to display among the available matrices and displays it. - `static void operate(Scanner, ArrayList, String, BinaryOperator)`: Performs the specified operation on the matrices chosen by the user. - `public static void main(String[])`: Implements a menu-driven program for the matrix operations. #signature()