OO Programmierung

Neue Frage »

Auf diesen Beitrag antworten »
neuling96 OO Programmierung

//i.imgur.com/3EuPWYc.jpg[/img]
//i.imgur.com/ZGUoQrB.png[/img]
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:

public class Kreis {

  private Punkt2D mittelpunkt;
  private double radius;

public Kreis (Punkt2D mittelpunkt, double r) {
this.mittelpunkt= mittelpunkt;
this.radius=r;
}

public void verschiebe (double x, double y) {
this.mittelpunkt.verschiebe(x,y);
}
//Problem, ich weiß nicht wie ich den mittelpunkt únd raidus vom K ins spiel bringen soll?

public boolean schneidet(Kries k){

if(this.mittelpunkt.eudklidischeDistanz(Punkt 2D mittelpunkt2)>(radius+radius2) {
return true;
}else {
return false; 
}
 
Auf diesen Beitrag antworten »
neuling96 RE: OO Programmierung

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:


if(this.mittelpunkt.eudklidischeDistanz(Punkt 2D mittelpunkt2)>(radius+radius2) {
return false;
}else {
return true; 
}
[/quote]
Auf diesen Beitrag antworten »
eulerscheZahl

Hallo,
erst mal 2 formale Dinge:
Lade Bilder bitte direkt hier im Board hoch und nicht extern. Dadurch ist sichergestellt, dass sie auch in 2 oder 3 Jahren noch da sind. Und gib dir bitte etwas mehr Mühe bei der Titelwahl (und sei es nur "Kreis", ist mir lieber als zwei mal "OO Programmierung" mit unterschiedlichem Inhalt).

Nun zur Aufgabe.
Im Konstruktor sollst du noch prüfen, ob der Radius negativ is und gegebenenfalls eine Exception werfen.
Eine Funktion zur Skalierung fehlt komplett.

code:
1:
2:
3:
if(this.mittelpunkt.eudklidischeDistanz(Punkt 2D mittelpunkt2)>(radius+radius2) {
return true;
}

da passt gleich mehreres nicht. An die Funktion musst du eudklidischeDistanz(k.mittelpunkt) übergeben. Die Funktion weiß bereits, welchen Datentyp sie entgegennimmt, das musst du nicht mehr mit angeben. Und mittelpunkt2 ist nirgends definiert, kann der Compiler nicht kennen. Selbiges gilt für radius2.
Und zwei Kreise schneiden sich also, wenn die Mittelpunkte weiter voneinander entfernt sind, als die Summe der Radien? verwirrt
Auf diesen Beitrag antworten »
neuling96

1)Exception kenne ich leider noch nicht!
2)
public boolean schneidet(Kries k){
if(this.mittelpunkt.eudklidischeDistanz(Punkt 2D k.mittelpunkt)>(radius+k.radius) {
return false;
}else {
return true;
}
das man benutzen kann war mir nicht bekannt k.mittelpunkt
folgende frage:
alles mit this.y=x
kann man mit punktnotation aufrufen?
 
Auf diesen Beitrag antworten »
neuling96

Hi,
wegen den Bildern:
Ich kann zwar die Datei über Dateianhänge speichern, allerdings erscheint es nicht Text dann?
Im Matheboard gibt es die Funktion "attach", die ich nicht finde kann

zu skaliere

public void sakliere(double fac) {
this.mittelpunkt.x*=fac;
this.mittelpunkt.y*=fac;
}
}

ich bin allerdings nicht sicher ob man mit this.mittelpunk.x tatsächlich die x Koordinate enthält.
Auf diesen Beitrag antworten »
eulerscheZahl

Zitat:
ich bin allerdings nicht sicher ob man mit this.mittelpunk.x tatsächlich die x Koordinate enthält.

tust du nicht, ist nämlich private.
Aber du kannst du Punkt sich selbst skalieren lassen: mittelpunkt.skaliere(fac). Der Radius muss natürlich auch geändert werden.

Zu den Exceptions: offizielle Doku
Auf diesen Beitrag antworten »
neuling96

wäre es nicht private, könnte dann darauf zurückgreifen?

ich komm nicht dahinter, wie der radius allg. nach der Skalierung aussieht
Zunge raus
code:
1:
2:
3:
4:
5:
6:
7:
8:
ich versuch mal
public void sakliere(double fac) {
mittelpunkt.skaliere(fac);
this.radius*=fac;
}
}
Auf diesen Beitrag antworten »
eulerscheZahl

code:
1:
2:
3:
4:
public void skaliere(double fac) {
    mittelpunkt.skaliere(fac);
    this.radius *= Math.abs(fac);
}
Auf diesen Beitrag antworten »
neuling96

Hi,
Eins muss ich noch los werden !
Vielen Dank für deine tolle Hilfe!!

Gott
Auf diesen Beitrag antworten »
neuling96

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
public class Kreis {

  private Punkt2D mittelpunkt;
  private double radius;

public Kreis (Punkt2D mittelpunkt, double r) {
if(r<0){
throw new IllegalArgumentException("Parameter > 0 erwartet. Gefunden: "+r);
}
this.mittelpunkt= mittelpunkt;
this.radius=r;
}
..
...
...


wir haben heute expection behandelt und ich bin mir nicht sicher ob man throw auch im konstrukter einbauen darf/kann??
Auf diesen Beitrag antworten »
eulerscheZahl

Dann probiere es doch einfach aus.
Ergebnis: ja, man kann im Konstruktor eine Exception werfen. Und wenn du die Exception auffangen willst, mache es um Himmels Willen nicht so.
Auf diesen Beitrag antworten »
neuling96

try {
<Anweisung>
...
} catch (<ExceptionTyp> e) {
<Anweisung>
...
}


falls in der Anweisung einen Fehler auftritt dann wird mit es mit catch abgefangen und
dann verlässt man den try-catch block und macht mit den restlichen Programm weiter?
Auf diesen Beitrag antworten »
eulerscheZahl

Im Normalfall ja. Wenn ein geordnetes Weitermachen nicht möglich ist, kannst du auch deine Daten sichern und das Programm beenden oder selbst eine Exception werfen, die dann an die aufrufende Funktion weitergereicht wird.
Auf diesen Beitrag antworten »
neuling96

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public class Kreis throws IllegalArgumentException?? {

  private Punkt2D mittelpunkt;
  private double radius;

public Kreis (Punkt2D mittelpunkt, double r) {
if(r<0){
throw new IllegalArgumentException("Parameter > 0 erwartet. Gefunden: "+r);
}


Abscheidend muss man
throws IllegalArgumentException

noch ergänzen , aber wieso?
Auf diesen Beitrag antworten »
Karlito

Die throws-Deklaration muss an die Methode, in der die Exception geworfen wird.
code:
1:
2:
3:
4:
5:
6:
7:
	public Kreis (Punkt2D mittelpunkt, double r) throws IllegalArgumentException {
		if(r<0){
			throw new IllegalArgumentException("Parameter > 0 erwartet. Gefunden: "+r);
		}
	}


Die Deklaration wird von Java verwendet um den Programmierer zu einer Fehlerbehandlung mittels try-catch zu zwingen. Verwendet er eine Methode, welche eine Exception wirft, so muss er diese in einen try-catch-Block einbetten, sonst Kompiliert das Programm nicht. Eine Ausnahme bilden hier RuntimeExceptions. Diese können auch ohne throws-Deklaration geworfen werden.

Gruß,

Karlito
Auf diesen Beitrag antworten »
neuling96

vielen dank Wink
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »