像、象区别

像、象区别
像、象区别

像和象的区别

“象”适用于三种情况:

1.作名词用,如“大象”。

2.属于名词性词素,不能单用,用来构词,如表示形状、样子的“形象”、“象征”等。

3.属于动词性词素,不能单用,可用来构词,如表示摹仿、表现的“象声词”、“象形字”。

“像”适用的三种情况是:

1.作名词,指人物等做成的形象,如“画像”、“佛像”等。

2.用作动词,表示“相似”,如“你像他哥哥”。

3.作介词用,有“比如”、“如同”(这个意义不能单独作谓语动词,只能构成介词词组去修饰动词)等意思,如“像爸爸那样工作”。

4. 好像、似乎、仿佛,如:雪梅好像什么都没看见。

象: 【释义】

①哺乳动物——象,如:大象|象牙|非洲象|印度象等。

②形状、样子,如:形象|景象|印象|气象等。

③模仿、仿效、摹拟,如:象形(文字)|象声(词)|象征等。

像: 【释义】

①比照人物做成的图形,如:画像|雕像|塑像|绣像|肖像|像章等。

②相似,如:他两个长得很像,如同一个人。

③比如、比方,如:箭像雨点一样落在船上。像这样的事是值得注意的。

④好像、似乎、仿佛,如:雪梅好像什么都没看见。

“好像”还是“好象”

应该用“好像”,最好不要用“好象”,“好象”是以前的用法,现在较正式的用法应该是“好像”。关于这两个字的用法,专家们有讨论,附件结果:象:指自然界、人或物的形态、样子。语词搭配实例:现象、形象、印象、意象、迹象、假象、表象、物象、景象、气象、天象、星象、浑象、蚀象、体象、危象、心象、想象(像)、构象(conformation)、磁象、磁象仪、异极象、全面象、分裂象、观象台、天象仪、晶格象、类质同象、同质二象、同质三象、同质多象、文象结构、心象地图、唯象理论、唯象系数、波粒二象性,等。像:指用模仿、比照等方法制成的人或物的形象,也包括光线经反射、折射而形成的与原物相同或相似的图景。语词搭配实例:人像、画像、肖像、遗像、图像、实像、虚像、正像、反像、逆像、倒像、阳像、阴像、鬼像、伪像、映像、镜像、影像、潜像、叠像、原像、前像、后像、余像、双像、网像、成像、电像(electrical image)、音像、声像、摄像、录像、放像、显像、视像、像章、像片、像差、像散、像元、像素、像点、像移、像幅、像距、像高、像对、像质、像场、像管、构像(imaging)、遗觉像、视宁像、网...

第10章类和对象

第10章 类和对象 本章工作任务 实现学校类,并描述学校的信息 实现教员类,并输出教员的信息 实现学生类,并输出学生的信息 本章技能目标 掌握类和对象的特征 理解封装 会创建和使用对象

使用Java理解程序逻辑 本章单词 请在预习时学会下列单词的含义和发音,并 填写在横线处。 1.class: 2.object: 3.OOP: 4.return: 5.encapsulation: 6.null: 7.initial: 8.type:

类和对象 本章简介 在前面章节中,我们学习了程序设计的基本知识和流程控制语句。通过这些内容的学习,大家能够用Java语言进行程序设计,但这些程序的规模都很小,一般只有几十行代码。假设我们要编程解决一个很大的问题,需要写几万行代码,如果按照以前的做法,将这些代码都放在一个Java文件中,可以想象这个文件会非常冗长,而且很难维护。 因此,在下面的课程中,你将看到Java程序设计的另一道风景——面向对象程序设计,英语缩写为OOP。面向对象程序设计是一个里程碑,Alan Kay因为设计了世界上第一个面向对象语言Smalltalk而获得图灵奖。Java之父James Gosling结合Internet背景设计了完全面向对象的Java语言。本章将带领你进入面向对象的世界,学习什么是对象和类,以及如何创建和使用类的对象。 10.1 对象 首先问你一个问题,“世界是由什么组成的?”。如果你是一个化学家,你可能会说,“世界是由分子、原子、离子等这些化学物质组成的”。如果你是一个画家,你可能会说,“世界是由不同的颜色组成的”。不同的人会有不同的回答。但如果你是一个分类学家,你会说,“这个世界是由不同类别的事物组成的”,如图10.1所示。 图10.1 世界的组成 其实,这个问题本身就比较抽象,我们说物以类聚,所以可以说世界是由不同类别的事物构成,如图10.1中所示,世界由动物、植物、物品、人和名胜等组成。动物可以分为脊椎动物和无脊椎动物。脊椎动物又可以分为哺乳类、鱼类、爬行类、鸟类和两栖类。 爬行类又可以分为有足类和无足类……,就这样可以继续分下去。当我们提到某一个分类时,就可以找到属于该分类的一个具体的事物。比如乌龟就属于爬行类中的有足类,

