第2章 面向对象程序设计基础

合集下载

《C++程序设计》习题解答

《C++程序设计》习题解答

《C++程序设计》习题解答第1章C++概述1.填空题(1)在面向对象程序设计中,对象是由___________、___________和___________封装在一起构成的实体。

(2)在面向对象程序设计中,类是具有________________和___________的对象的集合,它是对一类对象的抽象描述。

(3)面向对象程序设计最突出的特点就是___________、___________和___________。

(4)C++语言包含头文件的格式有两种,即_______________和__________________。

(5)C++源程序要经过________、_________、________和_________四个环节,才能在屏幕上显示结果。

(6)每个C++程序都从________函数开始执行。

(7)每个函数体都以________开始,以________结束。

(8)C++程序中的每条语句以________结束。

(9)C++程序的头文件和源程序的扩展名分别为__________和_________,目标程序的扩展名为__________,可执行程序的扩展名为__________。

(10)在C++程序中使用基本输入/输出语句需包含的头文件是________________,应放在程序的________________。

(11)在C++程序中注释语句有_______________和______________两种格式。

(12)C++程序的续行符为_________。

(13)如果从键盘输入语句给变量X,则输入函数的形式为_____________;如果再将变量X的值显示在屏幕上,其输出函数的形式为_____________。

(14)C++程序中的“endl”在输出语句中起___________作用。

参考答案:(1)对象名,一组属性数据,一组操作(2)相同属性数据,操作(3)封装性,继承性,多态性(4)#include<文件名.扩展名>,#include"文件名.扩展名"(5)编辑,编译,连接,运行(6)主函数(7){、}(8)分号;(9).h,.cpp,.obj,.exe(10)#include<iostream.h>,开始部分(11)/* */,//(12)\(13)cin>>X、cout<<X(14)换行并清空流2.选择题(1)面向对象程序设计把数据和()封装在一起。

程序设计基础

程序设计基础

第二章程序设计基础2.1程序设计方法与风格程序设计是一门艺术,需要相应的理论、技术、方法和工具来支持。

就程序设计方法和技术的发展而言,主要经过了结构化程序设计和面向对象程序设计阶段。

除了好的程序设计方法和技术外,程序设计风格也是很重要的。

因为程序设计风格会深刻地影响软件的质量和可维护性,良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护,因此程序设计风格对保证程序的质量是很重要的。

一般来说,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。

程序是由人来编写的,为了测试和维护程序,往往还要阅读和跟踪程序,因此程序设计的风格总体而言应该强调简单和清晰,程序必须是可理解的。

可以认为,著名的“清晰第一,效率第二”的论点已成为当今主导程序设计风格。

要形成良好的程序设计风格,主要应注重和考虑下述一些因素。

1、源程序文档化源程序文档化应考虑如下几点:(1)符号名的命名:符号名的命名应具有一定实际意义,以便于对程序功能的理解。

(2)程序注释:正确的注释能够帮助读者理解程序。

注释一般包括序言性注释和功能性注释。

序言性注释通常位于每个程序的开头部分,它给出程序的整体说明,主要描述内容包括:程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期、修改日期等。

功能性注释的位置一般嵌在源程序体之中,主要描述其后的语句或程序做什么。

(3)视觉组织:为使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。

2、数据说明的方法在编写程序时,需要注意数据说明的风格,以便使程序中的数据说明更易于理解和维护。

一般应注意以下几点:(1)数据说明的次序规范化。

鉴于程序理解、阅读和维护的需要,使数据说明次序固定,可以使数据的属性容易查找,也有利于测试、排错和维护。

(2)说明语句中变量安排有序化。

当一个说明语句说明多个变量时,变量按字母顺序排列为好。

(3)使用注释来说明复杂数据的结构。

公共基础知识2-程序设计方法

公共基础知识2-程序设计方法

