Hallo,
meine Aufgabe ist es eine Klasse für Operationen mit Matrizen zu entwerfen (maximale Zeilen- bzw. Spaltenzahl ist 7). Die gespeicherte Matrix soll private sein und über einen Konstruktor erzeugt werden.
Als Public-Methoden der Klasse sollen implementiert werden: Eingabe, Ausgabe, Matrix+Matrix, Matrix*Zahl, Matrix*Matrix und eine Matrix transponieren.
Dies soll in einer kleinen Konsolenanwendung funktionieren. Des Weiteren sollen die eingegeben Matrizen während der Programmabarbeitung intern gespeichert (mindestens zwei), sowie die mehrfache Eingabe der gleichen Matrix vermieden werden.
Meine ConsoleMenu-Klasse sieht im Moment so aus:
Meine im Moment noch sehr halbgare Matrix-Klasse:
(Dass die Klasse Matrix lediglich "dimension" als Instanzvariable hat, liegt daran, dass ich mich der Einfachheit halber auf quadratische Matrizen beschränken möchte - daher keine "nZeilen, mSpalten"-Variablen)
Nun zu meinen Fragen:
Eigentlich hatte ich mir das Programm so vorgestellt, dass der Nutzer - nachdem er eine Auswahl im Menü getroffen hat - immer mit Hilfe einer eingabeDimension-Methode, die Dimension der Matrix eingibt. Anschließend die Werte der Matrix mit Hilfe der eingabeMatrix-Methode.
Da in der Aufgabenstellung von einem Konstrutor für die Matrix die Rede ist, ist das nun schon mein erster Punkt, den ich nicht ganz verstehe. Da ich ohne entsprechendes Objekt (und vorherige Initialisierung), überhaupt gar nicht meine beiden Eingabe-Methoden der Klasse nutzen kann (somit auch gar nicht die Matrix direkt "richtig" mit Werten initialisieren kann), erstelle ich in meiner main-Methode ein Objekt der Klasse Matrix mit einem leeren Konstruktor. Von static-Methoden habe ich bereits gehört, jedoch scheint mir das in meinem Fall auch nicht sinnvoll oder liege ich da falsch?
Wäre es möglich, die eingabeDimension/Matrix-Methoden trotzdem (wie in der Aufgabenstellung gefordert) in der Klasse Matrix zu haben, jedoch eine Matrix direkt mit eingebenen Werten über einen Konstruktor zu erzeugen?
meine Aufgabe ist es eine Klasse für Operationen mit Matrizen zu entwerfen (maximale Zeilen- bzw. Spaltenzahl ist 7). Die gespeicherte Matrix soll private sein und über einen Konstruktor erzeugt werden.
Als Public-Methoden der Klasse sollen implementiert werden: Eingabe, Ausgabe, Matrix+Matrix, Matrix*Zahl, Matrix*Matrix und eine Matrix transponieren.
Dies soll in einer kleinen Konsolenanwendung funktionieren. Des Weiteren sollen die eingegeben Matrizen während der Programmabarbeitung intern gespeichert (mindestens zwei), sowie die mehrfache Eingabe der gleichen Matrix vermieden werden.
Meine ConsoleMenu-Klasse sieht im Moment so aus:
Java:
package de.matrixop;
import java.util.Scanner;
public class ConsoleMenu {
public static void main(String[] args) {
boolean ende = false;
while (!ende) {
System.out.println("Matrix!\n");
System.out.println("Bitte wählen Sie welche Berechnung Sie durchführen lassen wollen:\n");
System.out.println("1. Matrix plus Matrix");
System.out.println("2. Matrix mal Zahl");
System.out.println("3. Matrix mal Matrix");
System.out.println("4. Transponierte Matrix\n");
System.out.println("0. Programm Benden\n");
// Menü-Eingabeaufforderung
Scanner eingabeMenu = new Scanner(System.in);
int selection = eingabeMenu.nextInt();
// Menü-Auswahl durch switch-Anweisung
switch (selection) {
case 1:
Matrix a = new Matrix();
a.eingabeDimension();
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 0:
ende = true;
break;
default:
System.out.println("Falsche Eingabe!");
}
}
}
}
Java:
package de.matrixop;
import java.util.Scanner;
public class Matrix {
//Instanz-Variablen der Klasse Matrix
private int dimension;
private double[][] data;
// "Matrix"-Konstruktor ohne übergebene Argumente
Matrix() {
//this.dimension = dimension;
//data = new double[dimension][dimension];
}
/**
// "Matrix"-Konstruktor
private Matrix(int dimension, double[][] data) {
}**/
// Getter-Methode dimension
public int getDimension() {
return dimension;
}
// Setter-Methode dimension
public void setDimension(int dimension) {
this.dimension = dimension;
}
// Public-Methode für Eingabe der Dimensionen
public int eingabeDimension() {
Scanner eingabeDim = new Scanner(System.in);
System.out.println("Geben Sie bitte die Dimension der Matrix an:");
int dimension = eingabeDim.nextInt();
return dimension;
}
// Getter-Methode
public double[][] getData() {
return data;
}
// Setter-Methode
public void setData(double[][] dat) {
double[][] data = dat;
}
// Public-Methode für Eingabe des Array
public double[][] eingabeMatrix() {
Scanner eingabeMat = new Scanner(System.in);
System.out.println("Geben Sie bitte die Werte der Matrix an:");
double[][] data = new double[dimension][dimension];
for (int i = 0; i < dimension; i++)
for (int j = 0; j < dimension; j++)
data[i][j] = eingabeMat.nextDouble();
return data;
}
//
public void ausgabe() {
}
}
Nun zu meinen Fragen:
Eigentlich hatte ich mir das Programm so vorgestellt, dass der Nutzer - nachdem er eine Auswahl im Menü getroffen hat - immer mit Hilfe einer eingabeDimension-Methode, die Dimension der Matrix eingibt. Anschließend die Werte der Matrix mit Hilfe der eingabeMatrix-Methode.
Da in der Aufgabenstellung von einem Konstrutor für die Matrix die Rede ist, ist das nun schon mein erster Punkt, den ich nicht ganz verstehe. Da ich ohne entsprechendes Objekt (und vorherige Initialisierung), überhaupt gar nicht meine beiden Eingabe-Methoden der Klasse nutzen kann (somit auch gar nicht die Matrix direkt "richtig" mit Werten initialisieren kann), erstelle ich in meiner main-Methode ein Objekt der Klasse Matrix mit einem leeren Konstruktor. Von static-Methoden habe ich bereits gehört, jedoch scheint mir das in meinem Fall auch nicht sinnvoll oder liege ich da falsch?
Wäre es möglich, die eingabeDimension/Matrix-Methoden trotzdem (wie in der Aufgabenstellung gefordert) in der Klasse Matrix zu haben, jedoch eine Matrix direkt mit eingebenen Werten über einen Konstruktor zu erzeugen?
Zuletzt bearbeitet: