La prima cosa che mi viene da dire sul design creato è che Driver non dovrebbe assolutamente estendere Monoposto !
Le classi di solito cercano di riflettere il più possibile il contesto di riferimento, oltre all'ovvio fatto che un pilota non è una macchina, non ottieni alcun beneficio da questo tipo di ereditarietà, Driver eredita dei metodi (come setMaxSpeed e turnOn) di cui non se ne fa assolutamente nulla.
In quanto alla variabile points, se nel tuo contesto rappresenta "l'avanzamento nella gara", allora dovrebbe essere una variabile di Monoposto, se invece fossero ad esempio i punti nel mondiale, meglio assegnare la variabile a Driver.
Cerca quindi di distinguere i compiti delle varie classi innanzitutto.
Riguardo al resto del codice, che io sappia è abbastanza inusuale richiamare nel costruttore i metodi set per assegnare i valori, di solito l'assegnazione avviene direttamente.
Per quanto riguarda la gara infine, ci sono diverse cose poco sensate.
Innanzitutto non hai bisogno di creare due oggetti Random diversi, uno è sufficiente.
E poi l'estrazione dei numeri casuali avviene un'unica volta, all'inizio del main, in questo modo avrai valori uguali per tutte le macchine, non mi pare molto sensato...
Ultima cosa: con l'istruzione all'interno dello switch, prendi il valore massimo tra i punti assegnati alle macchine (che sono casuali), non l'indice del vettore a cui è assegnato il valore massimo dei punti, quindi all'interno entrerai praticamente sempre nel "default"...