richtig umgesetzt ?

Status
Nicht offen für weitere Antworten.

sowieso

Aktives Mitglied
Hallo!

Ich hab jetzt zum ersten mal mit einer abstract class programmiert und wollte fragen, ob ich das auch sinnvoll umgesetzt habe:

Ein "Bernoulli-Experiment" ist auch ein "Zufallsexperiment". Es gibt aber noch mehr Zufallsexperimente. Nun sollten die alle eine Funktion starten() haben, wie die abstrakte Klasse sie auch hat. sie unterscheiden sich nur durch ihre Ergebnismenge (ob das nun stimmt oder nicht ist jetzt egal).

Code:
import java.util.Random;

public abstract class Zufallsexperiment
{
	protected Object[] ergebnisMenge;

	protected Object starten()
	{
		ergebnisMengeSetzen();
		Random ran = new Random();
		try
		{
			int randomIndex = ran.nextInt(anzahlElemente());
			return ergebnisMenge[randomIndex];
		}
		catch (NullPointerException e)
		{
			System.err.println(e + " ergebnisMenge not set properly");
			return null;
		}
	}

	private int anzahlElemente()
	{
		return ergebnisMenge.length;
	}

	protected abstract void ergebnisMengeSetzen();	
}
Code:
public class Bernoulli_Experiment extends Zufallsexperiment
{
	@Override
	protected void ergebnisMengeSetzen()
	{		
		ergebnisMenge = new Object[3];
		ergebnisMenge[0] = "Hans";
		ergebnisMenge[1] = "Peter";	
		ergebnisMenge[2] = "Birkner";	
	}
	
	protected Bernoulli_Experiment()
	{
		super();
	}
}

Bin interessiert, ob das vielleicht total unsauber programmiert ist oder so 😉
 
sieht aus, als würde es funktionieren, hast du ja sicher getestet

vom Aufbau her kann man da allerdings nicht viel Sinn entdecken,
was unterscheidet so ein allgemeines Konzept wie 'Zufallsexperiment' von einem speziellen 'Bernoulli_Experiment'?
nur das Setzen der Ergebnismenge?

sonst ist natürlich nicht viel drin in den Klassen, aber mit scheint da weit eher die Operation starten() Bernoulli-mäßig auszuschauen
 
Es soll sich hier tatsächlich nur die ergebnismenge je nach speziellem Experiment unterscheiden. Ist es also vom Prinzip her richtig, dass ich z.B. keine Interface statt einer abstrakten Klasse genommen hab?
 
du willst eine Blume pflanzen und fragst, ob es richtig ist, einen grünen Bagger statt eines blauen Baggers zu nehmen..

da gibts kein richtig oder falsch, in jedem Fall hätte es ein Spaten genauso getan

wo keine mehreren unterschiedlichen Klassen/ Experimente vorhanden sind, da auch keine unterschiedlichen Klassen oder gar Interfaces/ Vererbung,
wenn allein aus theoretischen Bemühungen, dann kann ich wie gesagt keinen Sinn erkennen,

und allein für eine Menge von Ergebnissen sowieso nicht,
die kannst du im Konstruktor als Parameter übergeben
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben