i Principi OO che menzioni nel primo elenco sono linee guida per la progettazione del programma. (ce ne sono altri oltre a quelli: SOLID per esempio.)
I principi OO sono una raccolta di idee e parte della mentalità di OO; la comprensione dei principi OO come l'astrazione, l'incapsulamento e la modularità ti aiuterà a prendere buone decisioni progettuali di fronte al compito di creare nuove classi nel codice.
Alcune di queste decisioni potrebbero includere
- Quale nome scelgo per una classe o un metodo?
- A quale classe appartiene un metodo o campo / proprietà?
- Devo aggiungere questa linea di codice a un metodo o crearne uno nuovo?
- Una classe dovrebbe essere divisa in più classi separate?
- Le due classi dovrebbero essere unite insieme?
- Quali altre classi dovrebbero avere accesso all'interfaccia di una classe?
D'altra parte, Polymorphism e Ereditarietà non sono principi ma strumenti linguistici; proprio come for
e while
sono strumenti di linguaggio.
Anche se sono spesso citati come le caratteristiche linguistiche che definiscono la programmazione OO, questa linea di pensiero è in qualche modo fuorviata perché può essere usata in modi che si scontrano con molti principi OO. Un sacco di codice OO eccezionalmente buono è stato scritto senza utilizzare l'ereditarietà o il polimorfismo.
Ci sono occasioni in cui l'ereditarietà e il polimorfismo sono strumenti utili, proprio come ci sono occasioni in cui do..while
o switch
sono strumenti utili; e dovresti certamente capire cosa sono e come / quando usarli.
Tuttavia è un errore considerare o l'ereditarietà o il polimorfismo come principi OO, o che siano "obiettivi" su cui lavorare. La realtà è che possono e sono spesso oggetto di abusi, con conseguente codice errato (di solito da parte dei programmatori che ritengono che qualsiasi utilizzo dell'eredità sia una buona cosa o che trattano l'ereditarietà come strumento di riutilizzo del codice).