Tag: oop

inheritance与构成的区别

构成和inheritance是一样的吗? 如果我想实现组合模式,我怎样才能在Java中做到这一点?

像projecteuler.net网站

有时我正在projecteuler.net上解决问题。 几乎所有的问题都可以通过程序来解决,但是这些任务比编程更为math化。 也许有人知道类似的网站: devise任务, 架构任务, 像“find最优雅的C ++解决scheme”的东西?

了解__getattr__和__getattribute__之间的区别

我想了解__getattr__和__getattribute__之间的区别,但是,我失败了。 堆栈溢出问题getattr与getattribute之间的区别说, 在查看对象上的实际属性之前调用__getattribute__ ,因此可能会很难正确实现。 你可以很容易地在无限的recursion结束。 我完全不知道这意味着什么。 然后它继续说: 你几乎肯定希望__getattr__ 。 为什么? 我读过,如果__getattribute__失败, __getattr__被调用。 那么为什么有两种不同的方法做同样的事情呢? 如果我的代码实现了新的风格类,我应该使用什么? 我正在寻找一些代码示例来清除这个问题。 我已经尽力search到了,但是我find的答案并没有彻底讨论这个问题。 如果有任何文件,我准备阅读。

什么是“松耦合”?请举例说明

我似乎无法理解“松耦合”的概念。 我认为“松散”这个词通常不具有负面的含义,所以我总是忘记,松耦合是一件好事。 有人会请示出一些说明这个概念的“之前”和“之后”代码(或伪代码)吗?

重写ActiveRecord属性方法

我正在谈论的一个例子是: class Person < ActiveRecord::Base def name=(name) super(name.capitalize) end def name super().downcase # not sure why you'd do this; this is just an example end end 这似乎工作,但我刚刚阅读的重写属性方法在ActiveRecord :: Base文档的部分 ,它build议使用read_attribute和read_attribute方法。 我认为在上面的例子中我一定会有什么不对的; 否则,为什么他们会保佑这些方法成为覆盖属性方法的“正确方法”呢? 他们也迫使一个更加丑陋的成语,所以一定有一个很好的理由… 我真正的问题:这个例子有什么问题吗?

我如何获得一个PHP类的构造函数来调用其父类的构造函数

我需要在PHP中有一个类构造函数,而不用调用父类的构造函数来调用其父类(祖父类)的构造函数。 // main class that everything inherits class Grandpa { public function __construct() { } } class Papa extends Grandpa { public function __construct() { // call Grandpa's constructor parent::__construct(); } } class Kiddo extends Papa { public function __construct() { // THIS IS WHERE I NEED TO CALL GRANDPA'S // CONSTRUCTOR AND NOT PAPA'S […]

何时使用静态vs实例化的类

PHP是我的第一个编程语言。 当我使用静态类和实例化对象的时候,我不能完全包裹我的头。 我意识到你可以复制和克隆对象。 然而,在我所有的时间使用PHP的任何对象或函数总是作为单个返回(数组,string,整数)值或无效。 我理解像电子游戏angular色类的书籍中的概念。 重复的汽车对象,使新的红色 ,这一切都有道理,但什么不是它的应用程序在PHP和Web应用程序。 一个简单的例子。 一个博客。 博客的哪些对象最好实现为静态或实例化对象? DB类? 为什么不直接在全局范围内实例化数据库对象? 为什么不让每个对象都是静态的呢? 性能呢? 这只是风格吗? 有没有一个正确的方法来做这个东西?

如何防止修改某个class级的私人领域?

想象一下,我有这个类: public class Test { private String[] arr = new String[]{"1","2"}; public String[] getArr() { return arr; } } 现在,我有另一个类使用上面的类: Test test = new Test(); test.getArr()[0] ="some value!"; //!!! 所以这就是问题所在:我从外面访问了一个class的私人领域! 我怎样才能防止这个? 我的意思是我怎样才能使这个数组不可变? 这是否意味着每一个吸气的方法,你可以用自己的方式来访问私人领域? (我不想要像Guava这样的图书馆,我只需要知道正确的方法来做到这一点)。

什么是合并两个PHP对象的最佳方法?

我们有两个PHP5对象,并希望合并一个的内容到第二个。 它们之间没有子类的概念,因此下面的主题中描述的解决scheme不适用。 如何将PHP对象复制到不同的对象types中 //We have this: $objectA->a; $objectA->b; $objectB->c; $objectB->d; //We want the easiest way to get: $objectC->a; $objectC->b; $objectC->c; $objectC->d; 备注: 这些是对象,而不是类。 这些对象包含相当多的字段,所以foreach会很慢。 到目前为止,我们考虑将对象A和B转换为数组,然后在重新转换为对象之前使用array_merge()合并它们,但是如果这样我们不能说我们感到自豪。

基于原型与基于类的inheritance

在JavaScript中,每个对象同时是一个实例和一个类。 要进行inheritance,可以使用任何对象实例作为原型。 在Python,C ++等中,有一些类和实例是独立的概念。 为了做inheritance,你必须使用基类创build一个新的类,然后可以用它来产生派生实例。 为什么JavaScript会朝这个方向发展(基于原型的面向对象)? 基于原型的面向对象的传统的基于类的面向对象的优点(和缺点)是什么?