《医用仪器软件系统开发-基于Qt(Windows版)》 课件 第4章 面向对象程序设计_第1页
《医用仪器软件系统开发-基于Qt(Windows版)》 课件 第4章 面向对象程序设计_第2页
《医用仪器软件系统开发-基于Qt(Windows版)》 课件 第4章 面向对象程序设计_第3页
《医用仪器软件系统开发-基于Qt(Windows版)》 课件 第4章 面向对象程序设计_第4页
《医用仪器软件系统开发-基于Qt(Windows版)》 课件 第4章 面向对象程序设计_第5页
已阅读5页,还剩112页未读 继续免费阅读

下载本文档

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

文档简介

——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计1-——BasedonQt(WindowsEdition)类的封装实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容创建CalcTime类,在类中依次定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec;用于指定小时值、分钟值和秒值的常量TIME_VAL_HOUR、TIME_VAL_MIN和TIM_VAL_SEC;用于计算三个时间值的calcTimeVal()方法;用于获取三个时间值的getTimeVal()方法。创建ConvertTime类,在类中创建CalcTime类型的对象,通过对象分别获取转换的小时值、分钟值和秒值,然后通过cout输出转换结果。其中,CalcTime类中的calcTimeVal()、getTimeVal()和三个常量访问属性为public,其余的成员变量访问属性为private。在main()方法中获取键盘输入值(0~86399之间的值,包括0和86399),然后,实现秒值-时间值转换,并输出转换结果。实验原理

面向过程是一种以过程为中心的编程思想,以什么正在发生为目标进行编程。即程序是一步一步地按照一定的顺序从头到尾执行一系列的函数。面向对象是一种以事物为中心的编程思想。即当解决一个问题时,面向对象会从这些问题中抽象出一系列对象,再抽象出这些对象的属性和方法,让每个对象去执行自己的方法。值得指出的是,面向对象中的方法相当于面向过程中的函数。

面向过程的优点是性能比面向对象高,因为类调用时需要实例化,比较消耗资源,例如单片机、嵌入式、Linux/Unix等对性能要求高的通常采用面向过程开发;其缺点是没有面向对象易维护、易复用、易扩展。

面向对象的优点是易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活;其缺点是性能比面向过程低。1.面向过程和面向对象2.类与对象类与对象是整个面向对象中最基本的组成单元。其中,类是抽象的概念集合,表示的是一个共性的产物,类中定义的是属性和行为(方法);对象是一种个性的表示,表示一个独立而具体的个体。可以用一句话来总结类和对象的区别:类是对象的模板,对象是类的实例。类只有通过对象才可以使用,在开发中先产生类,再产生对象。类不能直接使用,对象是可以直接使用的。从这个问题中抽象出对象,这里的对象就是汉堡店。抽象出这个对象的属性,比如汉堡种类、汉堡尺寸、汉堡层数、烘烤时间等,这些属性都是静态的。抽象出这个对象的行为,比如选择汉堡、支付费用、制作汉堡、交付汉堡等,这些行为都是动态的。抽象出对象的属性和行为,就完成了对这个对象的定义,接下来就可以根据这些属性和行为,制定出从汉堡店购买汉堡的具体方案,从而解决问题。例如,尝试以面向对象的思想来解决从汉堡店购买汉堡的问题,可分为以下4个步骤:3.类包含的变量类型类与对象是整个面向对象中最基本的组成单元。其中,类是抽象的概念集合,表示的是一个共性的产物,类中定义的是属性和行为(方法);对象是一种个性的表示,表示一个独立而具体的个体。可以用一句话来总结类和对象的区别:类是对象的模板,对象是类的实例。类只有通过对象才可以使用,在开发中先产生类,再产生对象。类不能直接使用,对象是可以直接使用的。成员变量:成员变量是定义在类体中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。局部变量:在方法(包含构造方法)和语句块中定义的变量被称为局部变量。这种变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。类变量:类变量也声明在类体中,方法体之外,但必须声明为static类型。这种变量也称为静态变量。4.类的成员方法、构造方法和析构函数成员方法对应类的行为,例如汉堡店类中的selectBurger()、pay()、makeBurger()和deliverBurger()方法。一个成员方法可以不带参数,也可以带一个或若干个参数,这些参数可以是对象也可以是基本数据类型的变量,同时,成员方法可以有返回值也可以不返回任何值,返回值可以是计算结果也可以是其他数值和对象。在类中除了成员方法,还存在两种特殊类型的方法:构造方法和析构方法。(1)构造方法是一个与类同名的方法,例如汉堡店类中的HamburgerShop()方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象时,类都会自动调用构造方法。构造方法没有返回值,每个类都有构造方法,一个类可以有多个构造方法。如果没有显式地为类定义构造方法,C++编译器将会为该类提供一个默认的无参构造方法。注意,如果在类中定义的构造方法都不是无参的构造方法,那么编译器也不会为类设置一个默认的无参构造方法,当试图调用无参构造方法实例化一个对象时,编译器会报错。所以只有在类中没有定义任何构造方法时,编译器才会在该类中自动创建一个不带参数的构造方法。(2)析构方法与构造方法相反,例如汉堡店类中的~HamburgerShop()方法,当对象结束其生命周期时,例如对象所在的方法已经调用完毕,那么系统会自动执行析构方法。通常建立一个对象需要用到new自动调用构造方法开辟出一片内存空间,delete会自动调用析构方法释放内存。C++中可以通过析构方法来清理类的对象,析构方法没有任何参数和返回值类型,在对象销毁时自动调用。构造方法和析构方法实验步骤首先,基于Notepad++软件,新建一个ConvertTime.cpp文件,保存至“D:\QtProject\OOP01.类的封装实验”文件夹中,然后,将程序清单4-1中的代码输入ConvertTime.cpp文件中。最后,按F6键编译和执行C++文件,在Notepad++的Console栏中,输入80000后回车,可以看到运行结果,即输出“Currenttime:22-13-20”,说明实验成功。本节任务

2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,基于类的封装,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计2-——BasedonQt(WindowsEdition)类的继承实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容创建一个父类CalcTime,在父类中依次定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec;用于指定小时值、分钟值的常量TIME_VAL_HOUR和TIME_VAL_MIN;用于计算小时值和分钟值,同时获取对应值后向外输出的getTimeVal()方法。然后定义一个继承父类的CalcAllTime子类,在子类中定义用于计算秒值,同时获取对应值向外输出的getSecVal()方法;用于判断tick是否符合条件的calcFlg()方法;用于打印转换结果的dispTime()方法。在main()方法中创建一个CalcAllTime型对象,该对象名为ct,然后获取键盘输入值(0~86399之间的值,包括0和86399),实现秒值-时间值转换,并输出转换结果。实验原理

继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类。继承是类与类之间的关系,使用继承可以减少代码的冗余。1.类的继承例如,现在有两个问题,第一个是使用看门犬解决看家问题,第二个是使用牧羊犬解决放牧问题。由于看门犬和牧羊犬都属于犬类,具有与犬类相同的属性和行为,例如性别和身长属性,以及行走和奔跑行为,这样就可以先定义一个犬类。然后,在使用看门犬解决看家问题时,就可以创建一个继承犬类的看门犬类,并且在看门犬类中新增看门行为的定义;在使用牧羊犬解决放牧问题时,就可以创建一个继承犬类的牧羊犬类,并且在牧羊犬类中新增牧羊行为的定义,如下图所示。这样,就节省了定义犬类与看门狗、牧羊犬共同具有的属性和行为的时间,这就是继承的基本思想。2.继承的优点和缺点如果不使用继承的思想,分别定义看门犬类和牧羊犬类,代码就会出现重复,这样不仅会导致代码臃肿,而且在后期维护中,如果重复性的地方出错,就需要修改大量的代码,使得系统维护性低。而使用继承的思想,以上问题都可以解决,因此,继承的优点有:代码冗余度低,开发时间短;代码扩展性高,系统开发灵活性强;代码重用性高,系统出错概率低。除了优点,继承也有相应的缺点:继承是侵入性的,只要继承,就必须拥有父类的所有属性和方法;子类拥有父类的属性和方法,增加了子类代码的约束,降低了代码的灵活性;当父类的常量、变量和方法被修改时,需要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能带来大段代码需要重构的后果,增强了代码的耦合性。3.继承的方式类的继承是单一继承的,即一个子类只能拥有一个父类,子类除了可以扩展父类的功能,还可以重写父类的成员方法。类有3种继承方式:公有继承(public)、私有继承(private)和保护继承(protected)。

