版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章
面向对象的程序设计
本章要点:
面向对象的基本概念
类的定义与对象的声明
构造函数和析构函数
类的静态成员和实例成员
方法重载及运算符重载的编程实现
类的继承与多态性的编程实现
类的属性的实现7.1循序渐进学理论
7.1.1面向对象程序设计概述
1.面向对象程序设计的由来面向对象的程序设计是一种基于结构分析的、以数据为中心的程序设计方法。面向对象的程序设计方法总体思路是:将数据及处理这些数据的操作都封装(Encapsulation)到一个称为类(Class)的数据结构中,在程序中使用的是类的实例——对象。对象是代码与数据的集合,是封装好了的一个整体,对象具有一定的功能。也就是说对象是具有一定功能的程序实体。程序是由一个个对象构成的,对象之间通过一定的“相互操作”传递消息,在消息的作用下,完成特定的功能。
2.面向对象程序设计的基本概念
(1)类和对象通常把具有同样性质和功能的东西所构成的集合叫作类。
(2)属性、方法与事件属性是对象的状态和特点。
方法是对象能够执行的一些操作,它体现了对象的功能。事件是对象能够识别和响应的某些操作。(3)封装
所谓的封装,就是将用来描述客观事物的一组数据和操作组装在一起,形成一个类。
7.1.2类和对象的声明
1.类的声明[格式]:[类修饰符]class类名[:基类类名] { 成员定义列表; }【例7-1】定义一个Student类,用来对学生的信息和功能进行描述。假设学生具有学号、姓名、年龄、性别、平均成绩等特征,并且具有设置学生特征和显示学生特征的功能。2.对象的声明
[格式]:类名 实例名=new类名([参数]);3.类的成员(1)类成员的分类
类的具体成员如下。
常量:用来定义与类相关的常量值。
字段:类中的变量,相当于C++中的成员变量。
类型:用来定义只能在类中使用的局部类型。
方法:完成类中各种计算或功能的操作。
属性:定义类的特征,并对它们提供读、写操作。
事件:由类产生的通知,用于说明发生了什么事情。
索引器:允许编程人员在访问数组时,通过索引器访问类的多个实例。又称下标指示器。
运算符:定义类的实例能使用的运算符。
构造函数:在类被实例化时首先执行的函数,主要是完成对象初始化操作。
析构函数:在对象被销毁之前最后执行的函数,主要是完成对象结束时的收尾操作。(2)类成员的可访问性在编写程序时,可以对类的成员使用不同的访问修饰符,从而定义它们的访问级别,即类成员的可访问性(Accessibility)。
在C#中,根据类成员的可访问性可以把类成员分成四类,分别是公有成员(public)、私有成员(private)、保护成员(protected)、内部成员(internal)。(3)类的静态成员和实例成员类的成员又可以分成静态成员和非静态成员。在声明成员时,如果在语句前加上static保留字,则该成员是静态成员,如果没有static保留字,则成员是非静态成员。二者最重要的区别是:静态成员属于类所有,非静态成员属于类的实例所有,所以又称实例成员。
(3)构造函数的访问修饰符总是public。如果是private,则表示这个类不能被实例化,这通常用于只含有静态成员的类中。(4)构造函数由于不需要显式调用,因而不用声明返回类型。(5)构造函数可以带参数也可以不带参数。
2.析构函数析构函数在对象销毁时被调用,常用来释放对象占用的存储空间。析构函数具有以下特点。(1)析构函数不能带有参数。(2)析构函数不能拥有访问修饰符。
(3)不能显式地调用析构函数。(4)析构函数的命名规则是在类名前加上一个“~”号。如上例的Example1类的析构函数为:~Example1(){};(5)析构函数在对象销毁时自动调用。【例7-3】类的构造函数和析构函数的演示。(程序代码详见例7-3)[执行结果]
【例7-4】静态方法和动态方法的演示。请观察并分析下列程序的执行结果。(程序代码详见例7-4)[执行结果]
3.参数数组
关于参数数组,需掌握以下几点。(1)若形参表中含一个参数数组,则该参数数组必须位于形参列表的最后;(2)参数数组必须是一维数组;(3)不允许将params修饰符与ref和out修饰符组合起来使用;(4)与参数数组对应的实参可以是同一类型的数组名,也可以是任意多个与该数组的元素属于同一类型的变量;(5)若实参是数组则按引用传递,若实参是变量或表达式则按值传递。
【例7-5】参数数组的演示。请观察并分析下列程序的执行结果。
(程序代码详见例7-5)[执行结果]
7.1.5运算符重载
在C#中,运算符重载在类中进行声明,声明的格式如下。[格式]:返回值类型operator运算符(运算对象列表) { 重载的实现部分; };在C#中,可以重载的运算符主要有:+-!~++--truefalse*/%&|^<<>>==!=<><=>=不能重载的运算符有:.=&&||?:newtypeofsizeofis【例7-7】运算符重载的演示。请观察并分析下列程序的执行结果。
(程序代码详见例7-7)[执行结果]
7.1.6域与属性
1.域域又称字段,它是类的一个成员,这个成员代表与对象或类相关的变量。域的定义格式如下。[格式]:[域修饰符]域类型域名;【例7-8】域的演示。请观察并分析下列程序的执行结果。(程序代码详见例7-8)[执行结果]
7.1.7this关键字
this关键字用来引用类的当前实例,成员通过this关键字可以知道自己属于哪一个实例。this关键字只能用在类的构造函数、类的实例方法中,在其它地方(如静态方法中)使用this关键字均是错误的。7.1.8类的继承
继承是面向对象程序设计中实现代码重用的重要机制之一,它起源于现实世界中事物之间的联系。类的继承的基本格式与功能如下。[格式]:class派生类类名:基类类名{成员声明列表;}【例7-10】类继承的演示。请观察并分析下列程序的执行结果。(程序代码详见例7-10)
[执行结果]
【例7-11】虚函数与多态性的演示。请观察并分析下列程序的执行结果。(程序代码详见例7-11)[执行结果]
7.1.10密封类与抽象类
把一个类声明为密封类的原因是为了防止该类被其它类继承,密封类的声明方法是在类名前加上sealed修饰符。抽象类表示一种抽象的概念,一般用于为派生类提供公共接口。在声明类时,在类名前有abstract修饰符则表示该类为抽象类。抽象类只能作为其他类的基类,不能被实例化,在抽象类中可以包含抽象方法和抽象访问器。7.2.2典型实例二:复数“*”运算及复数值设置的实现
【实例题目】编写一个复数类,该复数类具有以下功能:(1)乘法运算的功能。如a和b分别是该复数类的两个实例,则可以进行a*b的运算,运算结果是一个复数,该复数是复数a和复数b的乘积。(2)对复数值进行设置的功能,有两种设置方法,分别对复数的实部(虚部为0)进行设置、对复数的实部和虚部同时进行设置。然后编程进行验证。验证界面如图7-2所示。图7-2复数“*”运算及复数值设置的运行界面7.3上机练习重应用
7.3.1上机练习一:栈模型的实现
【练习题目】栈是一种重要的数据结构,在内存中占用连续的存储单元。栈有两个端点,固定的栈底和浮动的栈顶。为指示栈顶位置还应设一个指示成员变量(称为栈顶指示器)。栈有两种基本操作:push(压栈)和pop(出栈),压栈是向栈顶位置写入一个元素,然后使栈顶指示器加1,出栈是先使栈顶指示器减1,再把该位置的元素读出来。栈及其操作模型如图7-3所示,sp代表栈顶指示器。请编程实现栈的模型并对之进行测试,测试的界面如图7-4所示。图7-4栈演示运行界面
7.3.2上机练习二:从shape类派
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学数学一年级第二学期口算计算共3011道题
- 2025年四川货运资格证在哪里练题
- 2025年马鞍山考货运从业资格证
- 七年级 下学期 地理 商务星球版《澳大利亚》合作探究教案(第1课时)
- 2025年西双版纳从业资格证模拟考试题下载货运
- 2025年鹤岗货运资格证考试口诀
- 2025年天津货运从业资格证考试题库答案解析大全
- 企业如何应对不断变化的安全法规环境
- 制造业的数字化转型与工业互联网的沟通技术
- 2025年广州货运考试
- 仓库租赁服务投标方案(技术方案)
- 项目投资决策分析与评价(天大微专业)智慧树知到期末考试答案章节答案2024年
- 语言、文化与交际智慧树知到期末考试答案章节答案2024年湖南大学
- 湖北省竹山县四棵树钒矿矿产资源开发利用与生态复绿方案
- 品质部组织架构图构
- 上海市浦东新区2023-2024学年一年级上学期期末考试数学试题
- 教学课件-思想政治教育心理学-杨芷英
- 可研报告软件
- 玉米大垄免耕栽培技术
- 国有企业安全部、环保部2024年安全生产工作要点
- 2024年医德医风课件(增加附录条款)
评论
0/150
提交评论