Tag: oop

PHP的抽象属性

有没有什么办法可以在PHP中定义抽象类属性? abstract class Foo_Abstract { abstract public $tablename; } class Foo extends Foo_Abstract { //Foo must 'implement' $property public $tablename = 'users'; }

多inheritance的确切问题是什么?

我可以看到人们总是问是否应该在下一个版本的C#或Java中包含多重inheritance。 有幸拥有这种能力的C ++人士说,这就像给某人一根绳子最终挂上钩。 什么是多重inheritance的问题? 有没有具体的样品?

Go中的构造函数

我有一个结构,我希望它有一些合理的默认值初始化。 通常情况下,这里要做的事情是使用构造函数,但是由于go在传统意义上并不是真正的OOP,所以它们不是真正的对象,也没有构造函数。 我注意到init方法,但是在包级别。 是否还有其他类似的结构级别可以使用? 如果不是Go的这种types的东西被接受的最佳做法?

如何创build完美的OOP应用程序

最近我正在尝试一家公司'x'。 他们给了我一些问题,告诉我只能解决一个问题。 问题就是这样 – 基本销售税适用于所有货物的10%,除书籍,食品和医疗产品免除外。 import税是对所有import货物适用的额外销售税,税率为5%,没有豁免。 当我购买物品时,我会收到一张收据,列出所有物品的名称及其价格(含税),以物品的总成本和销售税金总额结束。 销售税的取整规则是,对于n%的税率,p的货架价格包含销售税额(np / 100四舍五入到最接近的0.05)。 “他们告诉我,他们对你的解决scheme的devise方面很感兴趣,并且想评估我的面向对象的编程技巧 。” 这是他们用自己的话讲的 对于解决scheme,我们希望您使用Java,Ruby或C#。 我们对您的解决scheme的devise方面感兴趣,并希望评估您的面向对象的编程技巧 。 您可以使用外部库或工具来build立或testing目的。 具体而言,您可以使用unit testing库或可用于您所选语言的构build工具(例如,JUnit,Ant,NUnit,NAnt,Test :: Unit,Rake等) 或者,您也可以包括您的devise和假设以及您的代码的简要说明。 请注意,我们不期望一个基于Web的应用程序或一个全面的用户界面。 相反,我们期待一个简单的,基于控制台的应用程序,并对您的源代码感兴趣。 所以我提供了下面的代码 – 你可以复制粘贴代码并在VS中运行。 class Program { static void Main(string[] args) { try { double totalBill = 0, salesTax = 0; List<Product> productList = getProductList(); foreach (Product prod in productList) { double […]

在PHP中创build匿名对象

我们知道,在JavaScript中创build匿名对象很简单,就像下面的代码一样: var object = { p : "value", p1 : [ "john", "johnny" ] } ; alert(object.p1[1]) ; 输出: an alert is raised with value "johnny" 在PHP的情况下可以应用这种相同的技术? 我们可以在PHP中创build匿名对象吗?

pipe理Laravel中的关系,坚持存储库模式

在阅读T. Otwell关于Laravel良好devise模式的书后,我在Laravel 4中创build了一个应用程序,结果发现自己为应用程序中的每个表创build了一个存储库。 我结束了以下表结构: 学生:身份证,姓名 课程:id,名字,teacher_id 教师:身份证,姓名 作业:id,name,course_id 分数(作为学生和作业之间的枢纽):student_id,assignment_id,分数 我有存储库类查找,创build,更新和删除所有这些表的方法。 每个存储库都有一个与数据库交互的Eloquent模型。 关系在每个Laravel的文档模型中定义: http ://laravel.com/docs/eloquent#relationships。 创build新课程时,我所做的只是在课程资料库中调用create方法。 那个课程有作业,所以当创build一个时,我也想为每个学生在课程中创build一个分数表的入口。 我通过Assignment Repository来完成。 这意味着分配库与两个Eloquent模型进行通信,使用Assignment和Student模型。 我的问题是:由于这个应用程序的规模可能会增加,更多的关系将被引入,是否是与存储库中的不同Eloquent模型进行通信的良好实践,或者应该使用其他存储库来完成(我的意思是从分配存储库调用其他存储库)还是应该一起在雄辩模型中完成? 另外,将分数表作为作业和学生之间的关键是否是好的做法,还是应该在其他地方做?

遗传和多态性的主要区别是什么?

我今天在模块打开书考试结束时提出了这个问题,发现自己迷路了。 我正在读Head first Java和两个定义似乎是完全一样的。 我只是想知道自己心中的主要区别是什么。 我知道有一些类似的问题,但是,我没有看到哪一个提供了明确的答案。

为什么所有的活动logging都讨厌?

随着我越来越多地了解面向对象,并开始实施各种devise模式,我不断回到人们讨厌活动logging的情况 。 人们经常说它不能很好地扩展(引用Twitter作为主要例子),但是没有人真正解释为什么它不能很好地扩展; 和/或如何在没有缺点的情况下实现AR的优点(通过类似但不同的模式?) 希望这不会变成一场关于devise模式的圣战 – 我想知道的仅仅是特别的**** Active Record有什么问题。 如果不好,为什么不呢? 还有什么其他问题?

私人vs保护 – 可见性良好的实践关注

我一直在寻找,我知道理论上的差异。 public – 任何类/函数都可以访问方法/属性。 保护 – 只有这个类和任何子类可以访问方法/属性。 私人 – 只有这个类可以访问方法/属性。 它甚至不会被inheritance。 这一切都很好,问题是,他们之间的实际区别是什么? 什么时候你会使用private ,什么时候使用protected ? 有没有一个标准的或可接受的良好的做法,这一个? 到目前为止,为了保留inheritance和多态的概念,我使用public来从外部访问(比如构造函数和主类的function),并为内部方法(逻辑,辅助方法等)提供保护。 我在正确的轨道上? (请注意,这个问题对我来说,也是为了将来的参考,因为我没有看到像这样的问题)。

使用面向对象的分析和devise对电梯进行build模

在涉及面向对象的devise和分析时,面试和课堂中似乎有一组常见的问题。 这是其中之一; 不幸的是,我的大学OOP教授从来没有给出答案,所以我一直在想。 问题如下:devise一套基本的对象/方法来模拟电梯组。 什么是对象及其属性/方法? 为了辩论,让我们假设我们的build筑有二十层; 底层是大厅,二楼连接到停车场(因此,人们将在底层或二层进出build筑物)。 有一个电梯银行服务所有的楼层; 电梯组中有三个电梯竖井,每个电梯一个电梯。 在面向对象的模型中build立这个模型的正确方法是什么?