L'indicatore di associazione non è una freccia, è una relazione binaria contrassegnata su un lato (in modo da poter distinguere la coda del cane da quella di coda-cane). E la freccia dell'eredità sembra che si stia "muovendo" in una direzione particolare, ma non vi è alcun motivo particolare per cui qualsiasi cosa verrebbe spostata dalla superclasse alla sottoclasse o dalla sottoclasse della superclasse. Di nuovo, è solo un modo per marcare la relazione asimmetrica, che è necessaria perché la differenza tra "A is-a B" e "B is-a A" è importante.
Più in generale, queste notazioni sono in gran parte arbitrarie nello stesso modo in cui scrivere "A" per un suono vocale particolare e "B" per una particolare consonante è arbitrario: nessuno di questi segni ha alcuno speciale affinità per la cosa che denotano, e potremmo anche aver scelto simboli diversi. La cosa importante è che ora tutti sono d'accordo come scrivere i suoni.
Allo stesso modo, in OOP siamo ora ampiamente d'accordo su come disegnare un diagramma di classe, e questo ci permette di comunicare in modo più efficiente, anche quando i dispositivi che usiamo per la notazione non sono particolarmente convincenti. Chiedendosi perché un tipo di freccia rappresenta una cosa e un altro tipo per un'altra cosa non può che insegnarti la storia di UML, non in realtà sullo sviluppo del software, quindi è quasi sbagliato.