Sono abbastanza nuovo nella programmazione orientata agli oggetti e ho una domanda su cui mi sono imbattuto riguardo alle migliori pratiche di ereditarietà.
Sto costruendo un sistema per le armi in un gioco. Ho una classe base chiamata Weapon
e due sottoclassi - Melee
e Projectile
(come coltelli e pistole) - che ereditano da Weapon
.
Tutte le armi hanno statistiche (come Attack Point) e parti (come Grip, Magazine e Blade). Le pistole e i coltelli della cabina hanno attacco e impugnatura. Ma solo le pistole hanno riviste e solo i coltelli hanno lama.
La mia domanda qui è come pensare quando si eredita da Weapon
:
-
Tematicamente un'arma consiste di parti quindi sarebbe logico avere le classi
Melee
eProjectile
come responsabili di tutte le parti di cui è composta l'arma, quindiMelee
ha un grip e una lama eProjectile
ha una presa e una rivista. Ma poi vorrei duplicare il campo Grip. -
Poiché entrambi i tipi di arma hanno Grip, Grip dovrebbe essere una parte della classe base
Weapon
? Sembra strano estrapolare Grip e metterlo da solo in un'altra classe. -
Weapon
contiene tutte le parti, anche se le sottoclassi non le usano tutte? Ma sembra che aumenterò la classeWeapon
.
Esiste una sorta di best practice? Grazie!