lutaml / lutaml-uml

UML module for LutaML
2 stars 2 forks source link

UML syntax: Association generalization #25

Open ronaldtse opened 4 years ago

ronaldtse commented 4 years ago

Association generalization

Screen Shot 2020-08-05 at 2 12 34 AM

Proposal:

class Employees
class Company
class MyCompany {
  generalization Company
}

association "CompanyHasEmployees" {
  direct Company Employees.+employee[1..*]
}

association "MyCompanyHasEmployees" {
  generalization CompanyHasEmployees
}

association {
  direct MyCompany (redefines employee) Employees.+me
}
w00lf commented 4 years ago

association "CompanyHasEmployees" { direct Company Employees.+employee[1..*] }

association "MyCompanyHasEmployees" { generalization CompanyHasEmployees }

It seems that all these associations can be defined with attribute syntax:

class Company {
  +employee Employees[1..*]
}
class MyCompany {
  +me Employees{redefines employee}
}

Why do we need:

association "MyCompanyHasEmployees" {
  generalization CompanyHasEmployees
}

In order to draw this additional generalization line?

ronaldtse commented 4 years ago

Maybe you're right. But how does this line:

  +me Employees{redefines employee}

know that {redefines employees} points to the relationship defined as:

class Company {
  +employee Employees[1..*]
}

?

I guess we can find that employee is an attribute of Employees.

Great idea! :+1: