10-第四章 面向对象程序设计1-类的封装实验_第1页
10-第四章 面向对象程序设计1-类的封装实验_第2页
10-第四章 面向对象程序设计1-类的封装实验_第3页
10-第四章 面向对象程序设计1-类的封装实验_第4页
10-第四章 面向对象程序设计1-类的封装实验_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

——基于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

温馨提示

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

评论

0/150

提交评论