公有继承可以理解为父类的public成员和protected成员分别写到子类的public和protected成员中,而父类的private被分到了一个特殊的区域里面,该区域只能用父类原有的方法来访问。

私有继承可以理解为父类的public成员和protected成员写到子类的private成员中,而父类的private被分到了一个特殊的区域里面,该区域只能用父类原有的方法来访问。

保护继承可以理解为父类的public成员和protected成员写到子类的protected成员中,而父类的private被分到了一个特殊的区域里面,该区域只能用父类原有的方法来访问。实验步骤首先,基于Notepad++软件,新建一个ConvertTime.cpp文件,保存至“D:\QtProject\OOP02.类的继承实验”文件夹中,然后,将程序清单4-2中的代码输入ConvertTime.cpp文件中。最后,按F6键编译和执行C++文件,在Notepad++的Console栏中,输入80000后回车,可以看到运行结果,即输出“Currenttime:22-13-20”,说明实验成功。本节任务

2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,基于类的继承,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计2-——BasedonQt(WindowsEdition)类的继承实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容

创建一个父类CalcTime,在父类中依次定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec;用于指定小时值、分钟值的常量TIME_VAL_HOUR和TIME_VAL_MIN;用于计算小时值和分钟值,同时获取对应值后向外输出的getTimeVal()方法。然后定义一个继承父类的CalcAllTime子类,在子类中定义用于计算秒值,同时获取对应值向外输出的getSecVal()方法;用于判断tick是否符合条件的calcFlg()方法;用于打印转换结果的dispTime()方法。在main()方法中创建一个CalcAllTime型对象,该对象名为ct,然后获取键盘输入值(0~86399之间的值,包括0和86399),实现秒值-时间值转换,并输出转换结果。实验原理

继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类。继承是类与类之间的关系,使用继承可以减少代码的冗余。1.类的继承

例如,现在有两个问题,第一个是使用看门犬解决看家问题,第二个是使用牧羊犬解决放牧问题。由于看门犬和牧羊犬都属于犬类,具有与犬类相同的属性和行为,例如性别和身长属性,以及行走和奔跑行为,这样就可以先定义一个犬类。然后,在使用看门犬解决看家问题时,就可以创建一个继承犬类的看门犬类,并且在看门犬类中新增看门行为的定义;在使用牧羊犬解决放牧问题时,就可以创建一个继承犬类的牧羊犬类,并且在牧羊犬类中新增牧羊行为的定义,如下图所示。这样,就节省了定义犬类与看门狗、牧羊犬共同具有的属性和行为的时间,这就是继承的基本思想。2.继承的优点和缺点

如果不使用继承的思想,分别定义看门犬类和牧羊犬类,代码就会出现重复,这样不仅会导致代码臃肿,而且在后期维护中,如果重复性的地方出错,就需要修改大量的代码,使得系统维护性低。而使用继承的思想,以上问题都可以解决,因此,继承的优点有:代码冗余度低,开发时间短;代码扩展性高,系统开发灵活性强;代码重用性高,系统出错概率低。除了优点,继承也有相应的缺点:继承是侵入性的,只要继承,就必须拥有父类的所有属性和方法;子类拥有父类的属性和方法,增加了子类代码的约束,降低了代码的灵活性;当父类的常量、变量和方法被修改时,需要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能带来大段代码需要重构的后果,增强了代码的耦合性。3.继承的方式

类的继承是单一继承的,即一个子类只能拥有一个父类,子类除了可以扩展父类的功能,还可以重写父类的成员方法。

