@@ -0,0 +1,77 @@
1+[38;2;248;248;242minterface [0m[3;38;2;102;217;239mDisplay[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
2+[38;2;248;248;242m [0m[3;38;2;102;217;239mString[0m[38;2;248;248;242m [0m[38;2;248;248;242masText[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m
3+[38;2;248;248;242m}[0m
4+
5+[38;2;248;248;242mtrait [0m[3;38;2;102;217;239mEntity[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
6+[38;2;248;248;242m [0m[3;38;2;102;217;239mInteger[0m[38;2;248;248;242m id[0m
7+[38;2;248;248;242m}[0m
8+
9+[3;38;2;102;217;239mclass[0m[38;2;248;248;242m [0m[38;2;166;226;46mProduct[0m[38;2;248;248;242m [0m[38;2;249;38;114mimplements[0m[38;2;248;248;242m [0m[3;4;38;2;166;226;46mEntity[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;4;38;2;166;226;46mDisplay[0m[38;2;248;248;242m {[0m
10+[38;2;248;248;242m [0m[38;2;249;38;114mpublic[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mString[0m[38;2;248;248;242m name[0m
11+[38;2;248;248;242m [0m[38;2;249;38;114mpublic[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mBoolean[0m[38;2;248;248;242m available[0m
12+[38;2;248;248;242m [0m[38;2;249;38;114mpublic[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mFloat[0m[38;2;248;248;242m price[0m
13+
14+[38;2;248;248;242m [0m[38;2;249;38;114mprivate[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mString[0m[38;2;248;248;242m key[0m
15+[38;2;248;248;242m [0m[38;2;249;38;114mprotected[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mString[0m[38;2;248;248;242m data[0m
16+
17+[38;2;248;248;242m [0m[38;2;117;113;94m/**[0m
18+[38;2;117;113;94m [0m[38;2;117;113;94m*[0m[38;2;117;113;94m Creates a new product instance.[0m
19+[38;2;117;113;94m [0m[38;2;117;113;94m*[0m[38;2;117;113;94m [0m[38;2;249;38;114m@[0m[38;2;249;38;114mparam[0m[38;2;117;113;94m [0m[3;38;2;253;151;31mid[0m[38;2;117;113;94m Product ID.[0m
20+[38;2;117;113;94m [0m[38;2;117;113;94m*[0m[38;2;117;113;94m [0m[38;2;249;38;114m@[0m[38;2;249;38;114mparam[0m[38;2;117;113;94m [0m[3;38;2;253;151;31mname[0m[38;2;117;113;94m Product name.[0m
21+[38;2;117;113;94m [0m[38;2;117;113;94m*[0m[38;2;117;113;94m [0m[38;2;249;38;114m@[0m[38;2;249;38;114mparam[0m[38;2;117;113;94m [0m[3;38;2;253;151;31mavailable[0m[38;2;117;113;94m Product availability.[0m
22+[38;2;117;113;94m [0m[38;2;117;113;94m*[0m[38;2;117;113;94m [0m[38;2;249;38;114m@[0m[38;2;249;38;114mparam[0m[38;2;117;113;94m [0m[3;38;2;253;151;31mprice[0m[38;2;117;113;94m Product price.[0m
23+[38;2;117;113;94m [0m[38;2;117;113;94m*[0m[38;2;117;113;94m [0m[38;2;249;38;114m@[0m[38;2;249;38;114mparam[0m[38;2;117;113;94m [0m[3;38;2;253;151;31mkey[0m[38;2;117;113;94m Product key.[0m
24+[38;2;117;113;94m [0m[38;2;117;113;94m*[0m[38;2;117;113;94m [0m[38;2;249;38;114m@[0m[38;2;249;38;114mparam[0m[38;2;117;113;94m [0m[3;38;2;253;151;31mdata[0m[38;2;117;113;94m Product internal data.[0m
25+[38;2;117;113;94m [0m[38;2;117;113;94m*/[0m
26+[38;2;248;248;242m [0m[38;2;166;226;46mProduct[0m[38;2;248;248;242m([0m[3;38;2;253;151;31mid[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;253;151;31mname[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;253;151;31mavailable[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;253;151;31mprice[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;253;151;31mkey[0m[38;2;248;248;242m = "[0m[3;38;2;253;151;31mkey[0m[38;2;248;248;242m"[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;253;151;31mdata[0m[38;2;248;248;242m = "[0m[3;38;2;102;217;239mint[0m[3;38;2;253;151;31mernal[0m[38;2;248;248;242m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m {[0m
27+[38;2;248;248;242m [0m[38;2;255;255;255mthis[0m[38;2;248;248;242m.[0m[38;2;248;248;242mid [0m[38;2;249;38;114m=[0m[38;2;248;248;242m id[0m
28+[38;2;248;248;242m [0m[38;2;255;255;255mthis[0m[38;2;248;248;242m.[0m[38;2;248;248;242mname [0m[38;2;249;38;114m=[0m[38;2;248;248;242m name[0m
29+[38;2;248;248;242m [0m[38;2;255;255;255mthis[0m[38;2;248;248;242m.[0m[38;2;248;248;242mavailable [0m[38;2;249;38;114m=[0m[38;2;248;248;242m available[0m
30+[38;2;248;248;242m [0m[38;2;255;255;255mthis[0m[38;2;248;248;242m.[0m[38;2;248;248;242mprice [0m[38;2;249;38;114m=[0m[38;2;248;248;242m price[0m
31+[38;2;248;248;242m [0m[38;2;255;255;255mthis[0m[38;2;248;248;242m.[0m[38;2;248;248;242mkey [0m[38;2;249;38;114m=[0m[38;2;248;248;242m key[0m
32+[38;2;248;248;242m [0m[38;2;255;255;255mthis[0m[38;2;248;248;242m.[0m[38;2;248;248;242mdata [0m[38;2;249;38;114m=[0m[38;2;248;248;242m data[0m
33+[38;2;248;248;242m }[0m
34+
35+[38;2;248;248;242m [0m[38;2;117;113;94m/**[0m[38;2;117;113;94m@[0m
36+[38;2;117;113;94m * Returns product data as text.[0m
37+[38;2;117;113;94m [0m[38;2;117;113;94m*[0m[38;2;117;113;94m [0m[38;2;249;38;114m@[0m[38;2;249;38;114mreturn[0m[38;2;117;113;94m Data string.[0m
38+[38;2;117;113;94m [0m[38;2;117;113;94m*/[0m
39+[38;2;248;248;242m [0m[3;38;2;102;217;239mString[0m[38;2;248;248;242m [0m[38;2;166;226;46masText[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m {[0m
40+[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m [0m[38;2;230;219;116m"""[0m[38;2;230;219;116mID [[0m[38;2;230;219;116m${[0m[38;2;230;219;116mid[0m[38;2;230;219;116m}[0m[38;2;230;219;116m] Name [[0m[38;2;230;219;116m${[0m[38;2;230;219;116mname[0m[38;2;230;219;116m}[0m[38;2;230;219;116m] Available [[0m[38;2;230;219;116m${[0m[38;2;230;219;116mavailable[0m[38;2;230;219;116m}[0m[38;2;230;219;116m] Price [[0m[38;2;230;219;116m${[0m[38;2;230;219;116mprice[0m[38;2;230;219;116m}[0m[38;2;230;219;116m][0m[38;2;230;219;116m"""[0m
41+[38;2;248;248;242m }[0m
42+[38;2;248;248;242m}[0m
43+
44+[38;2;117;113;94m/*[0m[38;2;117;113;94m Creates a new product instance [0m[38;2;117;113;94m*/[0m
45+[3;38;2;102;217;239mdef[0m[38;2;248;248;242m product [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mnew[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mProduct[0m[38;2;248;248;242m([0m[38;2;190;132;255m1[0m[38;2;248;248;242m, [0m[38;2;230;219;116m"[0m[38;2;230;219;116mT-Shirt[0m[38;2;230;219;116m"[0m[38;2;248;248;242m, [0m[38;2;190;132;255mtrue[0m[38;2;248;248;242m, [0m[38;2;190;132;255m15.00[0m[38;2;248;248;242m)[0m
46+
47+[38;2;102;217;239mprintln[0m[38;2;248;248;242m(product[0m[38;2;248;248;242m.[0m[38;2;248;248;242masText[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m
48+
49+[38;2;248;248;242mproduct[0m[38;2;248;248;242m.[0m[38;2;248;248;242mavailable [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255mfalse[0m
50+[38;2;248;248;242mproduct[0m[38;2;248;248;242m.[0m[38;2;248;248;242mprice [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0.0[0m
51+
52+[38;2;117;113;94m//[0m[38;2;117;113;94m Check values[0m
53+[38;2;249;38;114massert[0m[38;2;248;248;242m product[0m[38;2;248;248;242m.[0m[38;2;248;248;242masText[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m==[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mID [1] Name [T-Shirt] Available [false] Price [0.0][0m[38;2;230;219;116m"[0m
54+
55+[3;38;2;102;217;239mdef[0m[38;2;248;248;242m [0m[38;2;166;226;46mfactorial[0m[38;2;248;248;242m([0m[3;38;2;102;217;239mInteger[0m[38;2;248;248;242m [0m[3;38;2;253;151;31mvalue[0m[38;2;248;248;242m)[0m[38;2;248;248;242m {[0m
56+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m (value [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m) [0m[38;2;248;248;242m{[0m
57+[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m
58+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
59+[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m value [0m[38;2;249;38;114m*[0m[38;2;248;248;242m [0m[38;2;248;248;242mfactorial[0m[38;2;248;248;242m([0m[38;2;248;248;242mvalue [0m[38;2;249;38;114m-[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m)[0m
60+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
61+[38;2;248;248;242m}[0m
62+
63+[38;2;249;38;114massert[0m[38;2;248;248;242m [0m[38;2;248;248;242mfactorial[0m[38;2;248;248;242m([0m[38;2;190;132;255m5[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m==[0m[38;2;248;248;242m [0m[38;2;190;132;255m120[0m
64+
65+[38;2;249;38;114mstatic[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mString[0m[38;2;248;248;242m [0m[38;2;166;226;46mjoin[0m[38;2;248;248;242m([0m[3;38;2;102;217;239mList<String>[0m[38;2;248;248;242m [0m[3;38;2;253;151;31mlist[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mString[0m[38;2;248;248;242m [0m[3;38;2;253;151;31mseparator[0m[38;2;248;248;242m)[0m[38;2;248;248;242m {[0m
66+[38;2;248;248;242m [0m[3;38;2;102;217;239mString[0m[38;2;248;248;242m data [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m"[0m
67+
68+[38;2;248;248;242m list[0m[38;2;248;248;242m.[0m[38;2;248;248;242meach [0m[38;2;248;248;242m{[0m[38;2;248;248;242m item [0m[38;2;249;38;114m->[0m
69+[38;2;248;248;242m data [0m[38;2;249;38;114m+[0m[38;2;249;38;114m=[0m[38;2;248;248;242m item [0m[38;2;249;38;114m+[0m[38;2;248;248;242m separator[0m
70+[38;2;248;248;242m [0m[38;2;248;248;242m}[0m
71+
72+[38;2;248;248;242m data [0m[38;2;249;38;114m=[0m[38;2;248;248;242m data[0m[38;2;248;248;242m.[0m[38;2;248;248;242msubstring[0m[38;2;248;248;242m([0m[38;2;190;132;255m0[0m[38;2;248;248;242m,[0m[38;2;248;248;242m data[0m[38;2;248;248;242m.[0m[38;2;248;248;242mlength[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m-[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m)[0m
73+
74+[38;2;248;248;242m [0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m data[0m
75+[38;2;248;248;242m}[0m
76+
77+[38;2;249;38;114massert[0m[38;2;248;248;242m [0m[38;2;248;248;242mjoin[0m[38;2;248;248;242m([0m[38;2;248;248;242m[[0m[38;2;230;219;116m"[0m[38;2;230;219;116mg[0m[38;2;230;219;116m"[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mr[0m[38;2;230;219;116m"[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mo[0m[38;2;230;219;116m"[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mo[0m[38;2;230;219;116m"[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mv[0m[38;2;230;219;116m"[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116my[0m[38;2;230;219;116m"[0m[38;2;248;248;242m][0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m [0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m==[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mg r o o v y[0m[38;2;230;219;116m"[0m