Schulprojekt Java - Vorschläge?

Back2toxic

Erfahrenes Mitglied
Hallihallo :)

Ich habe ein riesen Problem, denn in der Schule steht nun ein Projekt in Java an.
Allerdings ist das Beispielprojekt, welches von der Schule vorgegen wurde, nicht so der Knüller.
In meinen Augen ist das zu einfach*, und Punkte auf Projekt-Kreativität gibt's auch keine.

Da komme ich dann allerdings auch schon an mein Problem. Ich bin so tierisch unkreativ, und komm auf keinen grünen Ast in Sachen Projektidee.

Ich weiß, eigentlich frägt man nicht nach Ideen ohne eine Eigene zu haben, aber ich hab sitz' jetzt schon seit geraumer Zeit (~2 Tage sind's nun wohl) rum, und mir fällt partu nichts ein.


*Das Schulprojekt beinhaltet lediglich mehrdimensionale Arrays und Schleifen, ein paar Textausgaben und Änderungen/Erstellung der Daten in Arrays durch einen Scanner. Zugegeben, viel mehr kann ich in Java nicht, aber das sollte machbar sein. Programmiererfahrung ist ja vorhanden ;D
Das Projekt sollte 3-4 Hausaufgaben nicht überschreiten, aber ich denke mehr ist besser als weniger.

Ich freue mich auf Vorschläge, auch wenn's nur grobe Grundzüge sind.
Werde natürlich auch Ideen von mir vorstellen, falls mir denn mal was passendes einfallen sollte...

Liebe grüße
Chris
 
Da stellt sich für mich erstmal die Frage: Mit oder ohne Bedienoberfläche und wie siehts so mit dem Stundenumfang aus den du anstreben würdest (Sprich wie lange brauchste sonst für ne Hausaufgabe?).
 
Na wie wäre es, wenn Du der ganzen Sache eine GUI spendierst? ()
Das ist nicht sooo komplex, das Du Dich da erst ewig einarbeiten musst.
 
Wie wärs wenn du dir eine Art mehrdimensionales assoziatives Array schreibst. In PHP ist das ja recht einfach, da es dort schon eine fertige Implementierung gibt. Aber in Java kann man es halt nur über Maps lösen (meines Wissens nach :P ) und eine mehrdimensionale Map gibt es auch nicht in der Standart Java Implementierung.

Also um es nochmal deutlich zu machen, meine ich sowas wie:
Java:
String daten = getValues("Assoziativer key 1", "Assoziativer key 2");

und halt das selbe auch zum inserten:
Java:
setValues("Assoziativer key 1", "Assoziativer key 2", "Value");

Ich bin gerade drauf gekommen, weil ich selber so etwas gebraucht habe, um durch einen Spalten- und einen Zeilenwert in einer Tabelle auf ein Ergebniss zu kommen.

Grüße
 
Das Projekt klingt doch ganz okay für ein Schulprojekt - Wenn du Extraleistungen bringen möchtest, macht sich eine GUI immer ganz gut, da es toll aussieht und mit Swing rech wenig Aufwand macht (Für dieses Thema).
Ganz nett wäre zB eine Baumdarstellung verschachtelter Arrays, oder ein Applet zur Veranschaulichung eines Scan-Algos. Vielleicht auch das Manipulieren der Daten eines Arrays mit der Maus und dem Drag&Drop bereitgestellter Elemente - Das könnte man zB als kleines Spiel verpacken.

Was mir gerade noch in den Sinn kommt, wäre Conways Spiel des Lebens, welches sich leicht implementieren lässt und mit einer GUI und einem Zeitgeber gut veranschaulicht werden kann. Da hättest du zwei zweidimensionale Arrays, zwei Schleifen, Feldmanipulationen und was einigermaßen Kreatives.

Also um es nochmal deutlich zu machen, meine ich sowas wie:
Java:
String daten = getValues("Assoziativer key 1", "Assoziativer key 2");

und halt das selbe auch zum inserten:
Java:
setValues("Assoziativer key 1", "Assoziativer key 2", "Value");
Wenn auch nicht ganz sauber:
Java:
import java.util.HashMap;

public class AssocArray extends HashMap<String,Object> {

	private static final long serialVersionUID = -2442791319775289152L;

	public static void main( String args[] ) {
		AssocArray a = new AssocArray();
		a.put( "1", new AssocArray() );
		( (AssocArray) a.get( "1" ) ).put( "1.1" , new AssocArray() );
		( (AssocArray) ( (AssocArray) a.get( "1" ) ).get( "1.1" ) ).put( "1.1.1" , "test" );
		System.out.println( "1. " + ( (AssocArray) ( (AssocArray) a.get( "1" ) ).get( "1.1" ) ).get( "1.1.1" ) );
		System.out.println( "2. " + a.getPathValue( "1", "1.1", "1.1.1" ) );
	}

	public AssocArray() {
		super();
	}

	public AssocArray( HashMap<String,Object> map ) {
		super( map );
	}

	public Object getPathValue( String...args ) {
		if ( args.length < 2 ) {
			// throw new BadMethodCallException();
			return null;
		}

		AssocArray ref = this;
		int i = 0;
		for ( ; i < args.length - 1; ++i ) {
			if ( ref instanceof AssocArray ) {
				// Wandere über den Pfad
				ref = (AssocArray) ref.get( args[ i ] );
			} else {
				// Pfad führt nicht über ein AssocArray-Objekt
				// throw new OutOfBoundsException();
				return null;
			}
		}
		return ref.get( args[ i ] );
	}

}
 
Das mit dem GUI klingt gut, da werde ich mich mit beschäftigen.
Hausaufgaben sind bei uns so angepasst, das auch Programmier-Anfänger damit zurecht kommen, d.h. wenn man sich auch nur halbwegs mit der Materie auskennt, ist das in 5-10 Minuten gelöst.
Gut, dieses Projekt ist wohl etwas aufwendiger, da es eben viele Möglichkeiten gibt, die optional auch für den DAU (try/catch) funktionieren sollten.
Sind aber auch nur Funktionen mit Schleifen und Arrays :rolleyes:
Aber das ist auch nicht das problem :)

Hab mir noch 4-5 Erweiterungen ausgedacht (z.B. meine Lieblingsrezepte, eine Druckfunktion,...), und wenn nun noch das GUI dazu kommt, dann passt das, denke ich.

Bin nun mal Tut's für Java-GUI's ansehen, und Struktogramme (:suspekt:) schreiben...

Vielen Dank für eure Vorschläge :)
Lg Chris


€dit: Ich hoffe nur, dass mein bisheriger code portierbar ist... hab ja noch keine Ahnung wie das mit Swing aussieht :D
Klar, anpassen muss ich, aber das wird schon :D
 
Zuletzt bearbeitet:
Na die grundlegenden Sachen bleiben wahrscheinlich erhalten. Du "stülbst" ja nur eine GUI drüber. Statt System.out.println("blablabla"); schiebst Du das Ergebnis halt auf eine Swing-Komponente. Die Berechnung des Ergebnisses bleibt die selbe.
 
Wenn man es richtig gemacht hat, hat man die Klassen mit der Logik. Die keine Ausgaben haben (außer vielleicht Logging).

Wenn das ganze dann auf der Konsole ausgeführt wird, kann sich Klassen schreiben, die diese Logik-Klassen dann nutzen.

Das gleiche natürlich bei der GUI.

Also das wichtige ist, dass man die Logik von der View komplett trennt. MVC-Prinzip.

MFG

Sascha
 
So isses bis jetzt auch @Sascha.

Danke für die Antwort.

lg Chris :)

€dit: gut, es gab 2-3 Ausgaben in der Logik. die waren aber in den Try/Catch-Blöcken. Die hab ich nun aber auch in die Main verlegt, und nun klappt alles.
Hab mich auch dazu entschlossen, alles neu zu programmieren. So ist der Lerneffekt für Swing größer denke ich.

Danke nochmal für die tolle Idee :)

€dit2: Da schreib' ich aber Mist... die Try/Catch-Dinger sind natürlich immernoch in den Klassen...
 
Zuletzt bearbeitet:
Zurück