/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 8 ĠM ak oto ĠConsult ing ĠGroup ĠInc Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . mak ot ogo . learn . kotlin Ċ Ċ import Ġcom . mak ot ogo . learn . kotlin . controller . process Guest Ċ import Ġcom . mak ot ogo . learn . kotlin . controller . process Person Ċ import Ġcom . mak ot ogo . learn . kotlin . controller . process Worker Ċ import Ġcom . mak ot ogo . learn . kotlin . model . Guest Ċ import Ġcom . mak ot ogo . learn . kotlin . model . Person Ċ import Ġcom . mak ot ogo . learn . kotlin . model . Worker Ċ import Ġcom . mak ot ogo . learn . kotlin . util . generate Random Family Name Ċ import Ġcom . mak ot ogo . learn . kotlin . util . generate Random Given Name Ċ import Ġcom . mak ot ogo . learn . kotlin . util . generate Random Purpose Ċ import Ġcom . mak ot ogo . learn . kotlin . util . generate Random Tax Id Number Ċ import Ġcom . mak ot ogo . learn . kotlin . util . generate Random Year Month Day Triple Ċ import Ġcom . mak ot ogo . learn . kotlin . util . to LocalDate Ċ import Ġjava . time . LocalDate Ċ Ċ /** Ċ Ġ* ĠSimple ĠPerson Ġinstantiation Ġdemo Ċ Ġ*/ Ċ fun Ġinstantiate Person () Ġ{ ĊĠĠĠ Ġprintln (" ******** ** Ġinstantiate Person () Ġ********* * ") ĊĠĠĠ Ġprintln (" Calling ĠPerson () Ġconstructor ") ĊĠĠĠ Ġval Ġperson Ġ= ĠPerson ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfamily Name Ġ= Ġ" J ones ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven Name Ġ= Ġ" Mi ke ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate OfBirth Ġ= ĠLocalDate . of ( 1 9 8 0 , Ġ 2 , Ġ 3 )) ĊĊĠĠĠ Ġprintln (" Person : Ġ$ person ") Ċ } Ċ Ċ /** Ċ Ġ* ĠBetter ĠPerson Ġinstantiation Ġdemo , Ġcomplete Ġwith Ċ Ġ* Ġrandom Ġattribute Ġvalues . Ċ Ġ*/ Ċ private Ġfun Ġbetter Person Instantiation () Ġ{ ĊĠĠĠ Ġprintln (" ******** ** Ġbetter Person Instantiation () Ġ********* * ") ĊĠĠĠ Ġ// ĠGenerate Ġrandom Ġattribute Ġvalues ĊĠĠĠ Ġval Ġfamily Name Ġ= Ġgenerate Random Family Name () ĊĠĠĠ Ġval Ġgiven Name Ġ= Ġgenerate Random Given Name () ĊĠĠĠ Ġval Ġdate OfBirth Ġ= Ġgenerate Random Year Month Day Triple (). to LocalDate () ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠCreate Ġa ĠPerson Ġobject Ġwith Ġrandom Ġattribute Ġvalues ĊĠĠĠ Ġ// ĠInvoke Ġprimary Ġconstructor ĊĠĠĠ Ġprintln (" Calling ĠPerson () Ġconstructor ") ĊĠĠĠ Ġval Ġperson Ġ= ĠPerson ( family Name , Ġgiven Name , Ġdate OfBirth ) ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠNow Ġprocess Ġthat ĠPerson Ġobject ĊĠĠĠ Ġprocess Person ( person ) Ċ } Ċ Ċ fun Ġinstantiate Worker () Ġ{ ĊĠĠĠ Ġprintln (" ******** ** Ġinstantiate Worker () Ġ********* * ") ĊĠĠĠ Ġ// ĠGenerate Ġrandom Ġattribute Ġvalues ĊĠĠĠ Ġval Ġfamily Name Ġ= Ġgenerate Random Family Name () ĊĠĠĠ Ġval Ġgiven Name Ġ= Ġgenerate Random Given Name () ĊĠĠĠ Ġval Ġdate OfBirth Ġ= Ġgenerate Random Year Month Day Triple (). to LocalDate () ĊĠĠĠ Ġval Ġtax Id Number Ġ= Ġgenerate Random Tax Id Number () ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠCreate Ġa ĠWorker Ġobject Ġwith Ġrandom Ġattribute Ġvalues ĊĠĠĠ Ġ// ĠInvoke Ġprimary Ġconstructor ĊĠĠĠ Ġprintln (" Calling ĠWorker () Ġconstructor ") ĊĠĠĠ Ġval Ġworker Ġ= ĠWorker ( family Name , Ġgiven Name , Ġdate OfBirth , Ġtax Id Number ) ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠNow Ġprocess Ġthat ĠWorker Ġobject ĊĠĠĠ Ġprocess Worker ( worker ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate Ġa ĠGuest Ġobject Ċ Ġ*/ Ċ fun Ġinstantiate Guest () Ġ{ ĊĠĠĠ Ġprintln (" ******** ** Ġinstantiate Guest () Ġ********* * ") ĊĠĠĠ Ġ// ĠGenerate Ġrandom Ġattribute Ġvalues ĊĠĠĠ Ġval Ġfamily Name Ġ= Ġgenerate Random Family Name () ĊĠĠĠ Ġval Ġgiven Name Ġ= Ġgenerate Random Given Name () ĊĠĠĠ Ġval Ġdate OfBirth Ġ= Ġgenerate Random Year Month Day Triple (). to LocalDate () ĊĠĠĠ Ġval Ġtax Id Number Ġ= Ġgenerate Random Tax Id Number () ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠCreate Ġa ĠGuest Ġ- Ġinvoke Ġsecondary Ġconstructor ĊĠĠĠ Ġprintln (" Calling ĠGuest () Ġconstructor ") ĊĠĠĠ Ġval Ġguest Ġ= ĠGuest ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfamily Name Ġ= Ġfamily Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven Name Ġ= Ġgiven Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate OfBirth Ġ= Ġdate OfBirth , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtax Id Number Ġ= Ġtax Id Number , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpurpose Ġ= Ġgenerate Random Purpose () ĊĠĠĠ Ġ) ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠNow Ġprocess Ġthat ĠGuest Ġobject ĊĠĠĠ Ġprocess Guest ( guest ) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠThe Ġub i quit ous Ġmain Ġfunction . ĠWe Ġmeet Ġagain . Ċ Ġ*/ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĊĠĠĠ Ġ// ĠBasic Ġinstantiation ĊĠĠĠ Ġinstantiate Person () ĊĊĠĠĠ Ġ// ĠA Ġbetter Ġinstantiation Ġof ĠPerson ĊĠĠĠ Ġbetter Person Instantiation () ĊĊĠĠĠ Ġ// ĠInstantiate ĠWorker ĊĠĠĠ Ġinstantiate Worker () ĊĊĠĠĠ Ġ// ĠInstantiate Ġa ĠGuest ĊĠĠĠ Ġinstantiate Guest () Ċ Ċ } ĊĊ