Java Textadventure

Hi,

Was bringt es mir Arrays zu sortieren, aus Schleifen herauszuspringen oder Rechenoperationen durchzuführen wenn ich keinerlei praktischen Nutzen darin habe?

was dir das bringt? Du lernst die Grundlagen! Und die fehlen dir ganz massiv! In einer Umgebung wie einer Schule musst du Rücksicht auf alle Schüler nehmen, auch auf die, die technisch nicht versiert sind und langsamer als andere voran kommen. Deswegen macht euer Lehrer das vermutlich.

Eigne dir Grundlagen an und arbeite einfache Tutorials durch, eines nach dem anderen. Lerne erst einmal die Grundbegriffe und fange ganz, ganz klein an. Alles andere führt zu nichts!

VG,
Mad
 
  • Gefällt mir
Reaktionen: Grimba und 00Zetti
Madman1209 schrieb:
Hi,



was dir das bringt? Du lernst die Grundlagen! Und die fehlen dir ganz massiv! In einer Umgebung wie einer Schule musst du Rücksicht auf alle Schüler nehmen, auch auf die, die technisch nicht versiert sind und langsamer als andere voran kommen. Deswegen macht euer Lehrer das vermutlich.

Eigne dir Grundlagen an und arbeite einfache Tutorials durch, eines nach dem anderen. Lerne erst einmal die Grundbegriffe und fange ganz, ganz klein an. Alles andere führt zu nichts!

VG,
Mad

An was sieht man das mir Grundlagen MASSIV fehlen?

Ich habe bisher:

for-Schleife/Do-while-Schleife/While-Schleife/If-Else/Switch/eindimensionale und Mehrdimensionale Arrays behandelt.
Was fehlt mir jetzt noch?
 
Hi,

das sieht man an dem Code, den du hier postest. Darauf wurda ja auch schon eingegangen.

Grundlagen für OOP lernen, Tutorials machen, und nicht gleich aufgeben oder ungeduldig werden, nur weil man meint, es ginge nicht schnell genug.

VG,
Mad
 
  • Gefällt mir
Reaktionen: Grimba
Ja aber wo findet man was gescheites?
Ich habe zuwenig Ahnung um zu bewerten wie gut oder schlecht ein Tutorial ist
 
Hi,

fang doch bitte einfach mal an, dir alle Beiträge wirklich durchzulesen. Auch Links zu Anleitungen und Tutorials wurden hier schon gepostet! Außerdem gibt es hier im Forum die Suchfunktion und einen eigenen Sticky nur zu dem Thema!

Damit solltest du anfangen: alles genau lesen und durcharbeiten! Und mehr Eigenleistung bringen! Programmieren lernen kannst du nur selber, dazu gehört, sich Informationen zu suchen, zu bewerten und sich diese durch Sitzfleisch und Ehrgeiz anzueignen.

Ist ja nicht so, dass es nicht gefühlt jeden Tag einen Thread hier mit exakt diesem Problem gibt - genau deswegen gibt es die Stickys und Sammelthreads!

VG,
Mad
 
  • Gefällt mir
Reaktionen: Grimba und 00Zetti
merlin123 schrieb:
Ich habe zuwenig Ahnung um zu bewerten wie gut oder schlecht ein Tutorial ist
Ausprobieren. ;)

Der eine kommt mit Tutorial / Erklärung / etc. X wunderbar aus, andere finden es unverständlich, was / wie dort etwas vermittelt wird. Außerdem ist ausprobieren ein ganz elementarer Bestandteil der Programmierung (Wie auch selber im Netz nach Infos / Erklärungen / etc. suchen zu können).

Die Lösung für ein Problem (von der optimalen Lösung noch gar nicht gesprochen) tippe man nicht immer / gleich direkt runter. Da heißt es probieren, Ansätze finden oder auch mal zurück auf 0 und es anders versuchen.

Konkret zu deiner Frage bezüglich der Grundlagen: Du selbst schreibst beispielsweise, dass du Schleifen und CO kennst. Aber gleichzeitig fragst du im ersten Beitrag, wie du aus der While-Schleife kommst. -> Du hast eine grobe Vorstellung von Schleifen, aber bist nicht sicher. Also würde es sich hier schon anbieten einfach im Netz - diverse Anlaufstellen wurde ja schon genannt und es gibt auch noch google - nach weiteren Erklärungen / Beispielen / kleinen Aufgabenstellungen zu schauen, um Schleifen und CO wirklich zu verstehen, damit kleine Übungsprogramme zu erstellen, um am Ende des Tages ein besseres Wissen zu haben und diese besser anwenden zu können.

