Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » OO Programmierung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen OO Programmierung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
neuling96
unregistriert
OO Programmierung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

//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; 
}
26.12.2014 04:29
neuling96
unregistriert
RE: OO Programmierung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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]
26.12.2014 04:30
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

eulerscheZahl hat diese Bilder (verkleinerte Versionen) angehängt:
3EuPWYc.jpg ZGUoQrB.png



__________________
Syntax Highlighting fürs Board (Link)
26.12.2014 08:32 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?
26.12.2014 08:44
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
26.12.2014 09:06
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

eulerscheZahl hat dieses Bild (verkleinerte Version) angehängt:
infoboard_dateianhang.png



__________________
Syntax Highlighting fürs Board (Link)
26.12.2014 09:33 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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;
}
}
26.12.2014 10:05
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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


__________________
Syntax Highlighting fürs Board (Link)
26.12.2014 10:08 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

Gott
26.12.2014 11:40
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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??
15.01.2015 12:39
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)
15.01.2015 12:59 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?
15.01.2015 13:05
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)
15.01.2015 13:07 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?
18.01.2015 14:20
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
18.01.2015 15:51 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » OO Programmierung