schwierigkeit mit in der verwaltungsklasse benutzen von toString()

sahra

Mitglied
Hallo Leute,

also ich habe eine Abstracte klasse Artikel und 2 unterklassen software und computer. ich habe noch artikelverwaltung und in der angabe steht, dass ich toString in software und computer implementieren soll und bei Artikelverwaltung steht:
#Ausgabe aller Artikel (Verwenden sie die von ihnen implementierte toString() Methode)
#Ausgabe aller Software
#Ausgabe aller Computer

meine fragen sind folgende: sind meine toString methoden richtig? und wie sollte ich folgende 3 methoden implementieren?(ich habe letzte 2 implementiert aber ich glaube nicht dass die richtig sind.)

Java:
public abstract class Artikel{
	
	private String marke;
	private String name;
	private String version;
	private double startpreis;
	private int[] alleGebote;

	public Artikel(String marke, String name, String version,
			double stratpreis, int[] alleGebote) throws Exception {
		setAlleGebote(alleGebote);
		setMarke(marke);
		setName(name);
		setStartpreis(stratpreis);
		setVersion(version);

	}
}

Java:
public class Software extends Artikel {

	private String sparte;
	
	public Software(String marke, String name, String version,
			double stratpreis, int[] alleGebote, String sparte) throws Exception {
		super(marke, name, version, stratpreis, alleGebote);
		setSparte(sparte);
		
	}
	
	@Override
	public String toString() {
		
		StringBuilder builder = new StringBuilder();
		for (int i = 0; i < super.getAlleGebote().length; i++) {
			int gebot = super.getAlleGebote()[i];
			builder.append(gebot).append(" ");

		}
		return super.getName() + "\n " + super.getName() + "\n "+getVersion()+ "\n"+getSparte() + "\n"+ builder.toString();
	}

}

Java:
public class Computer extends Artikel {

	private String prozessor;
	private String arbeitsspeicher;
	private String[] ausstattungen;

	public Computer(String marke, String name, String version,
			double stratpreis, int[] alleGebote, String prozessor,
			String arbeitsspeicher, String[] ausstattungen) throws Exception {
		super(marke, name, version, stratpreis, alleGebote);
		setArbeitsspeicher(arbeitsspeicher);
		setAusstattung(ausstattungen);
		setProzessor(prozessor);
	}

	public String toString() {
		StringBuilder builder = new StringBuilder();
		for (int i = 0; i < super.getAlleGebote().length; i++) {
			int gebot = super.getAlleGebote()[i];
			builder.append(gebot).append(" ");

		}

		StringBuilder ausstatungsBuilder = new StringBuilder();
		for (int j = 0; j < ausstattungen.length; j++) {
			String ausstatung = ausstattungen[j];
			ausstatungsBuilder.append(ausstatung).append(" ");

		}
		return super.getName() + "\n " + super.getName() + " \n"
				+ super.getVersion() + "\n " + getProzessor() + "\n"
				+ getArbeitsspeicher() + "\n" + super.getStartpreis() + " \n"
				+ builder.toString() + " " + ausstatungsBuilder.toString();
	}
}

Java:
public class Atrikelverwaltung {
	LinkedList<Artikel> artikeln = new LinkedList<Artikel>();

	
	public LinkedList<Software> ausgabeSoftwares(){
		LinkedList<Software> softwares = new LinkedList<Software>();
		for(Artikel a: artikeln){
			if(a instanceof Software){
				softwares.add((Software) a);
			}
		}
		
		return softwares;
	}
	
	public LinkedList<Computer> ausgabeComputeres(){
		LinkedList<Computer> computers = new LinkedList<Computer>();
		for(Artikel a: artikeln){
			if(a instanceof Computer){
				computers.add((Computer) a);
			}
		}
		
		return computers;
	}
	
	
}

danke euch vielmals
 
Ob die toString()-Methoden in Software und Computer richtig sind können wir nicht sagen, da du nicht gesagt hast wie du die implementieren sollst, d.h. was angezeigt werden soll.

Lediglich über die Artikelverwaltung hast du etwas gesagt - und da hast du bisher die toString-Methode gar nicht überschrieben. Also entweder deine Lösung ist falsch, oder du hast die Angabe nicht richtig verstanden und/oder die Angabe hier nicht deutlich formuliert.

und wie sollte ich folgende 3 methoden implementieren?(ich habe letzte 2 implementiert aber ich glaube nicht dass die richtig sind.)
Welche 3 Methoden?
 
muss ich toString in der Artikel auch implementieren?

diese 3 Methoden:
#Ausgabe aller Artikel (Verwenden sie die von ihnen implementierte toString() Methode)
#Ausgabe aller Software
#Ausgabe aller Computer


danke nochmals
 
über toString stand so Implementieren Sie zusätzlich die Methode toString() in geeigneter Art und Weise (Ausgabe aller Attribute).
 
Ok, hatte das falsch verstanden. Also die toString() würd ich sage sind ok.

Wg. den Methoden in der Artikelverwaltung:
Der Ansatz mit dem instanceof ist auch korrekt. Nur steht ja "Ausgabe", d.h. du solltest denke ich nicht eine Liste von Computern zurückliefern, sondern sie einfach ausgeben.

Also ich versteh das so:

Java:
        for(Artikel a: artikeln){
            if(a instanceof Computer){
                System.out.println(a);
            }
        }

Analog zu Software. Und bei Artikel gibst du alle aus, ohne instanceof.
 
meinst du bei ausgabeAllerArtikeln? da steht dass ich toString methode verwenden soll

soll ich ausgabe aller Software auch toString methode verwenden? wenn ja wie konnte ich das?
 
Java:
System.out.println(x);

ruft automatisch die toString()-Methode der Klasse auf, von der x abstammt. Teste es doch einfach mal.
 
Sahra - du hast in einem wildfremden Thread nach Hilfe gerufen - einfach mal ein Hinweis: Wenn du einen Tipp von hdi erwartest, schick im eine PN und hacke nicht einfach so in irgendwelchen Threads rum.

toString() muss nicht benutzt werden, das wird automatisch benutzt

So einfach geht das:

Java:
public class Test {

	@Override
	public String toString() {
		return "Hello world";
	}
	public static void main(String[] args) {
		Test t = new Test();
		System.out.println(t); // da wird automatisch toString aufgerufen.
	}
}
 

Neue Themen


Zurück
Oben