DevCore.net

OOP vs. Data-Oriented Design: Daten, die zusammenarbeiten

Die Idee: OOP bündelt Daten und Verhalten in Objekten. DOD gruppiert dagegen Daten, die gemeinsam verarbeitet werden.

Auf alten Magnetfestplatten wurden Dateien beim Defragmentieren zusammenhängend angeordnet. Der Schreib-/Lesekopf musste dadurch weniger springen. DOD nutzt ein ähnliches Prinzip im Arbeitsspeicher: Zusammengehörige Werte liegen kompakt beieinander und landen so besser im CPU-Cache.

// OOP: neue Klasse oder Sonderlogik nötig
class FlyingPlayer extends Player {
  fly() { this.position.y += this.speed; }
}

// ECS: Komponente hinzufügen – fertig
addComponent(world, eid, Flying);

Ein ECS trennt Daten und Logik: Systeme verarbeiten alle Entities mit passenden Komponenten. Ein Baum kann einfach Position und Velocity bekommen, ohne neue Klasse.

Vorteil: DOD/ECS vermeidet unnötige Speicher-Sprünge und bleibt durch Komponenten flexibel. OOP ist dafür oft angenehmer, wenn einzelne Objekte komplexes, eigenes Verhalten besitzen.