OOP Streckenberechung OOP Verständnisfragen

Nilsson

Mitglied
Aufgabe ist es ein Programm mit den Klassen Punkt und Strecke zu schreiben die mit der App TeststreckeApp laufen. Mit dem Programm sollen 2 Punkte eingegeben werden und als Ausgabe soll dann die Strecke zwischen den Punkten erscheinen.

Java:
 import javax.swing.JOptionPane;


public class Punkt {

	  private double posX;
	  private double posY;

	  public Punkt(double posX, double posY) //Constructor
	  {
	    this.posX = posX;
	    this.posY = posY;
	  }

	  public double getPosX()
	  {
	    return this.posX;
	  }

	  public double getPosY() {
	    return this.posY;
	  }

	  public void read()
	  {
	    try {
	      this.posX = Double.parseDouble(JOptionPane.showInputDialog("Bitte die X-Koordinate eingeben: "));
	    }
	    catch (NumberFormatException e) {
	      JOptionPane.showMessageDialog(null, "Bitte eine Zahl eingeben.");
	    }
	    try
	    {
	      this.posY = Double.parseDouble(JOptionPane.showInputDialog("Bitte die Y-Koordinate eingeben: "));
	    }
	    catch (NumberFormatException e) {
	      JOptionPane.showMessageDialog(null, "Bitte eine Zahl eingeben.");
	    }
	  }

	  public String toString()
	  {
	    return "(" + this.posX + "/" + this.posY + ")";
	  }
	
}

Klasse Strecke

Java:
public class Strecke
{
  private Punkt p;
  private Punkt q;

  public Strecke(Punkt p, Punkt q)
  {
    this.p = p;
    this.q = q;
  }

  void read()
  {
    this.p.read();
    this.q.read();
  }

  public String toString()
  {
    return this.p.toString() + ", " + this.q.toString();
  }

  public double getLaenge()
  {
    double a = this.q.getPosX() - this.p.getPosX();
    double b = this.q.getPosY() - this.p.getPosY();
    double laenge = Math.sqrt(Math.pow(a, 2.0D) + Math.pow(b, 2.0D));
    return laenge;
  }
}

TeststreckeApp
Java:
import java.io.PrintStream;

public class TestStreckeApp {
	public static void main(String [ ] args) {
	Punkt ursprung = new Punkt ( 0 . 0 , 0 . 0 ) ;
	Punkt endpunkt = new Punkt ( 4 . 0 , 3 . 0 ) ;
	Strecke s = new Strecke(ursprung , endpunkt ) ;
	System . out . println("Die Laenge der Strecke " + s +
	                       " betraegt " + s . getLaenge ( ) + "." ) ;
	System . out . println ( ) ;
	System . out . println("Strecke s eingeben:" ) ;
	s . read ( ) ;
	System . out . println ( ) ;
	System . out . println("Die Laenge der Strecke " + s +
	                       " betraegt " + s . getLaenge ( ) + "." ) ;
	}
}


So, nun habe ich einige Fragen zur Funktion und Ablauf des Programms.

UML Diagramme:

Punkt | Strecke
---------------------------------------------------------
double posX | Punkt p
double posY | Punkt q
---------------------------------------------------------
get posX | void read()
get posY | String toString()
void read | double getLaenge()
String toString() |

1.Sind die Diagramme so in Ordnung ?

2. Wie ist die Reihenfolge des Programmablaufs?
TeststreckenApp erzeugt das Objekt aber wann genau kommen die anderen Klassen ins Spiel ?
Zunächst wird die 5 als Ergebnis ausgegeben und dann folgt eine Eingabeaufforderung.

3. Sind Punkt und Strecke Attribute und posX, posY, Punkt p, Punkt q lokale Variablen und "s" dann das Objekt ?
 
Zuletzt bearbeitet:

Luke_

Mitglied
ob das UML-diagramm ok ist, kann man eig nur sagen, wenn man weiß, was es für eins sein soll. UML ist ja erstmal nur eine "abbildungssprache". egal, ersichtlich ist ja, dass es ein klassendiagramm sein soll ;)

private attribute werden so dargestellt:

-name:typ wobei das "-" die sichtbarkeit darstellt.

public methoden so:

+methodName():Rückgabetyp

außerdem gibt es noch zwei unterschiedliche arten von klassendiagrammen. OOA (Objekt-Orientierte-Analyse) und OOD (Objekt-Orientiertes-Design). OOA ist noch eher ein erster entwurf, d.h. nicht sehr spezifisch, auf keine programmiersprache festgelegt und ohne typen. OOD hingegen ist genauer, die sprache steht fest und auch die typen werden mit angegeben.
achso, verbindungen zwischen den klassen sollten nicht fehlen... und die TeststreckeApp gehört natürlich auch noch dazu.

zur nächsten frage...die anderen klassen kommen in zeile 5 - 7 ins spiel. dort erstellst du ja direkt objekte vom typ Punkt und Strecke. getStrecke() wird dann aufgerufen und somit benutzt du schon methoden von der klasse......meintest du das, oder hab ich deine frage falsch verstanden?

zu deiner letzten frage gilt ersteinmal, dass es nur objekte gibt. also auch lokale variablen, attribute usw sind objekte. in deinem fall sind posX, posY attribute der klasse Punkt. q und p attribute der klasse strecke. ursprung, endpunkt und s sind lokale variablen.
 

Nilsson

Mitglied
Was sind dann die Attribute und Methoden der Klasse TeststreckeApp ?

Also in welchem Verhältnis steht TeststeckeApp zu Punkt und Strecke ?

Kann man sagen das die Application TeststreckeApp unter zugriff auf die Klassen Punkt und Strecke ein Objekt Strecke erzeugt?
 
Zuletzt bearbeitet:

Ähnliche Java Themen


Oben