Werte in Klasse übergeben

Shao

Mitglied
Guten Abend,
ich hab mich langsam so ein bisschen reingefuchst was Klassen angeht und das Grundprinzip, glaube ich, ansich verstanden.
Ich habe nun mir eine Klasse erstellt (die auch super funktioniert) und wollte um noch mehr Code zu sparen die Abfrage der IP,Username,Password auch mit in die Klasse packen. Dazu habe ich momentan einfach die Werte einzeln übergeben ->
Java:
        test.ip = "jdbc:mysql://localhost/test";
        test.username = "root";
        test.password = "admin";

Klasse ->
Java:
package datenbank;

import java.sql.*;


public class verbindung {
    private Connection con;
    String ip = "";
    String username = "";
    String password = "";

    public void getData(){

    }
    void connect(){
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(ip, username, password);
        }
        catch (ClassNotFoundException | SQLException e1)
        {
            e1.printStackTrace();
        }
    }
    void close(){
        try {
            con.close();
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

so funktioniert das auch super nun will ich habe irgendwie mit meiner eigenen Methode getData
alle die drei Werte direkt bekommen um mir noch mehr zeilen Code in der Hauptklasse zu sparen (Werte sollen von textFeldern ausgelsen werden aber das ist ja nicht das Problem).
nun habe ich mir die irgendwie was vorgestellt wie (reine Idee, klappt also nicht) ->
Java:
test.getData(dbip.gettext, dbusername.gettext, dbpassword.gettext)

Nun bin ich überfragt wie ich das realisere wie dafür die getData Methode aussehen muss und was ich dann nach test.getData schreiben muss.

MfG Shao
 

MoxxiManagarm

Top Contributor
Das wird so nicht gehen da String immutable ist. Du müsstest StringBuilder beispielsweise verwenden.

Java:
package javaforum.org;

public class Example {
  
    public static void getData(StringBuilder refA, String refB) {
        refA.delete(0, refA.length()).append(":)");
        refB = ":)";
    }

    public static void main(String[] args) {
        StringBuilder getterA = new StringBuilder(":(");
        String getterB = new String(":(");
      
        getData(getterA, getterB);
      
        System.out.println(getterA + " & " + getterB);
    }
}

-->

Aber bevor du alles mit einem Builder machst bist du mit gettern für die 3 Werte doch bestimmt besser dran.
 

Shao

Mitglied
Wie genau muss ich das nur auserhalb und innerhalb der Klasse schreiben vllt hast du da nen kleines Beispiel oder so für mich. Ich habe erhlich gesagt noch nie mit Gettern gearbeitet.
 

temi

Top Contributor
Ich habe erhlich gesagt noch nie mit Gettern gearbeitet.
Daran ist nichts geheimnisvolles dran. Ein getter ist einfach nur eine Methode, die den Wert einer privaten Eigenschaft zurück gibt.

Java:
class Foo
{
   private string bar;

   public Foo(string bar)
   {
      this.bar = bar; // private Eigenschaft per Konstruktor setzen
   }

   public string getBar() // getter Methode für die Eigenschaft "bar"
   {
      return bar;
   }

   // und der Vollständigkeit halber noch der passende setter
   public setBar(string bar)
   {
      this.bar = bar;
   }
}

Generell sollte eine Klasse soviel Information wie möglich nach außen verbergen (private Eingenschaften) und nur das außen geben (per getter) was zum Arbeiten mit der Klasse notwendig ist.
Ob es einen getter/setter für eine Eigenschaft gibt, hängt von der Funktion der Klasse ab. Es muss nicht zwangsweise ein getter/setter für jede Eigenschaft existieren. Genauso könnte es getter-artige Methoden geben, die als Rückgabewert mehrere private Eigenschaften kombinieren.

Außerdem sollte eine Instanz der Klasse, nachdem sie erzeugt wurde funktionstüchtig sein, also alle dazu notwendigen Parameter per Konstruktor übergeben werden.
 

Shao

Mitglied
So war leider die letzten Tage nicht am PC.
Ich habe mir nunmal diese getter/setter angeschaut und ansich hat es im simplen rahmen funktioniert.
Leider aber nicht in der "komplexeren Anwendung in meinem SQL Programm.
Java:
    private Connection con;
    String ip = "";
    String username = "";
    String password = "";

    mainframe kaese = new mainframe();


    public void getData(){
        ip = kaese.getdbip();
        username = kaese.getdbusername();
        password = kaese.getdbpassword();
    }
    void connect(){
        try
        {
            System.out.println(username);
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://" + ip, username, password);
        }
        catch (ClassNotFoundException | SQLException e1)
        {
            e1.printStackTrace();
        }
    }

Das der Code meiner Klasse die die Verbindung steuern soll
und jetzt der meiner Hauptklasse wo die Werte übergeben werden sollen:

Java:
   String getdbip(){
        return dbip.getText();
    }
    public String getdbusername(){
        return dbusername.getText();
    }
    String getdbpassword(){
        char[] pass = dbpassword.getPassword();
        String passString = new String(pass);
        return passString;
    }

Leider kommt (getestet mit sysout im connect) garnichts an was in meinem TextAreas steht.
Offensichtlich habe ich irgendwo nen gedankenfehler aber trotz lauter getter/setter tutorials komm ich einfach nicht auf die lösung ^^
 

Robat

Top Contributor
mainframe kaese = new mainframe();
Hier erstellst du eine neues Objekt deiner Klasse mainframe. Kann es sein, dass es sich dabei nicht um das eigentliche Objekt handelt in der du die Eingaben machst?
Erstellst du irgendwo (in der main-Methode) schon mal so eine Instanz?


BTW:
Gewöhn' dir am Besten an Klassennamen im UpperCammelCase und Methoden/Variablennamen im lowerCammelCase zu schreiben.
 

Shao

Mitglied
Nein tue ich nicht. Ich hab um ehrlich gesagt diese Zeile nur drin weil er sonst meine drei get Methoden aus der Main klasse nicht finden konnte. Deshalb auch der komische Name
 

Shao

Mitglied
So endlich am Rechner. Hier meine Main:
Java:
package datenbank;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.awt.color.*;

public class mainframe {
    private JPanel mainpanel;
    private JPanel loginpanel;
    private JProgressBar fortschritt_verbinden;
    private JTextArea dbip;
    private JTextArea dbusername;
    private JPasswordField dbpassword;
    private JButton btn_verbinden;
    private JComboBox drop_datum;
    private Connection con;

    String getdbip(){
        return dbip.getText();
    }
    public String getdbusername(){
        return dbusername.getText();
    }
    String getdbpassword(){
        char[] pass = dbpassword.getPassword();
        String passString = new String(pass);
        return passString;
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("mainframe");
        frame.setContentPane(new mainframe().mainpanel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public mainframe() {
        btn_verbinden.addActionListener(arg0 -> verbinden());
    }

    void verbinden(){
        verbindung test = new verbindung();
        test.getData();
        //test.ip = "jdbc:mysql://localhost/test";
        //test.username = "root";
        //test.password = "admin";
        test.connect();
        test.close();
        btn_verbinden.setBackground(Color.green);

    }

}
 

Robat

Top Contributor
Ein recht ungewöhnliches Konstrukt.
Müsstest du deine mainframe Klasse nicht irgendwo mal instanzieren damit der Code im Konstruktor ausgeführt wird?
Der Klasse verbindung müsstest du dann die aktuelle Instanz übergeben damit du in der Klasse auf die Methoden zugreifen kannst.
 

temi

Top Contributor
Schau dir noch mal mein einfaches Beispiel mit der Klasse "Foo" an und versuche das auf deine Klasse Verbindung umzusetzen. Ziel sollte sein, dass anstatt von:
Java:
verbindung test = new verbindung();
folgende steht:
Java:
Verbindung test = new Verbindung("jdbc:mysql://localhost/test", "root", "admin");
Damit erzeugst du eine gültige Instanz von "Verbindung" mit allen notwendigen Daten.
 

Shao

Mitglied
@temi so konnte ich es jetzt lösen:
In dem ich beim aufruf meine get methoden übergebe.
Java:
test.connect(getdbip(), getdbusername(), getdbpassword());

und dann so in der Klasse ->
Java:
 void connect(String ip, String username, String password){
        try
        {
            System.out.println(ip);
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://" + ip, username, password);
        }
        catch (ClassNotFoundException | SQLException e1)
        {
            e1.printStackTrace();
        }

Danke euch allen jetzt habe ich wieder einen Teil mehr verstanden
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Werte an eine andere Klasse übergeben Java Basics - Anfänger-Themen 4
S Werte an andere Klasse übergeben Java Basics - Anfänger-Themen 3
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
E Eigenschaften Werte, in einer anderen Klasse, zuweisen Java Basics - Anfänger-Themen 40
M Neu instanzierte Klasse übernimmt Werte von anderer Instanz Java Basics - Anfänger-Themen 4
P ArrayList aus eigener Klasse "überschreibt" Werte nicht Java Basics - Anfänger-Themen 4
F Können Klasse auch Werte liefern? Java Basics - Anfänger-Themen 3
B Werte der Variable aus Klasse JTextArea in einer Datei der Klasse RandomAcessFile speichern Java Basics - Anfänger-Themen 10
S Werte aus einer bereitgestellten Klasse intiallisieren Java Basics - Anfänger-Themen 11
D Aufruf von Klasse verändert ungewollt Werte Java Basics - Anfänger-Themen 14
U Zu viele werte in einer klasse Java Basics - Anfänger-Themen 4
J Werte in einer Klasse aus anderer Klasse manipulieren Java Basics - Anfänger-Themen 17
U Werte in neue Klasse speichern Java Basics - Anfänger-Themen 23
M Berechnete Werte in einer Klasse weiternutzen! Java Basics - Anfänger-Themen 9
R Werte aus Klasse lesen Java Basics - Anfänger-Themen 4
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
F 2x 16bit Werte zu einem 32bit und dann splitten mit 0xb Java Basics - Anfänger-Themen 1
ptcho Werte/Position nach dem Funktionsaufruf tauschen? Java Basics - Anfänger-Themen 1
K Warum sind Werte in den Feldern ? Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
TeacherMrSSimon Schachspiel, Werte in Figur eintragen klappt nicht Java Basics - Anfänger-Themen 23
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
docmas 2DArray Werte werden nur untereinander ausgegeben Java Basics - Anfänger-Themen 1
M Nur int-Werte erlauben Java Basics - Anfänger-Themen 11
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
M Wie kann eine Methode eine andere Methode um Werte wie z.B. 1 erhöhen? Java Basics - Anfänger-Themen 6
Igig1 Wie lasse ich dir Werte in einem Array zusammenrücken? Java Basics - Anfänger-Themen 4
J Methoden Positive Werte zählen Java Basics - Anfänger-Themen 3
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
H OOP Werte mit Set verändern Java Basics - Anfänger-Themen 6
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
sashady ursprüngliche Array-Werte bei erneutem Aufruf? Java Basics - Anfänger-Themen 7
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
E In Array Werte einfügen? Java Basics - Anfänger-Themen 5
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
M Wie kann ich Werte die in einer While Schleife sind weiter genutzt werden? Java Basics - Anfänger-Themen 7
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
I Werte (u.a. Geldbeträge) in Datenbank speichern und Rundungen? Java Basics - Anfänger-Themen 8
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
G Array Werte addieren Java Basics - Anfänger-Themen 4
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13
C Zufallszahl + Werte bereich einstellen Java Basics - Anfänger-Themen 2
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
L 2 Dimensional Array werte überschreiben Java Basics - Anfänger-Themen 1
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
Rubberduck Combobox-Werte in GUI anzeigen Java Basics - Anfänger-Themen 13
J Neue Werte in ein Array hinzugeben Java Basics - Anfänger-Themen 8
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
A Negative float Werte? Java Basics - Anfänger-Themen 10
Kirby.exe Fehlende Int Werte aus Array mit streams finden Java Basics - Anfänger-Themen 19
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
D Input/Output Input von zwei Koordinaten validieren und anschließend Werte speichern Java Basics - Anfänger-Themen 7
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
B Werte aus einem Unterprogramm in ein Array schreiben Java Basics - Anfänger-Themen 2
L Nur Bestimmte Werte aus einem Array in ein anderes Speichern Java Basics - Anfänger-Themen 11
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
S Werte aufsummieren in java? Java Basics - Anfänger-Themen 5
M Werte des Arrays addieren Java Basics - Anfänger-Themen 5
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
C System.in.read() Boolsche Werte vergleichen Java Basics - Anfänger-Themen 8
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
R Datenbank-Werte dynamisch ausgeben Java Basics - Anfänger-Themen 19
H Methoden Nutzung der Werte einer ausgeführten Objektmethode in anderen Objektmethoden Java Basics - Anfänger-Themen 2
O Map Werte Java Basics - Anfänger-Themen 2
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
L Werte zufällig aus Array zurückgeben Java Basics - Anfänger-Themen 15
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
S werte von objekten in schleife verändern Java Basics - Anfänger-Themen 14
R Vererbung werte von einem Objekt aus ein anderes übertragen Java Basics - Anfänger-Themen 7
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
N Methoden HashMap interne Werte miteinander vergleichen Java Basics - Anfänger-Themen 7
L Bestimmte Werte eines Arrays ausgeben. Java Basics - Anfänger-Themen 3
Hanschyo String kann nicht Werte von Long annehmen Java Basics - Anfänger-Themen 2
A Sortieren ausgerechneter Werte aus einer TXT Datei Java Basics - Anfänger-Themen 8
C Auf einzelne Werte aus HashSet zugreifen Java Basics - Anfänger-Themen 10
S Werte in Liste mit Nachfolger vergleichen Java Basics - Anfänger-Themen 5
M Vererbung Konstruktoren mit festen Werte Java Basics - Anfänger-Themen 2
C Werte im Vector in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben