Per il mio progetto semestrale, il mio team e io dovremmo creare un file .jar (libreria, non eseguibile) che contenga un framework di sviluppo del gioco e mostri i concetti di OOP. Dovrebbe essere un FRAMEWORK e un altro team dovrebbe usare il nostro framework e viceversa. Quindi voglio sapere come dovremmo iniziare. Abbiamo pensato a diversi approcci:
1. Iniziare con una classe normaleClasse base o classe astratta?
public class Enemy {
public Enemy(int x, int y, int health, int attack, ...) {
...
}
...
}
public class UserDefinedClass extends Enemy {
...
}
2. Iniziare con una classe astratta che i nemici definiti dall'utente devono ereditare membri astratti
public abstract class Enemy {
public Enemy(int x, int y, int health, int attack, ...) {
...
}
public abstract void draw();
public abstract void destroy();
...
}
public class UserDefinedClass extends Enemy {
...
public void draw() {
...
}
public void destroy() {
...
}
}
3. Creare un super ABC (Abstract Base Class) che TUTTI ereditano da
public abstract class VectorEntity {
...
}
public abstract class Enemy extends VectorEntity {
...
}
public class Player extends VectorEntity {
...
}
public class UserDefinedClass extends Enemy {
...
}
Quale dovrei usare? O c'è un modo migliore?
C'è anche "Java efficace", che è più applicabile in questo caso. Dice qualcosa di simile, ma con cose più specifiche di Java, come il fatto che 'equals()' non funzioni correttamente quando si mescolano tipi derivati e tipi base se le classi base non sono tutte astratte. –