当前课程知识点:C++语言程序设计基础 >  第4章 类与对象 >  实验四(上) >  实验四(上)

返回《C++语言程序设计基础》慕课在线视频课程列表

实验四(上)在线视频

实验四(上)

下一节:实验四(下)

返回《C++语言程序设计基础》慕课在线视频列表

实验四(上)课程教案、知识点、字幕

大家好

欢迎来到实验4的上半部分

本章的目标是学习

类与对象的声明和使用

并了解构造函数 析构函数

以及类的组合等语法的应用

本部分的实验内容

是通过练习

来帮助大家进一步地理解

和掌握

类与对象的声明与使用

不同访问权限对象的调用过程

并观察构造函数

和析构函数的调用执行过程

在前面的章节中

我们只是接触到了

一般程序设计的基础知识

从本章开始

我们才接触到了

真正的面向对象程序设计的

有关方法

类是面向对象程序设计中

最基础 最重要的概念

也是面向对象程序设计方法中的

第一个难点

类是对逻辑上相关的数据

和函数的封装

是对问题的抽象

在接下来的例子里

我们就来练习一下

最基本的类与对象的声明

与使用

并观察构造与析构的执行过程

首先我们来看例题一

声明一个CPU类

包含等级 频率 电压等属性

有两个公有成员函数

run和stop

来启动CPU类的对象

和停止CPU类的对象

其中呢rank为枚举类型

给它起的一个名字叫

CPU_Rank

是这样声明的

frepuency为单位是Mhz的整型数

voltage为浮点型的电压值

大家需要注意的是

不同访问属性的成员访问方式

并且在调试的过程中

观察构造函数

和析构函数的调用顺序

我们来看已经准备好的代码

在这里首先声明了枚举类型

我们用enum这个关键字

声明了枚举类型CPU_Rank

从p1一直到p7

我们在这里指定了p的初始值为1

那么之后就顺次递增

p2的值对应的是2

p7的值对应的是7

接下来我们在这个基础上

声明CPU类

它有三个私有数据成员

分别是等级 频率

和电压

大家注意到rank 等级

用到的就是刚才我们

刚刚声明的自定义数据类型

这个枚举类型

CPU_Rank

那么它的Public公有成员

包括哪些呢

首先包括它的构造函数

这是一个包含

三个参数的构造函数

分别对应它的三个私有数据成员

以及它的析构函数

在构造函数和析构函数中

我们打印输出了语句

方便调试和观察

构造函数和析构函数的执行过程

除了这些公有的函数成员之外呢

还有下面一些函数成员

是一些外部的接口

包括访问

这三个私有数据成员的接口

以及设置

这三个私有数据成员的接口

最后按照题目的要求

我们还有Run和Stop

这样两个成员函数

分别用来输出CPU开始运行

和CPU停止运行

这样两条语句

我们再来看一下main函数

在main函数中

我们声明了一个CPU的对象

我们调用的是刚才声明的

带有三个参数的构造函数

我们给它进行了初始化

接下来呢

让这个已经声明的对象a

运行Run这个公有的成员函数

和Stop这个公有成员函数

最后整个main函数返回

接下来我们来调试一下

首先按下f11

按下f11之后

系统进入单步执行状态

程序开始运行

我们可以看到光标停在了

main函数的第1行

这个时候呢

这个对象a还没有进行初始化

运行到第一个初始化的语句

这个时候应该是去调用

CPU的构造函数

我们按下f11

跟踪到它的构造函数内部

这个时候光标停在了

CPU构造函数的第1行

我们可以看到这个时候形参

已经分别获得了实参传过来的值

要开始准备执行

构造函数的函数体了

继续按下f10

完成三个私有数据成员的赋值

最后到了cout

构造一个CPU函数的地方

我们把它执行完了

就可以看到

在屏幕上打印出了

刚才的这样一句话

再继续按下f10

回到了main函数的内部

完成了对象a的初始化

这个时候我们观察一下局部变量

对象a的三个私有数据成员

已经完成了初始化

接下来我们再按下f10

执行a.Run()这条语句

这个时候呢

按下f11跟踪到了Run的内部

它打印输出CPU开始运行

