Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen

Hallo,

der Datentyp legt ja die Art der Daten fest, die in einer Variablen gespeichert werden können. Einer Variablen vom Typ "Ganzzahl" darf ich ja auch nur eine ganze Zahl zuordnen. Der Wert der Variablen ist also EINE ganze Zahl, da der Wertebereich auf "Ganzzahl" festgelegt ist.

Was ist jedoch der Wert einer Variablen mit einem komplexen Datentyp? Wenn ich mir nen komplexen Datentyp "Punkt" bastle bestehend aus 2 Variablen x und y vom Typ "reelle Zahl". Ist der Wert der Variablen dann ZWEI (reelle) Zahlen oder wie muss ich mir das vorstellen?

Aus was besteht also der Wertebereich eines zusammengesetzten/komplexen Datentyps?

Gruß und Danke
 
du definierst die Klasse -> du definierst den Wertebereich.
Theoretisch ist alles Möglich.

Beispiel Klasse Fahrzeug
du möchtest, dass alle Fahrzeuge, die du bedienen möchtest, eine gewisse Anzahl an Rädern haben.

du fügst dem Fahrzeug also eine Variable hinzu:

int raeder;

jetzt könnte diese Zahl ja irgendwas aus dem integer-Wertebereich bekommen. das wollen wir aber nicht, da ein Fahrzeug mit -3 Reifen sicherlich schlecht verkäuflich wäre.

Also versteckst du die Zahl hinter private
und erlaubst nur beim Konstruieren des Fahrzeugs das setzen des Wertes
Du überprüfst aber auch gleich, ob die Anzahl der Räder in deinem Wertebereich ist:

Java:
public class Fahrzeug {
	private int raeder;
//der Wertebereich
	private final int maxRaeder = 12;
	private final int minRaeder = 1;
	
	
	public Fahrzeug(int raeder) {
		
		if (raeder <minRaeder || raeder > maxRaeder) {
			throw new WertebereichVerletztException();
		} 
		this.raeder = raeder;
	}
	
}

ist der Wert ausserhalb deines definierten Wertebereichs, wirfst du eine neue Exception (die du auch selber gemacht hast)
 
Zuletzt bearbeitet:
Hallo,

so ganz verstehe ich es trotzdem noch nicht. Wenn ich den ganz. Typ byte verwende dann kann ich meiner Variablen ja ganze Zahlen innerhalb des Wertebereichs -127 bis +128 zuweisen.

Wenn ich mir nen (zusammengesetzten) Datentyp Punkt (der intern aus x und x int oder double besteht= definiere was ist denn dann mein Wertebereich? (unabh. von Java wo das ja ein Referenztyp ist, d.h. der Wertebereich ja eigentlich Referenzen auf ein Punkt Objekt sind)

Punkt p = ... ?
 
du definierst das SELBST (innerhalb des Wertebereichs der primitiven Typen)
und wie das geht hab ich dir gezeigt.

Wenn du einen Punkt hast, und dem 2 int Werte als x und y gibst, dann haben diese - sofern du das nicht anders löst, wie mit den Rädern - jeweils den für int gültigen Wertebereich.

Java:
public class Punkt{
 private int x; //voller INT Wertebereich
 private int y; //voller INT Wertebereich

public Punkt(int xWert, int yWert){
x = xWert;
y = yWert;
}

}

und du machst Punkt p = new Punkt (5,34905739482345236569389);
dann hat dein Punkt p diese beiden Werte als x und y - bei meinem Beispiel knallt es aber, weil der 2. Parameter zu groß ist und int y einen zu kleinen Wertebereicht hat. (Integer)
 
Zuletzt bearbeitet:
Komplexe Datentypen haben keinen "Wertebereich". Die Menge aller Punkte ist in diesem Zusammenhang aber nicht näher definierbar. Außerdem kann ist "null" nichts ist, aber einen möglichen "Wert" darstellt. Außerdem kann man unendlich viele Objekte erstellen von einem Typen (natürlich Speicherplatz begrenzt 😉) und somit kann man keinen Wertebereich festlegen.

Im Gegensatz dazu stehen eben die primitiven Datentypen (int, long, byte, char, ....) welche einen Wertebereich haben.

[OT]Wie kommst du eig auf diese Frage?[/OT]
 

Zurück
Oben