Erstellen eines Widerstandsnetzwerks

ChrSli5385

Mitglied
Hallo liebe Java Freunde, ich habe folgendes Verständnisproblem. Es soll ein Widerstandsnetwerk aufgebaut werden und eine bestimmte Schaltung repräsentiert werden. Außerdem gibt es die Vorgabe eine abstrakte Klasse "Net" zu erstellen (inkl. der Methode abstract double ohm() sowie eine Klasse "Widerstand",welche von der Klasse Net abgeleitet wird und 2 weitere Klassen, welche auch abgeleitet werden sollen von Net: Parallel und Reihe. Außerdem sind Wert angegeben von den Widerständen. Nun aber zu meiner Frage: Die Musterlösung enthält einen default Konstruktor welcher als Attribut bezeichnet wird und mitunter in der Klasse Parallel vor die Instanzvariablen geschrieben wird (Siehe code) ich habe dies vorher noch nicht gesehen und wüsste gerne welche Thematik ich mir anschauen muss um dies nachvollziehen zu können. Gerne lade ich ggf. den vollständigen Code hoch falls notwendig..

Java:
public abstract class Net {
    
    // Attribute
    
    Net(){  // ist dies nicht ein default constructor??  Und abstract heißt doch dass kein Objekt erstellt werden soll in dieser Klasse
        
    }
    // Methoden
    
    abstract double ohm();
    
}

// hier dann die Klasse "Reihe

public class Reihe extends Net {
    
    // Attribute
    private Net wn1; // hier dann der Klassenname "Net" vor den Instanzvariablen, habe das so noch nicht gesehen
    private Net wn2;
    
    // Konstruktor
    
    public Reihe(Net a, Net b) { // hier dann als Übergabeparameter ???
        this.wn1 = a;
        this.wn2 = b;
    }
    
    // Methode
    
    public double ohm() {
        return wn1.ohm() + wn2.ohm();
    }
    
    
}
 

White_Fox

Top Contributor
Erstmal was zum Modifizierer abstract:
Abstrakte Klassen werden benutzt um Objekte zu klassifzieren, die zwar zusammengehören, deren Instanzierung aber nicht möglich oder unsinnig ist.

Beispiel: Du hast einen Mercedes AMG, einen BMW M3 und einen Audi A6. Alle könnten von einer abstrakten Klasse Auto abgeleitet sein. Du kannst z.B. sagen daß du ein Auto kaufst, oder irgendein Auto durch die Waschstraße fährst, es ist ja egal ob da jetzt der BMW oder der Mercedes drinsteht.

Du wirst aber sicherlich nicht zum Händler gehen und sagen daß du irgendein Fahrzeug haben willst. Oder?

Bei Methoden ist es im Prinzip das Gleiche: man macht sie abstrakt wenn sie für die Klasse einerseits wesentlich sind, deren Implementierung aber z.B. von der konkreten Ableitung der Klasse abhängig ist. Du kannst der Klasse Fahrzeug z.B. eine abstrakte Methode machGeraeusch(); mitgeben. Dann ist sichergestellt, daß jedes Fahrzeug ein Geräusch von sich gibt, was z.B. beim BMW ein sattes System.out.println("BRUUUUUUMMMMMM BRUUUUUUUMMMMM"); ist, bei einem Ford Fiesta ein System.out.println("töff töff");.

Aber: eigentlich faßt man gleichartige Dinge in einem Vererbungsbaum zusammen. Wobei es immer etwas Interpretationssache ist, was man als gleichartig versteht. Pflanzen und Tiere können gleichartig sein, sind ja alles Lebewesen. Andererseits würde ein Tier z.B. eine Methode fressen(); implementieren, was bei Pflanzen definitiv ein Problem wäre. Bei Tieren könnte man auf das Problem stoßen, daß man zwischen Herbivoren und Karnivoren unterscheiden muß und ein gemeinsamer Verbungsbaum deshalb vielleicht ein Problem wäre. Wie gesagt - es kommt drauf an was man vor hat.

Und da erschließt sich mir z.B. in deiner Aufgabe nicht, wie ihr da den Vererbungsbaum aufziehen sollt. Ich bin ja E-Techniker, von Informatik habe ich dagegen keien Ahnung. Und ein Netz sind eigentlich alle Punkte mit einem gemeinsamen Potential, bzw. alles was an einem Knoten hängt. Ein Netz hat deshalb z.B. keine Impedanz, und eine Methode double ohm(); wäre entsprechend zwecklos. Und ein Widerstand ist ein Bauteil, kein Netz. Ein Widerstand hängt höchstens zwischen zwei oder mehr Netzen.
 

ChrSli5385

Mitglied
Danke für deine Antwort White_Fox. Allerdings ist meine eigentliche Frage, warum der Klassenname hinter den Instanzvariablen steht damit nicht beantwortet
 

temi

Top Contributor
Allerdings ist meine eigentliche Frage, warum der Klassenname hinter den Instanzvariablen steht damit nicht beantwortet
private Net wn1; // hier dann der Klassenname "Net" vor den Instanzvariablen, habe das so noch nicht gesehen

Na das ist einfach eine Instanzvariable vom Typ "Net", wie bei jeder anderen Variablendeklaration auch.

Über den Konstruktor können zwei Instanzen von "Net" übergeben werden, die dann diesen Instanzvariablen zugewiesen werden.
 

White_Fox

Top Contributor
Genau. Irgendwie mußt du dem Compiler ja mitteilen, was das Ding in dieser Membervariable sein soll. Und noch etwas:
Java:
public abstract class Net {

    // Attribute

    Net(){  // ist dies nicht ein default constructor??  Und abstract heißt doch dass kein Objekt erstellt werden soll in dieser Klasse
    
    }
    //...
}

Nur weil eine Klasse abstrakt ist, heißt das ja nicht daß sie keine Funktionalität bereitstellen könnte. Schau dir z.B. mal Folgendes an:
Java:
public abstract class Vehicle{
    private final double maxPower;

    public Vehicle(double maxPower){
        this.maxPower = maxPower;
    }

    public double getMaxPower(){
        return maxPower;
    }

    public void getNoise(){
        System.out.println(getConcreteNoise);
    }

    private abstract String getConcreteNoise();
}

Die Klasse Vehicle ist abstrakt, aber benötigt dennoch einen Konstruktor. Dafür vereinfacht sich die Benutzung der Klasse aber so:
Java:
public class BMWM3 extends Vehicle{
    public BMWM3(){
        super(350);
    }

    private String getConcreteNoise(){
        return "ROOOOOOAAAAARRRRRRRR";
    }
}
 
Zuletzt bearbeitet:

Meniskusschaden

Top Contributor
Und da erschließt sich mir z.B. in deiner Aufgabe nicht, wie ihr da den Vererbungsbaum aufziehen sollt. Ich bin ja E-Techniker, von Informatik habe ich dagegen keien Ahnung. Und ein Netz sind eigentlich alle Punkte mit einem gemeinsamen Potential, bzw. alles was an einem Knoten hängt. Ein Netz hat deshalb z.B. keine Impedanz, und eine Methode double ohm(); wäre entsprechend zwecklos. Und ein Widerstand ist ein Bauteil, kein Netz. Ein Widerstand hängt höchstens zwischen zwei oder mehr Netzen.
Ich vermute mal, dass mit "Netz" hier ein System von Widerständen zwischen zwei gegebenen Punkten gemeint ist. Zwischen den Punkten A und B in folgendem Beispiel könnte man das mit Parallel(Parallel(Resistor(100), Resistor(220), Resistor(470)), Serial(Resistor(220), Resistor(470))) beschreiben:
Code:
         +-----+
     +---+ 100 +---+
     |   +-----+   |
     |             |
     |   +-----+   |
A----+---+ 220 +---+---------+----B
     |   +-----+   |         |
     |             |         |
     |   +-----+   |         |
     +---+ 470 +---+         |
     |   +-----+             |
     |                       |
     |   +-----+   +-----+   |
     +---+ 220 +---+ 470 +---+
         +-----+   +-----+
So würde beides einen Sinn ergeben: Dass ein Netz einen Widerstandswert hat und ein Widerstand ein spezielles Netz ist.
 

ChrSli5385

Mitglied
Na das ist einfach eine Instanzvariable vom Typ "Net", wie bei jeder anderen Variablendeklaration auch.

Über den Konstruktor können zwei Instanzen von "Net" übergeben werden, die dann diesen Instanzvariablen zugewiesen werden.

Also statt dem "Datentypen" wie ich es eig. kennengelernt habe (z.B Integer oder double) kann man auch den Klassennamen nehmen, ok. Ich bin halt Anfänger und es ist etwas verwirrend wenn man so etwas vorher noch nicht gesehen hat.
 

White_Fox

Top Contributor
Ich vermute mal, dass mit "Netz" hier ein System von Widerständen zwischen zwei gegebenen Punkten gemeint ist.
Das würde zwar im Kontext Sinn ergeben, würde sich aber "Zweipol" nennen. Und Vierpole usw. gibts auch noch. ;)