类有3种继承方式:公有继承(public)、私有继承(private)和保护继承(protected)。

公有继承可以理解为父类的public成员和protected成员分别写到子类的public和protected成员中,而父类的private被分到了一个特殊的区域里面,该区域只能用父类原有的方法来访问。

私有继承可以理解为父类的public成员和protected成员写到子类的private成员中,而父类的private被分到了一个特殊的区域里面,该区域只能用父类原有的方法来访问。

保护继承可以理解为父类的public成员和protected成员写到子类的protected成员中,而父类的private被分到了一个特殊的区域里面,该区域只能用父类原有的方法来访问。实验步骤

首先,基于Notepad++软件,新建一个ConvertTime.cpp文件,保存至“D:\QtProject\OOP02.类的继承实验”文件夹中,然后,将程序清单4-2中的代码输入ConvertTime.cpp文件中。

最后,按F6键编译和执行C++文件,在Notepad++的Console栏中,输入80000后回车,可以看到运行结果,即输出“Currenttime:22-13-20”,说明实验成功。本节任务

2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,基于类的继承,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计3-——BasedonQt(WindowsEdition)类的多态实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容创建CalcTime类,在类中定义用于保存小时值的成员变量mHour;用于计算并获取对应时间值的虚方法getTimeVal()方法。通过公有继承方式继承基类CalcTime来创建CalcMin类,在CalcMin类中定义用于保存分钟值的成员变量mMin;用于计算并获取对应时间值的getTimeVal()方法。通过公有继承方式继承基类CalcTime来创建CalcSec类,在CalcSec类中定义用于保存秒值的成员变量mSec;用于计算并获取对应时间值的getTimeVal()方法。然后创建一个ConvertTime类,在该类中定义一个CalcTime类型的指针,指针名为ct;分别创建CalcTime、CalcMin和CalcSec的对象,对象名分别为ctHour、ctMin和ctSec,然后通过指针ct调用各类中的getTimeVal()方法计算对应时间,通过cout输出转换后的时间结果。在main()方法中获取键盘输入值(0~86399之间的值,包括0和86399),然后,实现秒值-时间值转换,并输出转换结果。实验原理

多态是指相同的行为方式可能导致不同的行为结果,即产生了多种形态行为。定义类的时候,若类中某一个方法可能在后续继承的过程中被重写,可以用virtual关键字来修饰这个方法,此时被virtual声明的方法被重写后就具备了多态的特性,对于重写的方法,方法名与参数必须与原方法保持一致才具备多态的特性,若方法名相同但参数不同,则只是同名覆盖。1.多态

举例:动物会叫,猫会喵喵叫,狗会汪汪叫猫cat=new猫();cat.call();猫会喵喵叫动物animal=new猫();animal.call();猫是动物,会喵喵叫动物animal=new狗();animal.call();狗是动物,会汪汪叫同一个事件发生在不同的对象上会产生不同的结果执行子类重写的方法,无法运行子类独有的方法2.重写重写方法需要遵循以下规则:父类方法与子类重写的方法参数列表、返回值类型与方法名必须相同;子类重写的方法不能拥有比父类方法更低的访问权限,而public权限最低,private权限最高;当父类中方法的访问权限修饰符为private时,该方法在子类中是不能被重写的;如果父类方法抛出异常,那么子类重写的方法也要抛出异常,而且抛出的异常不能多于父类中抛出的异常(可以等于父类中抛出的异常)。实验步骤首先,基于Notepad++软件,新建一个ConvertTime.cpp文件,保存至“D:\QtProject\OOP03.类的多态实验”文件夹中,然后,将程序清单43中的代码输入到ConvertTime.cpp文件中。最后,按F6键编译和执行C++文件,在Notepad++的Console栏中,输入80000后回车,可以看到运行结果,即输出“Currenttime:22-13-20”,说明实验成功。本节任务

2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,使用多态的特性,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计3-——BasedonQt(WindowsEdition)类的多态实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容

