问题标签 [oop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
1017 浏览

oop - OOP 类设计,这种设计是否天生就“反”OOP?

记得在MS发布论坛示例应用程序时,应用程序的设计是这样的:

/Classes/User.cs /Classes/Post.cs ... /Users.cs /Posts.cs

所以类文件夹只有类,即属性和getter/setter。Users.cs、Post.cs 等具有访问数据访问层的实际方法,因此 Posts.cs 可能如下所示:

另一种更传统的方法是将 Posts.cs 中的所有方法也放入类定义(Post.cs)中。

将内容拆分为 2 个文件会使其更加程序化,不是吗?这不是破坏 OOP 规则,因为它将行为从类中取出并将其放入另一个类定义中吗?

0 投票
7 回答
8897 浏览

java - 接口隔离原则背后的原因是什么?

接口隔离原则 (ISP) 说,许多特定于客户端的接口优于一个通用接口。为什么这很重要?

0 投票
15 回答
9517 浏览

oop - 开放/封闭原则背后的含义和推理是什么?

开放/封闭原则指出软件实体(类、模块等)应该对扩展开放,但对修改关闭。这是什么意思,为什么它是良好的面向对象设计的重要原则?

0 投票
8 回答
25868 浏览

c++ - C++ 继承和成员函数指针

在 C++ 中,成员函数指针可以用来指向派生(甚至是基)类成员吗?

编辑:也许一个例子会有所帮助。假设我们有一个按继承顺序排列的 三个类X,Y的层次结构。因此有一个基类和一个派生类。ZYXZ

现在我们可以p为 class定义一个成员函数指针Y。这写成:

(为简单起见,我假设我们只对带有签名的函数感兴趣void f()

这个指针p现在可以用来指向类的成员函数Y

这个问题(实际上是两个问题)是:

  1. 可以p用来指向派生类中的函数Z吗?
  2. 可以p用来指向基类中的函数X吗?
0 投票
8 回答
73200 浏览

oop - 用于学习或提高面向对象编程 (OOP) 技能的良好挑战/任务/练习

什么是提高你的面向对象编程技能的好挑战?

这个投票背后的想法是提供一个关于哪些练习对学习 OOP 有用的想法。

挑战应该尽可能与语言无关,需要很少或不使用特定库,或者只需要最常见的库。尝试在每个答案中仅包含一个挑战,以便投票与该挑战的优点相对应。如果指出所需的技能水平,以及为什么它是一个有用的练习背后的基本原理,那也很好。

然后可以将挑战的解决方案发布为“如何...”问题的答案,并从此处链接到。

例如:

  • 挑战 - 实施后进先出堆栈
  • 技能水平 - 初学者
  • 基本原理 - 提供如何引用对象的经验
0 投票
2 回答
1600 浏览

c++ - C++ 测验 - 单例

我很快就会在我的博客上发布一篇文章,但我想先确认我没有错过任何内容。

找到一个我错过的例子,我会在我的帖子中引用你。

主题是失败的Singleton implementations:在什么情况下你会不小心得到一个singleton的多个实例?

到目前为止,我想出了:

  • 第一次调用时的竞争条件instance()
  • 并入多个 DLL 或 DLL 和可执行文件
  • 单例的模板定义 - 实际上是单独的类

我还缺少任何其他方式——也许是继承?

0 投票
6 回答
1841 浏览

c++ - C++ 函数指针和类

说我有:

只要我要用于渲染的函数是函数或static成员函数,这很好:

但是,我真的希望能够使用类方法,因为在大多数情况下,渲染函数会想要访问成员变量,并且我宁愿不使类实例成为全局的,例如

但是我真的不知道如何做到这一点,并且仍然允许使用函数和static成员函数。

0 投票
11 回答
113337 浏览

c++ - 为什么要使用“PIMPL”成语?

背景资料:

PIMPL Idiom (指向 IPLementation的指针)是一种实现隐藏技术,其中公共类包装了在公共类所属的库之外无法看到的结构或类。

这对库的用户隐藏了内部实现细节和数据。

在实现这个习惯用法时,为什么要将公共方法放在 pimpl 类而不是公共类上,因为公共类的方法实现将被编译到库中并且用户只有头文件?

为了说明,此代码将Purr()实现放在 impl 类上并包装它。

为什么不在公共类上直接实现 Purr 呢?

0 投票
7 回答
4686 浏览

database - 对象数据库的优缺点是什么?

有很多关于对象关系映射器以及如何最好地避免阻抗不匹配的信息,如果要使用对象数据库,所有这些似乎都没有实际意义。我的问题是为什么不更频繁地使用它?是因为性能原因还是因为对象数据库导致您的数据成为应用程序的专有,还是由于其他原因?

0 投票
4 回答
455 浏览

php - 有没有人试图让 PHP 的系统功能更加面向对象?

我只是好奇是否存在任何项目试图将所有(或大部分)PHP 的内置函数组合成一个更加面向对象的类层次结构。例如,将所有字符串函数分组到一个字符串类中,等等。

我意识到这实际上不会解决任何问题(除非修改发生在 PHP 源代码级别),因为所有内置函数仍然可以在全局命名空间中访问,但它肯定会使可用性更容易。