Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Azasel

unregistriert

1

10.08.2016, 12:28

[Java] Was kann ich mit Klassen so machen ?

Guten Tag,

Ich lerne schon seit langem Java.
Weil ich aber immer wieder Verständnisfragen hatte und mit den GUI Komponeten nicht klar kamm,
habe ich mich entschlossen, mal ein 4 mal von vorne anzufangen und so lange bei der Consolenprogrammierung zu bleiben, bis ich mit allem klar komme um auf GUI umzusteigen


Ich bin vom jetzigem Stand nun so weit, dass ich mich an die Klassen wage, aber ich weiss nicht was ich den für Klassen erstellen sollte.
Ich will spielerisch lernen, deshalb möchte ich nicht einfach eine Klasse Auto aus meinem Buch erstellen(Wie langweilig).
Vielleicht eher ein kleines RPG in Klassen.

Was fallen euch noch so für Beispiele ein, wo Klassen sehr Sinnvoll wären ?
Auch so Beispiele wo es Sinnvoll wäre Klassen zu Implementiern(oder extend? :D )

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

10.08.2016, 13:02

In Java ist alles in einer Klasse, also lautet die Antwort eigentlich "alles".
Anhand der Beispiele, die du in deinen Büchern oder Tutorials gesehen hast, solltest du doch schon ein gewisses Gefühl dafür bekommen haben, wofür man Klassen einsetzt. Darum wundert mich deine Frage, da du sagst "schon seit langem" Java zu lernen.

Eine Klasse steht im Prinzip für eine Objekt-Art. Klasseninstanzen sind dann die tatsächlichen konkreten Objekte dieser Art. Hund könnte eine Klasse sein, dein Dackel Struppi wäre eine Instanz dieser Klasse. Mit Vererbung modelliert man "ist ein"-Beziehungen zwischen Klassen. Ein Dackel ist ein Hund, darum könnte eine Dackel-Klasse von einer Hund-Klasse abgeleitet sein, aber nicht umgekehrt, denn nicht jeder Hund ist ein Dackel. (In irgendeinem Buch lernt man wohl, dass eine Wurst ein Supermarkt ist oder so. Hoffentlich hast du nicht dieses Buch.)

Wenn du beispielsweise ein Programm für die Verwaltung einer Zahnarztpraxis schreibst, dann gäbe es sicherlich eine Klasse Patient und für jeden Patienten eine Instanz dieser Klasse. Weitere Klassen in diesem Beispiel könnten Mitarbeiter, Termin, Rechnung, Behandlungsraum oder Behandlung sein. Die Mitarbeiter könnten unterteilt sein in Zahnarzt, Assistent, Laborant etc., diese wären dann von Mitarbeiter abgeleitet.

Objekte müssen aber keine greifbaren Objekte sein, sondern können auch etwas sehr abstraktes sein, wie z. B. eine vom Benutzer durchgeführte Aktion in einem "Rückgängig"-Puffer.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

10.08.2016, 13:21

Auto ist doch eigentlich gar keine schlechte Idee für eine Klasse. Stell dir vor du entwickelst ein Rennspiel. Du erstellst eine Klasse Auto um ein Auto in deinem Code darzustellen. Auto bekommt Eigenschaften wie Höchstgeschwindigkeit, Beschleunigung und so weiter. Dann gibt es eine Methode GibGas, Bremse, LenkeLinks und LenkeRechts. Jetzt möchtest du möglicherweise später verschiedene Motoren unterstützen. Du packst also alles was für einen Motor wichtig ist in eine Klasse Motor. Dein Auto bekommt dann eine Instanz vom Typ Motor. Um einen Motor anzupassen hast du jetzt zwei verschiedene Möglichkeiten. Du kannst von Motor weitere Klassen Klassen ableiten um verschiedene Motoren zu erstellen oder noch einfacher, du passt einfach die Werte für jeden Motor passend an.
Im zweiten Schritt möchtest du jetzt vielleicht nicht nur Autos sondern auch Motorräder in deinem Spiel haben. Du könntest jetzt eine Klasse Fahrzeug erstellen welche die Eigenschaften bereit stellt die jedes Fahrzeug hat. Auto und Motorrad wären dann abgeleitete Klassen.
Das Beispiel kannst du auch auf andere Spieler übertragen. In einem RPG hättest du eine Klasse Spieler. Dieser Spieler besitzt eine Waffe. Eine Waffe kann ein Schwert oder ein Bogen sein. Überleg mal selbst wie du das in diesem Fall modellieren würdest und mach mal einen Vorschlag.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Azasel

unregistriert

4

11.08.2016, 14:31

Wenn du beispielsweise ein Programm für die Verwaltung einer Zahnarztpraxis schreibst, dann gäbe es sicherlich eine Klasse Patient und für jeden Patienten eine Instanz dieser Klasse. Weitere Klassen in diesem Beispiel könnten Mitarbeiter, Termin, Rechnung, Behandlungsraum oder Behandlung sein. Die Mitarbeiter könnten unterteilt sein in Zahnarzt, Assistent, Laborant etc., diese wären dann von Mitarbeiter abgeleitet.


Das hat mich auf die Idee gebracht ein Programm für die Patientenverwaltung zu schreiben.
Jedoch kommen mir jetzt schon viele Fragen entgegen, die ich mal in einem neuem Thema stellen werde.

Auto ist doch eigentlich gar keine schlechte Idee für eine Klasse. Stell dir vor du entwickelst ein Rennspiel. Du erstellst eine Klasse Auto um ein Auto in deinem Code darzustellen. Auto bekommt Eigenschaften wie Höchstgeschwindigkeit, Beschleunigung und so weiter. Dann gibt es eine Methode GibGas, Bremse, LenkeLinks und LenkeRechts. Jetzt möchtest du möglicherweise später verschiedene Motoren unterstützen. Du packst also alles was für einen Motor wichtig ist in eine Klasse Motor. Dein Auto bekommt dann eine Instanz vom Typ Motor. Um einen Motor anzupassen hast du jetzt zwei verschiedene Möglichkeiten. Du kannst von Motor weitere Klassen Klassen ableiten um verschiedene Motoren zu erstellen oder noch einfacher, du passt einfach die Werte für jeden Motor passend an.


Die Idee gefällt mir, aber ich bin noch nicht so weit um mit so einem Projekt anzufangen.
Ich hebe mir das aber auf jeden fall für einen späteren Zeitpunkt auf.

Danke für eure Beiträge,
lg

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

11.08.2016, 18:49

Du musst ja keine ganze Patientenverwaltung oder ein Rennspiel entwickeln. Du sollst das ganze nur mit Klassen modellieren. Tu einfach so als würdest du eben genau das entwickeln. Es reicht ja wenn alles einfach Konsolenausgaben erzeugt und du so erkennst ob alles läuft wie du es dir vorgestellt hast. Der Rest kommt dann mit der Zeit und der Erfahrung.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Noctarius

Treue Seele

Beiträge: 120

Wohnort: Düsseldorf

Beruf: Manager of Developer Relations at Hazelcast, Inc. & Consultant for Scaleable Gameserver Systems

  • Private Nachricht senden

6

12.08.2016, 20:27

Ansonsten, aus Erfahrung mit Azubis, empfehle ich eigentlich relativ oft die "Von Kopf bis Fuß" (oder im originalen "Head First") Bücher: https://www.amazon.de/Java-von-Kopf-bis-…F/dp/3897214482

Stil etwas eigenartig, funktioniert aber und das mit Spaß :)

Azasel

unregistriert

7

12.08.2016, 22:16

Ansonsten, aus Erfahrung mit Azubis, empfehle ich eigentlich relativ oft die "Von Kopf bis Fuß" (oder im originalen "Head First") Bücher: https://www.amazon.de/Java-von-Kopf-bis-…F/dp/3897214482


Ich habe mir dieses Buch schon einmal mit nach Hause genommen, bloß sind mir da einfach viel zu viele Seiten.
Ich meine damit, dass sich für mich schon vieles wiederholt und ich auf einen großen Teil verzichten kann.
Da das Buch auch viel wiegt ist es beim halten sehr unangenehm.
Aber im ganzen lernt man da mit sehr vielen Beispielen, bloß, wie du bereits erwähnt hast, verstehe ich die Witze nicht.
Wäre es mein erstes Javabuch mit dem ich angefangen hätte zu lernen, wäre ich definitif viel schneller voran gekommen.

Danke für deine Empfehlung :)

Werbeanzeige