Also statt dem "Datentypen" wie ich es eig. kennengelernt habe (z.B Integer oder double) kann man auch den Klassennamen nehmen, ok.
Auch Objekte sind bloß Datentypen. Integer, Double, usw. sind primitive Datentypen, wenn du eine Unterscheidung dazwischen willst.
 

temi

Top Contributor
Also statt dem "Datentypen" wie ich es eig. kennengelernt habe (z.B Integer oder double) kann man auch den Klassennamen nehmen
Klassen wäre sehr nutzlos, wenn man keine Instanzen davon erstellen und diese in Variablen speichern könnte. Salopp gesagt, sind Klassen selbst erstellte Datentypen, wobei es bei Java natürlich eine riesige Menge bereits mitgelieferter Klassen gibt.

Aufgepasst übrigens bei "int" und "Integer". "int" ist ein primitiver Datentyp und "Integer" ist eine sog. Wrapperklasse, die einen int aufnimmt. Genauso gibt es übrigens "double" und "Double", "long" und "Long", usw.
 

Barista

Top Contributor
Ich glaube, Du benötigst eine rekursive Lösung.

Du solltest ein Interface/abstrakte Oberklasse Net haben.
Diese sollte eine Methode getOhm oder besser getComputedWiderstand haben.

Eine Implementierung ist ein einfacher Widerstand, bei dem diese Methode einen festen Wert bzw. den Wert eines Feldes zurückgibt.