JAVA类和对象的关系

1、JAVA中的参数传递问题(理解内存图) 基本类型:形式参数的改变对实际参数没有影响 引用类型:形式参数的改变直接影响实际参数 2、面向对象(理解,升就业班问说说什么是面向对象和思想特点) 1、面向对象(从三点回答) A面向过程是以函数为基础,完成各种操作,强调的是过程 B面向对象以对象为基础,完成各种操作,强调的是对象,结果 C面向对象是基于面向过程的 2、面向对象的思想特点: a)是一种更符合人们思考习惯的思想 b)把复杂的事情简单化 c)把我们从执行者变成了指挥者 3、举例: a)买电脑 b)洗衣做饭 c)旅游 d)把大象装进冰箱(伪代码体现) 4、事物是如何体现的 a)属性有哪些特征名词提取法 b)行为有哪些功能 5、类与对象的关系(掌握) 把事物转换成类 A:成员变量 定义在类中,方法外 B:成员方法 和以前的区别是去掉static 把这个说完还没有说道类与对象的概念,对不对 类:是相关的属性和行为的集合,集合就是一堆东西,是一个抽象的概念 对象:是某种事物的具体的存在,具体的表现形式 举例: 学生:类 对象:小明 6、案例 A学生类 B手机类 C汽车类(在这里画了内存图,有空看一下) 7、如何使用呢 a)创建对象 i.格式 a)类名变量= new 类名() b)使用成员变量和成员方法

i.对象名.成员变量 ii.对象名.成员方法 8、成员变量和局部变量的区别(理解) A 定义位置 成员变量:在类中方法外 局部变量,在类中方法中,或者方法上的形式参数 B 初始化的区别 成员变量:有默认的初始化值 局部变量:无 C 存储位置 成员变量:堆随着对象的存在而存在 局部变量:栈随着方法的存在而存在 9、匿名对象 a)概念:没有名字的对象 b)使用场景 i.当对象中的方法只掉用一次的情况下使用(一般不用,测试时使用)new Student().sayHello(); ii.匿名对象作为实际参数传递

类与类之间的关系

类与类之间存在以下关系: (1)泛化(Generalization) (2)关联(Association) (3)依赖(Dependency) (4)聚合(Aggregation) 1.泛化(Generalization) [泛化] 表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。 父类父类实例=new 子类() [UML图](图1.1) 2.依赖(Dependency) [依赖] 对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。 依赖关系表现在局部变量,方法的参数,以及对静态方法的调用 [现实例子] 比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺

丝(screw)的工作 [UML表现](图1.2) 3.关联(Association) [关联] 对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。[具体表现] 关联关系是使用实例变量来实现[现实例子] 比如客 3.关联(Association) [关联] 对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。 [具体表现] 关联关系是使用实例变量来实现 [现实例子] 比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司 [UML图] (图1.3) (4)聚合(Aggregation) [聚合] 当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚集关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。 [具体表现] 与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语

类与类之间的关系及代码表现

类与类之间的关系对于理解面向对象具有很重要的作用,以前在面试的时候也经常被问到这个问题,在这里我就介绍一下。 类与类之间存在以下关系: (1)泛化(Generalization) (2)关联(Association) (3)依赖(Dependency) (4)聚合(Aggregation) UML图与应用代码例子: 1.泛化(Generalization) [泛化] 表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。 [具体表现] 父类父类实例=new 子类() [UML图](图1.1) 图1.1Animal类与Tiger类,Dog类的泛化关系 [代码表现] 1.class Animal{} 2.class Tiger extends Animal{} 3.public class Test 4.{ 5. public void test() 6. { 7. Animal a=new Tiger(); 8. } 9.} 2.依赖(Dependency) [依赖] 对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。 [具体表现]

