九、面向对象方法学引论
面向对象方法学的出发点和原则是尽可能模拟人类思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,使描述空间的问题域与求解域在结构上保持一致。
面向对象方法的四个要点:
- 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。
- 把所有对象都划分为类,每个对象都定义了一组数据和一组方法
- 按照子类与父类的关系,把若干个对象组成一个层次结构的系统
- 对象仅能通过传递消息互相联系
综上所述,面向对象方法学可由以下公式概括:
OO=objects+classes+inheritance+communication with messages
也就是说,面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。
优点:
-
与人类思维方法一致
-
稳定性好
-
可重用性好
-
较易开发大型软件产品
-
可维护性好
为啥可维护性好?
- 面向对象软件的稳定性好
- 面向对象的软件容易修改
- 面向对象的软件容易理解
- 易于测试和调试
面向对象的概念
对象
面向对象方法学中的对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。对象可以作的操作表示它的动态行为。
特点:
- 以数据为中心
- 对象是主动的
- 实现了数据封装
- 本质上具有并行性
- 模块独立性好
类
类是对具有相同属性和行为的一个或多个对象的描述。
实例
实例就是由某个指定类型所描述的一个具体对象。
消息
消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明,一般由下述三部分组成
- 接受消息的对象
- 消息选择符(消息名称)
- 零个或多个变原
方法
方法就是对象所能执行的操作,也就是类中所定义的服务。
属性
属性就是类中所定义的属性,它是对客观世界实体所具有的性质的抽象。
封装
封装是把数据和实现操作的代码集中起来放在对象内部。封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。
特点:
a.有一个清晰的边界
有一个清晰的边界。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接访问。
b.有确定的接口(即协议)
这些接口就是对象可以接受的消息,只能通过向对象发送消息来使用它。
c.受保护的内部实现
实现对象功能的细节(私有数据和代码)不能在定义该对象的类的范围外访问。
继承
在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。
特点:
a. 继承具有传递性;
b. 低层的性质将屏蔽高层的同名性质。
多态
多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。即在类等级的不同层次中可以共享一个方法的名字,不同层次中的每个类各自按自己的需要来实现这个行为。
重载
这里有两种重载。
a. 函数重载
在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。
b. 运算符重载
同一个运算符可以施加于不同类型的操作数上面。
当参数特征不同或被操作数的类型不同时,实现函数的算法或运算符的语义是不相同的。
重载提高了面向对象系统的灵活性和可读性。