Используя объектно-ориентированное программирование, у вас будут объекты со связанными функциями, которые (должны) быть единственным способом изменить его свойства (внутренние переменные).
Обычно были функции с именем trim_string(string)
, в то время как с классом string
вы могли делать string.trim()
. Разница заметна в основном при выполнении больших сложных модулей, где вам нужно сделать все возможное, чтобы минимизировать связь между отдельными компонентами.
Существуют и другие концепции, которые охватывают ООП, такие как наследование, но очень важно знать, что ООП заставляет вас думать о объектах , которые имеют операции и передачу сообщений (методы / глаголы) вместо мышления в терминах операций (функций / глаголов) и основных элементов (переменных)
Важность объектно-ориентированной парадигмы не столько в языковом механизме, сколько в процессе мышления и проектирования.
Также взгляните на этот вопрос .
В структурном программировании нет ничего по сути неправильного , просто некоторые проблемы лучше отображаются в объектно-ориентированном дизайне.
Например, вы можете иметь на языке 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!!!"
На ООП у вас будет:
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!"
Вы можете видеть, что с SP, к каждому животному, которое вы добавляете, вам нужно добавить еще if
к talk
, добавить еще одну переменную для хранения имени животного, коснуться потенциально каждой функции в модуле, находясь на ООП, вы можете считать свой класс независимым от остальных. Когда происходит глобальное изменение, вы меняете Animal
, когда это узкое изменение, вам просто нужно взглянуть на определение класса.
Для простого, последовательного и, возможно, одноразового кода можно использовать структурированное программирование.