Daten aus zweiter Klasse importieren

javalampe

Mitglied
Hallo,

ich habe noch nie mit einer zweiten Klasse gearbeitet. Ich habe es auch nie gebraucht, bis jetzt. Wenn der User all seine Werte eingetragen hat würde eine lange Reihe von if-Abfragen folgen und das wäre ein ziemliches Durcheinander. Also würde ich das gerne als zweite Klasse machen. Ist das möglich? und vor allem wie?
 
Moin,





Selbstverständlich, warum sollte es auch nicht ....





tja, ohne Code ... :noe:



Bastel Dir eine zweite Klasse, füge den relevanten Code ein und rufe sie bei Bedarf auf .... 😉



Gruß

Klaus


Juhu, es ist so einfach wie ich es mir vorgestellt hab. Wichtig ist mir aber der Befehl um das abzurufen. Muss ich bei der 2. Klasse vielleicht noch was beachten.. so in den ersten Zeilen?
 
Moin,

Wichtig ist mir aber der Befehl um das abzurufen.
Muss ich bei der 2. Klasse vielleicht noch was beachten.. so in den ersten Zeilen?
Jetzt verstehe ich Deine Frage nicht so wirklich ... ;(

Fehlt es Dir vielleicht an den Grundlagen, wie Du Klassen erzeugst ???:L
Galileo Computing :: Java ist auch eine Insel – 2.2 Anweisungen formen Programme

In der zweiten Klasse brauchst Du natürlich keine main-Funktion mehr, sondern entsprechende Konstruktoren etc., die Du 'von außen' aufrufen kannst!

Gruß
Klaus
 
Hallo,

ich habe noch nie mit einer zweiten Klasse gearbeitet. Ich habe es auch nie gebraucht, bis jetzt.

Öhm, ja, was soll ich sagen, ich weiß nicht wie weit sein Wissen reicht was OOP betrifft, Aber im Grunde Word jedes Objekt durch eine Klasse beschrieben, deshalb heißt es oft auch Klassen sind die Blaupausen (Baupläne) für Objekte, quasi beschreibt die Klasse wie dein Objekt sich nachher verhält (Methoden) und welche Eigenschaften es hat (Attribute).
 
Zuletzt bearbeitet:
Öhm, ja, was soll ich sagen, ich weiß nicht wie weit sein Wissen reicht was OOP betrifft, Aber im Grunde Word jedes Objekt durch eine Klasse beschrieben, deshalb heißt es oft auch Klassen sind die Blaupausen (Baupläne) für Objekte, quasi beschreibt die Klasse wie dein Objekt sich nachher verhält (Methoden) und welche Eigenschaften es hat (Attribute).


Ich kenns, habe es aber nie gemacht, nie gebraucht.
 
Indem du über den Konstruktor eine Instanz (also ein Objekt) der klasse Erzeugst, und eine Referenz darauf hältst.

Zudem gibt es noch den statischen weg....

Je nachdem was du vorhast...ohne Code kann man nur verallgemeinert Aussagen machen
 
Zuletzt bearbeitet:
Indem du über den Konstruktor eine Instanz (also ein Objekt) der klasse Erzeugst, und eine Referenz darauf hältst.



Zudem gibt es noch den statischen weg....



Je nachdem was du vorhast...ohne Code kann man nur verallgemeinert Aussagen machen


Ok, ich erklär mal mein Programm. Es ist sehr einfach und läuft nur über die Konsole:

user muss 1, 2 oder 3 eingeben
if 1
frage user das und das, rechne das und das, liefere resultat

dasselbe mit 2 und 3. Ich hoffe das reicht, ich verstehe nicht inwiefern weiteres eine Rolle spielen sollte. Es ist wirklich ein sehr einfaches Programm mit Textausgaben, if-Schleifen und Scannern.
 
Wie schon erwähnt, in deiner bestehenden Klasse eine Referenz auf dein neues Objekt halten , in dem z.B die Rechenoperationen durchgeführt werden .

z.B ist ein Taschenrechner ein Objekt, demnach könntest du die Klasse Taschenrechner modellieren welche dann deine für deine Rechnungen zuständig wäre , ich

Wie man eine Instanz über den Konstruktor einer klasse mit
Code:
new
erzeugt ist aber bekannt oder ?

Java:
public class A{

  public A(){} //Leerer Standardkonstruktor der Klasse A

}

Java:
public class B{

  A meinObjekt = new A();
  
  /* meinObjekt referenziert nun ein Objekt der Klasse A, new ruft in dem Fall den "leeren"
   * Standardkonstruktor auf */

}

Oben stehender Code bedeutet du kannst nun von außerhalb ( von A ), nämlich in dem Fall B, über die Referenz auf Methoden und Variablen der Klasse A zugreifen kannst, ähnlich wie bei öffentlichen Gettern & Settern, (welches die bessere alternative wäre).

Hätte die Klasse A nun eine Methode ala
Code:
void macheIrgendwas();
könntest du in einer Instanz der Klasse B über die Referenz
Code:
meinObjekt
mit
Code:
meinObjekt.macheIrgendwas();
zugreifen.

ich verstehe nicht inwiefern weiteres eine Rolle spielen sollte. Es ist wirklich ein sehr einfaches Programm mit Textausgaben, if-Schleifen und Scannern.

Ich verstehe nicht wie man dir sonst helfen soll, außer ich muss raten was genau du da machst und welches ziel du damit bezweckst, ebenso weiß ich nicht wie dein Wissensstand ist.
Dafür reichen meine Hellseherischen Fähigkeiten leider nicht aus 😉
 
Zuletzt bearbeitet:
Wie schon erwähnt, in deiner bestehenden Klasse eine Referenz auf dein neues Objekt halten , in dem z.B die Rechenoperationen durchgeführt werden .



z.B ist ein Taschenrechner ein Objekt, demnach könntest du die Klasse Taschenrechner modellieren welche dann deine für deine Rechnungen zuständig wäre , ich



Wie man eine Instanz über den Konstruktor einer klasse mit
Code:
new
erzeugt ist aber bekannt oder ?



Java:
public class A{



  public A(){}



}



Java:
public class B{



  A meinObjekt = new A();

  

  /* meinObjekt referenziert nun ein Objekt der Klasse A, new ruft in dem Fall den "leeren"

   * Standardkonstruktor auf */



}


Mh.. no, sorry, I think the best would be a whole sample of the two files.
 
Hallo,

ich versuch mal das was javalampe oben schon geschrieben hat in ein kurzes Codebeispiel zu verpacken das in die Richtung von dem geht was du machen wolltest.

In meinem Beispiel hast du zwei Klassen, einmal die Klasse in der das Menü und der Scanner für die Auswahl enthalten ist (App.class) und einmal eine Klasse die dann später vom Menü aus instanziert wird und die Berechnung durchführt(Eins.class).

Da kannst du auch ganz gut sehen wie mit dem new Operator gearbeitet wird, in dem Beispiel legt der new-Operator in instanzEins eine neue Instanz der Klasse Eins an, mit den beiden Integer-Werten 1 und 4 für die Berechnung. In der Klasse "Eins.class" gibt es dann eine Methode "berechneEins()" die aus den beiden Zahlen ein Ergebnis berechnet und das zurückgibt.

Ich hoffe jetzt ist einiges klarer und es tun sich die nächsten Fragen auf ;-)