Beispiele, wie man sich etwa langsam einarbeiten könnte:
1. Spiel eine Software, wo sich der Computer eine Zahl zwischen 0 und 100 ausdenkt und der Spieler so lange raten kann, bis er die Zahl gefunden hat, wobei der Computer immer ausgibt, ob die gesuchte / ausgedachte Zahl größer oder kleiner ist bzw. "Glückwunsch gefunden / neues Spiel?"
2. Spiel (Variante) Der Nutzer kann den Bereich der Zahl vorgeben (etwa ein Zahl zwischen 200 und 400) und es gibt mehr Feedback / Statistik (etwa die Ausgabe "Es wurden X Versuche gebraucht")
3. Spiel (Variante) Der Spieler denkt sich eine Zahl aus und der Computer rät die Zahl. Der Spieler muss folglich immer größer, kleiner oder gefunden "antworten"
4. Spiel man überlegt sich ähnliche Ratespielchen, die etwa für mehrere Spieler sind, wie z.B. der Computer denkt sich eine Zahl aus, die Spieler raten und wer besonders dich dran ist, der bekommt einen Punkt. Könnte man dann ausschmücken mit Spielstatistiken, Spielernamen, etc.
5+ Spiele Man macht es komplexer und versucht sich an einem Quiz (Frage + 1-4 Antwortmöglichkeiten)
etc.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: 00Zetti und Grimba
Lieber Merlin123,

in deinen Worten steckt viel Frust und Ungeduld. Unabhängig davon, dass man daran schon erkennen kann, dass dir zum aktuellen Zeitpunkt die Sicherheit fehlt, konstruktiv mit der Kritik hier umzugehen, sieht man es wirklich direkt am Quellcode und an deiner Herangehensweise, die Probleme, die sich dir bei deinem Vorhaben in den Weg stellen, zu lösen.

Die Leute, die du hier fragst, haben für gewöhnlich die nötige langjährige Erfahrung oder sind von Beruf Entwickler (ich z.B.) und erkennen schnell, welche Konzepte dir grundlegend fehlen. Ich vermute deshalb fragst du doch hier. Und die haben wir dir genannt, und das wirft bei dir noch mehr Fragezeichen auf. Keine Bange, das ist nicht schlimm!

Wir haben dich bewusst darauf hingewiesen, dass dein Programm an sich ja ganz nett ist und auch von der Syntax soweit ok und dass man sieht, dass du was kannst und schon recht weit bist, dass man dir nicht mehr erklären muss, was eine Variable ist. Aber die wirklich ganz grundlegenden Probleme hast du höchstselbst in den Raum geworfen. Es fällt dir jetzt nur schwer, die richtigen Schlüsse zu ziehen. Deshalb bist du frustriert.

Du hast drauflos programmiert, und stellst im Nachhinein Fragen zum grundlegenden Design (Verknüpfung Story und Programm), oder wie Gegner vielleicht mit unterschiedlichen Waffen kämpfen könnten. Und hier liegt ja schon der Hase im Pfeffer: Normalerweise geht es eben umgekehrt: Sich erst Gedanken um das grundlegende Konzept machen, und dann ganz am Schluss die Umsetzung. Und der Grund dafür ist so simpel wie einleuchtend: Damit man sich eben nicht in eine Sackgasse programmiert, und dann plötzlich dasteht und entweder alles verwerfen muss bzw. nicht weiter weiß.

Unsere Tipps zielten darauf ab, dich genau dahin zu führen, dass du erkennst, wie in Java Komponenten ineinander greifen, wie man sich Gedanken über das Design eines Programmes und seiner Bestandteile macht, und dass man das bei Java eben durchaus schön voneinander trennen kann und dann Stück für Stück zusammenführen.

Du hingegen wirkst so, als möchtest du mal eben schnell ne Lösung für das Problem, was du jetzt gerade hast. Und das mit der Story kann dir sicher auch schnell wer erklären.... Sorry, nein, nope! Is nich'. Auch wenn's dir nicht gefällt.

