package Ġdomain ĊĊ Ċ class ĠMaterial Item Ġ{ ĊĠĠĠ Ġvar Ġid Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġraw Material : ĠMaterial ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġdepartment : ĠDepartment ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġpercent Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġraw Material Ġ= ĠMaterial () ĊĠĠĠĠĠĠĠ Ġdepartment Ġ= ĠDepartment () ĊĠĠĠĠĠĠĠ Ġpercent Ġ= Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( material Item : ĠMaterial Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcopy From ( material Item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcopy From ( material Item : ĠMaterial Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġmaterial Item . id ĊĠĠĠĠĠĠĠ Ġraw Material Ġ= Ġmaterial Item . raw Material ĊĠĠĠĠĠĠĠ Ġdepartment Ġ= Ġmaterial Item . department ĊĠĠĠĠĠĠĠ Ġpercent Ġ= Ġmaterial Item . percent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdepartment !!. name !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprime Ġ= Ġ 3 1 ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġid ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( obj : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġobj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( this . java Class Ġ!= Ġobj . java Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġother Ġ= Ġobj Ġas ĠMaterial Item ĊĠĠĠĠĠĠĠ Ġreturn Ġid Ġ== Ġother . id ĊĠĠĠ Ġ} Ċ } Ċ