Quando si scrive una libreria matematica, il sovraccarico dell'operatore verrà mantenuto in OOP?

3

Voglio creare una biblioteca matematica abbastanza complicata per un progetto personale e poi avere una visualizzazione / GUI per andare avanti con esso per dimostrare la matematica - niente di hardcore come la topologia ma solo mostrare il risultato e avere alcune piccole animazioni da dimostrare.

La libreria implicherà operazioni a matrice e mi piacerebbe che fosse completamente orientata agli oggetti. Stavo pensando di andare con C ++ o C # a causa della funzione di sovraccarico dell'operatore.

Sarà fantastico andare e basta:

C = A + B * (C + E);

anziché

C = A.add(B.multiply(C.add(E)));

Ecco come sarebbe in Java. Ci sono altre conseguenze sull'overloading dell'operatore oltre a possibili confusione?

Sembra che sarà una seccatura integrare una bella interfaccia grafica in una libreria C ++.

    
posta user1261710 12.07.2015 - 23:17
fonte

1 risposta

7

OO non riguarda la sintassi. Solo perché usi object.function () vs function (object), ciò non significa che ora stai "facendo OO".

OO significa inviare messaggi agli oggetti per informarli sugli eventi, senza sapere o preoccuparsi di come reagiranno a quegli eventi.

La matematica vettoriale non è di natura OO e sarebbe un errore provare a forzarla in un contesto OO.

In breve, l'overloading dell'operatore non "manterrà OO" ma mantenere OO non è un obiettivo degno quando si scrive una libreria matematica.

[Modifica] Prima che qualcuno chieda qualcosa come "che dire della classe vettoriale del C ++, non è OO?"

La classe vettoriale di No C ++ e le classi come questa non sono OO. Sono una forma di programmazione modulare. Semplicemente avvolgendo i tuoi dati in un pacchetto e dandogli un nome non è quello di cui parla OO.

    
risposta data 13.07.2015 - 02:01
fonte

Leggi altre domande sui tag