热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

C++软件工程中的继承

C++软件工程中的继承概述流行的软件重用技术继承对软件重用的贡献类库的处理继承而不是修改基类概述软件重用:在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程.软件重用

C++ 软件工程中的继承

  • 概述
  • 流行的软件重用技术
  • 继承对软件重用的贡献
  • 类库的处理
  • 继承而不是修改基类
概述

软件重用: 在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程.
《C++ 软件工程中的继承》
软件重用的好处:

  • 提高软件生成率
  • 减少软件开发人员数量
  • 缩短开发周期
  • 降低软件开发和维护费用
  • 生产更加标准化的软件
  • 提高软件开发质量
  • 增加软件系统的互操作性
  • 使开发者易于适应不同性质的项目

软件重用形式:

  • 源代码模块或者 一级的重用
  • 二进制形式的重用, 如组件重用
  • 组装式重用, 如集成多程序功能
  • 分析级别重用
  • 设计级别重用
  • 软件文档重用
流行的软件重用技术
  • 库函数: 只要知道函数的名称, 返回值的类型, 函数参数和函数功能就可以对其进行调用
  • 面向对象: 与函数库对应. 很多面向对象语言为应用程序开发者提供了易于使用的类库. 通过方法, 消息, 类, 继承, 封装, 和实例等机制构造软件系统
  • 模板: 用各种各样的模板 (如文档模板, 网页模板等), 快速地建立对应的软件产品
  • 设计模式: 设计模式作为重用设计信息的一种技术, 在面向对象设计中越来越流行
  • 构件 (Component), 构件 (Architectural), 框架 (framework)
继承对软件重用的贡献

类库的出现使得软件的重用更加方便. 类构件的重用方式:

  • 实例重用: 定义类对象直接解决问题
  • 继承重用: 继承已有的类的派生类, 用一种安全的手段修改已有类构件, 然后再产生对象解决问题

《C++ 软件工程中的继承》

类库的处理
  • 对类库中类的声明一般放在头文件中. 类的实现 (函数的定义部分) 是单独编译的, 以目标代码形式存放在系统某一目录下
  • 用户使用类库时, 不需要了解源代码, 但必须知道头文件的使用方法和怎么样去连接这些目标代码, 以便源程序在编译后与之连接
  • 由于基类是单独编译的, 在程序编译时只需对派生新增的功能进行编译, 这就大大提高了调试程序的效率
  • 如果在必要时修改了基类, 只要基类的公用接口不变, 派生类不必修改. 但基类需要重新编译, 派生类也必须重新编译, 派生类也必须重新编译, 否则不起作用
继承而不是修改基类
  • 在类库中, 一个基类可能已被指定与用户所需要的多种组建立了某种关系, 因此类库中的基类是不容许修改的
  • 有许多基类是被程序的其他部分或其他程序使用的, 这些程序要求保留有的基类不受破坏
  • 用户往往得不到基类的源代码
  • 实际上, 许多基类并不是从已有的其他程序中选取来的, 而是专门作为基类设计的
  • 在面向对象程序设计中, 需要设计类的层次结构. 从最初的抽象类出发, 每一层派生类的建立都逐步地向着目标的具体实现前进

推荐阅读
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • GAMETECH腾讯云游戏行业技术沙龙成都站圆满落幕
    11月13日,由腾讯云主办、游戏茶馆协办的2020年首场GAME-TECH腾讯云游戏行业技术沙龙在成都圆满落幕。本次沙龙邀请了腾讯云游戏行业解决方案总监宋永周、腾讯云游戏行业高级解决方案架构师曾梓恩、腾讯云游戏行业高级产品架构师郑晓曦、腾讯云游戏行业高级解决方案架构师温球良和天美L1(王者荣耀)服务器技术副总监杨光,为参会同行们带来了干货满满的技术建议。本文介绍了腾讯云游戏云的优势和为不同游戏研运场景提供的服务。腾讯云在中国游戏云服务市场领跑,成为众多游戏开发者的合作伙伴。 ... [详细]
  • 小程序自动授权和手动接入的方式及操作步骤
    本文介绍了小程序支持的两种接入方式:自动授权和手动接入,并详细说明了它们的操作步骤。同时还介绍了如何在两种方式之间切换,以及手动接入后如何下载代码包和提交审核。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
author-avatar
陈艹桂肀琰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有