Wenn du jetzt schon nicht weißt, was dir im Unterricht vielleicht dir zu langsam vermittelte Grundlagen "nützen" sollen, dann stellt sich eben automatisch auch die Frage, ab wann du denn der Meinung bist, dass es dir nützt. Weißt du genau, was "nützlich" wäre stattdessen? Die Antwort hast du selbst gegeben, indem du sagst, dass du nicht weißt, ab wann ein Tutorial gut ist und dass du das alles ja nicht abschätzen kannst. EBEN! Wieso bist du der Meinung, ein Textadventure wäre nützlich, besonders dann, wenn dir offensichtlich die Fähigkeiten fehlen es umzusetzen bzw. du nicht abschätzen kannst, welches Wissen nützlich ist? Nützlich für WAS?

Und genau deshalb geben dir die Leute hier Tipps und Links zu Tutorials, vielleicht auch, weil man selber damit erfolgreich war und weitergekommen ist. Ein Buch oder ein Tutorial ist nämlich genau dann nützlich: Wenn es dir neues Wissen vermittelt hat, und du es verstanden hast. Dann bist du weitergekommen.

Du hingegen bist noch frustriert, weil dein Projekt so wie es war Murks ist, und dir der Unterricht zu langsam ist: Mein Vorschlag: Fang doch einfach mal an. Nimm dir eins der genannten Tutorials vor und schau mal, wie weit du kommst. Nimm dir dabei immer vor, das gelernte Wissen irgendwie mit deinem Textadventureprojekt in Verbindung zu bringen. Dann hast du auch einen roten Faden. Dann hast du einen "Nutzen". :)

Btw: Weil du es mir explizit unterstellt hast: Ich erfinde nichts. Das war einfach nur mein Eindruck, und diese Meinung kann, darf und werde ich frei äußern. Wenn dem nicht so ist, dann entschuldige ich mich.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: 00Zetti und TPZ
Ich finde es prinzipiell in Ordnung, im ersten Projekt einfach drauf loszuprogrammieren und nicht erstmal alles formal zu definieren, da man ja als einziger daran arbeitet arbeit. In der Regel hat man aber ein grobes Konzept im Kopf was man versucht umzusetzen und beim Implementieren fallen einem dann die Probleme mit dem Konzept auf. ;)

Ich finde es gut, wie weit Du schon gekommen bist, aber Du musst Dich wie die anderen schon gesagt haben auf jeden Fall noch mit Objektorientierung auseinandersetzen, sonst macht Java keine Sinn. Sonst wirst Du im Kopf zu keinem vernünftigen Denkansatz kommen.

Hier mal ein simples Beispiel ohne Vererbung etc, wie ein simpler Kampf in Objektorientierung ablaufen kann, das bringt Dich ja evtl schon weiter:

Code:
//in neuer Datei monster.java:

public class Monster
{
  private string type;
  private int health;
  private int attack

  public Monster (string type, int health, int attack)
  {
    this.type = type;
    this.health = health;
    this.attack = attack;
  }

  public void Attack (Monster monster)
  {
    monster.ReceiveDamage(attack);
  }

  public void ReceiveDamage(int damage)
  {
    health = health - damage;
  }

  public int GetCurrentHealth()
  {
    return health;
  }
}

//in main Methode:
Monster m1 = new Monster("Wolf", 100, 20);
Monster m2 = new Monster("Baer", 150, 15);
m1.Attack(m2);
System.out.println (m2.GetCurrentHealth());

Keine Gewähr für syntakitsche Korrektheit, da nicht geprüft.

Btw. welche Entwicklungsumgebung nutzt Du? Weißt wie man die Debugger Basics bedient, also Breakpoints setzen und Schritt für Schritt durch die Code Ausführung steppen?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Grimba
Moin!
Ich schließe mich erstmal allem gesagten an, deine Sicht verstehe ich aber auch. Das Problem ist, dass du was cooles machen willst, wirklich coole Sachen kann man aber erst machen wenn man die langweiligen Sachen beherrscht. Als Ernüchterung: das was du in der Schule lernen wirst, wird nichtmal alle Grundlagen abdecken (wie schon gesagt wurde, man muss es auch den langsamen Schülern beibringen). Ich und ich denke alle anderen auch finden es aber super, dass du dich in deiner Freizeit überhaupt weitergehend damit beschäftigst!

