Begrenzte Anzahl an Objekten?

yungxhihiro

Neues Mitglied
Hallöchen,

das ist mein erster Beitrag und ich bin frischer Quereinsteiger was das Programmieren bzw. Java betrifft. Ich habe mir mithilfe von "C" die Grundlagen beigebracht und möchte mich nun für Java interessieren. Würde mich freuen wenn ihr nicht allzu implizite Antworten gebt und nett seid. Danke!

Ich sitze momentan an einem Übungsblatt meiner Uni:

Schreiben Sie eine Klasse "Dragon".
Die Klasse soll sicherstellen, das es nie mehr als drei Instanzen von ihr gibt. Sie soll zwei Methoden anbieten:

die() -> Diese Methode markiert den Drachen als verstorben. Für jeden "verstorbenen" Drachen kann eine neue Instanz erzeugt werden.

isAlive() -> Diese Methode überprüft, ob der Drache noch lebt. Lebt er gibt sie "Still alive!" auf der Standardausgabe aus. Ist er tot, wirft die Methode eine IllegalStateException.


Ich hatte einige Lösungsansätze. Ich habe es mit dem "Singleton Pattern" versucht, nur so umgebastelt das es halt für drei Drachen passt. Ob das möglich/erlaubt/ oder schön ist, hab ich erstmal vorweg gelassen. Das hat nicht funktioniert, wie ich wollte.

Ich hatte von Kommilitonen "Enums" empfohlen bekommen, weswegen ich mich über Enums schlau machte. Leider weiß ich überhaupt nicht wie man mit Enums diese Aufgabe lösen soll.

Ich steh mit leeren Händen da und weiß garnicht wo ich anfangen soll.

Falls ihr mir ein wenig auf die Sprünge helfen könntet wäre das echt toll!

Liebe Grüße

Chihiro
 

Robat

Top Contributor
Also Enums halte ich an dieser Stelle nicht für das richtige Mittel.

Ich denke hier wäre das Factory Pattern angebracht.
Anstatt die Instanzen über den Konstruktor zu erzeugen, gibt es eine Factory-Klasse, mit einer statischen Methode, um neue Drachen-Instanzen zu erzeugen. Dragon d = DragonFactory.createInstance();.
Intern kannst du in der Factory-Klasse eine statischen Counter mitzählen lassen um die Anzahl der Drachen zu zählen.
 

Blender3D

Top Contributor
Schreiben Sie eine Klasse "Dragon".
Die Klasse soll sicherstellen, das es nie mehr als drei Instanzen von ihr gibt. Sie soll zwei Methoden anbieten:

die() -> Diese Methode markiert den Drachen als verstorben. Für jeden "verstorbenen" Drachen kann eine neue Instanz erzeugt werden.

isAlive() -> Diese Methode überprüft, ob der Drache noch lebt. Lebt er gibt sie "Still alive!" auf der Standardausgabe aus. Ist er tot, wirft die Methode eine IllegalStateException
Bei dieser Vorgabe sehe ich einen Widerspruch.
1) Es darf nie mehr als 3 Instanzen von Dragon geben.
2) Für jeden verstorbenen Dragon, kann aber eine neue Instanz erzeugt werden.
Hier ist der Widerspruch.
Da ja die Methode isAlive() nur Sinn macht wenn ein verstorbener Dragon nicht auf null gesetzt wird.
z.B. Ich habe 3 Dragon. Einer stirbt. Ich kann einen weiteren Dragon erzeugen. -> Es gibt 4 Instanzen von Dragon.
3 lebende und eine tote. Wahrscheinlich meint der Aufgabensteller. Es darf maximal 3 lebende Instanzen geben.

Ich denke hier wäre das Factory Pattern angebracht.
Ich halte den FactoryPattern alleine hier nicht für geeignet.
z.B.
Code:
Dragon d1 = DragonFactory.createInstance();
Dragon d2 = DragonFactory.createInstance();
Hier können 6 Instanzen erzeugt werden. Es ist so nicht sicher gestellt, dass es nur 3 Instanzen gibt.
Der Singleton Pattern ist da eher geeignet. Der könnte dann eine DragonFactory liefern, die maximal 3 lebende Drachen erzeugen kann.
 

Robat

Top Contributor
Okay hab gerade noch mal nach geschaut und verstehe was du meinst. Hatte im Kopf, dass das im FactoryPattern schon mit drin ist .. mein Fehler.
Natürlich sollte es nicht möglich sein, mehrere Instanzen der Factory-Klasse zu erstellen.
 

