Questions tagged «oop»

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


4
为什么PHP Trait无法实现接口?
我想知道为什么PHP Trait(PHP 5.4)无法实现接口。 从user1460043的答案更新=> ...不能要求使用它来实现特定接口的类 我明白,这可能是显而易见的,因为人们可能会觉得,如果Class A是使用Trait T其正在实施的interface I,比Class A应执行interface Iundirectly(这是不正确的,因为Class A可以重命名特征的方法)。 就我而言,我的特质是从使用特质的类实现的接口调用方法。 特质实际上是接口某些方法的实现。因此,我想在代码中“设计”每个想要使用我的特征的类都必须实现接口。这将允许Trait使用接口定义的类方法,并确保它们存在于类中。
82 php  oop  interface  traits 

15
对象和实例之间的区别
我知道以前曾提出 过这样的问题,但是我仍然觉得答案太模糊了,我(而且,从某种意义上说,是某些/大多数初学者)很难理解。 我一直在尝试自学比程序和基本OOP更广泛的编程概念。我了解OOP的具体概念(您创建一个具有数据(成员)和函数(方法)的类,然后在运行时实例化该类以实际执行此类操作。 我认为我对类的含义有所了解(某种实例的设计蓝图,该实例在编译时以其相似性创建)。但是如果是这样,什么是物体?我也知道,在基于原型的语言中,这甚至可以使事情变得更糟,但这也许就是为什么在我的脑海中需要对对象和实例进行清楚的区分。 除此之外,我还与“对象”和“实例”的概念作斗争。我阅读的许多资源(包括SO的答案)都说它们基本相同,而语义上却有所不同。别人说这两者之间存在真正的概念差异。 SO的专家可以帮助初学者在OOP领域中迈出“啊哈”的时刻吗? 注意:这不是家庭作业,我不上学-但是,我认为这会对寻求家庭作业帮助的人有所帮助。
82 oop 

27
如何练习更好的面向对象编程?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我从事面向对象语言的编程已经有很多年了,但是我秘密地看着同事们羡慕的一些事情。他们中的许多人似乎都有一些我没有的内在的OO本能-无论我多么努力。我已经阅读了所有有关OO的好书,但似乎仍然无法破解。我觉得这个家伙付出了110%的职业足球运动员的心,但是却没有天赋。我很茫然,想换职业-我该怎么办?
82 oop 

7
类声明括号后的分号
在C ++类中,为什么在右花括号后加分号?我经常忘记它并得到编译器错误,从而浪费时间。在我看来似乎有点多余,事实并非如此。人们是否真的在做以下事情: class MyClass { . . . } MyInstance; 从结构和枚举的C兼容性角度来看,但是由于类不是C语言的一部分,我想它主要是在类似声明结构之间保持一致性。 我一直在寻找的是与设计原理相关的东西,而不是能够更改任何东西,尽管良好的代码完成IDE可能会在编译之前就将其捕获。
82 c++  class  oop  declaration 

5
从常规方法调用协议默认实现
我想知道是否有可能实现这样的目标。 我有一个这样的游乐场: protocol Foo { func testPrint() } extension Foo { func testPrint() { print("Protocol extension call") } } struct Bar: Foo { func testPrint() { // Calling self or super go call default implementation self.testPrint() print("Call from struct") } } let sth = Bar() sth.testPrint() 我可以在中提供默认实现,extension但是如果Bar需要默认实现中的所有内容以及其他内容,该怎么办? 它在某种程度上类似于es中的调用super.方法,class可以满足实现每个属性等的要求structs。
82 swift  oop  protocols  swift2 



8
用于学习或提高面向对象编程(OOP)技能的良好挑战/任务/练习
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 6年前关闭。 改善这个问题 提高您的面向对象编程技能的挑战是什么? 这次民意调查的目的是提供一个想法,以了解哪些练习对学习OOP有用。 挑战应该是尽可能与语言无关,要求很少或不需要使用特定的库,或者只需要最常用的库。尝试在每个答案中仅包含一个挑战,这样一来投票就仅代表该挑战的优点。如果指出了所需的技能水平,以及为什么这样做是有用的练习,这也将是很好的。 然后,可以将挑战的解决方案发布为“如何……”问题的答案,并从此处链接到。 例如: 挑战-实现后进先出堆栈 技能水平-初学者 基本原理-提供有关如何引用对象的经验
81 oop 

6
面向对象编程的替代方法?
OOP可能是当今软件设计中最常用的编程范例。我的问题是–还有哪些其他范式可以与之竞争并且可以代替OOP?为了澄清这个问题,我不是在问其他范式。有很多,但我想知道是哪一个… 已经在实践中使用,不仅在理论上。 可以与OOP竞争,因此可以在最小的痛苦下用于大型项目。 可用于开发具有业务逻辑,数据库等的桌面应用程序。 不能与OOP一起使用,而是作为OOP的替代。 并且,如果有的话,它的优缺点是什么,为什么它比OOP更好/更糟糕,哪种语言是最好的使用方式,如何在流行的语言中使用它,具有任何设计模式,是否可以完全取代OOP?

3
R和面向对象的编程
在R中,以一种或另一种方式进行面向对象的编程非常有可能。但是,与例如Python不同,有许多方法可以实现面向对象: 该R.oo包 S3和S4类 参考班 在原包 我的问题是: 有哪些主要区别区分R中的OO编程这些方式? 理想情况下,此处的答案将为试图确定哪种OO编程方法最适合其需求的R程序员提供参考。 因此,我要求提供详细信息,以经验为基础,以客观的方式提出,并以事实和参考为后盾。阐明这些方法如何映射到标准OO做法的要点。
80 oop  r 


3
ES6-在类中调用静态方法
我有一个此类,它对静态方法进行内部调用: export class GeneralHelper extends BaseHelper{ static is(env){ return config.get('env:name') === env; } static isProd(){ return GeneralHelper.is('prod'); } } 我是否可以使用任何关键字替换以下行中的类名称: GeneralHelper.is('prod'); 在PHP中也有self,static等不ES6提供类似于这些东西吗? TY。

11
禁止在__init__之外创建新属性
我希望能够创建一个用Python初始化的类(在Python中),该类__init__不接受新属性,但接受对现有属性的修改。我可以通过几种方法来做到这一点,例如,使用__setattr__诸如 def __setattr__(self, attribute, value): if not attribute in self.__dict__: print "Cannot set %s" % attribute else: self.__dict__[attribute] = value 然后__dict__直接在内部进行编辑__init__,但是我想知道是否存在“正确”的方法?

4
R:什么是老虎机?
有人知道R中的插槽吗? 我没有找到其含义的解释。我得到一个递归定义:“插槽函数返回或设置有关对象各个插槽的信息” 帮助将不胜感激,谢谢-胡同
79 oop  r  s4  slot  r-faq 

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.