第五章-信息基础设施1_第1页
第五章-信息基础设施1_第2页
第五章-信息基础设施1_第3页
第五章-信息基础设施1_第4页
第五章-信息基础设施1_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4.3计算机分类计算机的种类很多,而且分类的方法也很多。用I代表“指令流”,用D代表“数据流”,分成:SISD、SIMD、MISD、MIMD共四种CU控制部件PU处理部件MM存储单元CS为控制流DS为数据流IS为指令流1989年11月,美国电器和电子工程师协会(IEEE)的一个委员会根据当时的发展趋势,提出将计算机划分为

(1)巨型计算机(Supercomputer)

(2)小巨型机(MiniSupercomputer)

(3)主机(Mainframe)

(4)超级小型计算机(SuperMinicomputer)

(5)工作站(Workstation)

(6)个人计算机(PersonalComputer)

4.3计算机分类巨型机和小巨型机(同时执行数百万用户的指令,一般用于科技、国防、军事)大中型计算机(同时执行数万用户的指令,较大网站的服务器)小型计算机(同时执行数百用户的指令,一般学校,中小企业网络服务器)工作站、PC机(电脑)和单片机、单板机(一般单用户,也可执行数用户的指令)4.3计算机分类巨型机——主要强调的是并行计算、共享内存,追求性能。巨型机技术

体系结构

获得高处理速度的主要手段之一是并行技术。一是利用流水线原理,多个不同处理站同时以流水线方式加工一批数据;二是设置多个相同处理部件合作并行处理。也有的用的不是CPU,而是专用的向量处理机,主要用于计算。主机一般不直接管理I/O设备,而是通过I/O接口通道联结前端机,由前端机完成。日本电气公司开发出世界运算速度最快的超级计算机“SX-8”,其每秒运算次数可达58万亿次。2004年,曙光4000A成功研制,使中国成为继美国、日本之后第三个能研制10万亿次商品化高性能计算机的国家。4.3计算机分类单片计算机则只由一片集成电路制成,其体积小,重量轻,结构十分简单。性能介于巨型机和单板机之间的就是大型机、中型机、小型机、工作站和微型机。它们的性能指标和结构规模则相应的依次递减。随着机器计算能力越来越强,高级的低端可能会与低级的高端重叠,这些提法渐渐不用了。

2.5软件及程序语言定义:软件是指用来指挥计算机运行的各种程序的总和以及开发、使用和维护这些程序所需的技术资料。

软件系统的主要任务:提高机器的使用效率、发挥和扩大机器的功能和用途,为用户使用计算机系统提供方便。软件并不只是包括可以在计算机上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。程序设计的最终结果是软件软件是用户与硬件之间的接口界面。用户主要是通过软件与计算机进行交流。软件是计算机系统设计的重要依据。为了方便用户,为了使计算机系统具有较高的总体效用,在设计计算机系统时,必须全局考虑软件与硬件的结合,以及用户的要求和软件的要求。软件实体运行时,能够提供所要求功能和性能的指令或计算机程序集合。程序能够满意地处理信息的数据结构。描述程序功能需求以及程序如何操作和使用所要求的文档。

从软件存在形式出发,发现软件有以下几个特点:1.软件是人类智力劳动的成果,它一般存储在磁盘上,以文本形式提供给用户。软件产品形式简单,但是获得它要花费若干技术人员较长的劳动时间,而且产品容易被复制。2.软件必须进行维护。软件产品只通过长期使用才能暴露它的隐患,只有通过维护才能使软件适应外部工作环境,继续工作。3.软件不会磨损消耗,但是随着软硬件技术的发展,它会被功能更强,更不容易出错的软件所替代。4.软件产品具有可移植性。为了推广软件,让软件使用的范围更广,绝大部分软件能够在不同的系统中使用。5.1软件特点5.2软件分类计算机软件系统软件操作系统应用软件语言处理程序数据库管理系统实用程序与工具软件通用软件专用软件软件是人们为了告诉计算机要做什么事而编写的,是计算机能够理解的一串指令;手机软件(a)软硬件层次(b)语言层次微体系结构层(微程序或硬连逻辑)操作系统层语言处理层(解释、编译)用户程序层(语言编程)系统分析层(数学模型、算法)硬核级数字逻辑层(硬件)指令系统层(机器语言指令)应用语言虚拟机高级语言虚拟机汇编语言虚拟机操作系统虚拟机机器语言级微程序级寄存器级(硬件)系统软件系统软件泛指为整个计算机系统所配置的,不依赖于特定应用领域的通用性软件,它充当硬件和应用程序之间的媒介,也是可供所有用户使用的软件,即可以认为系统软件是为了形成一个最终用户可接受的系统所要求有的全部软件的总称。

