第五章类与对象

合集下载

UML面向对象分析、建模与设计课件第五章 类图

UML面向对象分析、建模与设计课件第五章 类图
即可变、只增与冻结。
类——操作
操作是一个可以由类的对象请求以影响其行为的服务的实现,也即 是对一个对象所做的事情的抽象,并且由这个类的所有对象共享。
操作是类的行为特征或动态特征。 操作的语法格式为:
可见性OPT 操作名 ⌊(参数列表)⌋OPT ⌊:返回类型⌋OPT ⌊{特性}⌋OPT
操作名:操作的标识符。在描述操作时,操作名是必须的,其他部 分可选。
Student
+monitor 1
1..*
自关联
类图中的关系——关联关系
关联名称:放在关联路径的旁边,但远离关联端。 角色:放在靠近关联端的部分,表示该关联端连接的类在这一关联
关系中担任的角色。角色名上也可使用可见性修饰符号。 多重性:放在靠近关联端的部分,表示在关联关系中源端的一个对
象可以与目标类的多少个对象之间有关联。 导航性:一个布尔值,用来说明运行时刻是否可能穿越一个关联。 限定符:是二元关联上的属性组成的列表的插槽,其中的属性值用
/WorksForCompany
Department * +department 1 WorksForDepartment
* Person
类图中的关系——泛化关系
泛化关系定义为一个较普通的元素与一个较特殊的元素之间的类元 关系。其中描述一般的元素称为父,描述特殊的元素称为子。
通过泛化对应的继承机制使子类共享父类的属性和操作,小了模型 的规模,同时也防止了模型的更新所导致的定义不一致的意外。
法了,此时称之为N元关联。
类图中的关系——关联关系
class Logical View
ClassA
AssociationName
+rolename 0..*

5类对象

5类对象
32
Байду номын сангаас建类1

创建类的一般语法为:
[修饰符]class 类名 [extends父类名] [implements 接口名]//一般类名第一个字母大写 { 属性;
方法;
};