第三章 软件工程基础
基本要求:
掌握软件工程的基本方法,具有初步应用相关技 术进行软件开发的能力。
考试要求:
1、软件工程基本概念,软件生命周期概念,软件工具与 软件开发环境。 2、结构化分析方法,数据流图,数据字典,软件需求规 格说明书。 3、结构化设计方法,总体设计与详细设计。 4、软件测试的方法,白盒测试与黑盒测试,测试用例设 计,软件测试的实施,单元测试、集成测试和系统测 试。 5、程序的调试,静态调试与动态调试。
概要设计中有关的几个概念: 模块化:是指解决一个复杂问题时自顶向下逐层把 软件系统划分成若干模块的过程。 模块独立性:每个模块只完成系统要求的独立的子 功能,并且与其它模块的联系最少且接口简单。 用两个标准来度量模块的独立性——耦合性和 内聚性。 • 耦合性:模块之间联系越紧密,其耦合性就越强, 模块的独立性就越差。 • 内聚性:一个模块内各元素(语句、程序段)联 系越紧密,它的内聚性就越高。 尽量做到高内聚、低耦合,才能提高软件质量。
2.测试方法 软件测试方法一般分为两大类:动态测试方法 与静态测试方法。而动态测试方法又根据测试用例 的设计方法不同,分为黑盒测试盒白盒测试两类。 静态测试:是指被测试程序不在机器上运行,也就 是不执行该程序,只是对程序文本进行检查, 通过阅读盒讨论,分析和发现程序中的错误。 动态测试:是基于计算机的测试,是为了发现错误 而执行程序的过程,即根据软件开发各个阶段 的规格说明设计的测试用例,并利用这些测试 用例去运行程序,以发现程序错误的过程。
软件需求规格说明书 是需求分析阶段研制的主要成果。主要有3 个作用:(1)作为用户和软件开发人员之间的 合同;(2)作为开发人员进行设计和编程的根 据;(3)作为软件开发完成后验收的依据。 主要内容: 软件功能概述 数据描述 功能描述 附录

面向对象程序设计教案

面向对象程序设计教案

面向对象程序设计教案第一章计算机与程序设计基本内容:1.把程序及其相关文档资料称为软件。

2.程序设计语言是人类用来向计算机传递信息的表示方法、约定和规则的集合。

3.传统的程序设计语言是过程性语言,使用这类语言编制程序的主要工作,是设计解题过程,因此称为面向过程程序设计。

4.用模块化、抽象、信息隐藏、局部化和模块化独立等原理及结构程序设计技术指导面向过程程序设计,能够提高软件开发效率,增加软件的可理解性和可维护性。

这些方法不仅适用于面向过程程序设计也适用于面向对象程序设计方法。

5.面向对象方法有四个要点,只有同时使用对象、类、继承和消息的方法,才是真正的面向对象方法。

学习面向对象程序设计,首先要学会面向对象的思维解题方法。

各种面向对象的程序设计语言,无非是实现面向对象解题方法的工具。

6.面向对象方法的主要优点是,接近人类习惯的思维方法、稳定性好、可重用性好和可维护性好。

是解决软件开发面临的难题的最有希望最有前途的方法之一。

1.1 计算机的基本结构1.2 程序设计语言一、机器语言(machine language):以0和1表示手工操作二、汇编语言(assembler language):例如mov ax,100add ax,bx等开始使用批处理(batch processing)三、高级语言(high-level language):如60年代的ALGOL四、结构化程序设计(structured programming)整个程序是一个模块层次(hierarchy of modules)每一模块内既有数据,又有代码,用于按一定算法对代码进行操作如FORTRAN,C等五、面向对象的程序设计(Object-Oriented Programming, OOP)1.3 面向过程程序设计三种基本结构:1、顺序结构。

2、选择结构。

3、循环结构:当型循环结构;直到型循环结构。

结构化程序设计方法:1、自顶而下;2、逐步细化;3、模块化设计;4、结构化编码。

计算机二级理论知识精华版

计算机二级理论知识精华版

第一章数据结构与算法第一节算法一、算法的基本概念所谓算法是指解题方案的准确而完整的描述。

1、算法的基本特征:(1)可行性(2)确定性(3)有穷性(4)拥有足够的情报2、算法的基本要素(1)算法中对数据的运算和操作算术运算,逻辑运算,关系运算,数据传输(2)算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构。

一个算法可以用顺序、选择、循环三种基本控制结构组合而成。

2、算法设计的基本方法(1)列举法(2)归纳法(3)递推(4)递归(5)减半递推技术二、算法复杂度1、算法的时间复杂度:指执行算法所需要的计算工作量。

用算法在执行过程中所需基本运算的次数来衡量算法的工作量。

