标签: composition

在Python中,mixins是否相当于组合?如果是这样,为什么不只是使用组合?

我理解mixin看起来像继承,但更像是组合.
(编辑:我倾向于giving additional functionality/attributes通过mixin 思考而不是giving another is-a relationship.)在
心理上,当我使用mixin时,我说的是这样的东西:我给你这个你缺少的mixin,而不是你实际上也是这个mixin-type. (IS-A)

我读了几遍,你应该更喜欢作文而不是继承.

我们可以使用直接的成分而不是mixins,什么是mixin?

如果我不得不猜测,那是因为my_instance.foo()比my_instance.another_instance.foo()更容易吗?
(如果mixin有foo(),你可以使用my_instance.foo(),当你将another_instance复合为my_instance的属性时,你需要my_instance.another_instance.foo()

还有其他原因吗?


编辑:

所以即使我觉得它有一个-a,但mixin仍然是一种关系.当你使用is-a时,你得到的好处是更清洁的界面.那就是我如何理解德尔南的答案.

python inheritance composition mixins

7
推荐指数
1
解决办法
2596
查看次数

使用Java 8 Streams映射,汇总和组合总计

我正在尝试重新创建一个过程,以创建一个对象列表,该对象列表是使用Java 8 Streams的另一个对象列表的集合。

例如,我有一个如下所述的类,它是通过数据库调用或类似方法提供的

public class Order {

    private String orderNumber;        
    private String customerNumber;
    private String customerGroup;
    private Date deliveryDate;
    private double orderValue;
    private double orderQty;
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序的其他地方,我有一个OrderTotal类,该类代表和汇总按客户编号和组分组的Order分组,并汇总orderValue和orderQty的总数。(在customerGroup和customerNumber上使用等于和哈希码)

public class OrderTotal {

    private String customerGroup;
    private String customerNumber;
    private double totalValue;
    private double totalQty;
}
Run Code Online (Sandbox Code Playgroud)

我们在Java 8之前实现这一目标的“长手”方法如下

public Collection<OrderTotal> getTotals(List<Order> orders) {
    ///map created for quick access to the order total for each order 
    Map<OrderTotal, OrderTotal> map = new HashMap<>();
    ///loop through all orders adding to the relevaent order total …
Run Code Online (Sandbox Code Playgroud)

java composition aggregation java-8 java-stream

7
推荐指数
1
解决办法
102
查看次数

Java GC:推广的顶级对象类(按大小)?

在每次年轻的GC活动结束后,请让我知道确定促进老一代年轻一代记忆构成的最佳方法是什么?

理想情况下,我想知道负责的班级名称,每个"年轻一代 - >老一代"推广块的80%的堆;

例如:我有600M年轻人,每个任期晋升6M; 我想知道哪个对象构成了这个6M.

谢谢.

java promotions garbage-collection composition

6
推荐指数
1
解决办法
2381
查看次数

如何从较小的可重复使用的查询中编写实体框架查询?

我的应用程序中有一些(相当多余的)查询,如下所示:

var last30Days = DateTime.Today.AddDays(-30);

from b in Building
let issueSeverity = (from u in Users
                     where u.Building == b
                     from i in u.Issues
                     where i.Date > last30Days
                     select i.Severity).Max()
select new
{
    Building = b,
    IssueSeverity = issueSeverity
}
Run Code Online (Sandbox Code Playgroud)

和:

var last30Days = DateTime.Today.AddDays(-30);

from c in Countries
let issueSeverity = (from u in Users
                     where u.Building.Country == c
                     from i in u.Issues
                     where i.Date > last30Days
                     select i.Severity).Max()
select new
{
    Country = c,
    IssueSeverity = issueSeverity
} …
Run Code Online (Sandbox Code Playgroud)

.net c# linq-to-entities entity-framework composition

6
推荐指数
1
解决办法
1884
查看次数

Haskell(.)用于具有多个操作数的函数

(.)运营商有签名:

(.) :: (b -> c) -> (a -> b) -> a -> c
(.) f g x = f $ g x
Run Code Online (Sandbox Code Playgroud)

这看起来有点类似于带有一个g的原始递归函数中的组合函数.

我对扩展g -functions 的数量感兴趣,但是(多个)函数将(.)函数应用于g具有多个操作数的函数.换句话说,像:

(..) :: (c -> d) -> (a -> b -> c) -> a -> b -> d
(..) f g x y = f $ g x y
Run Code Online (Sandbox Code Playgroud)

Hoogle上搜索不会产生任何功能.是否有一个包可以处理任意数量的操作数?

haskell functional-programming composition

6
推荐指数
1
解决办法
148
查看次数

何时支持继承而不是作文

这个问题似乎是重复的,但事实并非如此.我用Google搜索,总线无法获得概念清晰度.有很多动物,汽车的例子.但是,我想了解基本逻辑.一般来说,赞成组合而不是继承,因为它提供了许多优点.在这种情况下,为什么继承被提供为OOP的主要概念之一.我的问题是何时支持继承优于作曲?

oop inheritance composition

6
推荐指数
3
解决办法
1176
查看次数

在边缘的图像中放置文本

在此输入图像描述 我在Visual Basic 2010中编写的这个工具应该为图像添加作者文本.用户可以设置字体不透明度和位置.为了方便起见,我想要一些位置预设,如右下角所示.我正在使用的计算是(在这种情况下右下角:

 Dim textSize As Size = TextRenderer.MeasureText(tagString + curText, curFont)
 tmpPos = New Point(srcImg.Width - textSize.Width - 10, srcImg.Height - textSize.Height - 10)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这适用于此示例图片.一些文本只是剪辑出来的地方. 在此输入图像描述

第一个:1024x768 | 检测到的字体大小:680x72

第二名:1688x1125 | 检测到的字体大小:680x72

我怀疑这与图像的宽高比有关,但我不知道如何修复它.

文字是这样绘制的:

 brush = New SolidBrush(color.FromArgb(alpha, color))
        gr = Graphics.FromImage(editImg)
        gr.DrawString(tagString + text, font, brush, pos)
        HauptBild.Image = editImg
Run Code Online (Sandbox Code Playgroud)

我找到了这个http://www.codeproject.com/Articles/20923/Mouse-Position-over-Image-in-a-PictureBox,它回答了我的问题.

vb.net image composition aspect-ratio visual-studio-2010

6
推荐指数
1
解决办法
392
查看次数

在Haskell中结合使用应用程序风格的验证器

我对命令式编程有很好的把握,但现在我自学了一个Haskell非常好.

我想,我对Monads,Functors和Applicatives有很好的理论认识,但我需要一些练习.而对于练习,我有时会从当前的工作任务中带来一些东西.

而且我在应用方式上结合了一些东西

第一个问题

我有两个验证功能:

import Prelude hiding (even)

even :: Integer -> Maybe Integer
even x = if rem x 2 == 0 then Just x else Nothing

isSmall :: Integer -> Maybe Integer
isSmall x = if x < 10 then Just x else Nothing
Run Code Online (Sandbox Code Playgroud)

现在我想validate :: Integer -> Maybe Integereven和建造isSmall

我最好的解决方案是

validate a = isSmall a *> even a *> Just a
Run Code Online (Sandbox Code Playgroud)

这不是免费的

我可以使用monad

validate x = do
  even x
  isSmall x …
Run Code Online (Sandbox Code Playgroud)

haskell composition applicative

6
推荐指数
2
解决办法
167
查看次数

与指针的组合

类的 UML 图

\n\n

我在使用 RobotControl 类成员时遇到问题。UML 将 RobotControl\xe2\x80\x99s 位置和 RangeSensor 之间的关系指定为组合。不为它们使用指针,使它们聚合吗?我应该如何声明 - 根据 UML 创建这些成员,或者 UML 是否错误?

\n

c++ oop pointers composition

6
推荐指数
1
解决办法
4074
查看次数

没有匹配的成员函数调用“push_back”错误

//fleet.h 
#include "ship.h"
#include <vector>
#include <iostream>
#ifndef fleet_h
#define fleet_h
using namespace std;

class fleet
{
public:

//Add_ship and remove_ship method
bool add_ship(ship const &s);

private:
vector<ship*> ships;
};

//Add_ship method
bool fleet::add_ship(ship const & s){
    ships.push_back(&s); 
       return true;
}
#endif /* fleet_h */
Run Code Online (Sandbox Code Playgroud)

该程序给了我这个错误,我不确定我做错了什么。船舶对象通过名为 add_ship 的方法添加到舰队中,该方法需要一个指向船舶的指针。

No matching member function for call 'push_back'
Run Code Online (Sandbox Code Playgroud)

c++ vector composition

6
推荐指数
1
解决办法
2万
查看次数