Java:
//App.class
package Berechnung;

import java.util.Scanner;

public class App {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Bitte wählen Sie: 1, 2, 3");
        int a = input.nextInt();
        switch (a) {
            case 1: {
                Eins instanzEins = new Eins(1, 4);
                System.out.println("Das Ergebnis ist:");
                System.out.println(instanzEins.berechneEins());
                break;
            }
            default: {
                System.out.println("Falscher Wert, leider kann ich mit diesem Wert nichts anfangen...");
                break;
            }
        }
    }

}

Java:
//Eins.class
package Berechnung;

public class Eins {

    private int a;
    private int b;

    public Eins(int a, int b) {
        this.a = a;
        this.b = b;
    }

    int berechneEins() {
        int c = a * b;
        return c;
    }

}

Mfg
Markus
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
Hmm hast du da mal ein Codebeispiel? In deiner Pastebin hab ich jetzt keine 2te Klasse gesehen an die du was weitergibst.

Prinzipiell kannst du eigentlich selbst bestimmen wieviele Variablen du weitergibst, du musst nur in der Klasse an die du übergebst einen entsprechenden Konstruktor mit der Anzahl der zu übergebenden Variablen haben, z.B.:

Java:
public Eins(int a, int b, int c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }

für drei mitzugebende Variablen.

Mfg
Markus
 
Vom Prinzip her, kannst du auch mehrere Konstruktoren (mit unterschiedlich vielen zu übergebenden Variablen) in der oben gezeigten Form in einer Klasse haben.

Das alles ist aber sehr gut in "Java ist auch eine Insel" nachzulesen das du hier bei Galileo Openbooks kostenlos lesen kannst.
 
Moin,

da gibt es diverse Möglichkeiten:

- ein Vektor/eine Liste/eine Map mit den jeweiligen Werten

- bastel Dir eine eigene Klasse mit der gewünschten Werteanzahl ...
ich habe das früher mal für zwei Werte gemacht:
Java:
package nnn;

public class Pair<Type1, Type2>
{
	 private Object o1;
	 private Object o2;
	 
	 public Pair( Object obj1, Object obj2 )
	 { 
		 this.o1 = obj1;
		 this.o2 = obj2; 
	 } // Konstrukltor Pair
	 	 
	 public Object getFirst() 
	 { 
		 return o1; 
	 }
	 public Object getSecond() 
	 { 
		 return o2; 
	 }
	 	 
	 public void setFirst( Object obj ) 
	 { 
		 o1 = obj; 
	 }
	 public void setSecond( Object obj) 
	 { 
		 o2 = obj; 
	 }
} // Pair

Gruß
Klaus
 
