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

De_Struktor

unregistriert

1

24.03.2013, 16:12

Objektorientierte Denkweise

Hallo Leute,

nun ist es an der Zeit gekommen, wo ich meine Bomberklon in die Objektorientierung verschiebe aus Gründen, der ich zu faul bin, sie zu nennen :)^^.

Ich arbeite mich grad sehhhhhr intensiv in die Objektorientierte Arbeits und Denkweise ein und ich muss sagen, es ist ein hartes stück Kuchen.
Genau, ich sage Arbeitsweise, da ich nicht fürs erste wissen will, wie ich es zu Programmieren habe, sondern ich will die Logik dahinter verstehen.

Wenn der Part abgeschlossen ist, dann widme ich mich der Programmierung.
Und ich verstehe genau einen Teil nicht, ich habe geblättert wie blöd, doch überall wird es gleich erzählt:

was ist genau der Hintergrund von der Objekidentität.
Ich verstehe nicht wenn sie sagen: "
Ein Objekt ist unabhängig von den konkreten Werten seiner Attribute von anderen Objekten eindeutig
zu unterscheiden.
Beispiel: Selbst wenn ein Auto derselben Marke und Farbe mit derselben Geschwindigkeit f¨ahrt
wie meins, so ist es eben doch ein anderes Auto".
wie darf ich es verstehen, und ja ich kann mir vorstellen, das sich viele wünschen, ich höre auf hier zufragen, denn es nerve langsam^^
aber ich will auch mal die erfahrene Sicht ausprobieren, wenn ihr versteht was ich meine.

mfg
De_Struktor

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

2

24.03.2013, 16:22

Mal angenommen du gehst in den Supermarkt deiner Wahl und erwirbst dort 2 leckere Pferdefleisch-Lasagnen. Diese beiden sind (vereinfacht betrachtet) vollkommen gleichwertig, weil sie die gleichen Eigenschaften besitzen (die gleiche Menge Käse, Teig, Sauce und Pferdefleisch), aber dennoch hast du 2 Stück davon in der Hand.
Vergleichbar ist es auch beim Programmieren. Mit Hilfe der Klassen beschreibt man, wodurch sich die Objekte auszeichnen. Selbst wenn von einer Klasse 2 Objekte mit den gleichen Eigenschaften angelegt werden, sind es immernoch 2 verschiedene Objekte. Das äußerst sich einerseits darin, dass sie an unterschiedlichen Stellen im Arbeitsspeicher liegen, andererseits wirken sich Änderungen an dem einen Objekt nicht auf das andere aus.

Ich hoffe, ich habe es verständlich genug erklären können.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

De_Struktor

unregistriert

3

24.03.2013, 17:23

und was sagt es mir in der praxis aus, das ich keine mehrfach referenzen auf ein objekt haben darf?

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

4

24.03.2013, 17:29

Nehmen wir als Beispiel Java. Dort hat man eine Variable, der irgendwann mal irgendwie der Stirng "Hello World!" zugewiesen wurde. Wenn man nun mit variable == "Hello World!" prüfen will, ob die Vairable dies beinhaltet, wird dies grundsätzlich false zurückliefern, da es sich um 2 verschiedene Objekte handelt, die da verglichen werden (Java vergleicht in dem Zusammenhang immer auf Basis der Referenz.
In C# ist dies für Strings beispielsweise besser gehandhabt (der Operator == ist dort überladen), nur muss man dies bei eigenen Klassen immernoch berücksichtigen.
In kurz wäre das wieder die Ausgangsaussage: Man kann mehrere Objekte mit gleichen Werten haben, die aber dennoch nicht die selben sind.

(Nein, man kann ein Objekt an mehreren Stellen referenzieren, das ist damit nicht gemeint.)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

5

24.03.2013, 17:58

Zitat

Nehmen wir als Beispiel Java. Dort hat man eine Variable, der irgendwann mal irgendwie der Stirng "Hello World!" zugewiesen wurde. Wenn man nun mit variable == "Hello World!" prüfen will, ob die Vairable dies beinhaltet, wird dies grundsätzlich false zurückliefern, da es sich um 2 verschiedene Objekte handelt, die da verglichen werden (Java vergleicht in dem Zusammenhang immer auf Basis der Referenz.

Das ist ein schlechtes Beispiel da es bei Strings in Java noch den Literal Pool gibt. Erzeugt man den String in variable mit dem new Operator, dann bekommt man false. Weist man aber variable einfach mit = einen String zu würde man true bekommen. Siehe hier: http://www.teialehrbuch.de/Kostenlose-Ku…ang-String.html

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

24.03.2013, 19:36

"Das gleiche" und "das selbe" ist eben ein Unterschied. Das gilt auch in OOP.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

7

24.03.2013, 23:07

Im Eroeffnungspost ist das Prinzip beschrieben mit Beispiel, wo ist da die Frage? Sollen wir noch 100 Beispiele auflisten?

Zitat

und was sagt es mir in der praxis aus, das ich keine mehrfach referenzen auf ein objekt haben darf?
und was sagt es mir in der praxis aus, das ich einer Variable nicht den Wert 3 zuweisen darf?

De_Struktor

unregistriert

8

24.03.2013, 23:15

gut wie immer muss ich das bis in die assembler-programmierung hineinkonkretisieren!

ich würde gerne erfahren, wie ich in der praxis mit dieser erkenntnis zu arbeiten habe.
also, wie verwende ich dieses neu erworbene wissen.

De_Struktor

unregistriert

9

24.03.2013, 23:21

noch mehr dazu. mir mangelt gerade stark am verständnis der OOp, denn ich will mir eine spielerklasse schreiben.
(XNA) und weiss nicht, wie ich anfangen sollte, mit der klasse!
projekt : Bomberman
der spieler muss daher nicht viel können.

hätte jemand evtl einen anreiz, wie er beginnen würde??

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

10

24.03.2013, 23:36

Anwenden tut man das, indem man seine Tastatur nimmt und was eintippt.

ungefaher so:

C-/C++-Quelltext

1
2
class Player
{

Werbeanzeige