依赖关系表现在局部变量,方法的参数,以及对静态方法的调用 [现实例子] 比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作 [UML表现](图1.2) 图1.2 Person类与Screwdriver类的依赖关系 [代码表现] 1.public class Person{ 2. /** 拧螺丝 */ 3. public void screw(Screwdriver screwdriver){ 4. screwdriver.screw(); 5. } 6.} 3.关联(Association) [关联] 对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。 [具体表现] 关联关系是使用实例变量来实现 [现实例子] 比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司 [UML图] (图1.3) 图1.3 公司和员工的关联关系 [代码表现] 1.public class Company{ 2. private Employee employee;

类与对象答案

类与对象 知识要点 1.掌握类与对象的概念和定义方法,掌握类成员的访问属性。 2.掌握构造函数的概念、定义方法和使用方法。 3.掌握析构函数的概念、定义方法和使用方法。 4.掌握拷贝构造函数的概念、定义方法和使用方法。 5.掌握包含对象成员的类构造函数的定义方法。 6.掌握静态成员的概念、定义方法、作用和特点。 7.掌握友元的概念、定义方法、作用和特点。 8.掌握类模板的定义格式与使用方法。 典型例题分析与解答 例题1:下列有关类的说法不正确的是()。 A.对象是类的一个实例 B.任何一个对象只能属于一个具体的类 C.一个类只能有一个对象 D.类与对象的关系和数据类型与变量的关系相似 答案:C 分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。 例题2:下面()项是对构造函数和析构函数的正确定义。 A.void X::X(), void X::~X() B.X::X(参数), X::~X() C.X::X(参数), X::~X(参数) D.void X::X(参数), void X::~X(参数) 答案:B 分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。 例题3:()的功能是对象进行初始化。 A.析构函数 B. 数据成员 C.构造函数 D.静态成员函数 答案:C 分析:当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作; 例题4:下列表达方式正确的是()。 A.class P{ B. class P{ public: public: int x=15; int x; void show(){cout<

JAVA中类和对象的理解

JAVA中类和对象的理解 Java是面向对象的编程语言,哪么什么是对象?一句话,万物皆对象。只要你想得到,无论是实体,还是一些虚拟的事物,都可以称之为对象。换言之,Java作为面向对象的编程语言,意味着可以把任何形式的内容转化为编程语言进行软件开发。 先说什么是类,什么是对象,这样在进行面向对象编程中,才能有比较完备的面向对象的编程思想。 既然万物皆对象,我们编程,用编程语言来描述对象,不能为浩繁纷杂每一个对象进行相应描述,这就涉及到一个具体到抽象的过程了。其实我们的语言已经做到这一点了。我们平时说道的每一个名词,其实都是对现实世界中的一个个具体的“物体”(或称为“实体(Entity)”)相应的特征和行为抽象出来,并且将各种具有相同特征的“物体”分为一个个的“类(class)”,就是我们为每一类事物起的名字。比如:汽车、食物、狗、人这些词等等。 我们用一个具体的例子来进一步说明“类”和“对象”之间的联系与区别。以汽车为例,只要是汽车,都应该有以下一些“属性”:轮子、引擎、方向盘、刹车等等组件,可以通过一些“方法”来操作汽车,改变汽车的状态,如加速、转向、减速等,这些都是汽车的共性。具体到某辆汽车,它可能有80cm的轮子、40cm的方向盘、A6引擎,它是一个确定的实例。“汽车”这个名词就是“类”,一辆辆真实的汽车就是“汽车”这个类的实例化。 我们每天的生活、工作,无时无刻不在和“对象”打交道----衣服、食物、房子、汽车等。我们仔细想想,就会发现,当我们处理这些对象时,我们不会将这些对象的属性(对象所具有的特点)和操作分开。如我们进出“房间”时,我们不会将“房门”这个属性和“开门”这个操作分开,它们是联系在一起的。那么,面向对象编程思想力图使得程序和现实世界中的具体实体完全一致。这样,可以让程序员乃至非专业人员更好的理解程序。所以Java 语言还是很好阅读的。 类和对象是面向对象编程思想中的核心和基础。类是作为对象的抽象而存在的,所有的对象都依据相应的类来产生,在面向对象的术语中,这个产生对象的过程称为“实例化”。 前面说了,类可以看做是对象的抽象,它是用来描述一组具有相同特征对象的。那么,对象中,最重要的两种特征内容,就是: 1.数据:数据就是描述对象的信息的静态信息了。比如一辆汽车,它的型号,价格,出厂日期等等,都是这个汽车对象的静态信息数据。 2.行为:行为就是这个对象可以完成的动作、操作等,是对象的动态特征。接上个例子,汽车可以启动,行驶,刹车等等,都是这辆汽车的动态特征。 通过这两方面的特征内容,基本上这个对象就可以描述清楚了。 Java中类就是完全模拟了类的特征内容。在Java类的定义规范里面,有两方面内容来对应类中的数据和行为: 1.属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态) 2.方法:对对象的属性进行的操作称为对象的方法(也称为行为/操作) Java中类的声明语法规范(即如何定义一个标准的Java类) 语法规则:

实验四 类和对象定义

实验四类和对象定义 一、实验类型 设计型 二、实验目的 1、实验目的 (1) 掌握类的声明、定义和使用方法。 (2) 掌握对象的定义和使用方法。 (3) 掌握具有不同访问属性的类中成员的使用方法。 三、上机准备 1、实验室安装VC++6.0软件。 2、类的基本概念、对象的基本概念。 四、实验内容与步骤 1、在Rect.cpp中,定义一个矩形(Rect)类,包括矩形的左上角坐标(X1,Y1),矩形右下角坐标(X2,Y2)四个数据成员;包括计算矩形面积(getArea),计算矩形周长(getPerimeter),设置矩形数据成员(setRect)和输出矩形数据成员(print)四个成员函数。数据成员为私有成员,成员函数为公有成员且在类说明内定义实现。在main()函数中建立Rect类对象并进行测试。 提示与分析: (1) 分析类中数据成员的类型并定义对应的变量,如double X1,X2,Y1,Y2; (2) 分析成员函数的函数原型,即返回值及其类型以及相关参数,如: double getArea(); double getPerimeter(); void setRect(double,double ,double,double); void print(); (3) 思考成员函数的函数体实现代码。 计算矩形面积和周长的方法: Area=fabs(X2-X1)*fabs(Y2-Y1); Perimeter=(fabs(X2-X1)+fabs(Y2-Y1))*2; (4) 根据要求设定类成员的访问权限,如成员函数为公有成员(public),数据成员为私有成员(private)。 (5) 将成员函数的函数体代码放到类说明中。 (6) 在main()函数中建立Rect类的实例并调用对象的方法进行测试,如

第7 类与对象部分习题 - noanswer

第7 类与对象部分习题- noanswer

第四章类与对象习题 一.基本概念与基础知识自测题 4.1 填空题 5.1.1 引入类定义的关键字是(1)。类 的成员函数通常指定为(2),类的数据成员通常指定为(3)。指定为(4)的类成员可以在类对象所在域中的任何位置访问它们。通常用类的(5)成员表示类的属性,用类的(6)成员表示类的操作。 答案: (1)class (2)公有的public (3)私有的private (4)公有的public (5)数据 (6)函数 4.1.2 类的访问限定符包括(1)、 (2)和(3)。私有数据通常由(4)函数来访问(读和写)。这些函数统称为(5)。 答案:

(1)public(公有的) (2)private(私有的) (3)protected(保护的) (4)公有的成员函数 (5)类的接口 4.1.3 通常在逻辑上,同一类的每个对象都有 (1)代码区,用以存储成员函数。而在 物理上通常只有(2)代码区。只有 在(3)定义,并(4)的函 数和加了关键字(5)的函数例外。答案: (1)独立的 (2)共用的 (3)在类说明中 (4)不包括循环等复杂结构 (5)inline 4.1.4 C++中支持三种域:(1)、 (2)、(3)。函数域被包括在 (4)中,全局域被包括在(5)中。 using指示符以关键字using开头,后面是 关键字(6),最后是(7)。这 样表示以后在该名字空间中所有成员都

(8)。如不使用using指示符则在使用 时要加::,称为(9)运算符。 答案: (1)局部域(local scope) (2)名字空间域(namespace scope) (3)类域(class scope) (4)局部域 (5)名字空间域 (6)namespace (7)名字空间名 (8)可以直接被使用 (9)域 4.1.5 引用通常用作函数的(1)和(2)。对数组只能引用(3)不能引用(4)。 答案: (1)参数 (2)返回值 (3)数组元素 (4)数组名本身 4.1.6 构造函数的任务是(1)。构造函 数无(2)。类中可以有(3)个 构造函数,它们由(4)区分。如果

面向对象编程思想小谈——类和对象

面向对象编程思想小谈 ——类与对象 作者:蒋涵鑫 目前我们的C++学医已经进入了面向对象的编程阶段。虽然大家已经了解了类和对象,但是这并不意味着大家就真正的已经了解了面向对象的编程思想,对于一个合格的程序员来说,掌握面向对象的编程思想是极为重要的,但是对于书上的很多类似于大道理的理论,很多人只能够浅尝辄止。有鉴于此,今天我将会用另外一种方式来带着大家说说这个非常重要的面向对象的思想。 在面向对象的思想中有一句非常经典的话:“万物皆对象”,这句话怎么去理解它呢?我们以一家超市为例,大家都去过超市,那里摆满了大大小小五花八门的商品,这些商品我们就把它称之为对象,对象其实就是一些客观存在的物体。而“万物皆对象”的含义就是这个世界上的大大小小的东西,只要是一个客观存在的物体,它就是一个对象!当然我这里说的物体并不仅仅是指商品,包括我们自己本身也是一个客观存在的物体,也是一个对象。 对象是对于某一些物体的统称,例如几个杯子,它们都是杯子,而我们也很习惯的把它们叫做杯子。而这些杯子,就称之为对象。而在这些杯子当中的某一个具体的杯子,例如四个杯子分别编号甲乙丙丁,它们其中某一个具体的杯子,例如乙杯子,就被称之为一个实例。所以对象和实例最大的区别在于对象可以指代很多同属于一种类型的事物,而实例只能够用于描述一种类型的事物当中某一 在了解了对象和实例的概念之后我们不得不谈一谈一个很重要的概念:类!所谓的类其实在我认为应该有两种合理的解释。第一种叫分类,不得不承认,开一个超市,即便是小超市也是很艰难的,因为超市可以出售的物品相当之多!商品多了,我们就得需要对这些商品进行管理。什么叫管理,就是将这些商品合理的组织起来,从而达到某种目的。超市对商品进行管理目的是为了能够让顾客方

实验三:类与对象

实验三Java类与对象 一、实验目的 1)理解面向过程与面向对象区别 2)理解面向对象的三大特征 3)掌握类声明的方法 4)掌握构造方法 5)掌握对象的创建方法与创建机制 6)掌握成员变量、类变量和局部变量区别 7)掌握成员方法与类方法区别 8)掌握函数的重载 9)掌握4种访问修饰符的区别 二、实验环境 JDK1.6+Eclpise3.2 三、实验准备 1)复习课件中理论知识 2)练习课堂所讲的例子 四、实验内容 1、创建猴子类。具体要求如下: 1)编写一个类Monkey,用来表示猴子类; 2)给Monkey类确定添加4个属性:3个实例成员变量(名字、体重、年龄)、1个静态成员变量(爱好:默认值为:吃香蕉); 3)添加默认构造方法和有参构造方法(3个参数,分别给名字、体重和年龄赋初始值)4)编写展示猴子能够爬树(climbTree)的方法――提供两个参数传入:分别代码猴子的名字(name)和爬树的高度(height)(方法内只需打印猴子的”名字+会爬树,能爬+高度”)5)测试:在main方法中创建两个猴子对象monkey1(甲、50、3)和monkey2(乙、45、2),monkey1使用默认构造方法创建,monkey2使用有参构造方法创建。分别打印出monkey1和monkey2的名字、体重、年龄和爱好。并调用monkey1和monkey2的爬树方法。 2、创建矩形Rectangle类。具体要求如下: 1)创建一个Rectangle类; 2)创建属性:两个double成员变量:width和height。 3)创建方法:计算矩形的周长getLength()和面积getArea()。 4)测试:创建Rectangle对象,并给两个成员变量赋值,调用周长和面积的方法,输出周长和面积。 五、实验过程及结果

