DEV Community

Lumin
Lumin

Posted on

8 3

UML Class Association Explain with Code

Short note about relation in UML class diagram.

Relation and Dependency

Image description

Can turn into TS code like this



class Address {}

class Food {}

class People {
  // for this line People has relation with Address 
  address: Address
  heart: Heart

  // for this line People has dependency with Food
  eat(food: Food) {}
}


Enter fullscreen mode Exit fullscreen mode

Aggregation and Composition

Image description

Can turn into TS code like this



class Heart {}

class People {
  heart: Heart

  constructor () {
    // for this line People has composition with Heart
    this.heart = new Heart()
  }
}

class PeopleGroup {
  peoples: People[]

  // for this line PeopleGroup has aggregation with (alot of) People
  constructor (peoples: People[]) {
    this.peoples = peoples
  }
}


Enter fullscreen mode Exit fullscreen mode

Generalization and Realization

Image description

Can turn into TS code like this



class Animal {}

interface Eatting {
  eat(food: Food): void
}

class People 
  // for this line People is extends (generalization) from Animal
  extends Animal
  // for this line People is implement (realization) from Eatting
  implements Eatting {
  // ...
}


Enter fullscreen mode Exit fullscreen mode
Retry later

Top comments (2)

Collapse
 
christophe profile image
Christophe T

Nice article. Well done !
Just one remark: shared aggregation (white diamond) does not necessarily imply that there are lots of objects. In fact, UML no longer adds any meaning for shared aggregation compared to a simple association. Wouldn't multiplicity notation (e.g. * on the People end of an association) allow to unambiguously tell that there are many ?

Collapse
 
ilumin profile image
Lumin

Thank you for feedback. Agreed, we should use notation for that use case.

Retry later
👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay