面向对象编程:图形类与书籍类设计

需积分: 20 3 下载量 71 浏览量 更新于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++中继承、多态、抽象类和友元函数等概念的理解。