方法:平均性态,最坏情况复杂性2、算法的空间复杂度:指执行这个算法所需的内存空间。

第二节数据结构的基本概念一、什么是数据结构数据结构是指相互有关联的数据元素的集合。

如:(1)春、夏、秋、冬(2)父亲、儿子、女儿(1)数据元素有共同的特征(2)各个元素之间存在着某种关系(联系)。

用前后件关系来描述。

如:夏是秋的前件,秋是夏的后件。

父亲是儿子和女儿的前件儿子和女儿都是父亲的后件1、数据的逻辑结构数据结构是指带有结构的数据元素的集合。

一个数据结构应包含以下两方面的信息:(1)表示数据元素的信息(2)表示各数据元素之间的前后件关系,前后件关系是逻辑关系,与它们在计算机中的存储位置无关。

数据的逻辑结构反映数据元素之间的逻辑关系。

2、数据的存储结构数据的逻辑结构在计算机中的存放形式称为数据的存储结构,也称数据的物理结构。

采用不同的存储结构,数据处理的效率不同。

一般情况下,数据的逻辑结构和存储结构是不同的。

二、数据结构的图形表示每一个数据元素用中间标有元素值的方框表示,称为数据结点,简称结点。

用一条有向线段从前件结点指向后件结点。

父亲丨在数据结构中,没有前件的结点称为根结点,没有后件的结点称为终端结—午—点(也称为叶子结点)。

其他结点一儿子女儿般称为内部结点。

面向对象程序设计(谭浩强版)

面向对象程序设计(谭浩强版)
可重用性较好
一、面向过程与面向对象程序设计
面向过程程序设计 面向对象程序设计
P5 P6 P4 P3 P2 P1
O5 O4 O3 O2 O1
一、面向过程与面向对象程序设计
面向过程程序设计 面向对象程序设计
O5 O4 O3 O2 O1
二、抽象在面向对象中的作用
Ⅰ、抽象的概念 抽象代表着一个对象的本质特征,这个特征将 这个对象与所有其他种类的对象区别开来; 抽象是通过从特定的实例中抽取共同的性质以 形成一般化的概念的过程; 抽象具有层次;
在计算机语言发展史上具有划时代的意义, 引入了许多程序设计概念。如变量、数组、循环、 分支等。
20世纪50年代中期,Algol语言 提出块(Begin…End)思想,对数据进行保护, 是一种初级封装。
1.1 从C到C++
20世纪60年代中期,Simula 67语言 面向对象语言的鼻祖,提出了对象、类的概 念,并支持类的继承。 20世纪70年代中期,Ada语言
1.2 最简单的C++程序
例1.3:输入两个数x和y,求两数中的大者。
#include<iostream> using namespace std; 函数声明 int main() { int max(int x,int y); int a,b,c; cin>>a>>b; c=max(a,b);//函数调用 cout<<"max="<<c<<endl; return 0; } int max(int x,int y) {int z; if(x>y) z=x; else
注意其两面性
1.1先研究事物,而后才能研究过程。必须 先知道一个事物是什么,而后才能觉察这个事物 中所发生的变化。 《路德维希· 费尔巴哈和德国古典文学的终结》

2Java第二单元练习题-面向对象程序设计基础Word版

2Java第二单元练习题-面向对象程序设计基础Word版

2面向对象程序设计基础2.1单项选择题1.下面关于类的继承性的描述中,错误的是()。

A.继承是在已有的基础上生成新类的一种方法B.Java语言要求一个子类只有一个父类C.父类中成员的访问权限在子类中将被改变D.子类继承父类的所有成员,但不包括私有的成员方法2.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是()。

A.默认B.protected C.private D.public3.在类的修饰符中,规定只能被同一包类所使用的修饰符是()。

A.public B.默认C.final D.abstract4.下列关于子类继承父类的成员描述中,错误的是()。

A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。

B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。

C.子类中继承父类中的所有成员都可以访问。

D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子类执行自己的操作中,使用自己定义的变量。

5.下列关于继承性的描述中,错误的是()。

A.一个类可以同时生成多个子类B.子类继承了父类中除私有的成员以外的其他成员C.Java支持单重继承和多重继承D.Java通过接口可使子类使用多个父类的成员6.下列关于抽象类的描述中,错误的是()。

