我对面向对象编程的理解非常有限。
我已经在.Net上编程一年左右了,但是我完全是自学的,所以一些更高级的OOP用法对我来说并不清晰。
封装、继承、抽象等,我知道它们的意思(表面上),但是它们的用途是什么呢?
我只是将可重复使用的代码放入方法中使用OOP,但我知道我错过了很多功能。
即使是类 - 我只制作了两三个实际的类。相反,我通常只是将所有方法包含在主窗体中。
我对面向对象编程的理解非常有限。
我已经在.Net上编程一年左右了,但是我完全是自学的,所以一些更高级的OOP用法对我来说并不清晰。
封装、继承、抽象等,我知道它们的意思(表面上),但是它们的用途是什么呢?
我只是将可重复使用的代码放入方法中使用OOP,但我知道我错过了很多功能。
即使是类 - 我只制作了两三个实际的类。相反,我通常只是将所有方法包含在主窗体中。
Employee
的类;如果需要使用打印机资源,则创建一个Printer
类;如果需要在对话框上绘制按钮,则创建一个Button
类。这种方式不仅使你实现了更大规模的模块化,而且你的模块反映了程序应该处理的任何真实事物的有用模型。你必须阅读这篇我无法清晰地实现面向对象编程概念,即使我理解大部分面向对象编程概念。为什么?
我曾经遇到同样的情况,而且我也是自学的。我按照那些步骤去做,现在我开始了解如何实现面向对象编程了。我以一种更模块化、更好结构化的方式编写我的代码。
http://accu.informika.ru/acornsig/public/articles/ood_intro.html
http://www.fincher.org/tips/General/SoftwareEngineering/ObjectOrientedDesign.shtml
我学习了Turbo Pascal中的OOP,发现当我尝试建模物理对象时它立即变得有用。典型的例子包括一个Circle
对象,它有位置和半径字段以及绘制、检查点是否在内部或外部和其他操作的方法。我想,你开始把类看作是对象,把方法看作是动词和行动。过程式编程就像写脚本一样。它通常是线性的,并且按照需要完成的步骤进行。在OOP世界中,您构建了一个可用的动作和任务库(就像乐高积木),并使用它们来做您想做的事情。
继承用于多个对象应该/可以使用共同的代码。您可以轻松地反向操作,并为所需内容创建过多的类。如果我正在处理形状,我真的需要两个不同的矩形和正方形类吗,还是可以使用具有不同值(字段)的公共类。
精通需要经验和实践。一旦您开始思考如何解决特定问题(特别是当涉及到将来再次使用您的代码时),慢慢地您将获得信心,开始在您的代码中包含越来越多的OOP功能。
祝你好运。