2009-08-04 71 views
0

我想我可以提高自己,然后我可以设计一个类作为杰作。 但我不知道该怎么做,我应该遵循什么规则? 有什么建议吗?如何设计课堂?

在此先感谢!

+0

什么语言?Java ?, PHP?,ASP.Net ?, C#? – scunliffe 2009-08-04 02:56:50

+0

你想要构建什么样的类?简单地说,映射到数据库中的项目,具有行为或某种其他样式的项目,因为这也会影响选择什么可以使 – 2009-08-04 02:59:57

回答

1

特别是在OO(但它可以应用于编写任何函数),你想要的类。也就是说,你想角色扮演:

定义类的(或函数的)职责。一个好的功能只能做一件事,而且做得很好;一个好的课只负责一件事(它是内部状态,其中包括它与其他对象的关系):

好吧,我是Foo班。我这样做,这是我的责任。但我不要做那个,那个,还是那个。

定义状态它(它的内部成员变量):

OK,这就是我随身携带,这是我做的,这是所有这我知道。我做或做的所有事情都取决于我随身携带的东西以及传递给我的东西(通常小很多)。

定义其合作。很多时候,一个班级的大部分工作是通过拥有使用;通常一个班级可能会协调(订购,应用,调解)其合作者所做的工作。大多数GOF模式都是这样的。

好吧,这是我会通过的东西,这些其他的对象是我将用来做我的工作。

定义类本身扮演什么角色,从而洞察它实现的接口(它的公共接口)。 (其私有继承,在C++ D : private B或Java中extends,更是一个合作者,尽管在Java中被涂抹了一下):

OK,我是一个真正的富,公众客户,即使在内部,我可以重复使用巴兹做的很多事情。


角色扮演。 这个类,将你的视野限制在只能看到类的地方(它的成员,超类和参数传递给它的函数)。然后问自己:“当我被要求做什么时,我会做什么?我需要什么,我有什么,我需要什么其他课程来帮助我做到这一点?

0

唯一真正的方法是通过练习和练习(即编程)。及时你会觉得什么是对的,什么不对。由更有经验的开发人员进行的同行代码审查可以对此有很大帮助 对不知道任何好的快捷方式。

1

既然你没有提到这个类是什么,我应该告诫你,面向对象可能不是你的问题的适当方法。很可能最好的设计根本没有任何课程。

0

是的,你需要提供重要的更多细节,以便任何人正确回答。

忽略了关于这个主题写有整本书的事实,这里有一个快速不完整的列表。

一个精心设计的类应该:
- 有一个目的,而不仅仅是几个随机函数混搭
- 清理它使用的,不依赖于其他类做任何资源是
- 全单元测试
- 有适当的异常处理
- 有无的ToString和equals重载(这也许会是我虽然)
- 有描述函数的名称

我会让这个社会的维基,以便其他人可以添加,因为他们认为合适的。