问题标签 [generalization]

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 投票
4 回答
1572 浏览

java - Java 泛型可以替换多个相似的类吗?

问题

我正在尝试使用 Java 泛型来替换具有类似方法的类。我发现的所有示例都包含简单示例,但我不确定 Java 泛型是否打算以这种方式使用。

我有 2 个父类和 2 个具有几乎相同方法的子类。两个父类也派生自不同的类。最终,我希望能够使用一个代码块来创建和操作其中一个父类,然后是它的子类,而不需要大量的 switch 语句或其他具有重复代码的流控制。

这就是我的想法,尽管我还没有能够让它以这种方式工作,无论是语法,还是不是泛型的功能。

家长班

子班

泛型类

如何使用它们

用法和期望的输出

最后的问题

也许“孩子”和“父母”用词不当,因为我知道它们实际上并没有被继承,但最重要的是,一个类用某些方法返回它的“孩子”。所以这是一个问题的很多代码,实际上可能无法通过这种方式解决,但希望你能回答我这个问题:

  1. 这是Java泛型可以完成的事情吗?
  2. 如果没有,Java中是否有解决此问题的方法?

谢谢!

编辑

我无法编辑我的“Foo”和“Bar”课程。我的最终问题是:我可以在不使用公共父类的情况下将任一类的一个实例存储在单个变量中吗?

0 投票
5 回答
100 浏览

java - 如何概括这些重复的代码块?

像这样具有几乎相同块的代码让我畏缩。再加上它加起来你有一千行代码,其中一半就足够了。当然,有一种方法可以创建一个循环来实现这一切,并且没有看起来如此简单和无脑的代码。

这样做似乎会添加尽可能多的代码,因为我试图减少:循环制作 5 个按钮,按钮的标签数组,背景数组......也许更多。即使事实证明这是可以接受的,我将如何制作一个循环来处理听众?我不能有一组方法,可以吗?我想这样的循环必须包含一个switch. 是的?如果我不想寻求更好的解决方案,我可能会这样做。所以我问...

什么样的代码会听取整个按钮组并根据按下的按钮采取行动?我会将单个侦听器分配给哪个组件?如何?

