当你说C#是面向组件的语言时,它意味着什么?

时间:2009-08-05 16:20:24

标签: c#

我以前学过Java。我对Java感到厌倦,一段时间后又回到了C ++。我认为C#与Java类似。在对C#进行一些阅读之后,我对C#和Java之间相似性的假设是不正确的。我在C#中发现了许多强大的概念,我喜欢在Java中看到它。无论如何,除了一件事,我读到的很多内容对我都有意义。我一直听说C#是面向组件的语言!维基百科对这个概念毫无用处。

当你说C#是面向组件的语言时,简单来说是什么意思?!一个简单的例子将不胜感激。

7 个答案:

答案 0 :(得分:11)

我觉得“面向组件”和“面向对象”之间的界限非常模糊,在大多数情况下,可以安全地假设它们是相同的。

话虽如此(鉴于我不了解您对面向对象编程的了解)我提交this excellent Wikipedia article给您阅读:

  

面向对象编程(OOP)是一种   使用的编程范例   “对象” - 由数据结构组成   数据域和方法 - 以及它们的   设计应用程序的交互   和计算机程序。程序设计   技术可以包括这样的特征   作为信息隐藏,数据   抽象,封装,   模块性,多态性和   遗产。它并不常用   在主流软件应用程序中   发展到20世纪90年代初。   现在有很多现代编程语言   支持OOP。

您可能还想阅读Component-based software engineering,它在整个系统中应用类似的概念:

  

基于组件的软件工程   (CBSE)(也称为基于组件的   发展(CBD))是其中的一个分支   软件工程,优先考虑   这是关注点的分离   尊重广泛   功能齐全   给定的软件系统。这种做法   带来同样广泛的   两者的利益程度   短期和长期的   软件本身和组织   赞助它。

     

组件被认为是其中的一部分   服务的起始平台   整个软件的定位   工程,例如Web Services,   最近,面向服务   架构(SOA) - 一个   组件转换为服务   然后继承   超越的特征   普通组件。

答案 1 :(得分:8)

我相信这里的其他人将能够更好地解释面向组件的语言是什么(如果不是,那么应该在互联网上彻底搜索),但我认为这是面向组件的范式可以视为面向对象编程的实施例。

也就是说,面向组件的编程通过严格执行和实现一些OO概念来专门化面向对象编程。基本上,整个想法是创建可重用的代码 - 以组件的形式 - 可以互换。因此,面向组件的编程在很大程度上依赖于:多态,封装,后期绑定,继承(通过接口)以及最重要的二进制可重用性

组件是一个软件包,它封装了数据和功能 - 就像OOP中的对象一样 - 但是在更高的层次上。

所以,说C#是面向组件的语言,基本上说它非常适合用于开发我们称之为组件的软件包 - 但我觉得C#的目标是.NET框架与声明有很大关系。

在反思中,我们很可能会说Java也可以被认为是一种面向组件的语言 - 虽然我不得不承认我没有广泛的Java知识。

答案 2 :(得分:7)

我不认为C#是“面向组件的语言”。它是一种面向对象的语言,可以轻松打包到组件中。

我认为更准确地说,许多基于.NET的开发框架都是面向组件的框架。这使得C#开发组件面向,如果您正在开发面向组件的框架。例如,ASP.NET和Windows Forms主要基于组件概念模型 - 一切都是通过小组件完成的,在设计时协同工作。

但是,您可以使用很少或没有组件方向轻松开发C#。语言本身不提供此功能 - 除了在您选择使用它时启用此开发风格。

答案 3 :(得分:2)

可能我错了 但我认为:

我在e balagurusamy第一章中已经阅读了相同的陈述 但没有关于它的描述 但有一条线。 C#是第一个面向组件的语言 并在另一行描述 C#是当今唯一的面向组件的语言 据我所知,我认为语言C和C ++是基于COM的语言。 这意味着他们完全依赖我们的操作系统,每个程序都在我们的操作系统注册表中注册

在Java中,我们没有在OOP编程中使用C语言(基于com的组件)的选项 但如果我们谈论C#,我们可以 也许这就是为什么C#也被称为面向组件的语言

我们如何使用:

  1. 打开visual studio。
  2. 创建任何类型的新项目。
  3. 打开解决方案资源管理器。
  4. 您的文件名右侧。
  5. 点击添加参考。
  6. 在这里你可以看到com标签

    这些是用C语言编写的dll

    您还可以通过浏览标签

    添加C语言dll

答案 4 :(得分:1)

我可能错了,但这就是我的看法:这意味着系统的各个部分彼此分开,很容易被替换。

在动态语言中,由于其灵活性,它相对容易,但在C#和Java等语言中,您需要使用dependency injection等特殊技术。

答案 5 :(得分:0)

在一行中我们可以说它面向组件的编程意味着C#具有OOP的自动化能力,我们无法在没有面向对象的应用程序的C#或java中工作,因此这种技术是在高级语言中构建的。因此,这种技术称为面向组件。

答案 6 :(得分:0)

C#是一种面向对象的语言,但是C#进一步包括对面向组件编程的支持。现代软件设计越来越依赖于功能齐全且功能齐全的软件组件。这些组件的关键在于它们提供了具有属性,方法和事件的编程模型。它们具有提供有关组件的声明性信息的属性;并且他们合并了自己的文档。 C#提供了直接支持这些概念的语言构造,使C#成为创建和使用软件组件的非常自然的语言。