C++, 多态应用举例之Word

本文通过文字编辑软件的界面元素(如三角形、圆形、段落)来阐述多态在面向对象编程中的重要性。多态使得不同类型的对象能够共享相同的接口,如draw()方法,从而降低代码耦合度,提高程序的可扩展性和可维护性。文章以C++代码为例,展示了如何利用多态实现文档元素的绘制,以及其在实际软件开发中的优势。
摘要由CSDN通过智能技术生成

在花费了很多的时间学习多态之后,我们有必要通过一个示例向读者展示多态技术在实践中不可或缺的重要价值。我们从大家常用的文字编辑软件说起。

本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载,但需要注明原作者"海洋饼干叔
叔";本文不允许以纸质及电子出版为目的进行抄摘或改编。
1.《Python编程基础及应用》,陈波,刘慧君,高等教育出版社。免费授课视频 Python编程基础及应用
2.《Python编程基础及应用实验教程》, 陈波,熊心志,张全和,刘慧君,赵恒军,高等教育出版社Python编程基础及应用实验教程
3. 《简明C及C++语言教程》,陈波,待出版书稿。免费授课视频

要点🎯 抽象类的最大用途在于为相关的扩展类定义一个统一的接口(interface)。

想象一个Word类软件,WPS或者Open Office之类,用户会加入非常多的界面元素在文档中,包括但不限于:三角形、箭头、段落、圆形、矩形、艺术字、图片。在面向对象程序设计中,这些元素都会使用类来描述,并且,设计者一定会为这些界面元素提供一个统一的父类。作者把这个类结构简化成图18-6的模样,读者要明白真实的情况比这个要复杂得多,但基本结构大体如此。
图18-6 Shape继承结构
可以看到,所有的界面元素,三角形、圆形、… 、文本段落(paragraph),被描述成拥有一个共同的祖先类(Shape)。这个祖先类可以是抽象类,这意味着系统不允许你创建Shape类的对象。抽象类什么具体的工作也不做,只是描述了他的全部后代的模样:至少实现描绘自身的draw()以及获取元素在页面中的空间尺寸的getSize()这两个方法。这种描述是强制性的,它的后代必须实现这两个方法或函数。

Triangle类用三个点坐标来描述自己的结构,除了实现必须的draw()和getSize()方法外,还实现了一个getArea()方法以计算自身所占面积。Circle类则用一个圆心坐标以及一个半径来描述自己,也实现了额外的getArea()函数。文本段落(Paragraph)类则用一个字符串sContent来存储其文本内容,还额外实现了setFont()函数来设置文本的字体和字号。

下述C++代码给出了上述继承结构的极简版实现。

//Project - Word
...
class Shape {
   
public:
    //virtual Size getSize() = 0;
    virtual void draw() = 0;
    virtual ~Shape(){
   }
};

class Triangle:p
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值