Questions tagged «oop»

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


24
返回无效的不良设计吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我听到一些声音说,从方法中检查返回的空值是错误的设计。我想听到一些原因。 伪代码: variable x = object.method() if (x is null) do something
127 oop  null  return-value 

30
OOP的意义是什么?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它当前不接受新的答案或互动。 据我所知,尽管在OOP教育,语言和工具上花费了数百万或数十亿美元,但OOP并没有提高开发人员的生产力或软件可靠性,也没有降低开发成本。很少有人严格地使用OOP(很少有人坚持或理解LSP等原则);人们对问题域进行建模的方法似乎几乎没有统一性或一致性。通常,该类仅用于其语法糖。它将记录类型的函数放入自己的小命名空间中。 我已经为各种应用程序编写了大量代码。尽管在某些情况下,真正的可替代子类型在应用程序中发挥了重要作用,但这些情况非常例外。通常,尽管提供了大量的口头禅来谈论“重用”,但现实是,除非一段代码能够完全按照您的意愿进行,否则几乎没有成本效益的“重用”。设计类以正确的方式进行扩展非常困难,因此扩展的成本通常很高,以至于“重用”根本就不值得。 在许多方面,这并不令我感到惊讶。现实世界不是“ OO”,OO中隐含的想法(我们可以用某种分类法对事物建模)在我看来从根本上来说是有缺陷的(我可以坐在桌子,树桩,汽车引擎盖上) ,某人的膝盖-但其中之一不是-椅子)。即使我们转向更抽象的领域,OO建模也常常是困难,违反直觉的,并最终无益(考虑圆形/椭圆形或正方形/矩形的经典示例)。 那我在这里想念什么?OOP的价值在哪里?为什么所有的时间和金钱都无法使软件变得更好?


9
PHP抽象属性
有没有办法在PHP中定义抽象类属性? abstract class Foo_Abstract { abstract public $tablename; } class Foo extends Foo_Abstract { //Foo must 'implement' $property public $tablename = 'users'; }
126 php  oop  abstract-class 

4
如何初始化基类(超级)?
在Python中,请考虑以下代码: >>> class SuperClass(object): def __init__(self, x): self.x = x >>> class SubClass(SuperClass): def __init__(self, y): self.y = y # how do I initialize the SuperClass __init__ here? 如何SuperClass __init__在子类中初始化?我正在关注Python教程,但并未涵盖该内容。当我在Google上搜索时,发现了不止一种方法。处理此问题的标准方法是什么?
125 python  oop 


6
R中的“ S3方法”是什么意思?
由于我对R相当陌生,所以我不知道S3方法和对象是什么。我发现有S3和S4对象系统,有些建议尽可能使用S3而不是S4(请参阅http://google-styleguide.googlecode.com/svn/trunk/google-r-style上的 Google R样式指南。 html)*。但是,我不知道S3方法/对象的确切定义。 更新:从2019年开始,Google的R样式指南超链接现在位于此处。
124 r  oop  r-faq  r-s3  r-s4 



8
为什么PHP 5.2+不允许抽象静态类方法?
在PHP 5.2中启用严格警告之后,我看到了一个项目中的大量严格标准警告,这些项目最初编写时没有严格警告: 严格标准:静态函数 Program :: getSelectSQL()在Program.class.inc中不应抽象 有问题的函数属于抽象父类Program,并且被声明为抽象静态,因为它应在其子类(例如TVProgram)中实现。 我确实在这里找到了对此更改的引用: 删除了抽象静态类函数。由于疏忽大意,PHP 5.0.x和5.1.x允许在类中使用抽象静态函数。从PHP 5.2.x开始,只有接口可以拥有它们。 我的问题是:有人可以清楚地解释为什么PHP中不应该有一个抽象的静态函数吗?
121 php  oop  static  abstract 



4
遵循存储库模式管理Laravel中的关系
在阅读了T. Otwell关于Laravel良好设计模式的书后,在Laravel 4中创建了一个应用程序时,我发现自己为应用程序中的每个表创建了存储库。 我最终得到以下表结构: 学生:身份证,姓名 课程:id,名称,teacher_id 老师:身份证,姓名 作业:id,名称,course_id 分数(充当学生和作业之间的枢纽):student_id,assignment_id,分数 我具有所有这些表的查找,创建,更新和删除方法的存储库类。每个存储库都有一个与数据库交互的Eloquent模型。关系根据Laravel的文档在模型中定义:http ://laravel.com/docs/eloquent#relationships 。 创建新课程时,我要做的就是在课程库上调用create方法。该课程有作业,因此在创建作业时,我还想在分数表中为该课程中的每个学生创建一个条目。我是通过分配库来完成的。这意味着作业库与两个Eloquent模型(作业和学生模型)进行通信。 我的问题是:由于此应用程序的大小可能会增加,并且会引入更多的关系,因此是与存储库中不同的Eloquent模型进行通信的好习惯还是应该使用其他存储库来代替(我的意思是从Assignment存储库调用其他存储库)还是应该在Eloquent模型中一起完成? 另外,将分数表用作作业和学生之间的枢纽是一种好习惯,还是应该在其他地方完成?

6
PHP中类方法的默认可见性
我看了看手册,但似乎找不到答案。 没有可见性声明的方法在PHP中的默认可见性是什么?PHP是否像Java一样具有包可见性? 例如,在以下代码中,是go()公共的还是私有的? class test { function go() { } } 我问的原因是,我已经看到许多构造函数代码分别以function __construct()和编写public function __construct()。它们相等吗?
118 php  oop  visibility 

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.