Ich sehe das immer wieder bei vielen Bachelorstudenten: die lernen ein wenig was und wollen dann wie du einfach darausflos hämmern. Klar sind Schleifen und mehrdimensionale Arrays ohne Bezug langweilig. Der Sinn bei Basicaufgaben ist auch oft fragwürdig (der eigtl Sinn ist aber nur die Basics zu erlernen). Aber die coolen Sachen kommen nicht umsonst erst im späteren Verlauf des Studiums. Schreibe doch mal eine Matrixmuliplikation mit mehrdimensionalen Arrays und als kleinen Spaßfaktor mit nur zwei geschachtelten Schleifen und danach speicherst du die Matrizen mal nur in eindimensionalen Arrays mit Indexzugriff ab. Wenn du später mal Informatik studieren willst werden genau solche Sachen deinen Beginn darstellen.

Was ich damit sagen will: fang wirklich kleiner an. Wenn die Grundkonzepte mit komplexeren Aufgaben (wie dem Matrixbeispiel) sicher sind kansnt du dich an komplexere Sachen heranwagen. Niemand macht dir einen Vorwurf, dass der Codestil mit der Main-Methode schlecht ist - genauso haben wir alle angefangen, weil man sonst einfach von der Komplexität erschlagen wird. Ich würde dir wirklich dringend Tutorials empfehlen (in Codingame hat man zumindest ein cooles visuelles Feedback und sieht irgednwo einen Sinn in den Aufgaben).

Und weil du so schön gefragt hast welche Grundlagen dir fehlen: Interfaces? Rekursion? Casts? Überladen? Überschreiben? Bool'sche Logik? Iteratoren?
Das soll dich nicht entmutigen, aber es gibt wirklich viele Sachen und bis auf Interfaces sind das alles Sachen die Studenten bei uns im Vorkurs in den ersten zwei Wochen vor dem Studium lernen. Was ich damit es sagen will, es ist unfassbar komplex! Und für größere Sachen brauchst du einfach alle Grundlagen. Und vor allem eine gute Programmstuktur, die nur haben kannst wenn du die Grundlagen hast und das Problem von vorne bis hinten druchdacht hast. Sonst passiert genau das was schon gesagt wurde: du schreibst darauf los und merkst währenddessen "oh das ist ein Fall den ich nicht bedacht habe. oh das ist ja gar nicht kompatibel zu meinem Rest. Oh na dann fixe ich das hier. Oh und hier. Oh und jetzt fleigt mir alles um die Ohren." Sowas macht jeder durch und das zu verhindern macht auch Erfahrung aus, die man natürlich nur im Laufe der Zeit erhält wenn man stetig an Projekten arbeitet.
 
  • Gefällt mir
Reaktionen: Grimba
Danke erstmal für die ganzen Meldungen hier :)
Ich werd mich mal ransetzen und einfach solche Beispiele wie M@rsupil@mi durcharbeiten.

Es stimmt schon das ich schnell Erfolge sehen will, ich denke mir nur immer das ich absolut keine Zeit habe und möglichst schnell lernen MUSS.
Vielleicht liegts auch einfach an meiner ersten Ausbildung die mir garnicht gefallen hatte, das ich jetzt auf Teufel komm raus nur etwas lernen sollte was mir später wirklich was hilft. Deswegen ist mir das ganze so wichtig.
Ich bin auch eine Person die nur das lernt was wirklich wichtig ist um weiterzukommen. Das was ich damals gelernt habe, hat mir überhaupt nichts gebracht und ich hab auch einwenig Angst dadurch Zeit zu verlieren.
 
Deinen Worten entnehme ich, dass du nicht einfach Schüler bist sondern in der Berufsausbildung und Sorgen um deine Zukunft hast.

Daher möchte ich dir wegen
merlin123 schrieb:
Ich bin auch eine Person die nur das lernt was wirklich wichtig ist um weiterzukommen.
ein Paar Worte mitgeben, um dich davor zu bewahren, später in die Falle zu laufen:

