From 2a8dc938afd304f9e723d49e211b7b95c3130db2 Mon Sep 17 00:00:00 2001 From: Alim Date: Sat, 21 Oct 2023 14:32:44 +0600 Subject: [PATCH 1/2] task1 --- .../java/main/task_1/solution/Main.class | Bin 0 -> 1644 bytes .../main/task_1/solution/TimeMachine.class | Bin 0 -> 1753 bytes .../task_1/solution/TimeTravelException.class | Bin 0 -> 381 bytes .../main/task_1/solution/TimeTraveler.class | Bin 0 -> 742 bytes .../compileJava/previous-compilation-data.bin | Bin 0 -> 285 bytes src/main/java/task_1/solution/Main.java | 17 ++++++++++ .../java/task_1/solution/TimeMachine.java | 29 ++++++++++++++++++ .../task_1/solution/TimeTravelException.java | 7 +++++ .../java/task_1/solution/TimeTraveler.java | 25 +++++++++++++++ 9 files changed, 78 insertions(+) create mode 100644 build/classes/java/main/task_1/solution/Main.class create mode 100644 build/classes/java/main/task_1/solution/TimeMachine.class create mode 100644 build/classes/java/main/task_1/solution/TimeTravelException.class create mode 100644 build/classes/java/main/task_1/solution/TimeTraveler.class create mode 100644 build/tmp/compileJava/previous-compilation-data.bin create mode 100644 src/main/java/task_1/solution/Main.java create mode 100644 src/main/java/task_1/solution/TimeMachine.java create mode 100644 src/main/java/task_1/solution/TimeTravelException.java create mode 100644 src/main/java/task_1/solution/TimeTraveler.java diff --git a/build/classes/java/main/task_1/solution/Main.class b/build/classes/java/main/task_1/solution/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..0c7e5c0436fe5413f23a0a20061e2c4a3519d987 GIT binary patch literal 1644 zcmaJ>-*Z|;6#f=S7B0k;G--`VYucufl(v{QS`9VEVq>Y0Mq%P~d~h~ohui}9GTckX zy!q&#;G2)WHa;YsWF|Ad^uedwzrq>+2=!Y)OA8hT_UzenzVH0n{r#`wQvi2RwlIzb ziT5mokdj!8;+lmB(otMDsv8nFW60or3o$HB(B}gSAL5S0M-m?kjNY{!+g}w3rxv#a zA~|SVoX*9W`~*l%g_E8(e{ing9$w(@?Cr)aOMBq z{;QhAY672PErHK)PvFcw*Y!Q--YjZ=*WK~PN0E!-^91f=UE+%b9w09;`8u*mirz0f z_-OlyuJ~+8DsQ@YJ~i0geCH%VGPW`An6w2hr`}xbj!z#?Y2Wj8gQMxT$u`wxvE9rj z2gv6bY1Lp&tg7~l+VfPE6qBjN!C)*r#FwNGetz*oa2h-dj)Kz{KL#hk)47iDEI0^` zgQqKVg2^;gP3K&vqWo`cf0vTyE63;LEeuI>2pLDTQ>j2pGito1eCBEix6kNB~ZVDvwj-y+-y7D~DP=D%Y=wWnw{y;f9 zb?wb}9kYYA>eIa9Sl(~yA?E$Ju{##o{+je4a;jc0*}l$7lz8I@@*5T#ujZTWa0zem z?K7VcIG;%J-#l;`u7c~xwIhgw&hc6Pk9L${Oj1sC4KRgs+{JJnZ&PEO|HKHtz*i>- zJxqquP0@2h-msoGCITc7fh{0euXt1 zIYj)JWH`jw0SVH`VwH4Zn1B{2F-pWCF@q>i%CMn>)LZk8h5=^I}MrH0>CTe8_AOIg4*p*&KZYG7f3>xGf_jo3(qoU9w!Y;VclKw);{howef&o4!qGdPrmOp*)f9vK zL*B(jToPCql~p3?gjJx}XerN%^}0#Io*#LEHs1G1ojqwhLzAxV@+OKl%9?|ZT-?UT z0$bMGO84{wFDa8}bnMWRk+EDI6-5MO5ThryHtL{aOOdzlho(jHPb}%)Dbf=|&kqLF z5BjDbs+e2{hbsJE`U53N@8DAx>!`T6gAG=2U279jL~l!(mOhB4#<7{fXD;rd>fm!1 zUtmpOc2pS$%|Q}d`cg**hoznUhpK4=QU%+IGlkmoPjwTrWy=lxEL2E$$*C1H7OENqDy(#56e()@ zaahxUBf0ClGB{vkE+&rUvo#q)PB}J?duoLFw?p~%@w5|L08=YZAXa7{VQeM+2&vy!xE?7+|SWVZd1w_u$O}}o%BZ)f zXM-B7MlXqeqHz<~@G2Ej5x?cBa-REhNab=ll7dNc=+bF{`!OuyORiaBJE-FxDc|Nf K!}B}*-TDuBL(1s@ literal 0 HcmV?d00001 diff --git a/build/classes/java/main/task_1/solution/TimeTravelException.class b/build/classes/java/main/task_1/solution/TimeTravelException.class new file mode 100644 index 0000000000000000000000000000000000000000..c531cd2c54f400a1e7f76dc7aef3e1c11b7dd651 GIT binary patch literal 381 zcma)2O-sZu5Peg-sn*ri6~(KF;0IVdd05$t=&5+wvRBF0P@`=kO}qHFJP98B0sbg) zQbiAXa0Vvx-b~&Ld3%3(1#pUCj0FrLtVLKSh%;?;GbU{Ar+0ELlTw-@nKZRF#pqy4 z2+!?}A`DV()Ky!}RGrCL$;>ddxh$u$)*gS6VRNe;VJ~f@yT3k3oGsf%Ta#qEQduqM zs=Rp2)r03ogs4)^$)Z#Hs@QXe6Dgx!Bw5;lHpz8``e1pFsH wh?CX03Pxk*13ty!(KG0Yy8sc_xMO>~C$PwP>vIcBJn^fdLJvhl+{+ud4usn pg#jfM*Tb}?w#N$-YK9FmG7mPNXTZ6I;QT_cH4Dx!1aE1H?H_C> zLV10e_!wFeGxG$Z|K{59P8BX%94Rf5{=@bQzb~TzLwjO!MrK~BfclL|D^nC_+PfDV z-4fDV8_mqX$jHmc&%nvZ#LLgXzz^gxFfcR#F&s3&SwIO!AcsXzPsmp|L_}XypM{l; yT|kVXH7l_!5h%mRFRmvMBFrHMVlznUN%@NKf!Vy$dNQuEA;R1|U@j-f7zO~&N<;Yo literal 0 HcmV?d00001 diff --git a/src/main/java/task_1/solution/Main.java b/src/main/java/task_1/solution/Main.java new file mode 100644 index 0000000..1514718 --- /dev/null +++ b/src/main/java/task_1/solution/Main.java @@ -0,0 +1,17 @@ +package task_1.solution; + +public class Main { + public static void main(String[] args) { + TimeMachine timeMachine = new TimeMachine(2023); + + TimeTraveler traveler1 = new TimeTraveler("Travis", 1990, 2100); + TimeTraveler traveler2 = new TimeTraveler("Ja", 1985, 2050); + + try { + timeMachine.travelInTime(traveler1, 2000); + timeMachine.travelInTime(traveler2, 2075); + } catch (TimeTravelException e) { + System.out.println("Произошла ошибка: " + e.getMessage()); + } + } +} diff --git a/src/main/java/task_1/solution/TimeMachine.java b/src/main/java/task_1/solution/TimeMachine.java new file mode 100644 index 0000000..0f70941 --- /dev/null +++ b/src/main/java/task_1/solution/TimeMachine.java @@ -0,0 +1,29 @@ +package task_1.solution; + +public class TimeMachine { + private int currentYear; + private boolean isWorking; + + public TimeMachine(int currentYear) { + this.currentYear = currentYear; + this.isWorking = true; + } + + public void travelInTime(TimeTraveler timeTraveler, int year) throws TimeTravelException { + if (!isWorking) { + throw new TimeTravelException("The time machine is not working at the moment."); + } + + if (year < timeTraveler.getBirthYear()) { + throw new TimeTravelException("The year of travel to the past is less than the year of the traveler's " + + "birth."); + } + + if (year > timeTraveler.getDeathYear()) { + throw new TimeTravelException("The year of the travel into the future is longer than the year of the " + + "traveler's death."); + } + + System.out.println(timeTraveler.getName() + " travels through time in " + year + " year."); + } +} diff --git a/src/main/java/task_1/solution/TimeTravelException.java b/src/main/java/task_1/solution/TimeTravelException.java new file mode 100644 index 0000000..9e8bad4 --- /dev/null +++ b/src/main/java/task_1/solution/TimeTravelException.java @@ -0,0 +1,7 @@ +package task_1.solution; + +public class TimeTravelException extends Exception { + public TimeTravelException(String message) { + super(message); + } +} diff --git a/src/main/java/task_1/solution/TimeTraveler.java b/src/main/java/task_1/solution/TimeTraveler.java new file mode 100644 index 0000000..0571b89 --- /dev/null +++ b/src/main/java/task_1/solution/TimeTraveler.java @@ -0,0 +1,25 @@ +package task_1.solution; + +public class TimeTraveler { + private String name; + private int birthYear; + private int deathYear; + + public TimeTraveler(String name, int birthYear, int deathYear) { + this.name = name; + this.birthYear = birthYear; + this.deathYear = deathYear; + } + + public String getName() { + return name; + } + + public int getBirthYear() { + return birthYear; + } + + public int getDeathYear() { + return deathYear; + } +} From 0dd83bfe4980e79fca9a1b7cf90cc7a9e900aa98 Mon Sep 17 00:00:00 2001 From: Alim Date: Sat, 21 Oct 2023 15:38:52 +0600 Subject: [PATCH 2/2] task2 --- .../java/main/task_2/solution/Main.class | Bin 0 -> 2264 bytes .../main/task_2/solution/OlivandersShop.class | Bin 0 -> 2740 bytes .../java/main/task_2/solution/Wand.class | Bin 0 -> 1554 bytes .../java/main/task_2/solution/WandOrder.class | Bin 0 -> 1180 bytes .../exceptions/NoOrdersException.class | Bin 0 -> 397 bytes .../NotEnoughMaterialException.class | Bin 0 -> 957 bytes .../exceptions/NotEnoughWoodException.class | Bin 0 -> 960 bytes .../compileJava/previous-compilation-data.bin | Bin 285 -> 708 bytes src/main/java/task_2/solution/Main.java | 26 +++++++ .../java/task_2/solution/OlivandersShop.java | 68 ++++++++++++++++++ src/main/java/task_2/solution/Wand.java | 47 ++++++++++++ src/main/java/task_2/solution/WandOrder.java | 31 ++++++++ .../exceptions/NoOrdersException.java | 7 ++ .../NotEnoughMaterialException.java | 7 ++ .../exceptions/NotEnoughWoodException.java | 7 ++ 15 files changed, 193 insertions(+) create mode 100644 build/classes/java/main/task_2/solution/Main.class create mode 100644 build/classes/java/main/task_2/solution/OlivandersShop.class create mode 100644 build/classes/java/main/task_2/solution/Wand.class create mode 100644 build/classes/java/main/task_2/solution/WandOrder.class create mode 100644 build/classes/java/main/task_2/solution/exceptions/NoOrdersException.class create mode 100644 build/classes/java/main/task_2/solution/exceptions/NotEnoughMaterialException.class create mode 100644 build/classes/java/main/task_2/solution/exceptions/NotEnoughWoodException.class create mode 100644 src/main/java/task_2/solution/Main.java create mode 100644 src/main/java/task_2/solution/OlivandersShop.java create mode 100644 src/main/java/task_2/solution/Wand.java create mode 100644 src/main/java/task_2/solution/WandOrder.java create mode 100644 src/main/java/task_2/solution/exceptions/NoOrdersException.java create mode 100644 src/main/java/task_2/solution/exceptions/NotEnoughMaterialException.java create mode 100644 src/main/java/task_2/solution/exceptions/NotEnoughWoodException.java diff --git a/build/classes/java/main/task_2/solution/Main.class b/build/classes/java/main/task_2/solution/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..0cf7e4d256d90b86bd115e7327c0febc62961d32 GIT binary patch literal 2264 zcma)7-%}e^6#g!d-LPy4O`#B5D=Mu}D6wdNk=iN|ESf-VY7tR!Np8cE&EB}XY30Rg z`=Afb_@XmD>G-6Nr89y9THk%z{58Hgp1VmQke!a1$-R5e`OdfJeD~bDfB(Dv7{CQo zH9UiJD$Yl7A&QF{+Hgt5WE3e43NAiH4sUc~3TX*`Qx4N{;+oa) zHr`Q@QISz3h|a@{a?c&nz%a5Uo?ZfSWU=?bgrnZizH4bx5$TbX9^4=-ibj5|isGVEe9 z=Q*ZbOv$%J?izOCY#6};Ify_JPJugwIM(tCiI|sOf(1MiPvG>R3Cp}g0PawFgDtW1 zyWZTYs1QL zQgM^g$%(3y=QE~MvQvsPF7?oH496LI52{yBK=Hq;J@7XulQR}qFB+9M?nSGaT`U3vj^Y7pJ?YM=Y%(Hi)wLoL5RYx zrVQu)PfXVEI5nWv6gT$NxIi3t7p`L!%Tbsz-?b3o<<3x*d%Zfpvc~fs?ev~$myBU# zxT!xHZ9N-elC3@#f^F%`pzCKPT&q|{o;UXP#BeCG-u)8Yd)u@N*_IX_7#;}?lnuXE zP;TAzc$qE$QKd>7EpLkCbvmXVRmF`m1#}g;C%5e8dWCwpmzbLv>L;464FaWw!=LPv zh7v4>asOv(!9S=0za6Z7>HjVp)BiJA`hSsU$A4V=N;c@=6-Q(QR0mov0m?tk@tkNu7ZkHGD4K96*|MSw#}WiWwMSOG+Fiq%54pSH(zk|vyf`mwn33LEGuVvJf(s<=wwTM zVY$&w^mH7aM}oeB^4CTmEV?Oae3n*8ni17$I;jw)M-W&>YmPZ#-g^34T4?M#GxlN~$g zTHJy@8A(LOHgPBsNpu9$Cb}n;M~EeqP4vj&@HXfRyon>f;7EoXqnqg8#z0`&KszN- zf{otB+}D_ol1G+v9*1bu&_f^gJP`37>HRWs qo~3^$+Wvv9Vj@NquaKb)ucAV;Mo=3L1tu^<>u&PAMYe0fc>O$ZmL^s1Qd*@Fq|~fpRaV0yKO%p@1<7}Nnt6b+vgn?3&pqcm=X~ef+w+C;T80&7zm;yyBL(3Q$aN1bP&gIMoL5FIE#1XYgold5EXb&#b^*! zI42kH%boMm`U4do1`)=&a$LYg`O;O4l_C~IeO4J)VMxnyxj9je@0%b$ygrz&_q#>|#)pl3Z(NmW%>}gNg3HsPp`-pDE z2PIf%H+@4_Z99H;ZrbRv)0QJpS>WHVPt&5KSkskVCUk3}eaK0g)1L>(TBY9RIOHfl2wPSi>Sf?x3 zo>FlpO)}85rli4yIm4>R&(NeTa}G`?^qApRDX_VDjYFOTnMDl=H4`$>2+8m=6@3DA zxs6q2l(^jx*!U7;fzlOjWj$`!3Rx4VP8wIzX3~fkgw+a369})EtV$p>Y>-Qh ziUe!!osAjOvc=@6cHFe${dUSZWnVRtEHZ-Nry1-Fm z#z?4`QeiQHAv>Ln8Anaoz;(qv*(J-@(1xAd$`A07WKy4#Q>@`tyhcXyTgUa(B8@@1n(!!)jFNFt?zPHD_&xQf{oPnTbB1~trqOzd7g|3;3c_5s`Jwe0l7q-;Qr zKAGl68a~D+8a~Bm8a~Grfqnl6XQfLyEEQj9xF)l_jvE4PF9mVuHI?%f*qZqvb2syd z&-~J@rp)8agUtQRlcj4**OzW&o@O2|-ICRRDNw%}H#guKzCudF*Z4-mx45C>ZRTaM|>xwi$6VBlic#c|kPy6=uJ3`!VQrnn4e|An4kdg$Q2Wyb_spPr>~u zP?4`*o*2f^<2=%;nd+UI_DEv6;o_8XfFT0r&#bI7*P6PO7Pudkm6q{NP$%`&fHBKh zisk+kH_OAuR(=_`@f+&rhm*$`WSc7=cJSfp&8;I`^B@m2H(SVI4c@qg}L?^bOA5A#Lrj4>$VJ@hmHgEa`6|S6hy7SLpt#=tI%WVWf%6mCh`#5$7$lO74(uotSahTPe zXI(lDBhFkUXAxF=g1wNeC^BDB^`q}rJ)?hX&qsVXc&#-Qynp7o{8hEjs!;HIG4a-oL9qVYPg_=iyAIz7!!!! zcip*L59+2swsOa~XOwNjsgNd>lhG#Y`!xqr%?tQaS zG4GjNh)D*IS&rph7AOq8zSm?AS7BNpa>bov^-RTb%p1*xS+jA=n6(2Qw`$na28(gM z~o(_Ejm%-{c1CY^u#y zx$g#d4i=rASCrR(?ElKrrv=WwiI&|DW?!Xq@`+sbmjW^Ca#?P?nHYhq@=xmDqW+fL zR8lG5e@MtJC0MTSar6DYjvU}l;w|(ik;9QB-d5H-I4aQJtwo)lK;K^HzL~vaR=oqR z?Rz4?)90tGS&I`3b?-s2{#GE@;~EsEae@~x%ZnUANRiMADVSg;PcRdSa}Tq2H0(KzJq_Swplv@Kmj0Gg)m7@pg$JrQMLkOjcjRp>{5^ z8DX0<8GnAQmVs&rF2KwA#jfU$AVD}hcygR z{2;RuDLs+K2Yel4YM4Jbfe&$#BO8P=XSH>-xQf&=jZmN=7C27?Jjv~V9Ug&?sAM-e p)JabN-IaW@XYx?b%9-xUg`UX;6g!pou>1b%s$A-sJRC%Q@;`QdmeBwJ literal 0 HcmV?d00001 diff --git a/build/classes/java/main/task_2/solution/WandOrder.class b/build/classes/java/main/task_2/solution/WandOrder.class new file mode 100644 index 0000000000000000000000000000000000000000..8c83e3d609b246968b971cc425a731c78c8cedd5 GIT binary patch literal 1180 zcmZ`&O-~bH5PsfnVcTW-5CQqHx}rk6trYNs7>tP_n2;dEU@&?yOWD+g?H0FNKaS!- z6G*(OiT}U@7zzdo+&p-C_YbM_ZV3pimw9JqXP)Po$?UJ++j{^;a8p48t|;inRT+IT z^ed2%j3E_=0$rH2Fc}%wWDGE3i%&*>F6|d&9sc80zm>j^*8D$Rtmrg=0*lW{GC3 zI8PFqCoRXEDi`KV_mMGY2cn8O!=5!obFs?K79&LNVw#~d@-*fZjg6VkUuXE;-STe&X|HP~QM~!du9sYw?_^!Xq z*EGJ%D;lrzJ-*2+{<6l`{S|-NU)A`&|IU9)?h3C8vKtJy`4_6AZvQ>i(l`E{?`eD^ zNNy4m1&8hHBI~dE9|(U?g^ETMO=wopf-?+VVQUDcV`w=VXL@eI%z4LBwR>V{3qxR_ z&CwCaR%yJjBuK-M!A#Pmc3@pWpI&`!1wak4Uj#fUDB zE|QTT3H=mhXhTCpev61Zs7kL<;v70D5`U+V$^uV_jRc;MD-jL|U;0Dos0>9$w~QVt zjf;l!L{Xa~ORoT^(>EZmkrN42)d$J;fK{y(9I!H6z(vZ4CH&hQJK5Y7+N{y0PdCTE OonTIcHunZqm;VC#fE_RZ literal 0 HcmV?d00001 diff --git a/build/classes/java/main/task_2/solution/exceptions/NoOrdersException.class b/build/classes/java/main/task_2/solution/exceptions/NoOrdersException.class new file mode 100644 index 0000000000000000000000000000000000000000..d21c83d0840962f8e23ce16494d00a91af0997d4 GIT binary patch literal 397 zcmb7AJx{|h5PcWY1VW*ui0*8BsgYP1in<_}qB0b9MQ&;ZLmDI7srXw=NDTY{eiY&y zzJ^YmrSrXa=l4#2|9E`^aE4xjHFRQhW9$&3b5$ufBJ3Sx_hKp1QdC7caYj|e@Nh~9 zFZ5gzI+?2ExL(Ypxe>FHnO>%IQBH+X9)FXeyHl1h$egebx2LJqW$l!%Qu&n2M_<`= ztgp>n8hiOe4GHl=S}Tf1c4ZAhGSRik<(2Zr{S|?Mf6_*X7UASS&V=1Rx8HrRkAVNk x2k~K9&Jm*#^8w${(eVrDnX3RX=cHjYuG7=DIQ7AZ=lw)L~6N{!V-5);!zj0Z^@O=yjwsRs{cSSGM#nIXGFV{g`j z9=&?;KVZ_vhAQ4Y&Hf?dyMPu0_25qC<9X(N-g)L@fBfup0jy#HnrQB4@$^)8LoLJfW2LmOJ>J|9x~3|ADu($uE+%mamy?)8jN$%&d1aV6 zvG->O30%QdhUey!IWz~R8|(*fO`B>rcyGR$ZpM7=!NcHVg z^OtaIuPMfazZ{BxR^Ab|&aVtngA@hsx+O=8yoD^o^2q+id1F}kcN~^5LH|nlF)H*} zsI>?c5TOE0-M-Ty3SSWUOfZ5twTa%;B=s?zAw1U)B|JrlL`dQ+sU~oaPy{Jts80~H Rfa_SK8=58@Cw!i2`WHb;E*Ag* literal 0 HcmV?d00001 diff --git a/build/classes/java/main/task_2/solution/exceptions/NotEnoughWoodException.class b/build/classes/java/main/task_2/solution/exceptions/NotEnoughWoodException.class new file mode 100644 index 0000000000000000000000000000000000000000..bb12d2abdb68bb7af18be5ed5e916f26c9b81358 GIT binary patch literal 960 zcmb7DO;1xn6g^W)UoF*Q5l~SqT8wByqb^+3xUhj}QgKlN3l}DG<^0Y4f@33cyk`iG47(JD1 z_E0Km9x+VcDsJ%|p7Xe>=1Rtws+wQgV2BoUMKGj_Qi-+Zc3JrAyzCK^E^3#18{C&6 z?vqhdlL5p1qTxaP<-J^>y{3^`<-{9TG{RMoThnGm>1MUIsdZ)L51(gVxBNjH60tjh5CxzTQxLpz4a$6A}f_`LBb|ATuXZm({DJ*J3l{Q+-H#c< z`}P~D$$}(@Bs{VQ;ReYFhHhH6z05GX&Fi9|mCMbhG&NcUhATq}zd5RU!v%G4HO#;Q zL-yn%Qtjxv=-0gGeU-aL`@0Tq&;hOx?0M&O<;GS2KM&uo285W1`H!3!U`Ty&%fHC@A z!jDm-cSEB?sDKDHVB+?jHc{9|V|XUS>|=LkiR XLWbr9G4r^NYgD00!g0dqsi%Jfg48s9 literal 0 HcmV?d00001 diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index f7d18d3496abd4637633fc51f06a6820b3c90148..3e66411dc9456e9500fd584f1e2a0df1093b9900 100644 GIT binary patch literal 708 zcmd;P2xrt|(qm?5FG(!UjyGaq=q%39DJ{v&&tqk1WMgPa%u5lNxWH=3U3=YI(%mHt zn$7|_?5-UCoPJz-+}$*Bb(4aKay3{Clb3~fazsYS*744p6u0loPhH;?l2 zAADNe-04;Q;=e$MV2F^Ou$~CiT0<6AQHGYx+*C1!j-te})ST2JfuJ`__qjhSaMXXf zb=eE)1HOu)k$TPHp93xN={9Jf$KX=$_+Y7t4DwdvA@MTm4`Ykh0;M&~{`aj?8i+-KN zB-EPYWUS<>93rR!^aIEl`~vMu9@ag%*!b>EmsBHPMoXxwuaKfZ^xs@N-l@VxizB5) z(tp@~QFB!fm(*Zr$+D`?l(u2k+kP6x8F1%6HZb*79f6X6VYvECYrmFko~T zS~Btr1lAe^_HrDb{>E?Di5(lXr5JU61@#!(6O%JC^HK%WZ%kU5qBzsuz2NAUkmlNG zP6kFs1tvL71_4G!RYqL~IUtu&lYyO)NkNl=L7b790Yob?GO6k^FsMPfnm|Pi47xxa z3=9knKnw>Ba28O45y;`z*E4W6^f&S|);G~N)n{hmVddrHH)CkcN-RqR$}_T?>sk0) zhFj^Iva-pWfkfo2^(?^*1{*zFSGy4V5C?rneGykBy;`ouMT&HJ9)`|}Y<%~oORAACqa~Ermx+&|B{4HkAo_2v z9q&}(qQ#NYBI!SDzwrAq3QX=}loV!WU}WTF0T^k5Ox6Y>=f z5z!abXJKVy7Z77;%}OjwWME)m orders; + private Map woodTypeCount; + private Map coreMaterialCount; + + public OlivandersShop() { + orders = new ArrayList<>(); + woodTypeCount = new HashMap<>(); + coreMaterialCount = new HashMap<>(); + } + public void placeOrder(WandOrder order) throws NotEnoughMaterialException, NotEnoughWoodException { + String woodType = order.getWand().getWoodType(); + int requiredWoodCount = order.getQuantity(); + + if (woodTypeCount.containsKey(woodType)) { + int availableWoodCount = woodTypeCount.get(woodType); + if (availableWoodCount < requiredWoodCount) { + throw new NotEnoughWoodException(woodType); + } + woodTypeCount.put(woodType, availableWoodCount - requiredWoodCount); + } else { + throw new NotEnoughWoodException(woodType); + } + + String coreMaterial = order.getWand().getCoreMaterial(); + int requiredMaterialCount = order.getQuantity(); + + if (coreMaterialCount.containsKey(coreMaterial)) { + int availableMaterialCount = coreMaterialCount.get(coreMaterial); + if (availableMaterialCount < requiredMaterialCount) { + throw new NotEnoughMaterialException(coreMaterial); + } + coreMaterialCount.put(coreMaterial, availableMaterialCount - requiredMaterialCount); + } else { + throw new NotEnoughMaterialException(coreMaterial); + } + + orders.add(order); + } + public Wand findMostPowerfulWand() throws NoOrdersException{ + if (orders.isEmpty()) { + throw new NoOrdersException("Заказы недоступны"); + } + + Wand mostPowerfulWand = orders.get(0).getWand(); + int maxPowerLevel = mostPowerfulWand.getPowerLevel(); + + for (WandOrder order : orders) { + if (order.getWand().getPowerLevel() > maxPowerLevel) { + mostPowerfulWand = order.getWand(); + maxPowerLevel = mostPowerfulWand.getPowerLevel(); + } + } + + return mostPowerfulWand; + } +} diff --git a/src/main/java/task_2/solution/Wand.java b/src/main/java/task_2/solution/Wand.java new file mode 100644 index 0000000..67170c1 --- /dev/null +++ b/src/main/java/task_2/solution/Wand.java @@ -0,0 +1,47 @@ +package task_2.solution; + +import task_2.solution.exceptions.NotEnoughMaterialException; +import task_2.solution.exceptions.NotEnoughWoodException; + +public class Wand { + private String woodType; + private double length; + private String coreMaterial; + private int powerLevel; + + public Wand(String woodType, int length, String coreMaterial, int powerLevel) throws NotEnoughWoodException, + NotEnoughMaterialException { + if (woodType == null || woodType.isEmpty()) { + throw new NotEnoughWoodException("Тип дерева не может быть пустым"); + } + if (length <= 0) { + throw new IllegalArgumentException("Длина должна быть больше 0"); + } + if (coreMaterial == null || coreMaterial.isEmpty()) { + throw new NotEnoughMaterialException("Материал не может быть пустым"); + } + if (powerLevel <= 0) { + throw new IllegalArgumentException("Уровень мощности должен быть больше 0"); + } + this.woodType = woodType; + this.length = length; + this.coreMaterial = coreMaterial; + this.powerLevel = powerLevel; + } + + public String getWoodType() { + return woodType; + } + + public double getLength() { + return length; + } + + public String getCoreMaterial() { + return coreMaterial; + } + + public int getPowerLevel() { + return powerLevel; + } +} diff --git a/src/main/java/task_2/solution/WandOrder.java b/src/main/java/task_2/solution/WandOrder.java new file mode 100644 index 0000000..0194987 --- /dev/null +++ b/src/main/java/task_2/solution/WandOrder.java @@ -0,0 +1,31 @@ +package task_2.solution; + +public class WandOrder { + private String customerName; + private Wand wand; + private int quantity; + public WandOrder(String customerName, Wand wand, int quantity) { + if (customerName == null || customerName.isEmpty()) { + throw new IllegalArgumentException("Имя клиента не может быть пустым"); + } + if (quantity <= 0) { + throw new IllegalArgumentException("Количество должно быть больше 0"); + } + + this.customerName = customerName; + this.wand = wand; + this.quantity = quantity; + } + + public String getCustomerName() { + return customerName; + } + + public Wand getWand() { + return wand; + } + + public int getQuantity() { + return quantity; + } +} diff --git a/src/main/java/task_2/solution/exceptions/NoOrdersException.java b/src/main/java/task_2/solution/exceptions/NoOrdersException.java new file mode 100644 index 0000000..1158b11 --- /dev/null +++ b/src/main/java/task_2/solution/exceptions/NoOrdersException.java @@ -0,0 +1,7 @@ +package task_2.solution.exceptions; + +public class NoOrdersException extends Exception{ + public NoOrdersException(String message) { + super(message); + } +} diff --git a/src/main/java/task_2/solution/exceptions/NotEnoughMaterialException.java b/src/main/java/task_2/solution/exceptions/NotEnoughMaterialException.java new file mode 100644 index 0000000..14230a5 --- /dev/null +++ b/src/main/java/task_2/solution/exceptions/NotEnoughMaterialException.java @@ -0,0 +1,7 @@ +package task_2.solution.exceptions; + +public class NotEnoughMaterialException extends Exception{ + public NotEnoughMaterialException(String material) { + super("Недостаточно материала для сердца палочки: " + material); + } +} diff --git a/src/main/java/task_2/solution/exceptions/NotEnoughWoodException.java b/src/main/java/task_2/solution/exceptions/NotEnoughWoodException.java new file mode 100644 index 0000000..67f3dea --- /dev/null +++ b/src/main/java/task_2/solution/exceptions/NotEnoughWoodException.java @@ -0,0 +1,7 @@ +package task_2.solution.exceptions; + +public class NotEnoughWoodException extends Exception{ + public NotEnoughWoodException(String woodType) { + super("Недостаточно дерева типа " + woodType + " для изготовления палочек."); + } +}