Scusa?
E come fai il polimorfismo in procedurale dove NON hai l'ereditarietà?
Per inciso, è ovvio che mi riferivo al polimorfismo della OOP, non saltare fuori con cose tipo "espressioni polimorfiche"...
Riguardo il secondo punto, in programmazione OO non devo preoccuparmi del codice dell'oggetto ma solo del suo funzionamento. Se l'oggetto funziona, estenderne il funzionamento (con sottoclassi o aggiungendo un altro componente che dialoghi con l'oggetto) non è affato complicato. Mi basta sapere le sue interfacce e poco altro.
Per il terzo punto...vedi sopra. L'unica cosa che altri componenti del team in OOP devono sapere, e quindi va concordato prima, sono le interfacce. Sapendo le interfacce, agganciare un mio pezzo con uno tuo è non dico banale ma decisamente più semplice rispetto a un approcio procedurale.