Objekte zur Laufzeit erzeugen und direkt verwenden

JohnnyCTW

Mitglied
Hallo liebes Java-Forum,

ich bastle derzeit ein Programm wo ein Artikel angelegt werden kann, samt allen Daten die er benötigt (Name, Lagerort bis hin zu Verkaufspreis). All die Infos sind in der Klasse "Article" gespeichert.

Nun hab ich eine weitere Klasse, die Klasse "CreateArticle". In dieser werden die Artikel nun erzeugt, beim Konstruktoraufruf soll ein neues Objekt vom Typ "Article" erschafft werden und die Daten aus den Textfeldern werden nun an dieses Objekt übergeben.

Ist wahrscheinlich eine ganz simple Frage, nur steh ich grad total an :noe:

Wie kann ich jedes Mal ein neues Objekt erschaffen, welches später eindeutig zugewiesen werden kann. Auch wenn er 25 Artikel anlegt, sollen 25 verschiedene Objekte verwendet werden.

MfG, J
 
Hallo

Du könntest beispielsweise ein ArrayList verwenden.
Dann brauchst du natürlich eine Methode (addArticle), die durch einen Button aufgerufen wird und das neue Objekt (der neue Artikel) in dein ArrayList einfügt.
Etwa so:

Java:
ArrayList<Article> articles = new ArrayList<>();

public void addArticle(Article myArticle){
articles.add(myArticle);
}
Java:
//Beim Klick auf den entsprechenden Button:
ca.add(new Article(tFieldName.getText(),  tFieldStorageLocation.getText(), ...); 
//ca ist eine Instanz von deiner Klasse CreateArticle

Bei diesem Beispiel bin ich davon ausgeganden, dass der Name eines Artikels eindeutig ist (ansonsten müsste jeder Artikel eine eindeutige ID haben).
 
Zuletzt bearbeitet:
Vielen Dank für die schnelle Antwort!

Das sollte mir weiterhelfen.

--------------

Gut habs jetzt soweit implementiert, nur wie greife ich nun auf diesen Artiekl zu?? :rtfm:

Ich steck hier grad ziemlich, denn der Artikel sollte schon eine direkte ID haben auf der zugegriffen/gelesen werden kann.

Vielleicht habe ich es auch zu ungenau ausgedrückt.

Sobald der Button gedrückt wird, wird der Konstruktor von "CreateArticle" aufgerufen. Bei jedem Aufruf sollte ein eigenes Objekt vom Typ "Articles" augerufen werden. Im Fenster, welches "CreateArticle" aufruft, werden nun die Daten eingegeben. Wenn der Button bestätigen gedrückt wurde, werden alle eingegeben Daten auf genau dieses gerade erstellte Objekt transferiert.

Nach dem Schließen kann man erneut einen Artikel durch drücken des Buttons auslösen, worauf wieder ein neuer Artikel erstellt werden kann, wieder ein exakt anderes Objekt. Hilfreich wäre, wenn diese durch einen Index gegeben wären. Sprich erste hat 0, zweite 1 usw.

Vielleicht ist heute auch net mein Tag..

MfG
 
Zuletzt bearbeitet:
Du kannst den Objekte bei der Erstellung eine Eigenschaft "id" mitgeben. Wenn du ein Objekt suchst, iterierst du über die Liste und wenn die Objekt-id mit der gesuchte Id übereinstimmt, gibst du das Objekt zurück.
 
Ich würde hier nicht über den Index arbeiten. Indizes können sich ändern, indem Objekte gelöscht oder eingefügt werden, die Objekt-id aber bleibt.

Ich bin grad mitm Handy online. In ca ner halben Stunde stell ich n Beispiel ein.
 
Java:
import java.util.ArrayList;

public class Main {

	private static ArrayList<Article>allArticles;
	
	public static void main(String args[]) {
		
		allArticles = new ArrayList<>();
		
		Article found = searchArticleById(2);
		
		if(found == null){
			//doSomething
		} else {
			//doSomethingElse
			
		}
		
	}
	
	public static void createArticel(String name){
          allArticles.add(new Article(Article.count++,name));
		
	}
	
	public static Article searchArticleById(int searchedID){
		for(Article article:allArticles){
			if(article.id == searchedID){
				return article;
			}
		}
		return null;
	}
	

}

public class Article{
	public static int count = 1;
	public int id;
	public String name;
	
	public Article(int id, String name){
		this.id = id;
		this.name = name;
	}	
}

Für den Zähler der Artikel-IDs kannst du entweder in der Klasse Article selbst eine statische Variable anlegen (imho eher nicht so ideal) oder in der Klasse, welche die Artikel verwaltet ("Warehouse" or whatever...) einen Zähler (würde ich bevorzugen).

In der search-Methode kannst du entweder wie in meinem Beispiel entweder über eine Schleife die IDs vergleichen oder du überschreibst in Article die Equals-Methode und erstellst dir ein Objekt "SearchedArticle" und vergleichst es mit denen in der ArrayList. Wie man Equals überschreibt, einfach mal googlen.
 
Zuletzt bearbeitet:
@Saheeda,

hab es jetzt implementiert, was soll man sagen, dass count++ hat mir geholfen. Genau das benötigte ich.

Heut war ja wohl nicht der Tag zum Programmieren, nun ja, manchmal ists gscheiter wenn man's lässt!

Danke an alle für die Antworten!

Gruß, J
 

Neue Themen


Zurück
Oben