创建CalcTime类,在类中定义用于保存小时值的成员变量mHour;用于计算并获取对应时间值的虚方法getTimeVal()方法。通过公有继承方式继承基类CalcTime来创建CalcMin类,在CalcMin类中定义用于保存分钟值的成员变量mMin;用于计算并获取对应时间值的getTimeVal()方法。通过公有继承方式继承基类CalcTime来创建CalcSec类,在CalcSec类中定义用于保存秒值的成员变量mSec;用于计算并获取对应时间值的getTimeVal()方法。然后创建一个ConvertTime类,在该类中定义一个CalcTime类型的指针,指针名为ct;分别创建CalcTime、CalcMin和CalcSec的对象,对象名分别为ctHour、ctMin和ctSec,然后通过指针ct调用各类中的getTimeVal()方法计算对应时间,通过cout输出转换后的时间结果。在main()方法中获取键盘输入值(0~86399之间的值,包括0和86399),然后,实现秒值-时间值转换,并输出转换结果。实验原理

多态是指相同的行为方式可能导致不同的行为结果,即产生了多种形态行为。定义类的时候,若类中某一个方法可能在后续继承的过程中被重写,可以用virtual关键字来修饰这个方法,此时被virtual声明的方法被重写后就具备了多态的特性,对于重写的方法,方法名与参数必须与原方法保持一致才具备多态的特性,若方法名相同但参数不同,则只是同名覆盖。1.多态

举例:动物会叫,猫会喵喵叫,狗会汪汪叫猫cat=new猫();cat.call();猫会喵喵叫动物animal=new猫();animal.call();猫是动物,会喵喵叫动物animal=new狗();animal.call();狗是动物,会汪汪叫同一个事件发生在不同的对象上会产生不同的结果执行子类重写的方法,无法运行子类独有的方法2.重写重写方法需要遵循以下规则:父类方法与子类重写的方法参数列表、返回值类型与方法名必须相同;子类重写的方法不能拥有比父类方法更低的访问权限,而public权限最低,private权限最高;当父类中方法的访问权限修饰符为private时,该方法在子类中是不能被重写的;如果父类方法抛出异常,那么子类重写的方法也要抛出异常,而且抛出的异常不能多于父类中抛出的异常(可以等于父类中抛出的异常)。实验步骤

首先,基于Notepad++软件,新建一个ConvertTime.cpp文件,保存至“D:\QtProject\OOP03.类的多态实验”文件夹中,然后,将程序清单43中的代码输入到ConvertTime.cpp文件中。

最后,按F6键编译和执行C++文件,在Notepad++的Console栏中,输入80000后回车,可以看到运行结果,即输出“Currenttime:22-13-20”,说明实验成功。本节任务

2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,使用多态的特性,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计4-——BasedonQt(WindowsEdition)重载实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容创建CalcTime类,在类中依次定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec;用于计算并输出小时值、分钟值和秒值的calcTimeVal()及其重载方法。其中,calcTimeVal()及其重载方法和三个成员变量的访问属性为public。在main()方法中创建CalcTime类型的对象,获取键盘输入值(0~86399之间的值,包括0和86399),CalcTime类的对象通过分别调用calcTimeVal()及其重载方法获取转换的小时值、分钟值和秒值,然后输出转换结果。实验原理

如果同一个类中包含了两个或两个以上的方法名相同,但参数列表不同(与返回值类型无关)的方法,称为方法重载。

所谓的重载就是要求“两同一不同”:1.重载同一个类中方法名相同;参数列表不同。对于方法其他部分(返回值类型,修饰符等)与重载没有任何关系。

(包括:参数个数不同,参数类型不同)2.重写重写方法需要遵循以下规则:父类方法与子类重写的方法参数列表、返回值类型与方法名必须相同;子类重写的方法不能拥有比父类方法更低的访问权限,而public权限最低,private权限最高;当父类中方法的访问权限修饰符为private时,该方法在子类中是不能被重写的;如果父类方法抛出异常,那么子类重写的方法也要抛出异常,而且抛出的异常不能多于父类中抛出的异常(可以等于父类中抛出的异常)。实验步骤首先,基于Notepad++软件,新建一个ConvertTime.cpp文件,保存至“D:\QtProject\OOP04.重载实验”文件夹中,然后,将程序清单4-4中的代码输入ConvertTime.cpp文件中。最后,按F6键编译和执行C++文件,在Notepad++的Console栏中,输入80000后回车,可以看到运行结果,即输出“CurrenthourVal:22”、“CurrenthourVal-minVal:22-13”和“Currenttime:22-13-20”,说明实验成功。本节任务

