/*** INSTRUKCJI ***/
Polecenie#1
Zaprojektuj i zaimplementuj rozwiązanie dla następującego problemu:

A m x n = B m x k * C k x n

gdzie:
A, B, C należy do zbioru liczb całkowitych

według następującego algorytmu:

  1. Pobierz od użytkownika wymiary macierzy,
  2. Utwórz macierze,
  3. Pobierz od użytkownika wartości elementów macierzy,
  4. Wykonaj niezbędne operacje arytmetyczne,
  5. Wyświetl na konsoli wartości macierzy A, B i C.

UWAGI. W programie mnożenia macierzy należy:

  1. Wydzielić właściwe abstrakcje typów danych.
  2. Zdefiniować hermetyzowany w klasach zbiór atrybutów (zastosować tablicę
    jako kontener przechowujący elementy macierzy).
  3. Zdefiniować hermetyzowany w klasach zbiór operacji.

Polecenie#2
Dla opracowanego przez siebie rozwiązania narysuj diagramy UML:

  1. VOPC oraz
  2. diagram interakcji dla „happy day scenario”.
    /*** END INSTRUKCJA ***/

Zrobiłem pierwsze 5 punktów, nie wiem dokładnie o co chodzi w Uwagach i Poleceniu 2
Proszę o wytłumaczenie bardziej opisowe. (Nie proszę o kod)

O to co udało mi się zrobić na ten moment:

import java.util.Scanner;

public class Matrix {

	static int m;
	static int n;
	static int k;
	
	int[][] tablica;
	
	public static void main(String[] args){
		System.out.println( "Podaj rozmiary macierzy:\n" );
		
		Matrix A = new Matrix();
		Matrix B = new Matrix();
		Matrix C = new Matrix();
		
		Scanner odczyt = new Scanner( System.in );
	
		System.out.print( "k = " );
		k = odczyt.nextInt();
		System.out.print( "m = " );
		m = odczyt.nextInt();
		System.out.print( "n = " );
		n = odczyt.nextInt();
		
		if ( ( k <= 0 ) | ( m <= 0 ) | ( n <= 0 ) )
		{
			System.out.print( "\nPodano niedozwolony rozmiar macierzy.\nKoniec programu !" );
			return;
		}	
			
	    A.tablica = new int[m][n];
	    B.tablica = new int[m][k];
	    C.tablica = new int[k][n];
	    
	    System.out.println( "\nPodaj elementy macierzy B:\n" );
	    		
	    for(int i = 0; i < m; i++)
	    {
	    	for(int j = 0; j < k; j++)
	    	{
	    		System.out.print( "Macierz B[" + i + "][" + j + "] = " );
	    		B.tablica[i][j] = odczyt.nextInt();
	    	}
	    }
	    
	    System.out.println( "\nMacierz B" ); 
	    		
	    for(int i = 0; i < m; i++)
	    {
	    	for(int j = 0; j < k; j++)
	    	{
	    		if ( j % k == 0 )
	    			System.out.println();
	    		System.out.print( B.tablica[i][j] + " " );
	    	}
	    }
	    
	    System.out.println( "\n\nPodaj elementy macierzy C:\n" );
		
	    for(int i = 0; i < k; i++)
	    {
	    	for(int j = 0; j < n; j++)
	    	{
	    		System.out.print( "Macierz C[" + i + "][" + j + "] = " );
	    		C.tablica[i][j] = odczyt.nextInt();
	    	}
	    }
	    
	    System.out.println( "\nMacierz C" ); 
	    		
	    for(int i = 0; i < k; i++)
	    {
	    	for(int j = 0; j < n; j++)
	    	{
	    		if ( j % n == 0 )
	    			System.out.println();
	    		System.out.print( C.tablica[i][j] + " " );
	    	}
	    }

	    int suma = 0;

	    for(int i = 0; i < m; i++)
	    {
	    	for(int j = 0; j < m; j++)
	    	{
		    	for(int l = 0; l < k ; l++)		
		    			suma += B.tablica[i][l] * C.tablica[l][j];	
		    
		    	A.tablica[i][j] = suma;
		    	suma = 0;
	    	}
	    }
	      
	    System.out.println( "\n\nMacierz A" ); 
		
	    for(int i = 0; i < m; i++)
	    {
	    	for(int j = 0; j < n; j++)
	    	{
	    		if ( j % n == 0 )
	    			System.out.println();
	    		System.out.print( A.tablica[i][j] + " " );
	    	}
	    }
	}
}