本专栏为C++学习笔记,参考书籍为:C++语言程序设计 第五版 -清华大学出版社- 郑莉
B站视频:https://space.bilibili.com/702528832/video
PPT与代码已上传:https://download.csdn.net/download/weixin_45755332/75626784

文章目录

  • 计算机程序设计语言的发展
    • 计算机程序
    • 机器语言
    • 汇编语言
    • 高级语言
  • 面向对象的方法
    • 面向对象的语言
      • 出发点:
      • 特点:
      • 优点:
    • 最早的程序
    • 面向过程的结构化程序设计方法
      • 设计思路
      • 程序结构:
      • 优点:
      • 缺点
    • 面向对象的方法
    • 面向对象的基本概念——对象
    • 封装
    • 继承
    • 多态性
  • 面向对象的软件开发
    • 分析
    • 设计
    • 编程
    • 测试
    • 维护
    • 基本术语
    • 三种不同类型的翻译程序
    • 程序的开发过程
  • 信息的表示与存储
    • 信息的存储单位
    • 计算机的数字系统

计算机程序设计语言的发展

计算机程序

  • 计算机的工作是用程序来控制的
  • 程序是指令的集合。
  • 指令是计算机可以识别的命令。

机器语言

由计算机硬件系统可以识别的二进制指令组成的语言称为机器语言。
计算机发展的初期,软件工程师们只能用机器语言来编写程序。这一阶段,在人类的自然语言和计算机编程语言之间存在着巨大的鸿沟。

汇编语言

汇编语言将机器指令映射为一些可以被人读懂的助记符,如ADD、SUB等。
此时编程语言与人类自然语言间的鸿沟略有缩小,但仍与人类的思维相差甚远。因为它的抽象层次太低,程序员需要考虑大量的机器细节。

高级语言

高级语言屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定含义的数据命名和容易理解的执行语句。这使得在书写程序时可以联系到程序所描述的具体事物。

面向对象的方法

面向对象的语言

出发点:

更直接地描述客观世界中存在的事物(对象)以及它们之间的关系。

特点:

  • 是高级语言。
  • 将客观事物看作具有属性和行为的对象。
  • 通过抽象找出同一类对象的共同属性和行为,形成类。
  • 通过类的继承与多态实现代码重用

优点:

使程序能够比较直接地反映问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。

最早的程序

  • 目的:用于数学计算
  • 主要工作:设计求解问题的过程
  • 缺点:对于庞大、复杂的程序难以开发和维护

面向过程的结构化程序设计方法

设计思路

自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。

程序结构:

  • 按功能划分为若干个基本模块。
  • 各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成。
  • 其模块化实现的具体方法是使用子程序。

优点:

有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。

缺点

可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件
把数据和处理数据的过程分离为相互独立的实体。
当数据结构改变时,所有相关的处理过程都要进行相应的修改。
每一种相对于老问题的新方法都要带来额外的开销。
图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。

面向对象的方法

  • 将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体——对象。
  • 对同类型对象抽象出其共性,形成类。
  • 类通过一个简单的外部接口,与外界发生关系。
  • 对象与对象之间通过消息进行通信。
    优点:
  • 程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。
  • 通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。

面向对象的基本概念——对象

一般意义上的对象:是现实世界中一个实际存在的事物。
可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。
是构成世界的一个独立单位,具有:

  • 静态特征:可以用某种数据来描述
  • 动态特征:对象所表现的行为或具有的功能
    面向对象方法中的对象:是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。对象由一组属性和一组行为构成。
  • 属性:用来描述对象静态特征的数据项。
  • 行为:用来描述对象动态特征的操作序列。

  • 分类——人类通常的思维方法
  • 分类所依据的原则——抽象
    忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。
    例如,石头、树木、汽车、房屋等都是人们在长期的生产和生活实践中抽象出的概念。
  • 面向对象方法中的"类"
    具有相同属性和服务的一组对象的集合
    为属于该类的全部对象提供了抽象的描述,包括属性和行为两个主要部分。
    类与对象的关系:犹如模具与铸件之间的关系,一个属于某类的对象称为该类的一个实例。

封装

  • 把对象的属性和服务结合成一个独立的系统单元。
  • 尽可能隐蔽对象的内部细节。对外形成一个边界(或者说一道屏障),只保留有限的对外接口使之与外部发生联系。

