我有兴趣提高我的设计能力(设计具有属性,方法等的类)。 即如何确定类,方法和属性应该是什么?
你们可以建议我改进这方面的好材料吗?
答案 0 :(得分:3)
请参阅:
Any source of good object-oriented design practises?
Best Resources to learn OO Design and Analysis
中有很多人....
答案 1 :(得分:2)
封装:将数据和功能整合到一个单元中称为封装。或者,简单地说:将数据和方法放在一个单元中可能是一个类。
继承:从父类获取属性到子类。或者:从超类到子类获取属性称为继承。
多态性:能够使用多个表单,它支持方法重载和方法重写。
方法重载:当具有相同方法名称且具有不同参数(diff参数或签名)的类中的方法被称为方法重载时。这是编译时多态 - 使用一个标识符来引用同一范围内的多个项目。
答案 2 :(得分:1)
这可能是每个程序员有一天都会想到的问题。 设计能力逐渐伴随您的体验。我想说的是在一般情况下,如果你可以为给定的问题可视化数据库对象,其余的是一个小步(如果你在一个没有数据库的技术项目上工作,有时候是真的)
您可以开始考虑在现实世界中进行交互的对象以完成该过程,然后将它们映射到具有适当属性的类,然后将其映射到用于定义其行为的方法。十,你可以专注于有助于运行工作流程的类,而不是任何单独的现实世界对象。
如果我们在直接跳转到代码设计之前专注于设计数据库,那么这会得到很多简化。
很大程度上取决于你选择的模式 - 如果你从MVC的角度看问题,你自然会被吸引到首先识别“控制器”classe等等。
我想我不需要重复设计和OOPS智慧的黄金来源 - 他们已经在这里或那里发布过。
答案 3 :(得分:1)
我建议你阅读一些UML和设计模式。这会让你以“绘画”的方式思考。你也可以更容易地掌握大班/对象。
这方面的一本特别好的书。 Applying UML and Patterns
答案 4 :(得分:0)
查看Domain-Driven Design,它定义实体,价值对象,工厂,服务和存储库以及GRASP patterns(一般责任分配软件模式),例如:专家,创作者,控制者。
答案 5 :(得分:0)
看看第1部分screencast,第一部分不是silverlight,而只是一个命令行计算器,它以一段代码开头,然后分解成类。