想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
已关闭8年。
Improve this question
我一直在从事一些我自己的项目,没有任何内在的曝光。目前,我使用简单的方法来开发可忽略的OO方法的小型应用程序,例如使用函数的多态性为数据库函数创建通用类,而很少使用构造函数,但是我真的无法考虑如何使用OOP实现整个项目逻辑。
我知道什么是接口,抽象类,密封类和其他概念,并且头脑中非常清晰。但是问题是我应该在何时何地大量实施OOP。
我是否需要研究实时应用程序及其案例研究,如果需要,请向我推荐一些站点或书籍/电子书,从中我可以阅读它们并能够实现它们。
目前,我在编程时感到自己不完整。我有效地实现了数据库及其大部分组件,但是在尝试使用OOP时却是一个小孩。
我读过许多例子,试图使人们理解OOP之类的形状,例如汽车。所有这些。
他们乐于清除概念,但不足以在某些现场项目中实施
最佳答案
学习应用OOP的第一步是将常见的功能和数据收集到类中。起初您不会做得很好,但是您会变得更好。关于回归基础的recent article in Code Magazine很好地表达了这一点。
开始尝试制作(将成为类的)真实对象,这些对象代表解决方案中的真实事物。 (为此有一个fancy name,但这也是非常基本的。)这并不是使实用工具类具有方便的,与主题相关的功能。尝试安排事物,以便在对象上维护的数据在调用该对象上的方法时为您节省参数。将将存在的对象视为社区中的真实个体事物。拟人化他们。安排事情,以便您在使用类功能时不必担心它们中发生了什么。
首先,我不会担心所有这些设计模式。最好先实践您所学的基本OOP概念。专注于这些模式使许多人没有真正考虑OOP的原理,而是试图将他们的情况限制在预先包装的计划中。阅读有关娱乐和创意的“设计模式”。稍后,您将要真正研究它们并尝试专门实现其中的一些。
简而言之,您必须加入并开始应用所学的知识。在做出好的设计之前,您需要先进行一些糟糕的设计,因此不必担心。
编辑以回应发问者的评论:
我认为下一步可能是专注于您的班级之间的关系。例如,一旦您在逻辑中使用了Customer对象,就应该花费很多精力来获取相关的Order对象。创建一个属性oCustomer.Orders
,该属性返回List<Order>
。 (这是一个c#示例。)在此属性中,获取所有客户订单,将其放入列表对象,将其维护在私有变量中,以防再次调用该属性,然后返回该列表对象。如果您已经这样做,请寻找下一个最难的新尝试。也许您需要经常查找客户首次下订单的日期。然后,创建一个继承自Collection<order>
的Orders类以替换基本的List<order>
,并添加属性FirstOrder。然后可以执行var FirstOrderDate = oCustomer.Orders.FirstOrder.OrderDate
。
继续尝试做下一件最困难的事情。继承并添加成员。用子类作为基类。覆盖基类成员。使用自定义集合并从中获得好处。
从您正在使用的对象模型中学习。当您看到直观且易于使用的内容时,请这样做!在我职业生涯的早期,我不得不广泛使用MS-word对象模型,该模型既直观又容易。当我创建自己的库时,我试图复制这种感觉。结果很好。
最终学习patterns。尽管我建议您不要被它们吸引住,但它们是您提供意见的重要来源,最重要的是可以尝试。 (知道通用“模式”的名称对于通信也很有用。)例如,当您看到plug-in model时,接口的概念确实很有意义。
关于.net - 尽管我了解大多数OOP概念,但是我无法清楚地了解实现OOP概念的方法。为什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1959295/