面向对象编程:图形类与书籍类设计
需积分: 20 52 浏览量
更新于2024-09-04
收藏 504KB DOCX 举报
"本资源包含了第五次上机练习的题目及参考代码,主要涉及C++编程,涵盖了面向对象编程的基本概念,如继承、抽象类、纯虚函数以及多态性的实现。练习包括创建一个表示几何图形的类层次结构,一个表示出版物的类层次结构,以及设计与银行存款相关的类,同时还有一个图书类的设计。"
在C++编程中,面向对象编程(OOP)是一种常用的设计方式,它允许我们通过类和对象来组织和管理代码。在这个上机练习中,有以下几个关键知识点:
1. **基类与派生类**:题目要求定义一个公共基类`Shape`,表示封闭的平面几何图形。这是类继承的基础,`Shape`将作为其他具体图形类(如`Triangle`、`Rectangle`和`Circle`)的基类。基类中定义了纯虚函数`show()`和`area()`,它们在派生类中会被重写,实现具体的图形信息显示和面积计算,以体现多态性。
2. **多态性**:多态性是面向对象的一个重要特性,它允许不同类型的对象对同一消息做出不同的响应。在这里,`Shape`类的`show()`和`area()`函数在派生类中被具体实现,使得不同的图形类能根据自身特性执行不同的操作,这就是运行时的多态性。
3. **抽象类与纯虚函数**:`Shape`和`Base`类都是抽象类,因为它们含有纯虚函数。在C++中,纯虚函数没有实现,仅声明,它的目的是为了使基类不能被实例化,只能作为其他类的基底。`IsGood`函数在`Base`类中被声明为纯虚函数,而在`Book`和`Journal`类中被具体实现,符合各自的逻辑。
4. **继承与覆盖**:`Book`类和`Journal`类从`Base`类派生,它们覆盖了`IsGood`这个纯虚函数,提供了自己的实现,根据不同的条件判断是否为"好"。这展示了如何利用继承来扩展基类的功能。
5. **友元函数**:在银行类(`CBank`、`BBank`、`GBank`)的设计中,`Total`函数被声明为友元,可以访问类的私有数据成员`balance`,用来计算在多个银行的总存款。友元函数不遵循封装原则,但可以方便地处理需要跨类访问数据的情况。
6. **图书类`Book`设计**:`Book`类需要保存图书的基本信息,如名称、定价,以及所有图书的总册数和总价。这涉及到类的数据成员和成员函数的定义,以及可能的计算逻辑。
虽然没有给出完整的代码,但是这些题目提供了一个良好的框架,让学生实践面向对象编程的基本概念。通过完成这些题目,学生可以加深对C++中继承、多态、抽象类和友元函数等概念的理解。
140 浏览量
1031 浏览量
229 浏览量
2021-11-06 上传
198 浏览量
2021-11-17 上传
2024-04-26 上传
2022-01-13 上传
2022-07-12 上传

白马长枪飘入诗
- 粉丝: 1
最新资源
- STM32控制FM25L04B铁电存储器源代码解析
- 探索多加密算法的程序实践与源码解析
- C++ 程序POO2021-1DRCR压缩包子文件详解
- JAVA实现大小写转换及温度单位换算示例
- STM32智能加湿器开发指南
- 系统集成工程师考试全程指导高清版
- MATLAB实现RGB转LAB的快照多光谱内窥镜技术
- Spring框架基础教程:搭建Spring MVC简易环境
- eSport Store在线商店应用程序开发
- 掌握OrmLite数据库一对多关系的使用技巧
- 极速PDF转Word v2.0.1.0:快速转换,图文混排支持
- JQuery.Gantt 示例:解决日期错位与多时间段显示
- 探索匿名上位机软件的使用方法
- 安卓开发必知:httpclient的两个关键包解析
- GTV ESLint配置指南:强化JavaScript代码规范
- 启源病历书写系统v6.8:临床医疗文书的高效解决方案