医用仪器软件设计 课件【ch03】基于 C# 的面向对象程序设计_第1页
医用仪器软件设计 课件【ch03】基于 C# 的面向对象程序设计_第2页
医用仪器软件设计 课件【ch03】基于 C# 的面向对象程序设计_第3页
医用仪器软件设计 课件【ch03】基于 C# 的面向对象程序设计_第4页
医用仪器软件设计 课件【ch03】基于 C# 的面向对象程序设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章基于C#的面向对象程序设计工业和信息化部“十四五”规划教材医用仪器软件设计—基于WinForm01类的封装实验实验内容创建ConvertTime类,在类中定义一个CalcTime类,进一步在CalcTime类中依次定义用于指定小时值、分钟值和秒值的常量TIMEVALHOUR、TIMEVALMIN和TIMVALSEC;用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec;用于计算小时值、分钟值和秒值的calcHour()、calcMin()和calcSec()方法;用于计算三个时间值的calcTimeVal()方法;用于获取三个时间值的getTimeVal()方法。面向过程和面向对象在面向对象出现之前,广泛采用的是面向过程。面向过程是一种以过程为中心的编程思想,以什么正在发生为目标进行编程。即程序是一步一步地按照一定的顺序从头到尾执行一系列的函数。面向对象是一种以事物为中心的编程思想。即当解决一个问题时,面向对象会从这些问题中抽象出一系列对象,再抽象出这些对象的属性和方法,让每个对象去执行自己的方法。面向对象中的方法相当于面向过程中的函数。实验原理类与对象类与对象是整个面向对象中最基本的组成单元。其中,类是抽象的概念集合,表示一个共性的产物,类中定义的是属性和行为(方法);对象是一种个性的表示,表示一个独立而具体的个体。可以用一句话来总结类和对象的区别:类是对象的模板,对象是类的实例。类只有通过对象才可以使用,在开发中先产生类,再产生对象。类不能直接使用,对象是可以直接使用的。实验原理

实验原理变量和类型类与对象20%30%40%50%成员变量成员变量是定义在类体中、方法体之外的变量。成员变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。局部变量在方法(包含构造方法)和语句块中定义的变量称为局部变量。这种变量的声明和初始化都是在方法中进行的,方法结束后,变量自动销毁。类变量类变量也声明在类体中、方法体之外,但必须声明为static类型。类变量也称为静态变量。实验原理

成员方法对应类的行为,如汉堡店类中的selectBurger()、publicvoidpay()、privatevoidmakeBurger()和publicvoiddeliverBurger()方法。一个成员方法可以不带参数,也可以带一个或若干参数,这些参数可以是对象也可以是基本数据类型的变量。

C#中常见的访问修饰符包括private、public、protected和internal,这些修饰符控制着对类、类的成员变量及成员方法的访问,修饰符权限如表3-1所示。实验原理

访问修饰符类的成员方法和构造方法实验原理对象是根据类创建的。在C#中,使用关键字new来创建一个新的对象。创建对象需要以下3步。①声明:声明一个对象,包括对象名称和对象类型;②实例化:使用关键字new来创建一个对象;③初始化:使用关键字new创建对象时,会调用构造方法初始化对象。实验原理对象的创建、操作和销毁在面向对象程序设计中,封装是指一种将抽象性方法接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。类的封装实验原理类的封装实验原理图如图3-2所示。本节实验剖析实验步骤首先,新建一个控制台应用程序,设置“项目名称”为ConvertTime,保存至“D:\WinFormTest\OOP01.类的封装实验”文件夹中。然后,将程序清单3-1中的代码输入Program.cs文件中。下面按照顺序对部分语句进行解释。2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。本节任务02基于数组的秒值-时间值转换实验实验内容创建ConvertTime类,在类中定义一个父类CalcTime,在父类中依次定义用于指定小时值、分钟值的常量TIMEVALHOUR和TIMEVALMIN;用于保存小时值和分钟值的成员变量mHour和mMin;用于计算小时值和分钟值的calcHour()和calcMin()。然后定义一个继承父类的CalcAllTime子类,在子类中定义用于指定秒值类型的常量TIMEVALSEC;用于保存秒值的成员变量mSec;用于计算秒值的calcSec()方法。