解释,p80表5-1
33
创建类 2 Java中定义类的通用格式:
class name { type variable1; … type variableN;
36
成员变量和局部变量

在类中定义的变量是成员变量: [修饰符]<类型> <变量名表〉//修饰符:p81表5-2 在函数中定义的变量是局部变量 成员变量和局部变量的比较:



定义形式基本相同 :数据类型
变量名表;

有效域不同:成员变量在类内有效,局部变量在函数内有效 若成员变量与局部变量同名,成员变量被隐藏,若想使用成员变量则用this,如:
第五章
java类和对象
1
目标
面向对象基本概念 类 对象 访问权限 类的继承
2

回顾
• •
Java 中的主要数据类型 运算符:算术运算符、位运算符、关系运算 符、逻辑运算符 Java 支持下列控制结构:
– – –

选择( if-else、switch) 循环(while、do-while、for) 跳转(break、continue)
12
对象的数据和功能

对象

表示现实世界中的实体。 定义了周边的、与要解决的问题有关的概念或事物。 对象有两种用途:



它们帮助理解现实世界 它们为计算机应用程序提供实用基础

uml课后习题答案

uml课后习题答案

uml课后习题答案第一章系统建模与分析设计的演变课后习题:1、A2、C3、D4、B5、软件按照其工作方式可划分为实时处理软件、分时处理软件、交互式软件和批处理软件。

6、软件生存周期由软件的定义、软件的开发和软件的使用维护和更新换代三部分组成。

7、软件开发模型有瀑布模型、增量模型、螺旋模型、智能模型和快速原型模型等五种主要模型8、面向对象技术采用以类为中心的封装、继承、多态等不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造。

9、UML的优点是:唯一性、连续性、维护性、复用性和完善性。

第二章统一建模语言UML1、A2、B3、C4、D5、B6、UML分析和设计模型由三类模型图表示,三类模型图是:用例模型图、静态模型图和动态模型图。

7、UML的软件统一开发过程,即生命周期按时间顺序可以划分为,开始,详细设计,系统构造和移交四个阶段及阶段中一系列的循环重复。

8、UML开发过程是一种二维结构软件开发过程,软件项目开发过程流程包括的核心工作内容是,分析,设计,实现,测试和配置9、UML中的五个不同的视图可以完整地描述出所建造的系统,这五种视图是用例视图、逻辑视图、构件视图、进程视图和配置视图。

10、UML中有10中基本图可以完整地描述出所有建造的系统,这10中视图是用例图、类图、对象图、包图、构件图、配置图、序列图、活动图、状态图和合作图。

第三章需求分析与用例建模习题:1、B2、A3、C4、D5、B6、A7、A8、UML软件开发过程需求分析阶段产生的模型由三类模型图表示。

他们是:用例模型图、静态模型图和动态模型图。

9、CRC卡中的描述由类名、类特征、类类型、责任和协作者共五部分组成10、软件项目的目的的可行性研究分析中,技术可行性研究包括风险分析、资源分析、技术分析三部分组成11、在UML软件开发过程的需求分析阶段,建立用例模型的步骤分为,确定系统的范围和边界,确定系统的执行者和用例,对用例进行描述,定义用例之间的关系和审核用例模型。

第五章 市场预测的种类和内容

第五章 市场预测的种类和内容
16
案例:石英技术誉满全球
一向以钟表王国著称的瑞士在机械表技术方面领先于世界, 成为世界钟表市场的主要生产国。60年代,一位瑞士工程师 向政府提出了开发石英技术,发展石英表的建议,结果被打 入冷宫。
而日本钟表业则对石英技术表现出浓厚的兴趣,并对全球 钟表市场进行了深入的调查,结果发现,机械表的发展已经 呈现下降的趋势,潜力有限。而石英表则以它成本低、全自 动、华丽和方便的特点,具有极大的发展空间,是挑战机械 表的核心技术。
市场预测的目的
日常生活中的 预测
最大限度地减少不确定性对预测对象的影
响,为科学决策提供依据。
2
市场调查——市场预测——管理决策
市场预测的种类和内容 定性市场预测法——判断分析方法 定量市场预测法——时间序列分析法
——因果分析法
3
市场预测的概念
营销策略:产品/组合、价格、分销渠道、促销方式等。 营销策略的制定取决于准确的预测。
4、长期预测
3/5年以上的预测——以年为时间单位;
主要为企业制定总体发展规划提供科学依据。
9
5.1.4 依据需求特性的分类
1、潜在市场
包括对某种商品感兴趣的人群;
市 场
最大的销售市场; 并非每个感兴趣的人都有能力和渠道购买该商品!

围 2、有效市场
由 大
感兴趣、有支付能力、有购买渠道的人群。
由已知某种商品市场类推另外一种商品市场。
3、相关原则
回归分析预测法
各种事物(市场经济变量)之间往往存在着相互联系和相互影响。
最重要的相关关系是因果关系。
4、近似性原则
人们对预测对象的过去和现在的情况不可能了解完全。

大学计算机基础第五章

大学计算机基础第五章

大学计算机基础第五章第五章软件技术基础1.程序设计语言(1)机器语言和汇编语言由计算机硬件系统可以识别的指令组成的语言称为机器语言。

汇编语言是将机器指令映射为一些可以被人读懂的助记符。

由于计算机只能识别机器语言,所以汇编语言通常需要通过汇编程序翻译为机器语言。

汇编语言的翻译软件称为汇编程序,它可以将程序员写的助记符直接转换为机器指令,然后由计算机去识别和执行。

用机器语言编写的程序是计算机可以直接执行的程序。

用机器语言编写的程序,代码长度短,执行效率高。

但是,这种语言的缺点也很明显。

最主要的是编写机器语言程序必须要熟知CPU 的指令代码,编写程序既不方便,又容易出错,调试查错也非常困难。

而且编写的程序只能在特定的机器上运行,没有通用性。

(2)高级语言高级语言源程序翻译为指令代码有两种做法:编译或者解释。

编译通过编译程序来完成。

解释则是通过解释程序完成。

解释的结果产生可以直接执行的指令。

编译的结果是得到目标程序。

目标程序也是要经过连接才会得到可执行程序目前应用比较广泛的几种高级语言由FORTRAN/BASIC/PASCAL/C等。

(3)面向对象的语言(4)未来的语言2、语言处理程序语言处理程序是把源程序翻译成机器语言的程序,可分为三种:汇编程序、编译程序和解释程序。

(1)汇编程序把汇编语言源程序翻译成机器语言程序的程序称为汇编程序,翻译的过程称为汇编。

汇编程序在翻译源程序时,总是对源程序从头到尾一个符号一个符号地进行阅读分析,一般用两遍扫描完成对源程序的加工转换工作。

汇编语言在翻译的同时,还对各种形式的错误进行检查和分析,并反馈给用户,以便修改。

反汇编程序也是一种语言处理程序,它的功能与汇编程序相反,它能把机器语言程序转换成汇编语言程序。

(2)编译程序编译程序是把高级语言源程序(如Fortran、Pascal、C 等)翻译成目标程序(机器语言程序)的一种程序,翻译的过程称为编译。

(3)解释程序解释程序也是一种对高级语言源程序进行翻译处理及的程序。

植物化学保护学:第五章 除草剂

植物化学保护学:第五章 除草剂

R1
NN
R2
R3
N
均三氮苯
R1:-Cl“津” R1:-SCH3“净” R1:-OCH3“通”
NN N
非均三氮苯
(二)主要品种
CI
CH3
NN
CHNH CH3
N
NHC2H5
莠去津
扑草净
西玛津
嗪草酮
西草净
(二)主要品种
品种
莠去津 西玛津
作用特点 应用作物
防除对象
选择性输导型 土壤处理剂
玉米、茶园、 果园等
2、乙草胺
作用特点:选择性芽前除草剂,用 于花生、大豆、玉米、油菜等防除 一年生禾本科杂草和部分阔叶杂草。
制剂:50%EC、20%WP。 使用方法:播(移栽)前、播后苗
前土壤喷雾处理。
3、其它品种
品种
应用作物
防除对象
甲草胺
大豆、玉米、花生等
一年生禾本科、部 分阔叶杂草
异丙甲草胺 大豆、玉米、花生等
某种除草剂的基因转移到某种 作物中,使该农作物持续地表 达对某种除草剂的耐药能力, 从而获得高度选择性。
耐除草剂转基因作物
除草剂
作物
草甘膦 草铵膦 磺酰脲类除草剂
大豆、棉花、油菜、甜菜 大豆、玉米、棉花、油菜、 甜菜、水稻 大豆、棉花
溴苯腈
棉花、烟草
咪唑啉酮类除草剂 玉米、水稻、小麦、木薯
第二节 除草剂的吸收与输导
2、播后苗前土壤处理
3、苗后土壤处理
二、茎叶处理法
➢ 1、播前茎叶处理 ➢ 2、生育期茎叶处理
第五节 除草剂常用类型及其品种
一、苯氧羧酸类 二、芳氧苯氧基丙酸酯类 三、二硝基苯胺类 四、三氮苯类 五、酰胺类 六、磺酰脲类除草剂 七、二苯醚类 八、氨基甲酸酯类 九、有机磷类 十、其它除草剂

第5章 面向对象的程序设计

第5章 面向对象的程序设计

5.2.6 修饰符2-1
包中类B 本类D 包中子 类E 所有子类C 所有类A
public protected
类、变量、方法 A B+C 变量、方法
default 类、变量、方法 B private D 变量、方法 private protected 变量、方法 C
14
5.2.6 修饰符2-2
用来说明类、方法或变量的类型。
5.5.1 接口的定义
说明:
[修饰符] interface 接口名称{
[public] [static] [final] 变量名=初值; // 静态常量 (1)通常接口的名字以able或ible结尾;
[public] [abstract] [native]返回值 方法名([参数 (2)可以使用 extends 来继承接口的常量和抽象方法,
12
5.2.5 构造方法
• • • • 构造函数名称与类名称相同 构造函数没有返回类型 其任务是在创建对象时初始化其内部状态 若无定义系统默认有一个无参构造方法
class Fruit { boolean seedLess; boolean seasonal; float price; Fruit(boolean seed, boolean season, float p) { seedLess = seed; seasonal = season; price = p; } } 13
所以类在实现时,必须显示的使用public修饰符,否
则被警告缩小了接口中定义的方法的访问控制范围。
27
实例:接口的定义和实现
class InterfaceTest interface A { { public static void main(String args[ ]) double g=9.8; { void show( ); B b=new B( ); b.show( ); } } class B implements A } { public void show( ) {System.out.println(“g=“+g);} }

java的类和对象 第5章(1)

java的类和对象  第5章(1)
29
例题----方法调用测试
public class CircumferenceTester
{ public static void main(String args[])
{ Circle c1 = new Circle(); c1.radius = 50; Circle c2 = new Circle(); c2.radius = 10; double circum1 = c1.circumference(); //调用 double circum2 = c2.circumference(); System.out.println("Circle 1 has circumference " + circum1); System.out.println("Circle 2 has circumference " + circum2);
类的声明(3)
修饰符 可以有多个,用来限定类的使用方式 abstract 指明此类为抽象类,其概念和使用方法将在第6章 介绍。 final 指明此类为终结类,不能用最终类生成子类。
类声明体 数组成员及方法成员 数组成员说明了类的静态属性,而方法成员一般是 对类的静态属性进行一些相应的操作。 初始化体 可以有多个,具体的在5.3节介绍。
21
5.1.2 方法成员的定义及重载
方法成员 定义类的行为 一个对象能够做的事情 我们能够从一个对象取得的信息 可以没有,也可以有多个;一旦在类中声明了方 法,它就成为了类声明的一部分 分为实例方法和类方法
5.1.2 方法成员的定义及重载
声明格式: [访问控制符] [修饰符] 方法返回值类型 方法名([参数表]) { 方法体; }
类的声明——例1(钟表类)

第五章 UM对象图和类图

第五章 UM对象图和类图

① 关联名
关联名
★如果关联关系已经清楚,就无需关联名
② 关联的角色
关联的角色
★ 在关联的每一个端点上有一个角色。每一个角色具
有一个名字,用来描述其类被其他的类看作是什么: 把它称为角色名,如果类名与角色名相同,则不
标出角色名。类关系通过添加角色来进一步丰 富。在类图中使用角色可以帮助读者理解第一 个类对于第二个类的作用。
1.3 接口
• 在没有给出对象的实现和状态的情况下对对象行为 的描述。 • 包含操作但不包含属性。 • 没有对外界可见的关联。 • 一个类可以实现一个或多个接口。
1.3 接口
• 接口类:
1.4 类之间的关系
• • • • • 1 2 3 4 5 关联关系 聚合和组合关系 泛化关系 依赖关系 实现关系
案例分析
• 创建一个类图。下面给出创建类图所需的信息。 • 学生(student)可以是在校生(undergraduate)或者 毕业生(graduate)。 • 在校生可以是助教(tutor)。 • 一名助教指导一名学生。 • 教师和教授属于不同级别的教员。 • 一名教师助理可以协助一名教师和一名教授,一名教师只 能有一名教师助理,一名教授可以有5名教师助理。 • 教师助理是毕业生。
(2)聚合 聚集和组合
• 聚合(aggregation): 表示类之间一种松散的整体与部分的组成关 系,是一种特殊的关联。表示“整体/部分”的关联关系。“has a ”,表示聚合中的每一个部分可以属于其它整体。 • 被表示为在整体的一端用一个空心菱形修饰的简单关联
聚合
组合
• 组合(composition): 表示类之间一种紧密的整体与部分的组成 关系,也是一种特殊的关联。表示组合中的每一个部分只能属 于一个整体 • 组合确实只是一种特殊的关联,用整体端有实心菱形箭头的简单 关联修饰它。

软件工程实用教程 (5)

软件工程实用教程 (5)
第五章 面向对象的需求分析
【学习目标】
1.理解面向对象方法的基本概念 2.了解面向对象方法的特点与优点 3.初步掌握面向对象分析的各种模型及视图 4.掌握面向对象需求分析的过程与步骤
【教学方法】案例教学法
第五章 面向对象的需求分析
【教学重点】本章的学习重点在于正确理解面向对象方法
的基本概念:对象、类、封装、继承、多态性、消息、关
5.3.2 用例 用例是可以被执行者感受到的、系统的一个完整 的功能。用例具有下述特征: ●用例代表某些用户可见的功能,实现一个具体的 用户目标; ●用例总是被执行者启动,并向执行者提供可识别 的值; ●用例可大可小,但它必须是完整的; ●用例在以后开发过程中,可以进行独立的功能检 测。
5.3.3 用例之间的关系 用例之间主要有“关联”、“包含”和“扩展” 三种关系。下面分别给予说明。 1. 关联关系 关联(association):用单向箭头表示角色启动用例, 每个用例都有角色启动,除包含和扩展用例。无 论用例和角色是否存在双向数据交流,关联总是 由角色指向用例 。
5.2.2 封装继承和多态
封装:封装(Encapsulation)是面向对象方法的 一个重要原则,它把对象的属性和服务结合成一个 独立的系统单位,并尽可能隐藏对象的内部细节。 封装是一种信息隐藏技术,用户只能见到对象封装 界面上的信息,对象内部对用户来说是隐蔽的。 继承:继承(Inheritance)是指从一个类的定义中 可以派生出另一个类的定义,被派生出的类(子类) 可以自动拥有父类的全部属性和服务。 多态:多态性(Polymorphism)是指同名的方法 或操作在不同类型的对象中有各自相应的实现。
5.3 用例模型
1
执行者
主 要 内 容

UML课后习题答案

UML课后习题答案

填空题第一章(1)统一建模语言UML是绘制软件蓝图的标准工具语言,可以对软件系统产品进行说明、可视化、构造和编制文档。

(2)UML在实际软件项目中,可以用于构造各种类型系统的业务模型和软件模型。

(3)软件的开发模式有瀑布模型、喷泉模型、基于构件的开发模型和XP方法。

(4)面向对象程序的三大要素是多态、封装和继承。

(抽象)(5)瀑布模型的缺点是缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。

第二章(1) 在UML中,静态视图包含有两种视图,分别是类图和对象图。

(2) 规格说明,修饰,拓展划分是UML常用的通用机制。

(3) 够造型,标记型,约束是UML常用的扩展机制。

(4) 用例视图描述了系统的参与者与系统进行交互的功能,是参与者所能观察和使用到的系统功能的模型图。

(5) 状态图是通过对象的各种状态来建立模型来描述对象的随时间变化的动态行为,并且它是独立的对象为中心进行描述。

第三章(1)Rational Rose默认支持的目标语言主要包括 Java、Visual Basic等。

(C++,C#)(2) 部署视图显示的是系统的实际部署情况,它是为了便于理解系统如何在一组处理解节点上的物理分布,而在分析和设计中使用的架构视图。

(3)使用R ational Rose 生成代码的步骤包括选择待转换的目标模型、检查Java语言的语法错误、设置代码生成属性、生成代码。

(4)在用例视图中包括了系统中的所有参与者、用例和用例图,必要时还可以在其中添加顺序图、协作图、活动图和类图等。

(5) 构件视图用来描述系统中的各个实现模块以及它们之间的依赖关系包含模型代码库、执行文件、运行库和其他构件等信息。

第四章(1)对象图的目的在于描述系统中参与交互的各个对象在同一时刻是如何运行的。

(2)链是两个或多个对象之间的独立连接,是关联的实例。

(3)在UML的图形表示中,类是由名字、属性和方法三个部分组成的。

(4)依赖关系使用一个从客户指南提供者的虚箭头来进行表示。

Java编程基础及应用(第2版)教学课件第5章 类和对象

Java编程基础及应用(第2版)教学课件第5章 类和对象
变量定义及初始化;〃声明成员变量 [方法修饰字]返回值的数据类型方法名称(参数1,参数 2...)
{ 程序语句! 〃定义成员方法 [return表达式];
} }
7
§5.1.2 类的定义
说明: (1) class关键字,用于定义类。“class类名”是类的声明 部分, 类名必须是合法的Java标识符,通常第一个字母大写 ,能体现类的功能和作用。 (2 )类的修饰字有:[public] > [abstract | final] 、缺省方式 为 friendly。其中,abstract类不能直接产生属于这个类的对 象;final类不能被其他任何类所继承;public类不但可以被同 一程序包中的其他类使用,别的程序包中的类也可以使用; friendly(缺省)类只能被本包中的其他类使用。
一个对象 就要为对象的各个成员变量分配存 储空间,可以通过 引用对象的成员来使用对 象。 -对象数据成员的引用方式如下:
-对象成员方法的引用方式如下:
22
§5.1.3 对象的创建、使用及清除
例5.3定义DogTestl类,创建该类对象dog,使用该对象 并输
岀相应信息。
程序运行结果: dog阿黄的年龄:3,毛发的颜色:黄色 狗在汪汪叫…
(4) 方法不能嵌套,即不能在方法中再声明其他方法。 (5) 同一个类中的方法可以访问该类的成员变量。 (6) 一个类的方法只能访问自己的局部变量。
17
§5.1.2 类的定义
-例5.1定义Dog类,并设置其属性和方法。
在上面的程序屮,Dog类定义了name、age和color三 个属性,分别表示狗的姓名、年龄和毛发颜色,然后 定义了一个bark()方法,表明狗有汪汪叫的能力。
返回值的 类型和访问限制;方法体由括号内的声明部分和语 句部分组成,描述方法的功能。

JAVA 练习题第5章对象和类

JAVA 练习题第5章对象和类



)。 (A)内部类不能有自己的成员方法和成员变量 (B)内部类可用private或protected修饰符修饰 (C)内部类可以作为其他类的成员,而且可访问 它所在的类的成员 (D)除static内部类外,不能在类内声明static成 员
【解析】内部类也可以有自己的成员方法和变量。
答案为 A
函数。
super
2.类与对象的关系是( )。
答案为 A
(A)类是对象的抽象 (B)对象是类的抽象 (C)对象是类的子类 (D)类是对象的具体实例
3.下面哪一个是Java中不合法的标识符( )。
(A)$persons (C)_myVar
(B)twoNum (D)*pointFra bibliotek答案为 D
答案为 D
4.区分类中重载方法的依据是( A.形参列表的类型和顺序 B.不同的形参名称 C.返回值的类型不同 D.访问权限不同
)。
【解析】形参表的类型和顺序不同时区分重载方法的
唯一标志。
答案为 A
5.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?



( ) A.能,能 B.能,不能 C.不能,能 D.不能,不能 值给子类对象。
据成员。
答案为 C
4.有一个类B,下面为其构造方法的声明,正确 【解析】构造方法没有类型,且方法名与类名相同。
的是( )。 (A)void B(int x) (B)B(int x) {} (C)b(int x) {} (D)void b(int x) {}
{}
答案为 B

答案为 B
在创建对象时必须( )
A、先声明对象,然后才能使用对象 B、先声明对象,为对象分配内存空间,然后才能 使用对象 C、先声明对象,为对象分配内存空间,对对象初 始化,然后才能使用对象 D、上述说法都对

第五章答案类、构造函数、拷贝构造函数、静态成员、友元

第五章答案类、构造函数、拷贝构造函数、静态成员、友元

5.3 练习题解答1.什么是类?为什么说类是一种抽象数据类型的实现?答:类是C++语言中的一种数据类型。

这种数据类型是一种封装体,它既包含有数据结构,又包含有对这些数据所进行的若干操作。

类的获得是通过对于所要解决的问题中的客观实体的抽象,这种抽象不仅包含了它的属性,同时还有对这些属性的操作,即方法。

对实体的这种抽象可用一个标识符来表示,并可对它引用及操作,这种标识符称为类。

可见,类是抽象数据类型的一种实现。

2.类的定义格式如何?类的说明部分和实现部分各包含些什么?答:类的定义格式包含说明部分和定义部分。

类的说明部分主要有类头和类体两部分。

类头定义格式如下所示。

class<类名>其中,class是关键字,<类名>同标识符。

类体是由一对花括号括起来的若干成员,成员中包含数据成员和成员函数,右花括号后边有一个分号。

{〈数据成员说明〉〈成员函数说明〉};成员又分为不同的访问权限,有公有(puLlic)、私有(private)和保护(protected)3种。

类的实现部分是用来定义类中说明的成员函数(没有定义)在该部分定义。

如果类中所有成员函数都已在类体内定义了,则实现部分可以省略。

3.类的成员一般分为哪两部分?这两部分有何区别?答:类的成员一般分为数据成员和成员函数两个部分。

前一部分是用来表示状态的数据,后一部分是用来改变状态的方法(即函数)。

简单地讲,前部分是变量,后部分是函数,后部分的函数是用来对前部分的变量进行操作的。

4.从访问权限角度如何区分不同种类的成员?它们各自的特点是什么?答:从访问权限角度可以将类中成员分为三种:公有的,私有的和保护的。

公有成员可以被类体内外的程序所访问,它通常作为一个类体的对外接口。

私有成员只能对类体内的程序所访问,在类体外是不可见的。

它是类中的被隐藏部分。

保护成员对一般类而言视同私有成员,对派生类同公有成员。

它可以被其派生类中的程序访问。

5.作用域运算符的功能是什么?它的使用格式如何?答:作用域运算符::是C十十语言中的一种运算符,用来指明某个标识符的作用域,主要用于标识类中成员。

919090-C++程序设计教程-第5章 类和对象

919090-C++程序设计教程-第5章 类和对象

5.1
对象与外部对象的每一个交互都称为对象 的行为。对象的行为包括该对象向别的对象
发送消息以及该对象接受别的对象的消息。
消息是对象之间相互请求或相互协作的途
径,是要求某个对象执行其中某个功能操作 的规格的说明。
对象的行为可分为内部行为和外部行为, 相应于消息可分为私有消息和公有消息。
所有公有消息的结合称为该对象的协议,
面向对象方法学将对象定义为:对象是一个逻辑
实体,它是对一组信息以及作用于这些信息的操作 的描述。也就是说,对象是将其自身所固有的状态 特征或属性与可以对这些状态施加的操作结合在一 起所构成的独立实体。
5.1
对象的特性: (1)有一个名字作为该对象在系统中的标识 (2)有一组描述它的特征的状态。 (3)有一组操作。 根据开发过程的不同,可将对象分为三种 不同类型的对象: 现实生活中存在的实体:是我们所模拟系 统的原始构成; 问题对象:对象在问题中的抽象,它是现 实对象在计算机解空间中的直接映射; 计算机对象:问题对象在计算机中的表示 ,即问题对象的计算机实现。
对于用户自定义的函数,要先完成函数的定义, 然后才可以调用它。根据函数定义和使用时参数的 不同,可将函数分为两类:无参函数和有参函数。
无参函数就是没有任何参数的函数,而有参函数 就是带有一个或一个以上参数的函数。
5.3
1、无参函数
定义无参函数的一般格式为:
《<类型>》<函数名>(《void》)
{ …}
5.3
函数调用swap(&a, &b)示意图(a, b为一般变 量):
在调用参数为引用类型的函数时,引用类 型的形参所对应的实参必须为变量。
5.3
在调用引用类型参数的函数时,对引用类 型的参数的操作实际上就是对传递给它的实 参的操作,而不需要将实参拷贝一个副本给 形参。因为从程序的执行效率上看,引用作 为参数,在运行过程中可以节省资源。通常 将占用存储空间较大的类型的形参设置为引 用类型。

杨乃乔《比较文学概论》(第3版)课后习题详解(第五章 类型论)【圣才出品】

杨乃乔《比较文学概论》(第3版)课后习题详解(第五章 类型论)【圣才出品】

第五章类型论第一节文类学与“形式”1.什么是比较文学的文类学研究?答:(1)比较文学的文类学是对各国文学文类划分的研究它强调各国文学之间相互依赖、相互影响或相互反照的关系,打破了文类问题的孤立和封闭的局面,它要求研究者在跨民族、跨语言、跨文化和跨学科的视域中去考察各种文类的特征、文类的划分标准、文类的流传演变等问题。

(2)比较文学的文类学一方面是指在平行研究层面对文类的各种问题(包括“缺类”现象)进行跨民族、跨语言、跨文化甚至跨学科的理论整合,以寻求不同文类之间的相通性和相异性,另一方面是指在影响研究层面对某些文类的跨国界流传、变异以及文类之间的相互影响事实进行追源溯流的清理考辨。

2.比较文学的文类划分内容有哪些方面?答:比较文学的文类划分研究必须注意三方面的内容:(1)文类划分在不同的民族和国家文学中的差异性是普遍存在的。

(2)在不同文化中的文类划分意识及其具体表现又是具有相对一致性的.(3)近、现代中西方文类概念,已经属于比较文学文类学的范畴。

其最大的变化是,文类划分标准越来越体现了中西方文学理论的交融渗透特点,文学体裁形式的整体划分原则日益趋于开放。

3.文类学研究的范围和对象有那些?举例说明。

答:文类学研究的范围和对象主要有:(1)对于文学分类及其分类标准的比较研究文学作品样式划分的标准,在不同的文化语境中差异性是很大的。

中国文学现在流行的有两种分法:三分法,即文学的抒情类、叙事类、戏剧类;四分法,即小说、诗歌、戏剧、散文。

西方文学对文学的分类要简单得多,由柏拉图和亚里士多德奠定基础的三分法一直是其最主要的分类方法。

在西方文学史上,柏拉图第一次把文学分为三种:诗歌和故事共有两种体裁:一种完全通过模仿,即悲剧与戏剧;另外一种是诗人表达自己情感的,酒神赞美歌大体都是这种抒情诗体。

第三种是二者并用,可在史诗及其它诗体里找到。

(2)对于各种文类自身特点的比较研究各种文类一旦定型,便具有稳定的结构以及与之相应的特点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2016/4/26 18
例: 上例的定义部分也可放在类内
class Tdate { public: void SetDate(int y,int m,int d) { year=y;month=m;day=d; } int IsLeapYear( ) { return (year%4==0 && year%100!==0)||(year%400==0);} void print( ) { cout<<year<<”.”<<month<<”.”<<day<<endl;} private: int year,month,day; };
• 此处date1和date2是普通类对象,pdate是一个指向 对象的指针变量,date[3]定义了一个包含三个元素的 数组,每个元素都是Tdate类型,rdate是对象date1 的一个引用,它是date1别名
2016/4/26 22
创建一个具体对象一般有两种方法:
(1)在定义类的同时创建对象
2016/4/26 3
例如:抽象实例—钟表
• 数据抽象: int hour,int minute,int second • 代码抽象: setTime(),showTime()
class Clock { public: void setTime(int newH, int newM, int newS); void showTime(); private: int hour, minute, second; };
2016/4/26 14
类的成员函数:
• 在类中说明函数原型; • 可以在类外给出函数体实现,并在函数名 前使用类名加以限定; • 也可以直接在类中给出函数体,形成内联 成员函数; • 允许声明重载函数和带默认参数值的函数 。
2016/4/26 15
例:一个关于日期的类的说明部分
class Tdate { public: void SetDate(int y,int m,int d); int IsLeapYear( ); void print( ); private: int year,month,day; }; • 定义了三个私有数据成员:year,month和day。 • 还定义了三个公有成员函数:SetDate用来设置日期, IsLeapYear函数用来判断闰年,返回1表示是闰年, print函数用来输出显示日期。
2016/4/26 20
三、对象
• 类型和变量之间存在着一定的联系,类型是模板, 而变量则是具有这种模板的一个实体。同样,有 了“类”类型就有其对应的变量实体,这就是对 象。 • 对象是类的实例或实体,表面上看对象是某个 “类”类型的变量,但对象又不是普通的变量, 对象是一个数据和操作的封装体。封装的目的就 是阻止非法的访问,因此对象实现了信息的隐藏, 外部只能通过操作接口访问对象数据。对象是属 于某个已知的类的,因此必须先定义类,然后才 能定义对象。
2016/4/26
9
类的定义格式:
• 类是一种用户自定义的数据类型,它的一般定义 格式如下:
class <类名> { public: <公有数据成员和成员函数>; //外部接口 protected: <保护数据成员和成员函数>; private: <私有数据成员和成员函数>; }; <各个成员函数的实现>;//该部分也可以放在类的内部
2016/4/26
29
(2)构造函数的形式
• • • • • • • 函数名与类名相同; 不能定义返回值类型,也不能有return语句; 可以有形式参数,也可以没有形式参数; 可以是内联函数; 构造函数可以在类内定义,也可以在类外定义; 可以重载; 可以带默认参数值;
2016/4/26
30
(3)构造函数的限制和调用时机:
2016/4/26 19
2、定义类时应注意的事项
• 类中的数据成员的类型可以是任意的,包括整型、 浮点型、字符型、数组、指针和引用等,也可以是 对象,即另一个类的对象,可以作为该类的成员, 但自身类的对象是不可以的。 • 一般地,在类内先说明公有成员,它们是用户关心 的,后面说明私有成员。 • 一般将类定义的说明部分或者整个定义部分(包含 实现部分)放在一个头文件中。例如可把Tdate类 的定义放在头文件tdate.h中,后面引用起来比较 方便。 • 在类的说明部分之后必须加分号”;”。
C++程序设计第五章 类与对象源自2016/4/261
主要内容:
• 面向对象程序设计的基本特点 • 类的构成及定义 • 对象 • 类的组合 • 构造函数和析构函数的执行顺序 • 前向引用声明 • 结构体和联合体
2016/4/26 2
一、面向对象程序设计的基本特点
1、抽象
• 对同一类对象的共同属性和行为进行概括,形成 类。 • 先注意问题的本质及描述,其次是实现过程或细 节。 • 数据抽象:描述某类对象的属性或状态(对象相 互区别的物理量)。 • 代码抽象:描述某类对象的共有的行为特征或具 有的功能。 • 抽象的实现:类。
13
公有成员、私有成员和保护成员:
• 类的成员包括数据成员和成员函数两部分。类的成 员从访问权限上分有三类:公有的(public)、 私有的(private)和保护的(protected),其 中默认为private权限。 • 公有成员:提供了类的外部接口,在类中和类外可 见,可以被程序中的任何代码访问; • 私有成员:只能在类中可见, 不能在类外或派生类 中使用。即只能被类本身的成员函数及友元类的成 员函数访问,其他类的成员函数,包括其派生类的 成员函数都不能访问它们; • 保护成员:在类中和它的派生类中可见,即除了类 本身的成员函数和说明为友元类的成员函数可以访 问保护成员外,该类的派生类的成员也可以访问。
2016/4/26 10
其中:
• class是定义类的关键字。<类名>是一个 标识符,用于唯一标识一个类。一对大括 号内是类的说明部分,说明该类的所有成 员。 • 各段没有顺序规定,也可重复出现。若私 有成员放第一段,可以缺省private。
2016/4/26
11
类内初始值:
• 可以为数据成员提供一个类内初始值 • 在创建对象时,类内初始值用于初始化数 据成员 • 没有初始值的成员将被默认初始化。 • 但一般还是用构造函数进行初始化。
2016/4/26 4
2、封装
• 将抽象出的数据、代码封装在一起,形成 类。 • 目的:增强安全性和简化编程,使用者不 必了解具体的实现细节,而只需要通过外 部接口,以特定的访问权限,来使用类的 成员。 • 实现封装:类声明中的{}
2016/4/26
5
3、继承 • 在已有类的基础上,进行扩展形成新的类 。 4、多态 • 多态:同一名称,不同的功能实现方式。 • 目的:达到行为标识统一,减少程序中标 识符的个数。 • 实现:重载函数和虚函数
• 下面两个都是默认构造函数,但如果在类 中同时出现,将产生编译错误:
Clock(); Clock(int newH=0,int newM=0,int newS=0);
2016/4/26 32
隐含生成的构造函数:
• 如果程序中未定义构造函数,编译器将在 需要时自动生成一个默认构造函数
2016/4/26 24
2、类成员的访问权限
• 类中成员互相访问
– 直接使用成员名访问
• 类外访问
– 使用“对象名.成员名”方式访问 public 属性 的成员
2016/4/26
25
注意:
• 对象中的保护(protected)成员和私有 (private)成员不允许被非成员函数直 接访问,这称为类的封装性。 • “.”和“::”的不同:“.”用于对象与成员 之间,“::”用于类与其成员之间。
2016/4/26
17
说明:
• 日期类的实现部分中,对类内说明的三个 成员函数进行了定义,即具体给出了函数 功能的实现。在类外对类成员函数的定义 必须使用运算符“::”,称为作用域运算符 (也称作用域分辨符)。它是用来表示某 个成员函数属于那个类的,如果未给出类 名,该函数则是一个普通函数。 • 格式:类型 类名::函数名(参数表)
class Clock { public: void SetTime(int NewH,int NewM,int NewS); void ShowTime(); private: int Hour,Minute,Second; }myClock;
2016/4/26
23
(2)在使用时定义对象
class Clock { public: void SetTime(int NewH,int NewM,int NewS); void ShowTime(); private: int Hour,Minute,Second; }; Clock myClock;
2016/4/26 16
日期类的实现部分(在类外实现)
void Tdate::SetDate(int y,int m,int d) { year=y; month=m; day=d; } int Tdate::IsLeapYear( ) { return (year%4==0 && year%100!=0)||(year%400==0); } void Tdate::print( ) { cout<<year<<“.”<<month<<“.”<<day<<endl; }
2016/4/26 21
1、对象的定义格式
<类名> <对象名表>
• 其中,<对象名表>中可以有一个或多个对象名,对象名 用逗号间隔。对象可以是一般的对象名,也可以是指向对 象的指针名或引用名,也可以是数组。 • 例如:下面定义了类Tdate的几个对象
相关文档
最新文档