第一章软设计概论

上传人:M****1 文档编号:579724625 上传时间:2024-08-27 格式:PPT 页数:51 大小:589.52KB
返回 下载 相关 举报
第一章软设计概论_第1页
第1页 / 共51页
第一章软设计概论_第2页
第2页 / 共51页
第一章软设计概论_第3页
第3页 / 共51页
第一章软设计概论_第4页
第4页 / 共51页
第一章软设计概论_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《第一章软设计概论》由会员分享,可在线阅读,更多相关《第一章软设计概论(51页珍藏版)》请在金锄头文库上搜索。

1、第一章第一章 软件设计概论软件设计概论第五章第五章 类与对象类与对象第四章第四章 函数函数第三章第三章 结构化程序设计结构化程序设计第二章第二章 C+基础知识基础知识第十章第十章 异常处理异常处理第九章第九章 输入输入/输出流类库输出流类库第八章第八章 继承与多态继承与多态第七章第七章 动态内存分配动态内存分配第六章第六章 指针与数组指针与数组第十一章第十一章 标准模板类库标准模板类库(STL) 附附 录录 目目 录录第一章第一章 软件设计概软件设计概述述软件设计软件设计是一个将是一个将人类思维人类思维物化为物化为计算机思维计算机思维的的过程,通过这个过程计算机获得一定程度的独立过程,通过这个

2、过程计算机获得一定程度的独立加工甚至思维的能力,从而将人类思维推向更高加工甚至思维的能力,从而将人类思维推向更高层次。关于软件设计的概念和方法的研究是随着层次。关于软件设计的概念和方法的研究是随着计算机应用的深入和所处理问题的复杂化而不断计算机应用的深入和所处理问题的复杂化而不断加深的。本章将就软件设计的相关加深的。本章将就软件设计的相关概念概念和程序设和程序设计方法的计方法的演化发展演化发展作一简要介绍。作一简要介绍。1.1 软件软件与软件危机与软件危机1.2 软软 件件 工工 程程1.3 程序设计方法程序设计方法 1.6 一个简单的一个简单的C+程序程序1.5 C语言和面向对象的语言和面向

3、对象的C+1.4 算法的设计与分析算法的设计与分析 第一章第一章 软件设计概述软件设计概述 1.1 软件与软件危机软件与软件危机什么是软件什么是软件什么是软件危机什么是软件危机 软件 程序软件危机首次爆发于二十世纪六十年代。在大型程序设计中,人们发现投入大量的人力、物力、时间开发出的软件,其成本、效率、质量等方面却处于失控状态,尤其软件维护异常困难。程序的修改扩充往往需要大量重复性投入。 1.1 软件与软件危机软件与软件危机软件危机产生的原因主要有三个:软件危机产生的原因主要有三个:2 2 软件是一种逻辑产品而非物理产品,软件的软件是一种逻辑产品而非物理产品,软件的开发过程本质上是人的思考过程

4、。开发过程本质上是人的思考过程。3 3 人的智力在面对越来越复杂的问题时,处理人的智力在面对越来越复杂的问题时,处理问题的效率会越来越低。问题的效率会越来越低。1 1 软件开发者不熟悉用户问题的领域,或没有软件开发者不熟悉用户问题的领域,或没有理解用户需求,软件产品与要求不一致。理解用户需求,软件产品与要求不一致。1.2 软件工程软件工程软件危机的软件危机的 出现迫使人们重新认识出现迫使人们重新认识软件和软件开发过程。软件和软件开发过程。大型软件开发也应该借鉴建筑、机械大型软件开发也应该借鉴建筑、机械等行业的发展过程,由等行业的发展过程,由“手工方式手工方式”向向“工程化工程化”方向发展。方向

5、发展。19681968年在北年在北大西洋公约组织大西洋公约组织(NATO)(NATO)的年会上的年会上首次首次提出提出软件工程软件工程的概念,此后又逐步提的概念,此后又逐步提出出软件生命期软件生命期的概念。的概念。1.2 软件工程软件工程软件工程的提出和软件的定义软件工程的提出和软件的定义 软件软件是程序、方法、规则、相关文档以及在计算机上运行是程序、方法、规则、相关文档以及在计算机上运行所必需的数据的集合。而所必需的数据的集合。而软件工程软件工程是开发、运行、维护软件是开发、运行、维护软件的系统方法。的系统方法。软件生命期软件生命期软件生命期指从开始研制到废弃不用的整个期间,可划分软件生命期

