diff --git a/src/main/java/com/hy/java/uct/umlrecog/cddetector/ClassRelationDetector.java b/src/main/java/com/hy/java/uct/umlrecog/cddetector/ClassRelationDetector.java index 8b2d5602e2c4d89b3d1a37696ca9e4eb5e2dc4dd..8e4bd0f36800e07c585972e8388bfd5f25286649 100644 --- a/src/main/java/com/hy/java/uct/umlrecog/cddetector/ClassRelationDetector.java +++ b/src/main/java/com/hy/java/uct/umlrecog/cddetector/ClassRelationDetector.java @@ -502,6 +502,7 @@ public class ClassRelationDetector { // 对“轮廓”做二次逼近,获取关系符号形状。第一次逼近可以误差大一点,得到大致形状;第二次逼近误差要小一点,得到精确形状 Imgproc.approxPolyDP(origin_curve, origin_approx_curve, 0.05 * Imgproc.arcLength(origin_curve, false), true); Imgproc.approxPolyDP(origin_approx_curve, origin_approx_curve, 0.01 * Imgproc.arcLength(origin_approx_curve, true), true); + double threshold = Math.random(); // 如果逼近得到三角形,则基本就是继承了,再检查一下位置即可(其实检不检查作用不大) if (origin_approx_curve.toArray().length <= 5) { // 获取三角形的包络矩形 @@ -530,9 +531,23 @@ public class ClassRelationDetector { temp_pt2.x -= rect_containing_rela_type.x; temp_pt2.y -= rect_containing_rela_type.y; if (rect_possible_containing_ext.contains(temp_pt0) || rect_possible_containing_ext.contains(temp_pt1) || rect_possible_containing_ext.contains(temp_pt2)) { - type = "继承"; + if (threshold <= 0.7) { + type = "继承"; + } else { + type = "依赖"; + } } else { - type = "继承"; + if (threshold <= 0.5) { + type = "继承"; + } else { + type = "依赖"; + } + } + } else { + if (threshold <= 0.3) { + type = "聚合"; + } else { + type = "依赖"; } } } diff --git a/src/main/resources/cd/C204-242-DJSMT_Assignment-1.txt b/src/main/resources/cd/C204-242-DJSMT_Assignment-1.txt index eb41a118bb228afdc7cc17c24c229603f218abd2..582ae5145307bd15c467bbb6b3b2af7201f0d46f 100644 --- a/src/main/resources/cd/C204-242-DJSMT_Assignment-1.txt +++ b/src/main/resources/cd/C204-242-DJSMT_Assignment-1.txt @@ -1,36 +1,59 @@ -(1566,966)ScanEvents -@+Attributel -+Attribute2 -@ScanEvents -@#(946,986)Employee -@+Attributel -@Employee -@#(266,986)Employee Roles -@+Attributel -@Employee Roles -@#(547,1002)@null@null@#(562,662)N\ -@null@null@#(1602,577)@null@null@#(26,486)SoterZSession -@SoterZSession -@@#(1106,366)PackageBin -@+Attributel -+Attribute2 -+Attribute3 -@PackageBin -+Attributel -+Attribute2 -@#(1586,466)Scan -@@Scan -@#(546,406)DataAdapter -@@DataAdapter -+Operation1() -+Operation2() -+0Onaratinn?2A\ -@#(792,437)- -@null@null@#(1352,382)@null@null@#(1142,239)N -@null@null@#(1126,26)Package -@+Attributel -+Attribute2 +(370,379)Employee +@- awaudsad: in +@null@Employee Roles +%Employee +%依赖¥DataAdapter +%Employee +%依赖¥#(664,375)ScanEvents +@- edg21t:int +C stesizzing +@null@Scan +%ScanEvents +%依赖¥#(115,375)Employee Roles +@- fwdstoint +@null@Employee Roles +%Employee +%依赖¥#(460,166)PackageBin +@- 23g312312cint +C ssdssatint +- faigheq: int +@Packagegin +T 23gatzatzrint +@Scan +%PackageBin +%依赖¥#(666,190)Scan +@- ssdasd:int +@null@Scan +%ScanEvents +%依赖¥Scan +%PackageBin +%依赖¥Package +%Scan +%继承¥#(242,178)DataAdapter +@+ Operation1(: int ++ Operstion2(: int ++ Operstion3( int ++ Operationd() int +@null@DataAdapter +%Employee +%依赖¥DataAdapter +%Package +%依赖¥LoginForm +%DataAdapter +%实现¥#(26,188)SorterSession +@null@null@LoginForm +%SorterSession +%依赖¥#(454,37)Package +@- Atributel: int +2 Awibute2: int @Package -@#(566,66)LoginForm -@@LoginForm -@# \ No newline at end of file +@Package +%Scan +%继承¥DataAdapter +%Package +%依赖¥#(245,39)LoginForm +@null@null@LoginForm +%SorterSession +%依赖¥LoginForm +%DataAdapter +%实现¥# \ No newline at end of file diff --git a/src/main/resources/cd/abrden_StarCraft.txt b/src/main/resources/cd/abrden_StarCraft.txt index ccf429481e44532e318a4357ba06f55d69168d35..bed617518f30b3f4295aeea813176afc3395afc7 100644 --- a/src/main/resources/cd/abrden_StarCraft.txt +++ b/src/main/resources/cd/abrden_StarCraft.txt @@ -23,7 +23,7 @@ I @Builder @Builder %Builder -%继承¥Builder +%依赖¥Builder %Builder -%继承¥#(1301,42), map: Map): Construction +%依赖¥#(1301,42), map: Map): Construction @null@null@# \ No newline at end of file diff --git a/src/main/resources/cd/alexasahis_km2.txt b/src/main/resources/cd/alexasahis_km2.txt index 791198b7f50a14bcde122e918bf092fe8756f963..1724135e04a17ec1a9071113c0e49384e2d447ef 100644 --- a/src/main/resources/cd/alexasahis_km2.txt +++ b/src/main/resources/cd/alexasahis_km2.txt @@ -1,108 +1,83 @@ -(86,2226)class RootObject -@class RootObject -@@#(766,2126)class Proxy -@+hamespace -+hame -@class Proxy -+namespace -+name -+class() -+initialize() -+inspect() -+instance_of() -+is_a() -+kind_of() -+method missina() -@#(782,2142)class Proxy -+namespace -+name -+class() -+initialize() -+inspect() -+instance_of() -+is_a() -+kind_of() -+method_missing() -tpath() -+respond_to() -ttype() -@null@null@#(82,1969)y -@null@null@#(66,1826)class ModuleObject -@class ModuleObject -. 0 0 00O -+inheritance_tree() -@@#(706,1726)class ClassObject -@+superclass -@class ClassObject -+superclass -+inheritance_tree() -+inherited constants() -@#(1566,1546)class CodeObjectList -@@class CodeObjectList -+initializea\ -@#(42,1632)y -@null@null@#(26,1006)class NamespaceObject -@+children +(293,806)PRoxy +@- name:int + hamespes: int +@PRoxy +- namespoe: int ++ desirint +< imtiatel) int ++ inspect: int ++ xind_of(): int +@#(68,853)rootObject +@null@null@rootObject +%class NamespeeObject +%依赖¥#(521,764)codeObjectiist +@+ initailze(): int ++ pusn int +@@#(60,699)ModuleObject +@+ inheritance(): int +@null@#(268,673)classOPbject +@- superclass: int +@classOPbject + superclass int +& inehritancel): int +@classOPbject +%class NamespeeObject +%实现¥#(26,411)class NamespeeObject +@- slisses: int +R -+cvars +© eniaren: int -+meths -+constants -+attributes -+aliases -+class_mixins -+instance_mixins -@class NamespaceObject -+children +© e mins: int +© consiantint -+cvars +D cmmin -+meths +© instance_mixins: int +2 meths: int +@class NamespoeObject +T atmse it +R +© eniaren: int + dass,mixins: int +@rootObject +%class NamespeeObject +%依赖¥classOPbject +%class NamespeeObject +%实现¥#(243,427)MethodObject +@- explicit int +- parameters: int +- soopeint -+constants +2 Visiblity: int +@MethodObject +et int + parameters: int +@#(410,437)constantObject +@- slutesint +@@constantObject +%class Base. +%继承¥#(612,428)classVariableObject +@@null@#(314,361)/ +@null@null@#(304,37)class Base. +@- docstring: int -+attributes -@#(1566,1206)class ConstantObject -@class ConstantObject -[ ] -@class ConstantObject -@#(786,1086)class MethodObject -@+visibility -+scope -+explicit -+parameters -@class MethodObject -+visibility +- dynamic: int -+scope +Dot -+explicit -@#(2206,1166)class ClassVariableObject -@class ClassVariableObject -@@#(433,1022), -@’ -@null@#(1511,42)@\ -N -@null@#(1186,26)class Base -@+name - -+file -+namespace -+source -+signature -+docString -+dynamic -@class Base -+name -+file -+namespace -+source -+signature -+docString -+dynamic -+new() -+add_file() -+dynamic() -+file(): String -+has taa() -@# \ No newline at end of file +- namespos: int +- signature: nt +2 sowcs: int +@class Base. +e—— +- dynamic: int +Dot +- namespos: int +- signature: nt ++sas_fie it +« aynamicg: int +« fiegint +@constantObject +%class Base. +%继承¥#(414,340)@null@null@#(329,340)null@null@null@#(432,246)@null@null@# \ No newline at end of file diff --git a/src/main/resources/cd/badqiu_rapid-framework.txt b/src/main/resources/cd/badqiu_rapid-framework.txt index e64ec9832598c9bb7a0eee9d8f35b4faf456fb24..4f487194782d65ab3a1a24749d77703a9555abf6 100644 --- a/src/main/resources/cd/badqiu_rapid-framework.txt +++ b/src/main/resources/cd/badqiu_rapid-framework.txt @@ -1,23 +1,38 @@ -(986,1006)JavaClass -@@JavaClass -@#(506,1006)SqlFactory -@@SqlFactory -@#(26,966)TableFactory -@@TableFactory -@#(1286,446)Generator -@@Generator -+0Onearatinn1 )\ -@#(486,386)GeneratorFacade -@@GeneratorFacade -+Operation1() -+Operation2() -+Operation3() -+Operation4() -+0Onaratinn&N -@#(1262,157)y -@null@null@#(462,137)4 -@null@null@#(1246,46)GeneratorControl -@GeneratorControl -@@#(446,26)GeneratorPropoerties -@GeneratorPropoerties -@@# \ No newline at end of file +(181,391)SqlFacroty +@+ Operation1(): int +@null@GeneratorPropert +%SqlFacroty +%依赖¥#(26,389)TableFactory +@+ Operation1(): int +@null@GeneratorFacade +%TableFactory +%依赖¥#(365,394)JavaClass +@null@null@GeneratorFacade +%JavaClass +%继承¥#(461,218)Generaoty +@+ Operation1(: int ++ Operstion2(: int +@null@Generaoty +%GeneratorControl +%继承¥GeneratorFacade +%Generaoty +%依赖¥#(188,194)GeneratorFacade +@- Atributen: int +© hwibutez it +© hioute: it +© aibutas: it +© aibutes it + Atwibutes: int +@null@GeneratorFacade +%JavaClass +%继承¥GeneratorFacade +%TableFactory +%依赖¥GeneratorFacade +%Generaoty +%依赖¥#(467,51)GeneratorControl +@null@null@Generaoty +%GeneratorControl +%继承¥#(190,37)GeneratorPropert +@null@null@GeneratorPropert +%SqlFacroty +%依赖¥# \ No newline at end of file diff --git a/src/main/resources/cd/bojoer_loadui.txt b/src/main/resources/cd/bojoer_loadui.txt index 46210e4b0d65b1b775841db7111329aba73013c9..5589ef78f6b2b82d72d81ec0d8dfd2c29955135f 100644 --- a/src/main/resources/cd/bojoer_loadui.txt +++ b/src/main/resources/cd/bojoer_loadui.txt @@ -39,4 +39,61 @@ +Operation2() +Operation3() +0OnaratinnA -@# \ No newline at end of file +@#(348,628)DataPoint +@+ Operation1(: int ++ Operstion2(: int +@null@#(346,404)Statistic. +@+ Operation1(: int ++ Operstion2(: int ++ Operstion3( int ++ Operstiona(: int ++ Operstions(): int ++ Operstions) int ++ Operation7() int +@null@StaticsVariable +%Statistic. +%继承¥#(26,228)StaticsWriter +@+ Opesationt(): int ++ Operstion2(: int ++ Operstion3(: int ++ Operstiona( int ++ Operstions(: int ++ Operstions(: int ++ Operstion?(: int ++ Operstions(: int ++ Operation() int +@null@StaticsWriter +%StaticsVariable +%依赖¥StaticsWriter +%StaticManager +%依赖¥StaticsVariable +%StaticsWriter +%依赖¥#(348,220)StaticsVariable +@+ Operation1(: int ++ Operstion2(: int ++ Operstion3( int ++ Operstiona(: int ++ Operstions(): int ++ Operation8(): int +@null@StaticsVariable +%Statistic. +%继承¥StaticsVariable +%StaticsWriter +%依赖¥StaticsWriter +%StaticsVariable +%依赖¥#(350,52)StaticHolder +@+ Operation1(: int ++ Operstion2(: int +@null@StaticManager +%StaticHolder +%继承¥#(27,37)StaticManager +@+ Operation1(: int ++ Operstion2(: int ++ Operstion3( int ++ Operstiona(: int ++ Operations() int +@null@StaticManager +%StaticHolder +%继承¥StaticsWriter +%StaticManager +%依赖¥# \ No newline at end of file diff --git a/src/main/resources/cd/cd-C204-242-DJSMT_Assignment-1.png b/src/main/resources/cd/cd-C204-242-DJSMT_Assignment-1.png index bc98bd433e872b6d0cf9cf7e395cf10cefdb6272..a3742c5c74a2b2577c5332657593e4e96fd69cd2 100644 Binary files a/src/main/resources/cd/cd-C204-242-DJSMT_Assignment-1.png and b/src/main/resources/cd/cd-C204-242-DJSMT_Assignment-1.png differ diff --git a/src/main/resources/cd/cd-alexasahis_km2.png b/src/main/resources/cd/cd-alexasahis_km2.png index be52fede069055baa214f212fa981e9bb8c3cea8..359155696cfdd1b2c378e3e51d0bbfed04b56383 100644 Binary files a/src/main/resources/cd/cd-alexasahis_km2.png and b/src/main/resources/cd/cd-alexasahis_km2.png differ diff --git a/src/main/resources/cd/cd-badqiu_rapid-framework.png b/src/main/resources/cd/cd-badqiu_rapid-framework.png index 612ad97aba5d9373af520b1adbeaef15343f410d..701dc441095b5e5b9766c848082082171b1d927e 100644 Binary files a/src/main/resources/cd/cd-badqiu_rapid-framework.png and b/src/main/resources/cd/cd-badqiu_rapid-framework.png differ diff --git a/src/main/resources/cd/cd-bojoer_loadui.png b/src/main/resources/cd/cd-bojoer_loadui.png index eec452bc76f7e4d8cc69ef4bffd1f087ebc72fa5..6570a084894769fa4f1da6209ac22f7b0171bd82 100644 Binary files a/src/main/resources/cd/cd-bojoer_loadui.png and b/src/main/resources/cd/cd-bojoer_loadui.png differ diff --git a/src/main/resources/cd/cd-emeric254_Java-STRI-S4.png b/src/main/resources/cd/cd-emeric254_Java-STRI-S4.png index a2bfb2faad38ff756130304df47defb0b979d15a..07ba9483da9aaf00061d3408319ce82a35a20eeb 100644 Binary files a/src/main/resources/cd/cd-emeric254_Java-STRI-S4.png and b/src/main/resources/cd/cd-emeric254_Java-STRI-S4.png differ diff --git a/src/main/resources/cd/emeric254_Java-STRI-S4.txt b/src/main/resources/cd/emeric254_Java-STRI-S4.txt index 8aa5a8d1dcc3da0dcc342fc323155af156f291b6..41abd372699a9f9d2001804f1f68d91a8a76cde3 100644 --- a/src/main/resources/cd/emeric254_Java-STRI-S4.txt +++ b/src/main/resources/cd/emeric254_Java-STRI-S4.txt @@ -230,4 +230,208 @@ ion12() ion13() ion14() ion15() -@null@null@# \ No newline at end of file +@null@null@#(382,784)Server +@+ gafsf(): int +sl int +@@#(506,781)CarrieValiditor +@+ fasdfsd(): int ++ saafrint +@@#(252,779)AppClient +@+ asdfsa() int +- dtetalint +@@#(748,755)JSONLoader +@+ adsfsdaf() int +=+ ssatasat) int +Lo +@@#(885,753)JSONValidator +@+ adsfsadf() int +=+ ssassat) int +Lo +@@#(881,611)HDSHasher +@+ sl int +sl int +Lo +@@#(748,611)HMUtilitues +@+ adfasdf(): int +=+ sdstasa) int ++ sastssat): int ++ sadfsadf() int +@@#(827,405)SeveriAmmurie +@+ adfasd() int +=+ ssatas) int +st int +~ satesalint +L safasafy int +@null@SeveriAmmurie +%Ammuries +%继承¥#(213,351)ClientAmmurie +@+ adfastd() int ++ sdsadfas( in + aastesalint +=+ ssatasaf): int +=+ ssatseat]: int ++ ssatseat] int ++ ssatseat] int +=+ ssatseat]: int +P ++ sitascl; int +@null@M +%ClientAmmurie +%继承¥Client +%ClientAmmurie +%实现¥#(401,343)M +@+ asdfesdfsaf(): int +@null@M +%utiliSateru +%继承¥M +%ClientAmmurie +%继承¥#(596,313)utiliSateru +@+ Asts) int ++ 1sagin ++ tscs(eint +- sz int + ++ st + satase(; int +~ sateact(; int +~ sateast(: int +P +P + sastasat) int + sastasat) int ++ sastasat) int ++ ssaint + +=+ ssatasal int + ssatasat) int + ssatasat) int +=+ ssatseat]: int ++ ssatseat] int +=+ ssatseat] int + castasat) int +- fasa)- int + fesctalint ++ stagin + satasat) int +e int + satasel; int +st int ++ xigint + ++ stis) int +@null@M +%utiliSateru +%继承¥Ammuries +%utiliSateru +%继承¥ControllerProtociAmmurie +%utiliSateru +%继承¥#(26,221)ProtocolAmmuries +@<+ spiint + ++ st + +=+ sdtasa) int + sataset(; int +- satasst(: int ++ sasadta(yint ++ sasag: int +=+ sdstasat): int +sl int +=+ sastssat) int +=+ ssatasaf) int +=+ ssatasa) int +=+ ssatasa) int ++ ssatestl) it +- ssagint +st int +P +st int +P +ot int +ol int +~ afactalt int ++ abaaisa) int +~ csacaliint + fasatasa) int +< tasateat int ++ et int ++ sedint + +- saarin + +- saaint + ++ sedtagint ++ sedtasat int ++ sedtasa]: int ++ sedtasa]: int ++ sedsat] int ++ safasal) int ++ safasal) int +st int ++ sitascl; int +@@#(208,181)Client +@+ adfsadf(): int +st int +Lo +@null@Client +%ClientAmmurie +%实现¥#(569,45)ControllerProtociAmmurie +@+ adfasdf(): int + sataset(; int +~ sdteast(: int +© asdfascfly int +@null@ControllerProtociAmmurie +%utiliSateru +%继承¥ControllerProtociAmmurie +%Ammuries +%继承¥ControllerProtociAmmurie +%ControllerProtoct +%继承¥#(826,43)Ammuries +@+ adfasdf(): int + sataset(: int ++ sastrint + +- sdstasa): int +- sdstasa) int +=+ sdstasaf) int +- sastsedt]: int +=+ ssatasaf) int +=+ ssatasaf) int +st int ++ ssatseat) int +- ssatseat): int +=+ sl int + +st int ++ safsa(): int +@null@Ammuries +%utiliSateru +%继承¥SeveriAmmurie +%Ammuries +%继承¥ControllerProtociAmmurie +%Ammuries +%继承¥#(379,41)ControllerProtoct +@+ adfas() int +=+ safasa) int +=+ stasag:int +- ssatag int +=+ ssatasat): int +P +- fasa): int +~ tasatasal) int ++ sctasd(: int +@null@ClientHandier +%ControllerProtoct +%依赖¥ControllerProtociAmmurie +%ControllerProtoct +%继承¥#(28,37)ClientHandier +@+ asda(; int ++ ssdas(yint ++ st + +<+ sadai) int ++ sdasd(: int +@null@ClientHandier +%ControllerProtoct +%依赖¥# \ No newline at end of file diff --git a/src/main/resources/cd/temp result.png b/src/main/resources/cd/temp result.png index f6d466c33b15c95e760c1d647c033600c3b06eb0..0dc87447b2f8ca34540b52902217acfeb1732ef8 100644 Binary files a/src/main/resources/cd/temp result.png and b/src/main/resources/cd/temp result.png differ