Mengen

adcak

Mitglied
Hallo zusammen, und zwar habe ich eine Aufgabe bekommen, aber leider komme ich nicht weiter. In der Vorlesung hatten wir über set<> gesprochen, aber da wurde es ganz anders gesprochen bzw Implementiert zb mit <T> <String> aber hier wird diese <> nicht benötigt. Oder hat es nichts mit Set zutun?? Wäre sehr nett wenn ihr mir helfen würdet bzw Lösungsvorschläge geben würdet.20170708_005646.jpg
 

Meniskusschaden

Top Contributor
Oder hat es nichts mit Set zutun?
Der Datentyp Set ist zwar dazu gedacht, Mengen zu verwalten, hat mit dieser Aufgabe aber sonst nichts zu tun. Hier soll die Menge über ein Bitfeld realisiert werden. Jedes mögliche Element der Menge wird durch ein Bit der Variablen capabilities repräsentiert. Ein gesetztes Bit zeigt an, dass das Element enthalten ist, ein gelöschtes Bit zeigt an, dass es fehlt. Durch geeignete Anwendung der Bitmanipulations-Operatoren auf capabilities und die jeweilige "Fähigkeits-Konstante", kann man die einzelnen Bits gezielt setzen und abfragen.

Ich finde allerdings etwas seltsam, dass die Konstanten nicht statisch definiert sind. Auf den ersten Blick würde mir das sinnvoller erscheinen. Vielleicht gibt es einen Grund dafür, den ich nicht erkenne. Für die Lösung der Aufgabe spielt das noch keine Rolle, wenn man es testen möchte aber schon.
 

Meniskusschaden

Top Contributor
Ich meinte damit nur, dass man die Klasse dann z.B. so
Java:
Capabilities capabilties = new Capabilities();
capabilty.setCapability(capabilties.COFFEEMAKER);
statt so
Java:
Capabilities capabilty = new Capabilities();
capabilty.setCapability(Capabilities.COFFEEMAKER);
benutzt. "Testen" war hier stellvertretend für "benutzen" gemeint.

EDIT: Statt capability hätte ich lieber capabilities schreiben sollen. Bei einer Menge ist Plural angebracht.:eek:
 
Zuletzt bearbeitet:

Meniskusschaden

Top Contributor
Ich korrigiere noch mal, weil oben Murks steht (man sollte eben nichts ungetestets posten):
Ohne static würde man so:
Java:
Capabilities capabilties = new Capabilities();
capabilties.setCapability(capabilties.COFFEEMAKER);
und mit static so arbeiten:
Java:
Capabilities capabilties = new Capabilities();
capabilties.setCapability(Capabilities.COFFEEMAKER);
 

DrZoidberg

Top Contributor
Zahlen im Computer sind grundsätzlich in binärer Form gespeichert. Die Variable capabilities ist vom Typ byte. D.h. sie besteht aus 8 Bit. Die letzten 6 dieser 8 Bit sollen nun genutzt werden, um die 6 verschiedenen Eigenschaften zu speichern. Es gibt in Java extra Operatoren um Bits zu manipulieren. Damit kannst du Bits setzen, löschen oder testen.
 

DrZoidberg

Top Contributor
Fangen wir doch erstmal mit den 6 final Variablen an. Welche Werte könnten die haben? Hinweis: Bei jeder der Variablen ist jeweils nur ein Bit eine 1 und der Rest 0.
 

DrZoidberg

Top Contributor
Ja genau. Aber du musst vor Binärzahlen noch ein 0b setzen, z.B. 0b00100000 oder du wandelst die Zahlen ins Dezimalsystem um. Also 1,2,4,...
Bei der Methode setCapability kannst du dann mit einer Oder Verknüpfung arbeiten (In Java ist das der | Operator). Für hasCapability verwendest du & (Und Verknüpfung) und für removeCapability brauchst du & und ~.
 

Ähnliche Java Themen

Neue Themen


Oben