Questions tagged «oop»

面向对象的编程是一种使用“对象”的编程范式:由数据字段和方法及其相互作用组成的数据结构。

19
我为什么要使用接口?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我了解它们会迫使您实现方法等,但我无法理解的是为什么要使用它们。谁能给我一个很好的例子或解释我为什么要实现这一点。
74 oop  interface 

8
类与函数[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 1年前关闭。 改善这个问题 即使对于没有任何编程经验但具有一定数学背景的人,函数也易于理解。另一方面,类似乎更难掌握。 假设我要创建一个类/函数,计算给定生日和当前年份的人的年龄。我应该为此创建类还是函数?还是选择取决于方案? PS我正在使用Python,但是我想这个问题很普遍。
73 class  function  oop 


18
从一个具体的类继承的好例子吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 改善这个问题 背景: 作为Java程序员,我广泛地从接口继承(而不是:实现),有时我设计抽象基类。但是,我从来没有真正感到有必要将具体的(非抽象的)类作为子类(在我这样做的情况下,后来证明了另一种解决方案,例如委托会更好)。 因此,现在我开始感到几乎没有任何情况可以从具体类进行继承。一方面,对于非平凡的类,李斯科夫替换原理(LSP)似乎几乎是无法满足的。还有许多其他问题,这里似乎呼应了类似的意见。 所以我的问题是: 在哪种情况下(如果有)从具体类继承实际上有意义吗?您能否举一个从另一个具体类继承来的类的实际实例,在这种情况下,您认为这是受限制的最佳设计?我对满足LSP的示例(或满足LSP似乎不重要的示例)特别感兴趣。 我主要有Java背景,但是我对任何语言的示例都感兴趣。

16
了解封装和抽象的简单方法
学习特别感兴趣的OOP概念,以深入了解抽象和封装。 已经检查了以下内容 抽象VS信息隐藏VS封装 和封装之间的区别? 我发现很难用一个真实而简单的示例类/代码片段来理解这些概念。 我的一位同事说,抽象只不过是创建抽象类和使用范围保护其成员变量的普通类,称为封装。 有没有一种简单的方法可以使我理解并帮助他人了解他们的确切身份,而不是重复以下内容? 抽象和封装是互补的概念:抽象集中于对象的可观察行为...封装着重于引起这种行为的实现...封装通常是通过信息隐藏来实现的,信息隐藏是隐藏所有对象的过程。对物体的本质没有帮助的秘密。

3
如果“实用程序”类是邪恶的,我应将通用代码放在哪里?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过事实和引用回答编辑此帖子。 2年前关闭。 改善这个问题 我通常遵循的规则是,全局变量/函数是邪恶的,并且每段代码都应该存在于它所属的类中。 这是一个非常容易遵循的规则,我相信到目前为止,我从未遇到过与此规则相关的问题。 但是,今天,我需要将一个函数添加到我的程序集中,而不是添加到特定的类。也就是说,几乎所有的类都可以用于此特定功能。 我应该在哪里放置此函数(+1重载)? 如果将其放在“实用程序”类中,我会感到很脏。如果我把它放在半相关的类上,而让其他类直接调用它,我会感到更糟。 这段特定的代码基本上IList<PointF>将a砍成一个规范化的列表。我现在觉得将其作为扩展方法添加IList<PointF>可能是最好的选择...

8
什么时候在php中使用静态变量/函数?
我正在使用PHP进行OOP更新,我看到了一个将函数和/或变量设置为静态的示例。什么时候以及为什么要将变量/函数设置为静态?我已经做过其他语言,并且真的不记得使用静态,也从未真正找到过使用它的目的。我知道它的作用,但为什么不使用变量呢?
72 php  oop  static 

7
什么时候在R编程中使用S4方法值得
我经常在专业环境下用R编程,也为客户或同事编写程序包。这里的一些程序员具有Java背景,并坚持使用S4方法以面向对象的方式进行所有操作。另一方面,我的经验是,在尝试使代码执行您想要执行的操作时,S4实现通常会执行得更糟,并且导致更多的麻烦。 我绝对同意,在某些情况下,您必须能够以受控的方式构造复杂的对象或追加现有对象。但是在大多数情况下,也可以使用经典列表轻松完成S4实现,而无需像定义standardGeneric,方法,构造函数,初始化程序之类的麻烦。 您何时考虑为R编写S4实现? 编辑:为清楚起见,我确实很欣赏R中有关OO的答案和讨论。OOP可以在R中以多种方式完成,但我的问题确实是针对使用S4方法的附加价值。
72 oop  r  methods  s4 



9
多态性的好处[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 当我开始寻找多态性的好处时,我在这里发现了这个问题。但是在这里我找不到答案。让我告诉我想找到什么。这里有一些课程: class CoolingMachines{ public void startMachine(){ //No implementationion } public void stopMachine(){ //No implementationion } } class Refrigerator extends CoolingMachines{ public void startMachine(){ System.out.println("Refrigerator Starts"); } public void stopMachine(){ System.out.println("Refrigerator Stop"); } public void trip(){ System.out.println("Refrigerator Trip"); } } class AirConditioner extends CoolingMachines{ public void startMachine(){ System.out.println("AC Starts"); …

11
为什么循环引用被认为有害?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 2年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 为什么一个对象引用另一个引用第一个对象的对象设计不好?
71 .net  oop 


6
如何组织游戏代码以适合MVC模式?
我是大学一年级的学生,攻读计算机科学学位。最近几年,我编写了很多程序,但是最近,我对结构代码,设计模式,语言差异等方面的理论有了更多的了解。 我有一个Java类,所以我放弃了C ++的研究/开发,而转到了Java和JOGL(Java OpenGL)。太好了!但这不是重点。 我想制作一个小型的角色扮演游戏,但是这个问题确实适用于任何类型的游戏。您如何以结构化的方式组织游戏对象,例如Model-View-Controller模式?它看起来是一种了不起的模式,已经被广泛使用并且很有道理,但是我在弄清楚如何实现它方面遇到了麻烦。 例如,我需要跟踪GL对象以绘制到屏幕上。我必须具有实现MouseListener,MouseMotionListener,MouseWheelListener和KeyListener的类(或一个类,多合一输入管理器)。而且我必须将游戏数据放在所有这些不同类都可以访问和修改的地方。如果有人按下键盘上的按钮,则输入管理类需要以某种方式执行键所映射的操作;当需要绘制框架时,图形类需要找到一种方法来遍历所有不同的“事物”并全部绘制。 而我最大的问题是GUI;它在哪里联系在一起?这有点像输入,但不完全相同,它需要从实际的游戏模拟中设置和获取数据。而且,如果我决定尝试添加网络,则更加复杂的是(类似于GUI) )还需要访问大量数据以进行修改和读取... 哦,我都很困惑。我不知道如何将所有这些以面向对象的方式一起工作……编写清楚适合模式的东西很容易,但是当您发生大量事情时,所有事情都绑在一个游戏循环上,互相修改以及游戏数据等等,……我什至不知道。也许我只是在做比实际更大的交易。 其他人有这种感觉吗?请澄清一下我的处境,这样我就可以花更少的时间去担心和不知道从哪里开始! 编辑:找到了一个不错的图表,可能会帮助我解决所有问题...来源:(请注意,PS文件!)http://www.tucs.fi/publications/attachment.php?fname=TR553.ps.gz Edit2:我也喜欢这个人对他如何计划他的MVC游戏的解释:http : //interactivesection.wordpress.com/2007/11/19/dum-de-dum-drum-my-first-mvc-game-development/ Edit3:另一篇很棒的文章! http://dewitters.koonsolo.com/gamemvc.html

2
PHP类实例化。使用还是不使用括号?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我一直认为-在没有构造函数参数的情况下-创建类实例时,括号(花括号)紧跟类名,是可选的,并且您可以根据自己的想法随意添加或排除它们。 这两个陈述是相等的: $foo = new bar; $foo = new bar(); 我对吗?还是我不知道的方括号有什么意义? 我知道这听起来像是一个RTM问题,但是我已经搜索了一段时间(包括整个PHP OOP部分),但似乎找不到一个直接的答案。
71 php  oop  class  instantiation 

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.