TreeSet Zugriff aus anderer Klasse

Raynien

Mitglied
Aufgabe:
Definieren Sie eine abstrakte Basisklasse Net für Widerstandsnetze mit einem Datenelement
resistors vom Typ java.util.TreeSet, das die eindeutigen Namen (ID) aller
im Netz vorkommenden Widerstande als Strings enthalt.
Ferner gibt es
(a) eine abstrakte Methode ohm() mit Rückgabetyp double, das den Gesamtwiderstand
des Netzes zurückgibt;
(b) eine implementierte Methode show(), die die Menge resistors mit einer foreach-
Schleife durchläuft und alle IDs der Widerstände im Netz als String zurückgibt.

Frage: Wenn ich den TreeSet in Net implementiere, dann kann ich in einer Testklasse nicht mehr darauf zugreifen, bzw. Werte einfügen, auslesen und so weiter.
Bedeutet das, dass man nur in der Klasse wo man den Tree implementiert hat auf diesen zugreifen kann?
 

Oneixee5

Top Contributor
Du kannst die notwendigen Methoden delegieren. Das ist ganz simpel:
Java:
public class Net {

    private final TreeSet<String> resistors;

    public Net() {
        this.resistors = new TreeSet<String>();
    }

    // delegate TreeSet#add
    public boolean addResistor(String resistor) {
        return this.resistors.add(resistor);
    }

    ...
}
So ist es indirekt möglich die Methoden des TreeSet zu kapseln und nur notwendiges nach außen verfügbar zu machen..
 

Neumi5694

Top Contributor
Es kommt darauf an, welchen Modifier zu verwendest (keinen, public, protected, private).

Mach es am besten so, wie es Oneixee5 gezeigt hat: Speichere es in einer private Variable und und sprich es über Methoden an, die auch extern zugänglich sind (package protected, protected oder public).
 

Oneixee5

Top Contributor
Was ist das Problem mit der abstrakten Klasse?
Java:
public abstract class Net {

    private final TreeSet<String> resistors;

    public Net() {
        this.resistors = new TreeSet<String>();
    }

    public boolean addResistor(final String resistor) {
        return this.resistors.add(resistor);
    }

    public abstract double getAggregatedResistance();

}
 

Oneixee5

Top Contributor
Man kann mit einem kleinen Trick - Fake-Implementierung - das Ganze aus einer Main-Methode testen.
Java:
public class App {
    public static void main(String[] args) {
        Net net = new Net() {
            @Override
            public double getAggregatedResistance() {
                // TODO Auto-generated method stub
                return 0;
            }
        };
        net.addResistor("666");
    }

}
 

Neumi5694

Top Contributor
Dein Aufgabentext lässt einige Fragen offen. Es ist zu vermuten, dass das Ganze so gedacht ist, dass die abstrakten Methoden in einer abgeleiteten Klasse umzusetzen ist. Ansonsten bräuchtest du für a) ja nur den Header zu definieren und den Aufgabentext in die Dokumentation kopieren.
b) hingegen wird in der Klasse Net implementiert.
Damit deine abgeleitete Klasse das Treeset nutzen kann, müssen entweder das Treeset selbst (nicht zu empfehlen) oder die Zufriffsmethoden zumindest "protected" sein.
 

Oneixee5

Top Contributor
Damit deine abgeleitete Klasse das Treeset nutzen kann, müssen entweder das Treeset selbst (nicht zu empfehlen) oder die Zufriffsmethoden zumindest "protected" sein.
Da muss ich widersprechen. Man sollte das TreeSet evtl. besonders schützen, damit der ursprüngliche Sinn des TreeSet auch nach der Implementierung erhalten bleibt.

Java:
public abstract class Net {

    private final TreeSet<String> resistors;

    public Net() {
        this.resistors = new TreeSet<String>();
    }

    public final boolean addResistor(final String resistor) {
        return this.resistors.add(resistor);
    }

    public abstract double getAggregatedResistance();

}
Die implementierende Klasse kann jetzt auf addResistor zugreifen aber nicht überschreiben.

Java:
public class NetImpl extends Net {

    @Override
    public double getAggregatedResistance() {
         return 0;
    }

    public static void main(String[] args) {
        NetImpl impl = new NetImpl();
        impl.addResistor("666");
    }
 
}
Will man weitere Möglichkeiten haben auf das TreeSet zuzugreifen, kann man in Net weitere Delegate-Methoden anlegen.
Java:
public final Iterator<String> iterator() {
    return this.resistors.iterator();
}
So ist sichergestellt, dass bei der Implementierung nicht einfach jemand this.resistors durch eine andere Instanz oder null ersetzen kann und die Delegate-Methoden können nicht einfach irgendwie "verbogen" werden.
 
Zuletzt bearbeitet:

Neumi5694

Top Contributor
Da muss ich widersprechen. Man sollte das TreeSet evtl. besonders schützen, damit der ursprüngliche Sinn des TreeSet auch nach der Implementierung erhalten bleibt.
Genau das sollte "nicht zu empfehlen" auch heißen. Damit die abgeleitete Klasse irgendwie darauf zugreifen kann, muss die Zugriffsmethode schon mindestens protected sein. Ist sie private, kann die abgeleitete Klasse nicht darauf zugreifen.
Ich denke, wir meinen schon das Selbe.

Sofern nicht irgend jemand anderes als eine abgeleitete Klasse darauf zugreifen muss, reicht protected, package protected und public wären dafür nicht notwendig.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Objete von Polygon mit TreeSet verwalten Java Basics - Anfänger-Themen 1
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
J Klassen HashSet, TreeSet: unregelmäßige Zahlenreihen beim Befüllen Java Basics - Anfänger-Themen 7
J Objecte in TreeSet einfügen klappt nicht Java Basics - Anfänger-Themen 5
G Laufzeit/ O/Θ-Notation einer Treeset Methode Java Basics - Anfänger-Themen 0
J TreeSet mit compareTo sortieren Java Basics - Anfänger-Themen 2
W Add zu TreeSet Probleme Java Basics - Anfänger-Themen 6
T TreeSet sortiert in ein anderes kopieren Java Basics - Anfänger-Themen 2
Todesbote Treeset - Wenn bestimmtes Objekt vorkommt Counter erhöhen Java Basics - Anfänger-Themen 6
Todesbote Map<String, Treeset> aus Treeset bestimmten Wert auslesen Java Basics - Anfänger-Themen 4
A Treeset per For-Schleife durchlaufen Java Basics - Anfänger-Themen 2
U TreeSet und Komparatoren Java Basics - Anfänger-Themen 6
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
B Lotto mittels TreeSet Java Basics - Anfänger-Themen 3
D Datentypen TreeSet aus einer List<String[]> befüllen Java Basics - Anfänger-Themen 18
M Treeset sortieren und ausgeben Java Basics - Anfänger-Themen 17
K TreeSet Sortieren Java Basics - Anfänger-Themen 6
E TreeSet Element löschen Java Basics - Anfänger-Themen 9
T treeSet durchsuchen Java Basics - Anfänger-Themen 2
R Sortieren TreeSet Java Basics - Anfänger-Themen 2
G HashSet vs. TreeSet Java Basics - Anfänger-Themen 3
M Problem beim Löschen des ersten Eintrags einer TreeSet Java Basics - Anfänger-Themen 3
J TreeSet methode Remove Java Basics - Anfänger-Themen 13
M TreeSet sortieren Java Basics - Anfänger-Themen 13
C Maximal-Anzahl von Objekten in TreeSet Java Basics - Anfänger-Themen 7
S TreeSet und StringTokenizer Java Basics - Anfänger-Themen 6
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
H Zugriff verweigert Java Basics - Anfänger-Themen 5
moiss002 Umgebungsvariable Kein Zugriff auf ein Array Java Basics - Anfänger-Themen 7
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
B Zugriffsmodifier, Zugriff außerhalb Package Java Basics - Anfänger-Themen 5
C Zugriff auf Attribut von Oberklasse Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
L Methoden Zugriff <identifier> expected Java Basics - Anfänger-Themen 13
T Java - Zugriff nur mit CLASSPATH ? Java Basics - Anfänger-Themen 7
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
D Zugriff auf Methode einer anderen Klasse Java Basics - Anfänger-Themen 5
S Zugriff auf Objekt Java Basics - Anfänger-Themen 5
A Klassen Zugriff auf Instanzen Java Basics - Anfänger-Themen 2
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
J Klassen Zugriff auf ein "String Array" Java Basics - Anfänger-Themen 6
H Datentypen ArrayList in ArrayList: Zugriff Java Basics - Anfänger-Themen 6
J get methoden zugriff und objekt erzeugung Java Basics - Anfänger-Themen 30
J Datenbank Zugriff Java Basics - Anfänger-Themen 24
T Zugriff auf JCheckBox Java Basics - Anfänger-Themen 8
E Netzlaufwerk Zugriff schlägt fehl Java Basics - Anfänger-Themen 11
C Group, Actor und Instanz-Zugriff, LibGDX Java Basics - Anfänger-Themen 4
S Zugriff auf Attribut einer unbekannten Klasse erhalten Java Basics - Anfänger-Themen 6
R Methoden Methode der GUI-Klasse Zugriff auf Methoden der Hauptklasse Java Basics - Anfänger-Themen 9
S Vererbung Zugriff auf die Basisklasse einer "zweiten" Erweiterungsklasse Java Basics - Anfänger-Themen 2
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
F Klassen Zugriff auf verschachtelte Objekte Java Basics - Anfänger-Themen 11
J Sichtbarkeit und Zugriff Java Basics - Anfänger-Themen 9
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
L Zugriff auf zwei Java-Quellcodes Java Basics - Anfänger-Themen 3
A OOP Zugriff auf Objekte von außen Java Basics - Anfänger-Themen 8
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
G Methoden Zugriff auf Methode.. aus einer anderen Klasse Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
J Erste Schritte Zugriff auf Eigenschaft Java Basics - Anfänger-Themen 2
M MVC - Problem mit Zugriff auf Objekt Java Basics - Anfänger-Themen 4
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
C 5 - Zugriff verweigert Java Basics - Anfänger-Themen 1
K Zugriff auf Variabeln Wert einer Instanz Java Basics - Anfänger-Themen 4
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
Z Zugriff auf andere Methoden Java Basics - Anfänger-Themen 12
Z Zugriff auf Pakete Java Basics - Anfänger-Themen 5
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
W OOP Zugriff auf mit Objekt erstellte Struktur Java Basics - Anfänger-Themen 7
F Klassen Zugriff auf Fenster aus versch. Klassen Java Basics - Anfänger-Themen 5
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben