Questions tagged «class-design»

用面向对象的语言引用类单元的结构定义。

18
为什么总是在__new __()之后调用__init __()?
我只是想简化我的一个类,并以与flyweight设计模式相同的样式介绍了一些功能。 但是,对于为什么__init__总是被称为after ,我有点困惑__new__。我没想到这一点。谁能告诉我为什么会这样,否则我如何实现此功能?(除了将实现放到__new__hacky中之外)。 这是一个例子: class A(object): _dict = dict() def __new__(cls): if 'key' in A._dict: print "EXISTS" return A._dict['key'] else: print "NEW" return super(A, cls).__new__(cls) def __init__(self): print "INIT" A._dict['key'] = self print "" a1 = A() a2 = A() a3 = A() 输出: NEW INIT EXISTS INIT EXISTS INIT …

23
您如何设计面向对象的项目?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 3年前关闭。 改善这个问题 我正在为一个大型项目工作(对我来说),该项目将有许多类并且需要可扩展,但是我不确定如何计划程序以及类之间如何交互。 几个学期后,我参加了OOD课程,并从中学到了很多东西。例如编写UML,以及将需求文档转换为对象和类。我们也学习了顺序图,但是以某种方式我错过了讲座或其他内容,但它们并没有真正与我保持联系。 在以前的项目中,我尝试使用从本课程中学到的方法,但是通常最终得到的代码是,只要我能说“是的,看起来像我的想法”,我就不希望深入研究添加新功能。 我得到了史蒂夫·麦康奈尔(Steve McConnell)的《代码完成》的副本,在这里和其他地方,我一直听到我很惊讶。我阅读了有关设计的章节,但似乎没有得到我所寻找的信息。我知道他说这不是一成不变的过程,它主要是基于启发法,但是我似乎无法吸收他的所有信息并将其应用于我的项目。 那么,在高级设计阶段(开始编程之前)要做什么,以确定需要哪些类(尤其是那些不基于任何“现实世界对象”的类),以及它们将如何相互影响? 我特别对您使用的方法感兴趣?您遵循的过程通常会形成一个良好,干净的设计来紧密代表最终产品的流程是什么?

24
我如何知道何时创建界面?
在开发学习中,我觉得必须学习更多有关接口的知识。 我经常阅读有关它们的信息,但似乎我无法掌握它们。 我已经阅读了以下示例:Animal基类,带有IAnimal接口,用于处理“ Walk”,“ Run”,“ GetLegs”等内容-但我从未从事过某些工作,并且感觉像“嘿,我应该使用接口这里!” 我想念什么?为什么我很难理解这个概念!我可能从未意识到具体的需求,这一事实使我感到震惊-主要是由于缺乏理解它们的方面!这让我觉得自己在成为一名开发人员方面缺少了什么!如果有人有这样的经历并取得了突破,我将不胜感激如何理解这一概念的一些技巧。谢谢。


6
如何在Python中设计类?
我在以前的问题中为检测爪子中的爪子和脚趾提供了非常出色的帮助,但是所有这些解决方案一次只能进行一次测量。 现在,我得到的数据包括: 大约30条狗; 每个都有24个测量值(分为几个子组); 每次测量至少有4个接触点(每只爪子一个),并且 每个联系人分为5部分, 具有几个参数,例如接触时间,位置,总力等。 显然,将所有内容粘贴到一个大对象中并不会减少它,因此我认为我需要使用类而不是当前的许多函数。但是,即使我已经阅读了学习Python的有关类的章节,也无法将其应用于我自己的代码(GitHub链接) 我也觉得每次我想获取一些信息时处理所有数据都是很奇怪的。一旦知道了每个爪子的位置,就没有理由再进行计算了。此外,我想比较同一只狗的所有爪子,以确定哪个接触属于哪个爪子(前/后,左/右)。如果我继续只使用函数,那将变得一团糟。 因此,现在我正在寻找有关如何创建类的建议,这些类将使我能够以明智的方式处理我的数据(链接到一只狗的压缩数据)。
143 python  oop  class-design 

30
UML实用吗?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 在大学里,我参加过许多设计和面向UML的课程,并且我认识到UML可以使软件项目受益,尤其是用例映射,但这真的很实用吗?我已经完成了一些合作工作条款,并且看来UML在行业中并未得到广泛使用。在项目期间创建UML图值得吗?另外,我发现类图通常没有用,因为查看类的头文件只是更快。具体来说,哪些图表最有用? 编辑:我的经验仅限于10个以下的小型开发人员项目。 编辑:许多好的答案,虽然不是最冗长的,但我相信选择的一个是最平衡的。

10
最佳做法:在类定义中对公共/受保护/私有的排序?
我正在从头开始一个新项目,希望它是干净的/具有良好的编码标准。这里经验丰富的开发人员喜欢按什么顺序将内容布置在一个类中? A:1)公共方法2)私有方法3)公共变量4)私有变量 B:1)公共变量2)私有变量3)公共方法4)私有方法 C:1)公共变量2)公共方法3)私有方法4)私有变量 我通常喜欢将公共静态变量放在顶部,但是然后将公共静态方法列在构造函数之前,还是应该始终将构造函数列在最前面?诸如此类的事情... 我知道这很严格,但我只是想知道:什么是最佳做法? PS:不,我不使用Cc#。我知道。我很傻


10
如何在C#中为类名加上别名,而不必在使用该类的每个文件中添加一行代码?
我想为类名创建一个别名。以下语法将是完美的: public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName { ... } public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName; 但不会编译。 例 注意提供此示例仅是为了方便。不要通过建议更改整个系统的设计来尝试解决此特定问题。此示例的存在与否不会更改原始问题。 现有的一些代码取决于静态类的存在: public static class ColorScheme { ... } 此配色方案是Outlook 2003配色方案。我想引入一个Outlook 2007配色方案,同时保留Outlook 2003配色方案: public static class Outlook2003ColorScheme { ... } public static class Outlook2007ColorScheme { ... } 但是我仍然面对这样一个事实,即代码取决于是否存在称为的静态类ColorScheme。我的第一个想法是创建一个ColorScheme将从Outlook2003或继承的类Outlook2007: public static class ColorScheme : Outlook2007ColorScheme { } …
87 c#  class-design 

29
您如何在大海捞针中找到针?
当以面向对象的方式实现大海捞针的搜索时,您实际上有三种选择: 1. needle.find(haystack) 2. haystack.find(needle) 3. searcher.find(needle, haystack) 你更喜欢哪个?为什么? 我知道有些人喜欢第二种选择,因为它避免引入第三个对象。但是,至少在您的目标是为“真实世界”建模的过程中,我不禁会觉得第三种方法在概念上更“正确”。 您认为在什么情况下引入助手对象是合理的,例如本例中的搜索器,何时应避免使用它们?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.