Questions tagged «oop»

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

9
为什么Python代码使用len()函数而不是length方法?
我知道python具有len()用于确定字符串大小的函数,但是我想知道为什么它不是字符串对象的方法。 更新资料 好吧,我意识到我很尴尬地犯了错误。__len__()实际上是字符串对象的方法。在字符串对象上使用len函数在Python中看到面向对象的代码似乎很奇怪。此外,看到__len__名字而不是len 也很奇怪。

4
补水是什么意思?
当有人谈论给对象补水时,这是什么意思? 我在网上看到一个名为Hydrate的Java项目,该项目可以在不同表示形式(RDMS到OOPS到XML)之间转换数据。这是物体水化的一般含义吗?在表示之间转换数据?这是否意味着要从存储的表示形式重建对象层次结构?
204 java  oop 

15
吸气和塞特?
我不是PHP开发人员,所以我想知道在PHP中使用纯私有对象(我喜欢的方式)以纯OOP风格使用显式getter / setters是否更受欢迎: class MyClass { private $firstField; private $secondField; public function getFirstField() { return $this->firstField; } public function setFirstField($x) { $this->firstField = $x; } public function getSecondField() { return $this->secondField; } public function setSecondField($x) { $this->secondField = $x; } } 或只是公共领域: class MyClass { public $firstField; public $secondField; } …
203 php  oop  coding-style 



7
面向方面的编程与面向对象的编程
像这里和全世界的大多数开发人员一样,多年来,我一直在使用面向对象编程(OOP)技术开发软件系统。因此,当我读到面向方面的编程(AOP)解决了传统OOP无法完全或直接解决的许多问题时,我停下来想一想,这是真的吗? 我已经阅读了很多信息,试图学习这种AOP范例的关键,并且我在同一地方,所以,我想更好地了解它在现实应用程序开发中的好处。 有人有答案吗?
199 oop  aop  paradigms 

4
如何在Python中创建对象的副本?
我想创建一个对象的副本。我希望新对象拥有旧对象的所有属性(字段的值)。但是我想拥有独立的对象。因此,如果我更改新对象的字段的值,则旧对象不应受此影响。
199 python  oop  object  copy 

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

9
为什么需要在Python方法中显式包含“ self”参数?
在Python中的类上定义方法时,它看起来像这样: class MyClass(object): def __init__(self, x, y): self.x = x self.y = y 但是在某些其他语言(例如C#)中,您可以使用“ this”关键字来引用该方法所绑定的对象,而无需在方法原型中将其声明为参数。 这是Python中的一种故意的语言设计决策,还是有一些实现细节需要传递“ self”作为参数?
196 python  oop  methods  self 

20
在Java中像对象一样结构
是否完全违反Java创建类结构对象的方式? class SomeData1 { public int x; public int y; } 我可以看到一个带有访问器和增变器的类,它们更像Java。 class SomeData2 { int getX(); void setX(int x); int getY(); void setY(int y); private int x; private int y; } 第一个示例中的类在符号上很方便。 // a function in a class public int f(SomeData1 d) { return (3 * d.x) / d.y; …
195 java  oop  struct 

25
只要适用于Java,就使用“最终”修饰符[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 在Java中,有一种做法是声明每个变量(本地或类),如果它们确实是参数,则声明final。 尽管这使代码更加冗长,但是这有助于简化代码的读取/抓取,并且由于意图被明确标记,因此还可以防止错误。 您对此有何想法,您会怎么做?
194 java  oop 

13
非void方法中缺少的return语句会编译
我遇到非空方法缺少return语句且代码仍可编译的情况。我知道while循环之后的语句是不可达的(死代码)并且永远不会执行。但是,为什么编译器甚至不警告返回内容?还是为什么一种语言允许我们使用具有无限循环且不返回任何内容的非空方法? public int doNotReturnAnything() { while(true) { //do something } //no return statement } 如果我在while循环中添加break语句(甚至是条件语句),则编译器会抱怨臭名昭著的错误:Method does not return a value在Eclipse和Not all code paths return a valueVisual Studio中。 public int doNotReturnAnything() { while(true) { if(mustReturn) break; //do something } //no return statement } Java和C#都是如此。
189 java  c#  oop 

13
您不应该继承std :: vector
好的,这确实很难让人承认,但是目前我确实有很强的诱惑力可以继承std::vector。 我需要大约10种针对矢量的自定义算法,并且希望它们直接成为矢量的成员。但是我自然也希望拥有的其余std::vector界面。好吧,作为守法公民,我的第一个想法是std::vectorMyVector班级成员。但是然后我将不得不手动重新提供所有std :: vector的接口。输入太多。接下来,我考虑了私有继承,因此我将using std::vector::member在公共部分写一堆,而不是提供方法。其实这也很乏味。 在这里,我确实确实认为我可以简单地从公开继承std::vector,但是在文档中提供警告,该类不应被多态使用。我认为大多数开发人员都有足够的能力来理解,无论如何都不应多态地使用它。 我的决定绝对不合理吗?如果是这样,为什么?您能否提供一种替代方法,使其他成员实际成为成员,而不涉及重新键入vector接口的所有内容?我对此表示怀疑,但如果可以的话,我会很高兴。 此外,除了一些白痴可以写类似的事实 std::vector<int>* p = new MyVector 使用MyVector 还有其他现实的危险吗?通过说现实,我舍弃了像想象一个需要指向矢量指针的函数之类的事情。 好吧,我已经说了我的案子。我犯罪了。现在由你来原谅我:)
189 c++  oop  inheritance  stl  vector 


12
DDD-实体不能直接访问存储库的规则
在领域驱动设计,似乎有很多的协议,任何单位不应该访问存储库直接。 这是来自Eric Evans的“ 域驱动设计”书,还是来自其他地方? 背后的原因哪里有很好的解释? 编辑:澄清:我不是在谈论将数据访问从业务逻辑分离到单独层的经典OO做法-我是在谈论在DDD中实体不应该与数据交谈的特定安排根本没有访问层(即,它们不应保存对存储库对象的引用) 更新:我给了BacceSR赏金,因为他的回答似乎最接近,但是我对此仍然很不了解。如果它是如此重要的原理,那么肯定在某处在线有关于它的好文章吗? 更新:2013年3月,对该问题的投票暗示对此有很多兴趣,尽管有很多答案,但我仍然认为,如果人们对此有想法,还有更多的余地。

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.