6、指从开始研制到废弃不用的整个期间,可划分为五个阶段:为五个阶段:需求分析需求分析、设计设计、编程编程、测试测试和和运行维护运行维护。 软件的质量标准软件的质量标准正确性正确性 健壮性健壮性 可可维护性性可用性可用性 可重用性可重用性 效率等效率等1.2 软件工程软件工程正确性 软件的正确性指的是软件系统在正常条件下能够正确工作,完成规定功能。这是软件的首要指标。例如,要求设计程序,输入一批数据,计算它们的累加和。在这里,正确性就是正确能正确计算累加和。1.2 软件工程软件工程健壮性健壮性软软件件的的健健壮壮性性指指的的是是在在意意外外情情况况下下(如如输输入入数数据据不不合合理理或或某某些些硬

7、硬件件故故障障),软软件件系系统统仍仍能能适适当当地地工工作作,并并对对意意外外情情况况进进行行适适当当处处理理,而而不不致致于于导导致致错错误误结结果果甚甚至至系系统统的的瘫瘫痪痪或或死死机。机。例例如如,要要求求设设计计程程序序,根根据据输输入入的的三三边边a a、b b、c c的的长长度度判判别别三三角角形形类类型型。现现有有如如下下设设计计思思想想:若若a a、b b、c c中中只只有有两两个个量量相相等等,则则为为等等腰腰三三角角形形,若若三三个个量量均均相相等等,则则为为等等边边三三角角形形,否否则则为为一一般般三三角角形形。如如果果输输入入为为(-2-2,-2-2,-2-2)时时

8、,程程序序输输出出为为:等等边边三三角角形形。这这个个结结果果显显然然是是错错误误的的。这这是是由由于于程程序序对对不不合合理理数数据据不不能能进进行行适适当当处处理理,我我们们就就说说这这个个程程序序的的健健壮壮性不好。性不好。1.2 软件工程软件工程可可维护性性软件的维护包括软件的维护包括发现并改正软件的错误发现并改正软件的错误,以,以及由于软件运行环境发生变化或软件功能扩充及由于软件运行环境发生变化或软件功能扩充而而对软件进行的改动对软件进行的改动。 软件的可维护性指的是软件容易维护的程度。软件的可维护性指的是软件容易维护的程度。一般地说,软件的可读性好,容易理解,维护一般地说,软件的可

9、读性好,容易理解,维护起来也就比较容易。因此可读性是可维护性的起来也就比较容易。因此可读性是可维护性的基础。基础。 1.3 程序设计方法程序设计方法1.3.11.3.1 传统的结构化程序设计传统的结构化程序设计 SP(StructuredSP(Structured Programming) Programming)1.3.21.3.2 面向对象的程序设计面向对象的程序设计 OOP(ObjectOOP(Object Oriented Oriented Programming)Programming)1.3.1 传统的结构化程序设计传统的结构化程序设计传统的程序设计方法可以归结为传统的程序设计方法

10、可以归结为“程序程序= =算法算法+ +数据结构数据结构”,将程序定义为处理数据,将程序定义为处理数据的一系列过程。这种设计方法的着眼点是的一系列过程。这种设计方法的着眼点是面面向过程向过程的的,特点是数据与程序分离,即,特点是数据与程序分离,即数据数据与数据处理分离与数据处理分离。 结构化程序设计的基本思想是采用结构化程序设计的基本思想是采用自顶向自顶向下下、逐步细化逐步细化的设计方法和的设计方法和单入单出单入单出的控制的控制结构。结构。1.3.1 传统的结构化程序设计传统的结构化程序设计模块模块 22.12.2模模块 11.21.11.31.3.11.3.21.3.3模块模块 33.13.