Blender3D

Top Contributor
Okay hab gerade noch mal nach geschaut und verstehe was du meinst. Hatte im Kopf, dass das im FactoryPattern schon mit drin ist .. mein Fehler.
Du hattest nicht so ganz unrecht, da der Counter static ist gehen so auch nur 3 Instanzen mein Fehler.
Trotzdem macht ein Singleton hier Sinn, weil beliebig viele Factories bei der Aufgabenstellung keinen Sinn machen.
 

yungxhihiro

Neues Mitglied
Hier ist der Widerspruch.
Da ja die Methode isAlive() nur Sinn macht wenn ein verstorbener Dragon nicht auf null gesetzt wird.
z.B. Ich habe 3 Dragon. Einer stirbt. Ich kann einen weiteren Dragon erzeugen. -> Es gibt 4 Instanzen von Dragon.
3 lebende und eine tote. Wahrscheinlich meint der Aufgabensteller. Es darf maximal 3 lebende Instanzen geben.
Vielen Dank, so hatte ich es nämlich auch die ganze Zeit verstanden. Einen Drachen mit beispielsweise alive=false zu "flaggen" ist meilenweit einfacher als aus der Methode "die()" das Drachen Objekt rauszulöschen bzw. auf null zu setzen.

Ich werde meinen Dozenten mal darauf ansprechen. Wäre es möglich aus der Methode Die() das Objekt irgendwie zu löschen?
 

Blender3D

Top Contributor
Kurz zum Thema Aufgabenstellung und Factory: da steht die Klasse Dragon (und nicht eine Factory) soll sicherstellen, dass es nur drei Instanzen gibt -> static int in Dragon
Stimmt.
Java:
public class Dragon {
    public final static int MAX_ALIVE_DRAGONS = 3;
    private boolean isAlive = true;
    private static int cnt = 0;

    public Dragon() {
        if (cnt == MAX_ALIVE_DRAGONS)
            throw new IllegalStateException();
        cnt++;
    }

    public void isAlive() throws IllegalStateException {
        if (!isAlive)
            throw new IllegalStateException("Dragon is death");
        System.out.println("Still alive!");
    }

    public void die() {
        if (isAlive)
            cnt--;
        isAlive = false;
    }

    @Override
    public String toString() {
        return isAlive ? "alive" : "death";
    }
}
Java:
public class start {
    public static void main(String[] args) {
        Dragon[] dragons = new Dragon[4];
        for (int i = 0; i < Dragon.MAX_ALIVE_DRAGONS; i++)
            dragons[i] = new Dragon();
        dragons[0].die();
        dragons[3]  = new Dragon();
        for( Dragon d : dragons )
            System.out.println(d);
    }
 

mrBrown

Super-Moderator
Mitarbeiter
Da ja die Methode isAlive() nur Sinn macht wenn ein verstorbener Dragon nicht auf null gesetzt wird.
Die Methode macht in der Benennung generell keinen Sinn, weil Name und Implementierung völlig komplementäre Dinge sind ;)

Ich halte den FactoryPattern alleine hier nicht für geeignet.
z.B.
Hier können 6 Instanzen erzeugt werden. Es ist so nicht sicher gestellt, dass es nur 3 Instanzen gibt.
Der Singleton Pattern ist da eher geeignet. Der könnte dann eine DragonFactory liefern, die maximal 3 lebende Drachen erzeugen kann.
@Robat spricht doch von einer statischen Factory-Methode, damit gibt es nicht mehrere Factory-Instanzen, sondern eben nur genau die eine statische, die genau drei Instanzen erzeugen kann?

Ach wie schön es doch wäre, wenn nicht immer direkt eine fertige Lösung geliefert wird ;)

