summary refs log tree commit diff stats
path: root/java/text/MatrixOperations.typ
diff options
context:
space:
mode:
Diffstat (limited to 'java/text/MatrixOperations.typ')
-rw-r--r--java/text/MatrixOperations.typ47
1 files changed, 47 insertions, 0 deletions
diff --git a/java/text/MatrixOperations.typ b/java/text/MatrixOperations.typ
new file mode 100644
index 0000000..bcb6ce8
--- /dev/null
+++ b/java/text/MatrixOperations.typ
@@ -0,0 +1,47 @@
+#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<T>` 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<T, T, T>` 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<T>` 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<Matrix>)`: Asks the user to choose the matrix to display among the available matrices and displays it.
+  - `static void operate(Scanner, ArrayList<Matrix>, String, BinaryOperator<Matrix>)`: 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()