A.抽象类是用修饰符abstract说明的 B.抽象类是不可以定义对象的C.抽象类是不可以有构造方法的D.抽象类通常要有它的子类7.下列关于构造方法的叙述中,错误的是()。

A.构造方法名与类名必须相同B.构造方法没有返回值,且不用void声明C.构造方法只能通过new自动调用D.构造方法不可以重载,但可以继承8.下面叙述中,错误的是()。

A.子类继承父类B.子类能替代父类C.父类包含子类D.父类不能替代子类9.下面关于接口的描述中,错误的是()。

A.一个类只允许继承一个接口B.定义接口使用的关键字是interfaceC.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现D.接口实际上是由常量和抽象方法构成的特殊类10.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?()A.ArrayList myList=new Object(); B.ArrayList myList=new List();C.List myList=new ArrayList(); D.List myList=new List();11.下列哪一个方法与方法public void add(int a){}为不合理的重载方法?()A.public void add(char a) B.public int add(int a)C.public void add(int a,int b) D.public void add(float a)12.MAX_LENGTH是int型public成员变量,变量值保持为常量100,其定义是()。

C++程序设计04737 第2章 面向对象的基本概念

C++程序设计04737 第2章 面向对象的基本概念

void myDate::setDate(myDate oneD)
{year=oneD.year;month=oneD.month;day=oneD.day;return;}
myDate myDate::getDate()
{return *this;}
void myDate::setYear(int y)
例2-4单项选择题
下列关于类定义的叙述中,正确值 B.类中可以声明成员函数,并可以给出参数的默认值
C.类体不能为空,即必须定义成员变量及成员函数 D.类中仅能包含成员变量
答案:B
例2-5单项选择题
若Test类中的一个成员函数set的说明如下:void set (Test &a);
联函数。
如果成员函数定义在类体外,则类体内必须要有函数原型,类体外函数定义的前面必须用“类
名::”来限定,格式如下:
返回值类型 类名::成员函数名(参数列表)
{
成员函数的函数体
}
类名是成员函数所属类的名字,符号::是类作用域运算符,表明后面的成员函数是属于
类名标识的这个类的。返回值类型就是这个成员函数返回值的类型
第三节 类的初步知识
一、类的定义 面向对象方法中的类,是对具有相同属性和行为的同一类对象的抽象描述,其内部包
括属性(本类的成员变量)和行为(本类的成员函数)两个主要部分,即类以数据为 中心,把相关的一批函数组成为一体。 例2-2描述扑克牌的属性
扑克牌定义为Poker。每张牌由花色和点数描述,可以定义为类Poker的两个属性, suits和number。Poker类的操作,可以根据玩法确定。
获取函数。
类中的成员按功能划分,包括成员变量和成员函数;按访问权限划分,包括公有成员、私有成

L02C++基础——福州大学《C++程序设计》课件PPT

L02C++基础——福州大学《C++程序设计》课件PPT
为了避免不同的数据类型在运算中出现类 型问题,应尽量使用同种类型数据。
可以采用强制类型转换:
例如: float c;
达 int a,b;
式 c=float(a)/float(b);
或 c=(float)a/(float)b;
基 本
始。
语 可以由以大写字母、小写字母、下划
法 线(_)或数字0~9组成。
大写字母和小写字母代表不同的标识
符。
6
面向对象程序设计
福州大学 吴小竹

数据类型
——常量与变量

#include <iostream>
数 据 类 变量先声
明后使用

