Vediamo se un parallelo aiuta a dissipare i dubbi.
Considera un veicolo generale: hai un volante e tre pedali con cui azionarlo. Ora che tu stia guidando un'auto, un camion o un trattore, devi sempre girare un volante e schiacciare tre pedali per controllarlo.
Pertanto le tue azioni si rivolgono a un'interfaccia astratta (volante più pedali) che controlla un mezzo concreto, di cui, in linea teorica, a te non interessa nulla di come sia il meccanismo concreto di controllo.
Ad esempio un'auto può implementare un volante basato su idroguida, un trattore invece avrà una cremagliera, ma per sterzare devi sempre girare un volante.
Allo stesso modo in oop un'interfaccia astratta può avere diverse implementazioni in base a una specializzazione concreta, ma che il programma non ha bisogno di sapere perché si limiterà a richiamare i metodi dell'interfaccia.
Ad esempio se la tua interfaccia implementa i metodi sterza_a_destra e sterza_a_sinistra il programma sa che invocando tali metodi andrà a destra o sinistra, ma non ha bisogno di sapere se ciò che permette al volante di sterzare è una idroguida o una cremagliera.

Rispondi quotando