Wissensfragen 24.02.2011


wo wir grad hier bei ADTs sind kann mir vielleicht jemand bei der Übungsaufgabe helfen?

Wie würde das denn zb bei dem angehängten aussehen?

ich versteh das irgendwie nicht ganz wie man da vorgehen muss.

class Kind {

 Geist(Kind){
 }
 boolean geburt (Kind){
 }

usw ?

Attachment:
ADTkomisch.PNG: https://fsi.cs.fau.de/unb-attachments/post_104861/ADTkomisch.PNG


Ich bin mal so nett und stell hier meine Lösung für Kind rein:

public class Kind {

	private boolean artig;
	private boolean geist;

	Kind() {
		geist = true;
	}

	Kind(boolean artig) {
		this.artig = artig;
		geist = false;
	}

	Kind(Kind k) {
		if (k.geist) {
			geist = true;
		} else {
			this.artig = true;
			geist = false;
		}
	}

	public boolean istArtig() {
		if (geist)
			return false;
		return artig;
	}

	public boolean istUnartig() {
		if (geist)
			return false;	
		return !(artig);
	}
}

danke danke danke, das ist sehr sehr nett.


Ich kannes immer noch nicht ganz nachvollziehen (Mist ich muss das noch verstehen bis übermorgen).

Wie kommt man denn zb auf folgendes ?

 Kind() {

        geist = true;

    }

Dazu haben wir uebrigens auch eine “offizielle” Loesung veroeffentlicht.

1 „Gefällt mir“

ich hab auch probleme mit der Aufgabe.

Also IstUnartig und IstArtig versteh ich ja, aber wie man auf den rest bei Kind kommt verstehe ich nicht.

Zum Beispiel wieso wird lediglich geist und artig initialisiert?

EDIT: und wieso wird geburt hier vollkommen weggelassen?


Geburt ist ein Hilfskonstruktor mit dem du eben bei der Initialisierung eines Kindobjekts angibst, ob es artig (true) oder unartig (false) ist.

Wenn du ein Kindobjekt ohne den Hilfskonstruktor “geburt” initialisiert, ist das Kind nun mal nicht geboren, sondern ein geist: deshalb this.geist = true;


Hat jemand zufällig die Lösungen zu den Aufgaben 6a,b,c ?

Ich bin mir immer noch mit der Dijkastra Tabelle unsicher wie man die nun richtig ausfüllt, wenn man gleiche Längen hat. Wäre sehr nett von euch :slight_smile:


Wenn du mehrere, gleichwertige Knoten hast, die noch offen und minimale Distanz haben, dann liest du die Aufgabenstellung, ob drinsteht, was als Tie-Breaker verwendet werden soll:

Falls kein Tie-Breaker drinsteht, kannst du irgendeinen nehmen.

1 „Gefällt mir“

kann mir bitte jemand bei der aufgabe 4b weiterhelfen?!? ich steh da grad voll aufm schlauch :frowning:


bedeutet es eigentlich irgendwas wenn im UML diagramm zb en Attribut nur in großbuchstaben geschrieben ist?

Wie zb in na alten Klausur: +SCHWARZ


Jein. Also in der offiziellen UML Syntax bedeutet das nichts. Aber in Java werden (nach Konvention) Konstanten (also final Variablen) in Grossbuchstaben geschrieben, demnach legt es nahe das SCHWARZ eine Konstante ist.


Eine Allgemeine Frage zu den Konstanten. Falls im Java Code die Konstante mal nicht in Grobuchstaben geschrieben ist, wie kann ich dann im UML ersichtlich machen dass es sich um eine Konstante handelt? Z.B. so Schwarz: int final = 0; oder darf ich dann einfach trotzdem Großbuchstaben verwenden??


https://fsi.informatik.uni-erlangen.de/forum/post/101902


okay danke.

Die frage von ellwoods is auch noch intressant.

Dann hab ich aber noch ne frage zu den multiplizitäten. Wenn da zb sowas ist:

                   -a

1 *

also auf der einen seite von der assoziation ne 1 und auf der andren seite nen *

wie unterscheidet sich das im Code von dem:
-a


0…1 *

ich hab es bis jetzt so gemacht, dass ich immer wenn da irgendwo ein * stand dass ich dann en array drauß gemacht hab. also zb

private type [] A;

is das so ok?


Ich habs genauso gemacht. 0…* , 1…* (aber auf Aggregation und Komposition aufpassen!) und * sind das selbe. Genauso wie 0…1 und 1.


Wie sieht das denn dann genau aus ?

Ich habe folgendes:

A B C D E F G H K Z
0 - - - - - - - - -
9 6
9
15 19
9
12

also würde man das B dann einfach in die neue Zeile runterholen ? Und das es so lückenhaft aussieht stimmt auch ? Das macht mich nämlich etwas stutzig :smiley:


Das sollte vom Code her kein Unterschied machen.

Krankenhaus 1 --------- * Arzt

Ein Arzt ist genau in einem Krankenhaus beschäftigt. Krankenhäuser beschäftigen mehrere Ärzte.

class Arzt {
     Krankenhaus krankenhaus;
}

class Krankenhaus {
     Arzt[] aerzte;
}

Hier muss dem Arzt ein Krankenhaus explizit zugeordnet werden (krankenhaus != null).

Krankenhaus 0…1 --------- * Arzt

Ein Arzt ist in einem Krankenhaus beschäftigt nicht (er kann auch selbstständig arbeiten). Krankenhäuser beschäftigen mehrere Ärzte.

class Arzt {
     Krankenhaus krankenhaus;
}

class Krankenhaus {
     Arzt[] aerzte;
}

Bei diesen Arztobjekten könnte man auch krankenhaus = null; angeben, um zu zeigen, dass er selbstständig arbeitet.


und woran erkenne ich im Code komposition und aggregation?

und 0…1 ist das gleiche wie 1 (im Code)?


Gar nicht. Es gibt in Java kein „not null“ wie in SQL.

Ich tendiere zu „ja“.