using namespace std; int main() {
和 例:"CHINA" C H I N A \0

"a" a \0

'a' a
式 所以:char c;
c="a";
Page 12 12
面向对象程序设计
福州大学 吴小竹
数据类型
基 本
——布尔型数据


布尔型变量的说明:
类 型
例:bool flag;

布尔型数据的取值:

只有 false 和 true 两个值
大小写的英文字母:A~Z,a~z
基 本 语
数字字符:0~9 特殊字符:

空格 ! # % ^ & * _(下划线) + = - ~ <
>/\'";.
, () [] {}
4
面向对象程序设计

java面向对象程序设计第二章

java面向对象程序设计第二章

简单数据类型及其对应包装类
简单数据类型不是类,但Java提供了与简单类型对应的包装类
普通数据 类型
char byte short
对应的包 装类
Character Byte Short
它们之间的相互转化方法为(以int和 Integer为例): 简单数据类型转化为类对象的方法是:
通过相应类的构造方法来完成。如
Java 初级
第二章 Java语言基础
主要内容

简单数据类型 表达式Βιβλιοθήκη 控制语句简单数据类型
标识符

定义:程序员对程序中的各个元素加以命名时使用的命 名记号称为标识符(identifier)。 Java语言中,标识符是以字母,下划线“_‖,美元符“$‖ 开始的一个字符序列,后面可以跟字母,下划线,美元 符,数字。例如,identifier,userName,User_Name, _sys_val, $change为合法的标识符,而2mail(数字开 头)、 room#(非法字符)、class(关键字)、a-class(含 有运算符)都为非法的标识符。


浮点型(Cont)
实型变量的类型:
数据类型 float double 所占位数 32 64 数的范围 1.4E-45 ~3.4E+38 4.9E-324 ~1.7E308
定义一个float类型的浮点数方法

给一个带小数的数后面加上f(包括科学计数法)。 将能隐式转化的数赋值给浮点变量:如char类型、整型 (十进制、八进制、十六进制)。

在选用整数类型上,一定要注意数的范围,否则可能 由于数的类型选择不当而造成溢出,例如下面的代码 add就存在着潜在的溢出问题,从而为程序带来Bug

C++面向对象程序设计课后答案(谭浩强)

C++面向对象程序设计课后答案(谭浩强)

C++面向对象程序设计课后答案(1-4章)第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。

这种范型的主要特征是:程序=对象+消息。

面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。

第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。

面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。

这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。

[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。

对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。

类和对象之间的关系是抽象和具体的关系。

类是多个对象进行综合抽象的结果,一个对象是类的一个实例。

在面向对象程序设计中,总是先声明类,再由类生成对象。

类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。

[1_3]现实世界中的对象有哪些特征?请举例说明。

对象是现实世界中的一个实体,其具有以下一些特征:(1)每一个对象必须有一个名字以区别于其他对象。

(2)需要用属性来描述它的某些特性。

(3)有一组操作,每一个操作决定了对象的一种行为。

(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。

例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:1966.10.1 工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。

精品文档-面向对象程序设计—Java(第三版)(张白一)-第2章

精品文档-面向对象程序设计—Java(第三版)(张白一)-第2章

第2章 Java语言基础
表2.4列出了Java语言所使用的数据类型。我们将在介绍 了常量、变量等基本概念之后,再结合实例对各种数据类型作 具体讲解。
第2章 J关键字
基 本 数类 据型 类 型
引 用 类 型
名称
整数类型
浮点类型 字符类型 布尔类型 字符串 数组 类 接口
break char double float implements long package short throw void
byte class else for import native private static throws volatile
byvalue * const* extends future inner new protected super transient while
第2章 Java语言基础
第2章 Java语言基础
2.1 Java符号集 2.2 数据类型、常量与变量 2.3 表达式和语句
第2章 Java语言基础
2.1 Java符号集 符号是构成语言和程序的基本单位。Java语言不采用通 常计算机语言系统所采用的ASCII代码集,而是采用更为国际 化的Unicode字符集。在这种字符集中,每个字符用两个字节 即16位表示。这样,整个字符集中共包含65 535个字符。其 中,前面256个字符表示ASCII码,使Java对ASCII码具有兼容 性;后面21 000个字符用来表示汉字等非拉丁字符。但是, Unicode只用在Java平台内部,当涉及打印、屏幕显示、键盘 输入等外部操作时,仍由计算机的具体操作系统决定其
在Java系统中,常量有两种形式:一种是以字面形式直接给 出值的常量;另一种则是以关键字final定义的标识符常量。 不论哪种形式的常量,它们一经建立,在程序的整个运行过程 中其值始终不会改变。按照由浅入深的学习规律,这里只讨论 以字面形式直接给出值的常量,至于以关键字final定义的标 识符常量,将在第4章讨论final修饰符时专门论述。

第02章 Java基本语法规则

第02章  Java基本语法规则
的软件文档格式,故而用javadoc生成软件文档的做法在实际开发 中并不常用)
3. 注意:/* */注释在Java中不可嵌套使用 10
2.2 数据类型
1. 什么是数据类型
定义了数据的性质、取值范围以及对数据所能进行的 运算和操作。
2. 数据类型的分类
① 基本数据类型:保存数据值,在栈空间中为变量分配 空间。
的一致性
8
2.1.3 分隔符
1. 空格
分隔源代码中的不同部分,如数据类型和 变量名或方法名之间。
2. “;”号
语句必须以分号结束,否则一条Java语句 即使换行或跨多行仍然是未结束的。
3. “,”号 4. “.”号
可在方法声明或调用 的参数列表中用于分 隔多个参数,也可在一条声明语句中分隔 同时声明的多个属性或局部变量。
② 第一个字符不能是数字。 ③ 区分大小写。 ④ 长度不限。 ⑤ 不允许将关键字作为标识符。
5
2.1.1 标识符
3. 举例
Girl_$、www_12$、$23boy //合法
88A、&var、a+3、Ok!
//不合法
姓名、i服了you
//合法
sum、Sum、SUM是三个不同的标识符。
4. 命名习惯
Java面向对象 程序设计基础教程
河南大学计算机与信息工程学院
目录
• 第1章 Java语言概述 • 第2章 Java基本语法规则 • 第3章 Java中的面向对象技术 • 第4章 Java基本结构程序 • 第5章 Java基本类 • 第6章 图形用户界面 • 第7章 异常处理 • 第8章 多线程 • 第9章 Java Applet程序 • 第10章 输入输出流与文件处理 • 第11章 Java网络编程 • 第12章 数据库应用

第二章 面向程序设计基础 张思民

第二章 面向程序设计基础 张思民

例题:方法声明与调用的运行结果
方法重载
• 方法重载是指多个方法享有相同的名字,
但是这些方法的参数必须不同,或者是
参数的个数不同,或者是参数类型不同。
返回类型不能用来区分重载的方法。
例题:重载与调用的关系
//例题:方法的重载与调用 import java.io.*; import ng.Math; class MyTest_24{ static double x0,y0,z0; //空间的一个点 static void init() { //初始化方法 x0=2.3f;y0=5.6f;z0=9.2f; } //重载方法1:求另外一个点到该点的距离 static double distance( double x1,double y1,double z1) { return Math.sqrt(Math.pow((x1-x0),2)+ Math.pow((y1-y0),2)+ Math.pow((z1-z0),2));
类声明由四部分组成:类修饰符、类关
键字class、声明父类、实现接口,其一
般形式如下:
[ public][abstract|final] class 类 名 [extends 父类名] [implements 接口列表] { …… }
各组成部分的具体说明
• (1) 类修饰符 • public:这个public关键字声明了类可 以在其他类中使用。缺省时,该类只能被同 一个包中的其他类使用。 • • abstract:声明这个类为抽象类,即这 个类不能被实例化。 final:声明该类不能被继承,即不能有 子类。也就是说,不能用它通过扩展的办法 来创建新类。
3.2.3
构造方法的7个特征
1、具有和类相同的名称; 2、没有返回类型(连void也没有); 3、不能在方法体中出现return语句; 4、在类实例化(用概念定义一个实体)时,它 会由系统自动调用。 5、每个类至少有一个构造方法。如果程序没 有定义,系统会自动默认一个空的构造方法。 6、程序如果定义了构造方法,则系统不再提 供默认的构造方法。 7、构造方法的属性一般是public,也可以省略。 但不能是private。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8


2.2.1 类的定义
class 类名称 类与外部的接口 { public: 公有成员(外部接口) private: 只允许本类中的 成员访问 私有成员 函数访问(可省略) 说明符 protected: 保护成员 只能由本类及其派生类 }; 的成员函数访问
是必需的
9
例2.1:圆类的定义见教材24页
};
CCircle::CCircle(double r) { radius = r>0 ? r : 1; }
14
拷贝构造函数
拷贝构造函数是一种特殊的构造函数,其形参为本类对象 的引用。 class 类名{ public : 类名(形参);//构造函数 类名(类名 &对象名);//拷贝构造函数 …… }; 类名:: 类名(类名 &对象名)//拷贝构造函数的实现 { 函数体 }
12
2.2.2 构造函数
作用:对象的初始化
性质:

与类同名、无返回类型 在对象创建时由系统自动调用


允许重载、带缺省值
如果类中未声明,则系统自动生成一个缺省 形式的构造函数,形如:类名(){ }
13
构造函数举例--- CCircle类
class CCircle {
public:
CCircle() // 无参(缺省)构造函数 { radius = 1; } CCircle(double r); // 带参构造函数 …… private: double radius; 两个构造函数合成一个带缺省值的构造函数 CCircle(double r=1); // 构造函数原型 CCircle::CCircle(double r) // 构造函数定义 { radius = r>0 ? r : 1; }
7
2.2 类与对象的定义

类是C++的灵魂,如果不真正掌握类,就不能真 正掌握C++
C++中的类就是一种用户自己定义的数据类型, 和其它数据类型不同的是,组成这种类型的不仅 可以有数据,而且可以有对数据进行操作的函数。 为了封装的需要,一般将类的定义放在一个.h文 件中,而将类的成员函数的实现放在一个.cpp文 件中。
类是具有相同属性和行为的一组对象的集合, 它为属于该类的全部对象提供了统一的抽象描述, 其内部包括属性和行为两个主要部分。


对象之间的交互:发送消息
4
封装

封装的目的是隐藏对象的内部的实现细节。
通过封装,可以将对象的外部接口与内部的实 现细节分开。 目的是增强安全性和简化编程,使用者不必了 解具体的实现细节,而只需要通过外部接口,以 特定的访问权限,来使用类的成员。
2
2.1 面向对象的基本概念

观点:
自然界是由实体(对象)所组成。

程序设计方法:
使用面向对象的观点来描述、模仿并处理现实
问题。
ห้องสมุดไป่ตู้
要求:
高度概括、分类、和抽象。
程序=多个对象+消息

目的:
实现软件设计的产业化。
3
类和对象

对象是现实世界中一个实际存在的事物
对象的静态特征 对象的行为
同,但需要将它放在类的声明体中,一般为私有访问属 性。

类的成员函数定义:
在类中说明原型,类外给出函数体实现,函数名之前
必须加类名和作用域区分符限定
将成员函数定义为内联函数:
成员函数在类的内部定义,此时无须使用inline关
键字,成员函数自动为内联函数。 成员函数在类内声明,在类外定义。但在类外定义 时,要加关键字inline。类的成员函数允许声明为 11







//Circle.h文件,类CCircle的定义 const double PI = 3.14159; // 定义圆周率为符号常量 class CCircle // 定义类 { public: CCircle() //构造函数 { radius = 1; } virtual ~CCircle() { } // 析构函数 inline double Area()const; // 计算圆的面积 double Circumference() const; // 计算圆的周长 double GetRadius() const // 取得圆的半径 { return radius; } void SetRadius( double r) // 为半径设置新值 { radius = r>0 ? r : 1; } private: double radius; // 数据成员 }; inline double CCircle::Area() const // 计算圆的面积 { return PI * radius * radius; }
const成员函数

const成员函数:
不修改数据成员的值, 在程序中如果不小心修改了这个成员函数中的对象,
则编译器会产生一个语法错误信息。

const 成员函数的定义方法:
在函数的原型和定义中,在函数参数表和函数定义
的左花括号之间加入const关键字。

类的成员函数允许重载,允许带缺省参数值。
//Circle.cpp文件,类CCircle的成员函数的 实现 #include “Circle.h” double CCircle::Circumference() const // 计算圆的周长 { return 2 * PI * radius; }
10
说明:

类的数据成员(成员变量) :与一般的变量声明相

5
继承
继承是C++中支持层次分类的一种机 制,允许程序员在保持原有类特性的基 础上,对新类进行更具体的说明。


实现:声明派生类——2.3
6
多态性


多态:同一名称,不同的功能实现方式。
目的:标识统一,减少程序中标识符的个数;
接口统一,增加程序的灵活性

实现:——2.4
编译时的多态性:重载函数 运行时的多态性:虚函数
教学目标:

了解面向对象的基本概念 熟练掌握类、对象、派生类的定义和使用 掌握类的构造函数和析构函数的定义和特点 能够利用虚函数实现多态性 熟悉友元的特性
1
教学内容:
2.1 2.2 2.3 2.4 2.5 2.6 面向对象的基本概念 类和对象的定义 继承性和派生类 多态性 友元 模板
相关文档
最新文档