继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类。继承是类与类之间的关系,使用继承可以减少代码的冗余。实验原理类的继承在C#中使用“:”来实现子类对父类的继承,而且所有的类都继承自System.Object,如果一个类的定义没有使用“:”,则默认继承Object祖先类。注意,C#中的对象仅能直接派生于一个基类,当然基类也可以有自己的基类。实验原理继承的实现继承的优点有:①代码冗余度低,开发时间短;②代码扩展性高,系统开发灵活性强;③代码重用性高,系统出错概率低。类也有相应的缺点:①继承是侵入性的,只要继承,就必须拥有父类的所有属性和方法;②子类拥有父类的属性和方法,增加了子类代码的约束,降低了代码的灵活性;③当父类的常量、变量和方法被修改时,需要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能带来大段代码需要重构的后果,增强了代码的耦合性。继承的优点和缺点实验原理通过调用该对象的dispTime()方法计算和显示时间,如图3-4所示。本节实验剖析实验步骤首先,新建一个控制台应用程序,设置“项目名称”为ConvertTime,保存至“D:\WinFormTest\OOPO2.类的继承实验”文件夹中。然后,将程序清单3-2中的代码输入Program.cs文件中。下面按照顺序对部分语句进行解释。03类的多态实验实验内容创建ConvertTime类,在类中定义一个DispTime类,之后在DispTime类中定义一个虚方法dispTime()。然后创建一个继承DispTime类的CalcTime子类,进一步在CalcTime类中依次定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec;用于计算小时值、分钟值和秒值的calcHour()、calcMin()和calcSec()方法,并重写dispTime()方法。20%30%40%50%类的多态性多态性是指在父类中定义的属性和方法被子类继承后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。重载与重写的区别如果同一个类中包含两个或两个以上方法名相同、参数列表不同(与返回值类型无关)的方法,则称为方法重载。实验剖析本节实现类的多态,主要体现在方法的重写及父类引用指向子类的对象。首先创建一个父类DispTime,在类中定义一个虚方法dispTime()。然后继承父类创建一个CalcTime子类,在该类中重写dispTime()方法。实验原理实验步骤首先,新建一个控制台应用程序,设置“项目名称”为ConvertTime,保存至“D:\WinFormTest\OOP03.类的多态实验”文件夹中。然后,将程序清单3-3中的代码输入Program.cs文件中。下面按照顺序对部分语句进行解释。04抽象类实验实验内容创建ConvertTime类,在类中定义一个Time抽象类,在抽象类中依次定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec,以及用于显示时间的dispTime()方法,该方法为抽象方法。然后定义一个继承抽象类的CalcTime子类,在子类中定义用于计算小时值的calcHour()方法,用于计算分钟值的calcMin()方法,用于计算秒值的calcSec(方法,最后,重写用于显示时间的dispTime()方法。抽象类也是类,只是抽象类具备一些特殊的性质。通常编写一个类时,会为这个类定义具体的属性和方法,但某些情况下只知道一个类需要哪些属性和方法,不知道这些方法具体是什么,这时就需要用到抽象类。实验原理抽象类如果一个类中的方法的具体实现由它的子类确定,那么可以在父类中声明该方法为抽象方法。定义抽象方法时,同样需要使用abstract关键字,定义抽象方法的语法如下:[权限修饰符]abstract返回值类型方法名(参数列表);抽象方法继承抽象类定义继承抽象类的子类时,需要使用“:”,语法如下:实验剖析无论是需要显示时间的场合,还是需要计算和显示时间的场合,都有一个共同点,就是需要有保存时间的三个变量,以及显示时间的方法。实验原理05接口实验实验内容定义一个实现接口ITime的CalcTime类,在该类中定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec;用于计算小时值、分钟值和秒值的calcHour()、calcMin()和calcSec()方法;最后,重写用于显示时间的dispTime()方法。

接口是抽象类的延伸,通常用interface来声明。抽象类是对一种事物的抽象,即对类抽象;接口是对行为的抽象。

接口中可以含有变量和方法。

需要有保存时间的三个变量,以及显示时间的方法。01020304实验原理

首先,新建一个控制台应用程序,设置“项目名称”为ConvertTime,保存至“D:\WinFormTest\OOP05.1.接口实验”文件夹中。然后,将程序清单3-5中的代码输入Program.cs文件中。下面按照顺序对部分语句进行解释。实验步骤06命名空间实验实验内容创建CalcTime类,该类位于命名空间ConvertT.leyutek.calc中,在CalcTime类中依次定义用于指定小时值、分钟值和秒值的常量TIMEVALHOUR、TIMEVALMIN和TIMVALSEC;用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec;用于计算小时值、分钟值和秒值的calcHour()、calcMin()和calcSec()方法;用于计算三个时间值的calcTimeVal()方法;用于获取三个时间值的getTimeVal(方法。20%30%40%50%C#命名空间命名空间提供了一种能够有效解决命名冲突的方式。创建命名空间在代码中,通过使用关键字namespace来定义命名空间,使用关键字using可以导入命名空间。具体的语法已在1.5.4节中介绍。实验剖析本节实现类的多态,主要体现在方法的重写及父类引用指向子类的对象。首先创建一个父类DispTime,在类中定义一个虚方法dispTime()。然后继承父类创建一个CalcTime子类,在该类中重写dispTime()方法。实验原理首先,新建一个控制台应用程序,设置“项目名称”为ConvertTime,保存至“D:\WinFormTestOOP06.命名空间实验”文件夹中。在“解决方案资源管理器”中右键单击ConvertTime,在快捷菜单中依次选择“添加”→“新建文件夹”,将文件夹命名为com。用同样的方法在com文件夹中新建leyutek文件夹,再在leyutek文件夹中新建calc文件夹。右键单击calc,在快捷菜单中依次选择“添加”→“新建项”,在弹出的对话框中选择“类”,并命名为CalcTime.cs,单击“添加”按钮。实验步骤07异常处理实验实验内容创建TickException自定义异常类,实现构造方法。然后创建ConvertTime类,在该类中依次定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec;用于计算和显示时间值的calcTimeVal()方法,如果tick值小于0或大于86399,则通过throw实例化TickException自定义异常类。C#异常处理当预先知道有可能会出现错误,但是不能百分百肯定会出现时,可以在可能出现错误的地方,编写完善的代码来处理错误和异常,从而避免中断程序的执行。C#异常类型C#中所有的异常类都是System.Exception的直接或间接子类,这些异常类包含了异常的相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论