面向对象语言JAVAC#C++的区别与特点.doc_第1页
面向对象语言JAVAC#C++的区别与特点.doc_第2页
面向对象语言JAVAC#C++的区别与特点.doc_第3页
面向对象语言JAVAC#C++的区别与特点.doc_第4页
面向对象语言JAVAC#C++的区别与特点.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

面向对象语言JAVA/C#/C+的区别与特点面向对象是一种程序设计方法。在面向对象概念中,整个世界由各种Object组成。世界上存在着许多类型相同的对象,也存在着许多类型不相同的对象。例如:一辆自行车和一根铅笔是类型不同的两个对象,李明的自行车和李芳的自行车可以看作是类型相同的两个对象。早期的计算机程序设计语言经历了Machine-Oriented、Procedure-Oriented、机构化编程等阶段。随着计算机技术发展,以及要解决的问题越来越复杂,早期的程序设计语言已经不能适应实际的需求。从上世纪60年代末,陆续开发出了多个面向对象的程序设计语言。面向对象程序设计语言的出现带动了面向对象的程序设计方法。面向对象的程序设计是主流设计方法,目前绝大多数程序采用面向对象的思想来设计和开发的面向对象设计的主要特点:抽象(Abstraction):抽象是把具体事物一般化的过程,对具有特定属性的对象进行概括,从中归纳出这类对象的共性,并从共同性的角度描述共有的状态和行为特征。抽象包括数据抽象和方法抽象两个方面:数据抽象用来描述某类对象的共同状态;方法抽象用来描述某类对象的共同行为。a封装性通过类实现封装。编写大都通过创建类的对象,以对象为载体进行数据交流和方法执行。主要目的:隐藏细节。尽可能隐蔽对象的内部细节,对外形成一个边界屏障,只保留有限的对外接口使之与外部发生联系。使用者只需要知道对象中变量和方法的功能,而不必知道行为实现的细节。类的使用者与设计者是分开的。封装原则在软件上的反映是:保护类中的数据,要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的“交叉感染”,使软件错误能够局部化,大大减少查错和排错的难度。封装使得类的可重用性大为提高。便于修改,增强代码的可维护性。面向对象程序设计的主要特点是:b继承(Inheritance):继承是指一个类拥有另一个类的所有:数据与方法。为了“扩展”原本类的功能,加强或改进原本类所没有的属性及方法。继承使得程序结构清晰,降低编程和维护的工作量。被继承的类称为父类,继承了父类的所有数据和操作的类称为子类。子类有其新数据和操作,也可以重新定义父类的操作。 C 多态(Ploymorphism),一个消息被不同的类型的对象或相同类型的对象接收时产生不同的行为。程序的多种表现形式:在同一个类中,同名但参数不同的多个方法(方法重载)。子类对父类方法的覆盖或者子类对抽象父类中的抽象方法的具体定义。 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。Java主要特性a、Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。 b、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。 c、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 d、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。 e、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 f、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 h、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。 i、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。 j、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。 k、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。 l、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。 Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。C+特点是1. WIN32常规就是不用MFC,使用API函数编的程序。2. C+特点有很多年的历史了,MFC是基于Windows API 的简单封装。其核心架构基于Document/View架构(20年前被认为很潮流的一种概念)和消息流动机制。这个库自从VC6开始到现在都没有多大改动。MFC封装的范围包括GUI,IO,数据库,网络编程等等方面。但是很多系统开发必须的api都没有封装,这样开发者一般都在MFC的基础上自己处理与业务相关的任务。事实上很多人用MFC只是利用其GUI部分的封装。这个库GUI处理的效率也并不是很高,有时候与UI处理相关的代码会占到整个项目的一半甚至更多。总的来说,这是一个垂老的库,微软在10年以来,除了对MFC进行修修补补以外,没有进行大的改进或者更新。如果你问MFC还会活多久?恩,这是个问题。如果有一天MFC不在了,微软在这个级别上并没有其他产品能够代替它。3. CLR库是随着.Net Framework 2 和VS2005一起发布的库,其核心的实现和C#,VB.net 一样。都是基于公共语言运行库。.Net Framework封装了大量系统的api,以类库的形式提供给开发者。C+中的CLR库可以使用其中和本机代码有关的部分,目前C+还不能涉及到部分。CLR库中的C+颠覆了很多标准C+的传统,甚至可以说,这里的C+不是C+,只是披着C+的皮干其他的事。这里的C+特点更像是C#或者类似的语言。所以这里不叫C+,而叫做C+特点,值得一提的是,有关C+/CLI的部分目前还没有被标准C+接受,最近微软有关C+/CLI标准化的提案被C+标准化委员会拒绝了。所以C+/CLI目前还是微软的一家之言。4. ATL用于编写COM程序。ATL库貌似也年纪很大了,至少在我接触到VC的时候就有它的存在了。这个库可以追溯到COM组件,因为ATL的目的就是帮助开发者更好的与COM交互。到底什么时候有COM这个东西的。我也不知道,我只知道C+特点是有16位版本的,在Windows升级到32位的时候COM也随着升级到了32位。COM就像一些封装好的类对象一样,通过封装系统的api,提供一些标准的方法来给你使用。所以系统中有什么组件,就可以在ATL中用什么方法 。所以ATL不止可以写ActiveX,也可以有window,也可以有其它。有时候有些微软发布的功能是只以COM组件的形式发布的,例如MSXML,这时候MFC就不适合,是要ATL来处理的。但是ATL在处理UI这方面并不是很强,所以微软工程师有一个开源的UI 框架,叫做WTL,专门用来处理UI的。ATL库的缺点是,作为模板库,在出现错误的时候会比较麻烦,出错提示会牛头不对马嘴。C#的特点微软推出C#(C sharp) 是微软对这一问题的解决方案。C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Microsoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选-无论是高级的商业对象还是系统级的应用程序。使用简单的C#语言结构,这些组件可以方便的转化为XML 网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。最重要的是,C#使得C+程序员可以高效的开发程序,而绝不损失C/C+原有的强大的功能。因为这种继承关系,C#与C/C+具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。效率与安全性新兴的网络经济迫使商务企业必须更加迅速的应对竞争的威胁。开发者必须不断缩短开发周期,不断推出应用程序的新版本,而不仅仅是开发一个标志性的版本。C#在设计时就考虑了这些问题。它使开发者用更少的代码做更多的事,同时也不易出错。支持现有的网络编程新标准新的应用程序开发模型意味着越来越多地解决方案依赖于新出现的网络标准,例如HTML,XML,SOAP等。现存的开发工具往往都是早于Internet出现的,或者是在我们所熟知的网络还处于孕育期时出现的。所以,它们一般无法很好地支持最新的网络技术。C#程序员可以在Microsoft .NET平台上事半功倍的构建应用程序的扩展框架。C#包含了内置的特性,使任何组件可以轻松转化为XML网络服务,通过Internet被任何操作系统上运行的任何程序调用。更突出的是,XML网络服务框架可以使现有的XML网络服务对程序员来说就和C#对象一样。这样,程序员就可以方便地使用他们已有的面向对象的编程技巧来开发利用现有的XML网络服务。还有一些精细的特性,使得C#成为一流的网络编程工具。例如,XML正逐渐成为在网络上传输结构化数据的标准。这种数据集合往往非常小。为提高性能,C#允许把XML数据直接映射到struct数据类型,而不是class。这样对处理少量的数据非常有效。消除大量程序错误即使是专家级的C+程序员也常会犯一些最简单的小错误-比如忘了初始化变量,但往往就是这些小错误带来了难以预料的问题,有些甚至需要很长时间来寻找和解决。一旦一个程序作为产品来使用,就算最简单的错误纠正起来也可能要付出极其昂贵的代价。C#的现代化设计能够消除很多常见的C+编程错误。 例如:1. 资源回收减轻了程序员内存管理的负担。2. C#中变量由环境自动初始化。3. 变量是类型安全的。这样,程序员编写与维护那些解决复杂商业问题的程序就更方便了。对版本的更新提供内在的支持降低了开发成本更新软件组件是一项很容易出错的工作,因为代码的修改可能无意间改变原有程序的语义。为协助开发者进行这项工作,C#为版本的更新提供内在的支持。例如,方法重载必须显式声明。这样可以防止编码错误,保证版本更新的灵活性。还有一个相关的特性就是对接口和接口继承的内在支持。这些特性使得C#可以开发复杂的框架并且随着时间不断发展更新它。总体来说,这些特性使得开发程序项目的后续版本的过程更加健壮,从而减少后续版本的开发成本。商业过程和软件实现的更好对应企业的商业计划要付诸现实,必须在抽象的商业过程和实际的软件实现之间建立紧密地对应。不过大多数语言都很难做到这点。例如,如今的程序员们一般使用代码注释来注明哪个类对应于某个抽象的商业对象。C#语言允许类型定义的,扩展的元数据。这些元数据可以应用于任何对象。项目构建者可以定义领域特有的属性并把他们应用于任何语言元素-类,接口等等。然后,开发人员可以编程检查每个元素的属性。这样,很多工作都变得方便多了,比如编写一个小工具来自动检查每个类或接口是否被正确定义为某个抽象商业对象的一部分,或者只是创建一份基于对象的领域特有属性的报表。定制的元数据和程序代码之间的紧密对应有助于加强程序的预期行为和实际实现的之间的对应关系。扩展交互性作为一种自动管理的,类型安全的环境,C#适合于大多数企业应用程序。但实际的经验表明有些应用程序仍然需要一些底层的代码,要么是因为基于性能的考虑,要么是因为要与现有的应用程序接口兼容。这些情况可能会迫使开发者使用C+, 即使他们本身宁愿使用更高效的开发环境。 C#采用以下对策来解决这一问题:1. 内置对组建对象模型(COM)和基于Windows?的API的支持;2.允许有限制地使用纯指针(Native Pointer)。在C#中,每个对象都自动生成为一个COM对象。开发者不再需要显式的实现IUnknown和其他COM接口这些功能都是内置的类似的,C#可以调用现有的COM对象,无论它是由什么语言编写的。C#包含了一个特殊的功能,使程序可以调用任何纯API。在一段特别标记的代码中,开发者可以使用指针和传统C/C+特性,如手工的内存管理和指针运算。这是其相对于其它环境的极大优势。这意味着C#程序员可以在原有的C/C+代码的基础上编写程序,而不是彻底放弃那些代码。无论是支持COM还是纯API的调用,都是为了使开发者在C#环境中直接拥有必要的强大功能。结论C#是一种现代的面向对象语言。它使程序员快速便捷地创建基于Microsoft .NET平台的解决方案。这种框架使C#组件可以方便地转化为XML网络服务,从而使任何平台的应用程序都可以通过Internet调用它。C#增强了开发者的效率,同时也致力于消除编程中可能导致严重结果的错误。C#使C/C+程序员可以快速进行网络开发,同时也保持了开发者所需要的强大性和灵活性。它们三者的区别简单地说,它们不是一种语言,语法有差别,编程时具体用到的类库或者函数库也不一样。虽然它们不是一种语言,不过它们却也有所联系。广泛地说,可以看作其他三种语言的源语言,因为其他三种语言几乎都是从而来的,无论从数据类型还是控制语句看,其他三种语言都有从得来的迹象。其中则一般看作是对语言的扩展。因为语言没有面向对象的语法结构,而当时业界又迫切需要面向对象的编程特性,所以贝尔实验室的开发者就为添加了面向对象的结构。现在已经不只是的扩展了,它已经完全可以被看作一种新的编程语言。虽然的特性以及库函数仍然被支持,不过拥有自己的独立的类库体系,功能相当强大。语言是一种完全的面向对象语言,虽然它的底层(运行时库)是用语言开发的,可是并不依赖于。因为的运行是在运行时库的支持下进行的,所以运行效率比起可以更接近底层的来说效率会有所影响,不过的类库采用很好的设计理念设计,非常好用,也非常实用,已经成为业界的一种标准开发语言。它的跨平台的特性尤其让很多开发者欢迎,你只需要开发一次就能在所有安装了运行时库的系统上运行。发展了十几年了,可以应用领域非常之广泛,开发有,桌面领域现在有。是微软开发的一种编程语言,语法类似,几乎就是从的翻版。运行原理和也类似,也是通过运行时库的支持运行。不过支持的平台还很有限。几乎被所有平台支持,而目前只被和支持,下的支持当然是由微软自己开发的,而下的支持则有支持。实际上,也是把应用转化为应用而已,所以本质上,仍然只是被微软自己的操作系统支持。应用平台受到限制,是它最大的缺点。的优点在于与底层比较接近,可以控制的粒度更加精细,是开发系统级应用的最佳选择。关于缺点,我想正是源于其优点,因为它们能控制的编程元素粒度精细,所以编程比较困难,烦琐,容易出错。和都比较高级,可以看作高级语言的高级语言,优点是开发容易,但运行效率不如更为底层的。具体选择使用的时候,可以根据实际的项目需要选择。运行效率要求高的,底层控制要求高的用,否则可以选择或;跨平台的要求高的可以用。关于跨平台,也是很好的语言,因为所有平台都支持,不同的是,不同平台支持的实现不同,类库不同,要编写跨平台的程序,需要选择跨平台的类库,如标准类库,如果标准类库的支持不够也只需要附加编写一个跨平台的支持类库。C是爷爷,C+是爸爸, C#是c的外孙。这形象说明了三者的关系。从时间先后上说,他们之间最早出现的是C,然后是c+,最后是c#。c+是为了解决软件危机而引入面向对象,c#为了实现平台统一和java争夺市场下的产物。从性能上说, c的效率最高,c+次之,c#最低。C是面向过程的结构化编程语言,他的特点是语言体积小,效率高, 语言灵活,给程序的限制小,而且可以方便的对低层进行操作,所以它非常适合于开发操作系统,驱动程序,嵌入式等对速度要求较高的程序。 C+使向下完全兼容C的, C+与C相比最显著的变化就是增加了面向对象的成分,也就是增加了类的概念,因为它的增加使软件开发可以比较容易的描述人类的思维,使得软件的开发和维护变得相对简单,直接降低了软件的成本, 但因为C+是面向对象的语言,这本身就制约他的速度,所以C+适合开发那些大型项目,现代的大部分语言

温馨提示

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

评论

0/150

提交评论