L'applicativo è interamente realizzato in Java, un linguaggio fortemente orientato agli oggetti, di conseguenza per realizzare un sistema con un codice leggibile, modulare e resistente ai guasti sarà determinante conoscere e saper applicare i principi fondamentali della OOP.
A seguire trascriviamo dei cenni teorici riguardanti le principali proprietà della programmazione orientata agli oggetti, per poi andare ad illustrare come sono state applicate tali nozioni all'interno del nostro lavoro
L'incapsulamento consiste in un insieme di meccanismi che permettono di organizzare metodi e attributi all'interno di una stessa unità (una classe è un esempio di incapsulamento).
L'ereditarietà consiste nella possibilità per una classe di divenire sottoclasse (o classe figlia) di una superclasse (o classe madre) in modo da ereditarne metodi e attributi.
Il polimorfismo consiste nella possibilità di definire metodi aventi lo stesso nome, ma comportamenti diversi sulla base dei parametri passati; alla base di tale principio troviamo l'overriding e l'overloading.
L'Information Hiding fa riferimento alla pratica di occultare metodi e attributi ad entità esterne alla classe, permettendone la modifica solo attraverso specifici metodi pubblici (quali ad esempio getter e setter).
Un esempio di applicazione del principio di incapsulamento può essere il raggruppamento delle directory (dei percorsi dei file) necessarie ai diversi elementi grafici; ciò ci ha permesso di lavorare agevolmente nell'albero delle directory del progetto e in caso di modifiche nella sua struttura di poter sistemare il codice rapidamente modificando solamente questo punto.
La maggior parte degli elementi grafici della lobby (la schermata d'attesa visualizzata prima della partita), se non tutti, sono veri e propri oggetti ognuno descritto da una propria classe.
L'ereditarietà entra in gioco nel momento in cui tali classi che gestiscono gli oggetti Swing alla base della grafica riportano degli attributi comuni, come una posizione orizzontale, una posizione verticale, una larghezza, una lunghezza ed una serie di metodi analoghi per cui definire una classe madre per le varie classi inerenti alla lobby, ci permette di rendere il codice più compresso e riutilizzabile, oltre che a facilitare l'aggiunta di eventuali nuovi elementi grafici.
Un esempio invece di polimorfismo ci viene fornito dalla definizione di due costruttori per la classe Brawler, i quali ci consentono di istanziare dei brawler con degli attributi aventi valori specifici o inizializzati direttamente a 0 (il caso di oggetti Brawler "ausiliari" che quindi non rappresenteranno dei veri e propri personaggi giocabili).
In sostanza effettuiamo un overloading : nome uguale, ma comportamento diverso distinto dal numero di parametri passati al costruttore.
In conclusione, un esempio di Information Hiding è l'occultamento della variabile "conteggioAttacchi" ad entità esterne alla classe, la quale essendo di tipo byte necessiterà di un trattamento più regolato per evitare valori incoerenti o errati; ne controlliamo quindi l'utilizzo e gli effetti sullo stato dell'oggetto associato mediante appositi metodi pubblici getter e setter, contribuendo alla robustezza del codice.