"面向对象程序设计相关课程课件,由谭浩强编著,清华大学出版社出版。内容涵盖程序设计方法,特别是面向对象的基本概念,包括对象与类、数据的抽象和封装、继承性以及多态性,并对比了结构化程序设计与面向对象程序设计的区别。"
面向对象编程(Object-Oriented Programming,OOP)是一种重要的程序设计范式,旨在通过类和对象的概念,提供更高效、灵活的代码组织方式。在OOP中,对象是现实世界概念的抽象,而类则是创建对象的模板或蓝图,定义了一组具有相同属性(数据成员)和行为(成员函数)的对象集合。
程序设计方法的发展从早期的结构化程序设计(Structured Programming,SP)逐渐过渡到面向对象。结构化程序设计强调功能的分解,通过模块化将问题逐步求精,但这种方法的可重用性较差。面向对象程序设计则不同,它将数据和操作数据的方法绑定在一起,形成了一个封装体,即对象。这样,数据和操作数据的过程被视为一个整体,增强了代码的封装性和内聚性。
在面向对象设计中,数据的抽象和封装是关键。数据抽象是指从现实世界的实体中提取出关键特征,形成计算机中的模型;封装则是隐藏对象的内部细节,只对外提供接口进行交互,增强了代码的安全性和模块独立性。继承性允许类之间建立一种层次关系,子类可以继承父类的特性并进行扩展,减少了代码重复。多态性则使得不同的对象可以对同一消息作出响应,提高了代码的灵活性和可复用性。
对比结构化程序设计,面向对象设计更加注重对象而非过程。在结构化程序设计中,程序由一系列处理数据的函数构成,数据结构和算法是分离的。而在面向对象设计中,对象集成了数据和算法,数据结构和处理过程被封装在一起,形成一个有机的整体。
例如,在统计一组整数中正数和负数个数的任务中,结构化程序设计会将问题分解为读入数据、统计个数和输出结果三个模块,每个模块可能包含多个子过程。而面向对象设计可能会创建一个“整数统计器”类,该类包含一个存储整数的列表,以及计算正负数个数和显示结果的方法,对象自身就包含了数据和处理过程。
面向对象设计提供了更高级别的抽象,更适合于大型复杂软件的开发,提高了代码的可维护性和可重用性。结构化程序设计虽然在处理简单问题时效果良好,但在面对大型系统时显得力不从心。这两种方法各有优缺点,理解并合理运用它们,可以帮助开发者更有效地设计和实现软件系统。