Eigenschaften von Position aus anderer Klasse übernehmen

Individuum

Mitglied
Weil der letzte Post ja so erfolgreich mit 1000 Aufrufen war kommt hier noch eine Frage:

Java:
public class Smartphone {

    private static int x;
    private static int y;
    private static Service01 verbunden;
    // Wie kann ich das Netzwerk speichern mit dem es verbunden ist?
    private static boolean mobiles;
    private static boolean WLan;

    // Eigenschaften vom Handy

    public Smartphone(int x, int y) { // Konstruktor

        Smartphone.x = x;
        Smartphone.y = y;
        mobiles = false; // Hier ist der Fehler!
        WLan = false;
        verbunden = null;
        // Glaube wir können es über das lösen -> Wenn verbunden nicht null ist müssen
        // wir wisen welches WLan gebraucht wird.

    }

    public void setmobiles(boolean mobilesI) { // Soll Setter fürs Einschalten und ausschalten sein von mobiles!

        mobiles = mobilesI;
        this.connecttoNetwork();

        // Ich will auf meine anderen Eigenschaften zugreifen -> auf die Eigenschaften
        // von Position 10 10

    }

    public void setWLan(boolean WLanI) { //Frage ist wo soll ich es einschalten oder nicht?
    // !Muss nur prüfen ob an Position von Smartphone Konstruktor von WLAN oder LTE ist!
        WLan = WLanI;
        this.connecttoNetwork();

    }

    public void setverbunden(Service01 verbundenI) { // Müsste eigentlich reichen für Setter!

        verbunden = verbundenI;
        this.connecttoNetwork();

    }

    public static void connecttoNetwork() { //Muss dem kein Smartphone übergeben?

        if (WLan == true) { // Wie soll es wahr sein, wenn wir von vornherein sagen dass es nicht wahr ist

            verbunden = Connection.getStrongestNetwork(x, y, Service01.FREQUENCY_WIFI);

        }

        if (verbunden == null) {
            if (mobiles == true) {

                verbunden = Connection.getStrongestNetwork(x, y, Service01.FREQUENCY_LTE);
            }

        }

        if (verbunden == null) {

            verbunden = Connection.getStrongestNetwork(x, y, Service01.FREQUENCY_E);
        }

    }

    public static void printCurrentNetwork(Smartphone s1) { //Glaube ich muss nur bei dem Werte übergeben!

        if (WLan == true) {

            System.out.println("Verbunden mit WLan");

        }

        if (mobiles == true) {

            System.out.println("Connected to LTE");

        }

    }

}

Ich will eine Position (X und Y) aufrufen und wenn an diesen eine "Sendestation", aus folgenenden Klasse ist, mobiles oder Wlan mit true versehen:


Java:
public class Service01 {

    private final String Name; // Getter und Setter brauch ich, da alle Attribute private sind!
    private final int yPosition;
    final int xPosition;
    private final double Sendeleistung;
    private final double Frequenz;

    // Mögliche Senderfrequenzen

    public static final double FREQUENCY_WIFI = 2.4;
    public static final double FREQUENCY_LTE = 2.6;
    public static final double FREQUENCY_E = 0.9;

    public Service01(String NameK, int yPositionK, int xPositionK) { // K für Konstruktor

        this.Name = NameK;
        this.yPosition = yPositionK;
        this.xPosition = xPositionK;
        this.Sendeleistung = 0.3;
        this.Frequenz = FREQUENCY_WIFI;
    }

    public Service01(int xPositionK, int yPositionK, boolean LTE) { // K für Konstruktor

        this.xPosition = xPositionK;
        this.yPosition = yPositionK;

        if (LTE == true) {

            this.Name = "LTE";
            this.Sendeleistung = 8000;
            this.Frequenz = FREQUENCY_LTE;

        }

        else {

            this.Name = "E";
            this.Sendeleistung = 18000;
            this.Frequenz = FREQUENCY_E;

        }

    }

    public String getName() {

        return this.Name;
    }
 


    public int getYPosition() {

        return this.yPosition;

    }

    public int getXPosition() {

        return this.xPosition;

    }

    public double getSendeleistung() { // Wir brauchen Getter, da wir durch unser aufschreiben schon "setten"

        return this.Sendeleistung;

    }

    public double getFrequenz() {

        return this.Frequenz;
    }

}
 
Dein Problem ist, dass du den boolean Variablen `mobiles` und `WLan` zwei Bedeutungen beimisst: Einmal möchtest du, dass sie aussagen, mit welchem Netzwerk du dich verbinden willst. Und zum anderen möchtest du, dass sie aussagen, mit welchem Netzwerk du dich gerade verbunden hast.
 
Niemand hat gesagt, dass du connecttoNetwork() nicht mehr aufrufen sollst. Du sollst nur nachdenken, welche verschiedenen Zustände dein Smartphone haben kann und wie du diese Zustände am besten abbilden kannst.
 
private Service01 verbindung;

EDIT: Und, bitte schnapp dir erstmal ein Java-Buch und lerne die Grundlagen. Insbesondere den Unterschied zwischen statischen Klassenvariablen und Instanzvariablen.
 
Das Problem ist, dass so ein Forum weder ein Kurs noch Ersatz für Literatur oder einen Nachhilfelehrer ist, insbesondere was die Grundlagen angeht. Gerade im Anfängerbereich geht es in meinen Augen um Hilfe zur Selbsthilfe. D. h. im besten Fall erhält der Fragesteller auf seine konkrete Frage eine Antwort, die es ihm erlaubt, durch eigenes Zutun eine Lösung zu finden. So ist der Lerneffekt maximal.

Wenn Du erkennen lässt, dass praktisch nichts an Grundwissen vorhanden ist, gibt es nur zwei Möglichkeiten: entweder man empfiehlt Dir entsprechende Literatur oder man schreibt Dir eine fertige Lösung hin, von der Du kaum etwas lernen kannst.

Ich kann Dir noch was empfehlen: verwende static ausschließlich im Zusammenhang mit final und Datentypen, die immutable sind, um Konstanten zu definieren oder im Zusammenspiel mit der main-Methode (die muss static sein).

Willst du ihn mir erklären
Du meinst den Unterschied zwischen Klassen- und Instanzvariable? Ein wenig Eigeninitiative schadet nicht: es gibt Suchmaschinen.
 
Oder @Javinner fragen. Der hat immer ein gutes Buch parat 😛
Ja als erstes Knigge 😀 Aber mal im Ernst, wenn du willst, dass man dir hilft, dann sei so gut und sorge für das Wohl des Helfenden in dem du zumindest die Java-Konvention einhältst 😉

Was die Bücher anbetrifft, so kann ich dir "Grundkurs Programmieren in Java" in Verbindung mit Javadocs zum jeweiligen Thema empfehlen. Ebenso das Buch "Java ist auch eine Insel", ein tolles Buch, für Leute mit langem Atem. Ebenso wird Lehrmaterial vom Admin des Forums angeboten, da würde ich die Leute einfach anschreiben. Videotechnisch sieht es nicht ganz so gut aus, weil sehr viel Müll und nur paar gute dabei.
Grundsätzlich aber solltest du Zeit, Leidensfähigkeit und Frustresistenz mitbringen. Der Forum hier für Rückfragen, sofern man sich um die Sache selbst bemüht, eine feine Sache, da wird jedem, der es will, fachlich und gedanklich unter die Arme gegriffen.. Ja, alles geschrieben, viel Erfolg!
 

Neue Themen


Zurück
Oben