通过使用面向对象编程,您将拥有对象,这些对象具有关联函数,这是(应该)修改其属性(内部变量)的唯一方法。在
通常有一个名为trim_string(string)的函数,而使用string类可以完成string.trim()。这种区别主要是在处理大型复杂模块时,您需要尽一切努力缩小单个组件之间的耦合。在
还有其他一些概念也包含在OOP中,比如继承,但真正重要的是,OOP是让您思考具有操作和消息传递(方法/动词)的对象,而不是考虑操作(函数/动词)和基本元素(变量)The importance of the object oriented paradigm is not as much in the language mechanism as it is in the thinking and design process.
结构化编程没有本质上的错误,只是一些问题更适合于面向对象的设计。
例如,在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时,你会:
^{pr2}$
你可以看到,对于SP,你添加的每一个动物,你都必须添加另一个if到talk,添加另一个变量来存储动物的名字,潜在地触及模块中的每个函数,而在OOP中,你可以认为你的类独立于其他的。当有全局更改时,您更改Animal,而当它是一个狭窄的更改时,您只需查看类定义。在
对于简单的、顺序的、可能是一次性的代码,使用结构化编程是可以的。在