一般把靠近内层、为方便使用和管理计算机资源的软件,称为系统软件。系统软件的功能:主要是简化计算机操作,扩展计算机处理能力和提高计算机的效益。两个主要特点:一是通用性。即无论哪个应用领域的计算机用户都要用到它们;二是基础性,即应用软件要在系统软件支持下编写和运行。

系统软件的核心是操作系统。操作系统是由指挥与管理计算机系统运行的程序模块和数据结构组成的一种大型软件系统,其功能是管理计算机的全部硬件资源和软件资源,为用户提供高效、周到的服务界面。没有配备任何软件的硬件计算机称为裸机。裸机向外部世界提供的界面只是机器指令,为了运行令人费解且难以使用的裸机,用户及其他程序都利用了系统软件,即通过操作系统来使用计算机。

操作系统

·语言处理系统程序设计语言按其发展的过程和应用级别分为机器语言、汇编语言、高级语言。汇编语言也是一种面向机器的语言。

·数据库管理系统数据库管理系统就是在具体计算机上实现数据库技术的系统软件,用户用它来建立、管理、维护、使用数据库等。

·软件工具软件工具是软件开发、实施和维护过程中使用的程序。如输入阶段的编辑程序、运行阶段的连接程序、测试阶段的排错程序、测试数据产生程序等。应用软件

应用软件泛指使用于各类不同应用领域的各种具体的应用程序及其文档资料,即计算机用户在各自业务领域中所开发与使用的程序。通常大多应用软件是指针对某一特定的具体应用而编制成的软件,它使计算机变得更为实用。应用软件一般包括用户程序及其说明性文件资料。随着计算机应用的推广与普及,应用软件将会逐步地标准化、模块化,并逐步地按功能组合成各种软件包以方便用户的使用。应用软件的存在与否并不影响整个计算机系统的运转,但它必须在系统软件的支持下才能工作。例如,WPS、Word、Excel等。计算机硬件操作系统其他系统软件应用软件用户虚计算机操作系统的作用操作系统在计算机系统中的地位操作系统的地位:紧贴系统硬件之上,所有其他软件之下(是其他软件的共同环境)ROMBIOS硬盘RAM加电自检执行自举程序读执行引导程序装入操作系统装入引导程序执行操作系统出引导程序①②③④⑥⑤⑦CPU操作系统在计算机系统中的地位操作系统的目标有效性(系统管理人员的观点):管理和分配硬件、软件资源,合理地组织计算机的工作流程方便性(用户的观点):提供良好的、一致的用户接口,弥补硬件系统的类型和数量差别可扩充性(系统开发人员的观点):硬件的类型和规模、操作系统本身的功能和管理策略、多个系统之间的资源共享和互操作;强调系统的开放程度操作系统的作用(1)

管理硬件、软件资源管理对象包括:CPU、存储器、外部设备、信息(数据和软件);管理的内容:资源的当前状态(数量和使用情况)、资源的分配、回收和访问操作,相应管理策略(包括用户权限)。操作系统的作用操作系统的作用(2)

用户使用系统硬件、软件的接口。系统命令(命令行、菜单式、命令脚本式、图形用户接口GUI);系统调用(形式上类似于过程调用,在应用编程中使用API)。操作系统的作用操作系统的作用(3)

OS是扩展机(extendedmachine)/虚拟机(virtualmachine)在裸机上添加功能:设备管理、文件管理、存储管理(针对内存和外存)、处理机管理(针对CPU);另外,为合理组织工作流程:作业管理、进程管理。操作系统的非形式化定义(关键点):系统软件,程序模块的集合,资源管理和用户接口功能操作系统的作用操作系统举例MSOS:MSDOS,MSWindows3.x,95,98,ME,NT,2000,XP,VESTA,win7UNIX:BSD,SRV4,OSF1,SCOUNIX,AIX,Solaris,LinuxNOS:NovellNetwareRTOS:VxWorks,pSoS,Nucleus……5.3程序设计语言

计算机语言也叫程序设计语言,是人与计算机交流和沟通的工具。计算机语言实际上就是人们与计算机打交道的一套规则,计算机所做的每一动作,每一个步骤,都是按照用计算机语言编好的程序来执行的。所以人们要控制计算机,就一定要掌握计算机语言,这样才能向计算机发出命令。程序设计语言

在过去的几十年间,大量的程序设计语言被发明、被取代、被修改或组合在一起。

尽管多次试图创造一种通用的程序设计语言,却没有一次成功。编写程序的目的不同;程序员之间技术的差距非常大。不同程序之间的运行成本。

自然语言:人类相互交流信息所用的语言高级语言:由于当前的计算机还不具备理解自然语言的能力,于是人们希望找到一种和自然语言接近并能为计算机接受的语言,这种语言被称为计算机的高级语言。汇编语言:符号式程序设计语言。机器语言:然而目前的通用计算机不会直接执行用高级语言编写的程序,因而要先将其翻译成机器能执行的语言,这种语言被称为机器语言(由二进制代码表示的指令组成)。程序设计语言B87F01BB210203D8B81F042BC3(a)机器语言程序(16进制)(b)汇编语言程序(c)高级语言程序MOVAX383MOVBX545ADDBXAXMOVAX1055SUBAXBXS=1055-(383+545)程序设计语言机器语言计算机不能识别与执行人类的自然语言。计算机内部存储指令和数据是采用二进制(0、1)方式,只能识别和接受二进制信息。每一类型的计算机都分别规定了由若干个二进制位的信息(若干个“0”或“1”组成的信息)组成一条指令。例如:某种计算机(16位机)规定:1011011000000000加法指令1011010000000000减法指令。给计算机一个指令,实际上是把“16个电子开关”作为一组,使其中序号为0,2,3,5,6的开关“导通”,其它的11个开关的状态为“截止”。这个电子电路发生的电信号使两个数据相加。这种计算机能直接识别和执行的二进制形式的指令称为“机器指令”。一条机器指令产生一个相应的机器操作。每一种计算机都有确定的若干种(加法、减法、传送、取数、存数等)指令,以实现不同的操作。机器语言不同类型的计算机的电路逻辑是不同的,因此,对不同的计算机,即使是执行同一种操作,指令是不同的。不同的计算机有不同的指令系统。譬如有的计算机指令长度为16位,有的则为32位。若在A机器上的计算机语言编写了一个程序(用机器语言),在B机器上就不能使用,需要重新编写程序。机器语言机器语言是依赖于具体计算机的,它是“面向机器”的语言。用机器语言编写的程序,能直接被计算机识别和执行。但难以推广,仅在计算机产生初期,专业人员才能编写。在这一阶段,人类的自然语言与计算机编程语言之间存在着巨大的鸿沟,软件开发的难度大、周期长、功能简单、界面不友好。机器语言汇编语言汇编语言:将机器指令映射为一些可以被人懂的助记符,如ADD(加法)、SUB(减法)等。汇编语言与人类自然语言间的鸿沟略有缩小,但与人类的思维相差甚远。因为它的抽象层次太低,程序员仍需要考虑大量的机器细节。尽管如此,从机器语言到汇编语言,仍是一巨大进步。这意味着人与计算机的硬件系统不必非得使用同一种语言。程序员可以使用较适合人类思维习惯的语言,而计算机硬件系统仍只识别机器指令。这两种语言之间的沟通如何实现呢?因此需要一种翻译工具(软件)。汇编语言的翻译软件称为汇编程序。它将程序员写的助记符转换为机器指令,再由计算机识别和执行.高级语言为解决上述缺陷,人们创造了一种各类计算机都能通用的、接近于人类“自然语言”和“数学语言”的程序设计语言。譬如写出以下一条指令:C=sin(a+b)+cos(a-b)+3.6;//以上是一条接近“自然语言”(英文)和“数学语言”的指令,如果计算机能执行这样的指令,将为使用者提供极大的方便。这种人工创造的的语言称为“高级语言”,而“机器语言”则称为“低级语言”。所谓“低级”,指它直接贴近机器。“高级”是指离机器远一些,不直接面向机器。高级语言是各种计算机都通用的。高级语言世界上最早出现的高级语言是“FORTRAN”(1954年诞生,1956年正式使用)。用于数值计算。主要目的是实现平台独立。规定使用几十个英文单词以及对应的操作,并规定了必须遵循的语法。计算机不能识别这种“人工语言”,需要有一个“翻译”,把高级语言编写的程序翻译成用二进制形式表示的机器语言程序。这个“翻译”工作不是由人工来完成的,而是用一个计算机软件来实现的。高级语言所以,在“创造”一种语言的同时,必须设计出一个翻译系统,在运行高级语言程序之前,先将这个翻译系统调入计算机内,然后让它工作,它会将高级语言程序翻译成机器语言程序,然后计算机执行机器语言程序。翻译系统分为两类:解释、编译类高级语言虽然大多数的语言可以既可被编译(compiled)又可被解译(interpreted),但大多数只在一种情况下能够良好运行。编译:将可阅读的程序文本(叫做源代码)作为输入的数据,然后输出可执行文件(objectcode)。所输出的可执行文件可以是机器语言,由计算机的中央处理器直接运行,或者是某种模拟器的二进制代码。大多数的编程语言都是编译型。高级语言如果程序代码是在运行时才即时翻译,那么这种翻译机制就被称作解译。经解译的程序运行速度往往比编译的程序慢,但往往更具灵活性,因为它们能够与执行环境互相作用。……源程序n……目标程序n连接库文件可执行目标程序装入执行结果……c=a+b;……………moveax,[ebp+var_4]……55-8B7D8083EC385356…编译高级语言程序的编译、连接、装入和执行过程源程序1目标程序1高级语言六十年代出现的结构化编程语言进一步提高了语言的层次。结构化数据、结构化语句、数据抽象、过程抽象等概念,使程序更便于体现客观事物的结构和逻辑含义。这使得编程语言更接近人类的自然语言。但二者之间仍有不少差距。主要问题是程序中的数据和操作分离,不能够有效地组成与自然界中的具体事物紧密对应的程序成份。然后:面向对象。。。抽象的进化:从地址(机器语言)到名字(汇编语言),到表达式(第一代高级语言,如Fortran),到过程和函数(第二代和早期第三代高级语言,如Pascal),最后到对象(基于对象和面向对象的语言)。