Ich würde das übrigens mit einer Factory-Methode verbinden, Konstruktoren die sowas machen, sind mir immer sehr suspekt...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Begrenzte Anzahl von Klicks Java Basics - Anfänger-Themen 3
A begrenzte Datenstruktur zur Speicherung von bytes Java Basics - Anfänger-Themen 6
F String begrenzte Länge??? Java Basics - Anfänger-Themen 16
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
C Parameter in verschiedenen Anzahl und Typen Java Basics - Anfänger-Themen 6
Ibrahim Anzahl möglicher Reiserouten zurückgeben Java Basics - Anfänger-Themen 5
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
M Anzahl Kommandozeilenparamter mittels Methode Java Basics - Anfänger-Themen 11
I Eindeutiger String mit maximaler Anzahl an Zeichen Java Basics - Anfänger-Themen 11
nils812 Black Jack Karten Anzahl begrenzen Java Basics - Anfänger-Themen 5
berserkerdq2 sqllite in Java, wenn ich mache select count(*) ..., erhalte ich dann nur die gezählte Anzahl oder werden auch die Tabellen ausgegeben? Java Basics - Anfänger-Themen 2
I Prüfen, ob Anzahl an Monate ein Jahr ergeben Java Basics - Anfänger-Themen 4
B Anzahl Nullen uns Einsen in String ermitteln Java Basics - Anfänger-Themen 3
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
C Anzahl ArrayLists unbekannt Java Basics - Anfänger-Themen 4
O Anzahl Datensätze ausgeben Java Basics - Anfänger-Themen 5
T Maximale Anzahl von Konsonanten im String Java Basics - Anfänger-Themen 6
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
W Dez-->Binär mit eigener bit Anzahl Erkennung. Java Basics - Anfänger-Themen 3
RudiRüssel maximale Anzahl von Schlüsseln in einer Hash Tabelle Java Basics - Anfänger-Themen 2
W Anzahl der Zeilen ausgeben lassen Java Basics - Anfänger-Themen 20
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
Kingamadeus2000 Anzahl der Ziffern der kürzesten Zahl aus einem zurückliefern Java Basics - Anfänger-Themen 1
Tino1993 for-Schleife, die eine vorgegebene Anzahl von Zeichen ausgibt Java Basics - Anfänger-Themen 3
M Anzahl Schleifendurchgänge nach x Sekunden anzeigen Java Basics - Anfänger-Themen 2
P Primzahl mit Angabe der höchsten Primzahl und Angabe der Anzahl von Primzahlen bis 100 Java Basics - Anfänger-Themen 8
L Anzahl der benachbarten Minen berechnen und setzen Java Basics - Anfänger-Themen 15
Kirby.exe Anzahl vorkommender Elemente im Array zählen Java Basics - Anfänger-Themen 9
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
B Von Array nur eine bestimmte Anzahl bekommen Java Basics - Anfänger-Themen 3
L Anzahl der Paare deren Summe = 0 ergibt berechnen Java Basics - Anfänger-Themen 0
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
L Anzahl der Aufrufe von Schleifen bestimmen Java Basics - Anfänger-Themen 1
D Alle Möglichkeiten, n-Anzahl aus Elementen aus einem Array zu wählen, ausgeben? Java Basics - Anfänger-Themen 23
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
O ObjectOutputStream Anzahl Objekte festhalten Java Basics - Anfänger-Themen 17
B Anzahl von Stunden / Tage von zwei Datumswerten ermitteln Java Basics - Anfänger-Themen 1
L Dynamische Anzahl an Arrays mit verschiedenen Namen erzeugen Java Basics - Anfänger-Themen 6
H Anzahl verschiedener Buchstaben im String Java Basics - Anfänger-Themen 41
sondr Anzahl der gleichen Positionen im Array Java Basics - Anfänger-Themen 3
Y Konkrete Hilfe gesucht - Anzahl der Stellen einer eingegebenen Zahl überprüfen Java Basics - Anfänger-Themen 5
P Input/Output Bestimmte Anzahl von Werten in einem Array an Methode übergeben Java Basics - Anfänger-Themen 2
L Graphen: Anzahl Knoten // Knoten in Array speichern Java Basics - Anfänger-Themen 4
E Anzahl Datensätze in Textfeld Java Basics - Anfänger-Themen 5
K Anzahl gleicher Elemente in Array Java Basics - Anfänger-Themen 32
T befehle unterschiedlicher anzahl an strings wiedergeben Java Basics - Anfänger-Themen 2
L Feld mit beliebiger Anzahl von Buchstaben füllen... Java Basics - Anfänger-Themen 5
LikeManuel Anzahl der Teiler Java Basics - Anfänger-Themen 6
D Anzahl von Zahlen bei eingabe begrenzen Java Basics - Anfänger-Themen 37
T Erste Schritte Schreiben Sie eine Klasse Zeit, die eine Zeitdauer in Minuten beschreibt. Die Anzahl Minuten verwalt Java Basics - Anfänger-Themen 3
J Max. Anzahl von Knoten im Binärbaum Java Basics - Anfänger-Themen 3
ralli85 Programm nach einer gewissen Anzahl von Eingaben beenden Java Basics - Anfänger-Themen 15
Z Ausgabe: Anzahl Sterne, danach verringern Java Basics - Anfänger-Themen 7
R Anzahl von Zeichen in einem Char Array Java Basics - Anfänger-Themen 4
A Anzahl der Elemente in einem Stack wiedergeben Java Basics - Anfänger-Themen 3
V Anzahl der Möglichkeiten 20 € zu bezahlen Java Basics - Anfänger-Themen 2
A variable Anzahl an Nutzereinagben Java Basics - Anfänger-Themen 4
stylegangsta Anzahl der gefunden array Werte ausgeben Java Basics - Anfänger-Themen 6
D Variable Anzahl an Buttons per Schleife Java Basics - Anfänger-Themen 7
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
M Überschneidende Anzahl von Tagen Java Basics - Anfänger-Themen 4
D Suche nach der Anzahl von Zonen zwischen zwei Punkten Java Basics - Anfänger-Themen 2
S Input/Output Alphabet in eine Datei schreiben und Anzahl von Zeichen ausgeben. Java Basics - Anfänger-Themen 4
I Anzahl der Rechenschritte darstellen lassen Java Basics - Anfänger-Themen 11
C Anzahl bestimmter Zeichen in einem String ausgeben Java Basics - Anfänger-Themen 7
T Anzahl bestimmter Werte eines arrays bestimmen Java Basics - Anfänger-Themen 4
A Rekursion, Anzahl von Stellen ausgeben Java Basics - Anfänger-Themen 7
S Anzahl Quersummen bis zur Einstelligkeit Java Basics - Anfänger-Themen 12
S Anzahl unterschiedlicher Elemente zählen Java Basics - Anfänger-Themen 4
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
R Begrenzer Anzahl von paint() ? Java Basics - Anfänger-Themen 3
J Anzahl von for-Schleifen in Abhängigkeit von Zahleneingabe erzeugen Java Basics - Anfänger-Themen 1
C Beliebige Anzahl Arrays zusammenfügen Java Basics - Anfänger-Themen 5
L Best Practice Alle Kombinationen aus Listenelementen, Anzahl Listen unterschiedlich Java Basics - Anfänger-Themen 6
I Methoden ByteBuffer - Anzahl führender Nullen Java Basics - Anfänger-Themen 3
E Array Anzahl verschiedener Werte ausgeben Java Basics - Anfänger-Themen 3
V Anzahl von gleichen Werten in einem Int-Array ermitteln Java Basics - Anfänger-Themen 4
B Anzahl if anweisungen nicht bekannt Java Basics - Anfänger-Themen 3
T Anzahl der Schritte berechnen Java Basics - Anfänger-Themen 6
R Anzahl der ineinander verschachtelten for-Schleifen von Variable abhängig machen Java Basics - Anfänger-Themen 5
P BitSet- Objekt- Anzahl der Elemente bestimmen Java Basics - Anfänger-Themen 2
B Variablen Unbekante anzahl an Strings splitten und vergleichen Java Basics - Anfänger-Themen 31
M Anzahl Zahlen in String Java Basics - Anfänger-Themen 21
A Threads Minimale und maximale Anzahl. Java Basics - Anfänger-Themen 28
J Bestimmte Anzahl Zeichen aneinander fügen Java Basics - Anfänger-Themen 9
H Anzahl Ziffer in Zahl bestimmen Java Basics - Anfänger-Themen 3
A Anzahl nodes in einem Tree Java Basics - Anfänger-Themen 2
G maximale Anzahl der Tage im Monat Java Basics - Anfänger-Themen 18
G Datentypen Double ausgeben mit minimaler Anzahl Nachkommastellen Java Basics - Anfänger-Themen 3
P Anzahl der else if Operatoren begrenzt?? Java Basics - Anfänger-Themen 7
B genaue Anzahl der Operationen in Schleifen Java Basics - Anfänger-Themen 5
Dit_ Anzahl der Bestellungen grafisch abbilden | Statistisk Java Basics - Anfänger-Themen 6
Luk10 Anzahl der Knoten in einem Baum ausgeben! Java Basics - Anfänger-Themen 6
F Methoden Hanoi - Anzahl der Bewegungen Java Basics - Anfänger-Themen 8
A Counter für die anzahl von regulären ausdrücken Java Basics - Anfänger-Themen 4
M float/double Anzahl Nachkommastellen ermitteln Java Basics - Anfänger-Themen 18
B Anzahl der Werte bestimmen Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben