brauch hillfe komm nicht mehr weiter...

hi also ich muss hier ein Programm programmieren, zwar war ich schon weiter aber hatte Problem mit dem USB stick so dass die Dateien weg sind und ich hab keine Ahnung was ich damals gehabt hab das es einiger maßen richtig war und jetzt hab ich Black-out😳 komm ich gar nicht mehr weiter hoffe jemand kann mir helfen.
und zwar ich hab ein Interface vorgegeben bekommen

Java:
public interface Matrix< T extends Number > {

	public int getColumns();
		
	public int getRows();
	
	public T get( final int row, final int column );
	
	public Matrix< T > add( final Matrix< T > matrix );
	
	public Matrix< T > sub( final Matrix< T > matrix );

	public Matrix< T > mult( final Matrix< T > matrix );
	
	public Matrix< T > mult( final T value );
	
	public Matrix< T > getTransposed();
}

da versteh ich echt gar nix mehr, was bedeutet dieses Matrix<T> ??? so werden doch nur listen deklariert...???:L
ist die Matrix eine Liste von <T> und was ist das dann für ein Typ??????:L;( T erbt ja von Number aber was ist Number??? dieser Typ ist mir unbekannte

Ich hab Schon mal angefangen das Interface zu Implementieren und bin am verzweifeln
Matrix hat ja (Mathematisch gesehen) eine Dimension also hab ich mir überlegt das ich die als ein float array array baue float[][] Matrix
das ich z.B. dan eine 2 x 2 Matrix hab die mit Float werten befühlt ist
| 1,0 4,0|
| 6,0 3,0|
also hab ich mal ein Konstruktor gebastelt
jetzt muss ich aber die Matrix addieren Problem dabei der erwartet ein Rückgabe typ "Matrix" aber wie sieht der aus der ist ja nicht definiert:autsch:


Java:
public class FloatMatrix implements Matrix{
	protected float[][] m;
	public FloatMatrix(float[][] m){
		this.m=m;		
	}

	@Override
	public Matrix add(Matrix matrix) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Number get(int row, int column) {
		return m[row][row];
	}

	@Override
	public int getColumns() {
		return 0;
	}

	@Override
	public int getRows() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public Matrix getTransposed() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Matrix mult(Matrix matrix) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Matrix mult(Number value) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Matrix sub(Matrix matrix) {
		// TODO Auto-generated method stub
		return null;
	}

}
 
Im Internet mal nach JAva interface suchen da erfährst du dann sicher alles über das richtige implementieren von Interfaces weil dir das jetzt zu erklären dauert echt zu lange.

T ist ein generische Rückgabe wert daher nach Java Generics googlen.

Und Number ist die Oberklasse aller Numerischen Datentypen, z.B Float, Integer, Short, BigInteger


Das heist in deiner Matrix sollst du jeden Zahlenwert abspeichern können.
 
Wie wäre es denn, wenn du dir erstmal gedanken dazu machst was du eigentlich tuen musst.

Danach, solltest du dir mal einen überblick verschaffen wie man die einzelnen sachen umsetzen kann und welche art und weise du wählen willst.

Danach, versuchst du etwas zu implementieren. Zudem würde ich dir vorschlagen, dir selbst nochmal die grundlagen eines interfaces beizubringen.

Keiner wird deine Hausaufgaben machen und keiner wird für dich deine Vorlesungsfolien lesen.


Kurz könnte man sagen:

ich weigere mich deine Hausaufgaben zu machen....


Du zeigst eigentlich keinen Ansatz.
 
Number ist die Oberklasse von Integer, Double, Float, .. also aller numerischen Datentypen
< T extends Number > nennt sich Generics (kannst ja mal nach googlen) es stimmt zwar das listen das benutzen aber halt nicht nur. Generics dienen dazu dass dass du nicht für jeden typ ne eigene Matrix hast (wie FloatMatrix) sondern man einfach bei der erstellung angibt von welchen Typ sie ist genau wie bei Collections. Wenn du jetzt also eine Matrix<Float> hast und get(0,0) aufrufst kriegst du einen Float zurück ohne dass du casten musst.

Java:
public class NumberMatrix<T extends Number> implements Matrix<T>{

    protected T[][] m;
    public NumberMatrix(T[][] m){
        this.m=m;       
    }
 
    @Override
    public T get(int row, int column) {
        return m[row][row];
    }

 //...
 
Zuletzt bearbeitet:
was ein Interface ist weiß ich ja aber ich komm trotzdem nicht mehr weiter mir ist bewusst das ein Interface kein Rumpf hat und gegoogelt hab ich schon so um die 3-4 Stunden aber das hat mich nur noch mehr verwirrt

danke @Ein Keks
 
An deiner stelle würde ich mich erstmal mit den eigentlichen methoden befassen. Mach dir erstmal nen Kopf umd die Opperationen und das erstellen einer eigentlichen Matrix.

Danach kannst du dir nen Kopf machen wie du das in dein Interface mit den Vorgaben unterbringst.

Matrixmultiplikation ist kein Klax.. für mich wars das zumindest nicht. Wenn dus noch laufzeitorientiert nach karatsuba machen willst... viel spaß ^^


Also fang erstmal klein an, dann mach dir um die Großen überbegriffe sorgen.
 
An deiner stelle würde ich mich erstmal mit den eigentlichen methoden befassen. Mach dir erstmal nen Kopf umd die Opperationen und das erstellen einer eigentlichen Matrix.

Danach kannst du dir nen Kopf machen wie du das in dein Interface mit den Vorgaben unterbringst.

Matrixmultiplikation ist kein Klax.. für mich wars das zumindest nicht. Wenn dus noch laufzeitorientiert nach karatsuba machen willst... viel spaß ^^


Also fang erstmal klein an, dann mach dir um die Großen überbegriffe sorgen.

das hab ich bereits ich werde das mit Hilfe eines Scanner einlesen das ich erst die Dimension eingebe und dann jedes Element einzeln, das ist ja nicht das Problem, Multiplikation und Addition ist auch relativ leicht ich hatte nur ein Problem wegen Number
 
Wie gesagt Number ist die Mutterklasse aller Klassen, die eine "Zahl" representiert.

Und T ist eine Generischer Datentype der Von Number erbt,

Ich hoffe du weißt was generics sind
 
ja das hat berits @Ein Keks gesagt

aber was ich vergessen hab wie war das die dimension eines array arrays auszulesen ein enfacher wehre ja

Java:
public class Main {
	public void main(String[] args){
		int[]a new int[5];		
		System.out.println(a.length);
	}
}

dann würde der ja 5 bzw 6 ausgeben bin mir jetzt nicht sicher das ist aber nicht die Frage sonder wie war das bei

Java:
public class Main {
	public void main(String[] args){
		int[][] a new int[5][6];		
		System.out.println(a?????.length);
	}
}
 

Neue Themen


Zurück
Oben