Utilizzando la programmazione orientata agli oggetti, si avranno oggetti, che hanno funzioni associate, che sono (dovrebbero) essere l'unico modo per modificare le sue proprietà (variabili interne).
Era comune avere funzioni chiamate trim_string(string)
, mentre con una classe string
è possibile eseguire string.trim()
. La differenza è evidente soprattutto quando si eseguono grandi moduli complessi, in cui è necessario fare tutto il possibile per minimizzare l'accoppiamento tra i singoli componenti.
Ci sono altri concetti che comprendono OOP, come l'ereditarietà, ma la vera cosa importante da sapere, è che OOP è di fare si pensa a oggetti che hanno operazioni e un messaggio di passaggio (metodi/verbi), invece di pensare in termini di operazioni (funzioni/verbi) e gli elementi di base (variabili)
The importance dell'oggetto orientato paradigma non è tanto nel meccanismo lingua è nel processo di pensiero e progettazione.
Anche dare un'occhiata a this question.
Non c'è niente di intrinsecamente sbagliato su Programming strutturata, è solo che alcuni problemi mappa di meglio da un design Object Oriented.
Per esempio si potrebbe avere in un linguaggio SP:
#Pseudocode!!!
function talk(dog):
if dog is aDog:
print "bark!"
raise "IS NOT A SUPPORTED ANIMAL!!!"
>>var dog as aDog
>>talk(dog)
"bark!"
>>var cat as aCat
>>talk(cat)
EXCEPTION: IS NOT A SUPPORTED ANIMAL!!!
# Lets add the cat
function talk(animal):
if animal is aDog:
print "bark!"
if animal is aCat:
print "miau!"
raise "IS NOT A SUPPORTED ANIMAL!!!"
Durante una programmazione orientata agli oggetti che avrebbe dovuto:
class Animal:
def __init__(self, name="skippy"):
self.name = name
def talk(self):
raise "MUTE ANIMAL"
class Dog(Animal):
def talk(self):
print "bark!"
class Cat(Animal):
def talk(self):
print "miau!"
>>dog = new Dog()
>>dog.talk()
"bark!"
>>cat = new Cat()
>>cat.talk()
"miau!"
si può vedere che con SP, ogni animale che si aggiunge , dovresti aggiungere un altro if
a talk
, aggiungere un'altra variabile per memorizzare il nome dell'animale, toccare potenzialmente ogni funzione nel modulo, mentre su OOP, puoi considerare la tua classe come indipendente dal resto. Quando c'è un cambiamento globale, cambi il Animal
, quando si tratta di una modifica ristretta, devi solo guardare la definizione della classe.
Per codice semplice, sequenziale e possibilmente usa e getta, è possibile utilizzare la programmazione strutturata.
quelle sono alcune eccezioni molto arrabbiato –
L'utente deve essere punito per fare qualcosa di sbagliato. L'interfaccia dovrebbe * ferire * l'utente. E la sicurezza è ** più importante ** dell'usabilità. In un mondo perfetto, nessuno sarebbe in grado di usare qualsiasi cosa. http://www.usalyze.com/wp-content/dilbert-200209233.gif http://www.usernomics.com/images/dilbert.gif (non ha trovato tutti i riferimenti) – voyager
@voyager che ho mai visto la sintassi 'var = new Class()', almeno non in Python. Vorrei usare 'var = Class()'. Mi sto perdendo qualcosa? –