叩开C#之门系列之C#与面向对象编程语言

2016-02-19 15:09 7 1 收藏

下面请跟着图老师小编一起来了解下叩开C#之门系列之C#与面向对象编程语言,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

【 tulaoshi.com - 编程语言 】

  C#是纯粹的面向对象编程语言,它真正体现了一切皆为对象的精神。在C#中,即使是最基本的数据类型,如int,double,bool类型,都属于System.Object类型。此外,使用C#编程,不会存在与游离于对象之外的属于过程的东西。因此,学习C#,就必须具有面向对象思想,不明白所谓的面向对象思想,就不可能掌握C#的精髓,而对于C#的理解,就只能仅限于语言特色的表面了。

  很多讲解面向对象思想的书籍和文章喜欢将面向对象与面向过程相比较,然而对于学习程序设计的初学者而言,是完全没有必要的。一张空白的纸张,事实上比写满字的纸张更利于未来的发展。

  那么什么是面向对象思想?其精要当然是一切皆为对象的意义。软件的开发与设计,是围绕着开发的目标进行的。比如开发一个电子商务网站,那么与电子商务有关的都是我们要操作和关心的,商品、订单、用户、目录、购物车等等,都是对象。如果要开发一个论坛,那么论坛中必备的要素,如论坛分类、主题、帖子、评论、用户,也全都是对象。从小处说,我们要求写一个算法用以计算阶乘,那么起始值、运算结果、以及整个算法都是对象。

  那么对象具有什么特质?一般而言,一个对象应具有属性和行为。以现实世界为例,人作为一种特殊的动物,也是我们所称谓的对象。这个对象具有很多属性,例如姓名,身高、体重、民族、国籍、出生年月等等。而行为呢,可以是行走、吃饭、跑步、乃至于玩游戏、踢足球。如果从词义学的角度来看,属性更偏向于名词的范畴,而行为则近乎于动词。然而对象也有特殊的情况,或者只具有属性,或者只具有行为。例如身份证,可能只具有姓名,出生年月,籍贯,身份证号等属性,而没有行为。例如飞,这本身是一种动作,但同样可以认为是一种行为。

  然而这种划分并非绝对,根据实际情况,同一种对象具有的属性和行为可能不一样。例如同样是人,如果是要开发一个户籍管理系统,我们就不必去考虑行走、吃饭、跑步等行为,但如果是一个足球游戏,那么对象人,就需要各种踢足球的动作作为该对象的行为了。再比如身份证对象,也可能为了使用方便,会为它添加IsValidate这样一个行为。

  还要注意的是,很多时候属性其实本身也是一个对象,例如姓名,可以是string类型,它属于Sytem.Object对象类型,我们也可以单独为姓名建立一个类对象:

  

public class Name{public string FirstName;public string MiddleName;public string LastName;}

  在C#里,有各种各样的对象类型,除了本身提供的基本类型外,还支持自定义各种类型,包括class,struct,enum,interface,delegate,event。以前面的例子来看,对象Person人,就可以被定义为class类型,国籍可以被定义为enum类型。没有行为的身份证,也可以被定义为struct类型。动作飞可以被定义为interface类型。至于delegate和event,则是一种特殊对象类型,例如我们可以为论坛管理系统,定义一系列事件,如BeforePost,AfterPost等等。关于这些内容,我会在后面的内容中详细讲解。

  要掌握面向对象思想,就必须具备识别系统中对象的能力。在我们要开发的系统中,哪些需要定义为单独 的对象,而且这个对象应该具备哪些属性和行为,都是初学者比较头疼的问题。要正确地识别对象,就需要首先分析该系统所应实现的功能。例如,我们要求开发一个电子商务系统,功能要求如下:

  1、支持商品的查询功能;

  2、用户如需购买商品,需要成为注册用户并登录;

  3、如果当前库存无该商品,用户可以预订;

  4、用户可以将商品放入购物车;

  5、用户购买商品之前,需提交订单;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  6、用户提交订单后,系统应将订购信息发送邮件给用户;

  7、用户可以对商品添加评论。

  有一个简单的方法,可以帮助我们识别对象,就是找出这些功能描述中的关键名词,如商品、用户、购物车、订单、评论。这些词语基本上可以涵盖这个电子商务系统的主要对象了。至于对象的属性,可以考察该系统对这个对象的要求和所需要的信息。例如商品,必然要求有商品名、价格、相关图片、所属类别、库存量等等。至于行为,我们还可以从功能描述中去寻找与这些对象名词相关联的动词。例如商品的查询,就代表商品具有Search行为。用户注册与登录,就代表该用户具有这两种行为:Register,SignIn。当然隐含的行为自然还包括SignOut。

  真正要识别好对象,也许我们需要掌握UML的知识,知道怎么写用例。或者利用极限编程的方法,把一个个用户故事写出来,然后一一识别。不过这些知识对于初学者似乎太难了。我们现在知道能有这样一个方法就可以了。我更希望的是,读者在看完本节,能够建立起一切皆为对象的思想。最后,更希望大家能把识别对象看作是一种填字游戏,关键不在于答案是什么,乐趣全在游戏中了。

  面向对象思想博大精深,不是三言两语就能说清楚的。但建立这样一种思想,要存乎于你的内心,这在与一种妙悟。也许在你写了几百个小程序之后还没能体会到面向对象的真谛,但是在霎那之间,你却突然明白了,顿有一种拨开云开见月明的喜悦。我不是故意卖弄玄虚,有时候开发软件还真需要那么一点灵感,有人说,编程是一门艺术,我同意。那么这种妙悟什么时候能来到,我无法确知答案,这需要你的体悟。不过这种体悟与谈禅无关,不是每天冥想就可以的,还是踏实点,多写写程序,慢慢你就会明白了。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1609011.html

延伸阅读
经常听见别人说面向对象的程序设计,以前在学校上课的时候,也有开面向对象程序设计这门课。可是不幸的是,这些都是以C++,甚至VC++为基础的。而更加不幸的是,多年以来我一直是一个C的使用者。在学校的时候,我主要做的是硬件上的驱动层,和底层功能层。 !-- frame contents -- !-- /frame contents -- 在工作以后,又做的是手...
标签: ASP
       欢迎您加入C#的世界!      这一章将把您引进C#的天地,并回答一些相关的问题,如:您为什么要使用C#,C++和C#的主要有什么不同点,以及为什么C#使开发更容易而且还使您感到很有趣。      为什么是另外一种编程语言?      必须回答...
摘要:本文介绍了Excel对象、C#中的受管代码和非受管代码,并介绍了COM组件在.NET环境中的使用。 关键词:受管代码;非受管代码;Excel对象;动态连接库 引言 Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格。Excel以其功能强大,界面友好等受到了许多用户的欢迎。在设计应用系统时,对于不同的用户...
Linq项目简介和开发环境的搭建   9月份,微软推出了一项名为“Linq项目”的新技术,用于在.NET语言中集成数据查询的功能。您可以从http://msdn.microsoft.com/netframework/future/得到Linq项目的技术预览版,其中包括大量的介绍文章(英文)和C# 3.0以及VB 9.0的编译器。   Linq项目英文全称为Langu...
像Java一样,C#提供了一整套相当丰富的类库、方法以及事件以供开发者使用。C#还引入了GDI+,它是由GDI演变而来的,具有比GDI更强大的功能而且简化了程序员的编程工作。所以开发者运用这些,就可以很方便的开发出具有强大图形图像功能的应用程序了。本文,笔者就通过一些实例像读者介绍一下C#中的图形编程的基本知识。 简单实例: ...

经验教程

769

收藏

39
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部