package Ġio . sch in zel . data _ types Ċ Ċ /** Ċ Ġ* ĠThe Ġpurpose Ġof Ġthis Ġclass Ġis Ġto Ġbe Ġextended Ġto Ġbe Ġfor Ġexample Ġa Ġfirst Ġname Ġor Ġa Ġdescription Ċ Ġ*/ Ċ abstract Ġclass ĠAbstract String Ġprotected Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġstring : ĠString , ĊĠĠĠĠĠĠĠ Ġprotected Ġval Ġcan Be Empty : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġprotected Ġval Ġmin Length : ĠInt , ĊĠĠĠĠĠĠĠ Ġprotected Ġval ĠmaxLength : ĠInt , ĊĠĠĠĠĠĠĠ Ġprotected Ġval Ġforbidden Characters : ĠList < String > Ġ= ĠlistOf ("< ", Ġ"> ", Ġ"'", Ġ"; ", Ġ"& ", Ġ"| ") Ċ ) Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! can Be Empty Ġ&& Ġstring . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ( CAN NOT _ BE _ EMPTY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( string . length Ġ> ĠmaxLength ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ("$ TOO _ LONG . ĠWas Ġ${ string . length } Ġand Ġmax Ġlength Ġis Ġ$ maxLength ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( string . length Ġ< Ġmin Length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ("$ TOO _ SHORT . ĠWas Ġ${ string . length } Ġand Ġmin Ġlength Ġis Ġ$ min Length ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( for bidden Characters . any Ġ{ Ġstring . contains ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerr ("$ CONTAIN S _ FOR BID DEN _ CHARS . ĠFor bidden Ġcharacters Ġare Ġ$ for bidden Characters ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr (" Error Ġcreating Ġstring . ĠString Ġwas Ġ'$ string '. ĠError : Ġ${ e . message }. ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠCAN NOT _ BE _ EMPTY Ġ= Ġ" String Ġcannot Ġbe Ġempty " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠTO O _ LONG Ġ= Ġ" String Ġto Ġlong " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠTO O _ SHORT Ġ= Ġ" String Ġto Ġshort " ĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠCON TA INS _ FOR BID DEN _ CHARS Ġ= Ġ" String Ġcontains Ġforbidden Ġcharacters " ĊĠĠĠ Ġ} Ċ } ĊĊĊĊĊ