类与类之间的关系

类与类之间的关系对于理解面向对象具有很重要的作用,下面进行总结! 一、类与类之间存在以下关系: ` UML图与应用代码例子: 1.泛化(Generalization) [泛化] 表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。 [简单理解] 是一个is a 的关系。如老虎是一个动物 [具体表现] 父类父类实例=new 子类() [UML图](图1.1) 图1.1 Animal类与Tiger类,Dog类的泛化关系 [代码表现] 1. class Animal{ 2. 3. } 4. class Tiger extends Animal { 5. 6. } 7. public class Test 8. { 9. public void test() 10. { 11. Animal a=new Tiger(); 12. } 13. }

2.依赖(Dependency) [依赖] 对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。 [具体表现] 依赖关系表现在局部变量,方法的参数,以及对静态方法的调用 [简单理解] 一个类使用了另外一个类作为局部变量和方法参数。是一个use a关系! [现实例子] 比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作 [UML表现](图1.2) 有时在uml图中不出现箭头只是虚线 图1.2 Person类与Screwdriver类的依赖关系 理解: 指Person类可能要用到Screwdriver的一些方法,也可以这样说,要完成Person里的所有功能,一定要有Screwdriver的方法协助才行。Person依赖于Screwdriver的定义。 ROSE对依赖关系不产生属性。 注意,要避免双向依赖。一般来说,不应该存在双向依赖 [代码表现] 1. public class Person 2. { 3. /** 拧螺丝 */ 4. public void screw(Screwdriver screwdriver) 5. { 6. screwdriver.screw(); 7. } 8. }

类与对象(1)

类与对象(6学时) 一、实验目的 1.掌握C++类的概念和基本组成,学会设计类,掌握类对象的声明和使用方法; 2.熟悉各种成员函数包括构造函数、析构函数、内嵌函数的定义与使用; 3.掌握静态数据成员的使用。 二、实验内容及步骤 1.声明一个Circle类,有 1)数据成员Radius(半径) 2)成员函数GetArea()计算圆的面积 3)构造函数Circle(float radius)进行初始化 4)析构函数 在主函数中创建一个Circle类的对象进行测试(输入一个数值,作为Circle类对象的半径,调用该对象的GetArea()求以该数值为半径的圆的面积)。 2.声明一个tree类,有 1)数据成员ages(树龄) 2)成员函数grow(int years)对ages加上years 3)成员函数age()显示对象的数据成员ages的值 4)构造函数tree(int n=0)进行初始化 5)析构函数 在主函数中创建一个tree类的对象进行测试(创建一个树龄为18的对象,调用age()显示树龄,之后调用grow(4),生长4年,再显示树龄)。 3.改正以下程序中的错误,并分析错误原因。提示:该程序中point类的 构造函数定义不正确, 在main()中对数据成员的访问不正确。要求修改 程序后,在主函数中创建一个对象并初始化为坐标(5,5),然后输出 这个点的X,Y坐标。

4.声明一个名为Rectangle的矩形类,其属性为矩形的左下角和右上角两 点的坐标,并有成员函数计算矩形的周长及面积。编程实现求左下角与右上角坐标分别为(2.1,3.2),(5.2,6.3)的矩形周长及面积。 5.人员信息管理系统: 以一个小型公司的人员管理为例,说明类及成员函数的设计。提示: 1)类的设计: 某小型公司,需要存储雇员的编号、级别、月薪,并显示全部信息。 根据这些需求,设计一个类employee,在该类中,包括的数据成员有:编号(int individualEmpNo) 级别(int grade) 月薪(float accumPay) 成员函数有: 设置编号(void setEmpNo(int steps)):编号顺序加1(利用静态变量实现) 提取编号(void getEmpNo) 晋升级别(void promote(int increment)):提升的级别由参数指定 提取级别(int getGrade) 设置月薪(void SetAccumPay(float pa)): 提取月薪(float GetAccumPay) 构造函数(用于设置数据成员编号、级别和月薪初值) 析构函数 2)整个程序分为两个独立的文档:employee.h(包含类的定义和类的 实现)和employee.cpp(主函数文件) 3)在主函数main()中创建employee类的两个对象,对它们设计编号、 级别和月薪,并输出每个雇员的基本信息。

C++类与对象习题及解答

类与对象习题 一.基本概念与基础知识自测题 4.1 填空题 5.1.1 引入类定义的关键字是(1)。类的成员函数通常指定为(2),类的 数据成员通常指定为(3)。指定为(4)的类成员可以在类对象所在域中的任何位置访问它们。通常用类的(5)成员表示类的属性,用类的(6)成员表示类的操作。 答案: (1)class (2)公有的public (3)私有的private (4)公有的public (5)数据 (6)函数 4.1.2 类的访问限定符包括(1)、(2)和(3)。私有数据通常由 (4)函数来访问(读和写)。这些函数统称为(5)。 答案: (1)public(公有的) (2)private(私有的) (3)protected(保护的) (4)公有的成员函数 (5)类的接口 4.1.3 通常在逻辑上,同一类的每个对象都有(1)代码区,用以存储成员函数。而 在物理上通常只有(2)代码区。只有在(3)定义,并(4)的函数和加了关键字(5)的函数例外。 答案: (1)独立的 (2)共用的 (3)在类说明中 (4)不包括循环等复杂结构 (5)inline 4.1.4 C++中支持三种域:(1)、(2)、(3)。函数域被包括在 (4)中,全局域被包括在(5)中。using指示符以关键字using开头,后面是关键字(6),最后是(7)。这样表示以后在该名字空间中所有成员都(8)。如不使用using指示符则在使用时要加::,称为(9)运算符。 答案: (1)局部域(local scope) (2)名字空间域(namespace scope) (3)类域(class scope) (4)局部域 (5)名字空间域 (6)namespace (7)名字空间名

面向对象和面向结构区别联系

面向对象方法与结构化方法比较 答:分析是问题抽象 (做什么),设计是问题求解 (怎么做),实现是问题的解 (结果)。在问题抽象阶段,结构化方法面向过程,按照数据变换的过程寻找问题的结点,对问题进行分解。因此,与面向对象方法强调的对象模型不同,描述数据变换的功能模型是结构化方法的重点。如果问题世界的功能比数据更复杂或者更重要,那么结构化方法仍然应是首选的方法学。如果数据结构复杂且变换并不多,那么如以过程主导分析和设计,一旦有系统变更就会给下游开发带来极大混乱。 由于对过程的理解不同,面向过程的功能细分所分割出的功能模块有时会因人而异。而面向对象的对象细分,从同一问题领域的对象出发,不同人得出相同结论的比率较高。 在设计上,结构化方法学产生自顶向下、结构清晰的系统结构。每个模块有可能保持较强的独立性,但它往往与数据库结构相独立,功能模块与数据库逻辑模式间没有映射关系,程序与数据结构很难封装在一起。如果数据结构复杂,模块独立性很难保证。面向对象方法抽象的系统结构往往并不比结构化方法产生的系统结构简单,但它能映射到数据库结构中,很容易实现程序与数据结构的封装。 在软件工程基本原则中有一条“形式化原则”,即对问题世界的抽象结论应该以形式化语言 (图形语言、伪码语言等) 表述出来。结构化方法可以用数据流图、系统结构图、数据辞典、状态转移图、实体关系图来进行系统逻辑模型的描述;而面向对象方法可以使用对象模型图、数据辞典、动态模型图、功能模型图。其中对象模型图近似系统结构图与实体关系图的结合,动态模型图类似状态迁移图,功能模型图类似数据流图。 结构化方法三大模型:分析模型;设计模型;实现模型 面向对象方法三大模型:对象模型;动态模型;功能模型 等价划分的基本思想是什么? 答:根据程序的输入特性,将程序的定义域划分为有限个等价区段—“等价类”,从等价类中选择出的用例具有“代表性”,即测试某个等价类的代表值就等价于对这一类其它值的测试。如果某个等价类的一个输入数据(代表值)测试中查出了错误,也即是该等价类中的其它值也会查出同样的错误。

相关文档
最新文档