Oop OOD的第一步?

Oop OOD的第一步?,oop,Oop,OOD的第一步是什么?练习,广泛阅读,多练习 特别是与其他人一起审查和评论方法 阅读不仅应该包括OOD,还应该包括其他人如何处理常见问题的模式。没有步骤,这不是一个过程。答案是 (来源:) 有一些初步步骤: 理解OOD(一般) 了解问题/应用领域(功能规范) 具有高级/体系结构设计:了解您可以使用的O/S、库、框架等 然后我混合使用自顶向下和自下而上的开发: 自上而下:决定我想要什么组件和什么API(对象接口)来实现应用程序(然后,开发这些API) 自下而上:通过添加新方法和新对象类型

OOD的第一步是什么?

练习,广泛阅读,多练习

特别是与其他人一起审查和评论方法


阅读不仅应该包括OOD,还应该包括其他人如何处理常见问题的模式。

没有步骤,这不是一个过程。

答案是


(来源:)


有一些初步步骤:

  • 理解OOD(一般)
  • 了解问题/应用领域(功能规范)
  • 具有高级/体系结构设计:了解您可以使用的O/S、库、框架等
然后我混合使用自顶向下和自下而上的开发:

  • 自上而下:决定我想要什么组件和什么API(对象接口)来实现应用程序(然后,开发这些API)

  • 自下而上:通过添加新方法和新对象类型(有时将一个大对象拆分为几个小对象),决定如何向现有API(对象接口)添加新功能


    • 这需要大量的实践。第一件事是让你的头脑了解对象的工作方式——特别是如果你是一个过程程序员的话

      练习制作许多小物体——我从来没有见过一个物体太多的系统;这是可能的,但我从未见过。当需要将多个对象放在一个对象中时,它应该非常明显,但当一个对象被分解时,它就不那么明显了

      要求一个对象做某事,不要要求它的数据。尽量避免使用getter和setter,并将注意力集中在您要求它处理数据的方法上。如果您曾经看到类似o.a=o.b+o.c或o.setA(o.getB()+o.getC())的代码,那么您就错了

      不断尝试重构重复。反复重写代码,直到没有(或尽可能少地)重复。这可能比任何其他实践对您的OO设计技能都有更大的帮助。随着您的知识越来越丰富,请尝试重构您以前认为无法重构的东西。任何看起来像模式的东西都可能被重构。例如,下面是一个非常基本的示例—如果您有这样的代码行:

      a = b + c * d;
      g = h + i * d;
      
      很可能你的代码中缺少了大量的重构,尽管它看起来并不是一蹴而就的。你可能缺少了一个可以容纳a、b、c的对象,而第二个实例可以容纳g、h、i,在创建这些对象之后,一堆东西会融入到你的新对象中。学习识别像这样的新机会是cri愚蠢的


      现在我已经编程20多年了,其中一半以上都是面向对象的,似乎每隔几年我想我都知道了——一年后,我回过头来,意识到我是多么无知。

      面向对象的第一步是面向对象的原则。看看。

      第一步是面向对象的分析——其目的是识别对象构成系统的ECT及其交互方式;根据这些知识,您可以指定对象的行为(接口方法),然后指定内部(对象所需的数据成员是什么)

      设计过程产生了许多图表-这些是用来帮助计算系统细节的工具:

      首先是一组“用例”-用例是对系统实现的场景的口头描述(应该选择最重要的);然后,这些图被用来识别应该映射到系统类的主要参与者和概念。然后,通过制定“对象交互图”、“类图”和“序列图”来完善这种理解。有时,状态图被用于可视化状态机——这些图是获得更好的unde的工具考虑到系统,因此您对系统有足够的了解,可以编写类头文件/类定义。没有固定的规则,这些图表中的哪一个先出现,它们会被适当地使用

      我发现下面这本书非常有用:

      Grady Booch的《应用程序面向对象分析与设计》(第二版)


      这本书一步一步地介绍了几个示例系统的设计过程(我认为阅读这些示例系统的设计过程就足够了);一个小问题是,本书中使用的符号有点过时:现代实践是在图表中使用UML符号,但本书仍然使用较旧的Booch符号。本书的优点是,它总是通过具体示例来解释每个概念。

      更具体一点?问题是什么艾恩?你已经知道什么了?