2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,基于方法的重载,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计4-——BasedonQt(WindowsEdition)重载实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容

创建CalcTime类,在类中依次定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec;用于计算并输出小时值、分钟值和秒值的calcTimeVal()及其重载方法。其中,calcTimeVal()及其重载方法和三个成员变量的访问属性为public。在main()方法中创建CalcTime类型的对象,获取键盘输入值(0~86399之间的值,包括0和86399),CalcTime类的对象通过分别调用calcTimeVal()及其重载方法获取转换的小时值、分钟值和秒值,然后输出转换结果。实验原理

如果同一个类中包含了两个或两个以上的方法名相同,但参数列表不同(与返回值类型无关)的方法,称为方法重载。

所谓的重载就是要求“两同一不同”:1.重载同一个类中方法名相同;参数列表不同。对于方法其他部分(返回值类型,修饰符等)与重载没有任何关系。

(包括:参数个数不同,参数类型不同)2.重写重写方法需要遵循以下规则:父类方法与子类重写的方法参数列表、返回值类型与方法名必须相同;子类重写的方法不能拥有比父类方法更低的访问权限,而public权限最低,private权限最高;当父类中方法的访问权限修饰符为private时,该方法在子类中是不能被重写的;如果父类方法抛出异常,那么子类重写的方法也要抛出异常,而且抛出的异常不能多于父类中抛出的异常(可以等于父类中抛出的异常)。实验步骤

首先,基于Notepad++软件,新建一个ConvertTime.cpp文件,保存至“D:\QtProject\OOP04.重载实验”文件夹中,然后,将程序清单4-4中的代码输入ConvertTime.cpp文件中。

最后,按F6键编译和执行C++文件,在Notepad++的Console栏中,输入80000后回车,可以看到运行结果,即输出“CurrenthourVal:22”、“CurrenthourVal-minVal:22-13”和“Currenttime:22-13-20”,说明实验成功。本节任务

2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,基于方法的重载,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计5-——BasedonQt(WindowsEdition)抽象类实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容创建Time类,在类中依次定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec,然后通过virtual定义纯虚方法dispTime(),使得Time类成为抽象类。通过公有继承的方式继承Time类来创建CalcTime类,在CalcTime类中定义用于计算小时值的calcHour()方法,用于计算分钟值的calcMin()方法,用于计算秒值的calcSec()方法,最后,重写用于显示时间的dispTime()方法。在main()方法中获取键盘输入值(0~86399之间的值,包括0和86399),然后通过CalcTime的对象ct调用对应的方法,实现秒值-时间值转换,并输出转换结果。实验原理

带有纯虚方法的类称为抽象类。抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承层次结构的较上层。1.抽象类

纯虚方法是指在基类中声明的虚方法的原型后加“=0”的方法,纯虚方法没有定义具体的方法实现。纯虚方法的声明格式为:在C++中抽象类有以下规定:抽象类只能用作其他类的基类,不能建立抽象类对象。抽象类不能用作参数类型、方法返回类型或显式转换的类型。可以定义指向抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性。2.抽象类的应用通常编写一个类时,会为这个类定义具体的属性和方法,但有一些情况只知道一个类需要哪些属性和方法,不知道这些方法具体是什么,这时就需要用到抽象类。例如,产品经理定义了一个产品,要求设计一个成本不高于80元的电子血压计,能测量收缩压、舒张压和脉率。在这个例子中,产品就是一个抽象类,包括两个抽象属性:价格不高于80元和电子血压计,还包括三个抽象方法:测量收缩压、测量舒张压和测量脉率。现在工程师就可以按照产品经理的要求,即抽象类,去设计产品。抽象类就像一个大纲,规范了一个项目。抽象类除了不能实例化对象,类的其他功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。抽象类不能实例化对象,所以抽象类必须被继承之后,才能被使用。属性方法价格不高于80元测量收缩压电子血压计测量舒张压测量脉率实验步骤首先,基于Notepad++软件,新建一个ConvertTime.cpp文件,保存至“D:\QtProject\OOP05.抽象类实验”文件夹中,然后,将程序清单4-5中的代码输入ConvertTime.cpp文件中。最后,按F6键编译和执行C++文件,在Notepad++的Console栏中,输入80000后回车,可以看到运行结果,即输出“Currenttime:22-13-20”,说明实验成功。本节任务

