杂谈面向对象方法论

不可否认,“映射(或称变换)”是科学技术中一类极为重要的方法,计算的本质即映射,往再深处说,运动的本质也是映射--对某系统的状态进行时空变换。


图灵机作为一种经典的计算模型,揭示了机械计算的一种方法,对数据(构成图灵机模型的七元组中的输入及状态)进行运算然后输出,基于图灵机的计算机直到今天都遵循着这样的运作机理,计算机其实就是一台可对其指令进行编程的机器。


两大核心:数据与指令,对数据进行何种指令操作,这些二元组(数据,指令)的集合即程序,慢慢的从硬件的王国中分离了出来,人们对计算机的了解上升到“纸上谈兵”的时代,后来人们给其起了一个更大气的名字--软件,而且慢慢发展成为一个产业,这个时候应该是比尔盖茨们活跃的时代,正是这帮人最后用事实告诉大家:软件是可以卖钱的,而且甚至比硬件要贵很多。


东西一旦多了,管理学就用了用武之地。刚开始计算机或许只是用来写个简单的加法运算的,摆脱机器指令的汇编语言让人们写东西不那么辛苦了,后来对指令的扩展--函数出现了,再后来Basic出现了,人们欣喜若狂,有词法、有语法计算机语言终于像个样子了。放在一个文件中的代码量越来越大,麻烦就来了,OK,拆成多个文件,彼此能够引用,貌似解决了问题,这时候又发现了一些问题,这些问题最终导致了面向对象方法论的产生:


1)作用域的复杂性要求。

很多时候,人们希望某个函数的作用域是局限在某一个片段,在另一个片段还可以定义同名的函数,当然,变量也是同样;


2)单元之间的隔离性要求。

直接耦合带来的重构成本很高,解耦的办法就是引入一个中立单元(事实上,所有的解耦都是这么做的),这个中立单元应该只是一个契约而非实现;


还有一个很关键的,

3)填平分析与实现的差异鸿沟。

“逐步求精”的分析方法(从前存在,今后也一直存在)要求很多的事物是名词性的,但是函数,是动词性的。名词描述更强调一个事物“是什么”;


当然,还有一些其他的要求。这些问题让人们思考:时候出现一种架构在变量、函数之上的结构,这个结构应该满足:


1)独立的边界:某些函数或变量的作用域可以局限在内部,内部的内容可以有选择性的向外部开放;


2)引入抽象与泛化的定义,且可作出选择性的改变(从这个角度来讲,继承不可滥用);


3)名词性的;


到此为止,一种新的体系出现了,其中,封装、继承(抽象及泛化)、多态(允许变化)即后来人们所述面向对象的三大特征,名词性单元,是什么与能做什么融为一体,和人们所期望的对现实世界事物的表达方式如此一致,更适应人们逐步求精的分析方法,OK,面向对象终于诞生了。


从这一点来讲,面向对象的方法论其实是分析及编程本身双向作用的结果。综观现今关于面向对象的教科书或者入门材料,只从分析的视角来入手,很多时候不能给人切身的感受,希望以后大学里这方面的教材能够适当的增加从编程本身(比如,分析面向过程的局限性等)入手给予介绍。


其实,管理的本质是啥,我认为是四个字:分工、协作。面向对象的方法论其实不过是将管理学的思想引入了编程,让人们更方便管理自己的代码。而且,面向对象分析其实只有两点:


1)识别对象;


2)把它们连接起来;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值