我正在谈论关注/模块/扩展,例如Ruby和Swift中存在的。
Ruby模块是类可以包含的东西(=将模块函数添加为自己的实例方法)或扩展(将模块函数添加为自己的类方法)。
swift扩展也是类的附加组件,通常当您想要添加首先定义原型的功能时,然后在扩展中实现它。
(如果我错了,请纠正我)
你如何在UML中表示这样的Ruby模块/ Swift扩展,以及它包含在/它扩展的类中的链接?
答案 0 :(得分:4)
我也不知道这方面的标准,但会像这样建模:
与 /**
* This Object is the new Page that will be created to enter tabulature
*/
var Page = function () {
this.typeName='Page';
var newPage = document.createElement("canvas");
newPage.id = "newSite";
newPage.width=canvas.width;
newPage.height=canvas.height;
newPage.className = "tabulaturenCanvasCSS";
document.body.appendChild(newPage);
this.canvas=newPage;
this.context = newPage.getContext('2d');
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
console.log('Bin da');
this.registerListeners();
this.redraw();
};
Page.prototype = {
getTypeName: function () {
return this.typeName;
},
registerListeners: function() {
this.canvas.onmousemove = function (e) {
var x = e.x || e.clientX,
y = e.y || e.clientY;
this.loc = windowToCanvas(canvas, x, y);
e.preventDefault();
// console.log(loc.x+':'+loc.y)
};
},
drawGrid: function(color, stepx, stepy) {
if(document.getElementById("cbShowGrid").checked)
{
this.context.save();
this.context.shadowColor = undefined;
this.context.shadowBlur = 0;
this.context.shadowOffsetX = 0;
this.context.shadowOffsetY = 0;
this.context.strokeStyle = color;
this.context.fillStyle = '#ffffff';
this.context.lineWidth = 0.5;
this.context.fillRect(0, 0, context.canvas.width, context.canvas.height);
for (var i = stepx + 0.5; i < context.canvas.width; i += stepx) {
this.context.beginPath();
this.context.moveTo(i, 0);
this.context.lineTo(i, context.canvas.height);
this.context.stroke();
}
for (var i = stepy + 0.5; i < context.canvas.height; i += stepy) {
this.context.beginPath();
this.context.moveTo(0, i);
this.context.lineTo(context.canvas.width, i);
this.context.stroke();
}
this.context.restore();
}
},
redraw: function() {
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
this.drawGrid('lightgray', 10, 10);
}
}
刻板印象的Realize
关系。也许<<import>>
在上下文中过于强大而且简单Realize
但仍然具有这种刻板印象会更好。
并非所有内容都在UML中本机可用。但就像在任何语言中一样,如果你没有一个单词的话,你可以制作描述这个东西的结构。你可以自由选择词汇量。只有你应该在使用这种释义的域中保持一致。