常用高级语言

微机常用的高级程序设计语言。(1)BASIC(4)C/C++

(2)FORTRAN(5)Java

(3)PASCALVisualBasicDelphiVisualC++C++BuilderVisualFortranEclipse&JBuilderBasicObjectPascalC++C++FortranjavaWindowsOperatingSystemWinAPI(WindowsApplicationProgrammingInterface)VCC/C++CRTJVMMFCDelphiC++BuilderVBJavaVCLVBRunTimeBASIC1956年由美国的凯梅尼和卡茨在分时系统中创造,最初是一种解释语言1975年,比尔·盖茨创立的Microsoft,并成功的把Basic

语言的编译器移植到使用Intel处理器的计算机中。icroSoft推出VB-DDE、DLL、GUI2001年VisualBasic.NET2003年推出VisualBasic.NET20032005年在VisualStudio2005内推出VisualBasic2005两种执行方式:解释方式和编译方式FORTRANFORmulaTRAnslator产生于1956年1957年IBM首先配备到计算机上1966年制定两级美国标准:基本FORTRAN和FORTRAN(FORTRAN66)FORTRAN771991年国际标准化组织制定FORTRAN90Compaq和HP合并之后,开发IntelFotran编译器9,有linux和window2个版本,其windows版本为IntelVisualFortran,可以和微软的VisualS集成。支持Fortran2003标准的编译器行将推出PascalPASCAL语言1971。-纪念法国数学家PASCAL。1975年,国际标准化组织(ISO)对Pascal语言進行了修改,从而形成了标准Pascal語言。Delphi采用面向对象的Pascal是第一个系统体现了结构化程序设计原则的语言C语言C语言是一种结构化语言。C语言的表现能力和处理能力极强。有丰富的运算符和数据类型,便于实现各类复杂的数据结构。还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。C语言还具有效率高,可移植性强等特点。广泛地移植到了各类各型计算机上,形成了多种版本的C语言。C语言的发展历史C语言的原型ALGOL60语言。1963年,剑桥大学将ALGOL60语言发展成为CPL语言。1970年,美国贝尔实验室进行了修改,并起名“B语言”。并用B语言写了第一个UNIX操作系统。1973年,美国贝尔实验室在B语言的基础上最终设计出了一种新的语言,C语言。C89:1988年,随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,。C99:在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,。ANSI于1999年制定了一套ANSI标准,于2000年三月采用。C语言的发展历史C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASEⅢPLUS、DBASEⅣ都是由C语言编写的。用C语言加上一些汇编语言子程序,就更能显示C语言的优势,

PC-DOS、WORDSTAR等就是用这种方法编写的。

C++C:程序=算法+数据结构C++:对象=算法+数据结构

程序=对象+对象+对象+对象+....+消息C++最初的版本被称作“带类的C(Cwithclasses)”,在1980年被第一次投入使用;当时它只支持系统程序设计和数据抽象技术。支持面向对象程序设计的语言设施在1983年被加入C++;之后,面向对象设计方法和面向对象程序设计技术就逐渐进入了C++领域。在1985年,C++第一次投入商业市场在1987至1989年间,支持范型程序设计的语言设施也被加进了C++。随着若干独立开发的C++实现产品的出现和广泛应用,正式的C++标准化工作在1990年启动。标准化工作由ANSI以及ISO负责。1998年正式发布了C++语言的国际标准[C++,1998]。通常称作ISOC++。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准,下一次标准更新可能是2009年。至今为止没有任何一款编译器完全支持ISOC++C++的特点C++有着最美好的未来。用它你能写出伟大的代码。除了故意进行恶意欺诈,C++仍将是开发高性能、高复杂度系统的最好语言。据我所知,没有那种语言能在通用性、效率和精致三方面的统一上可与C++相提并论。-BjarneStroustrup博士C++的特点现在C++由以下四个“子语言”组成:

1、C子语言。C++支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别。

2、面向对象的C++。(类)

3、泛型编程语言。C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。(模版)

4、STL(C++标准模板库)。随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,安全性与规范性大受欢迎。(容器、迭代器、函数对象、算法)Sort(col1.begin(),col2.end(),greater<int>());//按小-大排列C++应用

主流的3种操作系统Windows,Linux,Unix,内核都是用C语言和汇编写的,上层高级特性是用C++写的。

几乎所有的网络游戏,搜索引擎,大多数软件都是用C++。C++之父BjarneStroustrup列举的C++应用:A:Softwareforlarge-scalee-commerceApple:OSXiswritteninamixoflanguage,butafewimportantpartsareC++.ThetwomostinterestingareAT&T:TheoprovisioningsystemsAutodesk:AlargenumberofmajornumberofapplicationintheCADdomainGSM-TDMA-CDMAmobilitygatewayGoogle:websearchengine,etc。C,C++,Fortran90compilers,andlinkerforthenewHPIA64platform(theseaddtomorethan1millionlinesofC++code).C++应用IBM:OS/400.Intel:Vtuneperformaceanalysissoftware

compilersandoptimizers

lotsofchipdesignandmanufacturingsoftwareNASA:C++onMars!Alsolotsofsupportingsoftware"ontheground"(i.e.Earth).Microsoft:WindowsXP、

Windows、Windows9x(95,98,Me)、MicrosoftOffice(Word,Excel,Access,PowerPoint,Outlook)、InternetExplorer(includingOutlookExpress)、VisualStudio、SQLMozilla:FirefoxbrowserandThunderbirdmailMySQL:MySQLServerandMySQLClusterSun:TheJavaVirtualMachineiswritteninC++1990年,Sun公司尝试用C++开发用于消费电器中的软件。用一个新语言Oak来解决这个问题。Oak保留了熟悉的C++语法,但省略了明确的资源引用、指针算法与操作符重载等潜在的危险特性。当Oak成熟时,Sun公司的开发小组认识到Oak非常适合Internet编程。

1994年,他们完成了一个用Oak编写的早期Web查看器,后改名为HotJava。1995年,Oak更名为Java(为了促销和法律原因),并在SunWorld95中发布。Java因此而诞生。从此,Java的知名度如日中天。甚至在1996年1月Java编译器第一版发布之前,Java已经成为Internet发行的行业标准。Java出现的背景Java的风格类似于C++;Java摒弃了C++中容易引发程序错误的地方,如指针和内存管理;Java提供了自动内存垃圾搜集机制,从而减轻了编程人员进行内存管理的负担,有助于减少软件错误;Java是完全面向对象的,同时它还提供了大量可重用的类库。

Java的简单性是以增加运行时系统的复杂性为代价的。以内存管理为例,自动内存垃圾处理减轻了面向对象编程的负担,但Java运行时系统却必须内嵌一个内存管理模块。

