オブジェクト指向プログラミングを使用することにより、関連する関数を持つオブジェクトが得られます。これらのオブジェクトは、そのプロパティ(内部変数)を変更する唯一の方法です(すべきです)。
と呼ばれる関数を持つのが一般的でしたがtrim_string(string)
、string
クラスを使用すると実行できstring.trim()
ました。この違いは、主に、個々のコンポーネント間の結合を最小限に抑えるためにできる限りのことを行う必要がある、大きく複雑なモジュールを実行する場合に顕著になります。
継承のようにOOPを含む他の概念もありますが、知っておくべき本当に重要なことは、OOPは、操作(関数)の観点から考えるのではなく、操作とメッセージパッシング(メソッド/動詞)を持つオブジェクトについて考えさせることです。/動詞)と基本要素(変数)
オブジェクト指向パラダイムの重要性は、言語メカニズムにおいては、思考および設計プロセスほど重要ではありません。
この質問も見てください。
構造化プログラミングには本質的に何も問題はありません。いくつかの問題がオブジェクト指向設計によりよくマッピングされているだけです。
たとえば、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!!!"
OOPを使用している間は、次のようになります。
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
追加し、モジュール内のすべての関数にタッチする必要があります。OOPでは、クラスを検討できます。残りの部分から独立しているように。グローバルな変更がある場合は変更しAnimal
、狭い変更の場合はクラス定義を確認するだけです。
単純でシーケンシャルな、場合によっては使い捨てのコードの場合、構造化プログラミングを使用しても問題ありません。