Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何改进我的面向对象编程?_C#_Oop - Fatal编程技术网

C# 如何改进我的面向对象编程?

C# 如何改进我的面向对象编程?,c#,oop,C#,Oop,我了解过程编程(好吧,谁不懂呢),我想很好地了解面向对象编程以及之后的功能。我只是一个业余爱好者,所以这将需要我一个年龄和一天,但它的乐趣 有人知道我能帮什么忙吗?项目理念?示例—文档化良好的代码,这些代码是他们的 我目前使用C++,但是C语言看起来更适合使用。 < P>有一些很棒的OOP书籍,从头覆盖和./p>到真正地适应面向对象编程,有两件事你可以做。p> 强迫自己用对象模拟真实世界的问题。创建类来表示对象,创建方法来表示它们可以做的事情 使用一种语言和/或一个框架,真正地将OOP强加给您。

我了解过程编程(好吧,谁不懂呢),我想很好地了解面向对象编程以及之后的功能。我只是一个业余爱好者,所以这将需要我一个年龄和一天,但它的乐趣

有人知道我能帮什么忙吗?项目理念?示例—文档化良好的代码,这些代码是他们的


我目前使用C++,但是C语言看起来更适合使用。

< P>有一些很棒的OOP书籍,从头覆盖和./p>到真正地适应面向对象编程,有两件事你可以做。p>
  • 强迫自己用对象模拟真实世界的问题。创建类来表示对象,创建方法来表示它们可以做的事情

  • 使用一种语言和/或一个框架,真正地将OOP强加给您。直到我学习了一门Java课程并开始大量使用Swing,我才真正开始摸索OOP。我最近没怎么玩过C,但我认为C或Java都是不错的选择


  • 这取决于你懂什么语言。就我个人而言,我会推荐某种类型的OO脚本语言。IE PHP或Python,我相信这将帮助您实现半平稳过渡。

    我最近已将PHP转换为C#并且热爱它的每一分钟!我想说的是,给自己找一个新的项目,有一个灵活的时间表,然后投入其中。还可以买几本书,特别是关于OOP概念和设计模式的书。

    我建议您阅读。书中很少有代码,但有很多关于如何建模的讨论

    我希望在我刚开始工作时有人能告诉我以下几件事:

  • 对对象建模时,您应该关注行为而不是数据的形状
  • 尽管许多OO教程对真实世界的事物(如动物和车辆)进行建模,但我们在OO软件中建模的许多事物都是概念和构造(在真实世界中没有物理表示的事物)

  • 我建议主要使用强类型语言,如C#或Java,因为许多设计模式和通用OOP原则都是面向强类型的(,)。Ruby非常棒,但是很多常见的OOP原则,比如接口编码,都不适用

    花点时间学习鲍勃叔叔的原则。慢慢来,特别注意单一责任。如果你没有从Bob叔叔那里得到任何其他东西,那么在你的头脑中建立SRP,并尽早、经常地应用它


    我也喜欢Bob叔叔关于代码katas的想法。我建议您学习。

    尝试学习Smalltalk-改进OO编程的最佳方法。

    了解基本知识后,最好的方法是通过示例学习。下载流行的开源项目,并深入研究它们。我从一些项目中学到了很多:

    • -对责任链模式有一些良好的实施

    我认为您可以对测试驱动开发进行研究。这会自动引导您遵守面向对象原则的规则。这是一种实用的方法,但它是有效的。您还可以通过学习技术问题来支持这一过程,如坚实的原则和设计模式。阅读大型项目的源代码也是提高面向对象技能的一个好主意

    我希望很久以前给我的一条建议是:

    不要过度使用继承

    这对于初学者(imho)来说是一个非常容易的陷阱,因为它是OOP中大家都在谈论的重要概念之一

    基本上,您应该只在真正有意义的地方使用继承——想想数据类型、一些小部件层次结构,以及is-a关系如此明显的地方——任何人都会使用它。否则,您应该将对象注入其他对象并调用它们,以便更改功能(组合)

    当您可以使用单个类并将一个对象(参数注入构造函数)注入到实现接口的对象中时,不要试图只定义一个抽象方法的负载,并多次重写以不同的方式实现它们,您可以调用该接口来执行您本应在抽象方法中添加的任何变量功能。
    这将导致更简单、更可重用的代码(以我的经验),并且更易于测试。

    为了掌握面向对象的技能,您需要大量的实践

    试着用“对象术语”来思考你对代码所做的一切

    应用它:
    • 使用服务器端语言
    • 保持Java脚本代码面向对象
    • 考虑让CSS代码易于重用,并且包含低重复性

    • 阅读。这可能是有史以来关于OO编程的最好的一本书。

      我是帮助更新不同语言的概念的最好的一套书。尽管书很好,但仅仅在书中阅读OOP并不能真正教给你。你真的需要一些实践经验。有些人可能不喜欢Head First系列,因为它们似乎针对新手。当你含沙射影地说一本针对新手的书对他们来说是合适的时候,即使只有一点点经验的人似乎也会被冒犯,但是如果你已经接受了你还有更多的东西要学,这些首屈一指的书是很棒的。他们给出了具体的例子,并以简洁明了的方式陈述了原则。我强烈反对。PHP和Python都有非常奇怪的对象系统。Python有点不错,但它在继承方面做得很差,需要显式的“self”参数,这可能会让人困惑。PHP的对象系统还可以,但由于PHP的遗产有限,它有很多奇怪之处。另一方面,Ruby有一个很棒的对象系统,可能是一个不错的选择。嗯,我必须看看Ruby,是的,我同意Python确实有一种非常独特的处理方式。大多数程序程序员将继续使用wr