UML如何表示类关注/模块/扩展

时间:2016-05-02 12:21:52

标签: ruby swift uml

我正在谈论关注/模块/扩展,例如Ruby和Swift中存在的。

Ruby模块是类可以包含的东西(=将模块函数添加为自己的实例方法)或扩展(将模块函数添加为自己的类方法)。

swift扩展也是类的附加组件,通常当您想要添加首先定义原型的功能时,然后在扩展中实现它。

(如果我错了,请纠正我)

你如何在UML中表示这样的Ruby模块/ Swift扩展,以及它包含在/它扩展的类中的链接?

1 个答案:

答案 0 :(得分:4)

我也不知道这方面的标准,但会像这样建模:

enter image description here

/** * 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中本机可用。但就像在任何语言中一样,如果你没有一个单词的话,你可以制作描述这个东西的结构。你可以自由选择词汇量。只有你应该在使用这种释义的域中保持一致。