我们看到屏幕上确实

输出了CPU开始运行

这样一句话

再继续跟踪下去

我们就执行完了a.Stop

这样一个成员函数

输出了CPU停止运行

接下来需要注意的一点是

这个时候光标已经指向了return

那么在整个main函数return之前

还会做些什么事情呢

对 因为我们的对象a

在这里进行了构造

那么在整个main函数访问之前

它需要进行析构

我们按下f11来跟踪一下

果然在return语句执行之前呢

它会跳到CPU类的析构函数这里

进行析构函数的执行

我们再来观察一下

在这里确实输出了

析构了一个CPU

这样一条语句

然后我们整个main函数的执行

就结束了

接下来我想让大家仿照

刚才的例子

来做一个扩展练习

声明一个RAM类

和一个CDROM类

为实验4的下半部分

基于类的组合来构建计算机

Computer这个类

打下一个基础

那么大家在声明RAM类

和CDROM类的时候呢

可以参考下面的这样一些小提示

RAM类主要的参数主要包括

RAM的容量 类型

和主频

其中类型呢包括DDR4 DDR3

和DDR2等

建议大家使用枚举类型

而大家去声明

CD-ROM类的时候呢

只要考虑参数可以包括接口类型

缓存容量

安装方式等等

其中接口类型

建议大家用枚举类型

比如说是set up

或者是USB

安装方式呢

建议大家也用枚举类型

包括外部安装external方式

和内置安装built-in方式

在学习类的访问控制 构造函数

和析构函数的时候

很多同学

特别是学过C语言的同学

常常会想

这些语法究竟有什么用呢

难道写一个这么简单的小程序

也有必要搞得这么复杂吗

是的

C++其实是适合用于编写

大型程序设计的

C++之父Bjarne Stroustup说

C++是作为一种系统编程语言

作为一种为开发

由大型系统部件组成的应用

而进行设计的

因此

初学者在编写小型程序的时候

很难体会到C++的优越性

所以我在这里建议大家

在这一章的时候

先大概地了解

和掌握其语法规定

待到以后真正应用的时候

再去体会其中的妙处

这样一想

大家的心情是否能够轻松一些呢

第四章的上半部分就到这里

我们下次再见

C++语言程序设计基础课程列表:

第1章 绪论

-导学

--第1章导学

-计算机系统简介

--计算机系统简介

--计算机系统简介 测试题

-计算机语言和程序设计方法的发展

--计算机语言和程序设计方法的发展

--计算机语言和程序设计方法的发展 测试题

-面向对象的基本概念

--面向对象的基本概念

--面向对象的基本概念 测试题

-程序的开发过程

--程序的开发过程

--程序的开发过程 测试题

-信息的表示和储存

--计算机中的信息与存储单位

--计算机的数字系统

--数据的编码表示

--信息的表示和储存 测试题

-实验指导

--实验一:VS开发环境介绍

第2章 C++简单程序设计(一)

-导学

--第二章导学

-C++语言概述

--C++的特点和程序实例

--C++字符集和词法记号

--C++语言概述 测试题

-基本数据类型、常量、变量

--基本数据类型、常量、变量

--程序举例

--基本数据类型、常量、变量 测试题

-运算与表达式

--算术运算与赋值运算

--逗号运算、关系运算、逻辑运算和条件运算

--Sizeof运算、位运算

--运算优先级、类型转换

--运算与表达式 测试题

-实验二:简单程序设计(上)

--实验二:简单程序设计(上)

第2章 C++简单程序设计(二)

-数据的输入和输出

--数据的输入和输出

--数据的输入和输出 测试题

-选择结构

--if语句

--switch语句

--选择结构 测试题

-循环结构

--循环结构——while语句

--do-while语句

--for语句

--嵌套的控制结构、其他控制语句

--循环结构 测试题

-自定义类型

--自定义类型

--自定义类型

-第2章小结

--第二章小结

-实验二:C++简单程序设计(下)

--实验二C++简单程序设计(下)

第3章 函数

-导学

--导学

-函数定义

--函数定义

--函数定义 测试题

-函数调用

--函数调用(例3-1)

--例3-2

--例3-3

--例3-4

--例3-5

