[Problem] Java Aufgabe

  • Hey Leute,
    ich habe ein paar Schwierigkeiten mit einer Aufgabe in Java.
    Es geht um folgende:


    Das Problem ist, wir müssen die Listen etc. alles selbst implementieren.
    Ich habe vorher noch nie mit einer Liste gearbeitet und bin deswegen etwas ratlos.
    Soweit ich das jetzt überblicken konnte besteht eine Liste ja quasi aus 3 Klassen, oder? Man hat ja einmal die Klasse des Objekts selbst (bspw. eben Artikel mit Attr. Bezeichnung und Preis), dann brauch ich eine Klasse ListenElement, die eben einen Artikel zugewiesen bekommt und auf das nächste Element zeigt, und die Liste selbst, wo ich Elemente hinzufügen, entfernen, ausgeben kann etc.


    Jetzt brauch ich bei A1 ja irgendwie 5 Listen oder so. Muss ich dann für jede Liste diese 3 Klassen erstellen? o.O
    Oder habe ich irgendwie was falsch verstanden? Da steht ja "Erstellen sie hierfür jeweils einen abstrakten Datentypen, der eine einfach verkettete Liste modelliert.


    // Edit:
    Hab jetzt noch was von wegen Iterator gelesen, jetzt raff ich gar nichts mehr.
    Mag mir das wer anhand von nem Bsp. für eine Liste aus der Aufgabe zeigen? Also einfach mal kurz zeigen wie das alles auszusehen hat...

  • Naja ist eigentlich nicht so schwer, wenn man durchgeblickt hat.So sieht im Prinzip eine einfach verkettete Liste aus:
    Also ich zeig dir das jetzt am Beispiel von der Artikel Klasse. Die ListenElemente sind allerdings generisch, ich sehe das nicht ein, dass ihr das wie vor 10 Jahren machen solltet und die Liste sollte eigentlich auch generisch sein, aber egal.(Du solltest dich auf jedenfall in Generics einlesen,sehr nützlich bei sowas: http://openbook.galileocomputi…sel/javainsel_09_001.html )



    Ein ListenElement enthält einfach das jetzige Object und das nächste Element.Die Artikelklasse:


    Und jetzt die ListeKlasse:


    die Methode contains ist ein Beispiel, wie du die Klasse erweitern kannst. Falls du nur eine einzige Liste benutzen willst :


    //sorry das ich deutsche und englische variablenname benutze ist ne schlechte angewohnheit :king:

  • ich finds echt heftig, das jeder student immer noch so basics selbst implementieren muss. klar muss man verstehen, was listen usw. sind. aber das bringt einem einfach im berufsleben überhaupt nix. 99,999% der menschen werden eine liste nicht effizienter erstellen können, als das bereits vorhandene Template. So werden die ganzen Informatiker dazu erzogen, jedes noch so kleines allgemeines Detail selbst zu schreiben, und so Fehler und Effizienzprobleme unnötig einzubauen. Tut mir leid und das hilft dir jetzt wahrscheinlich auch nicht weiter, aber mich kotzt deine Aufgabe schon wieder so an^^


    Also, um dir einen Motivationsschub zu geben: So nen Dreck musst du später (im job, da wo dann das Geld herkommt) nicht mehr basteln. Da musst du dann richtige Herausforderungen meistern. Meines Erachtens sollte es reichen, sich die Theorie von Liste durchzulesen und auf eine schon fast perverse Art die Dinger zu benutzen. Aber selber bauen... Lieber die offizielle Version anschauen und verstehen.

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)





    Skill ist, wenn Luck zur Gewohnheit wird

  • Hangman, das hängt ganz vom Anwendungsgebiet ab. Nicht jeder IT-ler ist Softwareentwickler und nicht jeder Softwareentwickler arbeitet auf einer der hohen Abstraktionsebenen, die man heute meist so antrifft. Gerade wenn ich jetzt mal so an C denke, sind verkettete Listen oder Array-Listen über Strukturen völlig normal. Wegen solchen Pillepalle-Geschichten nimmt man doch keine Lib von wer weiß wo her. Und gerade in den sehr stark technischen IT-Bereichen, wo selbst heute noch Speicher kostbar ist und man wirklich nur mit rudimentären Dingen zu tun hat, ist solches Wissen mega kostbar. Für "einfache" Fachkräfte ist solches Wissen vielleicht nicht kriegsentscheident, aber ich weiß von gewissen Leuten, dass es in gewissen Bereichen nunmal so ist, dass man keine Chance hat zu überleben, wenn man keine Ahnung von Datenstrukturen, Berechnung der Komplexitäten und Optimierung auf höchstem Niveau hat. Eine verkettete Liste und eine Array-Liste sind Kindergarten-Implementierungen, die meist verwendet werden und recht effizient arbeiten und eben darum aus dem FF beherrscht werden sollten. Und die Standard-Implementierungen sind auch nicht für jeden Fall geeignet, sei es nun Speicher, Rechenzeit oder sonst was. Darum muss man dann auch mal selbst in die Trickkiste greifen können, aber dazu muss man zumindest mal verstanden haben, was Datenstrukturen sind. Abkupfern von anderen bringt da keinem was. Insofern finde ich das durchaus nicht falsch, dass sowas verlangt wird. Ich habe im JavaMagazin auch schon den einen oder anderen Artikel gelesen, gerade in Bezug auf BigData und Co, wo es selbst für Java nichts passendes gab und die Leute komplett von Grund auf neue Collections extra für diesen einen Anwendungsfall implementieren mussten, weil selbst die besten existierenden zu langsam waren. Das ist von daher nichts, das man so mal eben als unwichtig abtun sollte. Wie gesagt, Wissen über Datenstrukturen auf einem entsprechenden Level kann darüber entscheiden, ob man überhaupt als kleiner "Fisch" angestellt wird oder nicht. Die Bücher zu den Themen kosten nicht umsonst im dreistelligen Bereich das Stück und mir ist auch klar, dass das sehr theoretisch ist und vielen Leuten auf den Zeiger geht, aber es muss nunmal sein. Gerade solchen Kleinigkeiten sollten aus dem FF beherrscht werden, das ist wirklich Kinderkram. Insofern versteh ich auch, dass du dich drüber aufregst, aber mit irgendwelchen kranken Bäumen und was weiß ich was kann man erst arbeiten, wenn man die leichten Sachen verstanden hat, unabhängig davon, wie viele Implementierungen es bereits gibt. Und ich hoffe mit "richtige Herausforderungen" meinst du jetzt nicht sowas wie Business-Applikationen und im Sinne von Kundenauftrag (wo die Herausforderung meist darin besteht unsinnige und völlig an der Realität vorbeigehende Anforderungen umzusetzen) und der Rest ist keine "richtige Herausforderung". Das wäre nämlich ziemlich arrogant und ich würde da stark aufpassen, das kann nach hinten losgehen. Wer den Cent nicht ehrt, ist den Euro nicht wert. Das ist hier kein bisschen anders.