Für mein Programm werde ich 326 cases brauchen. Jeder Case gibt 3 Werte zurück. Das wird n ziemlicher Aufwand, ich glaube ich mach das mit 3 Zusatzklassen.
 
Moin,

Für mein Programm werde ich 326 cases brauchen. Jeder Case gibt 3 Werte zurück. Das wird n ziemlicher Aufwand, ich glaube ich mach das mit 3 Zusatzklassen.
Was hat jetzt das Eine mit den Anderen zu tun ???:L

Mal ganz danvon abgesehen, das 326 cases nach einem schweren Designfehler Deiner Software klingen 😳, hätten sie aber auch nix mit der Werterückgabe zu tun ....

Und warum jetzt bitte schön DREI Klassen ???:L

Welche Werte werden denn zurückgegeben? Sind es wenigstens in allen 326 Fällen dieselben? :noe:

Gruß
Klaus
 
Ok, ich erkläre jetzt mal den Sinn meines Programms. Es gibt da dieses Strategiespiel "Die Stämme". In diesem Spiel kann man sich Premium-Punkte und damit Vorteile kaufen, wie das bei Spielen so ist.
Mein Programm hat 3 Funktionen.
1. Man kann sich für 4€, für 10€, usw. PPs kaufen, für umso teurer du einkaufst, umso mehr lohnt es sich.
Bei dem Programm gibst du einfach eine Anzahl an Premium-Punkten an und diese wird dann in Geld umgerechnet.
2. Es gibt den Premium-Account, den Farm-Assistenten, vieles was man sich im Spiel aktivieren kann. Das Programm fragt dich, was du alles kaufen würdest und für wie lange und rechnet dann aus, wie viel das kosten würde.
3. Beim Ausbauen seiner Gebäude gibt es immer die Möglichkeit es 20% billiger zu machen. Insgesamt (mit allen Gebäuden und allen Stufen), kann man 326x etwas ausbauen. Beim Programm gibst du ein welche Stufen deine Gebäude gerade haben. Das Programm sagt dir dann wie viel Holz, Lehm und Eisen (deshalb 3 Werte) du hättest sparen können und wie viel dich das gekostet hätte.
Bei dem Gebäude "Hauptgebäude" gibt es z.B. schon mal 30 Cases: Hauptgebäude ? Wiki

Ich hoffe das Programm wurde klar :S
 
Sowas kommt dabei raus wenn man kein Code sieht und raten muss was genau der TE vorhat 😉 darum macht sowas sinn BTW.

Und auf einmal ist ein ach so leichtes Programm, doch nicht mehr so einfach...poste halt , was genau du vorhast und wie dein Code bis jetzt aussieht.....

ich für meinen Teil hab z.B kein Bock hier Rätsel zu raten worum es eigentlich geht und auf welchem stand sich das ganze befindet....ich denke mal der restliche Forenstamm ebenso wenig.... 😉
 
Zuletzt bearbeitet:
Wenn du variable viele eingabewerte haben möchtest kannst du auch Varargs nutzen , die Syntax sieht folgendermaßen aus,

Java:
public void berechneAlles(int...werte){}

hier wird daraus ein array aus den übergebenen werten erzeugt.

welches du mit einer normalen schleife ausgeben / verarbeiten kannst

wenn du mehrere werte returnen möchtest kannst du das wie schon erwähnt mit einer liste, einem Array, Vector oder einer anderen Collection machen

z.B
Java:
public String[] getList(){

  return array; // insofern array vom Typ String ist , sonst musst du den Rückgabewert anpassen.
}

PS: was genau an Case 3 funktioniert denn nicht ? Und Ja.... nun sehe ich was dein Ziel ist .....
 
Zuletzt bearbeitet:
Moin,
aber ich denke es wird klar, was mein ziel ist
also für mich nur sehrbedingt ... ;-)

Also die ganzen Datenstrukturen sind viel zu wirr.
Hunderte von einzelnen Integer-Werten an diversen Stellen zu verwalten, wäre ja der Horror!

Bau Dir doch eine Klasse "Dorf" (oder was auch immer es darstellen soll) die dann halt die privaten Member "hauptgebaeude", "kaserne" usw. hat. Dann kannst Du Dir Getter und Setter dazu schreiben und musst nur jeweils ein Objekt dieser Klasse hin- und herschieben (was dann auch das Problem der Datenrückgabe elegant lösen würde) 🙂

Gruß
Klaus
 
Zuletzt bearbeitet:
Ich bin der Meinung, und ich denke ich stehe nicht alleine , das dein vorhaben mit deinem durch den Thread zumindest durchscheinendem Wissensstand in OOP ziemlich schwierig wird 🙂 ohne dir da zu nahe tretten zu wollen, sieht das alles ziemlich wirr aus,

es heißt nicht umsonst Objekt Orientiert, man sollte z.B ein Haus / eine Kaserne / oder ein Dorf ebenfalls als Objekte betrachten

ein Dorf z.B has a Kaserne.

oder eine Kaserne is a Gebäude

aber ich vermute das wird dir nicht viel sagen oder ?
 
Zuletzt bearbeitet:

Zurück
Oben