Eine zweite Implementierung ist die Reihenschaltung zweier (als Felder) oder mehrerer (als Array) Net.
Hier wird von der Methode getComputedWiderstand die Summe gesammelten getComputedWiderstand zurückgegeben.

Eine dritte Implementierung ist die Parallelschaltung.
Hier wird von der Methode getComputedWiderstand der berechnete Paralellwiederstand zurückgegeben.

Die Idee ist, das sich jedes Net nur aus einem einfachen Widerstand, einer Reihenschaltung (rekursiv) oder einer Paralellschaltung (rekursiv) bestehen kann.

Ich glaube, damit habe ich die Aufgabe für Dich gelöst, denn diese Lösung hat Dein Lehrer sicher von einem guten Informatiker erwartet, vor allem, dass er selbst drauf kommt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
C Wie kann ich Versionen eines Projektes in Eclipse erstellen? Java Basics - Anfänger-Themen 3
M Erstellen eines insets Objekts, GridBagLayout Java Basics - Anfänger-Themen 13
M Erstellen eines Stacks Java Basics - Anfänger-Themen 14
D java main methode kann nicht kompiliert werden (Erstellen eines Objekts) Java Basics - Anfänger-Themen 6
K Klassen Klasse erstellen, die Punkte eines Koordinatensystems repräsentiert? Java Basics - Anfänger-Themen 3
C Erstellen eines Telefonbuchs Java Basics - Anfänger-Themen 1
K Nullpointer beim Erstellen eines Imageicons Java Basics - Anfänger-Themen 2
R Problem beim erstellen eines neuen Klassenobjekts Java Basics - Anfänger-Themen 2
J Klassen Erstellen eines Attributs mit 3 Möglichkeiten Java Basics - Anfänger-Themen 6
N Probleme mit dem Erstellen eines package Java Basics - Anfänger-Themen 6
W Problem beim erstellen eines Tests Java Basics - Anfänger-Themen 16
S Problem beim Erstellen eines Scanner-Objekts Java Basics - Anfänger-Themen 7
A Null Pointer Exception beim Erstellen eines Arrays aus einer eigenen Klasse Java Basics - Anfänger-Themen 3
R Array eines neuen Typen erstellen und befüllen Java Basics - Anfänger-Themen 2
V Problem beim erstellen eines ausführbaren Programs Java Basics - Anfänger-Themen 5
G Erstellen eines Maven Projektes mit Eclipse Java Basics - Anfänger-Themen 9
C Problem beim erstellen eines jar Archivs Java Basics - Anfänger-Themen 2
K Koordinaten eines 2D-Feldes erstellen Java Basics - Anfänger-Themen 4
T Erstellen eines Steuerprogramms mittels if-anweisungen Java Basics - Anfänger-Themen 10
J erstellen eines 2D-Arrays mit Beschriftung Java Basics - Anfänger-Themen 4
Z prob beim erstellen eines jar files mit eclipse Java Basics - Anfänger-Themen 4
J Probleme beim Erstellen eines Programms Java Basics - Anfänger-Themen 5
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J Packages erstellen Java Basics - Anfänger-Themen 7
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
Ostkreuz Spielfeld Schatz erstellen Java Basics - Anfänger-Themen 5
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
B Klasse statisch erstellen da n-mal geladen Java Basics - Anfänger-Themen 3
laxla123 Dreieck erstellen Java Basics - Anfänger-Themen 1
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
A Passwort erstellen Java Basics - Anfänger-Themen 3
S CVS erstellen Java Basics - Anfänger-Themen 1
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
dennis_lnz Klassen Wie kann ich mein Java Textadventure verbessern, um ein Klassendiagramm zu erstellen? Java Basics - Anfänger-Themen 9
dcHost Java Kara Sensor erstellen Java Basics - Anfänger-Themen 1
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U JList erstellen Java Basics - Anfänger-Themen 2
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
berserkerdq2 IO Streams logfile erstellen und Sachen schreiben wie? Java Basics - Anfänger-Themen 2
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
N 2D Array Summe erstellen Java Basics - Anfänger-Themen 6
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S Programm erstellen Java Basics - Anfänger-Themen 3
S MinMax Programm erstellen Java Basics - Anfänger-Themen 4
S Mit for-Schleife ein 2D JLabel-Array mit veränderbaren Icons erstellen Java Basics - Anfänger-Themen 3
T Countdown erstellen Java Basics - Anfänger-Themen 7
I ZIP File erstellen Java Basics - Anfänger-Themen 10
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
B Zurück Button erstellen Java Basics - Anfänger-Themen 1
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
B JaxB - Referenzen erstellen? Java Basics - Anfänger-Themen 2
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
E Classpath Datai erstellen Java Basics - Anfänger-Themen 3
B eine methode erstellen Java Basics - Anfänger-Themen 7
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
L FinanzApp erstellen Java Basics - Anfänger-Themen 1
J Junit4 Klasse erstellen Java Basics - Anfänger-Themen 5
B Warteschlange erstellen mit LinkedList ? Java Basics - Anfänger-Themen 6
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
J Java Queue mit default Werten erstellen Java Basics - Anfänger-Themen 4
JaVaN0oB Bruchklasse erstellen Java Basics - Anfänger-Themen 9
N Kreismuster auf Bestehendem Kreis erstellen Java Basics - Anfänger-Themen 10
K Rahmen erstellen mit mehrdimensionalem Array Java Basics - Anfänger-Themen 1
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
F Adjunkte Matrix erstellen Java Basics - Anfänger-Themen 3
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
GermanPie Discord Text Channel erstellen? Java Basics - Anfänger-Themen 1
K Objektdiagramm erstellen Java Basics - Anfänger-Themen 3
D Klassen Klassendiagramm richtig erstellen Java Basics - Anfänger-Themen 20
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
C eigene Methoden erstellen (Instanzmethoden) Java Basics - Anfänger-Themen 7
B Methode für jede beliebe Entity erstellen Java Basics - Anfänger-Themen 7
E Filmsammlung erstellen Java Basics - Anfänger-Themen 6
B Eine Methode erstellen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben