Hilfe! MVC Node Aufgabe

eric1980

Grünschnabel
Hey Leute ich benötige unbedingt Hilfe bei der folgenden Aufgabe und eigentlich bis gestern :) Habe vergessen die Aufgabe abzugeben und muss die bis Sonntag wegschicken, sonst war ein halbes Jahr lernen umsonst:
Bitte um Hilfe
Es soll eine GUI programmiert werden, mit MVC:

b) Um von Anfang an eine bessere Strukturierung des Programms zu erzielen, programmieren Sie eine Node-Klasse, die einen Knoten innerhalb einer Graphstruktur darstellen soll. Ein Node-Objekt soll als Eigenschaften eine id (eindeutige Bezeichnung), eine Position (x-, y-Koordinaten), eine Größe und eine Farbe (Color-Objekt) besitzen. Die Node-Klasse soll mindestens zwei Konstruktoren anbieten. Eine, die die Position und die Größe des Knotens als Argument bekommt und eine, die nach Eingabe eines Wertebereichs die Position mit Hilfe eines Random-Objekts zufällig erzeugt.
Die wichtigste Methode in dieser Klasse, weil für die Ereignisbehandlung notwendig ist, ist die inNode-Methode, die nach Eingabe einer Punktposition entscheidet, ob sich der Punkt innerhalb der Knotenfläche befindet oder nicht.
public boolean inNode( int x, int y )
oder
public boolean inNode( Point p )
c) Als Zweites programmieren Sie eine Graph-Klasse.
Diese Klasse soll Graph-Objekte darstellen. Ein Graph-Objekt besteht aus einer Menge von Knoten und einer Menge von Verbindungen zwischen den Knoten (Kanten). Die Verbindungen zwischen den Knoten können mit Hilfe einer Adjazenzmatrix oder einer Adjazenzliste implementiert werden (siehe Vorlesungsfolien). Die Graph-Klasse soll mindestens einen Konstruktor anbieten, der bei Eingabe einer Knotenzahl und eines Wertebereichs für die Position der Knoten des Graphs alle Knoten mit zufälligen Positionen und zufälligen Verbindungen zwischen den Knoten erzeugt.
d) Schreiben Sie von Anfang an eine print-Methode, die die Verbindungen zwischen den Knoten in Textform ausgibt und eine connect-Methode, die neue Verbindungen zwischen zwei eingegebenen Knoten ermöglicht.
e) Schreiben Sie eine paint-Methode, damit das Graph-Objekt sich selbst bei Eingabe eines graphischen Kontexts (Graphics-Objekt) auf beliebige Behälter-Objekte zeichnen kann.
f) Programmieren Sie eine GraphPicture-Klasse als Unterklasse der JPanel-Klasse, die in Ihrem Konstruktor ein Graph-Objekt als Parameter bekommt und dieses Graph-Objekt entsprechend zeigt.
g) Innerhalb der GraphPicture-Klasse sollen die MouseListener- und die MouseMotionListener-Interfaces implementiert werden (siehe Vorlesungsbeispiel), so dass möglichst einfach die Positionen der Knoten innerhalb des Graph-Objekts verändert werden können, und neue Verbindungen zwischen den Knoten mit einfachen Maus-Klicks hergestellt werden können.
h) Zum Schluss programmieren Sie eine Fenster-Klasse, die das Graph-Objekt auf dem Bildschirm sichtbar macht.

Bin für jedes Codestück dankbar!
 
Moin,

wir machen hier keine "Hausaufgaben".
Zumal Du überhaupt nicht definierst, wo Dein Problem liegt.
Die einzige Aussage, die man aus Deinem Post herauslesen kann, ist jene, dass entweder Faulheit oder Desinteresse das Ganze überschattet.

Deshalb hier ganz einfach:
  • Zeige uns Deine Überlegungen
  • Zeige uns Deinen bis jetzt umgesetzten Code
  • Zeige auf, wo genau das Problem liegt
Nur dann sind wir gewillt bzw. können wir entsprechend Hilfestellung leisten.

Gruß,
Xan
 
hier meine ersten ausführungen zu b).
ich brauche dabei hilfe bei der methode inNode und bei dem zweiten Konstruktor (random)


import java.awt.Color;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author Eric
*/
public class Node {

int id;
int x, y;
int size;
Color color = Color.BLUE;

public Node(int x, int y, int size){
this.x=x;
this.y=y;
this.size = size;
}
public Node(){

}


public boolean inNode(int x, int y){

}
}
 
so hab hier noch mal was für die graph klasse geschrieben, aber da habe ich echt keine ahnung, ob das irgendwie stimmt. ich habe es einfach nach meinem besten wissen gemacht.

import java.awt.Color;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;



public class Graph{

ArrayList<Node> adjList = new ArrayList<Node>();
ArrayList<Edge> edges = new ArrayList<Edge>();
int nextId = 0;
// für BFS
Vector<Node> queue = new Vector<Node>();

Node startNode;

public void initBFS(){
for( Node node : adjList ){
node.color = Color.WHITE;
node.dist = Integer.MAX_VALUE;
node.pred = null;
}
this.startNode = adjList.get(0);
for ( Edge edge : edges ){
edge.setMarked(false);
}
}
public void BFS(){
Node v_node, d_node = null;
this.startNode.setColor(Color.GRAY);
this.startNode.dist = 0;
this.queue.add( startNode );
while( !queue.isEmpty() ){
v_node = queue.firstElement();
Iterator iter = v_node.neighbours.iterator();
while ( iter.hasNext() ){
d_node = (Node) iter.next();
if ( d_node.color == Color.WHITE ){
d_node.setColor(Color.GRAY);
d_node.dist = v_node.dist+1;
d_node.pred = v_node;
queue.add(d_node);
}
}
queue.remove(0);
v_node.setColor(Color.BLACK);
}
 
Zurück