2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,基于抽象类,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计5-——BasedonQt(WindowsEdition)抽象类实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容

创建Time类,在类中依次定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec,然后通过virtual定义纯虚方法dispTime(),使得Time类成为抽象类。通过公有继承的方式继承Time类来创建CalcTime类,在CalcTime类中定义用于计算小时值的calcHour()方法,用于计算分钟值的calcMin()方法,用于计算秒值的calcSec()方法,最后,重写用于显示时间的dispTime()方法。在main()方法中获取键盘输入值(0~86399之间的值,包括0和86399),然后通过CalcTime的对象ct调用对应的方法,实现秒值-时间值转换,并输出转换结果。实验原理

带有纯虚方法的类称为抽象类。抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承层次结构的较上层。1.抽象类

纯虚方法是指在基类中声明的虚方法的原型后加“=0”的方法,纯虚方法没有定义具体的方法实现。纯虚方法的声明格式为:在C++中抽象类有以下规定:抽象类只能用作其他类的基类,不能建立抽象类对象。抽象类不能用作参数类型、方法返回类型或显式转换的类型。可以定义指向抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性。2.抽象类的应用

通常编写一个类时,会为这个类定义具体的属性和方法,但有一些情况只知道一个类需要哪些属性和方法,不知道这些方法具体是什么,这时就需要用到抽象类。

例如,产品经理定义了一个产品,要求设计一个成本不高于80元的电子血压计,能测量收缩压、舒张压和脉率。在这个例子中,产品就是一个抽象类,包括两个抽象属性:价格不高于80元和电子血压计,还包括三个抽象方法:测量收缩压、测量舒张压和测量脉率。现在工程师就可以按照产品经理的要求,即抽象类,去设计产品。抽象类就像一个大纲,规范了一个项目。

抽象类除了不能实例化对象,类的其他功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。抽象类不能实例化对象,所以抽象类必须被继承之后,才能被使用。属性方法价格不高于80元测量收缩压电子血压计测量舒张压测量脉率实验步骤

首先,基于Notepad++软件,新建一个ConvertTime.cpp文件,保存至“D:\QtProject\OOP05.抽象类实验”文件夹中,然后,将程序清单4-5中的代码输入ConvertTime.cpp文件中。

最后,按F6键编译和执行C++文件,在Notepad++的Console栏中,输入80000后回车,可以看到运行结果,即输出“Currenttime:22-13-20”,说明实验成功。本节任务

2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,基于抽象类,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计6-——BasedonQt(WindowsEdition)接口实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容创建Interface类,在类中不声明任何变量,然后通过virtual声明纯虚方法dispTime()、calcHour()、calcMin()和calcSec(),这时的Interface类属于一个接口类。通过公有继承的方式继承Interface类来创建CalcTime类,在CalcTime类中重写calcHour()方法来计算小时值,重写calcMin()方法来计算分钟值,重写calcSec()方法来计算秒值,最后,重写用于显示时间的dispTime()方法。在main()方法中获取键盘输入值(0~86399之间的值,包括0和86399),然后通过CalcTime的对象ct调用对应的方法,实现秒值-时间值转换,并输出转换结果。实验原理