继承

  • 继承对于软件复用有着重要意义,是面向对象技术能够提高软件开发效率的重要原因之一。
    **定义:**特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。
    例如:将图形作为一个一般类,圆形便是一个特殊类。

多态性

多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在一般类及其各个特殊类中具有不同的语义。
例如:
图形类:计算图形面积->圆类计算圆面积 ->矩形类计算机型面积

面向对象的软件开发

面向对象的软件工程是面向对象方法在软件工程领域的全面应用。

  • 面向对象的分析(OOA)
  • 面向对象的设计(OOD)
  • 面向对象的编程(OOP)
  • 面向对象的测试(OOT)
  • 面向对象的软件维护(OOSM)

分析

系统分析阶段应该扼要精确地抽象出系统必须做什么,但是不关心如何去实现。
面向对象的系统分析,直接用问题域中客观存在的事物建立模型中的对象,对单个事物及事物之间的关系,都保留他们的原貌,不做转换,也不打破原有界限而重新组合,因此能够很好地映射客观事物。

设计

针对系统的一个具体实现运用面向对象的方法。包括两方面的工作:
把OOA模型直接搬到OOD,作为OOD的一部分
针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分。

编程

 OOP工作就是用一种面向对象的编程语言把OOD模型中的每个成分书写出来,是面向对象的软件开发最终落实的重要阶段。

测试

测试的任务是发现软件中的错误。
在面向对象的软件测试中继续运用面向对象的概念与原则来组织测试,以对象的类作为基本测试单位,可以更准确地发现程序错误并提高测试效率。

维护

将软件交付使用后,工作并没有完结,还要根据软件的运行情况和用户的需求,不断改进系统。
使用面向对象的方法开发的软件,其程序与问题域是一致的,因此,在维护阶段运用面向对象的方法可以大大提高软件维护的效率。

基本术语

源程序:
用源语言写的,有待翻译的程序
目标程序
也称为"结果程序",是源程序通过翻译程序加工以后所生成的程序。
翻译程序:
是指一个把源程序翻译成等价的目标程序的程序。

三种不同类型的翻译程序

汇编程序:
其任务是把用汇编语言写成的源程序,翻译成机器语言形式的目标程序。
编译程序:
若源程序是用高级程序设计语言所写,经翻译程序加工生成目标程序,那么,该翻译程序就称为"编译程序"。
解释程序:
这也是一种翻译程序,同样是将高级语言源程序翻译成机器指令。它与编译程序不同点就在于:它是边翻译边执行的,即输入一句、翻译一句、 执行一句,直至将整个源程序翻译并执行完毕。

程序的开发过程

编辑
将源程序输入到计算机中,生成后缀为cpp的磁盘文件。
编译
将程序的源代码转换为机器语言代码。
连接
将多个源程序文件以及库中的某些文件连在一起,生成一个后缀为exe的可执行文件。
运行调试

信息的表示与存储

计算机内部的信息可以分成二大类:
数据信息——计算机程序加工的对象
控制信息——指挥计算机操作

信息的存储单位

  • 位(bit,b):度量数据的最小单位,表示一位二进制信息。
  • 字节(byte,B):由八位二进制数字组成(1 byte = 8 bit)。
  • 千字节 1 KB = 1024 B
  • 兆字节 1 MB = 1024 K
  • 吉字节 1 GB = 1024 M

计算机的数字系统

计算机采用的是二进制数字系统。
基本符号:0、1
进位原则:逢二进一
优点:
易于物理实现
二进制数运算简单
机器可靠性高
通用性强
缺点:对人来说可读性差