--例3-6

--函数调用 测试题

-嵌套与递归

--函数的嵌套调用(例3-7)

--函数的递归调用(例3-8)

--例3-9

--例3-10

--嵌套与递归 测试题

-函数的参数传递

--函数的参数传递

--函数的参数传递 测试题

-引用类型

--引用类型(例3-11)

--引用类型 测试题

-含有可变参数的函数

--含有可变参数的函数

--含有可变参数的函数 测试题

-内联函数

--内联函数(例3-14)

--内联函数 测试题

-constexpr函数

--constexpr函数

--CONSTEXPR函数课后习题

-带默认参数值的函数

--带默认参数值的函数

--默认参数值例(3-15)

--带默认参数值的函数 测试题

-函数重载

--函数重载(例3-16)

--函数重载 测试题

-C++系统函数

--C++系统函数(例3-17)

--C++系统函数习题

-第3章小结

--第三章小结

-实验三(上)函数的应用

--实验三(上)函数的应用

-实验三(下)函数的应用

--实验三(下)函数的应用

第4章 类与对象

-导学

--导学

-面向对象程序的基本特点

--面向对象程序的基本特点

--面向对象程序的基本特点 测试题

-类和对象

--类和对象的定义

--类和对象的程序举例

--类和对象 测试题

-构造函数

--构造函数基本概念

--构造函数例题(1)——例4-1

--构造函数例题(2)——例4-2

--委托构造函数

--复制构造函数

--复制构造函数调用举例

--构造函数 测试题

-析构函数

--析构函数

--析构函数 测试题

-类的组合

--类的组合

--类的组合程序举例

--前向引用声明

--类的组合 测试题

-UML简介

--UML简介

--UML简介课后习题

-结构体与联合体

--结构体(例4-7)

--联合体(例4-8)

--结构体与联合体 测试题

-枚举类

--枚举类

--枚举类 测试题

-第4章小结

--第四章小结

-实验四(上)

--实验四(上)

-实验四(下)

--实验四(下)

第5章 数据的共享与保护

-导学

--导学

-标识符的作用域与可见性

--标识符的作用域与可见性

--标识符的作用域与可见性 测试题

-对象的生存期

--对象的生存期

--对象的生存期 测试题

-类的静态成员

--静态数据成员(例5-4)

--静态函数成员(例5-5)

--类的静态成员 测试题

-类的友元

--类的友元(例5-6)

--类的友元 测试题

-共享数据的保护

--共享数据的保护(例5-7)

--共享数据的保护 测试题

-多文件结构和预编译命令

--多文件结构和预编译命令(例5-10)

--多文件结构和预编译命令 测试题

-第5章小结

--小结

-实验五

--实验五

第6章 数组、指针与字符串(一)

-导学

--导学

-数组的定义与初始化

--数组的定义与使用

--数组的储存与初始化

--一维数组应用举例

--数组的定义与初始化 测试题

-数组作为函数的参数

--数组作为函数参数(例6-2)

--数组作为函数的参数 测试题

-对象数组

--对象数组

--对象数组 测试题

-基于范围的for循环

--基于范围的for循环

-指针的定义和运算

--指针的概念、定义和指针运算

--指针的初始化和赋值

--指针的算术运算、关系运算

--指针的定义和运算 测试题

-综合实例

--综合实例

-实验六(上)

--实验六上

第6章 数组、指针与字符串(二)

-指针与数组

--用指针访问数组元素

--指针数组

--指针与数组 测试题

-指针与函数

--以指针作为函数参数

--指针类型的函数

--指向函数的指针

--指针与函数 测试题

-对象指针

--对象指针

--对象指针 测试题

-动态内存分配

--动态分配与释放内存

--申请和释放动态数组(一)

--申请和释放动态数组(二)

--动态内存分配 测试题

-智能指针

--智能指针

-vector对象

--vector对象

--vector对象 测试题

-对象复制与移动

--深层复制与浅层复制

--移动构造

--对象复制与移动 测试题

-字符串

--C风格字符串

--string类

--字符串 测试题

-第6章小结

--第六章小结

-综合实例

--综合实例

-实验六(下)

--实验六(下)

实验四(上)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。