接口描述了类的行为和功能,而不需要完成类的特定实现。在C++中接口满足以下规定:1.接口类中没有定义任何的成员变量。所有的成员方法都是公有的。所有的成员方法都是纯虚方法。接口是一种特殊的抽象类。接口一旦被继承需要重写所有的成员方法才能创建对象。2.接口的应用例如,鸟都有fly()和eat()两个行为,因此可以定义一个接口,如下:实验步骤首先,基于Notepad++软件,新建一个ConvertTime.cpp文件,保存至“D:\QtProject\OOP06.接口实验”文件夹中,然后,将程序清单46中的代码输入ConvertTime.cpp文件中。最后,按F6键编译和执行C++文件,在Notepad++的Console栏中,输入80000后回车,可以看到运行结果,即输出“Currenttime:22-13-20”,说明实验成功。本节任务

2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,基于接口,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计6-——BasedonQt(WindowsEdition)接口实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容

创建Interface类,在类中不声明任何变量,然后通过virtual声明纯虚方法dispTime()、calcHour()、calcMin()和calcSec(),这时的Interface类属于一个接口类。通过公有继承的方式继承Interface类来创建CalcTime类,在CalcTime类中重写calcHour()方法来计算小时值,重写calcMin()方法来计算分钟值,重写calcSec()方法来计算秒值,最后,重写用于显示时间的dispTime()方法。在main()方法中获取键盘输入值(0~86399之间的值,包括0和86399),然后通过CalcTime的对象ct调用对应的方法,实现秒值-时间值转换,并输出转换结果。实验原理

接口描述了类的行为和功能,而不需要完成类的特定实现。在C++中接口满足以下规定:1.接口类中没有定义任何的成员变量。所有的成员方法都是公有的。所有的成员方法都是纯虚方法。接口是一种特殊的抽象类。接口一旦被继承需要重写所有的成员方法才能创建对象。2.接口的应用

例如,鸟都有fly()和eat()两个行为,因此可以定义一个接口,如下:实验步骤

首先,基于Notepad++软件,新建一个ConvertTime.cpp文件,保存至“D:\QtProject\OOP06.接口实验”文件夹中,然后,将程序清单46中的代码输入ConvertTime.cpp文件中。

最后,按F6键编译和执行C++文件,在Notepad++的Console栏中,输入80000后回车,可以看到运行结果,即输出“Currenttime:22-13-20”,说明实验成功。本节任务

2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表“2020年1月1日-星期三”,计数10代表“2020年1月10日-星期五”。参考本节实验,基于接口,通过键盘输入一个1~366之间的值,包括1和366,将其转换为年、月、日、星期,并输出转换结果。——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第4章面向对象程序设计7-——BasedonQt(WindowsEdition)异常处理实验关于这节课Aboutthiscourse.“通过完成本章实验,掌握C++语言面向对象程序设计的基础概念,包括类与对象、static关键字、类的封装、类的继承、类的多态、抽象类和接口、访问控制、内部类等。One

目录实验内容实验原理实验步骤本节任务实验内容创建CalcTime类,在类中依次定义用于保存小时值、分钟值和秒值的成员变量mHour、mMin和mSec,用于计算小时值、分钟值和秒值的calcTimeVal()方法。在main()方法中获取键盘输入值(0~86399之间的值,包括0和86399),然后在try语句中通过CalcTime类的对象ct调用对应的方法,实现秒值-时间值转换。若过程中有异常抛出,则通过catch捕获并输出提示,若无异常则输出转换结果。实验原理

异常是指程序运行时不正确的状态,例如数组越界、整数除零等程序需要报错的状态。一旦程序发生异常,哪怕后面还有很多代码,还要执行很多动作,在异常之后的语句都不会被执行了,即如果程序中出现了一处异常,会导致整个程序的崩溃,这显然是不希望看到的结果,所以需要进行异常处理。1.异常2.异常处理在C++中,异常处理机制会使用到捕捉和处理异常的try…catch语句来处理。其中,try语句块用来捕捉异常,在try语句块中是可能发生异常的代码;catch语句块用来处理异常,例如显示错误信息等。可以根据处理异常的情况,try后面可以跟多个catch块,如下代码所示:3.抛出异常

温馨提示

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

评论

0/150

提交评论