C++语言程序设计第五版 - 郑莉-绪论(一)相关推荐

  1. 第三章 函数 C++语言程序设计第五版 - 郑莉

    本专栏为C++学习笔记,参考书籍为:C++语言程序设计 第五版 -清华大学出版社- 郑莉 B站视频:https://space.bilibili.com/702528832/video PPT与代码已 ...

  2. C++语言程序设计第五版 - 郑莉(第六章课后习题)

    第6章   数组.指针与字符串 6-20 实现一个名为 SimpleCircle 的简单圆类.其数据成员 int* itsRadius 为一个指向其半径值的指针,存放其半径值.设计对数据成员的各种操作 ...

  3. C++语言程序设计第五版 - 郑莉(第四章课后习题)

    第4章  类与对象 4-9设计并测试一个名为rectangle的矩形类,其属性为矩形的左下角与右上角坐标,根据坐标能计算矩形的面积. #include <iostream> using n ...

  4. C++语言程序设计第五版 - 郑莉(第七章课后习题)

    第7章  继承与派生 7-5 定义一个基类 Shape,在此基础上派生出 Rectangle 和 Circle,二者都有 getArea()函数计算对象的面积.使用 Rectangle类创建一个派生类 ...

  5. C++语言程序设计第五版 - 郑莉(第五章课后习题)

    第5章  数据的共享与保护 5-7定义一个Cat类,拥有静态数据成员 numOfCats,记录Cat的个体数目:静态成员函数getNumOfCats(),读取numOfCats.设计程序测试这个类,体 ...

  6. C++语言程序设计第五版 - 郑莉(第九章课后习题)

    第9章  群体类和群体数据的组织 9-1 编写程序提示用户输入一个班级中的学生人数 n,再依次提示用户输入 n 个人在课程 A 中的考试成绩,然后计算出平均成绩,显示出来.请使用本书第 9 章中的数组 ...

  7. C++语言程序设计第五版 - 郑莉(第二章课后习题)

    第2章  C++简单程序设计 2-25 编写一个完整的程序,实现功能:向用户提问"现在正在下雨吗?",提示用户输入Y 或N.若输入为Y,显示"现在正在下雨.": ...

  8. C++语言程序设计第五版 - 郑莉(第十一章课后习题)

    第11章  流类库与输入输出 11-3 使用 I/O 流以文本方式建立一个文件 test1.txt,写入字符"已成功写入文件!",用其他字处理程序(例如 Windows 的记事本程 ...

  9. C++语言程序设计第五版 - 郑莉(第三章课后习题)

    第3章  函数 3-8 编写函数把华氏温度转换为摄氏温度,公式为:C = (F - 32) * 5/9 在主程序中提示用户输入一个华氏温度,转化后输出相应的摄氏温度. #include<iost ...

最新文章

  1. matlab直流输电,重金悬赏matlab编程(电力方向,轻型高压直流输电的小信号模型)...
  2. 屏蔽“网页上有错误”提示,屏蔽java script 错误的代码
  3. 基于suse linux系统的cacti系统部署——rpm包方式
  4. (4.7)mysql备份还原——深入解析二进制日志(3)binlog的三种日志记录模式详解...
  5. What's blocking my lock? 转载
  6. 02-再探MySQL数据库
  7. 前端学习(3309):redux项目创建和概况
  8. HttpModule的认识与深入理解
  9. Python检验某个字符(串)是否属于另一个字符串
  10. Nginx安装及配置文件解释
  11. 图片服务器的架构演进
  12. 科研工具:公式书写神器(Mathpix Snipping Tool)
  13. 笔记本win7怎么重装系统步骤
  14. Julia发布全功能调试器:4大新功能问世
  15. PostgreSQL 179个场景
  16. uniapp vue百度人脸实名认证(V4)接口
  17. Eclipse项目名出现红叉
  18. mongodb 表结构导出,索引检查
  19. 08 在ATmega8中真实可用的ADC转换器写法
  20. 小程序服务商申请入口_小程序服务商模式介绍

热门文章

  1. 四元数姿态解算c语言例程_(21)用四元数插值来对齐IMU和图像帧
  2. 华为云 mysql 主备_安全性能两手抓,华为云MySQL“非双一特性”助力企业业务稳定高效运行...
  3. python人脸识别opencv_基于python+OpenCV模块的人脸识别定位技术
  4. linux 中断和进程 传递,Linux内核之进程上下文和中断上下文的区别
  5. linux系统密码正确但是一直登录不了报错Account locked due to failed logins
  6. Android简单通讯录从list取数据并显示 eclipse开发
  7. php shell exec 阻塞,php shell_exec()vs exec()
  8. python拦截广告弹窗_你会如何使用Python进行广告拦截?
  9. 师范生计算机硬件技能怎么填,浅析对师范生教育技术能力培养与发展问题的思考的论文...
  10. Mybatis分页中遇到的坑3