Vantaggi e svantaggi della programmazione orientata agli oggetti
Linguaggi di programmazione orientati agli oggetti come C++, Java e Visual Basic sono stati sviluppati da scienziati informatici per velocizzare la programmazione e migliorare la qualità del software. Le tecniche del software OOP suddividono i programmi in blocchi funzionali chiamati oggetti, rendendo più facili da usare e condividere tra i programmatori le funzionalità necessarie di frequente come i pulsanti di controllo, la gestione del database e la matematica. Tuttavia, i vantaggi derivano da compromessi come una maggiore complessità del software e prestazioni ridotte.
Migliore produttività
Le tecniche OOP impongono regole a un programmatore che, a lungo termine, la aiutano a svolgere più lavoro; i programmi finiti funzionano meglio, hanno più funzioni e sono più facili da leggere e mantenere. I programmi che non utilizzano OOP tendono ad essere grandi lastre di testo continue come capitoli molto lunghi in un libro. Quando i programmatori intervengono per cambiarlo, il testo alla fine diventa disorganizzato e più difficile da seguire. Al contrario, i programmatori OOP prendono oggetti software nuovi ed esistenti e li "cucino" insieme per creare nuovi programmi. Poiché le librerie di oggetti contengono molte funzioni utili, gli sviluppatori di software non devono reinventare la ruota così spesso; dedica più tempo alla realizzazione del nuovo programma.
Minori costi di programmazione
Soprattutto per i progetti più grandi, OOP aiuta a ridurre il costo del lavoro di programmazione. Il personale che lavora a un progetto può sviluppare la propria libreria di oggetti software, consentendo ai programmatori di utilizzare facilmente il lavoro degli altri e riducendo le ore necessarie per sviluppare i programmi. Grazie al miglioramento della qualità del software, gli sviluppatori dedicano meno tempo alla correzione dei programmi malfunzionanti, riducendo ulteriormente i costi di manodopera.
Curva di apprendimento più ripida
Per padroneggiare l'OOP un principiante deve imparare nuovi concetti astratti come polimorfismo -- riutilizzo degli oggetti aggiungendo loro nuove funzionalità -- e incapsulamento -- nascondere parti dei dati interni di un oggetto per migliorare la sicurezza -- nessuna delle quali idee si trova nei vecchi stili di programmazione. Questi concetti non solo richiedono tempo per essere appresi, ma potrebbero essere troppo complessi per aspiranti programmatori più giovani o per coloro che programmano solo occasionalmente.
Software più lento
Il software orientato agli oggetti può comportare codice di pulizia aggiuntivo non necessario in altri linguaggi di computer; il computer deve eseguire la programmazione aggiuntiva, rallentando il tempo di risposta di un'applicazione. Per i progetti in cui la velocità è importante, i programmatori possono scegliere di scrivere le parti più critiche in termini di tempo in linguaggi non OOP come assembler o C, riservando il codice OOP per finestre o pulsanti, aree in cui gli oggetti hanno un chiaro vantaggio.