(如果我意识到我已经知道如何做到这一点并且甚至不需要一开始就问,那么这个问题的答案可能会让我更加畏缩,而不是代码的重复性,但我'无论如何我都在问。我正处于大脑想要退出的那些我今天已经拥有它的点之一。)

我不是要求任何人编写代码。我什至不想那样(但我不能忽视它!)。

以下是上面代码的作用: 在此处输入图像描述

0 投票
11 回答
3269 浏览

c# - C# OOP 组合和泛化同时进行

这可能是一个简单/基本的 OOP 问题,但我仍然无法弄清楚如何解决它。我在面试中遇到了以下问题:制作一个 UML 类图并为包含电话和 mp3 播放器功能的“智能”电话编写基本代码。我们有以下(接受的)解决方案:

和“智能”电话类:

如您所见,我们在 TelephoneMP3 和 Telephone/MP3 类之间存在组合关系。

但是,使用此代码,TelephoneMP3 不是 Telephone,TelephoneMP3 也不是 MP3,这是不合逻辑的。那么,我应该进行哪些更改才能使其有效?例如,这种测试:

可以使用以下备注进行修改:

  1. Telephone / MP3 / TelephoneMP3 必须保留类(全部 3 个)
  2. 如有必要,我可以添加接口/其他类
  3. TelephoneMP3 不得复制 Telephone / MP3 的所有功能(例如,在从接口继承期间,TelephoneMP3 必须编写来自所有接口成员的代码)

先感谢您

0 投票
1 回答
220 浏览

haskell - 如何概括我的采样框架?

在随机光线追踪器的上下文中,我想将 MC 集成(路径追踪、双向路径追踪)与样本生成(均匀随机、分层、泊松、大都会......)分离。其中大部分已经实现,但是使用起来很乏味。所以我放弃了它并尝试通过将采样计算分成两个阶段来构建更好的东西:SampleGen你可以使用mk1dand函数请求一个随机值,然后由采样算法mk2d提供实际的 s 。Float可以检查这些值以进行SampleRun实际计算。这是一些带有分层采样器有趣部分的代码,它的使用:

这里缺少的部分是,在它的当前形式中,mcPi函数具有类型

虽然它真的应该是这样的

承认,上面的四个类型参数Sampled并不是很漂亮,但至少这样的东西会很有用。总之,我正在寻找一些允许表达计算的东西,比如mcPi独立于采样算法,例如:

  • 一个均匀随机采样器在相位中不需要保持任何状态,在相位SampleGen中只需要一个RNGSampleRun
  • 分层和泊松圆盘采样器(可能还有其他)都跟踪所需的一维和二维样本的数量并将它们预先计算为一个向量,并且它们将被允许共享一个SampleGenSampleRun实现,只是在两者之间发生的事情有所不同SampleGenSampleRun(如何实际填充向量)
  • Metropolis 采样器将在其阶段使用惰性样本生成技术SampleRun

我想使用 GHC 来编译它,所以扩展喜欢MultiParamTypeClasses并且TypeFamilies对我来说没问题,但我没有想出任何远程可用的东西。

PS:作为动机,一些漂亮的图片。当前形式的代码在GitHub 上

0 投票
3 回答
99 浏览

c++ - 如何在两个不同对象的基类中使用模板类

我在将模板类存储在两个对象的基础上时遇到问题。

假设我有一个名为 ObjectManager 的广义类定义为:

我有一个像这样的基类:

现在我从 MediaSample 声明另外两个驱动类,比如:

我的问题是经理的类型,类的输入参数MediaSample

必须放置哪种类型而不是问号字符?(音频、视频还是什么?)

为了更清楚,我发布了 ObjectManager 的完整来源,请注意对象管理器是媒体样本对象的轮询,媒体样本可以是音频或视频

类媒体样本:

类 AudioSample :

0 投票
2 回答
68 浏览

sql - EER - 限制专业化

假设“人”可以是“客户”“供应商”。使用 EER,我们可以有这样的东西:

在此处输入图像描述

该解决方案的问题在于,一个人既可以客户,也可以是供应商。有没有办法限制一个“人”只做一个专业?

0 投票
1 回答
347 浏览

r - 概括我的 YoY 季度百分比增长代码以适应不同的数据

我已经编写了一个代码,该代码适用于同比季度百分比增长。但是,我的代码仅适用于我用来编写代码的数据。我希望能够使用不同长度的数据运行我的整个代码,而不必更改任何内容。

这是我的代码:

有什么方法可以缩短它有 percent1,percent2...#percent14 的代码?并且在名称(百分比增长1)中考虑到数据的长度可能会改变,因此名称会改变吗?

这是此代码中使用的数据,因此您可以看到我做了什么:

http://s21.postimg.org/t6nldfo13/datan.png (datan)

http://s14.postimg.org/vmn2kjatp/arimab2f.png(Arimab2f(使用 ARIMA 的预测数据))

水平=4

频率数据=4

您可以通过复制和粘贴所有这些(包括数据)来运行我的整个代码:

0 投票
0 回答
85 浏览

ruby-on-rails - 管理面板的一般批量更新?

我正在为我的网站使用自己的管理面板,并想使用http://railscasts.com/episodes/52-update-through-checkboxes介绍一些批量操作。首先,这仍然是执行批量操作的最佳做​​法吗?

其次,我如何概括这段代码,以便管理面板中的每个控制器都可以使用它?

期待听到您的想法!

0 投票
2 回答
375 浏览

java - 如果java中的两个类有泛化关系,子类只能继承父类的部分方法,而不是全部方法吗?

例如:我的customer班级有两个子班级,分别是guest班级或signed-up users班级。Customer classusername作为实例变量。是否guest class也有username作为实例变量?methods客户等级怎么样?

0 投票
2 回答
533 浏览

haskell - 带索引的 Sigma 表示法

我一直在尝试解决一个需要 Sigma 表示法(或者至少我认为)的问题,但是我遇到的 Haskell 中 Sigma 表示法的每个实现都没有在其函数中使用索引变量。我一直试图复制的特定公式是:

在此处输入图像描述

它用于计算 n! 中尾随零的数量,但我得到的最好的是:

我也在尝试创建一个通用的 sigma 函数,它与 f 中的索引变量一起使用。这有效,但对于 100!,它会给出 -11 个尾随零。溢出?

PS 我在限制编译时间的浏览器内 IDE 上。(所以速度很重要)