c#面向对象设计一团糟

到现还没理解面向对象的具体涵义
还有我学。NET的
做项目老是不喜欢用类 就几个常用的方法封一下
具体功能还是能实现的 但是整体框架 一团糟
要不要拿本C#的基础书回炉从头来过 有用吗 我基本的语法逻辑都还行。。
就是整体没什么概念。。
各位出去有经验的告诉下啊 谢谢了。。。

我在网上找的,我电脑里面也有

C#与面向对象编程语言

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、用户购买商品之前,需提交订单;
6、用户提交订单后,系统应将订购信息发送邮件给用户;
7、用户可以对商品添加评论。

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

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

面向对象思想博大精深,不是三言两语就能说清楚的。但建立这样一种思想,要存乎于你的内心,这在与一种“妙悟”。也许在你写了几百个小程序之后还没能体会到面向对象的真谛,但是在霎那之间,你却突然明白了,顿有一种拨开云开见月明的喜悦。我不是故意卖弄玄虚,有时候开发软件还真需要那么一点灵感,有人说,编程是一门艺术,我同意。那么这种“妙悟”什么时候能来到,我无法确知答案,这需要你的体悟。不过这种体悟与谈禅无关,不是每天冥想就可以的,还是踏实点,多写写程序,慢慢你就会明白了。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-03-12
你应该只是面向对象的思维方式还不够
`
这个编程思想别人的经验没办法用在你的身上
`
因为每个人想的都不一样
面向对象说白点就是面向人的编程思想
`
这个只能自己去慢慢体会
`
不过我说一下
:
其实不用三层,不面向对象,都是可以做出程序的
但是只能做小程序,而且没法与别人合作
`
比如说,2人的项目,和你合作的跟你一样,也不喜欢用类,也不喜欢面向对象
这样的话,你们的程序是跑不起来的,你做你的.他做他的.最后合不到一起
`
所以你做程序的时候,一定要想着,这个程序是你和别人一起做,要从别人的方向来做东西,做完后,找懂点的朋友帮你看看,能不能很清楚看出来,这个类有什么用,三层用的时候,是不是严格按照框架的(其实一般的小项目没什么用三层,只是为了后期的维护以及以后调整)
`
关于基础的书,建议还是看看,只需要大概过一遍,"百看不如一练"这句话适合你
`
面向对象的思想,只有靠自己来领悟,别人没办法帮你(不过可以看别人的成功项目,看看别人是怎么把东西一步步做出来的,学习他的思想,然后运用,熟练后你就会有自己对面向对象独特的见解)本回答被提问者采纳
第2个回答  2010-07-20
看C#的基础书没什么用,你既然能做项目,基础书对你没什么用了。

古今主要原因你写的东西规模太小!其实小东西搞太复杂的封装和框架没什么意思,除了增加代码量。面向对象是不错,但也要区分情况,根据需求来抉择。

如果要真写大规模的东西,希望能有个良好的组织结构,建议看看 设计模式 方面的书籍,应该会有一些帮助。
第3个回答  2010-07-27
1、现在有C#书大部分是学语法。
2、以前所用的全是面向过程编程方法,脑子还转不过来。
3、建设你多看看 设计模式 的书,基础的会就行了,不会再查。
第4个回答  2010-07-20
还是用别人设计好的框架 在里头你就会自然而然用类了

比如用asp.net的MVC框架,比如如果你项目中用到hibernate,那不用类是没办法的

在项目实践中 要如何选择编程语言?
如果你从事的工作具有很多规则系统算法上的复杂性,使用一些能够擅长于表达的东西:一种函数式语言,像haskell 或者F#。或者就像90%的网页应用那样,做的就是数据的输入和输出,你需要一种具有较好的面向对象能力的语言去尝试塑造你的领域:Java 和 C# 都是很好的选择,以及还有几乎所有的其它的现代语言。...

学软件技术好找工作吗?
软件技术主要课程 面向对象程序设计、软件工程与项目管理、软件测试、.NET\/Java Web程序开发、.NET\/Java企业级开发、3G\/4G手机软件开发等、计算机网络与通讯、网络操作系统、多媒体技术与应用、大型数据库处理技术。主要开设课程:软件工程,C#程序设计,java程序设计,数据库技术与应用,计算机专业英语,JSP,...

AOP的名称含义
9. 应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。10. AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。11. OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效...

嵌入式软件开发工程师的主要工作是什么?你会选择这个行业吗?
在我们选择各种 不同的行业之后,我们往往会犹豫,徘徊,会想这种工作适不适合自己 ,就例如比较偏僻的工作 ,嵌入式软件开发工程师等等 。这种工作是平常我们接触不到的 ,他围绕MCU的相关开发工作驱动, sensor 开发的。为何其他部门解决驱动问题 ,保证工作的持续性以及稳定性 ,并且在规定时间内完成各种...

软件开发是个什么概念?
两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和...

程序员往上做是什么?软件分析师、架构师、工程师有什么区别?
1、侧重面不同 以上岗位在工作中侧重面不同。程序员、系统架构设计师主要面向技术,管理技术团队;系统分析师和工程师主要面向业务,管理业务需求。程序员、系统架构设计师偏技术一些,很多公司项目是没有架构师一职的,更多的是由系统分析员或项目中的资深程序员来担任,可见系统分析员需要的是通才,而...

软件开发是什么?
一般是用某种程序设计语言来实现的软件开发的,像Java、Python、2C和C++等都是软件开发的需要的编程语言。看到那么多编程语言,同学又就开始犯嘀咕,这么多,到底学什么?今天听人说Java不错,想学;明天听人说Python前景广,想学;为什么会迷茫,还不是因为你不够了解他们。所以,今天信盈达小编先来给...

软件开发将来能干什么工作?
再其它的,任何系统级软件和对效率高要求的大型桌面应用都可以用VC写。各种网游基本都是VC++写的。数据库,windwos系统本身,VS编译器,游戏引擎啥的。这些都平常人做开发比较少能接触到的部分,但VC一个很重要的功能就是做这个,天生有优势。吾等码农都跑去用java,C#写网站去了,大VC学的人都少。

软件工程是干什么的?
主修课程该专业除了学习公共基础课外,还将系统学习离散数学、数据结构、算法分析、面向对象程序设计、现代操作系统、数据库原理与实现技术、编译原理、软件工程、软件项目管理、计算机安全等课程,根据学生的兴趣还可以选修一些其它选修课。 毕业去向除考取国内外名牌大学研究生外,主要毕业去向是计算机软件专业公...

什么是类不变式
面向对象的泛滥 另一种使人们陷入困境的情况则恰恰相反:这些人认为C++应该是一种极其高阶的语言,应该一切面向对象。他们坚信每当他们需要增加一个新功能时,就需要在一个拥有很多虚函数的庞大的类继承体系中插入一个新 类。这种思想已反映在诸如Java这样的语言中,但很多问题并不适合用类层次结构来解决。例如一个整数...

相似回答