第1章面向对象程序设计基础 ■1.1面向过程程序设计 用户 用户 程序员开发层面 各类应用软件 编译系统 编译系统 开发软件/平台 开发软件/平台 操作系统 操作系统 十算机硬件系统 计算机硬件系统 图12程序员开发层面 图1.1计算机硬件系统、软件 系统和用户
第1章 面向对象程序设计基础 ◼ 1.1 面向过程程序设计 计算机硬件系统 各类应用软件 编译系统 开发软件/平台 操作系统 … … 用户 图1.1 计算机硬件系统、软件 系统和用户 计算机硬件系统 程序员开发层面 编译系统 开发软件/平台 操作系统 … … 用户 图1.2 程序员开发层面
12面向过程程序设计的局限(1) 在面向过程程序设计中,被操作的数据仍然是嵌入在编程语 句中的,并且与程序逻辑混合在一起,计算机的信息世界与 现实世界之间的映射关系仍然不直接,不明确。反之,如果 程序员面对的开发层面在逻辑上与现实世界相似相近,那么 不仅开发过程将更简捷,而且软件的质量也一定更好 用面向过程的方法开发较大的软件系统,数据缺乏保护,表 面上看,程序可以访问几乎所有的数据,似乎很方便,其实 不然。理想的状态是,数据被封装起来,外界要访问数据, 就应该调用相应的函数,函数将所需要的数据按指定的格式 包装好,传给外界;否则数据无法被访问
1.2 面向过程程序设计的局限(1) 在面向过程程序设计中,被操作的数据仍然是嵌入在编程语 句中的,并且与程序逻辑混合在一起,计算机的信息世界与 现实世界之间的映射关系仍然不直接,不明确。反之,如果 程序员面对的开发层面在逻辑上与现实世界相似相近,那么 不仅开发过程将更简捷,而且软件的质量也一定更好。 用面向过程的方法开发较大的软件系统,数据缺乏保护,表 面上看,程序可以访问几乎所有的数据,似乎很方便,其实 不然。理想的状态是,数据被封装起来,外界要访问数据, 就应该调用相应的函数,函数将所需要的数据按指定的格式 包装好,传给外界;否则数据无法被访问
12面向过程程序设计的局限(2) 盐沿集,,2 使用面向过程的方法,在同一个应用程序中可以共享某些程 序段,但是从总体上看,程序代码是按程序员指定的顺序执 行的,程序段(例如,函数)通常是在特定的上下文条件下 才正常运行的。如果要在一个应用程序中重用另一个应用程 序的代码段,那几乎是不可能的。也就是说,面向过程的程 序设计语言本身没有这样的机制支持代码重用。 使用面向过程程序设计方法建立的应用程序是很难修 改的,虽然结构化程序设计方法使得应用程序结构很清晰, 但是程序模块之间紧密耦合,彼此依赖,一个模块的输出可 能是另一个或几个模块的输入;许多表面独立的模块实际是 依赖某些全局变量传递状态,共同工作的。修改一处的代码 可能造成其他代码不能正常工作。这种情形导致系统维护代 价高昂,系统缺乏灵活性
1.2 面向过程程序设计的局限(2) 使用面向过程的方法,在同一个应用程序中可以共享某些程 序段,但是从总体上看,程序代码是按程序员指定的顺序执 行的,程序段(例如,函数)通常是在特定的上下文条件下 才正常运行的。如果要在一个应用程序中重用另一个应用程 序的代码段,那几乎是不可能的。也就是说,面向过程的程 序设计语言本身没有这样的机制支持代码重用。 使用面向过程程序设计方法建立的应用程序是很难修 改的,虽然结构化程序设计方法使得应用程序结构很清晰, 但是程序模块之间紧密耦合,彼此依赖,一个模块的输出可 能是另一个或几个模块的输入;许多表面独立的模块实际是 依赖某些全局变量传递状态,共同工作的。修改一处的代码 可能造成其他代码不能正常工作。这种情形导致系统维护代 价高昂,系统缺乏灵活性
1.3面向对象程序设计的概念 1.3.1类和对象 1.3.1.1对象 对象标识——即对象名,是一个对象区别于其他对象标识符 对象状态——即对象的属性,是描述对象各种特征的信息,是 对象的静态特征 对象行为——即对象能够提供的服务,对象的行为也可以理解 为与对象属性相关的所有合法的操作,是对象的动态特征
1.3 面向对象程序设计的概念 1.3.1.1 对象 对象标识——即对象名,是一个对象区别于其他对象标识符。 对象状态——即对象的属性,是描述对象各种特征的信息,是 对象的静态特征。 对象行为——即对象能够提供的服务,对象的行为也可以理解 为与对象属性相关的所有合法的操作,是对象的动态特征。 ◼ 1.3.1 类和对象
1.3.12.类 哺乳纲动物 偶蹄目动物 奇蹄目动物 匹黑马 匹白马 图13一匹白马和马的分类 类是抽象数据类型,类有名称,此外,类主要有三种成分: 完整描述事物特征的数据的类型声明,这是对对象的静态特征 的抽象描述; 能够访问并处理数据的所有操作,这是对象的动态特征的描述; 访问权限,对类、以及类中定义的数据、方法访问的限制
1.3.1.2. 类 哺乳纲动物 奇蹄目动物 马 一匹白马 图1.3 一匹白马和马的分类 偶蹄目动物 骡 一匹黑马 … … … … … … … … … … 类是抽象数据类型,类有名称,此外,类主要有三种成分: 完整描述事物特征的数据的类型声明,这是对对象的静态特征 的抽象描述; 能够访问并处理数据的所有操作,这是对象的动态特征的描述; 访问权限,对类、以及类中定义的数据、方法访问的限制
1.32抽象与封装 1.321抽象 抽象是分析问题域和设计类的时候的工作。严格的抽象,应该将类 简化到只使用最基本的元素来表现该类的对象的本质,例如,假设 我们要设计两个类:军马和运输马,我们应该将军马和运输马的所 有共性的部分提取出来,形成一个新的类,称为马,而军马类和运 输马类中都只剩下能互相区别各自对象的基本元素。所以,抽象往 往表现为从相关或相似的类中提取共同的元素的过程。 1.322封装 封装是把表示对象静态特征的数据和表现对象动态特征的方法组织 在一起,并且规定数据和方法的访问权限。不难发现,封装的过程 实际上是隐含在设计类的过程中完成的,这个功能是面向对象程序 设计语言环境所提供的
1.3.2 抽象与封装 1.3.2.1 抽象 抽象是分析问题域和设计类的时候的工作。严格的抽象,应该将类 简化到只使用最基本的元素来表现该类的对象的本质,例如,假设 我们要设计两个类:军马和运输马,我们应该将军马和运输马的所 有共性的部分提取出来,形成一个新的类,称为马,而军马类和运 输马类中都只剩下能互相区别各自对象的基本元素。所以,抽象往 往表现为从相关或相似的类中提取共同的元素的过程。 1.3.2.2 封装 封装是把表示对象静态特征的数据和表现对象动态特征的方法组织 在一起,并且规定数据和方法的访问权限。不难发现,封装的过程 实际上是隐含在设计类的过程中完成的,这个功能是面向对象程序 设计语言环境所提供的
1.33类与类的关系 1.3.3.1继承 根据一个(或多个)已存在的类产生一个新的类的过程叫做继承, 即新类继承了原有的类,或者说原有的类派生出了新类,原有的类 称为基类或父类,新产生的类叫做派生类或子类 1.3.32单继承与多继承 1.3.3.3接口 1.3.34聚合 1.3.3.5嵌套
1.3.3 类与类的关系 ◼ 1.3.3.1 继承 根据一个(或多个)已存在的类产生一个新的类的过程叫做继承, 即新类继承了原有的类,或者说原有的类派生出了新类,原有的类 称为基类或父类,新产生的类叫做派生类或子类。 ◼ 1.3.3.2 单继承与多继承 ◼ 1.3.3.3 接口 ◼ 1.3.3.4 聚合 ◼ 1.3.3.5 嵌套
1.34多态 ,,2 多态是指同一事物在不同的场合具有不同作用的现象。 从多态发生的时机上区分,可以分为编译时的多态和运行时的多态 两种。 ■1.3.4.1重载 1.3.4.2隐藏和重写 1.34.3编译时的多态 1.3.4.4运行时的多态
1.3.4 多态 多态是指同一事物在不同的场合具有不同作用的现象。 从多态发生的时机上区分,可以分为编译时的多态和运行时的多态 两种。 ◼ 1.3.4.1 重载 ◼ 1.3.4.2 隐藏和重写 ◼ 1.3.4.3 编译时的多态 ◼ 1.3.4.4 运行时的多态
1.3.5关联、消息与委托 消息机制反映了调动对象的动态关系,是程序运行的内在机理,所 以有人总结,在面向对象程序中:对象十消息=程序 ■1.3.5.1关联 1.3.52消息机制 ■1.3.53委托 委托的机制就是解决如何在运行中动态地决定消息的接收者,消息 可以在对象间传递,这样,请求也就从一个对象传递到另一个对象 直到找到能完成这项工作的对象。委托机制常用于事件处理、异常 处理等需要动态寻找接收者的场合
1.3.5 关联、消息与委托 消息机制反映了调动对象的动态关系,是程序运行的内在机理,所 以有人总结,在面向对象程序中:对象 + 消息 = 程序。 ◼ 1.3.5.1 关联 ◼ 1.3.5.2 消息机制 ◼ 1.3.5.3 委托 委托的机制就是解决如何在运行中动态地决定消息的接收者,消息 可以在对象间传递,这样,请求也就从一个对象传递到另一个对象, 直到找到能完成这项工作的对象。委托机制常用于事件处理、异常 处理等需要动态寻找接收者的场合
1.4统一建模语言∪ML简介 14.1.1UML图 UML具有许多图形化的工具用来制作各种视图,UML图由图表组 成。UML图有9种,分别是: 类图,描述各种类及其关联, 对象图,描述各种对象及其关系 ●用例图,表示系统提供给外界的功能 ●组件图,表示各组件和组件之间的关系 ●实施图,表示从组件到系统的物理节点的映射 协作图,表示类以及类之间的消息的传递 ●顺序图,表示类之间的消息传递的顺序 ●状态图,表示在执行操作时,类的状态的变化
1.4 统一建模语言UML简介 1.4.1.1 UML图 UML具有许多图形化的工具用来制作各种视图,UML图由图表组 成。UML图有9种,分别是: ⚫ 类图, 描述各种类及其关联, ⚫ 对象图,描述各种对象及其关系 ⚫ 用例图,表示系统提供给外界的功能 ⚫ 组件图,表示各组件和组件之间的关系 ⚫ 实施图,表示从组件到系统的物理节点的映射 ⚫ 协作图,表示类以及类之间的消息的传递 ⚫ 顺序图,表示类之间的消息传递的顺序 ⚫ 状态图,表示在执行操作时,类的状态的变化