package Ġcomposite Pattern . classes Ċ Ċ import Ġcomposite Pattern . abstract _ classes . Song Component Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġthe Ġsong Ġgroup Ġmodel Ġclass Ċ Ġ* Ġ@ author ĠMel ch ior ĠV ro lijk Ċ Ġ*/ Ċ data Ġclass ĠSong Group ( val ĠgroupName : String , Ġval Ġgroup Description : String ) Ġ: ĠSong Component () Ċ { ĊĠĠĠ Ġval Ġsong Components Ġ= ĠArrayList < Song Component >() ĊĊĠĠĠ Ġ// region ĠAdd ĊĠĠĠ Ġoverride Ġfun Ġadd ( song Component : ĠSong Component ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsong Components . add ( song Component ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠRemove ĊĠĠĠ Ġoverride Ġfun Ġremove ( song Component : ĠSong Component ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsong Components . remove ( song Component ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠGet Ġcomponent ĊĠĠĠ Ġoverride Ġfun Ġget Component ( index : ĠInt ): ĠSong Component ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsong Components [ index ] ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region ĠDisplay Ġsong Ġinfo ĊĠĠĠ Ġoverride Ġfun Ġdisplay Song Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ("$ groupName Ġ$ group Description \ n ") ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( song Component Ġin Ġsong Components ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsong Component . display Song Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// endregion Ċ }