1. Du weißt jetzt schlicht noch nicht, was wichtig ist, und was nicht. Was dir nicht wichtig erscheint, kann später von Bedeutung sein. Du bist jetzt erst am Anfang. Denn die Antwort auf deine Frage ist, so fies ich dir das sagen muss, ...
merlin123 schrieb:
Ich habe bisher:

for-Schleife/Do-while-Schleife/While-Schleife/If-Else/Switch/eindimensionale und Mehrdimensionale Arrays behandelt.
Was fehlt mir jetzt noch?
... so ziemlich alles.
Das sind absolute Grundlagen, die nahezu jede Programmiersprache schon in den 80er Jahren geboten hat. Das macht sie in keinster Weise unwichtig, und man kann damit schon viel anstellen, aber nichts desto trotz ist es nur der absolute Bodensatz an Programmierkonzepten.
Allerdings ist es zwingend notwendig, diese zu können und verstanden zu haben, denn alles weiterführende baut genau auf diesen Dingen auf. Komplexere Strukturen bedürfen auch etwas mehr Theorie und Hintergrundwissen, um zu verstehen wann und vorallem warum man sie nutzt. Aber ohne If-Then-Else wirst du z.B. niemals auskommen, daher ist dieses Wissen absolut essentiell.

2. Es ist absolut legitim, aus eigenem Antrieb heraus mehr zu lernen, wenn man sich im Unterricht unterfordert fühlt. Ich würde sogar sagen, dass das seitens deines Lehrers explizit erwünscht ist. Weiter So!

3. Eben weil du in der Berufsausbildung bist, ist es wichtig zu verstehen, dass du im späteren Beruf eben nicht die Möglichkeit hast, drauflos zu programmieren und dann alles wegzuschmeißen. Dass das schonmal passiert in der Realität, darüber brauchen wir nicht zu diskutieren, das passiert jedem überall. Aber du musst wissen, dass sowas deinen Arbeitgeber teures Geld kostet, wenn du über Wochen erarbeitetes einfach wegschmeißen musst und von Vorne anfangen musst. Das musst du dann schon sehr gut begründen können.

4. Es gibt in den meisten Unternehmen Richtlinien, wie Quellcode auszusehen hat. Es reicht also später nicht, dass etwas bloß funktioniert, und dabei wie Grütze aussieht. Daher an dieser Stelle nochmal der Hinweis, dass etwas, was dir jetzt vielleicht trocken und unwichtig erscheint, im späteren Berufsleben durchaus wichtig ist.

5. Lass dich nicht entmutigen! Ich z.B. war Langzeitstudent und erst mit 34 im ersten Job. Aber ich bin doch irgendwo untergekommen. Irgendwer gibt dir 'ne Chance. Und wenn du einmal drin bist, fällt dir danach alles leichter. Das klingt jetzt vielleicht ganz weit weg, aber fühl dich bitte nicht jetzt schon abgehängt! Damit gerätst du nur in Panik, und Panik hilft dir nicht!
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Broxxa und 00Zetti
EDIT: Sorry, die gesamte letzte Seite nicht beachtet, deshalb war dieser Post überflüssig.
 
@Grimba

Also ich bin bisher in ersten Jahr FA Systemintegration nach erster Ausbildung und Berufskolleg. Ich mache mir da ständig Sorgen, immerhin habe ich eine Vollzeitstelle gekündigt nur um das zu machen was ich jetzt mache. Ich hab halt das Gefühl das wenn ich jetzt nicht dranbleibe ,das später dann ernste Probleme auf mich zukommen, im Programmierbereich der Ausbildung.
Vielleicht ist es für euch nur eine simple Programmieraufgabe, aber für mich ist das ziemlich wichtig zwecks Zeugnis
 
Hi,

als FISI brauchst du kaum Programmierkenntnisse, du bist / wirst ja kein Anwendungsentwickler! Genau deswegen gibt es diese Trennung!

VG,
Mad
 
Das ist mir bekannt, aber wir werden bis zum Ende des zweiten Lehrjahres JAVA behandeln. Und da möchte ich möglichst gut abschneiden.
 
Du wirst in jeder Fachrichtung Probleme haben, wenn du in der Ausbildung nicht dranbleibst. Das liegt doch irgendwo in der Natur der Sache. :D