11、23.1.13.1.2 程程 序序1.3.1 传统的结构化程序设计传统的结构化程序设计举举一一个个简简单单的的例例子子,要要求求读读入入一一组组整整数数,统统计计其其中中正整数和负整数的个数。正整数和负整数的个数。该任务的模块结构及细化过程如下:该任务的模块结构及细化过程如下:1.1.读入数据入数据2.2.统计正数、负数统计正数、负数的个数的个数; ; 3. 输出结果输出结果 2.1 2.1 如数大于如数大于0 0,正整数个数加,正整数个数加1 12.2 2.2 如数小于如数小于0 0,负整数个数加,负整数个数加1 12.3: 2.3: 取下一个整数取下一个整数正整数个数正整数个数为0 0;负

12、整数个数整数个数0 0 取取第一个整数第一个整数重复重复至统至统计完计完1.3.1 传统的结构化程序设计传统的结构化程序设计结构化程序设计结构化程序设计为处理复杂问题提供了有力为处理复杂问题提供了有力手段,但到手段,但到8080年代末,这种设计方法逐渐暴年代末,这种设计方法逐渐暴露出以下露出以下缺陷缺陷: (1 1)难以适应大型软件的设计。难以适应大型软件的设计。 (2 2)程序可重用性差。程序可重用性差。1.3.2 面向对象的程序设计面向对象的程序设计为什么要引入面向对象的设计为什么要引入面向对象的设计方法方法面向对象的设计方法与面向过面向对象的设计方法与面向过程的设计方法有什么关系程的设计

