第9章 群体类和群体数据的组织.ppt

C++语言程序设计(第四版)

收藏

资源目录
跳过导航链接。
压缩包内文档预览:(预览前20页/共100页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:67664809    类型:共享资源    大小:39.06MB    格式:ZIP    上传时间:2020-04-06 上传人:独** IP属地:江苏
20
积分
关 键 词:
C++ 语言程序设计 第四
资源描述:
C++语言程序设计(第四版),C++,语言程序设计,第四
内容简介:
第十一章流类库与输入 输出 清华大学郑莉 目录 11 1I O流的概念及流类库结构11 2输出流11 3输入流11 4输入 输出流11 5综合实例 对个人银行账户管理程序的改进11 6深度探索11 7小结 2 11 1I O流的概念及流类库结构 当程序与外界环境进行信息交换时 存在着两个对象 一个是程序中的对象 另一个是文件对象 流是一种抽象 它负责在数据的生产者和数据的消费者之间建立联系 并管理数据的流动 程序建立一个流对象 并指定这个流对象与某个文件对象建立连接 程序操作流对象 流对象通过文件系统对所连接的文件对象产生作用 读操作在流数据抽象中被称为 从流中 提取 写操作被称为 向流中 插入 3 流类库结构 4 11 1I O流的概念及流类库结构 11 2输出流 最重要的三个输出流是ostreamofstreamostringstream 5 11 2 1构造输出流对象 预先定义的输出流对象 cout标准输出cerr标准错误输出 没有缓冲 发送给它的内容立即被输出 clog类似于cerr 但是有缓冲 缓冲区满时被输出 6 11 2输出流 7 标准输出换向 ofstreamfout b out streambuf pOld cout rdbuf fout rdbuf cout rdbuf pOld 11 2 1构造输出流对象 续 ofstream类支持磁盘文件输出如果在构造函数中指定一个文件名 当构造这个文件时该文件是自动打开的ofstreammyFile filename 可以在调用默认构造函数之后使用open成员函数打开文件ofstreammyFile 声明一个静态文件输出流对象myFile open filename 打开文件 使流对象与文件建立联系在构造对象或用open打开文件时可以指定模式ofstreammyFile filename ios base out ios base binary 8 11 2输出流 11 2 2使用插入运算符和操纵符 manipulator 插入 头文件中 如setprecision setw和width仅影响紧随其后的域 但其它流格式操纵符保持有效直到发生改变 控制输出宽度为了调整输出 可以通过在流中放入setw操纵符或调用width成员函数为每个项指定输出宽度 dec oct和hex操纵符设置输入和输出的默认进制 9 11 2输出流 例11 1使用width控制输出宽度 includeusingnamespacestd intmain doublevalues 1 23 35 36 653 7 4358 24 for inti 0 i 4 i cout width 10 cout values i endl return0 10 11 2输出流 11 2 2使用插入运算符和操纵符 manipulator 输出结果 1 2335 36653 74358 24 例11 2使用setw操纵符指定宽度 11 2 cpp include include includeusingnamespacestd intmain doublevalues 1 23 35 36 653 7 4358 24 stringnames Zoot Jimmy Al Stan for inti 0 i 4 i cout setw 6 names i setw 10 values i endl return0 11 11 2输出流 11 2 2使用插入运算符和操纵符 manipulator 输出结果 Zoot1 23Jimmy35 36Al653 7Stan4358 24 例11 3设置对齐方式 11 3 cpp include include includeusingnamespacestd intmain doublevalues 1 23 35 36 653 7 4358 24 stringnames Zoot Jimmy Al Stan for inti 0 i 4 i cout setiosflags ios base left 左对齐 setw 6 names i resetiosflags ios base left setw 10 values i endl return0 12 11 2输出流 11 2 2使用插入运算符和操纵符 manipulator 输出结果 Zoot1 23Jimmy35 36Al653 7Stan4358 24 setiosflags的参数 ios base skipws在输入中跳过空白 ios base left左对齐值 用填充字符填充右边 ios base right右对齐值 用填充字符填充左边 缺省对齐方式 ios base internal在规定的宽度内 指定前缀符号之后 数值之前 插入指定的填充字符 ios base dec以十进制形式格式化数值 缺省进制 ios base oct以八进制形式格式化数值 ios base hex以十六进制形式格式化数值 ios base showbase插入前缀符号以表明整数的数制 ios base showpoint对浮点数值显示小数点和尾部的0 ios base uppercase对于十六进制数值显示大写字母A到F 对于科学格式显示大写字母E ios base showpos对于非负数显示正号 ios base scientific以科学格式显示浮点数值 ios base fixed以定点格式显示浮点数值 没有指数部分 ios base unitbuf在每次插入之后转储并清除缓冲区内容 13 11 2输出流 11 2 2使用插入运算符和操纵符 manipulator 例11 4控制输出精度 11 4 cpp include include includeusingnamespacestd intmain doublevalues 1 23 35 36 653 7 4358 24 stringnames Zoot Jimmy Al Stan for inti 0 i 4 i cout setiosflags ios base left setw 6 names i resetiosflags ios base left 清除左对齐设置 setw 10 setprecision 1 values i endl return0 14 11 2输出流 11 2 2使用插入运算符和操纵符 manipulator 输出结果 Zoot1Jimmy4e 001Al7e 002Stan4e 003 11 2 3文件输出流成员函数 输出流成员函数有三种类型 与操纵符等价的成员函数 执行非格式化写操作的成员函数 其它修改流状态且不同于操纵符或插入运算符的成员函数 15 11 2输出流 11 2 3文件输出流成员函数 续 open函数把流与一个特定的磁盘文件关联起来 需要指定打开模式 put函数把一个字符写到输出流中 write函数把内存中的一块内容写到一个文件输出流中seekp和tellp函数操作文件流的内部指针close函数关闭与一个文件输出流关联的磁盘文件错误处理函数在写到一个流时进行错误处理 16 11 2输出流 例11 5向文件输出 11 5 cpp includeusingnamespacestd structDate intmon day year intmain Datedt 6 10 92 ofstreamfile date dat ios base binary file write reinterpret cast 17 11 2输出流 11 2 3文件输出流成员函数 11 2 4二进制输出文件 以通常方式构造一个流 然后使用setmode成员函数 在文件打开后改变模式 使用ofstream构造函数中的模式参量指定二进制输出模式 18 11 2输出流 11 2 5字符串输出流 ostringstream 用于构造字符串功能支持ofstream类的除open close外的所有操作str函数可以返回当前已构造的字符串典型应用将数值转换为字符串 19 11 2输出流 例11 6用ostringstream将数值转换为字符串 11 6 cpp include include includeusingnamespacestd templateinlinestringtoString constT 20 11 2输出流 11 2 5字符串输出流 ostringstream 输出结果 51 2 函数模板toString可以把各种支持 插入符的类型的对象转换为字符串 11 3输入流 重要的输入流类 istream类最适合用于顺序文本模式输入 cin是其实例 ifstream类支持磁盘文件输入 istringstream 21 11 3 1构造输入流对象 如果在构造函数中指定一个文件名 在构造该对象时该文件便自动打开 ifstreammyFile filename 在调用默认构造函数之后使用open函数来打开文件 ifstreammyFile 建立一个文件流对象myFile open filename 打开文件 filename 打开文件时可以指定模式ifstreammyFile filename ios base in ios base binary 22 11 3输入流 11 3 2使用提取运算符 提取运算符 对于所有标准C 数据类型都是预先设计好的 是从一个输入流对象获取字节最容易的方法 ios类中的很多操纵符都可以应用于输入流 但是只有少数几个对输入流对象具有实际影响 其中最重要的是进制操纵符dec oct和hex 23 11 3输入流 11 3 4输入流相关函数 open函数把该流与一个特定磁盘文件相关联 get函数的功能与提取运算符 很相像 主要的不同点是get函数在读入数据时包括空白字符 第6章介绍过 getline的功能是从输入流中读取多个字符 并且允许指定输入终止字符 读取完成后 从读取的内容中删除终止字符 第6章介绍过 read成员函数从一个文件读字节到一个指定的内存区域 由长度参数确定要读的字节数 如果给出长度参数 当遇到文件结束或者在文本模式文件中遇到文件结束标记字符时结束读取 24 11 3输入流 11 3 4输入流相关函数 续 seekg函数用来设置文件输入流中读取数据位置的指针 tellg函数返回当前文件读指针的位置 close函数关闭与一个文件输入流关联的磁盘文件 25 11 3输入流 例11 7get函数应用举例 11 7 cpp includeusingnamespacestd intmain charch while ch cin get EOF cout put ch return0 26 11 3输入流 11 3 4输入流相关函数 例11 8为输入流指定一个终止字符 11 8 cpp include includeusingnamespacestd intmain stringline cout Typealineterminatedby t endl getline cin line t cout line endl return0 27 11 3输入流 11 3 4输入流相关函数 例11 9从一个payroll文件读一个二进制记录到一个结构中 11 9 cpp include include includeusingnamespacestd structSalaryInfo unsignedid doublesalary intmain SalaryInfoemployee1 600001 8000 ofstreamos payroll ios base out ios base binary os write reinterpret cast 28 11 3输入流 11 3 4输入流相关函数 例11 9 续 ifstreamis payroll ios base in ios base binary if is SalaryInfoemployee2 is read reinterpret cast 29 11 3输入流 11 3 4输入流相关函数 例11 10用seekg函数设置位置指针 11 10 cpp 头部分省略intmain intvalues 3 7 0 5 4 ofstreamos integers ios base out ios base binary os write reinterpret cast values sizeof values os close ifstreamis integers ios base in ios base binary if is is seekg 3 sizeof int intv is read reinterpret cast 30 11 3输入流 11 3 4输入流相关函数 例11 11读一个文件并显示出其中0元素的位置 11 11 cpp 头部分省略intmain ifstreamfile integers ios base in ios base binary if file while file 读到文件尾file为0streamposhere file tellg intv file read reinterpret cast 31 11 3输入流 11 3 4输入流相关函数 11 3 5字符串输入流 istringstream 用于从字符串读取数据在构造函数中设置要读取的字符串功能支持ifstream类的除open close外的所有操作典型应用将字符串转换为数值 32 11 3输入流 例11 12用istringstream将字符串转换为数值 11 12 cpp 头部分省略templateinlineTfromString conststring 33 11 3输入流 11 3 5字符串输入流 istringstream 11 4输入 输出流 一个iostream对象可以是数据的源或目的 两个重要的I O流类都是从iostream派生的 它们是fstream和stringstream 这些类继承了前面描述的istream和ostream类的功能 34 11 5综合实例 对个人银行账户管理程序的改进 本例中程序结束时将每个账户的当前状态和过往的账目列表 将用户输入的存款 取款 结算等各种命令保存下来 下次启动程序时将这些命令读出并执行 这样各个账户就能够恢复到上次退出程序时的状态了 本例对处理命令进行模块化 建立了一个Controller类 用于保存账户列表 当前日期和处理指定命令 在主函数中将该类实例化 在需要处理命令的地方调用该类的成员函数即可 对Date类重载 运算符 对账户信息重载 运算符 35 例11 13个人银行账户管理程序 程序分为6个文件 date h是日期类头文件date cpp是日期类实现文件accumulator h为按日将数值累加的Accumulator类的头文件account h是各个储蓄账户类定义头文件account cpp是各个储蓄账户类实现文件11 13 cpp是主函数文件 36 11 5综合实例 对个人银行账户管理程序的改进 date h ifndef DATE H define DATE H includeclassDate 日期类 Date类中不再有静态成员函数read 其它内容与例10 24完全相同 std istream 37 11 5综合实例 对个人银行账户管理程序的改进 例11 13 续 account h ifndef ACCOUNT H define ACCOUNT H include date h include accumulator h include include includeclassAccount 账户类 Account类中为以下函数增加了一个参数 其它成员与例10 24完全相同virtualvoidshow std ostream account h中其它类的定义与例10 24完全一样 endif ACCOUNT H 38 11 5综合实例 对个人银行账户管理程序的改进 例11 13 续 account cpp中 只有以下几个成员函数的实现有所改变 其它内容与例10 24完全相同voidAccountRecord show const coutgetId t amount t balance t desc endl Account Account constDate 39 11 5综合实例 对个人银行账户管理程序的改进 例11 13 续 11 13 cpp include account h include include include include include includeusingnamespacestd structdeleter templatevoidoperator T p deletep classController 控制器 用来储存账户列表和处理命令private Datedate 当前日期vectoraccounts 账户列表boolend 用户是否输入了退出命令public Controller constDate 40 11 5综合实例 对个人银行账户管理程序的改进 例11 13 续 Controller Controller for each accounts begin accounts end deleter boolController runCommand conststring 41 11 5综合实例 对个人银行账户管理程序的改进 例11 13 续 intmain Datedate 2008 11 1 起始日期Controllercontroller date stringcmdLine constchar FILE NAME commands txt ifstreamfileIn FILE NAME 以读模式打开文件if fileIn 如果正常打开 就执行文件中的每一条命令while getline fileIn cmdLine controller runCommand cmdLine fileIn close 关闭文件 ofstreamfileOut FILE NAME ios base app 以追加模式打开文件cout stringcmdLine getline cin cmdLine if controller runCommand cmdLine fileOut cmdLine endl 将命令写入文件 return0 42 11 5综合实例 对个人银行账户管理程序的改进 例11 13 续 第一次运行结果 输入和输出与例9 16给出的完全相同 第二次运行结果2008 11 1 S3755217created2008 11 1 02342342created2008 11 1 C5392394created2008 11 5 S375521750005000salary2008 11 15 C5392394 2000 2000buyacell2008 11 25 023423421000010000sellstock03232008 12 1 C5392394 16 2016interest2008 12 1 C539239420160repaythecredit2008 12 5 S3755217550010500salary2009 1 1 S375521717 7710517 8interest2009 1 1 0234234215 1610015 2interest2009 1 1 C5392394 50 50annualfee a addaccount d deposit w withdraw s show c changeday n nextmonth q query e exit 后面省略 第二次执行程序时 第一次输入的数据完全被恢复了 43 11 5综合实例 对个人银行账户管理程序的改进 例11 13 续 11 6 1宽字符 宽字符串与宽流 普通字符和字符串的缺陷一个汉字被拆成两个字符例 strings 这是一个中文字符串 s size 返回18s substr 3 2 得到的结果是 且 s find 且 返回3 44 11 6深度探索 宽字符与宽字符串 宽字符 wchar t类型一般占2个字节 可以直接存下一个汉字宽字符的文字以 L 开头 例 wchar tc L 人 宽字符串 wstring类型与string同源typedefbasic stringstring typedefbasic stringwstring 例wstrings L 这是一个中文字符串 s size 返回9 45 11 6深度探索 11 6 1宽字符 宽字符串与宽流 宽流 宽流 以宽字符为基本单位的流wistream wifstream wistringstream wostream wofstream wostringstream wios wcin wcout wcerr wclog宽字符和宽字符串需要通过宽流输入输出宽流与普通流一一对应 彼此同源typedefbasic ifstreamifstream typedefbasic ifstreamwifstream 46 11 6深度探索 11 6 1宽字符 宽字符串与宽流 为宽文件流配置编码方案 文件以字节为单位 编码方案决定了宽字符和字节的对应关系例 L ABCD 占4个字节 L 甲乙丙丁 占8个字节 这由编码方案体现配置方法 用 代码页 编号构造locale对象执行流的imbue成员函数示例localeloc 936 创建本地化配置方案对象wcout imbue loc 设置wcout对象的编码方案wcout L 这是一个中文字符串 endl 输出字符串 47 11 6深度探索 11 6 1宽字符 宽字符串与宽流 例11 14用文件宽输入流查找文件中的 人 字 11 14 cpp 部分头文件引用省略 includeusingnamespacestd intmain localeloc 936 创建本地化配置方案wcout imbue loc 为wcout设置编码方案wifstreamin article txt 创建文件宽输入流 打开文件article txtin imbue loc 为in设置编码方案wstringline 用来存储一行内容unsignednumber 0 记录行号while getline in line number 行号加1if line find first of L 人 wstring npos 查找 人 字wcout number L line endl 输出包含 人 字的行 return0 48 11 6深度探索 11 6 1宽字符 宽字符串与宽流 11 6 2对象的串行化 串行化 将对象写入文件 使得在适当的时候对象能从文件中读出并恢复直接用write将对象内容输出 用read将对象恢复的问题对象中存在指针时 指针所指对象内容不会被保存 对象的成员本身可能是存在指针的对象 对象不仅是数据的集合 还包括一系列行为 用read只能恢复数据 不能触发相应行为 49 11 6深度探索 串行化的基本方法 手工串行化的基本方法手工编写save和load函数按照相同的顺序保存 恢复数据成员碰到指针时 首先保存指针是否为空的标志 如非空 将指针对象的内容保存 load做相反操作完全手工编写串行化函数的困境save和load对成员的操作顺序完全相同 存在逻辑上的重复处理指针等操作过于繁琐 50 11 6深度探索 11 6 2对象的串行化 boost serialization 用Serialization库将下列结构体串行化 structSalaryInfo stringname doublesalary TaxInfo tax 只需增加一个成员函数模板 需要TaxInfo也实现了同样的成员函数模板 templatevoidSalaryInfo serialize Archive 51 11 6深度探索 11 6 2对象的串行化 理解Serialization serialize函数serialize是模板 串行化和恢复都通过这一段源代码 被Serialization重载了 能够处理各种基本数据类型 标准库类型 碰到指针时 如果指针的目的类型也有serialize成员函数 则用该函数将指针内容串行化 恢复 52 11 6深度探索 11 6 2对象的串行化 Serialization的文档类 文档类用于实际执行串行化操作支持5种串行化格式普通文本 text oachive text iachive宽文本 text woachive text wiachive普通字符XML xml oachive xml iachive宽字符XML xml woachive xml wiachive二进制 binary oachive binary iachive 53 11 6深度探索 11 6 2对象的串行化 文档类的使用 保存对象 用 ifstreamifs salary txt ios base in text iarchiveia ifs SalaryInfos2 ia s2 54 11 6深度探索 11 6 2对象的串行化 Serialization的其它功能 Serialization的其它功能可以进行版本控制全面支持对STL容器的串行化允许将serialize分开定义为两个不同的模板 save和load 进行 对象追踪 如有两个指针指向同一对象 它能保证这个对象只被串行化一次 而且恢复时也只生成一个对象 55 11 6深度探索 11 6 2对象的串行化 11 7小结 主要内容I O流的概念 输出流 输入流 输入 输出流 达到的目标理解I O流的概念 学会使用I O流类库实现文件输入 输出及格式控制 56 第一章绪论 清华大学郑莉 目录 1 1计算机程序设计语言的发展1 2面向对象的方法1 3面向对象的软件开发1 4信息的表示与存储 自学 1 5程序的开发过程1 6小结 2 计算机程序 计算机的工作是用程序来控制的程序是指令的集合 指令是计算机可以识别的命令 3 1 1计算机程序设计语言的发展 1 1 1机器语言与汇编语言 由计算机硬件系统可以识别的二进制指令组成的语言称为机器语言 计算机发展的初期 软件工程师们只能用机器语言来编写程序 这一阶段 在人类的自然语言和计算机编程语言之间存在着巨大的鸿沟 汇编语言将机器指令映射为一些可以被人读懂的助记符 如ADD SUB等 此时编程语言与人类自然语言间的鸿沟略有缩小 但仍与人类的思维相差甚远 因为它的抽象层次太低 程序员需要考虑大量的机器细节 4 1 1计算机程序设计语言的发展 1 1 2高级语言 高级语言屏蔽了机器的细节 提高了语言的抽象层次 程序中可以采用具有一定含义的数据命名和容易理解的执行语句 这使得在书写程序时可以联系到程序所描述的具体事物 5 1 1计算机程序设计语言的发展 1 1 3面向对象的语言 出发点 更直接地描述客观世界中存在的事物 对象 以及它们之间的关系 特点 是高级语言 将客观事物看作具有属性和行为的对象 通过抽象找出同一类对象的共同属性和行为 形成类 通过类的继承与多态实现代码重用 6 1 1计算机程序设计语言的发展 1 1 3面向对象的语言 续 优点 使程序能够比较直接地反映问题域的本来面目 软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发 7 1 1计算机程序设计语言的发展 1 2 1面向对象方法的由来 面向过程的程序设计方法 最早的程序目的 用于数学计算主要工作 设计求解问题的过程缺点 对于庞大 复杂的程序难以开发和维护 8 1 2面向对象的方法 面向过程的结构化程序设计方法 设计思路自顶向下 逐步求精 采用模块分解与功能抽象 自顶向下 分而治之 程序结构 按功能划分为若干个基本模块 形成一个树状结构 各模块间的关系尽可能简单 功能上相对独立 每一模块内部均是由顺序 选择和循环三种基本结构组成 其模块化实现的具体方法是使用子程序 9 1 2面向对象的方法 1 2 1面向对象方法的由来 面向过程的结构化程序设计方法 续 优点 有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务 便于开发和维护 10 1 2面向对象的方法 1 2 1面向对象方法的由来 面向过程的结构化程序设计方法 续 缺点 可重用性差 数据安全性差 难以开发大型软件和图形界面的应用软件把数据和处理数据的过程分离为相互独立的实体 当数据结构改变时 所有相关的处理过程都要进行相应的修改 每一种相对于老问题的新方法都要带来额外的开销 图形用户界面的应用程序 很难用过程来描述和实现 开发和维护也都很困难 11 1 2面向对象的方法 1 2 1面向对象方法的由来 面向对象的方法 将数据及对数据的操作方法封装在一起 作为一个相互依存 不可分离的整体 对象 对同类型对象抽象出其共性 形成类 类通过一个简单的外部接口 与外界发生关系 对象与对象之间通过消息进行通信 12 1 2面向对象的方法 1 2 1面向对象方法的由来 面向对象的方法 续 优点 程序模块间的关系更为简单 程序模块的独立性 数据的安全性就有了良好的保障 通过继承与多态性 可以大大提高程序的可重用性 使得软件的开发和维护都更为方便 13 1 2面向对象的方法 1 2 1面向对象方法的由来 1 2 2面向对象的基本概念 对象 一般意义上的对象 是现实世界中一个实际存在的事物 可以是有形的 比如一辆汽车 也可以是无形的 比如一项计划 是构成世界的一个独立单位 具有静态特征 可以用某种数据来描述动态特征 对象所表现的行为或具有的功能 14 1 2面向对象的方法 对象 续 面向对象方法中的对象 是系统中用来描述客观事物的一个实体 它是用来构成系统的一个基本单位 对象由一组属性和一组行为构成 属性 用来描述对象静态特征的数据项 行为 用来描述对象动态特征的操作序列 15 1 2面向对象的方法 1 2 2面向对象的基本概念 类 分类 人类通常的思维方法分类所依据的原则 抽象忽略事物的非本质特征 只注意那些与当前目标有关的本质特征 从而找出事物的共性 把具有共同性质的事物划分为一类 得出一个抽象的概念 例如 石头 树木 汽车 房屋等都是人们在长期的生产和生活实践中抽象出的概念 16 1 2面向对象的方法 1 2 2面向对象的基本概念 类 续 面向对象方法中的 类 具有相同属性和服务的一组对象的集合为属于该类的全部对象提供了抽象的描述 包括属性和行为两个主要部分 类与对象的关系 犹如模具与铸件之间的关系 一个属于某类的对象称为该类的一个实例 17 1 2面向对象的方法 1 2 2面向对象的基本概念 封装 把对象的属性和服务结合成一个独立的系统单元 尽可能隐蔽对象的内部细节 对外形成一个边界 或者说一道屏障 只保留有限的对外接口使之与外部发生联系 18 1 2面向对象的方法 1 2 2面向对象的基本概念 继承 继承对于软件复用有着重要意义 是面向对象技术能够提高软件开发效率的重要原因之一 定义 特殊类的对象拥有其一般类的全部属性与服务 称作特殊类对一般类的继承 例如 将轮船作为一个一般类 客轮便是一个特殊类 19 1 2面向对象的方法 1 2 2面向对象的基本概念 多态性 多态是指在一般类中定义的属性或行为 被特殊类继承之后 可以具有不同的数据类型或表现出不同的行为 这使得同一个属性或行为在一般类及其各个特殊类中具有不同的语义 例如 数的加法 实数的加法 复数的加法 20 1 2面向对象的方法 1 2 2面向对象的基本概念 面向对象的软件工程 面向对象的软件工程是面向对象方法在软件工程领域的全面应用 它包括 面向对象的分析 OOA 面向对象的设计 OOD 面向对象的编程 OOP 面向对象的测试 OOT 面向对象的软件维护 OOSM 21 1 3面向对象的软件开发 1 3 1分析 系统分析阶段应该扼要精确地抽象出系统必须做什么 但是不关心如何去实现 面向对象的系统分析 直接用问题域中客观存在的事物建立模型中的对象 对单个事物及事物之间的关系 都保留他们的原貌 不做转换 也不打破原有界限而重新组合 因此能够很好地映射客观事物 22 1 3面向对象的软件开发 1 3 2设计 针对系统的一个具体实现运用面向对象的方法 其中包括两方面的工作 把OOA模型直接搬到OOD 作为OOD的一部分针对具体实现中的人机界面 数据存储 任务管理等因素补充一些与实现有关的部分 23 1 3面向对象的软件开发 1 3 3编程 OOP工作就是用一种面向对象的编程语言把OOD模型中的每个成分书写出来 是面向对象的软件开发最终落实的重要阶段 24 1 3面向对象的软件开发 1 3 4测试 测试的任务是发现软件中的错误 在面向对象的软件测试中继续运用面向对象的概念与原则来组织测试 以对象的类作为基本测试单位 可以更准确地发现程序错误并提高测试效率 25 1 3面向对象的软件开发 1 3 5维护 将软件交付使用后 工作并没有完结 还要根据软件的运行情况和用户的需求 不断改进系统 使用面向对象的方法开发的软件 其程序与问题域是一致的 因此 在维护阶段运用面向对象的方法可以大大提高软件维护的效率 26 1 3面向对象的软件开发 信息的分类 指令控制信息控制字信息定点数数值信息数据信息浮点数字符数据非数值信息逻辑数据 27 1 4信息的表示和存储 1 4 1计算机的数字系统 计算机采用的是二进制数字系统 基本符号 0 1进位原则 逢二进一优点 易于物理实现二进制数运算简单机器可靠性高通用性强缺点 对人来说可读性差 28 1 4信息的表示和存储 程序设计中常用的数制 29 1 4信息的表示和存储 1 4 2几种进位记数制之间的转换 R进制 十进制 各位数字与它的权相乘 其积相加 例如 11111111 11 2 1 27 1 26 1 25 1 24 1 23 1 22 1 21 1 20 1 2 1 1 2 2 255 75 10 3506 2 8 3 83 5 82 0 81 6 80 2 8 1 1862 25 10 0 2A 16 2 16 1 10 16 2 0 1640625 10 30 1 4信息的表示和存储 1 4 2几种进位记数制之间的转换 十进制 R进制 十进制整数转换成R进制的整数 除R取余 法 例如 268余数234 0低位217 028 124 022 021 00 1高位所以6810 10001002 31 1 4信息的表示和存储 1 4 2几种进位记数制之间的转换 十进制 R进制 续 十进制小数转换成R进制小数 乘R取整 法 例如 高位0 3125 2 0 6250 625 2 1 250 25 2 0 50 5 2 1 0所以0 312510 0 01012 32 1 4信息的表示和存储 1 4 2几种进位记数制之间的转换 二 八 十六进制的相互转换 每位八进制数相当于三位二进制数每位十六进制数相当于四位二进制数 1011010 10 2 001011010 100 2 132 4 8 1011010 10 2 01011010 1000 2 5A 8 16 F7 16 11110111 2 11110111 2 33 1 4信息的表示和存储 1 4 2几种进位记数制之间的转换 1 4 3信息的存储单位 位 bit b 度量数据的最小单位 表示一位二进制信息 字节 byte B 由八位二进制数字组成 1byte 8bit 千字节1KB 1024B兆字节1MB 1024K吉字节1GB 1024M 34 1 4信息的表示和存储 1 4 4二进制数的编码表示 原码 符号 绝对值表示 的编码例如 X 0101011 X 原 00101011X 0101011 X 原 10101011符号位缺点 零的表示不惟一 0 原 000 0 0 原 100 0进行四则运算时 符号位须单独处理 且运算规则复杂 35 1 4信息的表示和存储 1 4 4二进制数的编码表示 反码 正数的反码与原码表示相同 负数的反码与原码有如下关系 符号位相同 仍用1表示 其余各位取反 0变1 1变0 例如 X 1100110 X 原 11100110 X 反 10011001X 0
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:C++语言程序设计(第四版)
链接地址:https://www.renrendoc.com/p-67664809.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!