Aber du musst deswegen keine Panik schieben. Du musst jetzt nicht mit der Brechstange ein JAVA-Profi werden, denn das wäre auch gar nicht möglich. Das ist ja das, was dir alle hier die ganze Zeit sagen wollen: ES GIBT KEINE ABKÜRZUNG!

Es ist verständlich, dass du unsicher bist, aber wie schon richtig gesagt wurde: Du wirst kein Entwickler, du wirst Admin. Es ist auf jeden Fall wichtig, die grundlegenden Programmierkonzepte zu verstehen, aber ich vermute mal ganz stark, dass du in deinem Beruf später eher mit Skriptsprachen zu tun hast und weniger mit Java.

Und nochmal: ES GIBT KEINE ABKÜRZUNG!

Daher würde ich mich an deiner Stelle vor allem darum bemühen, den Stoff des Unterrichts zu verinnerlichen und zu verstehen. Alles weitere ist ein Bonus, aber mehr, als im Unterricht besprochen wurde, brauchst du ja bloß für deine Note nicht zu wissen. Daher verstehe ich deine Panik nicht so richtig.

Dein Eigenantrieb ist wirklich lobenswert, und es zahlt sich immer aus, sich selbst weiterzuentwickeln, und über den Tellerrand zu schauen. es wird die zweifelsohne helfen, im Java Kurs eine sehr gute Note zu bekommen. Aber in Anbetracht dessen, dass du gar kein Entwickler wirst, ist deine Panik als FISI zu versagen, nur weil du nicht perfekt Java kannst, vielleicht ein wenig übersteuert, findest du nicht?
 
Das Problem dabei ist, das am Ende die Noten und der Schnitt zählt. Ich habe einfach keine Lust wieder auf den Bau zu gehen, falls man mit den Leistungen nicht zufrieden ist. Da hab ich leider in genug Firmen gearbeitet bei denen nur Noten ausschlaggebend waren.
Ich mein es wär schon kacke bei lauter 2er und 1er eine 3 oder 4 in Software und Anwendungsentwicklung zu haben oder?
Bin dann mal weiter am lernen.
 
Hi,

im "echten Leben" draußen interessiert es bei einer Bewerbung zum FISI niemanden, wie gut oder schlecht du programmieren kannst. Ich kenne leitende Mitarbeiter von Rechenzentren, die in Java gerade mal die Konsolenausgabe beherrschen. Skripte, Bash - das ist was anderes. Das ist aber nicht Anwendungsentwicklung.

Fokussiere dich auf das, was du in der Schule lernst und meistere das - alles, was darüber hinausgeht ist sinnfrei, vor allem wenn es "fachfremd" ist. Du bekommst keine bessere Note in der Schule, wenn du etwas in deiner Freizeit lernst, dass nicht zum Stoff gehört.

Ich kenne nicht einen FISI der in der Lage wäre, ein Spiel zu programmieren. Spezialisierung ist hier gefragt! Lerne deine Kernfächer bis zur Perfektion - Anwendungsentwicklung sehe ich da absolut als Nebenfach!

VG,
Mad
 
Ich habe vor dem Studium eine Ausbildung zum FiSi gemacht und kann dir sagen: im Berufsleben benötigst du exakt gar nichts von dem was du in dem schulischen Teil der Ausbildung gelernt hast, das läuft rein über Berufserfahrung. Sicherlich sind die Noten der Türöffner (du solltest nicht 3.5 stehen...), aber viel mehr wird auf Projekte, Softskills und deine praktischen Kenntnisse geachtet.
Und wie schon gesagt: du wirst als FiSi ganz ganz weit weg von Softwareentwicklung sein. Wenn du die Lernprojekte von Codingame oder ähnlichen Seiten kannst reicht das vollkommen aus. Für dich wäre es wichtiger in deiner Freizeit berufsbezogene Projekte zu machen, setz doch zB mal Server auf nem Raspberry Pi auf und bastel dort herum. Wenn du dich damit bewirbst bist du viel interessanter als der Typ der nur für die Schule lernt, aber keine Erfahrung nebenbei gemacht hat. Btw hat dein Betrieb nicht vor die Azubis zu übernehmen?
 
  • Gefällt mir
Reaktionen: Madman1209
Zurück
Oben