13、方法有什么关系1.3.2 面向对象的程序设计面向对象的程序设计面向过程程序设计缺点的根源在于面向过程程序设计缺点的根源在于数据与数据处理分数据与数据处理分离离。面向对象程序设计模拟自然界认识和处理事物的方法,面向对象程序设计模拟自然界认识和处理事物的方法,将将数据数据和和对数据的操作方法对数据的操作方法放在一起,形成一个相对独放在一起,形成一个相对独立的整体立的整体对象(对象(objectobject),同类对象还可抽象出同类对象还可抽象出共共性性,形成,形成类(类(class class )。一个类中的数据一个类中的数据通常只能通过通常只能通过本类提供的方法进行处理,这些方法成为该类与外部的

14、本类提供的方法进行处理,这些方法成为该类与外部的接口接口。对象之间通过。对象之间通过消息(消息(messagemessage)进行通讯。进行通讯。1.3.2 面向对象的程序设计面向对象的程序设计1 基基 本本 概概 念念3 “面向对象面向对象”程序设计的特点程序设计的特点2 面向对象的软件开发方法面向对象的软件开发方法1基基 本本 概概 念念对对 象(象(object)类(类(class)消消 息(息(message)1 基基 本本 概概 念念属性属性行为行为表针表针旋钮旋钮其他机械机构其他机械机构调节旋钮调节旋钮对 象1 基基 本本 概概 念念是一个抽象的概念,用来描述某一类对象所共是一个抽

15、象的概念,用来描述某一类对象所共有的、本质的属性和类行为。有的、本质的属性和类行为。 类类类的一个具体实现,称为实例类的一个具体实现,称为实例手表手表 一块手表一块手表类类 对象对象描述这类对象共有的、本质的属性和行为描述这类对象共有的、本质的属性和行为手表共有的属性(表针、旋钮、内部结构)手表共有的属性(表针、旋钮、内部结构)和行为(调节旋钮)和行为(调节旋钮)具体到一只圆形的或方形的手表具体到一只圆形的或方形的手表1基基 本本 概概 念念我们把对象之间产生我们把对象之间产生相互作用相互作用所传递的所传递的信息信息称做消息。称做消息。 消消 息息启启 动动发送消息发送消息接收并响应消息接收并

16、响应消息转转 向向2面向对象的软件开发方法面向对象的软件开发方法面面向向对对象象软软件件开开发发的的根根本本合合理理性性在在于于它它符符合客观世界的组成方式和大脑的思维方式。合客观世界的组成方式和大脑的思维方式。在在大大型型程程序序开开发发过过程程中中,编编码码只只是是其其中中很很小小一一部部分分,应应当当采采用用工工程程化化的的方方法法,并并将将面面向向对对象象的的思思想想贯贯穿穿于于软软件件开开发发全全过过程程,这这就就是是面向对象的软件工程面向对象的软件工程。面面相相对对象象的的软软件件工工程程同同样样遵遵循循分分层层抽抽象象、逐逐步步细细化化的的原原则则。软软件件开开发发过过程程包包括

17、括以以下下五五个阶段:个阶段: 2 面向对象的软件开发方法面向对象的软件开发方法测试的任务在于发现并改正程序中的错误。测试的任务在于发现并改正程序中的错误。面向对象的分析面向对象的分析(OOA)面向对象的设计面向对象的设计(OOD)面向对象的编程面向对象的编程(OOP)面向对象的测试面向对象的测试(OOT)分析阶段的主要任务是按照面向对象的概念和方法,从问题中分析阶段的主要任务是按照面向对象的概念和方法,从问题中识识别别出有意义的出有意义的对象对象,以及对象的,以及对象的属性属性、行为行为和对象间的和对象间的通信通信,进而,进而抽象抽象出类结构,最终将它们描述出来,形成一个出类结构,最终将它们

18、描述出来,形成一个需求模型需求模型。设计阶段从需求模型出发,分别进行类的设计和应用程序的设计。设计阶段从需求模型出发,分别进行类的设计和应用程序的设计。编程阶段实现由设计表示到面向对象程序设计语言描述的转换。编程阶段实现由设计表示到面向对象程序设计语言描述的转换。面向对象的维护面向对象的维护(OOSM)3“面向对象面向对象”程序设计的特点程序设计的特点(1)封装性封装性(2) 继承与派生性继承与派生性(3) 多态性多态性3 “面向对象面向对象”程序设计的特点程序设计的特点封装性封装性内内外外机机械械零零件件动动作作调调节节旋旋钮钮读读表表盘盘对象是一个对象是一个封装体封装体,在其中封装了该,在

19、其中封装了该对象的属性和操作。通过限制对属性和操对象的属性和操作。通过限制对属性和操作的访问权限,可以将属性作的访问权限,可以将属性“隐藏隐藏”在对在对象内部,对外提供一定的象内部,对外提供一定的接口接口,在对象之,在对象之外只能通过接口对对象进行操作。外只能通过接口对对象进行操作。C+C+通通过建立数据建立数据类型型类类来支持封来支持封装和数据装和数据隐藏。藏。封装性增加了封装性增加了对象的独象的独立性立性,从而保,从而保证了了数据的可靠性数据的可靠性。一个。一个定定义完好的完好的类可以作可以作为独立模独立模块使用。使用。汽车汽车客车客车货车货车小轿车小轿车大客车大客车载货载货载人载人小,速

20、度快小,速度快大,速度慢大,速度慢3 “面向对象面向对象”程序设计的特点程序设计的特点继承与派生继承与派生以以汽车为例看客观世界描述事物的方式:汽车为例看客观世界描述事物的方式:当定义了一个类后,又需定义当定义了一个类后,又需定义一个新类,这个新类与原来的类一个新类,这个新类与原来的类相比,只是增加或修改了部分属相比,只是增加或修改了部分属性和操作,这时可以用原来的类性和操作,这时可以用原来的类派生派生出新类,新类中只需描述自出新类,新类中只需描述自己所特有的属性和操作。己所特有的属性和操作。面向对象程序设计提供了类似的机制:面向对象程序设计提供了类似的机制:继承性大大简化了对问题的描述,大大

21、提高了程序的可重继承性大大简化了对问题的描述,大大提高了程序的可重用性,从而提高了程序设计、修改、扩充的效率。用性,从而提高了程序设计、修改、扩充的效率。新类称为新类称为子类子类或或派生类派生类,原来的类称为,原来的类称为基类基类。派生可以一直。派生可以一直进行下去,形成一个派生树。进行下去,形成一个派生树。3“面向对象面向对象”程序设计的特点程序设计的特点语文、数学、英语、政治、语文、数学、英语、政治、物理、化学、生物物理、化学、生物多态性多态性多多态性指,态性指,同一个同一个消息消息被被不同对象不同对象接收时,产接收时,产生生不同结果不同结果,即实现,即实现同一接口,不同方法同一接口,不同

22、方法。高中生计 算算平均成平均成绩大学生高数、英语、计算机、线高数、英语、计算机、线性代数性代数3 “面向对象面向对象”程序设计的特点程序设计的特点继承继承和和多态多态性组合,可以生成很多相性组合,可以生成很多相似但又独一无二的对象。似但又独一无二的对象。继承继承性使得这性使得这些对象可以共享许多相似特性,而些对象可以共享许多相似特性,而多态多态又使同一个操作对不同对象产生不同表又使同一个操作对不同对象产生不同表现形式。这样不仅提高了程序设计的灵现形式。这样不仅提高了程序设计的灵活性,而且减轻了分别设计的负担。活性,而且减轻了分别设计的负担。1.4 算法的设计与分析算法的设计与分析1.4.1

23、算算 法法 的的 概概 念念 1.4.3 常常 用用 算算 法法 介介 绍绍 1.4.2 算算 法法 的的 表表 示示1.4.1 算算 法法 的的 概概 念念 通俗地通俗地说,算法就是解决,算法就是解决问题的步的步骤。算法是程序算法是程序设计学学习的重点。的重点。用用计算机解决算机解决问题的算法的算法应具有以下特征:具有以下特征:(1)(1) 可可执行性行性(2)(2) 确定性确定性(3)(3) 有有穷性性(4)(4) 可可输入入输出信息出信息1.4.2算法的表示及三种基本结构算法的表示及三种基本结构3 循循 环环 结结 构构1 1 顺 序序 结 构构2 分分 支支 结结 构构num115;1

24、.4.2算法的表示及三种基本结构算法的表示及三种基本结构(1) 顺序结构顺序结构【例例1 11 1】 求求两两数之和。数之和。块1块2块3流程图 寄存器35显示结果:显示结果:35 num115 num220 sum35num220;sumnum1+num2; 演示算法执行过程演示算法执行过程输出输出sum;1.4.2算法的表示及三种基本结构算法的表示及三种基本结构(2) 分支结构分支结构【例例12】 输入三个数,输出其中的最大数。输入三个数,输出其中的最大数。 x7;y12;z10;if(xy) maxx;else max y;if (zmax) maxz;输出输出max;x7y12z10C

25、PUmax12比较比较比较比较显示结果:显示结果:12流程图流程图条件块1块2真假演示算法执行过程演示算法执行过程1.4.2算法的表示及三种基本结构算法的表示及三种基本结构(3) 循环结构循环结构流程图流程图条件块真假【例例1 13 3】求求4 4个整数的和。个整数的和。 0sum4count12x显示结果:显示结果:59演示算法执行过程演示算法执行过程123142621642118600count4; /整数个数整数个数sum0; /累加和的初值累加和的初值while (count0) x输入一个整数输入一个整数; sumsum+x; countcount-1;输出输出sum;1.4.3 常

26、用算法介绍常用算法介绍1. 直接法直接法2.枚举法枚举法3.递推法递推法解决的解决的问题的种的种类与复与复杂程度各不相同决定了算程度各不相同决定了算法的多法的多样性,但从其思想方法上可以将其性,但从其思想方法上可以将其归为以下几以下几种:直接法、枚种:直接法、枚举法、法、递推法、推法、递归法、回溯法等等。法、回溯法等等。本本节 将介将介绍以下三种:以下三种:1.4.3 常用算法介绍常用算法介绍1 直接法直接法 直直接接法法就就是是根根据据问问题题给给出出的的条条件件直直接接求求解解,前前面面的的很很多多例例子子都都是是这这种种算算法法的的运运用用。这这里里不不再再举举例。例。1.4.3 常用算

27、法介绍常用算法介绍2 枚举法枚举法枚举法也称枚举法也称穷举法穷举法,基本思想是,在有限范,基本思想是,在有限范围内围内列举所有可能列举所有可能的结果,找出其中符合要求的结果,找出其中符合要求的解。的解。枚举法适合求解的问题是:问题可能的答案枚举法适合求解的问题是:问题可能的答案是有限个且答案是可知的,但又难以用解析法是有限个且答案是可知的,但又难以用解析法描述。这种算法通常需要用描述。这种算法通常需要用循环结构循环结构来完成。来完成。请看下例:请看下例:【例例14】 给给定定一一个个正正整整数数,判判断断其其非非负负整整数数立立方方根根是是否否存存在在,若若存存在在,输输出出该该立方根。立方根

28、。1.4.3 常用算法介绍常用算法介绍算法如下:算法如下:分析:分析:设某正整数某正整数为2727,则非非负整数立方根整数立方根的取的取值范范围为1 12727,因此可在,因此可在这一范一范围内内对所有整数所有整数进行行检测,满足立方根足立方根为2727的就是的就是所求整数。所求整数。【例例14】求非负整数立方根算法:求非负整数立方根算法:1.4.3 常用算法介绍常用算法介绍numcube_root271显示结果:显示结果:3演示算法执行过程演示算法执行过程比比较较c*c*c2比比较较c*c*c3比比较较c*c*cnum27;cube_root1;/立方根初值立方根初值while (cube_

29、rootnum) 输出输出 “无整数立方根无整数立方根”;1.4.3 常用算法介绍常用算法介绍【例例15】 判断一个正整数是否素数,给出相应结果。判断一个正整数是否素数,给出相应结果。分析:假设正整数分析:假设正整数numnum, , 如果如果numnum不是不是2 2,需要检测它是否含有除需要检测它是否含有除1 1和它本身之外的和它本身之外的其他因子,如果有,就不是素数。检测其他因子,如果有,就不是素数。检测方法是在方法是在2 2 num-1num-1范围内逐个验证。实际范围内逐个验证。实际上可以证明在上可以证明在2 2 numnum平方根范围内逐个平方根范围内逐个验证即可。验证即可。假定假

30、定numnum为为9 9,算法如下:,算法如下:1.4.3 常用算法介绍常用算法介绍【例例15】 判断判断9是否素数算法是否素数算法num9i2k3显示结果:不是素数显示结果:不是素数演示算法执行过程演示算法执行过程比比较较求求余余为为0比比较较求求余余不为不为03为为0比比较较求求余余num9; if (num=2) 输出输出 “是素数是素数”;else i2; ksqrt(num); /平方根取整平方根取整 while (ik)输出输出 “是素数是素数”; else 输出输出 “不是素数不是素数”;1.4.3 常用算法介绍常用算法介绍3.递推法递推法递推算法是通过问题的一个或多个已知解,递

31、推算法是通过问题的一个或多个已知解,用同样的方法逐个推算出其他解,如数列问题用同样的方法逐个推算出其他解,如数列问题以及一些近似计算问题等。通常也要借助于循以及一些近似计算问题等。通常也要借助于循环。环。请看下例:请看下例:1.4.3 常用算法介绍常用算法介绍【例例1】求求n! 分分析析:n!=1 2 3n,因因此此可可以以从从1开开 始始,由由1!乘乘以以2得得到到2!,再再乘以乘以3得到得到3!,以此推出,以此推出n!。假定假定n n4 4,算法如下:算法如下:ni2factorial1.4.3 常用算法介绍常用算法介绍【例例1】求求n!算法:算法:显示结果:显示结果:24演示算法执行过程

32、演示算法执行过程124比比较较23比比较较64比比较较24比比较较5factorial1; /阶乘初值阶乘初值i2;n 4;while (i=n) factorialfactorial*i ;ii+1;输出输出 factorial;1.5 C语言与面向对象的语言与面向对象的C C C语语言言是是七七十十年年代代初初贝贝尔尔实实验验室室的的Dennis Dennis RichieRichie 等等人人在在B B语语言言基基础础上上开开发发出出来来的的。C C最最初初是是作作为为UNIXUNIX操操作作系系统统的的开开发发语语言言为为人人们们所所认认识识。七七十十年年代代末末,随随着着微微型型计计

33、算算机机的的发发展展,C C语语言言开开始始移移植植到到非非UNIXUNIX环环境境中中,并并逐逐步步脱脱离离UNIXUNIX系系统统成成为为一一种种独独立立的的程程序序设设计计语语言言。C C 语语言言版版本本很很多多,为为了了让让开开发发出出来来的的代代码码能能够够在在多多种种平平台台上上运运行行,19881988年年美美国国国国家家标标准准协协会会ANSIANSI对对C C语言进行了标准化,产生了语言进行了标准化,产生了ANSI CANSI C。1.5 C语言与面向对象的语言与面向对象的C (1 1)C C语语言言既既具具备备高高级级语语言言的的结结构构和和编编程程环环境境,又又提提供供

34、类类似似于于汇汇编编语语言言那那样样的的系系统统资资源源操操纵纵能能力力及及程程序序执执行行效效率率。适适合合解解决决有有实实时时要要求的问题求的问题。C语言的主要特点:(2 2)有有丰丰富富的的运运算算符符和和数数据据类类型型,表表达达式式类类型型多多样样化化,可可以以方方便便地地实实现现在在其其他他语语言言中中较较难难实实现现的的运运算算,对对各各种种不不同同类类型型的的程程序序设设计计都有良好的适应性。都有良好的适应性。(3 3)以以函函数数为为基基础础实实现现程程序序的的结结构构化化设设计计,支支持持大大型型程程序序的的多多文件构成及单个文件独立编译,适合大型复杂程序的设计。文件构成及

35、单个文件独立编译,适合大型复杂程序的设计。(4)语言简洁、紧凑,使用方便、灵活,书写形式自由。语言简洁、紧凑,使用方便、灵活,书写形式自由。(5)可移植性好。可移植性好。1.5 C语言与面向对象的语言与面向对象的C C+C+是是由由C C发发展展成成为为的的以以面面向向对对象象为为主主要要特特征征的的语语言言。作作为为C C语语言言的的超超集集,C+C+继继承承了了C C的的所所有有优优点点,又又对对数数据据类类型型做做了了扩扩充充,使使得得编编译译系系统统可可以以检检查查出出更更多多类型错误。类型错误。C+C+支持支持面向对象程序设计面向对象程序设计,通过类和对象的概念,通过类和对象的概念把

36、数据和对数据的操作封装在一起,通过派生、继承、把数据和对数据的操作封装在一起,通过派生、继承、重载和多态性等特征实现了软件重用和程序自动生成,重载和多态性等特征实现了软件重用和程序自动生成,使得大型复杂软件的构造和维护变得更加有效和容易。使得大型复杂软件的构造和维护变得更加有效和容易。此外,在此外,在一致性(一致性(ConsistencyConsistency)检查机制检查机制方面也方面也作了加强,提高了软件开发的效率和质量。作了加强,提高了软件开发的效率和质量。1.5 C语言与面向对象的语言与面向对象的C C+C+与与C C完完全全兼兼容容,很很多多用用C C编编写写的的库库函函数数和和应应

37、用用程程序都可以为序都可以为C+C+所用。所用。但但正正是是由由于于与与C C兼兼容容,使使得得C+C+不不是是纯纯正正的的面面向向对对象象的的语语言言,它它既既支支持持面面向向对对象象程程序序设设计计,也也支支持持面面向向过过程程设设计计。但但我我们们应应当当注注意意用用面面向向对对象象的的思思想想进进行行设设计,以发挥出计,以发挥出C+C+的优势。的优势。C+C+有有许许多多版版本本,国国内内较较为为流流行行的的有有MicrosoftMicrosoft公公司司的的Visual C+Visual C+。1.6 一个简单的一个简单的C+程序程序# include max(int i, int

38、j) /A if (i=j) return i; else return j; void main(void) /B coutij; /从键盘上输入变量值从键盘上输入变量值 coutmax number is:max(i, j) n ; /输出提示和结果输出提示和结果【例例18】 一个简单的一个简单的C+程序。程序。程序组成:程序组成:注释注释编译预处理指令编译预处理指令程序体程序体由若干函数组成,由若干函数组成,其中有且仅有一个主函其中有且仅有一个主函数数main(),(),这是程这是程序的执行入口。在序的执行入口。在Windows编程中定义编程中定义为为winmain()。()。下面进入下面进入VC+ 运行运行

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号