Java程序被编译成一种与体系结构无关的字节代码,只要安装了Java运行时系统Java程序可以在任意的处理器上运行,Java解释器得到字节码后,对它进行转换使他能够在不同的平台上运行。“WriteOnce,RunAnywhere”C#在未来5年,我们的目标就是超越今天各自为营的web站点,把internet建成一个可以相互交换组件的地方---比尔.盖茨“#”-“sharp”简洁的语法精心的面向对象设计与Web的紧密结合完整的安全性和错误处理灵活性和兼容性C#是一种现代的面向对象的程序开发语言,能在.net框架下开发种类丰富的应用程序,其设计的组件能用于web服务,能被其它任何操作系统的任何编程语言调用。C#1.模块化。不仅语言具有模块成分,程序由模块组成,而且语言本身的结构也是模块化的。2.简明性。涉及的基本概念不多,成分简单,结构清晰,易学易用。3.形式化。发展合适的形式体系,以描述语言的语法、语义、语用。

程序设计语言的发展趋势5.4程序设计语言层次体系程序语言低级语言面向过程的语言面向问题的语言查询语言面向对象的语言高级语言高级语言层次体系高级程序设计语言的层次体系主要分为4类(1)面向过程的语言①科学计算的语言②商用语言③多用途语言(2)面向问题的语言(3)查询语言(4)面向对象语言面向过程

所谓面向过程的程序设计是:用结构化编程语句来编写程序。它把一个复杂的程序分解成若干个较小的过程,每个过程都可以单独地设计、修改、调试。其程序流程完全由程序员控制,用户只能按照程序员设计好的程序处理问题。过程化编程模式:参数输入-----|代码|------结果输出在面向过程的程序设计方法中,问题被看作一系列将被完成的任务,如读、计算和打印。许多函数用于完成这些任务。问题的焦点集中于函数。下图显示了一个典型的面向过程的程序结构。分层分解的技术被用来确定一系列需要被完成的任务,以解决特定的问题。

函数-算法之间关系现在的基本任务是编写计算机执行的指令序列,并把这些指令以函数的方式组织起来。当开发函数的时候,很少会去注意那些被多个函数使用的数据。在这些数据身上发生了什么事情?那些使用这些数据的函数又对它们产生了什么影响?程序规模的增长。程序设计的重点从重于过程设计转向重于对数据的组织。数据和直接操作数据的一集函数合称为一个模块。程序设计的风格变为:决定需要那些模块和分解程序,使得数据隐藏在不同的模块之中

数据隐藏模块化编程发展成为将某种类型的数据集中置于一个类型管理模块的控制之下的编程风格。如果需要多个数据实例?允许用户定义和内建类型行为相似的“类型”来解决这个问题。这种“类型”通常称为“抽象数据类型”。于是,编程风格变为:

决定需要那些类型

为每一个类型实现一组完整的操作

不需要为一个类型生成多个对象的场合可以只使用数据隐藏技术。复数等算术类型是抽象数据类型的常见例子:

数据抽象classcomplex{

doubere,im;

public:

complex(doubler,doublei){re=r;im=i;}

complex(doubler){re=r;im=0;}//float->complexconversion

friendcomplexoperator+(complex,complex);

friendcompelxoperator-(complex,complex);//binaryminus

firendcomplexopeator-(complex);//unaryminus

friendcompelxoperator*(complex,complex);

friendcomplexoperator/(complex,complex);

//...

}

数据抽象没有将各种形状的一般性属性和特定的专有属性分开。对这种区分的表达和利用形成了面向对象的编程。只有可以用来直接表达这种区分的语言才是支持面向对象的。编程的风格变为:决定需要那些对象为每一个对象提供完整的操作使用继承明确地获得一般性

而在不需要表达一般性的场合可以只使用数据抽象。通过继承和虚函数可以发掘出的类型之间的共性的多少是衡量面向对象编程技术是否适用于特定应用领域的核心标准。数据抽象的问题面向对象

有两个机制在支持面向对象编程中起了基本的作用,

第一个是类的继承机制;

第二个是,当在编译时无法确定一个对象的实际类型时,应当能够在运行时基于对象的实际类型来决定调用的具体方法。

其中,对于方法调用机制的设计是关键。面向对象面向对象的语言包含4个基本的分支:基于Smalltalk的;包括smalltalk的5个版本,以Smalltalk-80为代表。基于C的;包括objective-C,C++,Java基于LISP的;包括Flavors,XLISP,LOOPS,CLOS基于PASCAL的。包括ObjectPascal,TurboPascal,Eiffel,Ada95面向对象把数据看作程序开发中的基本元素,并且不允许它们在系统中自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论