From 31bc8ebf420e2c964d0b01ec5d45d315932d35b4 Mon Sep 17 00:00:00 2001 From: SlanSaf Date: Wed, 15 May 2024 21:28:44 +0300 Subject: [PATCH 01/13] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B1=D0=B0=D0=B7=D0=B0=20=D1=81=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D0=B9=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B4=D1=80=D0=B5=D0=B2=D0=B0?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ru/gb/family_tree/FamilyTree.java | 36 +++++++++++++++++++++++++++ src/ru/gb/family_tree/Gender.java | 5 ++++ src/ru/gb/family_tree/Human.java | 35 ++++++++++++++++++++++++++ src/ru/gb/family_tree/Main.java | 26 +++++++++++++++++++ src/ru/gb/vending_machine/Main.java | 2 ++ 5 files changed, 104 insertions(+) create mode 100644 src/ru/gb/family_tree/FamilyTree.java create mode 100644 src/ru/gb/family_tree/Gender.java create mode 100644 src/ru/gb/family_tree/Human.java create mode 100644 src/ru/gb/family_tree/Main.java diff --git a/src/ru/gb/family_tree/FamilyTree.java b/src/ru/gb/family_tree/FamilyTree.java new file mode 100644 index 0000000..1022b2f --- /dev/null +++ b/src/ru/gb/family_tree/FamilyTree.java @@ -0,0 +1,36 @@ +package ru.gb.family_tree; + +import java.util.ArrayList; +import java.util.List; + +public class FamilyTree { + private List humanList; + + public FamilyTree() { + humanList = new ArrayList<>(); + } + + public void addHuman(Human human){ + humanList.add(human); + } + + public Human findByName(String nameHuman){ + for(Human human: humanList){ + if(human.getName().equalsIgnoreCase(nameHuman)){ + return human; + } + } + return null; + } + + @Override + public String toString() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Список людей:\n"); + for (Human human : humanList) { + stringBuilder.append(human); + stringBuilder.append("\n"); + } + return stringBuilder.toString(); + } +} diff --git a/src/ru/gb/family_tree/Gender.java b/src/ru/gb/family_tree/Gender.java new file mode 100644 index 0000000..56f1032 --- /dev/null +++ b/src/ru/gb/family_tree/Gender.java @@ -0,0 +1,5 @@ +package ru.gb.family_tree; + +public enum Gender { + Male, Female +} diff --git a/src/ru/gb/family_tree/Human.java b/src/ru/gb/family_tree/Human.java new file mode 100644 index 0000000..e6f4fc2 --- /dev/null +++ b/src/ru/gb/family_tree/Human.java @@ -0,0 +1,35 @@ +package ru.gb.family_tree; + +import java.time.LocalDate; +import java.util.List; + +public class Human { + private String name; + private LocalDate dob, dod; + private List children; + private Human father, mather; + private Gender gender; + + public Human(String name, Gender gender, LocalDate dob) { + this.name = name; + this.gender = gender; + this.dob = dob; + } + + public Human(String name, Gender gender) { + this(name, gender, LocalDate.of(1900,12,12)); + } + + public String getName() { + return name; + } + + public Gender getGender() { + return gender; + } + + @Override + public String toString() { + return "Name: " + name + ", Gender: " + gender + ", Birthday: " + dob; + } +} diff --git a/src/ru/gb/family_tree/Main.java b/src/ru/gb/family_tree/Main.java new file mode 100644 index 0000000..c6c4523 --- /dev/null +++ b/src/ru/gb/family_tree/Main.java @@ -0,0 +1,26 @@ +package ru.gb.family_tree; + +import java.time.LocalDate; + +public class Main { + public static void main(String[] args) { + FamilyTree familyTree = new FamilyTree(); + + Human human1 = new Human("Oleg", Gender.Male, LocalDate.of(1985, 12, 12)); + Human human2 = new Human("Olga", Gender.Female, LocalDate.of(1984, 6, 18)); + Human human3 = new Human("Ruslan", Gender.Male, LocalDate.of(2006, 10, 10)); + Human human4 = new Human("Lena", Gender.Female, LocalDate.of(2016, 5, 4)); + Human human5 = new Human("Polina", Gender.Female); + + familyTree.addHuman(human1); + familyTree.addHuman(human2); + familyTree.addHuman(human3); + familyTree.addHuman(human4); + familyTree.addHuman(human5); + + System.out.println(familyTree); + + System.out.println(familyTree.findByName("olga").getName()); + + } +} diff --git a/src/ru/gb/vending_machine/Main.java b/src/ru/gb/vending_machine/Main.java index abfd7ac..d69fdfc 100644 --- a/src/ru/gb/vending_machine/Main.java +++ b/src/ru/gb/vending_machine/Main.java @@ -10,9 +10,11 @@ public static void main(String[] args) { Product product1 = new Bottle("coca-cola", 150, 1.5); Product product2 = new Product("milko", 100); + Product product3 = new Product("twix", 65); vendingMachine.addProduct(product1); vendingMachine.addProduct(product2); + vendingMachine.addProduct(product3); System.out.println(vendingMachine.getProductsInfo()); } From 8121c7f32da011266b88a57a44f332259088fa45 Mon Sep 17 00:00:00 2001 From: SlanSaf Date: Wed, 15 May 2024 21:44:26 +0300 Subject: [PATCH 02/13] Added all files --- .idea/.gitignore | 3 +++ .idea/misc.xml | 6 ++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ GBLesson1.iml | 11 +++++++++++ .../GBLesson1/ru/gb/family_tree/FamilyTree.class | Bin 0 -> 1672 bytes .../GBLesson1/ru/gb/family_tree/Gender.class | Bin 0 -> 1058 bytes .../GBLesson1/ru/gb/family_tree/Human.class | Bin 0 -> 1821 bytes .../GBLesson1/ru/gb/family_tree/Main.class | Bin 0 -> 1554 bytes .../GBLesson1/ru/gb/vending_machine/Main.class | Bin 0 -> 1240 bytes .../ru/gb/vending_machine/products/Bottle.class | Bin 0 -> 1140 bytes .../ru/gb/vending_machine/products/Product.class | Bin 0 -> 1470 bytes .../vending_machine/vending/VendingMachine.class | Bin 0 -> 1574 bytes 13 files changed, 34 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 GBLesson1.iml create mode 100644 out/production/GBLesson1/ru/gb/family_tree/FamilyTree.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/Gender.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/Human.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/Main.class create mode 100644 out/production/GBLesson1/ru/gb/vending_machine/Main.class create mode 100644 out/production/GBLesson1/ru/gb/vending_machine/products/Bottle.class create mode 100644 out/production/GBLesson1/ru/gb/vending_machine/products/Product.class create mode 100644 out/production/GBLesson1/ru/gb/vending_machine/vending/VendingMachine.class diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..1b2d693 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..5a596b9 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/GBLesson1.iml b/GBLesson1.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/GBLesson1.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/out/production/GBLesson1/ru/gb/family_tree/FamilyTree.class b/out/production/GBLesson1/ru/gb/family_tree/FamilyTree.class new file mode 100644 index 0000000000000000000000000000000000000000..e16f0ff4a06611bb0813a59bcfa54ca6f84c4b5c GIT binary patch literal 1672 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 W`eiK9N;Ag@?$T0CzDI;E-2V@PjCe!< literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/vending_machine/Main.class b/out/production/GBLesson1/ru/gb/vending_machine/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..714d51da26440ed70f17216c8b933bf834110a79 GIT binary patch literal 1240 zcma)6ZBNrs6n^gL)~ytnqks(GFaj$Bs=WBZ5GD*19k2wmWbuRPwmOPkOS%p<{wn>z z5=o5lqrb>c#&f%p1sRcjIQO1&?m5qMUb0f zwpTthDjq{*#k5Utm7yo47DYrEX56M$D{IGwT{Z36+qzykFm2;Z*NScXPTMR&gv7J= zG6<<{o}!OoqI-%X*QquuUPD`VJkK(s7+{E1oQghMaV$NOE&m|aKxFN=e?o$cA)b7g zVI-CBkl*)QqL#_!INo)J$^YOL+Q3mH8NzkbdhbNCr8A5X+~OFw8HT%IsKqG8sW|V0 z`7x3$Wc@H+_JoW{Ofg7$wHg30q*M8;amlE~7*tG)NXwYP?789We`i=>*l?-_k;>EB>^AFV!+ounEwUu?G;6D^n`jVr-ebB{5##93KS6@tD3={tJQD6cLikq-k_AI>XZ~urIzlLz25e zJFr4hZa=_NtdbVP8nR^J!9VFmn9jl}#8Uio3$gquReOST(p~s2GHEd!K vdr*9yi)}7=M*mHqh%Ia&M@*Bnkej51C|bpHy7f?wF}$FgK>lrd9m31MyACZ~ literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/vending_machine/products/Bottle.class b/out/production/GBLesson1/ru/gb/vending_machine/products/Bottle.class new file mode 100644 index 0000000000000000000000000000000000000000..e304bf9fb2e1b0f4344d64ab292dbab04750f582 GIT binary patch literal 1140 zcma)4TW=Ck5dIFg1-dO1YcF0ZRoVirtiBmBJ^*Pn!AnAe55}0oaspeHJ!JPRN&kue zLQOPHYT^&@$zNogWj7Ips1JM2%~Y#1Pkz(2+!n;lTBcLC=^9 zr*Aofw_|P&Ek_s=SN45VdB)4oU`Rc(97{cB*etit_>>zqcLqjBxs+CKRk|6Zkzf8{~x>!sgx~oLyG^Jy5 z^~zF1vOL8dPBOVmn$uXY)AU8DNd|F$VxcNTJS0i`G%Cr zQ!bx86KW{?UK%Bm&yI`Xq#qX9_b;_v3I|ynqO743jIqj4`t_=oGnFF|J#IMJ6K*Q$ zo-@3gpHu`4D?Q;(-xgk}E#=6c)E7INi~N>&dOi_L;IHTKFM4OfRQ35yh$x!ewmX&* zG)w)d;|RBDbI%i=hP$+d3q389s=;8`{X3L4HS7y}wCFKfKSn35I$3eDlekLfCV6j= zK#K0w>QVUuth$}}4DBNYV%VZ{jo^SrkTfM{uuWc-QYZmCxJGwiUB?Zg3#^-j3d*g{ ziX|wzi(64CgZ>1lWc3rY_hf`6QnR2wqt-(}L`{o;e3blPrkey+FGwp9Tw)#g@CVEK g9Lrk75=U`{+QV(S)5Nz=-yIy0mnG{MHQd9_PZC-ZWB>pF literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/vending_machine/products/Product.class b/out/production/GBLesson1/ru/gb/vending_machine/products/Product.class new file mode 100644 index 0000000000000000000000000000000000000000..f9aa4fe1f5e8ea7302d33876e50316b57994aac9 GIT binary patch literal 1470 zcma)6+fEZv6kVscDRrPwu?Q%j+@=K??-xpVpbfD}MG^?c_+U<_lXhS_)6ATb@aAXu z5hiLPG2y`v@Xa4G?lUuiLaQ;&oU_lKeOYVmGyVDd><54?lro4Rt{|Zzi4?==AwTB2 z&7G$Hx_)RHf+4kGIhNRDh--y|A*3;+Afw_MRE8z5t2gWVvFS7{r}@6kjh5w@ddG7c zT|@Z#ZfGzh9Nsn=alj?Tu|$h3UvNkG44PK$?@=lA`xx?Czqe92Ah2b(K`62{;6SbUU_sG=4*5P!vxglKdgyCba z*im5E^(A*2w&^d_T=%HkDfQ2!$8#xh|DNuf??+0q4fELyl{tZbd0WWoL0KlWX0q+6zp{QX;(m(0h6>& z(djKkCTPzVzk?N5PN5XFQw)C%5~gX*1+UYz4$&`z5h{0!{Bx8@X}FCU+NCAiu)vay zVr0)!RMslYiB6bzG-Q9(vb?ncR*6fHTWiqoeUyMQMDR3yM8 zF_n<=VbnRKRG@%tJdcH_Rxc3c3nlde$qxjwh^6yn$tq+q{P{}q)WGCrXi@Se2__{= z6_+mw9I}`p7PEh0A?1`T3g;{~XdDtqPRdD-LeKCSZU9#)&G(?nMaslc46v_YmG(4M SlB(Rp6FOzcdWz>*$K)SYX(1y3 literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/vending_machine/vending/VendingMachine.class b/out/production/GBLesson1/ru/gb/vending_machine/vending/VendingMachine.class new file mode 100644 index 0000000000000000000000000000000000000000..01a389934c544bcb8e59099584ebeeebedc5ffda GIT binary patch literal 1574 zcma)6$x;(h6g@AAb_h+tFbG5x#UT^Kc_27|V>I9p4J8|Gk~Xx)gz9uG-8p=POII%3 zsKp>yrLJ9tKkz%OayYNkm_Ui;=Jk8G@4e^T`_6q|e=dIlFov5xxZqacQLzb|1={Xw zkFa(*!S?6!=s$Lluabm3V$S{zxz8jAH)ILoGXF z6!q0}JX5oe*USPgBPSq|3j6}?Hd4hh3h`0X)Sje_vgJby+!A7oiU8ULnrF>Yu9CIn zPm)X3W27Y^T{~5DNh(c_Ycl6UH+mHGst976z}~-ebll7FYc&XgO=aCmlAtG)3}>3L z9Xk~CtJsNM0{*qgY=)MjYiFoNsi9$s@RWkx0$b~yOj{hj8S?%ogkq;FV71W{gtHap993Jf-4)>0?J4K&uE zC1f3gDuxgj@EVqGYF5b<=n6R@_5~yzJG~F!pn^jx4&#VGpkDQ=i-0ntl_&JayblUu zN=6)0aU3VuxT0$g^Yg zSTjahU}ysbXHM451yOud(;pp1LmPyzmuw=O;dMAxf&UI;IeFc3@XE>Jy^=snxlyD7 zJsT>DzG+L#J{Z?#ovMB5QpL>b7Yx~#_O(MlBqhWd^75Sl++6u^aOaX!YkxWD5IAe^ z&(VW}h;3ZY({js>06HU!5Ru?Kl*mW4++IZMJlfvbAs4s?;NjZB)sH5$q62NXNK2Ou z+KEd@^29VYIMsy9xZ*%e5>8SJMkBZ9&@tt?JCBY9Y>mvJExLq07bfdKe)0kNN{C*j ztAhmpfCQ1kIFk!Z@PVz>@rDqR;^;>Vko}%iG_ZF8p-Bm{gqXm1Yzg}XUZRhiqXJ*h zJrNyT!0===a8i1{{`D=ofYWc8#0^>Vb|_rC+1MV^=|zmM-9a|)1o|+-zmi%%ePis4 lBqWKCIwZaHx{7Ngcb!&0TtDQ4IiTRcckH6|2CXine*?g7f!zQA literal 0 HcmV?d00001 From b1e5714ba798644b110f70e7a0f9930593130fee Mon Sep 17 00:00:00 2001 From: SlanSaf Date: Tue, 21 May 2024 15:44:01 +0300 Subject: [PATCH 03/13] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B2=D1=81=D0=B5=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=D1=8B=20=D0=B2=20Human=20=D0=B8=20FamilyTree=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BA=20=D1=83=20=D0=BF=D1=80=D0=B5=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D0=B0=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/gb/family_tree/FamilyTree.class | Bin 1672 -> 4320 bytes .../GBLesson1/ru/gb/family_tree/Human.class | Bin 1821 -> 6706 bytes .../GBLesson1/ru/gb/family_tree/Main.class | Bin 1554 -> 1557 bytes src/ru/gb/family_tree/FamilyTree.java | 119 ++++++++++- src/ru/gb/family_tree/Human.java | 202 +++++++++++++++++- src/ru/gb/family_tree/Main.java | 12 +- 6 files changed, 311 insertions(+), 22 deletions(-) diff --git a/out/production/GBLesson1/ru/gb/family_tree/FamilyTree.class b/out/production/GBLesson1/ru/gb/family_tree/FamilyTree.class index e16f0ff4a06611bb0813a59bcfa54ca6f84c4b5c..6758ba17731dd1c1e384a5977bf9cd5736543b9b 100644 GIT binary patch literal 4320 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 YKM=X(N!3?}j+7d3Te$m2#r;qJ1LN(DtN;K2 literal 1672 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 delta 588 zcmYL_Pfrt36vcn9o%RjG6Q#5&#H5LTkWy;JO07jjDk^A26fK~*n1otu$}}OUAu%y= zVOY6vLR`7i4*({u(Zmnn-n}t?4#S;d;^y4*&dodbp1Wn<8Ry5}uit?ZkG7pnbL&c*P#J$<5iKFI{VS>vF=W*RzDQ(QUt5rot>=XWPb+`}=Eg7yb zrO>tN`d&Xilqx@UpS#(H>(#RJ>uYtdHtvw;S}^3gA|VEGtD>3tycj;Hbo9xyRo5Hy z8`hEKX+n|}K_y|Lf;Z%qm8zshhTEv^PWz@{&=!%hp!vsdF)ObwZZju}d{z?@M2q&x z|6|R(YBNx@zTqszj_;7{)xT{0g?OMwI_jXPZH9``^hk?zIuk&@)xk&yqk=nR(=En= z5*u%EvBhMItN#}((jx;kwk(pABjxFqwG1n4>|>4nyx;&Y>E$&sHtFLn3AQ-INBTQy zruR1H4tK@K<^%KGlRQb@aG#2tCr^_FVPP>|U{RPQ_LD3Li^z-|4}=95dMFMdmUjX4 C7hvQ7 diff --git a/src/ru/gb/family_tree/FamilyTree.java b/src/ru/gb/family_tree/FamilyTree.java index 1022b2f..2a48f68 100644 --- a/src/ru/gb/family_tree/FamilyTree.java +++ b/src/ru/gb/family_tree/FamilyTree.java @@ -4,19 +4,114 @@ import java.util.List; public class FamilyTree { + private long humansId; private List humanList; - public FamilyTree() { - humanList = new ArrayList<>(); + public FamilyTree(){ + this(new ArrayList<>()); } - public void addHuman(Human human){ - humanList.add(human); + public FamilyTree(List humanList) { + this.humanList = humanList; } - public Human findByName(String nameHuman){ - for(Human human: humanList){ - if(human.getName().equalsIgnoreCase(nameHuman)){ + public boolean addHuman(Human human){ + if (human == null){ + return false; + } + if (!humanList.contains(human)){ + humanList.add(human); + human.setId(humansId++); + + addToParents(human); + addToChildern(human); + + return true; + } + return false; + } + + private void addToParents(Human human){ + for (Human parent: human.getParents()){ + parent.addChild(human); + } + } + + private void addToChildern(Human human){ + for (Human child: human.getChildren()){ + child.addParent(human); + } + } + + public List getSiblings(int id){ + Human human = getById(id); + if (human == null){ + return null; + } + List res = new ArrayList<>(); + for (Human parent: human.getParents()){ + for(Human child: parent.getChildren()){ + if(!child.equals(human)){ + res.add(child); + } + } + } + return res; + } + + public List findByName(String name){ + List res = new ArrayList<>(); + for (Human human: humanList){ + if (human.getName().equals(name)){ + res.add(human); + } + } + return res; + } + + public boolean setWedding(long humansId1, long humansId2){ + if(checkId(humansId1) && checkId(humansId2)){ + Human human1 = getById(humansId1); + Human human2 = getById(humansId2); + if (human1.getSpouse() == null && human2.getSpouse() == null){ + human1.setSpouse(human2); + human2.setSpouse(human1); + } else { + return false; + } + } + return false; + } + + public boolean setDivorse(long humansId1, long humansId2){ + if(checkId(humansId1) && checkId(humansId2)){ + Human human1 = getById(humansId1); + Human human2 = getById(humansId2); + if (human1.getSpouse() != null && human2.getSpouse() != null){ + human1.setSpouse(null); + human2.setSpouse(null); + } else { + return false; + } + } + return false; + } + + public boolean remuve(long humansId){ + if(checkId(humansId)){ + Human human = getById(humansId); + return humanList.remove(human); + } + return false; + } + + private boolean checkId(long id){ + return id < humansId && id >= 0; + } + + public Human getById(long id){ + for (Human human: humanList){ + if(human.getId() == id){ return human; } } @@ -24,9 +119,15 @@ public Human findByName(String nameHuman){ } @Override - public String toString() { + public String toString(){ + return getInfo(); + } + + public String getInfo() { StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("Список людей:\n"); + stringBuilder.append("В дереве "); + stringBuilder.append(humanList.size()); + stringBuilder.append("объектов: \n"); for (Human human : humanList) { stringBuilder.append(human); stringBuilder.append("\n"); diff --git a/src/ru/gb/family_tree/Human.java b/src/ru/gb/family_tree/Human.java index e6f4fc2..d2456df 100644 --- a/src/ru/gb/family_tree/Human.java +++ b/src/ru/gb/family_tree/Human.java @@ -1,35 +1,221 @@ package ru.gb.family_tree; import java.time.LocalDate; +import java.time.Period; +import java.util.ArrayList; import java.util.List; public class Human { + private long id; private String name; - private LocalDate dob, dod; + private LocalDate birthDate, deathDate; + private List parents; private List children; - private Human father, mather; private Gender gender; + private Human spouse; - public Human(String name, Gender gender, LocalDate dob) { + public Human(String name, Gender gender, LocalDate birthDate, LocalDate deathDate, Human father, Human mother) { + id = -1; this.name = name; this.gender = gender; - this.dob = dob; + this.birthDate = birthDate; + this.deathDate = deathDate; + parents = new ArrayList<>(); + if (father != null){ + parents.add(father); + } + if (mother != null){ + parents.add(mother); + } + children =new ArrayList<>(); } - public Human(String name, Gender gender) { - this(name, gender, LocalDate.of(1900,12,12)); + public Human(String name, Gender gender, LocalDate birthDate) { + this(name, gender, birthDate, null, null, null); } - public String getName() { + public Human(String name, Gender gender, LocalDate birthDate, Human father, Human mather) { + this(name, gender, birthDate, null, father, mather); + } + + public boolean addChild(Human child){ + if (!children.contains(child)){ + children.add(child); + return true; + } + return false; + } + + public boolean addParent(Human parent){ + if (!parents.contains(parent)){ + parents.add(parent); + return true; + } + return false; + } + + public Human getFather(){ + for (Human parent: parents){ + if(parent.getGender() == Gender.Male){ + return parent; + } + } + return null; + } + + public Human getMather(){ + for (Human parent: parents){ + if(parent.getGender() == Gender.Female){ + return parent; + } + } + return null; + } + + public int getAge(){ + if(deathDate == null){ + return getPeriod(birthDate, LocalDate.now()); + } + else { + return getPeriod(birthDate, deathDate); + } + } + + private int getPeriod(LocalDate birthDate, LocalDate deathDate){ + Period diff = Period.between(birthDate, deathDate); + return diff.getYears(); + } + + public void setSpouse(Human spouse){ + this.spouse = spouse; + } + + public Human getSpouse(){ + return spouse; + } + + public String getName(){ return name; } + public long getId(){ + return id; + } + + public void setId(long id){ + this.id = id; + } + + public LocalDate getBirthDate() { + return birthDate; + } + + public LocalDate getDeathDate() { + return deathDate; + } + + public void setBirthDate(LocalDate birthDate) { + this.birthDate = birthDate; + } + + public void setDeathDate(LocalDate deathDate) { + this.deathDate = deathDate; + } + + public List getParents(){ + return parents; + } + + public List getChildren(){ + return children; + } + public Gender getGender() { return gender; } @Override public String toString() { - return "Name: " + name + ", Gender: " + gender + ", Birthday: " + dob; + return getInfo(); + } + + public String getInfo(){ + StringBuilder sb = new StringBuilder(); + sb.append("id: "); + sb.append(id); + sb.append(", name: "); + sb.append(name); + sb.append(", пол: "); + sb.append(getGender()); + sb.append(", возраст: "); + sb.append(getAge()); + sb.append(", "); + sb.append(getSpouseInfo()); + sb.append(", "); + sb.append(getMatherInfo()); + sb.append(", "); + sb.append(getFatherInfo()); + sb.append(", "); + sb.append(getChildrenInfo()); + return sb.toString(); + } + + public String getSpouseInfo(){ + String res = "супраг(а): "; + if (spouse == null){ + res += "нет"; + } else { + res += spouse.getName(); + } + return res; + } + + public String getMatherInfo(){ + String res = "мать: "; + Human mather = getMather(); + if (mather != null){ + res += mather.getName(); + } else { + res += "неизвестна"; + } + return res; + } + + public String getFatherInfo(){ + String res = "отец: "; + Human father = getFather(); + if (father != null){ + res += father.getName(); + } else { + res += "неизвестен"; + } + return res; + } + + public String getChildrenInfo(){ + StringBuilder res = new StringBuilder(); + res.append("дети: "); + if (children.size() != 0){ + res.append(children.get(0).getName()); + for (int i = 1; i < children.size(); i++){ + res.append(", "); + res.append(children.get(i).getName()); + } + } else { + res.append("отсутствуют"); + } + return res.toString(); + } + + @Override + public boolean equals(Object obj){ + if (this ==obj){ + return true; + } + if (!(obj instanceof Human)){ + return false; + } + Human human = (Human) obj; + return human.getId() == getId(); } } diff --git a/src/ru/gb/family_tree/Main.java b/src/ru/gb/family_tree/Main.java index c6c4523..32af42a 100644 --- a/src/ru/gb/family_tree/Main.java +++ b/src/ru/gb/family_tree/Main.java @@ -8,19 +8,21 @@ public static void main(String[] args) { Human human1 = new Human("Oleg", Gender.Male, LocalDate.of(1985, 12, 12)); Human human2 = new Human("Olga", Gender.Female, LocalDate.of(1984, 6, 18)); - Human human3 = new Human("Ruslan", Gender.Male, LocalDate.of(2006, 10, 10)); - Human human4 = new Human("Lena", Gender.Female, LocalDate.of(2016, 5, 4)); - Human human5 = new Human("Polina", Gender.Female); + Human human3 = new Human("Ruslan", Gender.Male, LocalDate.of(2006, 10, 10), human1, human2); + Human human4 = new Human("Lena", Gender.Female, LocalDate.of(2016, 5, 4), human1, human2); + familyTree.addHuman(human1); familyTree.addHuman(human2); familyTree.addHuman(human3); familyTree.addHuman(human4); - familyTree.addHuman(human5); + + familyTree.setWedding(human1.getId(), human2.getId()); + System.out.println(familyTree); - System.out.println(familyTree.findByName("olga").getName()); + System.out.println(familyTree.findByName("olga")); } } From f792834b6173cf9adafc0412ec25bba0f801dc89 Mon Sep 17 00:00:00 2001 From: SlanSaf Date: Fri, 24 May 2024 15:49:38 +0300 Subject: [PATCH 04/13] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81=20Writab?= =?UTF-8?q?le=20=D0=B8=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20FileHandler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/uiDesigner.xml | 124 ++++++++++++++++++ .../GBLesson1/ru/gb/family_tree/Main.class | Bin 1557 -> 0 bytes .../ru/gb/family_tree/Writable.class | Bin 0 -> 232 bytes .../GBLesson1/ru/gb/family_tree/tree.txt | 0 src/ru/gb/family_tree/FileHandler.java | 25 ++++ src/ru/gb/family_tree/Main.java | 26 +++- src/ru/gb/family_tree/Writable.java | 8 ++ src/ru/gb/family_tree/tree.txt | 0 8 files changed, 178 insertions(+), 5 deletions(-) create mode 100644 .idea/uiDesigner.xml delete mode 100644 out/production/GBLesson1/ru/gb/family_tree/Main.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/Writable.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/tree.txt create mode 100644 src/ru/gb/family_tree/FileHandler.java create mode 100644 src/ru/gb/family_tree/Writable.java create mode 100644 src/ru/gb/family_tree/tree.txt diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/out/production/GBLesson1/ru/gb/family_tree/Main.class b/out/production/GBLesson1/ru/gb/family_tree/Main.class deleted file mode 100644 index 8596c281ce2ddad2ae84e0bc780ef089e58fd878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1557 zcmbtUOH)%x6#g2L+$3J*5?YbDO!jN9H}+j@{+qEeXp|icUV)(oiy?s z#Uv~ZxKE&Ox7(eDFM~Mt3q)oss+>Rv91EQ`Qs@#mxI5ss3QDR*_i0&C0*CT@xnz^* zL9c~A8wb%Z&}E2(p0C_|by-#>WXSlo>Iy;9xm+%jZ{a|YBo6CR91)mEH(g9I3SrF) z%Gtfsw}i_S<2YuxmZj$Ui;d%&XlzpXCC4Ep8kC176&!8Z^fW# z&}U8ata%kkeTQdl3}Q$iE=wij!Fx~d37c8e1kTxT@tZ)jtioK$bj*~-x?tlXeiumA zRXDFoC68YvAVge)h!@^}7S8(-*{wu82L*)~s+F%#lQ|B+`!G9OaIYFziC!+XNUpP1xXSG=G!wl*Vu_RY!f z1Gjr&yMr2`S8?-RJ!BWiAWuJFHkcLe@WHmV}_PjuU z3(scv>^NQ65iafs`q~TCMr~P5dYW!RpZ}a5KF-2zzCQZb2KEDDTyy+#xeM;mvzrjF zjd_ZzHdBeaT3k;rc$xsbBgaiG)s;Mk7+2Hl%D zG;P#J*D=s(y?0_xs;Qna>R*lbCnxD7sU8~M#L24>V>x32KF6)E`sm=$1~T)5!)EP| zG`FbPXc?xS|MT;Xg(%mKPNI0+6N1Q$tbEGe;tm=^SC4j#ZmiAk%V>wA2B z?>%4l2Y?lZ0X)J)S1e1|iJzsq9*h=(?X)yJQ6hj(80Wm^Oz|RP+awpMA@~ Date: Fri, 24 May 2024 20:01:55 +0300 Subject: [PATCH 05/13] =?UTF-8?q?=D0=97=D0=B0=D0=B1=D1=8B=D0=BB=20=D0=B8?= =?UTF-8?q?=D0=BC=D0=BF=D0=BB=D0=B8=D0=BC=D0=B5=D0=BD=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=B8=D1=82=D1=8C=20=D0=B8=D0=BD=D1=82=D0=B5?= =?UTF-8?q?=D1=80=D1=84=D0=B5=D0=B9=D1=81=20Serializable=20=D0=BA=D0=BB?= =?UTF-8?q?=D0=B0=D1=81=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/gb/family_tree/FamilyTree.class | Bin 4320 -> 4348 bytes .../ru/gb/family_tree/FileHandler.class | Bin 0 -> 1737 bytes .../GBLesson1/ru/gb/family_tree/Human.class | Bin 6706 -> 6734 bytes .../GBLesson1/ru/gb/family_tree/Main.class | Bin 0 -> 2241 bytes .../GBLesson1/ru/gb/family_tree/tree.txt | Bin 0 -> 847 bytes src/ru/gb/family_tree/FamilyTree.java | 3 ++- src/ru/gb/family_tree/FileHandler.java | 2 ++ src/ru/gb/family_tree/Human.java | 3 ++- src/ru/gb/family_tree/Main.java | 10 +++++----- src/ru/gb/family_tree/tree.txt | Bin 0 -> 847 bytes 10 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 out/production/GBLesson1/ru/gb/family_tree/FileHandler.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/Main.class diff --git a/out/production/GBLesson1/ru/gb/family_tree/FamilyTree.class b/out/production/GBLesson1/ru/gb/family_tree/FamilyTree.class index 6758ba17731dd1c1e384a5977bf9cd5736543b9b..6802d019c1b64c66f53851bada9488118de11ee1 100644 GIT binary patch delta 1548 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 WYW+p7nfML8{J_o4b3Diza{mU*D}}%S delta 2446 zcmai0Yitx%7(I8|?X1(?ZeP1gm%h+yb+;|FG(?mX6$I2GL}EovFf@v_L`zH*qlrzM zXf$Y`9YIAN{!lT-2L%cU6pMvYs?e=~AgK6$qN4b$eR%GjVY@6_%(QoA?%Z?E_qg}_ z_CWcDa-(~2+fD%22+?8`I?WrLrs&#u!r7_$eiqP0xGmh;+vvn80Zj-eelxcx2ZFx~ zc-5!y*6^0_1}GAcQ1VE+nuwJGbD6vLx?P-`05``pBqANj z$UrJG;pG(|G9P|~Fp7vQOu}efO@^7s#a!g!U7}_{=XfhR%qc0Q^}DIzQ15&Al!Q(` z=Rq4HRM%nX*sEi@j#=uDuLdY44caFS;^JFKm&ki^FjQ15gxG?T7QSkbb{f0`7xI3Q z(hgcn(V;ve$UL2r=jc|x`8~Ng!{s|^ zPw_N~PgmcATp^=S#F&&Q9-p!$JEEP917r}&;{=ERAA4*nM`|=x8L7sTs+?34MxYAE zQoVt7$|@smthp{Vb)vM)ry_j?a&RSmn}o|yLHj00D0AquB$6>JvF+?MPo-vwcGF0k zJZG3=3OS~d<63e|C&!HQbCA!4gnpUMiMf5`7ihqIW#6i_(t638f&`A0Oy*4Pr`d|n z#T7vQ8B6%gIAsuC#jKynzGkH~RJ0XyZ!F%7d9QO_boOs%{;Cw;Ioan9W!TNibWeRR zK9KA)ls1u2Jb+d1e@bBe1*G6VJR($yY@pIQETtb z@T*iH`65@Jc>CI8DpY9*2Meb%6=3FT)zpUW6}4=MIXa)Tl%a#`D63+ zAl+Czf*UIPWcfJ4Wj1DJM#bP^f*%9H@XdExBihF`2pGA?F zUT>PR!OB_Vd4W@T1kcStMy&edaYzJ~$Jt?0och&#R>Yw-kL zRC-pueA+$_PCSOs@r4TclM%ZYTW8cf=?l%4+uW*fFYzS5%$olSyV9$y{;x&x71(?U z7=tfqu~mOBfYy&pHXAo5p0XXg+h0Ckk_J=*c$1`W(Yf_Js4bk^NP<>HoX;;{gRz=Q z0`hHQC!3#a5}GRUE@%S?sD5V1ur9S#`p;5%n_SzdvYjeBsIrqP?f?e?Sibi2@?5=7Pxyich}z z!8}an%+uOVRI z0y+djd**?eDw^d&YGrFrZrcJKcdW8y-xcsjW7!~r0;9F+cB)!W6}D14X2~iZKC`P* zrqqzMzqNJf=+a;qcmo#&BJGw-rd1XQ6f0(4U^1F%k*?WQt6WIOGVM;Y4%IqI(wzvQ zM?=^^FD{)6dhM`g%MxR))ERo8i)>X=tAw=)F3nO}M+E&E1`G^hNTAnYKW`(T?JJKW z!|Xd7pPQ6)EUQEg8yLYTh1ARgDKHiN_ozK&W;KipjChE(igL~@=ZlgjGzNbcuHu@8 z>jrM%ErFqSk6hKV&8;Hi2v8;SdgE-|ukzYTbwi4Vn80v5UMt;-JE5db2qYSyOxK#M zT4vGuPLZZPv~B8$s?tgc^tZ#$)k|hMh<6z7N>LU%F@k^Nx$kH#m`dx6flrjsj#*ivo**7_{Q-7}+}(6js(i z4o?L1nzVB=pXX(#QFLJ;wn@eZl{}B8J7bmQa=o-AtLtt>hn<7Vnk+aLTVpX`?^-pM ziiZx>U(&=YIejJ)edzIAmNMDUwe z7jxLdws~!7sk_ZobvU}&vSz!}@#ufFLzd32x=y@IgB}#_xipO?o0F;LWSZ1#m3nns z&Qh{Kr%GQ^H40o|m-F$V0Lzi*gbt1y{7Ug(sMYuh#4nuqu*p$vtMMsE!!^KX_?%yz z_yW(kqMWzYlf(bMu$D%=un75pAWe0SUFas{C0umC$6Ww?36nN{ zgt0|fW{poy9+CvQdVCs$i~Lq9dQUO7ae^zEMEnKb^x-9 z6-F0!P#~bLdVT}=38|Hma07U0BA$4GxF5NejEjy%gb4lU!N8gD!`Nl0>emWicUV;T z7WP~g(Fx5-#ZRY*GW?s1r$}yu-#)@*kM?`W2pP}u{t518oaK*?@SsO~8R`gy-Q^`` zdDgN1Go*)fE+-~VFt_Y%EIRgo1-0h#?La(njHO(hN5b)@GY$rvKW;qY@}pyXnv1tm zmt=B)%al06w`!Cve2g7qoawrX60V_!>p0}Y^*tNFkBB=dn5Lv4erTj%4Ey*BMGC&f b5-D-!Bf>qDIr9@IiV9}|?(dVyhp+zuh{7H3 literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/tree.txt b/out/production/GBLesson1/ru/gb/family_tree/tree.txt index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8f345c49452b9a6add66f3482f5eacc1e3de6405 100644 GIT binary patch literal 847 zcmZutv2N5r5S{b+e8+K|;39NzBn=&n-6ExmL_!i7AtkgC+RH7zMYdzsYvQDcghWFd zDMgCZG|;4^f{GdnYHB2Y0WmXcutRXMp51xx&71e`Cvw3PlD z*H5tYzMS7%oV?v}z}bY}yhucvZ_Glt!eyv(W8ixDT)Y%PVN@K@%W|24{aln^pr%hv ze?@C?K#20y*QL|X;;ap=4RCXHD4F8!yT~Kb__C*UntlKMk2lA^R<<1IZGxl7$W&=F ze;|xBaMKzwDv?3Bw<}_LUJjwRJ6G{c%k%{tK?^xEDJ+K`yb!!drZcGxOhR1*(KKj; z5j^A`%DAaWaLUL|iA5R(+eWK2!d^EMsBiLWf|qA|MULRx{}JR(>W~2Uy~ZJtaerIt zlbzQe?%Z8J9{`luezy(K{WKVqERGj&I46hiohoX3yK2$j`u!RWj7Fs+4Yw}mYS*h& zV1y$z4A~BC=&z;QHB>N?Iz`W z$E_*#HpIGtHr8aqe%w%|f_aUM*bN=yGAlDGmT-Z`aa1G!C^FPyCib_$P#OIdZ9>Pa KO2?3nN% humanList; diff --git a/src/ru/gb/family_tree/FileHandler.java b/src/ru/gb/family_tree/FileHandler.java index f2805e9..56330ed 100644 --- a/src/ru/gb/family_tree/FileHandler.java +++ b/src/ru/gb/family_tree/FileHandler.java @@ -7,8 +7,10 @@ public class FileHandler implements Writable { public boolean save(Serializable serializable, String filePath){ try(ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(filePath))) { objectOutputStream.writeObject(serializable); + return true; } catch (Exception e){ e.printStackTrace(); + return false; } } diff --git a/src/ru/gb/family_tree/Human.java b/src/ru/gb/family_tree/Human.java index d2456df..441b813 100644 --- a/src/ru/gb/family_tree/Human.java +++ b/src/ru/gb/family_tree/Human.java @@ -1,11 +1,12 @@ package ru.gb.family_tree; +import java.io.Serializable; import java.time.LocalDate; import java.time.Period; import java.util.ArrayList; import java.util.List; -public class Human { +public class Human implements Serializable { private long id; private String name; private LocalDate birthDate, deathDate; diff --git a/src/ru/gb/family_tree/Main.java b/src/ru/gb/family_tree/Main.java index fd4edec..a5e151d 100644 --- a/src/ru/gb/family_tree/Main.java +++ b/src/ru/gb/family_tree/Main.java @@ -5,11 +5,11 @@ public class Main { public static void main(String[] args) { - String filePath = "src/ru/gb/favily_tree/tree.txt"; - FamilyTree tree = testTree(); - //FamilyTree tree = load(filePath); - System.out.println(tree); - save(tree, filePath); + String filePath = "src/ru/gb/family_tree/tree.txt"; + // FamilyTree tree = testTree(); + FamilyTree tree = load(filePath); + System.out.println(tree); + save(tree, filePath); } diff --git a/src/ru/gb/family_tree/tree.txt b/src/ru/gb/family_tree/tree.txt index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8f345c49452b9a6add66f3482f5eacc1e3de6405 100644 GIT binary patch literal 847 zcmZutv2N5r5S{b+e8+K|;39NzBn=&n-6ExmL_!i7AtkgC+RH7zMYdzsYvQDcghWFd zDMgCZG|;4^f{GdnYHB2Y0WmXcutRXMp51xx&71e`Cvw3PlD z*H5tYzMS7%oV?v}z}bY}yhucvZ_Glt!eyv(W8ixDT)Y%PVN@K@%W|24{aln^pr%hv ze?@C?K#20y*QL|X;;ap=4RCXHD4F8!yT~Kb__C*UntlKMk2lA^R<<1IZGxl7$W&=F ze;|xBaMKzwDv?3Bw<}_LUJjwRJ6G{c%k%{tK?^xEDJ+K`yb!!drZcGxOhR1*(KKj; z5j^A`%DAaWaLUL|iA5R(+eWK2!d^EMsBiLWf|qA|MULRx{}JR(>W~2Uy~ZJtaerIt zlbzQe?%Z8J9{`luezy(K{WKVqERGj&I46hiohoX3yK2$j`u!RWj7Fs+4Yw}mYS*h& zV1y$z4A~BC=&z;QHB>N?Iz`W z$E_*#HpIGtHr8aqe%w%|f_aUM*bN=yGAlDGmT-Z`aa1G!C^FPyCib_$P#OIdZ9>Pa KO2?3nN% Date: Fri, 31 May 2024 19:47:34 +0300 Subject: [PATCH 06/13] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84?= =?UTF-8?q?=D0=B5=D0=B9=D1=81=20Iterable,=20c=D0=BE=D0=B7=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D1=8B=20=D1=81?= =?UTF-8?q?=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B8,=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B0=20=D0=BF=D0=B0=D0=BA?= =?UTF-8?q?=D0=B5=D1=82=D0=BD=D0=B0=D1=8F=20=D1=81=D1=82=D1=80=D1=83=D0=BA?= =?UTF-8?q?=D1=82=D1=83=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/gb/family_tree/FamilyTree.class | Bin 4348 -> 0 bytes .../GBLesson1/ru/gb/family_tree/Main.class | Bin 2241 -> 2444 bytes .../ru/gb/family_tree/Writable.class | Bin 232 -> 0 bytes .../family_tree/FamiliTreeIterator.class | Bin 0 -> 1209 bytes .../family_tree/family_tree/FamilyTree.class | Bin 0 -> 5114 bytes .../HumanComparatorByBirthDate.class | Bin 0 -> 1025 bytes .../family_tree/HumanComparatorByName.class | Bin 0 -> 983 bytes .../gb/family_tree/{ => human}/Gender.class | Bin 1058 -> 1094 bytes .../ru/gb/family_tree/{ => human}/Human.class | Bin 6734 -> 6836 bytes .../family_tree/{ => save}/FileHandler.class | Bin 1737 -> 1752 bytes .../ru/gb/family_tree/save/Writable.class | Bin 0 -> 237 bytes .../GBLesson1/ru/gb/family_tree/save/tree.txt | Bin 0 -> 883 bytes .../GBLesson1/ru/gb/family_tree/tree.txt | Bin 847 -> 0 bytes src/ru/gb/family_tree/Main.java | 19 +++++++++---- .../family_tree/FamiliTreeIterator.java | 26 ++++++++++++++++++ .../{ => family_tree}/FamilyTree.java | 20 ++++++++++++-- .../HumanComparatorByBirthDate.java | 13 +++++++++ .../family_tree/HumanComparatorByName.java | 13 +++++++++ src/ru/gb/family_tree/{ => human}/Gender.java | 2 +- src/ru/gb/family_tree/{ => human}/Human.java | 2 +- .../family_tree/{ => save}/FileHandler.java | 2 +- .../gb/family_tree/{ => save}/Writable.java | 2 +- src/ru/gb/family_tree/save/tree.txt | Bin 0 -> 883 bytes src/ru/gb/family_tree/tree.txt | Bin 847 -> 0 bytes 24 files changed, 88 insertions(+), 11 deletions(-) delete mode 100644 out/production/GBLesson1/ru/gb/family_tree/FamilyTree.class delete mode 100644 out/production/GBLesson1/ru/gb/family_tree/Writable.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/family_tree/FamiliTreeIterator.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/family_tree/FamilyTree.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByName.class rename out/production/GBLesson1/ru/gb/family_tree/{ => human}/Gender.class (56%) rename out/production/GBLesson1/ru/gb/family_tree/{ => human}/Human.class (76%) rename out/production/GBLesson1/ru/gb/family_tree/{ => save}/FileHandler.class (69%) create mode 100644 out/production/GBLesson1/ru/gb/family_tree/save/Writable.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/save/tree.txt delete mode 100644 out/production/GBLesson1/ru/gb/family_tree/tree.txt create mode 100644 src/ru/gb/family_tree/family_tree/FamiliTreeIterator.java rename src/ru/gb/family_tree/{ => family_tree}/FamilyTree.java (88%) create mode 100644 src/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.java create mode 100644 src/ru/gb/family_tree/family_tree/HumanComparatorByName.java rename src/ru/gb/family_tree/{ => human}/Gender.java (55%) rename src/ru/gb/family_tree/{ => human}/Human.java (99%) rename src/ru/gb/family_tree/{ => save}/FileHandler.java (96%) rename src/ru/gb/family_tree/{ => save}/Writable.java (83%) create mode 100644 src/ru/gb/family_tree/save/tree.txt delete mode 100644 src/ru/gb/family_tree/tree.txt diff --git a/out/production/GBLesson1/ru/gb/family_tree/FamilyTree.class b/out/production/GBLesson1/ru/gb/family_tree/FamilyTree.class deleted file mode 100644 index 6802d019c1b64c66f53851bada9488118de11ee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4348 zcma)9`&V4m75?rpGj|v+kP;wHAUt9WFvCk46NQ-Y&?pEKEi^Ap(+k|dO@8XF zV>H#+R;^7RiT3@VkF+b=Kvr}uSJ!e?yZRIPsr{|}t$%|q)AZZt-nk3}sEf7co_p>& zdw<{F-`?l&_y4~40f1ioNrz9v=2PaZ*_O@NiMF0}+MFA-XEI@E@EZsqs3Ex5PTHA$ z8VVYl4uugyp^mV8E7DM%&bCdAww*Mm?8MxOOxm*A4yf@6hcw+dxNKbPc8P^z_;r+M z*rdKC%;ZGd!O>IJSf-H1HyQW>$}|*CW~a=g?BT-IR*F!L3LTXOw%{%eB`ck12#uwZ z8PiVAXsB=@o~MRyv{ela>T$<9HW)7No(wMP7aFH zQwEOXD+EuN!_%qk3|&+)YU_zXKz-GKDN-n;wwyhp+c5*<3Vqs|O3hlb@T7qWOj3k2 zE?$`>DmR2v22ST#^(RlJbWBmh%Vp;v@69TWg^_?iglTeHdb4in+S0ACj#&fG;8}`h#y&&(MAtQ&2t>T+gTSD3(t#%v#TIEJ*8_Sljm6C%D_to&P$*|nUn)t z$IFy}ijabDgfd-$=g<3!5 zkhZv}_0B~bp=LKcX(z{f=bWP5vA!nrefpEC#LJxI<*AjV_J0l&{|6Dv^{_QQPSy-X z7f`}64}bo?%9&0Sa0D39 z_n{rVj)LpZ-%%^S#osV@^Ban2_1kKs*5W&Ojc;P7h%3a-5k6&YIC`D7Vhbo0D+LfM zC42&<@M9ASiAF3{I;&kv;>khzI=>kTk<47+$ie*vN8jbW#zB3FJjGjA>|+E9u0*e) zG4ci~NZkDxBnf*-zM2VwDQ;KDq|H$T5L&}YjHPz*!O zH*lYZOQ__4>HG`o<1PHU|M2|n|13wWOl{kNZMX+_V<-O_l>0hD-bRq$r&Eb(g9oG` z4+wMe8Nxbte@X^ExpJ(5r*A_%2iC$9rSBN=G!swD3Oqmf{CG6{5I-U+ibiWAi4bX| zqgCe@(LdD8Y-(3sA;z0?LF@EK{BGF#W#q)IGY|+;UarOT^hq2?OoWaW6+56#6de;6C1ic2m@QcuL=oQ!JAybYU8M z743aY!4Vdf&}NvqN)i$fCSF3)O!8&MUFR_^8u8KUalFM{1;~lqnYq9j(N8^spP^Vs z{VkN~D5v3DsOKvO4WGdGDNQ)F@HWl<7(a1>h!6P`*WGU1hNJ*ga^uvT65CD=+>kJo zi+G%h8@U9dS)%Dg2CZK zKO?#jgCKJ z$aq9?+{Kt~K@`7IiLIgPf6bA^rO#vAhu^TnN=NL&JV#C%OW?bO{VH$upYW@O-+Gij zbSd??lsa8X9cxhf2wN4Uk5Co~Xo`{iu1)9&2^}TiV2|Yy>ALljx1WAqN5o+`Z z)q8|`JVHGlp`O)*9?U27JNj{Qlq4aMK$T0VToH+j1gW`EAM#`GbhVSrzy!~PNw(Ni z3Yv7a5*DB6NxE8<2dIj4B*LN@o>LLZhnH~I_Xs`9@`_rztG@U)ifaomz6ISs4}V_9 z<)j0W%9C^IRCx9)Sfn}o0r)m|OSyl!}dAL>^$Squ3^8)l~KC~t33~vfdZ$Q*GZjda+h_{wecy`0?|d- z;?k#1TZiv+%7t^123*6M{Kw#K{u@_I;tsu!1dsjXV5}^)h^KjEs_v21u!yzQL6*$jbTK|7LG_aXA3a;d+)ie}Pqhjwi^A{CE2$*4cSH!h1>_ rFSF`i@dDE021F8j$i*Gvs^8-eL@qi|_0_5)p$@q1oRy>8hd=%gih-C2 diff --git a/out/production/GBLesson1/ru/gb/family_tree/Main.class b/out/production/GBLesson1/ru/gb/family_tree/Main.class index c106c677d207bacbe9482713d922a49e0d064f38..6b018268bb959531587fa56831d2f772442223b0 100644 GIT binary patch literal 2444 zcmb_eTUQ%Z6#h;Um@rHsghC62a%*XB5RrOoDy_6qF5zN9Qm9%7atMRD;ADd0i@xcL z%fF&LKr3sx>Z?D%XMc&y@5}_DCMHE^h3|O-G>du2r<02?2j3x*9}KV5n?wChbZxw~^d33s!#rnPW?t zESq~Wsb-_jmyQk{%^C~?m(U{6St~woT1A1NBg@VTl>`!zXu4MHtc5Apnvza6A%r#! zVFT^B{0i^o{jwtqq+6FC524Ob0xp@(g!?k;n=RpY@I5 zv5L7=wANh(KVo1MNopzr0`aOQW4kPE%gkF}Ddf}{g?4L{8%}nZoZN+|(?9;Mns%(E?;4zkY zz|Cyd1z;&hF2Z1)jNwBAtH=m6-g!){tvO%^DNv$_~?wymm{90R;`e7x7dlflwJBgc>UmgG~Y)z}flPn`JhF-NrxG~*MFh9`h$_>^x= zFtNcErTn$JA^E%+*3!>u?EtNbLv-+W?R45-ot}aZB1ol6RBeIA%c=!!2=m*;3#%8G zaRXOe!~GsOHj$;gpErTT7ESYFK@QtAuEWAkmCPL9m51%e7+O2R&2&8W0>eJMM9+_0 z_WbgK&`ko@Toaw1iVF;`Hsdqo38=H37plNdXj*w0t^&^|V(}M9_>nnvsl}D(BSJr& z88|~fj3TM3Pq<1yNOWaI(dRz^&x&ZGTMd-@;TS!n|JvL!#@52)2Y91R`!!^QjOR!l z;k~rG{O|x%ZQ9FFV<_w`&%4VruJrFAJ*0Cvo;bqXg1fQc%Ks76PL}TkV(~*PWn#<~ z#}Rkz3b+q$tZ;ed5Kl6()6k7FIACsq80M{hi(NQ^MMRm21Vc4~GDEh{disWa>U)g4 rA-GMKg7~%?f@?5=7Pxyich}z z!8}an%+uOVRI z0y+djd**?eDw^d&YGrFrZrcJKcdW8y-xcsjW7!~r0;9F+cB)!W6}D14X2~iZKC`P* zrqqzMzqNJf=+a;qcmo#&BJGw-rd1XQ6f0(4U^1F%k*?WQt6WIOGVM;Y4%IqI(wzvQ zM?=^^FD{)6dhM`g%MxR))ERo8i)>X=tAw=)F3nO}M+E&E1`G^hNTAnYKW`(T?JJKW z!|Xd7pPQ6)EUQEg8yLYTh1ARgDKHiN_ozK&W;KipjChE(igL~@=ZlgjGzNbcuHu@8 z>jrM%ErFqSk6hKV&8;Hi2v8;SdgE-|ukzYTbwi4Vn80v5UMt;-JE5db2qYSyOxK#M zT4vGuPLZZPv~B8$s?tgc^tZ#$)k|hMh<6z7N>LU%F@k^Nx$kH#m`dx6flrjsj#*ivo**7_{Q-7}+}(6js(i z4o?L1nzVB=pXX(#QFLJ;wn@eZl{}B8J7bmQa=o-AtLtt>hn<7Vnk+aLTVpX`?^-pM ziiZx>U(&=YIejJ)edzIAmNMDUwe z7jxLdws~!7sk_ZobvU}&vSz!}@#ufFLzd32x=y@IgB}#_xipO?o0F;LWSZ1#m3nns z&Qh{Kr%GQ^H40o|m-F$V0Lzi*gbt1y{7Ug(sMYuh#4nuqu*p$vtMMsE!!^KX_?%yz z_yW(kqMWzYlf(bMu$D%=un75pAWe0SUFas{C0umC$6Ww?36nN{ zgt0|fW{poy9+CvQdVCs$i~Lq9dQUO7ae^zEMEnKb^x-9 z6-F0!P#~bLdVT}=38|Hma07U0BA$4GxF5NejEjy%gb4lU!N8gD!`Nl0>emWicUV;T z7WP~g(Fx5-#ZRY*GW?s1r$}yu-#)@*kM?`W2pP}u{t518oaK*?@SsO~8R`gy-Q^`` zdDgN1Go*)fE+-~VFt_Y%EIRgo1-0h#?La(njHO(hN5b)@GY$rvKW;qY@}pyXnv1tm zmt=B)%al06w`!Cve2g7qoawrX60V_!>p0}Y^*tNFkBB=dn5Lv4erTj%4Ey*BMGC&f b5-D-!Bf>qDIr9@IiV9}|?(dVyhp+zuh{7H3 diff --git a/out/production/GBLesson1/ru/gb/family_tree/Writable.class b/out/production/GBLesson1/ru/gb/family_tree/Writable.class deleted file mode 100644 index 312fc4419dec094a965c2312cbf6d1ad38dcb74b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmY+9F$%&k7=_;Xg(%mKPNI0+6N1Q$tbEGe;tm=^SC4j#ZmiAk%V>wA2B z?>%4l2Y?lZ0X)J)S1e1|iJzsq9*h=(?X)yJQ6hj(80Wm^Oz|RP+awpMA@~tG{1IGM;ilS~sDIjknL@_~$6CWTX@}hU6j^gM@*BS87@x>P( zG!YFx7@z&4jOVsR#%3fE)`4Yq(AY&p9C1WT{;J zZwz^F2;@%?{lZzo!~GM|gkNR+TNa zC6HMUWc|%ExgUESWvzSrkTxFogI#qwDfjsn1k&rRj$e0HTve{|{+wr&Iwsi#8hG^_ zHP!E2-{fDTVTvysm1~_?61TX&&7I_|an4%bAgt*l7*^s4na_k0xWh5e0FX#W1}O~l z$)ZH05QU)(i#rm;a?@NZ*$A2XYv3+d_b|gz$v$PYI#aN|Aj8)<#sz`*F!T@56Ce2{ zQXdFUjf9F3Yav#&c_s;M^a1}l)%F|}@iIY0TvVji3$kzNub9v=#x?xJlmQ1`l=xCu3h)T<|%}hf??d0IoI(QUCw| literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/family_tree/FamilyTree.class b/out/production/GBLesson1/ru/gb/family_tree/family_tree/FamilyTree.class new file mode 100644 index 0000000000000000000000000000000000000000..bf6210ea5af0f135a239d99e5032a5bcada0715c GIT binary patch literal 5114 zcmb7I?Oznv6@F&f-GOBgMZm10fLetGgc#xr7!^<>7SIGLYGTX)ql_-Qxa^W(Uy_(; z64Nv`v8|f){e`~RR*hiM)~3Jwn)KIC_^JKYe(T?m{9^5M?#vDgqS7zBckbMK&hwn} zoOAE)-~W5#7Jz2_MTbwr!lUM}S({4Q(b}d&!W?O{hms*^@EZsqs3Ew?j@il08nP-X z_lA&-933Hfm#d*7k*Yn?Q+wDPu%jb~k_pS2Hr}D;yEsiZ6>U?F#7Co8%Y$FXJPq^J zyQmpEQoFn7sMVXyp`-Z*7N9^wPJe2^jL9A@oM|N&g(%WdY+w-{(J*hi6AjtD@mSKd zV?!E>TnHI%8Y>TofyD-v$nGq&uTMNLHLwh&+^jqgwf1Syc7;%mqFP?j_CQN2PT8n3P%XRj)b5sk zJKAR@VuERnfm+mQ2pzGKp4Ebi%Gn~d*1%(^Cowx|CCp?zp`m!%%2s#2F&FEwUdILl z8_}SlU@ETZB^va8bEw05k!hhe7|3#rTIE7b;VFNGVMapQ%KEWUmWvf^|A(p?Y zp`@bq{`<4>b#|M{Ta#CApCPInw@-3>wV^B|7G4qyFVBGFbezTqnLNn`pbWfb;FJU^ zI~jLi>v&zmWA~;gvnQ&K&=MaQG*!(tkBEFiI1Rs$J!9Z4d{fBA6AW88vr$fMVjIx$ zEe#v~Pgl)$BH6#qOw!-m(rmx2q3*#ZRM)npYo{wcgtOB1&r$J85_Y_{(@NN8)IMSM zL@gcPO*aUYPqmHn)MKZ8BxWX43639~(T_GgMAw@e8IqQGAGhYW*)gjlHPB-vy2K&9 zwZ(hQ=w6c``0P&lll?XuYGf9}nc0{+mFS^(x}lN5w6XfkG|1WWaJ-eQd1+|r13(=I z8cJuuqh2{D1wrI>Ce7Ys?dG6MBuJs~aA2ACN}qR{U8mg>Wq%>Tg`WJ?sjUuE4L+L- zwN_S3!s4R(dlx;N0S}SGcC614sD_pIFWgMe{+Q~91x|u9N}ANR&%wl;aIv#>TYY_u z0K-zTYgZ+EXi$am(ez*~1*c|sU~|$Nb3VlF+w9?ZLV9YD{V+AmLEeyR*=}27>D|M? zeMKUnp?ETp4otq3YV(L!TN>7i^Y#=3Nc&BcDGGoDKH zT03m1oBS#9uaQ#bk&w+xm=EvaJN)#?wTE{@pIp3n2mGEIpXU>UjvzlTaHauS905k; zCba$6k#!yV6}9prKSSINk|-3jNbj{=-m%%F4L=DiE|Al3|^#l)N}MW3urxxuz~mAjTChQ?_!NO%8T#-He(Q5 z6z$DS!9EIFXfw>*Aqfcx6E7hN{1U%n+;v{YL?b?0J&0d(R~FJDcV^CWM)XsT;1|f# zQGN#nItpp{4$Aq+!RpW8`AXiv6Y#p3ZD5CCE=j@E(`}`bSSJ|92%AWkWuW*mEhXh&pKH0yIJCUsOhJe_@|lN zF8-3~RvhaY(?zVh4^?89QT5k2a^m82KZ(#7+k;2Zo*|)U3HTrhJx4-^sOIOX+8&a!G6+?8 zgvvcaO=&^})Aj@KE!-;U;*U(%!&!Qe(yF_+q?XMnDXa9{MFhkC%cFPy zrAa9{XG^i#pCXN6w(=KHg%M`wghzWB`%Sux>O5F=8L$jwInBIG>O_-YEH1iQehalg zWE{4*l;aQ7s7$`3TsS9bz%{JN??QL;-?&;5xA!KZJoaO4RR!^J9Osd#x<^W*07km2 z3ce;4wMIu&9dOGzdsA_ima#=t!tVuw_$E%1 z*&7ph)5oro4v%xCd586KHX}p}yb%5Ie#YLWv3F)Q_8yI$o7EWqpJAK@**X`QaT90v f3%cugcV^DcXV@@YKu*X16RkL-Tlll0^3neQDtLPz literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.class b/out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.class new file mode 100644 index 0000000000000000000000000000000000000000..1433df4ad784e36e2ef92b63ce568292dd3a2bca GIT binary patch literal 1025 zcma)5-A@xi5dZD9aP+uJ1r+?i0*c%L@uDvpOGs#qv8H|`5MIspSbIzE!>oHI{7=64 zQWGDH&;C)y*=rLnv<4q`W@mQhH@}&i`~By~PXKNB4lGn`R9(zqmZ5RRzwjXD=^%L5 zKNF#5nBAAD)CUX|&p&Z6hnfw?#XMYwHI)a0e(;eeGCu#Hl@LLcCp-;a8Oh)dgl^4!zzaOsVJA70-Ux#%+e> zqQzXxIJhXuQ0-)=G^d50OvT$g=?itt`!RVIi@r{{lExl8t2&aO8JD}Z-kDr)AwBQL};OiW$j1~Qm%7F-E=3jMxILp z*}sC<0X5(pWw{E)OKHZ`{P#zEWG0RcS_umbw`lt-q-p6%-XSX>%}CGedq$1<3rv literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByName.class b/out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByName.class new file mode 100644 index 0000000000000000000000000000000000000000..9aeeed176e7695410732f141e1250ec5836563ca GIT binary patch literal 983 zcmah|-%r#)5dOAzP_FdkMDPcSAgHuJY}6PZj*tL}@yvlHM|d@R$J$%cA7X#XJe#8p&XXLZ9$h zFf4g~_X@kGl}y66gBw_|(QSG;<6sHPHg3DPgS!kb z#~D@G<-Cq^Os-RPcv-Ns%Q6fHUUwX!(o=iNXTM`(h1$(~&9sbyt7;7Oqx77HvCx%? zILYF^P^Y{fk!P`+4tR9Nl{9wgtm~ot!tiQB$*DcH8LadU(oAS& z;?q4dbH*du0SgTGXs2tWX_ZOdCo3S$NY8Bl0Q*iC3lB(|&w!0pl5P=zhgc(vnKdG5 zlHZws!$jF(oxDphcRFg(q~e@Dy9Q_Wl9a7wn?| literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/Gender.class b/out/production/GBLesson1/ru/gb/family_tree/human/Gender.class similarity index 56% rename from out/production/GBLesson1/ru/gb/family_tree/Gender.class rename to out/production/GBLesson1/ru/gb/family_tree/human/Gender.class index feb1c420aa126497fdc9cc596cf2c6f40bfd7e37..7f1f08e4d529787599d8984dae0c8cc67993457a 100644 GIT binary patch delta 125 zcmZ3)ag0O#)W2Q(7#J9w7>wB&m>3!4ic0mDoQab zOl%Zph4B0g85Jish(LLhA2KUzXu|oEyBKvCO(t(=RENkwB&m>3x(ic0md=BZHI=hT@4)h9c6@Sj3k;6qD7^#3D0!5u*;H-sJO)>XZL47BcEg N&SO&EJe_GhBLK^%Nl|L5enx3-V&24LFG&R-T#^UgG0vTQkWF~9 zKc_G&SpDQgPPxg_EFzQZ;35+^rJ!<#O#2v>CVyZOH36&DcTderNiDMGWN>HjU}x~; zVen!QV`PxSVcTY1W>-c@d0dX!+{*HpiBS<`Jk+{c_B)J*lcPA4q5K+-3Pvvs=gP8b vhA}d9V2B$)bs?O;l2cwvNduStlkac_;FEUXn$KuF`2m+I#N5p+++O?uOEG`J delta 215 zcmdmDdd_4*ppbY`seXErep+H~W=>^%Nl|L*#7r+nsmT*Lg(seU%h)~HkW+1PET_!m zSInZ5C76UK8!|~w4q)2LETf?bQl#OYnwOGVWX;Lo&fvk$;K{?_#URGWAc0}*=5S_L zMn*}Hp3U1>9x*XXLkyU_h5a_8_T&j1%9D3;lry?OEmUAEgIf)=_8+GllZ*z)gvsVy W{xIf3u6c~QlO4EKH)nHu@&f=3Tt8d@ diff --git a/out/production/GBLesson1/ru/gb/family_tree/FileHandler.class b/out/production/GBLesson1/ru/gb/family_tree/save/FileHandler.class similarity index 69% rename from out/production/GBLesson1/ru/gb/family_tree/FileHandler.class rename to out/production/GBLesson1/ru/gb/family_tree/save/FileHandler.class index fb6c201f0c95b7f82ae6486aaf40dceba87a9dc3..9866f0b6313b30ce063684a51052818578f64252 100644 GIT binary patch delta 103 zcmX@fdxLj_5|f=$QK^1k7be6Y%GUdg1u0sud9BbfjI delta 88 zcmcb?dy;p95|fE+QK^1NvOAhoksx0(ASJX2?d3MUMYdzsYvLdjDN=p{ z6ckV(N-9b!sOVE55DkBT-vBeS2Kzv9vEG?|Z{C~t?k99|4L5Y*M-zWfBq~09Xtb1b z_ciX{$M)X$Z_nPmel8qvwxBmF5|QSc(-6+_HB`AVun;~HPef1{6$jK=DKoI2i&Bg9 z=+mRWsdRyQq zvNKWI%x(!I4P3Hzj7nq>?(d42+AAUSc4sP{YMDNUBWNLKDuv}x!wbQSWIC1Fz_m~p zK{N>(@dPX%tTO_Kxv5A{Yh<-zkw(Fe(JGDbt(yr{F?prq<=K9bBlzl>V|lAOHoycf zaBQ@Mza#aF2PYpcU*C8?04TGAZX2NcX)q{R0t;|BIfv^`6~3*`TlANHzeWS2ang~7 zD`zEbSFL8j2!%Ba*%WQ--%g99`Is4S?}!-J^tOu}A^&=#H2QM}TU=EJKYF9uV6_fW zhI5p5lk%hE)|7fDVqHWVYcgR!ZYWd1yhc*&hK{8&D>J%`ae;erR3raPWT?d~+utHX SW%PGw6S~Ax=@`b`HG3a{$ literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/tree.txt b/out/production/GBLesson1/ru/gb/family_tree/tree.txt deleted file mode 100644 index 8f345c49452b9a6add66f3482f5eacc1e3de6405..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmZutv2N5r5S{b+e8+K|;39NzBn=&n-6ExmL_!i7AtkgC+RH7zMYdzsYvQDcghWFd zDMgCZG|;4^f{GdnYHB2Y0WmXcutRXMp51xx&71e`Cvw3PlD z*H5tYzMS7%oV?v}z}bY}yhucvZ_Glt!eyv(W8ixDT)Y%PVN@K@%W|24{aln^pr%hv ze?@C?K#20y*QL|X;;ap=4RCXHD4F8!yT~Kb__C*UntlKMk2lA^R<<1IZGxl7$W&=F ze;|xBaMKzwDv?3Bw<}_LUJjwRJ6G{c%k%{tK?^xEDJ+K`yb!!drZcGxOhR1*(KKj; z5j^A`%DAaWaLUL|iA5R(+eWK2!d^EMsBiLWf|qA|MULRx{}JR(>W~2Uy~ZJtaerIt zlbzQe?%Z8J9{`luezy(K{WKVqERGj&I46hiohoX3yK2$j`u!RWj7Fs+4Yw}mYS*h& zV1y$z4A~BC=&z;QHB>N?Iz`W z$E_*#HpIGtHr8aqe%w%|f_aUM*bN=yGAlDGmT-Z`aa1G!C^FPyCib_$P#OIdZ9>Pa KO2?3nN% { + private List list; + private int index; + + public FamiliTreeIterator(List list) { + this.list = list; + index = 0; + } + + @Override + public boolean hasNext() { + return index < list.size(); + } + + @Override + public Human next() { + return list.get(index++); + } +} diff --git a/src/ru/gb/family_tree/FamilyTree.java b/src/ru/gb/family_tree/family_tree/FamilyTree.java similarity index 88% rename from src/ru/gb/family_tree/FamilyTree.java rename to src/ru/gb/family_tree/family_tree/FamilyTree.java index c91e7ef..2a0443a 100644 --- a/src/ru/gb/family_tree/FamilyTree.java +++ b/src/ru/gb/family_tree/family_tree/FamilyTree.java @@ -1,10 +1,13 @@ -package ru.gb.family_tree; +package ru.gb.family_tree.family_tree; + +import ru.gb.family_tree.human.Human; import java.io.Serializable; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; -public class FamilyTree implements Serializable { +public class FamilyTree implements Serializable, Iterable { private long humansId; private List humanList; @@ -135,4 +138,17 @@ public String getInfo() { } return stringBuilder.toString(); } + + public void sotrByName(){ + humanList.sort(new HumanComparatorByName()); + } + + public void sortByBirthDate(){ + humanList.sort(new HumanComparatorByBirthDate()); + } + + @Override + public Iterator iterator(){ + return new FamiliTreeIterator(humanList); + } } diff --git a/src/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.java b/src/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.java new file mode 100644 index 0000000..9938bc9 --- /dev/null +++ b/src/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.java @@ -0,0 +1,13 @@ +package ru.gb.family_tree.family_tree; + +import ru.gb.family_tree.human.Human; + +import java.util.Comparator; + +public class HumanComparatorByBirthDate implements Comparator { + + @Override + public int compare(Human o1, Human o2){ + return o1.getBirthDate().compareTo(o2.getBirthDate()); + } +} diff --git a/src/ru/gb/family_tree/family_tree/HumanComparatorByName.java b/src/ru/gb/family_tree/family_tree/HumanComparatorByName.java new file mode 100644 index 0000000..500f4da --- /dev/null +++ b/src/ru/gb/family_tree/family_tree/HumanComparatorByName.java @@ -0,0 +1,13 @@ +package ru.gb.family_tree.family_tree; + +import ru.gb.family_tree.human.Human; + +import java.util.Comparator; + +public class HumanComparatorByName implements Comparator { + + @Override + public int compare(Human o1, Human o2){ + return o1.getName().compareTo(o2.getName()); + } +} \ No newline at end of file diff --git a/src/ru/gb/family_tree/Gender.java b/src/ru/gb/family_tree/human/Gender.java similarity index 55% rename from src/ru/gb/family_tree/Gender.java rename to src/ru/gb/family_tree/human/Gender.java index 56f1032..2c38dd7 100644 --- a/src/ru/gb/family_tree/Gender.java +++ b/src/ru/gb/family_tree/human/Gender.java @@ -1,4 +1,4 @@ -package ru.gb.family_tree; +package ru.gb.family_tree.human; public enum Gender { Male, Female diff --git a/src/ru/gb/family_tree/Human.java b/src/ru/gb/family_tree/human/Human.java similarity index 99% rename from src/ru/gb/family_tree/Human.java rename to src/ru/gb/family_tree/human/Human.java index 441b813..5019dc1 100644 --- a/src/ru/gb/family_tree/Human.java +++ b/src/ru/gb/family_tree/human/Human.java @@ -1,4 +1,4 @@ -package ru.gb.family_tree; +package ru.gb.family_tree.human; import java.io.Serializable; import java.time.LocalDate; diff --git a/src/ru/gb/family_tree/FileHandler.java b/src/ru/gb/family_tree/save/FileHandler.java similarity index 96% rename from src/ru/gb/family_tree/FileHandler.java rename to src/ru/gb/family_tree/save/FileHandler.java index 56330ed..70871dd 100644 --- a/src/ru/gb/family_tree/FileHandler.java +++ b/src/ru/gb/family_tree/save/FileHandler.java @@ -1,4 +1,4 @@ -package ru.gb.family_tree; +package ru.gb.family_tree.save; import java.io.*; diff --git a/src/ru/gb/family_tree/Writable.java b/src/ru/gb/family_tree/save/Writable.java similarity index 83% rename from src/ru/gb/family_tree/Writable.java rename to src/ru/gb/family_tree/save/Writable.java index 684581f..6c22145 100644 --- a/src/ru/gb/family_tree/Writable.java +++ b/src/ru/gb/family_tree/save/Writable.java @@ -1,4 +1,4 @@ -package ru.gb.family_tree; +package ru.gb.family_tree.save; import java.io.Serializable; diff --git a/src/ru/gb/family_tree/save/tree.txt b/src/ru/gb/family_tree/save/tree.txt new file mode 100644 index 0000000000000000000000000000000000000000..b7eaa6a31be80058417c164a154bb9388d353865 GIT binary patch literal 883 zcmZ`#J#W-N5S{b+e8+K|!bK=j&;g>NvOAhoksx0(ASJX2?d3MUMYdzsYvLdjDN=p{ z6ckV(N-9b!sOVE55DkBT-vBeS2Kzv9vEG?|Z{C~t?k99|4L5Y*M-zWfBq~09Xtb1b z_ciX{$M)X$Z_nPmel8qvwxBmF5|QSc(-6+_HB`AVun;~HPef1{6$jK=DKoI2i&Bg9 z=+mRWsdRyQq zvNKWI%x(!I4P3Hzj7nq>?(d42+AAUSc4sP{YMDNUBWNLKDuv}x!wbQSWIC1Fz_m~p zK{N>(@dPX%tTO_Kxv5A{Yh<-zkw(Fe(JGDbt(yr{F?prq<=K9bBlzl>V|lAOHoycf zaBQ@Mza#aF2PYpcU*C8?04TGAZX2NcX)q{R0t;|BIfv^`6~3*`TlANHzeWS2ang~7 zD`zEbSFL8j2!%Ba*%WQ--%g99`Is4S?}!-J^tOu}A^&=#H2QM}TU=EJKYF9uV6_fW zhI5p5lk%hE)|7fDVqHWVYcgR!ZYWd1yhc*&hK{8&D>J%`ae;erR3raPWT?d~+utHX SW%PGw6S~Ax=@`b`HG3a{$ literal 0 HcmV?d00001 diff --git a/src/ru/gb/family_tree/tree.txt b/src/ru/gb/family_tree/tree.txt deleted file mode 100644 index 8f345c49452b9a6add66f3482f5eacc1e3de6405..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmZutv2N5r5S{b+e8+K|;39NzBn=&n-6ExmL_!i7AtkgC+RH7zMYdzsYvQDcghWFd zDMgCZG|;4^f{GdnYHB2Y0WmXcutRXMp51xx&71e`Cvw3PlD z*H5tYzMS7%oV?v}z}bY}yhucvZ_Glt!eyv(W8ixDT)Y%PVN@K@%W|24{aln^pr%hv ze?@C?K#20y*QL|X;;ap=4RCXHD4F8!yT~Kb__C*UntlKMk2lA^R<<1IZGxl7$W&=F ze;|xBaMKzwDv?3Bw<}_LUJjwRJ6G{c%k%{tK?^xEDJ+K`yb!!drZcGxOhR1*(KKj; z5j^A`%DAaWaLUL|iA5R(+eWK2!d^EMsBiLWf|qA|MULRx{}JR(>W~2Uy~ZJtaerIt zlbzQe?%Z8J9{`luezy(K{WKVqERGj&I46hiohoX3yK2$j`u!RWj7Fs+4Yw}mYS*h& zV1y$z4A~BC=&z;QHB>N?Iz`W z$E_*#HpIGtHr8aqe%w%|f_aUM*bN=yGAlDGmT-Z`aa1G!C^FPyCib_$P#OIdZ9>Pa KO2?3nN% Date: Wed, 5 Jun 2024 19:48:43 +0300 Subject: [PATCH 07/13] =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20=D1=81?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=B8=D1=80=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GBLesson1/ru/gb/family_tree/Main.class | Bin 2444 -> 2453 bytes .../family_tree/FamiliTreeIterator.class | Bin 1209 -> 1331 bytes .../family_tree/family_tree/FamilyTree.class | Bin 5114 -> 5622 bytes .../HumanComparatorByBirthDate.class | Bin 1025 -> 1278 bytes .../family_tree/HumanComparatorByName.class | Bin 983 -> 1231 bytes .../gb/family_tree/family_tree/TreeNode.class | Bin 0 -> 768 bytes .../ru/gb/family_tree/human/Human.class | Bin 6836 -> 7283 bytes .../family_tree/FamiliTreeIterator.java | 8 +-- .../family_tree/family_tree/FamilyTree.java | 56 +++++++++--------- .../HumanComparatorByBirthDate.java | 4 +- .../family_tree/HumanComparatorByName.java | 4 +- .../gb/family_tree/family_tree/TreeNode.java | 21 +++++++ src/ru/gb/family_tree/human/Human.java | 28 ++++++++- 13 files changed, 83 insertions(+), 38 deletions(-) create mode 100644 out/production/GBLesson1/ru/gb/family_tree/family_tree/TreeNode.class create mode 100644 src/ru/gb/family_tree/family_tree/TreeNode.java diff --git a/out/production/GBLesson1/ru/gb/family_tree/Main.class b/out/production/GBLesson1/ru/gb/family_tree/Main.class index 6b018268bb959531587fa56831d2f772442223b0..ef9e6c0231a9ecbbb442f47e7b28008de7846832 100644 GIT binary patch delta 28 kcmeAXo+`YdjD<;CWAb@cd5(~x)KtIxl+?}BSiZ3U0E7q$vH$=8 delta 23 fcmbO#+#|f9jD<-_W3nKt@Z|YyJewD=d}RRuQOE}l diff --git a/out/production/GBLesson1/ru/gb/family_tree/family_tree/FamiliTreeIterator.class b/out/production/GBLesson1/ru/gb/family_tree/family_tree/FamiliTreeIterator.class index be79a918f0d2e4edc904e1836417020ee83b9875..fe6c7131d40b15e2b7430e41ca0bf146d66d8450 100644 GIT binary patch delta 396 zcmdnVxtWXW)W2Q(7#J9w7|bSeeP>jg{F_luE~F?m)h|CKm5YIcL5_z(obPCW8);2C=vqR2Uc;l!0s}23;Uak3khu*g|5AaqGUbwTVg6mSG;F@oCT n2&6$KvubT)klg@eFi-Aekyl1&W`$~If;!Wf!33y^iNO>AgojA! delta 415 zcmdnYwUd+U)W2Q(7#J9w7)&N|eGif?D%DR<(oajw&CIEcFDXh*)z2u+P0Z8x0Fhh_ z91LK6v#^PGwZrH}uI$EKAfcEy>K$_sJ|Su_2&mKI1$C z6AcnIbu+0;hya}fwkjtvFJ0e1DJwO(#F~-8eKHHPnj8U3b(mur6DM~uhbZ$fFam>w zpMje}1;|ncvY8lkfGk}GJs_zDI8ho~+9vFQE_QvobJ=I4}Ywfnftx;xxI8 wMVXOl@+=lPc>zbDgaK4SA4r4DXVu!qAiDu%_~ef)@`6lIiwqfzKw=EW02YC2wg3PC diff --git a/out/production/GBLesson1/ru/gb/family_tree/family_tree/FamilyTree.class b/out/production/GBLesson1/ru/gb/family_tree/family_tree/FamilyTree.class index bf6210ea5af0f135a239d99e5032a5bcada0715c..7d8dec2aa0f8daffed8ac075936d3af5700a6393 100644 GIT binary patch literal 5622 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 diff --git a/out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.class b/out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.class index 1433df4ad784e36e2ef92b63ce568292dd3a2bca..8b85341b2b9a21ddf31769ac312505c3fdbdfb9b 100644 GIT binary patch delta 529 zcmZ8c%TB^T6g@LlX?bX)QHc+zB2XU2$4(&_+>xj;apKlgt%ih%A-G_Legc`_aN`D} z3**X#iMsK7h<92*W7@fM=G=47oVn9`M)1A&`~qMXtDWGQ8G;TYfM6IQgc(xui^X)& zaNUFYx!bw;=0~>tWN~9a71U`ckS*4ko7tmLJTT7&!Rm zB@)HhMC(B^;0i)SRum=K~OltAAMJVhy5W^Ck7-kU#$2{RC?HcW7?g;^gyjQ!3 z+!Lo^f$Eqy8^R)C%h!@moK7@_WhA`5i4{Ve6n|B8Te~ky4rNJ_rHJK7n`Me(6H-ws wWUit_vbk62d0Jge{m&8ba`^9w^mAA=^vkFhW@s5)<-@cpgA23BQHLY{16heuIRF3v delta 431 zcmaJ*y-LGS7(MsKnx7_6bf}ThFO3A#9RDAh$pCm%o}#9A;7gl2FOA0foY(7`2w zgE+ehK2Px^I)}^mopbN`;m-9(&G?$Xe*iebZfbaY1~lj@3=?&j0 zuV!%&c(+ODPrZ|3r_s-Ft5`0Z`4_vhMNOALgUFHC LCXv`dw?yX`h~Zta diff --git a/out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByName.class b/out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByName.class index 9aeeed176e7695410732f141e1250ec5836563ca..be7b3adef265276d37ff2427cb91e5195720ee34 100644 GIT binary patch delta 457 zcmX|*J4*vW6ot>s5R%QqEEXmxWaA@o^AIsuWkW)&42VqzMJ#01RRY145DP2+fK8aj z)?O4r6fOJ#HkSSvLAGy6kj(Jh{1>=o=@r2GcEK~J08Z3ckl&I0Ay7DLE zo7;;x3IcVVO#G=D=6e>t^at))si#*ir?GhOWVkQjlpA{jGCW8hW#2Z=$D^qqCs819 zk}hj*t2~+>Yr_Qv!2?vhSBPg4ncmGc?ki});Z2}{CGHjSQ%Gn;tCK=54 z^F>V!P4f1i@4tfyzN{6xg>^DnAFy|W$-MWF?!4FbIv=QZIhl^dqM3hj+MCo23Dk)k Ni7gU|ZR`~2{sPo5T(JNE diff --git a/out/production/GBLesson1/ru/gb/family_tree/family_tree/TreeNode.class b/out/production/GBLesson1/ru/gb/family_tree/family_tree/TreeNode.class new file mode 100644 index 0000000000000000000000000000000000000000..a3d2f799789e953ca7ec06f9e36d29032b3f69d4 GIT binary patch literal 768 zcmZuv%TB^T6ul#20YUMB@3+RZ8@pG+LXC+A(WJzM8#BOI#uRFXsfm7?3qQb*GM=`! z3B|=^?(3X;?%etQ`TQcHb2>6;iqWwOY`0@S^MUlE*O z4_*7N^CG(1pczKXQB?Z2Bb4Nx{NNo=Fv^dFzV0!aHgBv4xNhv`OzVbG5#ANoeW8Fi zt!9?^3?+_qhg=6L&LJH@AWSF(nE`yIZ0qWGMX`g3XLLa@3|5~&By>p zix0p$-q_Jf4qY@Uqu^3N+$GnjT216>IS_W!?{Y6p{1u){l@ykMi<^uXEheZyOV4h~ zkp>{8N`rL>Y#=iWY%~ls#$!6KelSA&BAzj^|D6+W8_x-&QE#74K1E|P6h|^UgN~Bp z2dXQsWVpdfviy^9J=ip(98Mm;r-I*LP=Uf r<1bS!;#r~9=wAD~*J&fgZ34HI@wYR5c4#-P--DJ|(LNnS$_{@4QrNCR literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/human/Human.class b/out/production/GBLesson1/ru/gb/family_tree/human/Human.class index a7b6f5f28ad0bcc62e8b390449e46961a3a4b82a..6cec997ff7d453289dc3db29cb720306bfbdfd75 100644 GIT binary patch delta 2934 zcma)8X>e0j6#niDS(+xKgeGazQd$A4NwFY;WpsebqBs`RIxK^VWf~|Tl&LV{I8H!h z&{0HvIy&g+A4f!}QoD#~SwykyWl>z&+(i%t0g=V;-j}?jnSge=Z@cF^-}%nD_uQub zC(4{#F05G#;3i>jaNgr6cfyHvF098gfs84U*_E?u=R6Rx<0FA9>*kbBnN&KtYR1(2 zADTG3E)wZ*e-~ejs;$=NIhKm;jd>YEg;xSp)XuJn)CpK?=FF&?sjtfn==VA+^aa8v z#xyoNT|(cV+1r0oz%JTb+naYi>cA-hO$Z0h=tZueILpzO-Q3>lvEiH(=W)S~i!Lk` z&?BzhR$&q7r9bQHWwQ&bKml(H^o4G(*r31U4)@#0*ff01|K8{cfyA>9e)X*y5niw0 zH!J#Z{6s(Ho;Gq5-wlA9qaU3RKqhjKglqnA%< zbqnkq$D>VO-ns9f&Gcba&s%tB!&csRhjx*sb~~JQY_sELJ4UNNJ~}~XlF$xCD94lE zO%if444|0TtCW)vse#nm^gBGo)}3nZBc6h!xna0aqUH{wTQHzDeYK}JR}zx8ZnP_E z0=uwV*`M+B9wB{s)%Q})=)=(aGU$E^$FDf#qm6d*Cm(xwCsarlh#+tG#-OHWB|}|L zs4_wgB-9O;fch*IsvgS}t65!2b$6GnsAT3>QVyp0L#RbLuEtQtILw6X#+W6L)asfT zPbs(ymUB|;fdyyzP2h9dGTr=A!mHp_6RYG1>BXkrj8v#D<15;tDrhNIh_9sS0A8gd z&9XAZbd*U*LdNCNun%9*MymAR7?mj)0Ymcy$Q!0UgDVr-jHNc?sLgn4Gl9|FZNmIt zZRVp&2B>S^zGV`(Gb|kMV^LS3E2@)JDNItB`R~eD$6%~7p6<<8>&PhEsg!h@GBnFp zsVNIMmo*_1kV)b}BG{PXFYy(f3Ve-k6k5ACpwe%k&E$+)Gc1{|xWYEllLaZjO-x!6 zw^Tg?)=(2BrRKOUDH>}GM!NkrX560uGR2}Hs_qiiF*k{TFbN1V#jj#&8UmhF0uQGp z@F7}FV_B|bA0_>a`Vi?3TF-~#vpcAsmm2hwX^ju#JCnAiRJVn~%?KoDM-ARf$orW~@HVPR z;QRDoc?mEBODERzm%x(sC^h&2Kavh>N$=-N*5Ji7VHiE;CtCd+x9XrpI8}?6FAFjZ z!(*Dn%Q!0QxN9oPYiUpfUPx1eEts5Y{CZmBnz*sBvWDa$So{H|jn{|!pH_8nE87I{ zCLCA}58mSLzJh&iCEHUyBYvCv{W}#$iDK%munoxsguHF{R#e0ZiH6F+N z%D>TE7RQ#70}JsBepUKE5odx2$%9PvI|Jd{6I)&@`K^^_7i41tyZOc>yq+;U3w!ht zGB%o32DEd?X6tqH#Zv~nzCCcA3M|MC1%$BB)Pc?H9a~rk+X%2j0T-$z)x!iXi~&1% zG>{!tQ~l5d?L302yF2BQSz-pUh%@A(?BQL0Tc`yqDoQq?OSq&3udLDM<@l>)U$${S>;%7_VD=Huu{&o9jlw$ zwp;ly`gm-Qr*(Z=>lGcX(;71=#~HlFApYbv$ivb<4E=-}|5D>=HU2FGol|2WG|@@e GkozxrIMjgv delta 2501 zcmb7GYitx%6#nj%?QECbF1Fn*-98aWbz4~FWev5UAc6{Lng9k3S)kIE(h>n7XwslD zYQ!iV5k;-?gH}TbAe0!SJk;`3EGP(qD8BKn_&@~eckYbarEX*FwljBj?)e_)+`cvHUKxMqz#_C+*u~JD`Zqh?~O*P>LTS8_f$n|suoA5*H|yRSE_v*N2QEX z);iC4Ps*%{`Q>x#7R;;InAX#)veRzWK{e6ZS&@m;t1D*AAFkl4TrekEYvp(&!JiaN z)!y3Pa_|8+eo-)#a^qJk>J6#ic@1Q=w72?`an^%Ban8hFUaZ7{?{5iQI$U_@IU*7v^k}#!# z(%P(L{zBK=dTy&fFK%ujytqQoEh8;xsLeX-FU%4_66?b|TAIQEysP6&dJPyOTw)uv z=tD8B4xr75#tCW-IcQ^?{N$jWBc&}RL4`Ox=s>Nx1Zps$h7f8fp|0r$>QGmxwP@C= z@-7=uE~os$upWfHx?o=Wx-V4H;ki8rJFz=bKVZvss zAU#kboT;1vE+P{XxZrNrTwXgS&IwV{X<-s33$QgOJ*QrR?WHk^MV_n!V@ty+Q%|l{ zsf{d`T#gLRbm2X`uVo#^5kceIGQN@IC5MYzFnt3@hE9l$Kb0|e#*)BUB22cC3}quJ zem?jow;91gk(R7!r^WekIeruxQ6rWiAmT6eU(%%wft}4s4Bf z@T`QvM{&#vE~8^fbaFVq1u2~lYi*0OX|blOMNStVKGsMaeu#1hETW%nC7H5(;+51T zRC3%7wpIn=(=#vO+!Odnh^&)=%(yBqq{KztNVKc0aMF&XqDv~8-Ral1dmpjx?*>cO ziP-%ZpTMYhGB01)e*1LwTc5zg4xN)z4Ej`1{smIh739HgKzs%SWi&S=Gt!V5oY}dy z9!?OWu-sl-6wq0v&A7WO;nIY`mCnLkoY|-|e={2*@Fd(=20t3u$1Ha6r`TMV6aHzG zUTxDR>Uk@H{H<0_wQT7vV+J<0U+TRhrLkqmMfq!HtLT89t{og-2tu z7cyVmi`I(XMYoAryZNo=>TTkFZ{~^g3NFW*IJ|xiUK0A?3o5qTate&|$lxL4;}=UE zV`*7Kq5>M?x(3z}bUn>&V5fYQ-)$nmW({1RH%s3baDfBtMz%gX4Bh#?FfJgZ&oPf| z!zUb;=1W+%5bJfaY$Z!8S+Kq0d;_hpN zd6iD|7*9!QCWTgMcCprA=kqYP)e&~`ql`Yrv-~*!aX1m<jw{cE; vm~LG(&qzgv@5o``d;GwAh@5{g;zxb`Szph{H4VSv0w;L*@* { - private List list; +public class FamiliTreeIterator> implements Iterator { + private List list; private int index; - public FamiliTreeIterator(List list) { + public FamiliTreeIterator(List list) { this.list = list; index = 0; } @@ -20,7 +20,7 @@ public boolean hasNext() { } @Override - public Human next() { + public T next() { return list.get(index++); } } diff --git a/src/ru/gb/family_tree/family_tree/FamilyTree.java b/src/ru/gb/family_tree/family_tree/FamilyTree.java index 2a0443a..7744a75 100644 --- a/src/ru/gb/family_tree/family_tree/FamilyTree.java +++ b/src/ru/gb/family_tree/family_tree/FamilyTree.java @@ -7,19 +7,19 @@ import java.util.Iterator; import java.util.List; -public class FamilyTree implements Serializable, Iterable { +public class FamilyTree> implements Serializable, Iterable { private long humansId; - private List humanList; + private List humanList; public FamilyTree(){ this(new ArrayList<>()); } - public FamilyTree(List humanList) { + public FamilyTree(List humanList) { this.humanList = humanList; } - public boolean addHuman(Human human){ + public boolean addHuman(E human){ if (human == null){ return false; } @@ -35,26 +35,26 @@ public boolean addHuman(Human human){ return false; } - private void addToParents(Human human){ - for (Human parent: human.getParents()){ + private void addToParents(E human){ + for (E parent: human.getParents()){ parent.addChild(human); } } - private void addToChildern(Human human){ - for (Human child: human.getChildren()){ + private void addToChildern(E human){ + for (E child: human.getChildren()){ child.addParent(human); } } - public List getSiblings(int id){ - Human human = getById(id); + public List getSiblings(int id){ + E human = getById(id); if (human == null){ return null; } - List res = new ArrayList<>(); - for (Human parent: human.getParents()){ - for(Human child: parent.getChildren()){ + List res = new ArrayList<>(); + for (E parent: human.getParents()){ + for(E child: parent.getChildren()){ if(!child.equals(human)){ res.add(child); } @@ -63,9 +63,9 @@ public List getSiblings(int id){ return res; } - public List findByName(String name){ - List res = new ArrayList<>(); - for (Human human: humanList){ + public List findByName(String name){ + List res = new ArrayList<>(); + for (E human: humanList){ if (human.getName().equals(name)){ res.add(human); } @@ -75,8 +75,8 @@ public List findByName(String name){ public boolean setWedding(long humansId1, long humansId2){ if(checkId(humansId1) && checkId(humansId2)){ - Human human1 = getById(humansId1); - Human human2 = getById(humansId2); + E human1 = getById(humansId1); + E human2 = getById(humansId2); if (human1.getSpouse() == null && human2.getSpouse() == null){ human1.setSpouse(human2); human2.setSpouse(human1); @@ -89,8 +89,8 @@ public boolean setWedding(long humansId1, long humansId2){ public boolean setDivorse(long humansId1, long humansId2){ if(checkId(humansId1) && checkId(humansId2)){ - Human human1 = getById(humansId1); - Human human2 = getById(humansId2); + E human1 = getById(humansId1); + E human2 = getById(humansId2); if (human1.getSpouse() != null && human2.getSpouse() != null){ human1.setSpouse(null); human2.setSpouse(null); @@ -103,7 +103,7 @@ public boolean setDivorse(long humansId1, long humansId2){ public boolean remuve(long humansId){ if(checkId(humansId)){ - Human human = getById(humansId); + E human = getById(humansId); return humanList.remove(human); } return false; @@ -113,8 +113,8 @@ private boolean checkId(long id){ return id < humansId && id >= 0; } - public Human getById(long id){ - for (Human human: humanList){ + public E getById(long id){ + for (E human: humanList){ if(human.getId() == id){ return human; } @@ -132,7 +132,7 @@ public String getInfo() { stringBuilder.append("В дереве "); stringBuilder.append(humanList.size()); stringBuilder.append("объектов: \n"); - for (Human human : humanList) { + for (E human : humanList) { stringBuilder.append(human); stringBuilder.append("\n"); } @@ -140,15 +140,15 @@ public String getInfo() { } public void sotrByName(){ - humanList.sort(new HumanComparatorByName()); + humanList.sort(new HumanComparatorByName<>()); } public void sortByBirthDate(){ - humanList.sort(new HumanComparatorByBirthDate()); + humanList.sort(new HumanComparatorByBirthDate<>()); } @Override - public Iterator iterator(){ - return new FamiliTreeIterator(humanList); + public Iterator iterator(){ + return new FamiliTreeIterator<>(humanList); } } diff --git a/src/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.java b/src/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.java index 9938bc9..43b6ab7 100644 --- a/src/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.java +++ b/src/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.java @@ -4,10 +4,10 @@ import java.util.Comparator; -public class HumanComparatorByBirthDate implements Comparator { +public class HumanComparatorByBirthDate> implements Comparator { @Override - public int compare(Human o1, Human o2){ + public int compare(T o1, T o2){ return o1.getBirthDate().compareTo(o2.getBirthDate()); } } diff --git a/src/ru/gb/family_tree/family_tree/HumanComparatorByName.java b/src/ru/gb/family_tree/family_tree/HumanComparatorByName.java index 500f4da..7e5132b 100644 --- a/src/ru/gb/family_tree/family_tree/HumanComparatorByName.java +++ b/src/ru/gb/family_tree/family_tree/HumanComparatorByName.java @@ -4,10 +4,10 @@ import java.util.Comparator; -public class HumanComparatorByName implements Comparator { +public class HumanComparatorByName> implements Comparator { @Override - public int compare(Human o1, Human o2){ + public int compare(T o1, T o2){ return o1.getName().compareTo(o2.getName()); } } \ No newline at end of file diff --git a/src/ru/gb/family_tree/family_tree/TreeNode.java b/src/ru/gb/family_tree/family_tree/TreeNode.java new file mode 100644 index 0000000..128af2b --- /dev/null +++ b/src/ru/gb/family_tree/family_tree/TreeNode.java @@ -0,0 +1,21 @@ +package ru.gb.family_tree.family_tree; + +import java.io.Serializable; +import java.time.LocalDate; +import java.util.List; + +public interface TreeNode extends Serializable { + void setId(long id); + long getId(); + T getFather(); + T getMother(); + boolean addChild(T human); + boolean addParent(T human); + String getName(); + LocalDate getDeathDate(); + LocalDate getBirthDate(); + List getParents(); + List getChildren(); + T getSpouse(); + void setSpouse(T human); +} diff --git a/src/ru/gb/family_tree/human/Human.java b/src/ru/gb/family_tree/human/Human.java index 5019dc1..4f267b8 100644 --- a/src/ru/gb/family_tree/human/Human.java +++ b/src/ru/gb/family_tree/human/Human.java @@ -1,12 +1,16 @@ package ru.gb.family_tree.human; +import ru.gb.family_tree.family_tree.FamiliTreeIterator; +import ru.gb.family_tree.family_tree.FamilyTree; +import ru.gb.family_tree.family_tree.TreeNode; + import java.io.Serializable; import java.time.LocalDate; import java.time.Period; import java.util.ArrayList; import java.util.List; -public class Human implements Serializable { +public class Human implements TreeNode { private long id; private String name; private LocalDate birthDate, deathDate; @@ -15,7 +19,7 @@ public class Human implements Serializable { private Gender gender; private Human spouse; - public Human(String name, Gender gender, LocalDate birthDate, LocalDate deathDate, Human father, Human mother) { + public Human (String name, Gender gender, LocalDate birthDate, LocalDate deathDate, Human father, Human mother) { id = -1; this.name = name; this.gender = gender; @@ -64,6 +68,21 @@ public Human getFather(){ return null; } + @Override + public Object getMother() { + return null; + } + + @Override + public boolean addChild(Object human) { + return false; + } + + @Override + public boolean addParent(Object human) { + return false; + } + public Human getMather(){ for (Human parent: parents){ if(parent.getGender() == Gender.Female){ @@ -95,6 +114,11 @@ public Human getSpouse(){ return spouse; } + @Override + public void setSpouse(Object human) { + + } + public String getName(){ return name; } From a38305d40ee8ba3a04a9cf0e7a149b4e94425c90 Mon Sep 17 00:00:00 2001 From: SlanSaf Date: Mon, 10 Jun 2024 22:21:58 +0300 Subject: [PATCH 08/13] =?UTF-8?q?=D0=92=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B5=20=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0=20=D0=B0=D1=80=D1=85=D0=B8=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D1=83=D1=80=D0=B0=20MVP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GBLesson1/ru/gb/family_tree/Main.class | Bin 2453 -> 556 bytes .../family_tree/FamiliTreeIterator.class | Bin 1331 -> 0 bytes .../HumanComparatorByBirthDate.class | Bin 1278 -> 0 bytes .../family_tree/HumanComparatorByName.class | Bin 1231 -> 0 bytes .../ru/gb/family_tree/human/Human.class | Bin 7283 -> 0 bytes .../family_tree/FamiliTreeIterator.class | Bin 0 -> 1367 bytes .../{ => model}/family_tree/FamilyTree.class | Bin 5622 -> 5694 bytes .../HumanComparatorByBirthDate.class | Bin 0 -> 1326 bytes .../family_tree/HumanComparatorByName.class | Bin 0 -> 1279 bytes .../{ => model}/family_tree/TreeNode.class | Bin 768 -> 774 bytes .../{ => model}/human/Gender.class | Bin 1094 -> 1130 bytes .../ru/gb/family_tree/model/human/Human.class | Bin 0 -> 7391 bytes .../{ => model}/save/FileHandler.class | Bin 1752 -> 1770 bytes .../gb/family_tree/model/save/Writable.class | Bin 0 -> 243 bytes .../ru/gb/family_tree/model/save/tree.txt | Bin 0 -> 949 bytes .../gb/family_tree/presenter/Presenter.class | Bin 0 -> 1426 bytes .../ru/gb/family_tree/save/Writable.class | Bin 237 -> 0 bytes .../GBLesson1/ru/gb/family_tree/save/tree.txt | Bin 883 -> 0 bytes .../ru/gb/family_tree/view/ConsoleUI.class | Bin 0 -> 3480 bytes .../ru/gb/family_tree/view/View.class | Bin 0 -> 180 bytes src/ru/gb/family_tree/Main.java | 92 ++++++++------- .../family_tree/FamiliTreeIterator.java | 4 +- .../{ => model}/family_tree/FamilyTree.java | 4 +- .../HumanComparatorByBirthDate.java | 4 +- .../family_tree/HumanComparatorByName.java | 4 +- .../{ => model}/family_tree/TreeNode.java | 2 +- .../family_tree/{ => model}/human/Gender.java | 2 +- .../family_tree/{ => model}/human/Human.java | 7 +- .../{ => model}/save/FileHandler.java | 2 +- .../{ => model}/save/Writable.java | 2 +- src/ru/gb/family_tree/model/save/tree.txt | Bin 0 -> 949 bytes .../gb/family_tree/presenter/Presenter.java | 35 ++++++ src/ru/gb/family_tree/save/tree.txt | Bin 883 -> 0 bytes src/ru/gb/family_tree/view/ConsoleUI.java | 107 ++++++++++++++++++ src/ru/gb/family_tree/view/View.java | 6 + 35 files changed, 207 insertions(+), 64 deletions(-) delete mode 100644 out/production/GBLesson1/ru/gb/family_tree/family_tree/FamiliTreeIterator.class delete mode 100644 out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.class delete mode 100644 out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByName.class delete mode 100644 out/production/GBLesson1/ru/gb/family_tree/human/Human.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/model/family_tree/FamiliTreeIterator.class rename out/production/GBLesson1/ru/gb/family_tree/{ => model}/family_tree/FamilyTree.class (51%) create mode 100644 out/production/GBLesson1/ru/gb/family_tree/model/family_tree/HumanComparatorByBirthDate.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/model/family_tree/HumanComparatorByName.class rename out/production/GBLesson1/ru/gb/family_tree/{ => model}/family_tree/TreeNode.class (54%) rename out/production/GBLesson1/ru/gb/family_tree/{ => model}/human/Gender.class (54%) create mode 100644 out/production/GBLesson1/ru/gb/family_tree/model/human/Human.class rename out/production/GBLesson1/ru/gb/family_tree/{ => model}/save/FileHandler.class (68%) create mode 100644 out/production/GBLesson1/ru/gb/family_tree/model/save/Writable.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/model/save/tree.txt create mode 100644 out/production/GBLesson1/ru/gb/family_tree/presenter/Presenter.class delete mode 100644 out/production/GBLesson1/ru/gb/family_tree/save/Writable.class delete mode 100644 out/production/GBLesson1/ru/gb/family_tree/save/tree.txt create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/ConsoleUI.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/View.class rename src/ru/gb/family_tree/{ => model}/family_tree/FamiliTreeIterator.java (85%) rename src/ru/gb/family_tree/{ => model}/family_tree/FamilyTree.java (98%) rename src/ru/gb/family_tree/{ => model}/family_tree/HumanComparatorByBirthDate.java (75%) rename src/ru/gb/family_tree/{ => model}/family_tree/HumanComparatorByName.java (74%) rename src/ru/gb/family_tree/{ => model}/family_tree/TreeNode.java (91%) rename src/ru/gb/family_tree/{ => model}/human/Gender.java (51%) rename src/ru/gb/family_tree/{ => model}/human/Human.java (96%) rename src/ru/gb/family_tree/{ => model}/save/FileHandler.java (95%) rename src/ru/gb/family_tree/{ => model}/save/Writable.java (80%) create mode 100644 src/ru/gb/family_tree/model/save/tree.txt create mode 100644 src/ru/gb/family_tree/presenter/Presenter.java delete mode 100644 src/ru/gb/family_tree/save/tree.txt create mode 100644 src/ru/gb/family_tree/view/ConsoleUI.java create mode 100644 src/ru/gb/family_tree/view/View.java diff --git a/out/production/GBLesson1/ru/gb/family_tree/Main.class b/out/production/GBLesson1/ru/gb/family_tree/Main.class index ef9e6c0231a9ecbbb442f47e7b28008de7846832..96bf3cdf87f089a00bcdff70877a6fd6b0c74050 100644 GIT binary patch delta 345 zcmZ{g%}T>i5QV?nCe2UNrfszT#7f;NmZ%S#Dyz2XP7x>KIYyh?^&}yzu!K9ZB{3C5E__@el`lOFM_M^Hcsx(^DK&j zaU9(RJLzDUCeg{BjX||e9mk;I(4?mD|5-YfO@%(p!z?#wO;UgQr9GNjK~(gnZQXk) z=|yl$VIQZX>@wPolSpA5hVfwYCLD*X;Zl)95fvUa(YADfR3%kkpP^n#yCYiI(7+RQ zegn)gFP%k~1(_7f`vR+Q1nxV=*$nGo;}u)+$7xcPoQp|I-q|U6-SQBZMV7=f<6$3r!73gdrBcSaojT}jK zg*}v-xFjR%I{MJB;hKQ~6}s@h6fuE;bJWtd<(OMJhTG3bWCTWQePej6 zLN*zxcUQrW85l=`nu>rxtfI--u1ec7bJkZ1Ia#Az#oJVFvdmr==&vWXTh5z>#H@M- zaEtiMIhk$6n|MpZ+XmjjZGmg&sXdg1jI^n=XezG;85A#>3WVy_smyUive5?SYvWQg_o$OAs=l3SkoNyDKgsQj zzemAP1N-ifsZI;V;cmEr&^aXQU5zkOx+krY%tCgXa)N`Z0j$@sUfESeIXXO@$?AfW zLSHSG?QN-Mp+Kw3*tiYC{GR9s+iw+){mM?jr(JzoKSOw-ECPz87~9*sRmyb0+u zm)c#40U`|2nV}l`Arwee{e>#@14LI=6n*{_@T`bdy46gnA5PIn`mZgVVqzmSd4xAQ zv|ocp(0GRA3EoS&+YgQ~)1kcxwgf}o_M*Ez=Su$`)Pp*=WAPI#EV&0uuKXVXt-5{N zAB`PjB^_n1_#AVeJ%0DagEeli9piC2dKS8I1_#Vd0HeI#Z*m-mv5W{a5of5zP-4gq zSx?_^PJNF_Hw3rnQUKppLNI`R6!{U<-N5Hu`G{~2Hdjr=2@_)-YB`0G{Ge3>qRPbPEOs1d=<>TPIg_ zYL(oJ(vDm91qK#mP5O%hkxX_yia|t8#4HTK5}5Uxxk@Sb#@UnA!&koNx?S^Sh07x0 z72ow7zwQa>RoNhGvJfaWeOb*Fh~yRXu!RJY0*0(@xd#GbWe6#Zm>9J%hH-)6?j*7` z<^@JFJq!8lI$b=YErCQq*4)+RUdi=} zPN_;HRj8Mp>bm1e6}Ld$-9V^3&r{QGkmo-H56U!r|IZ-d#l>cV{7%M zS9X`BYV|~azh;ytT<3AoAUJA#ctbe9$$O?@k}r=o=Q=S1w-`?`+U2NmOxWKb?CB$z zcH{{0&x9hl&2NecAd!wZq8R3rK!(V8n1(EDMkHv-O?R!`Ia!-Lv2vHQ8RYm?1~$nf zRF3@xalYm;&I!DSsegbT`N$PL@G%hlH41#945w>A>n|0QN|Ky7= zHTqzD_D31dEFjR@OH6j=%=zZ*cdqm6_xB$Fs(6xyhJ=o!fjP`Gn8*ARclzA#I`7)Y zq9YmR%dYRr3PZxO4>DLlN=Mp21_r}+7&+ax^MQMAe{d*6A!g1k0``L=!C-WSth%A> zz2cJ8HOp?qo}}vurxA2`UtN^axPe6-rh%JSVp#r%4MVCEcqcp*t$-nCP4RSkVc-W& zEfy0}yPn1hZs}Mxu!ePp7neuTZ4tJ3yHB-TiZeanp{w)}n3O&DBg5_$zAsL-#IQO` zJUAJXzx;33a;sIU5VaOOW4Lw!mHl&?Kl+)v-*me^mr+Qmr!0c#v+E2yqe+;W-O_M2 zrV(Xnz7?_;9KGiu_kB4-*m&N$r+qOc=gyQ*ay7uWr% z>OQt;U^Ot@rbn6}NpF+(yQJ-rWF+VEU%|e_*Y{{w*MN@uv>QVMJirENn={B3Y4rTC zPV|aSs^?GAEPR8`P>lCeWIq#@z=SyyGj9%UN6hpW9^z5#&BS9mX|cD7mGU;U%Kf#< zk<~V#8g|S*io~Lmilk25Dw1rz@DmF~TBle(8^&~k*>edhM7gwSr8MO@USofG6bR5z F`~w(ZIeP#A diff --git a/out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByName.class b/out/production/GBLesson1/ru/gb/family_tree/family_tree/HumanComparatorByName.class deleted file mode 100644 index be7b3adef265276d37ff2427cb91e5195720ee34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1231 zcmbVLTTc@~7(KHsEN!>4BB0_8RA9HQHfnsKO%ot7HmTL58(zt@jAco?OU7A~{wH62 z!RUkW*&k*6X1BF1B|uDeZfDM(?>fK#{P+oA56`kNkTQ|BFo$^t`-Fey$A17+D;Rm7_ z_1i*vyxpUOEj7Xp?;UXI>+=vyt7HEY!|N+-Ul?VDVRc$_a5~c6`5(cm=T&N?YJ@Ks zuAMf`e@R_MKT~;IemCGMk`!>pA&5S=&agdM>ZBtp6U84QnrXii>Nq_5z$LYr5|XlW zSoLbh%(P@1O*`O2C9Z&LFPU-hdt6lsKlc5yPXUKmc zEQPUhE>>PoxI<<73y<+6wr1lg?Tpykn5C^Htj&L{O=4{kYGB*mB~KjMX;12;tv$&X liodW>qH%^>=iQhLFh3KZMzl$nM#j*F<1w;VK#>3grN4&RCtv^o diff --git a/out/production/GBLesson1/ru/gb/family_tree/human/Human.class b/out/production/GBLesson1/ru/gb/family_tree/human/Human.class deleted file mode 100644 index 6cec997ff7d453289dc3db29cb720306bfbdfd75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7283 zcmb_g33yc175?vJGBcUH01hAqA_PQ9W&&}k8$pz%Kxl%tp+vw|Uy?^MA(@FY69sLn zA}+0KtF2qDt+nC;ib%pHs9i*@wG*|qt*u*IyJ~H>6d@ z5QG%GF|*rJ2sPwXHl-5LSbLqU8e?EA4yE>XE7oQu6e=5rQ?XF5(7O&ZP>%5mB`wiJ zs$;&HqJpuuf>gBIs%?n3nq4xiS63J~T(54kOnbE-lN3g4gL+fZuG%??gt@jMnoI>T z5k+Fx6azp;j91fcNXa2V?_)(xx3o~~Xdt{-dQ zIPp8s8jq#SXe=p%#~U~SCvq^FvJz%0&VU|TRqaBq-Wex)Cu61`bp~eP6w)JyUS-jFwQeDAD<*a+O3q$8-*!cJe=QIZY{(j zKk5xE7E(^!|8knqXm(j8ScnD#jhe;_tZohkaXQZMjC7pFH5Tr#juBnEM@flDL=OsJ_j?POvnE)^x~#n$@$ z*?KwCca4^DrGYOC>}8bEq{AiPi}b4uT%DO|WHPl9nVD-1T$hQk+mI(YG#m)qht8rYN(XX6|~ zku2RTOSf|2y7cy$m6D9N72S^pO>*(Y>EoNjxG-fU7?QXFWOU;%p3Jd9CV40bSO5Yju zraGcbPQF!|scdw|h0LUUQ_5^z-Dvjcg?{`blQdn&P+@T)f(-SvLzhO*-Qvoax$>lX znZlL-FJT8j=>XGWim%(jBf#24pH;aw543Rw*`R9}Mv?o@&=nJf*`<@id&xly(_L^OCDaTtnnJ${*y@^(9K~#=OQ0JW)5*1Q@Zakh!rV?gPqm}B2 zwvcT0W=;9pd&Q~>`W%z7}rJ-v;$QJ>sHT(miW_X!z=wY9 zW4@(jn4054G;v9iHBYap7`rA0~u%VdC;_ zsO-b!^5Q2rzf~GLaHI##<-W{-&mPDvjyy!+MRm`i$J^0-md#>s4k2jd!|Y7DvX{FS*+$|??E=l!U?|QkmuDrNmX-ihq+0@wSGS(x zj$++u8(6cr|Xr^irRT_@eOjk;6!wm7s zqkWPv0n@mvO4}K>muBrO&DvR-wX@W*Q6Wxb0ZdkEI)R zTgIisH8!6|XjYuV<7Z+tAFh&YY~(9lQKZz-1e9-dM^Q6-Iw?eIw&Tnt)BEvxk?Bqf zQJ&FGEpKR2kVGYRmdf`k?(&gczr?S!^)KPqj*{7&kvRJ#A-Ciwof!ATvsiIeHr_sY zfK!HWIuol}-3N+^K#S1YO`C+v?cyxqUczr2Lyp($d0XUcu$j8XrC(+Bt1RF6@Nz`B z^^eTge_=uWe0^j$%h9ooFWHo5{6z&fzl>L$&9jNBoP1w+67RO02X^YdlqjxudErJ; z?p;CgRWv!W++K{!_u`6zhP+mA^Mw4(R~6j+I)0n=!o`Jg`CeQ{FRmZP3!7^SzbhyWC>dZk>BGD5=e598l z&KGh=0U=7hNDSHBk5&1b?<%;N->dA+s+jzeb9&7#bh1S1YKVlo`w?%B@T`^eBiS4Y zotNp4)Q!*@yU**U9~W@`i<$mK{aDBTWtsjJ_WEr9D|!8E^7_~7em`!=Ik8xmjrXvW zycZ*JAMeonSpjWi#j=Uvdw{prITkBLuYZ2?iztAtcz$k&|eT-o#SH=N;wsMTP zf+onxKO%HzL%1JzHP$>q<-Fq^%^MJ;QTGhCVZ1J__HyHsMC>VE22Ydp&rsj9+Kx(F zWY&&K$BqE2SShYNy5uq7`2gc}aT%0U$uDL@jJj8hy1%ed4-_)$IjVl1M!leGjq%K~ zlX+_hIQuh7YQMrp@nfB1)Eks6NcH3x{Gbqtfnss=kW@(x617Ot4s7*EsYDQEf%g<$ zHtIEZ;>av3Waau|j8Ij#7P%fcFC&>qn=04>LRxh_|v8&{e#^#ph|^ z2x}AX#>nFc-iqR)jS;63+{y6lyzy4}y&K?lmB2Pb-ej75i)F*xRPuK|8Qx*x{chGY zc@t#HuW9(3F2BZ-uP?fS;q?bJYlEk$QFDmt948pLMAnZzxnpeKxMf;}U7r>hw_gAS9^ay diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/family_tree/FamiliTreeIterator.class b/out/production/GBLesson1/ru/gb/family_tree/model/family_tree/FamiliTreeIterator.class new file mode 100644 index 0000000000000000000000000000000000000000..07bec28cd4c8b753e67bbf1c3cfc0672704338b7 GIT binary patch literal 1367 zcmbVLTTc@~7(KJy?b@=1QlQlP4Ygg6#TzjciI;?gq~Ze&i6ln1Wi1O!OSW4B{v2O? z@j(;O;DhnmA7wnV+d?ldXf|^@-_AMb`)20%pC3N~JjHwx3Sv4`0~+E2>23R+ZFzRR zX1%CvJJmoSzUbE7U`ZgBFRUkU1_>QW14A$b=KYpct5|RCUDrE!9r%u8?KUUKfvmuA z?;eLCa?z6Ma=#ESHN*MS-z=U!Yi6r&|Lx zx8nF^yW$balp0mrTep2zuG^p*Y`IN=ho|yAcye@+?WH}~>rg-XPtHzyx&HK`fXq?f zvYV@6$$1Gk1X62(UEO(Z@3phi@&(pNV4Mfie}f5E7t0F^r*hXh>_~cPkgV$jI)~Ts zpImFS{Hn9;%HmHB)^1ih!&P1*1%ji(kFSXH>wJp}rr3D#Iai5kxWV;Ju68&o97oLW z5a#qDbTf8{)E7cA++v^M1|Z3P2niAnBZWMXY_tspm|T&dEjQg0n>mh69b380*(@yf z(!eY72)W1niWHlEgi(PH(AAGnW1kpNLm%<*uhCFjrX?Lj+EVcZk&1I{8kF(JeBbg- zQ9??U3CfK*DPz8*-iG>y$sS=+!7rTu%vh9kB$n+G%MFN0M2bcAy_0@IrMu*pN>4aS cCC&VXi~Y3mE?RAXRw9yCX%pYW{c!c*FAyUrv;Y7A literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/family_tree/FamilyTree.class b/out/production/GBLesson1/ru/gb/family_tree/model/family_tree/FamilyTree.class similarity index 51% rename from out/production/GBLesson1/ru/gb/family_tree/family_tree/FamilyTree.class rename to out/production/GBLesson1/ru/gb/family_tree/model/family_tree/FamilyTree.class index 7d8dec2aa0f8daffed8ac075936d3af5700a6393..1225a97b6cfef3b17d560ca292dcd346cb5d2c4f 100644 GIT binary patch delta 772 zcmaivOHUJF6o%iAGSmW7dSTir(wZh9EiF?ja;t?{DH1M%m$0DRM6E56f+;P?!i6Xx zMh$op7H&vn$w~(jRz`_ScWhYeA8^Ia#PbIR^Ce%-04>AJ~h*8X!~eJ~{;WsA9)c>&E(Oqg8y zzWJx{uEcv|v2!qm_AK8d85OWnw)~#OhEmvJfrEaOfATAwxljfbPI%x$4I-$;Rd~^f zOSlFp8xR27ZkQkXCsphqw~vyooEC{-?4;1fwwH3a@E_j8-UULkHS1!GDIu zp0d~?;#fkLe$iSjlmsr|2CMe)wj{c66W7s4$*SMpLD(<^H*T??VU`@>(c9?5UG!s= zlD1#oF(y(>j59I8#3W*vLND$!^^kh(2Xcnhv#?^8uX;kIjy17BZya0pMV=_I=OQ~_ zMl+sK$hj__(--Hi{{_#iq6#nh`d6sK8WLD%#SM1x8h5Zs`RcdQJKp`COiD`H=I8@Q N4Ya9fVuy~D?td}K&nN%@ delta 589 zcmZur&rgzZ82@~+7bJKEUU;Ej;8+e2l9#j=U_mXl9BNu_Zfcn}GAdd@(D2fsv>&iV zJsq4EH~)efdg+k=K%3Lrx_PK`2Rn4=(0XLvaNq5_=lMLJU!PC>2~|@{AXm_4XSCbX z+06aY)Z<(_O*?wm+qtibukn%=NnI#FqRC!c7YQLk^iSucb)nX@CZA5}YE*1X9x6-S zN_4-|NhQ(<`}H41a5sW}>pO+EH#uq45Z=q?K&N?JK)O@NPCpQ+7pk}TW%web{Mp`k zye|80{3cmof|WiTyk=Bz0CpJRAhT)3>*DPY^f%LSdG#UDtF*a9AZc|qSP+6Twm;mUPs6_?+hrr%TeryT)KKa0+Xumeq?wtlLuD^ zUtw6gNIyIsOT79|?rOVTsgZyYJY(3IiR?VF`qXo(RHC2?IdFSESD~b2r1AvOS7_o&y~1mZsR)@c3!o3zSa zK(=T_4;33kuj!QjUC?NkzQLsTAN6O*d?qY`33Do9&c?QgnduZB;!&h#<1x*QNNr-J z)ncpMxmAv=o)Bta+ukEj@-)+)G>Kb#k|~ycVxdg!3@ex2m<}*AawAKJ;*d3>B@5J2 Qh8B+6Sg(i@0S3x{02QoDr2qf` literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/family_tree/HumanComparatorByName.class b/out/production/GBLesson1/ru/gb/family_tree/model/family_tree/HumanComparatorByName.class new file mode 100644 index 0000000000000000000000000000000000000000..a8230189d44127af1f4e4c06cb4c064e04393f5f GIT binary patch literal 1279 zcmb7DO>fgc5Pj>Ub(1>Ol(s43ANxx6GgO@5RpPaO4Mt$Nte`>KPt0E%75a* zr3em)Gd~J3YbQ<8=8#I>ujkn}Z)Ruy{`>VCzyV(7p&_FqYhVG34CWdC${mjfedlBM zO!OqfV$BU)S!c*t_R%tykkgSjundEt62(rx>wMkW=&B!uIKC&HUTIs~@}WzhRV zwzyBbHOp>}UA1N82K{Otx3HqaG;kZMQ(963hFmZ7&v_&|A;Y?LoxyJ8v4(XW8wT#; z9>be?1ip`b9vmjjT!zuXAl0Z3oiQ9+&3Sl6fmUy3Z8vmmQc9A1#M1Sgu@;8xVUoI) zrW=S>>~}@f;a!hXxY`VR+&kittIk6(D^J}o4D%_N8F!UoW14wzK4O16S70+~Yn@KD zPTX4fieYyyp38KqTd%49h=NL>?e+sMg{OFycr)>wc3R?XY^A)VR@;|W+hp~EPz^igJ}I$i yr<62^TPZ1&%73s_p>csbS7l5FSQyGE(xo(Hg(#Ocjhv<&Cu8KVgfamdD*pi~8aavp literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/family_tree/TreeNode.class b/out/production/GBLesson1/ru/gb/family_tree/model/family_tree/TreeNode.class similarity index 54% rename from out/production/GBLesson1/ru/gb/family_tree/family_tree/TreeNode.class rename to out/production/GBLesson1/ru/gb/family_tree/model/family_tree/TreeNode.class index a3d2f799789e953ca7ec06f9e36d29032b3f69d4..91503ea861fb23a0c44e89e51ae07d640db33d1f 100644 GIT binary patch delta 48 zcmZo*YhzPC^>5cc1_lNv1{HP&CPoIGqEh|zB>l9++{~QH_>!X3RQ=ril+>J!iuaiS DWs(o5 delta 42 xcmZo;YhY76^>5cc1_lNv1{HP&CPoIeqEh|zB>l9++{~QH_>!X3)Q#%*nE(y34PpQQ diff --git a/out/production/GBLesson1/ru/gb/family_tree/human/Gender.class b/out/production/GBLesson1/ru/gb/family_tree/model/human/Gender.class similarity index 54% rename from out/production/GBLesson1/ru/gb/family_tree/human/Gender.class rename to out/production/GBLesson1/ru/gb/family_tree/model/human/Gender.class index 7f1f08e4d529787599d8984dae0c8cc67993457a..523d099201c095459385e36836a14aa6ebb7ad35 100644 GIT binary patch delta 172 zcmX@c@rpzJ)W2Q(7#J9w7>wB&m>3yUic0mnttOvmRA&WSHTf%J1*65}JSJrbfAa*UZHxdZ CMm(zk delta 140 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 literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/save/FileHandler.class b/out/production/GBLesson1/ru/gb/family_tree/model/save/FileHandler.class similarity index 68% rename from out/production/GBLesson1/ru/gb/family_tree/save/FileHandler.class rename to out/production/GBLesson1/ru/gb/family_tree/model/save/FileHandler.class index 9866f0b6313b30ce063684a51052818578f64252..7d9808988414dd168147dfcaf25765ba730bd2d9 100644 GIT binary patch delta 113 zcmcb?`-*pi5|f)oQK^1KzJ{aPgk1?sR001^hAolHf$1DlYk!0!UK3HaW^Vx`~N)t zo5%BZ2e8DzM~g5vl}KW7l9|$%eQB6QRvcN2v#eQcjVfiV*@s6MrLvYn%RCXAIORi0 z@Z1$)K3zARDn!IaNv*Dq3g2l%M5R%A63%uOGAxgT$p`wYe~9-+NC={$G6!BMZKsA` crG;DU5(sVk4$!iO9dzMLee`TX=(`-j3*|IH?EnA( literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/save/tree.txt b/out/production/GBLesson1/ru/gb/family_tree/model/save/tree.txt new file mode 100644 index 0000000000000000000000000000000000000000..6b7dff00f81f6a001d5619739b0511f90356b7eb GIT binary patch literal 949 zcmaJ;!A{#i5S=)VlLi#Ei4YPfrRs^3ed~o&rIG?NMS@4;wT>H^%)$JQe%hExo{8zXKA zQ9I$W3j#wMT8H45>Q*w@zxGjq=;ODXvw`q{966cnmy7zF2fZWk6xp0AV`o2vl@>Of zO{+2)#q)Ea>3J`P-uX=F#K`;#?x2O7L<+~DhaiR^m3bnKg)gzGqI4Q9tubO7(N9L8 zn4gObdktMLE%G!vvqt49*1CnjF1B3s3Cdz#l?dK>Q-l)fUXYqMlw)TSW_ZvJg9@Xv)e188MxZxL?FhmOm z25gh&5BKvbTP_wB{9~bU@Zhv65%St2?WezDw8dFtG#EBU7lRRLutI9TB6a+R)J#Xb zPiSQ#Gxp@iG8fET+8R5eW3w*mf-Ykm;zXwn@>!9g4zuOLh@mol5nYCEvML<|I=1R3 DrkEHY literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/presenter/Presenter.class b/out/production/GBLesson1/ru/gb/family_tree/presenter/Presenter.class new file mode 100644 index 0000000000000000000000000000000000000000..ccb9d12a1cee277d5b20f1058e2a0a1a211920b0 GIT binary patch literal 1426 zcmaJ>YfsZq7=F%H=qLroVB7{eL|_-7pm?K5A{x|W0TOTqznG34M#sTez@6MpD1 zbg$cv?QJkbGudJfV(3w!>F9;dFzYsrO365~YIgPFv*&VdoVvWh9gn-l?w>aX<;>>i z3{!>n{bI!^(qO9SXIN_AQLC4E^)HSs$+u5*8u}0wq6T#&FvOtwTErT|atPo5&`3g( zVWyLW<7UlrjCW$xFpN==*%-rarf{3up6A+5#q3DzW4z@~nY*Tc&a-RWDAW(F>Kn`B zX0|9yP3TBrk|Ac5%aV~{CDRf0ZUKb#ZHmmye$ptIdphom%IX#FNuc-6QC%=h>v(_} z29*}X9K&!X+wPD{t4V?4Na2b0)acq&WQ`f-Lg4%+^z8(_KxkzuKcyDh6$EHetQN(p z?bVy^A>Xovk^a^#TM|u(X)1Yyu6C40x}x+J!6KIAlP(B76;RYLXk4bR4{|4v%w2=! z@|RF^H|RUK#=s@wU*xeB8WVI37@#qZ9t=|VC-8`7MkHAhkFiQ$1S3fqfu}GQP+SmQ z7pNvOAhoksx0(ASJX2?d3MUMYdzsYvLdjDN=p{ z6ckV(N-9b!sOVE55DkBT-vBeS2Kzv9vEG?|Z{C~t?k99|4L5Y*M-zWfBq~09Xtb1b z_ciX{$M)X$Z_nPmel8qvwxBmF5|QSc(-6+_HB`AVun;~HPef1{6$jK=DKoI2i&Bg9 z=+mRWsdRyQq zvNKWI%x(!I4P3Hzj7nq>?(d42+AAUSc4sP{YMDNUBWNLKDuv}x!wbQSWIC1Fz_m~p zK{N>(@dPX%tTO_Kxv5A{Yh<-zkw(Fe(JGDbt(yr{F?prq<=K9bBlzl>V|lAOHoycf zaBQ@Mza#aF2PYpcU*C8?04TGAZX2NcX)q{R0t;|BIfv^`6~3*`TlANHzeWS2ang~7 zD`zEbSFL8j2!%Ba*%WQ--%g99`Is4S?}!-J^tOu}A^&=#H2QM}TU=EJKYF9uV6_fW zhI5p5lk%hE)|7fDVqHWVYcgR!ZYWd1yhc*&hK{8&D>J%`ae;erR3raPWT?d~+utHX SW%PGw6S~Ax=@`b`HG3a{$ diff --git a/out/production/GBLesson1/ru/gb/family_tree/view/ConsoleUI.class b/out/production/GBLesson1/ru/gb/family_tree/view/ConsoleUI.class new file mode 100644 index 0000000000000000000000000000000000000000..78bdbeb5e1c82c68ec7a43fbe64c4665f01dc374 GIT binary patch literal 3480 zcma)9`%_!T75-Kdx)=H42M!Kkn+gXzAY>F{V%Lz+_yth{n1+PLc3u~85!aTkh#t0S z(-v@>G_f1EZrapslQd0dnCVZLf*_{2Go9&l+UXBh)6O)1N`FfG?Y#o=P-n_`wYz6` z&pG>@@9eq$+m{a>0yu-;2H=5LflosP`~thL=-2c}Lbu|P3nN#ISXRLQlxdmSZUJv| z%di4fV2`sYmo*cSp_p!2M!FIK>`&IBWF`q zCY3N=iV7$h*EfN^uFj1PcPXe7IJ{lUMB2z0R@O*I2G>Rb)MCH%?*Q#K_iaDpSRSVN zF4xZn4PQY}pmJTAz~g1ktuL2sb;)}k((o9X1bo+1>8k?bl7#n&hR4y&D5P=>N(srq zv}vs&sUjrMZhvY&w3qA!d(QqmSeUlwIbD>4Mf(qIpWCaBz+Na!amv-k0Kzz`piM&r zPY|!QC~eS9JSU{3gbZUbNDfUHMAM4%<|^6+nvS&v?GLE`KCRE&%Y~W3?O@>@+F7A+ zp8W%RPDO`6xScycp>U;elN*XVr|my-I8E_`V314i^BQzn#R-9<$9dvoYUFZZsxZTi zQ;yO(#|lqA4BE@i9arsT6<-xN)WIVk(v=6?xLPtZMbUj~nJL_q?CaFfg{K5m%eay4 zGc7~lk>(bcH5)G(KsUao;2904ab`2k9TccxT+fW3O^s3m(j2WP@doc=ej^_{lLmW?Bxjw{!BGtc#z;Y4sMoMYjdV{sm2^2K&{>XnWfCjN03;&g5~YZ%rAx)Q zK*LsFWNIw&o^yri!c3=%D@;`Tu7kwF+EsqfJqtmHYI%o^Bv;`My-gsgz|xSy#M+za zkR{6JBW|P_stG-vF*w~4?6s63J-DlWt3f6y-MLeEn-1}4?bdaf5vzsU^xztxt9pcrM8&`uvTUF_AS> zmV&nh_HWm{{w(t)byISe%Pi#sE;HFPqhQpu%0&MyeRZ#$4w^ap)z;hTx7Zg zDl%C;%_#X}<0&)aXe@bL475PiP*#s!?bj!Y7W{FC+X6?**w~H89k;1dgpp&Zj<<+k;(3X!1v*0&zjE95sxgJPS5hk zUgbK!O8EN@XRpD>5zrJ`f(WfZxj2u?CG1*6HD|RKDXw3{!H{nejrScbKj7~^Y5;ce z>~2(J4;uLU7;V2xspjg#d$`4!!0k0#B1>Od?{jp+yyx2ck z>`$`i_Ub%N^|khUy2E)q{X6P-f$bPu2irlmR<=`Yz2WM!d7Qt8h_`zdp>TE7nKk-2 zI}omZ-kI&K;B05Oy5E^q_`45EmFSc|{PVIkupMR#vmFoRabXrgb}!7Lj@?VMgeQ-e zXR$*%f0<6s{wFN)@j~J=KrBG?6}|(zP{&a{qp+Xf8VC3>(14SS$Q%w~fv7Ff&I*p; zA)4_gwBXOY%U@~t?`Xq6@dW;bb_dseMDHX%!VmGjgYXwcgzwN&J--mY#AOBD{3oia zssasu{{0(@ho@MxctS?|1bZ26m5?6Ht97cBSJqV2C^ePK$aMxJlHu06 zKpx*JA@LmZ0XWNCJI4&^Aq#pL@hBtxJdUD|IQR3012~Th91UWarQ%g`+Q1MjVx6O8 zigCMzmmM4?+`ATWIE*-cgdY=$-FORk$p;U$C-4)FypG-vIPy_@FMf)j5zS#n^+U@1 zv=YJ3DPxT#5ARW?(%Pf=1!a}Aso|IS6+etCHc7-h z>DC}sT*3LJMaijdnK`M944fd-^+4*_7#V=(0NumDzy!36m4S@`WGOoX2T%m45G2mP F1ppaWD!2du literal 0 HcmV?d00001 diff --git a/src/ru/gb/family_tree/Main.java b/src/ru/gb/family_tree/Main.java index 8a0d6b8..0af5cfd 100644 --- a/src/ru/gb/family_tree/Main.java +++ b/src/ru/gb/family_tree/Main.java @@ -1,53 +1,59 @@ package ru.gb.family_tree; -import ru.gb.family_tree.family_tree.FamilyTree; -import ru.gb.family_tree.human.Gender; -import ru.gb.family_tree.human.Human; -import ru.gb.family_tree.save.FileHandler; -import ru.gb.family_tree.save.Writable; +import ru.gb.family_tree.model.family_tree.FamilyTree; +import ru.gb.family_tree.model.human.Gender; +import ru.gb.family_tree.model.human.Human; +import ru.gb.family_tree.model.save.FileHandler; +import ru.gb.family_tree.model.save.Writable; +import ru.gb.family_tree.view.ConsoleUI; +import ru.gb.family_tree.view.View; import java.time.LocalDate; public class Main { public static void main(String[] args) { - String filePath = "src/ru/gb/family_tree/save/tree.txt"; - FamilyTree tree = testTree(); - //FamilyTree tree = load(filePath); - System.out.println(tree); - tree.sotrByName(); - System.out.println(tree); - tree.sortByBirthDate(); - System.out.println(tree); - //save(tree, filePath); + View view = new ConsoleUI(); + view.start(); } - - private static FamilyTree load(String filePath){ - Writable writable = new FileHandler(); - return (FamilyTree) writable.read(filePath); - } - - private static void save(FamilyTree familyTree, String filePath){ - Writable writable = new FileHandler(); - writable.save(familyTree, filePath); - } - - private static FamilyTree testTree() { - FamilyTree familyTree = new FamilyTree(); - - Human human1 = new Human("Oleg", Gender.Male, LocalDate.of(1985, 12, 12)); - Human human2 = new Human("Olga", Gender.Female, LocalDate.of(1984, 6, 18)); - Human human3 = new Human("Ruslan", Gender.Male, LocalDate.of(2006, 10, 10), human1, human2); - Human human4 = new Human("Lena", Gender.Female, LocalDate.of(2016, 5, 4), human1, human2); - - - familyTree.addHuman(human1); - familyTree.addHuman(human2); - familyTree.addHuman(human3); - familyTree.addHuman(human4); - - familyTree.setWedding(human1.getId(), human2.getId()); - - return familyTree; - } +// String filePath = "src/ru/gb/family_tree/save/tree.txt"; +// FamilyTree tree = testTree(); +// //FamilyTree tree = load(filePath); +// System.out.println(tree); +// tree.sotrByName(); +// System.out.println(tree); +// tree.sortByBirthDate(); +// System.out.println(tree); +// //save(tree, filePath); +// +// } +// +// private static FamilyTree load(String filePath){ +// Writable writable = new FileHandler(); +// return (FamilyTree) writable.read(filePath); +// } +// +// private static void save(FamilyTree familyTree, String filePath){ +// Writable writable = new FileHandler(); +// writable.save(familyTree, filePath); +// } +// +// private static FamilyTree testTree() { +// FamilyTree familyTree = new FamilyTree(); +// +// Human human1 = new Human("Oleg", Gender.Male, LocalDate.of(1985, 12, 12)); +// Human human2 = new Human("Olga", Gender.Female, LocalDate.of(1984, 6, 18)); +// Human human3 = new Human("Ruslan", Gender.Male, LocalDate.of(2006, 10, 10), human1, human2); +// Human human4 = new Human("Lena", Gender.Female, LocalDate.of(2016, 5, 4), human1, human2); +// +// +// familyTree.addHuman(human1); +// familyTree.addHuman(human2); +// familyTree.addHuman(human3); +// familyTree.addHuman(human4); +// +// familyTree.setWedding(human1.getId(), human2.getId()); +// +// return familyTree; +// } } diff --git a/src/ru/gb/family_tree/family_tree/FamiliTreeIterator.java b/src/ru/gb/family_tree/model/family_tree/FamiliTreeIterator.java similarity index 85% rename from src/ru/gb/family_tree/family_tree/FamiliTreeIterator.java rename to src/ru/gb/family_tree/model/family_tree/FamiliTreeIterator.java index 428433c..8172f8a 100644 --- a/src/ru/gb/family_tree/family_tree/FamiliTreeIterator.java +++ b/src/ru/gb/family_tree/model/family_tree/FamiliTreeIterator.java @@ -1,6 +1,4 @@ -package ru.gb.family_tree.family_tree; - -import ru.gb.family_tree.human.Human; +package ru.gb.family_tree.model.family_tree; import java.util.Iterator; import java.util.List; diff --git a/src/ru/gb/family_tree/family_tree/FamilyTree.java b/src/ru/gb/family_tree/model/family_tree/FamilyTree.java similarity index 98% rename from src/ru/gb/family_tree/family_tree/FamilyTree.java rename to src/ru/gb/family_tree/model/family_tree/FamilyTree.java index 7744a75..1993aad 100644 --- a/src/ru/gb/family_tree/family_tree/FamilyTree.java +++ b/src/ru/gb/family_tree/model/family_tree/FamilyTree.java @@ -1,6 +1,4 @@ -package ru.gb.family_tree.family_tree; - -import ru.gb.family_tree.human.Human; +package ru.gb.family_tree.model.family_tree; import java.io.Serializable; import java.util.ArrayList; diff --git a/src/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.java b/src/ru/gb/family_tree/model/family_tree/HumanComparatorByBirthDate.java similarity index 75% rename from src/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.java rename to src/ru/gb/family_tree/model/family_tree/HumanComparatorByBirthDate.java index 43b6ab7..138d8c6 100644 --- a/src/ru/gb/family_tree/family_tree/HumanComparatorByBirthDate.java +++ b/src/ru/gb/family_tree/model/family_tree/HumanComparatorByBirthDate.java @@ -1,6 +1,4 @@ -package ru.gb.family_tree.family_tree; - -import ru.gb.family_tree.human.Human; +package ru.gb.family_tree.model.family_tree; import java.util.Comparator; diff --git a/src/ru/gb/family_tree/family_tree/HumanComparatorByName.java b/src/ru/gb/family_tree/model/family_tree/HumanComparatorByName.java similarity index 74% rename from src/ru/gb/family_tree/family_tree/HumanComparatorByName.java rename to src/ru/gb/family_tree/model/family_tree/HumanComparatorByName.java index 7e5132b..c8fc237 100644 --- a/src/ru/gb/family_tree/family_tree/HumanComparatorByName.java +++ b/src/ru/gb/family_tree/model/family_tree/HumanComparatorByName.java @@ -1,6 +1,4 @@ -package ru.gb.family_tree.family_tree; - -import ru.gb.family_tree.human.Human; +package ru.gb.family_tree.model.family_tree; import java.util.Comparator; diff --git a/src/ru/gb/family_tree/family_tree/TreeNode.java b/src/ru/gb/family_tree/model/family_tree/TreeNode.java similarity index 91% rename from src/ru/gb/family_tree/family_tree/TreeNode.java rename to src/ru/gb/family_tree/model/family_tree/TreeNode.java index 128af2b..fc5fd02 100644 --- a/src/ru/gb/family_tree/family_tree/TreeNode.java +++ b/src/ru/gb/family_tree/model/family_tree/TreeNode.java @@ -1,4 +1,4 @@ -package ru.gb.family_tree.family_tree; +package ru.gb.family_tree.model.family_tree; import java.io.Serializable; import java.time.LocalDate; diff --git a/src/ru/gb/family_tree/human/Gender.java b/src/ru/gb/family_tree/model/human/Gender.java similarity index 51% rename from src/ru/gb/family_tree/human/Gender.java rename to src/ru/gb/family_tree/model/human/Gender.java index 2c38dd7..e278515 100644 --- a/src/ru/gb/family_tree/human/Gender.java +++ b/src/ru/gb/family_tree/model/human/Gender.java @@ -1,4 +1,4 @@ -package ru.gb.family_tree.human; +package ru.gb.family_tree.model.human; public enum Gender { Male, Female diff --git a/src/ru/gb/family_tree/human/Human.java b/src/ru/gb/family_tree/model/human/Human.java similarity index 96% rename from src/ru/gb/family_tree/human/Human.java rename to src/ru/gb/family_tree/model/human/Human.java index 4f267b8..d67da0c 100644 --- a/src/ru/gb/family_tree/human/Human.java +++ b/src/ru/gb/family_tree/model/human/Human.java @@ -1,10 +1,7 @@ -package ru.gb.family_tree.human; +package ru.gb.family_tree.model.human; -import ru.gb.family_tree.family_tree.FamiliTreeIterator; -import ru.gb.family_tree.family_tree.FamilyTree; -import ru.gb.family_tree.family_tree.TreeNode; +import ru.gb.family_tree.model.family_tree.TreeNode; -import java.io.Serializable; import java.time.LocalDate; import java.time.Period; import java.util.ArrayList; diff --git a/src/ru/gb/family_tree/save/FileHandler.java b/src/ru/gb/family_tree/model/save/FileHandler.java similarity index 95% rename from src/ru/gb/family_tree/save/FileHandler.java rename to src/ru/gb/family_tree/model/save/FileHandler.java index 70871dd..dedf852 100644 --- a/src/ru/gb/family_tree/save/FileHandler.java +++ b/src/ru/gb/family_tree/model/save/FileHandler.java @@ -1,4 +1,4 @@ -package ru.gb.family_tree.save; +package ru.gb.family_tree.model.save; import java.io.*; diff --git a/src/ru/gb/family_tree/save/Writable.java b/src/ru/gb/family_tree/model/save/Writable.java similarity index 80% rename from src/ru/gb/family_tree/save/Writable.java rename to src/ru/gb/family_tree/model/save/Writable.java index 6c22145..3537de0 100644 --- a/src/ru/gb/family_tree/save/Writable.java +++ b/src/ru/gb/family_tree/model/save/Writable.java @@ -1,4 +1,4 @@ -package ru.gb.family_tree.save; +package ru.gb.family_tree.model.save; import java.io.Serializable; diff --git a/src/ru/gb/family_tree/model/save/tree.txt b/src/ru/gb/family_tree/model/save/tree.txt new file mode 100644 index 0000000000000000000000000000000000000000..6b7dff00f81f6a001d5619739b0511f90356b7eb GIT binary patch literal 949 zcmaJ;!A{#i5S=)VlLi#Ei4YPfrRs^3ed~o&rIG?NMS@4;wT>H^%)$JQe%hExo{8zXKA zQ9I$W3j#wMT8H45>Q*w@zxGjq=;ODXvw`q{966cnmy7zF2fZWk6xp0AV`o2vl@>Of zO{+2)#q)Ea>3J`P-uX=F#K`;#?x2O7L<+~DhaiR^m3bnKg)gzGqI4Q9tubO7(N9L8 zn4gObdktMLE%G!vvqt49*1CnjF1B3s3Cdz#l?dK>Q-l)fUXYqMlw)TSW_ZvJg9@Xv)e188MxZxL?FhmOm z25gh&5BKvbTP_wB{9~bU@Zhv65%St2?WezDw8dFtG#EBU7lRRLutI9TB6a+R)J#Xb zPiSQ#Gxp@iG8fET+8R5eW3w*mf-Ykm;zXwn@>!9g4zuOLh@mol5nYCEvML<|I=1R3 DrkEHY literal 0 HcmV?d00001 diff --git a/src/ru/gb/family_tree/presenter/Presenter.java b/src/ru/gb/family_tree/presenter/Presenter.java new file mode 100644 index 0000000..48979c1 --- /dev/null +++ b/src/ru/gb/family_tree/presenter/Presenter.java @@ -0,0 +1,35 @@ +package ru.gb.family_tree.presenter; + +import ru.gb.family_tree.model.family_tree.FamilyTree; +import ru.gb.family_tree.model.human.Gender; +import ru.gb.family_tree.model.human.Human; +import ru.gb.family_tree.view.View; + +import java.time.LocalDate; + +public class Presenter { + private View view; + private Human human; + private FamilyTree familyTree; + + public Presenter(View view) { + this.view = view; + familyTree = new FamilyTree<>(); + } + + public void addHuman(String name, Gender gender, LocalDate date) { + Human human = new Human(name, gender, date); + familyTree.addHuman(human); + getHumanInfo(); + } + + public void getHumanInfo(){ + String answar = familyTree.getInfo(); + view.printAnswer(answar); + } + + public void sotrByName() { + familyTree.sotrByName(); + getHumanInfo(); + } +} diff --git a/src/ru/gb/family_tree/save/tree.txt b/src/ru/gb/family_tree/save/tree.txt deleted file mode 100644 index b7eaa6a31be80058417c164a154bb9388d353865..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 883 zcmZ`#J#W-N5S{b+e8+K|!bK=j&;g>NvOAhoksx0(ASJX2?d3MUMYdzsYvLdjDN=p{ z6ckV(N-9b!sOVE55DkBT-vBeS2Kzv9vEG?|Z{C~t?k99|4L5Y*M-zWfBq~09Xtb1b z_ciX{$M)X$Z_nPmel8qvwxBmF5|QSc(-6+_HB`AVun;~HPef1{6$jK=DKoI2i&Bg9 z=+mRWsdRyQq zvNKWI%x(!I4P3Hzj7nq>?(d42+AAUSc4sP{YMDNUBWNLKDuv}x!wbQSWIC1Fz_m~p zK{N>(@dPX%tTO_Kxv5A{Yh<-zkw(Fe(JGDbt(yr{F?prq<=K9bBlzl>V|lAOHoycf zaBQ@Mza#aF2PYpcU*C8?04TGAZX2NcX)q{R0t;|BIfv^`6~3*`TlANHzeWS2ang~7 zD`zEbSFL8j2!%Ba*%WQ--%g99`Is4S?}!-J^tOu}A^&=#H2QM}TU=EJKYF9uV6_fW zhI5p5lk%hE)|7fDVqHWVYcgR!ZYWd1yhc*&hK{8&D>J%`ae;erR3raPWT?d~+utHX SW%PGw6S~Ax=@`b`HG3a{$ diff --git a/src/ru/gb/family_tree/view/ConsoleUI.java b/src/ru/gb/family_tree/view/ConsoleUI.java new file mode 100644 index 0000000..6d29edd --- /dev/null +++ b/src/ru/gb/family_tree/view/ConsoleUI.java @@ -0,0 +1,107 @@ +package ru.gb.family_tree.view; + +import ru.gb.family_tree.model.human.Gender; +import ru.gb.family_tree.model.human.Human; +import ru.gb.family_tree.presenter.Presenter; + +import java.time.LocalDate; +import java.util.Scanner; + +public class ConsoleUI implements View { + private Scanner scanner; + private Presenter presenter; + private boolean work; + + public ConsoleUI() { + scanner = new Scanner(System.in); + presenter = new Presenter(this); + work = true; + } + + @Override + public void start() { + while (work) { + System.out.println("Создай свое семейное древо!"); + System.out.println("1. Добавить человека"); + System.out.println("2. Получить список людей"); + System.out.println("3. Отсортировать по имени"); + System.out.println("4. Закончить работу"); + + String choise = scanner.nextLine(); + + switch (choise) { + case "1": + addHuman(); + break; + case "2": + getHumanInfo(); + break; + case "3": + sotrByName(); + break; + case "4": + finish(); + break; + default: + System.out.println("Вы ввели некоректные данные."); + } + } + + } + + private void sotrByName() { + presenter.sotrByName(); + } + + private void getHumanInfo() { + presenter.getHumanInfo(); + } + + private void finish() { + work = false; + } + + + private void addHuman(){ + Gender gender; + System.out.println("Укажите имя"); + String name = scanner.nextLine(); + + System.out.println("Укажите пол Male или Female:"); + String genderStr = scanner.nextLine(); + + gender = getGenderFromString(genderStr); + + System.out.println("Укажите возраст:"); + System.out.println("Введите год рождения:"); + String yearStr = scanner.nextLine(); + int year = Integer.parseInt(yearStr); + System.out.println("Введите месяц:"); + String monthStr = scanner.nextLine(); + int month = Integer.parseInt(monthStr); + System.out.println("Введите день:"); + String dayStr = scanner.nextLine(); + int day = Integer.parseInt(dayStr); + + LocalDate date = LocalDate.of(year, month, day); + presenter.addHuman(name, gender, date); + } + + public static Gender getGenderFromString(String input) { + if (input == null) { + return null; + } + + try { + return Gender.valueOf(input); + } catch (IllegalArgumentException e) { + // Если введенная строка не соответствует ни одной из констант + return null; + } + } + + @Override + public void printAnswer(String answer) { + System.out.println(answer); + } +} diff --git a/src/ru/gb/family_tree/view/View.java b/src/ru/gb/family_tree/view/View.java new file mode 100644 index 0000000..fcdaaae --- /dev/null +++ b/src/ru/gb/family_tree/view/View.java @@ -0,0 +1,6 @@ +package ru.gb.family_tree.view; + +public interface View { + void start(); + void printAnswer(String answer); +} From 0744e1878f1e6ebaf68d7b2e196c3b986542a633 Mon Sep 17 00:00:00 2001 From: SlanSaf Date: Thu, 13 Jun 2024 22:44:58 +0300 Subject: [PATCH 09/13] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=BD=D0=BE=D0=B5=20?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8E,=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4=D1=8B=20=D1=80=D0=B0=D1=81=D1=81=D0=BA=D0=B8=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BF=D0=BE=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81?= =?UTF-8?q?=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/gb/family_tree/model/save/tree.txt | Bin 949 -> 788 bytes .../gb/family_tree/presenter/Presenter.class | Bin 1426 -> 2309 bytes .../ru/gb/family_tree/view/ConsoleUI.class | Bin 3480 -> 3306 bytes .../ru/gb/family_tree/view/MainMenu.class | Bin 0 -> 1978 bytes .../family_tree/view/commands/AddHuman.class | Bin 0 -> 742 bytes .../family_tree/view/commands/Command.class | Bin 0 -> 764 bytes .../gb/family_tree/view/commands/Finish.class | Bin 0 -> 732 bytes .../view/commands/GetHumanInfo.class | Bin 0 -> 765 bytes .../family_tree/view/commands/LoadTree.class | Bin 0 -> 756 bytes .../family_tree/view/commands/SaveTree.class | Bin 0 -> 748 bytes .../view/commands/SortByName.class | Bin 0 -> 770 bytes src/ru/gb/family_tree/model/save/tree.txt | Bin 949 -> 788 bytes .../gb/family_tree/presenter/Presenter.java | 26 +++++++++- src/ru/gb/family_tree/view/ConsoleUI.java | 49 +++++++----------- src/ru/gb/family_tree/view/MainMenu.java | 41 +++++++++++++++ .../family_tree/view/commands/AddHuman.java | 14 +++++ .../gb/family_tree/view/commands/Command.java | 24 +++++++++ .../gb/family_tree/view/commands/Finish.java | 14 +++++ .../view/commands/GetHumanInfo.java | 15 ++++++ .../family_tree/view/commands/LoadTree.java | 14 +++++ .../family_tree/view/commands/SaveTree.java | 14 +++++ .../family_tree/view/commands/SortByName.java | 14 +++++ 22 files changed, 194 insertions(+), 31 deletions(-) create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/MainMenu.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/AddHuman.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/Command.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/Finish.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/GetHumanInfo.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/LoadTree.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/SaveTree.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/SortByName.class create mode 100644 src/ru/gb/family_tree/view/MainMenu.java create mode 100644 src/ru/gb/family_tree/view/commands/AddHuman.java create mode 100644 src/ru/gb/family_tree/view/commands/Command.java create mode 100644 src/ru/gb/family_tree/view/commands/Finish.java create mode 100644 src/ru/gb/family_tree/view/commands/GetHumanInfo.java create mode 100644 src/ru/gb/family_tree/view/commands/LoadTree.java create mode 100644 src/ru/gb/family_tree/view/commands/SaveTree.java create mode 100644 src/ru/gb/family_tree/view/commands/SortByName.java diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/save/tree.txt b/out/production/GBLesson1/ru/gb/family_tree/model/save/tree.txt index 6b7dff00f81f6a001d5619739b0511f90356b7eb..c125058e89a9fb7f778fca95bb10929af8ce267b 100644 GIT binary patch delta 386 zcmdnWK81~A&07Z6;vxpUi9C87Ykq6}usuFSdZLe+6*Ev!I4iL%QLnTlGe^&{s3@`0 zC$qSuqVbaK%;Sl3nHd;88CZ%lt5Pcp7#J9s%UM7qP?PdR9*K$fxH(e3-P$jdsJL$8 z&j?91pQ2Lz^d$YX#N5oB%J`C^)KvZ4{FKz3$tjF3;i|Y~^)pIy6Z7;vK%_O;8lW8v zj6h3x!7eMw%uUq`PA!@m+pt-V46??06zd|aR2}S literal 949 zcmaJ;!A{#i5S=)VlLi#Ei4YPfrRs^3ed~o&rIG?NMS@4;wT>H^%)$JQe%hExo{8zXKA zQ9I$W3j#wMT8H45>Q*w@zxGjq=;ODXvw`q{966cnmy7zF2fZWk6xp0AV`o2vl@>Of zO{+2)#q)Ea>3J`P-uX=F#K`;#?x2O7L<+~DhaiR^m3bnKg)gzGqI4Q9tubO7(N9L8 zn4gObdktMLE%G!vvqt49*1CnjF1B3s3Cdz#l?dK>Q-l)fUXYqMlw)TSW_ZvJg9@Xv)e188MxZxL?FhmOm z25gh&5BKvbTP_wB{9~bU@Zhv65%St2?WezDw8dFtG#EBU7lRRLutI9TB6a+R)J#Xb zPiSQ#Gxp@iG8fET+8R5eW3w*mf-Ykm;zXwn@>!9g4zuOLh@mol5nYCEvML<|I=1R3 DrkEHY diff --git a/out/production/GBLesson1/ru/gb/family_tree/presenter/Presenter.class b/out/production/GBLesson1/ru/gb/family_tree/presenter/Presenter.class index ccb9d12a1cee277d5b20f1058e2a0a1a211920b0..be456a664fec1ee43a22ce03d834ee9e8a090b96 100644 GIT binary patch literal 2309 zcma)7{ZkWH6g@AABy6@o6Fyogh@vGQ$YQIuHI`OI#2SGX3POKy7V-$|BpYY5K26AHNugA)Z9S#0B&S47{)p zY^!FwRcm?sh1~H4dhR-|jCL2N)j@&uOSay>=Qa6JID% zMzi62_g^j9b#~IgO%u0pn|4v|6nOYy3Af!47Bn~)p$iqCfv-(`gF6JSHSCJOe3Y;c zDsBf?5_bi1-R0;wUkf}Ri?&;-NzXtD@ie}}_etC{d88jip0keN4bSoI?HcQl@T5}x zd8F$0xzm%Nq(~mBLM{jt!w{!otxC_aYtC;9GOA8n0v7^vQrEeq(C!UvR1%no>QBoJ zG%}?>pc4i9%Z@9T_UqfyThlpZ0>iJ{6h%Sd!-T)*GzF$2_#*}o6(n3bhqJF5oF|qj zB2t%BD-X{d11mggbZF!WB%naw3~^(E`~=~46dAUyh6=st|_o-c+B+&{(Fvi5I0&lfhc5> zN9ZjSkI-K@MRxN9Lq{0?gRjN#gzGQ^LGT0yNS8%F207A(P!9GK{V1MdiC1-}WC;E) zV>~3QqKC1-Na0TmpW@URmReeq|zBKb4N+bD$-+io7ev0YZPL5mvD^587Jwbj*PM)VG3!i1%yJ4 zp%8qIS0%yJ;ImO_TtO0(jJ_J6n)>|^Rp93q)*Z@hVG*zQFMQcnsM|Y5oLnT%dIXLJ z`Rc76YMdf*rXz3+HS(xJS>wrB;Z9Ma6}~MO3$HO3!#~LW&TVZ84QH`%vu_pc%xh_E z;28l8HKaq}XY7#bZzcqOI$dBt=Hu9Cr>h-sleo8Nq}u`ZgpN|*Y(^_1Di(h3h^|;v L`8N4HhOPerx62go delta 654 zcmZ9JO=}ZT6o#KWoj8-poi<;SrcG-bYpR{J#@hPPRt2*Vg`x{7Qg9Qb2F0XMqtI1W zt|iW2@DB(!K?80D|A9Zlr5o|wNw6Xp&YAmh-se4M-e%vYyzjridIz5|^Zd zr%9m|mFSmU>3v&Klf9oCzR!fY&uFsbqIFfb1I1F5v5L_<<-2*NH3^E*2es$=%xX%^ zMasHUb~&qA;EX~y4?6c=w;JvH?PrG`K4r~0(RgYtr7A2tT+m!(CF)ss1D~p9)l_+} z4m(Hn;|Gn_LDaH`x$N$X#+yd%Wux7!J?b1iZ#Q?M<;0WdM`EGtVo5s_5~TzAvRLC% zoW-^?J(!#?x>lL8Sb$eLzWWDIF@ zB=MJ2;wsk!AhKNNM(m@+7Ts;>NQ+g|wdqyHKKAiY9+}zX47<{7ES{ znl5wFXqf;i;q-Qx|b4$8u&q2w*fc#ZB2+-1-AF CqD?OV diff --git a/out/production/GBLesson1/ru/gb/family_tree/view/ConsoleUI.class b/out/production/GBLesson1/ru/gb/family_tree/view/ConsoleUI.class index 78bdbeb5e1c82c68ec7a43fbe64c4665f01dc374..d072353f4b5931b1402977fa2964a3481d75e461 100644 GIT binary patch literal 3306 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 DePYE8 literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/view/commands/Command.class b/out/production/GBLesson1/ru/gb/family_tree/view/commands/Command.class new file mode 100644 index 0000000000000000000000000000000000000000..c81c14fc69735d09fd28c13ded10080f66646233 GIT binary patch literal 764 zcma)4+e*Vg5IqxPW81XVdcUF~*j6!*J}5p|5rm=-)q+owrfc1jCX%LJ{z^d+eDDMO zC~-EeS}a8qn4O*3bI$C{zJI*F0ocb<0vd)4=q82{BaAle8{2YiuWp@G8^Q?*v0drO zaE~yQ%U9wULEJ#XL=q-pJ!o6?sMrF(x720~ajQrudO-)!1mtz{KE4k1|+EhmuI zq4YgMw)CS@4g=}ccNBBlL#ks?faH$v%bQu)p*<*|2($H<397MgLv*^Y_q&O zS8svWOyLDo*m#Cf*nCFnF#?RU%`yOpvrVu~BF$tI99izbFo`MNF+n6lk*9<-7MR9N zSH|L1<%SDSFdo>^pvYrUFcT4)odX?0oiNK;_03_PGpg2JlGJaK$$k=sEig>O;wSn^ Bq8N6 zbLcWRQ-mn zXTQecZX=~4f-VJ74GLm}CAX@Viu$Qhme%#L=L(@;NO7r~PPuH@Clx){+z_Ih(w5#9 zVLhEcH!cj_GVGFm;JMN+W%F$?ImfOzmN?qWW(q1)#1&{7deBQ)Y}4|ayvuo&GlEtU z-YLNMkL=X~rX^Z`8xhUL2 zqiC^{%sZxG6%1Dfx@AVZGg%?DW&b;Sme6hf+#q4D^GF0mTnV%4@dWCDQ*}+TD}!<3 z&D&fJUJkST5)uA2KnUD{Azp`BZ6nMM5L-^t$}7UpjfxRo)rPMGe+Hwhhnsa6!#FGM ozyv0lLYTr}i?-I#0qq6dFG&2S#hIoxXc|`rj3$jR%_@YMZzw*%ZU6uP literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/view/commands/GetHumanInfo.class b/out/production/GBLesson1/ru/gb/family_tree/view/commands/GetHumanInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..9c87d73b13f8237f022be1558b1ef7813687ed74 GIT binary patch literal 765 zcmaiy%}(1u6otj`BXQ)I|pc3p^*)N2+PC^tRtZYVe?%eyGJ9p;x?&=!AF4QDq44eLM|Jwf_{0M&f z7s2=7Obt%`8`_>y_)4XdU;erO*S~zH%1B^L!ngtnNrqRBr!{L@LvIQ5+o9`luAK<} zMKkPHOSkH6t=QWzjK3F_a6d3?=gP1ID`#dhD_tR ze3fA%H`*%9OBC%oXP7Dri+}W5HST=UYbHf9W!uors_uwT_k#)dNVFNYqS#N)p}>$b z9%jn07F9gB5*0}ND>pos`j9KO=NNoXgiXy1&vz?)QLNGnCFolLF;E@mXw8z^L7XB$ zax=qT|3mywH{&_2axYG~DZC(^?dy3gkfI7KVu>gWFEQJvz3u9d)#5Q{9iIjvO9n7%`wB&oCQy>}K8m%3IRg*^ELV z>@6v_Z8vDOxZh~o)xihD$S3K`Xo=y2<$UK`-1fNNwAZ6h`pt@yf~f|6JMhGp&y{jb zhmJ7~hJkTBWUx|NhRIIA8yhqbgV7Yxki_uTD&L={V*-yf6b(GaB!iifb_1LDhJjhD zTw{1=-5-tnYrkjY%|QIvG44^!Z7My zpCiLeTH|ml)S!tU!tF#fgT5YgLRYNHWT5fuGhIk-5O3&4a`c*j45$ZBXf2UiMwT2P zKUZY)J!F6NE1uG-_kAsSJD4I}8r0z#o|B>uyueGMFid0eiuS&*6WTFGk5RZy8zY+0 Rrx{e4Fa|V+SEMp{eF+-}&Hn%Z literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/view/commands/SaveTree.class b/out/production/GBLesson1/ru/gb/family_tree/view/commands/SaveTree.class new file mode 100644 index 0000000000000000000000000000000000000000..f52846632cb52b1d6bb942ef720aa21e0db43c50 GIT binary patch literal 748 zcmaiyOHbQC6ot*oK)!ilLx>sGsV;I*-0YU!(7) z`mN5Q&+1HdRL@i$Gx|oqFVw%crj86oG>jV1kY(5iT6Vo=f8Y)2emV>TA?&skC${4^ z8r(Z-+NHqd-N+!7wm^ zNd_yyGEA=Uw%DhE7>v3Iha`qItMGW9j%mzj$QgKoJcF5#b_bhn4g=Fxp~|psJsuPH zWlH`LO*vJTp4e+OY9iR@HJ2*6vhQ%W$^#ken_?#XD4PtMN$dyvFEWfdx97<4BFQ-1 z3K=wUDx6kGGw2n+6*yu?#sf{UYf1s`u+!{C4n+^z5Jy^H?B74lH7cC=AQU-_Tz7bxiAGtc$7pv~i*teVRd?F=Ieu JSRs|d>NTUK$ZY@s literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/view/commands/SortByName.class b/out/production/GBLesson1/ru/gb/family_tree/view/commands/SortByName.class new file mode 100644 index 0000000000000000000000000000000000000000..64da2bb82fe2a1210d95e3337c0a045b00bba55e GIT binary patch literal 770 zcmaiyPfrt36vfYLD^rHiO8Kjz3`9eV#MwbY4IwlkF=^OTyEU)FqdYTzlIav=2ds@B z!Os9jps18Rt2bZBaHoZ0j1x95b58F4ojdovt3N+G0M=k;kz!a<-=f3lKy{-1=uowz zebrIl)e(7LO!X`Js(z>wb#AIl)iG6D{U&vx+RLVn3?670FrXpJFc-9}M%~)tu5|W3 zhJg^)jug9=?Yl1bHk($t_rWmmR(djAq2xm46W`&M!@Y)84Fl;lN|gjm+4q{hBR;$< z6>B8!DA@47& z-t@!ZHZol())-zD?hlIVGG%|0=FC;3CpKDcT?FrW-61Dm@onzZcpzhaV`jo_*<@Hq zV*h6cC5A!!cAE^dNv-|gp$1KS7IrJ7DfFt}3T&}1TcYQ5>LzpBz-mAkCJS9aPc!nvWFg(ZT4Q;WjW7;VO ZPm%kVHbgX|OEai4X7p$bFG!^@eGPrL)#3mE literal 0 HcmV?d00001 diff --git a/src/ru/gb/family_tree/model/save/tree.txt b/src/ru/gb/family_tree/model/save/tree.txt index 6b7dff00f81f6a001d5619739b0511f90356b7eb..c125058e89a9fb7f778fca95bb10929af8ce267b 100644 GIT binary patch delta 386 zcmdnWK81~A&07Z6;vxpUi9C87Ykq6}usuFSdZLe+6*Ev!I4iL%QLnTlGe^&{s3@`0 zC$qSuqVbaK%;Sl3nHd;88CZ%lt5Pcp7#J9s%UM7qP?PdR9*K$fxH(e3-P$jdsJL$8 z&j?91pQ2Lz^d$YX#N5oB%J`C^)KvZ4{FKz3$tjF3;i|Y~^)pIy6Z7;vK%_O;8lW8v zj6h3x!7eMw%uUq`PA!@m+pt-V46??06zd|aR2}S literal 949 zcmaJ;!A{#i5S=)VlLi#Ei4YPfrRs^3ed~o&rIG?NMS@4;wT>H^%)$JQe%hExo{8zXKA zQ9I$W3j#wMT8H45>Q*w@zxGjq=;ODXvw`q{966cnmy7zF2fZWk6xp0AV`o2vl@>Of zO{+2)#q)Ea>3J`P-uX=F#K`;#?x2O7L<+~DhaiR^m3bnKg)gzGqI4Q9tubO7(N9L8 zn4gObdktMLE%G!vvqt49*1CnjF1B3s3Cdz#l?dK>Q-l)fUXYqMlw)TSW_ZvJg9@Xv)e188MxZxL?FhmOm z25gh&5BKvbTP_wB{9~bU@Zhv65%St2?WezDw8dFtG#EBU7lRRLutI9TB6a+R)J#Xb zPiSQ#Gxp@iG8fET+8R5eW3w*mf-Ykm;zXwn@>!9g4zuOLh@mol5nYCEvML<|I=1R3 DrkEHY diff --git a/src/ru/gb/family_tree/presenter/Presenter.java b/src/ru/gb/family_tree/presenter/Presenter.java index 48979c1..9844453 100644 --- a/src/ru/gb/family_tree/presenter/Presenter.java +++ b/src/ru/gb/family_tree/presenter/Presenter.java @@ -3,6 +3,8 @@ import ru.gb.family_tree.model.family_tree.FamilyTree; import ru.gb.family_tree.model.human.Gender; import ru.gb.family_tree.model.human.Human; +import ru.gb.family_tree.model.save.FileHandler; +import ru.gb.family_tree.model.save.Writable; import ru.gb.family_tree.view.View; import java.time.LocalDate; @@ -11,6 +13,7 @@ public class Presenter { private View view; private Human human; private FamilyTree familyTree; + String filePath = "src/ru/gb/family_tree/model/save/tree.txt"; public Presenter(View view) { this.view = view; @@ -18,8 +21,7 @@ public Presenter(View view) { } public void addHuman(String name, Gender gender, LocalDate date) { - Human human = new Human(name, gender, date); - familyTree.addHuman(human); + familyTree.addHuman(new Human(name, gender, date)); getHumanInfo(); } @@ -32,4 +34,24 @@ public void sotrByName() { familyTree.sotrByName(); getHumanInfo(); } + + public void saveFamaleTree() { + save(familyTree, filePath); + } + + public void loadFamaleTree() { + familyTree = load(filePath); + } + + private static FamilyTree load(String filePath){ + Writable writable = new FileHandler(); + return (FamilyTree) writable.read(filePath); + } + + private static void save(FamilyTree familyTree, String filePath){ + Writable writable = new FileHandler(); + writable.save(familyTree, filePath); + } + + } diff --git a/src/ru/gb/family_tree/view/ConsoleUI.java b/src/ru/gb/family_tree/view/ConsoleUI.java index 6d29edd..f4f2687 100644 --- a/src/ru/gb/family_tree/view/ConsoleUI.java +++ b/src/ru/gb/family_tree/view/ConsoleUI.java @@ -11,65 +11,56 @@ public class ConsoleUI implements View { private Scanner scanner; private Presenter presenter; private boolean work; + private MainMenu mainMenu; public ConsoleUI() { scanner = new Scanner(System.in); presenter = new Presenter(this); work = true; + mainMenu = new MainMenu(this); } @Override public void start() { + System.out.println("Создай свое семейное древо!"); while (work) { - System.out.println("Создай свое семейное древо!"); - System.out.println("1. Добавить человека"); - System.out.println("2. Получить список людей"); - System.out.println("3. Отсортировать по имени"); - System.out.println("4. Закончить работу"); - - String choise = scanner.nextLine(); - - switch (choise) { - case "1": - addHuman(); - break; - case "2": - getHumanInfo(); - break; - case "3": - sotrByName(); - break; - case "4": - finish(); - break; - default: - System.out.println("Вы ввели некоректные данные."); - } + System.out.println(mainMenu.menu()); + String choiceStr = scanner.nextLine(); + //метод проверки на валидность + int choice = Integer.parseInt(choiceStr); + mainMenu.execute(choice); } } - private void sotrByName() { + public void loadTree() { + presenter.loadFamaleTree(); + } + + public void saveTree() { + presenter.saveFamaleTree(); + } + + public void sotrByName() { presenter.sotrByName(); } - private void getHumanInfo() { + public void getHumanInfo() { presenter.getHumanInfo(); } - private void finish() { + public void finish() { work = false; } - private void addHuman(){ + public void addHuman(){ Gender gender; System.out.println("Укажите имя"); String name = scanner.nextLine(); System.out.println("Укажите пол Male или Female:"); String genderStr = scanner.nextLine(); - gender = getGenderFromString(genderStr); System.out.println("Укажите возраст:"); diff --git a/src/ru/gb/family_tree/view/MainMenu.java b/src/ru/gb/family_tree/view/MainMenu.java new file mode 100644 index 0000000..fdafd33 --- /dev/null +++ b/src/ru/gb/family_tree/view/MainMenu.java @@ -0,0 +1,41 @@ +package ru.gb.family_tree.view; + +import ru.gb.family_tree.view.commands.*; + +import java.util.ArrayList; +import java.util.List; + +public class MainMenu { + private List commands; + + public MainMenu(ConsoleUI consoleUI) { + commands = new ArrayList<>(); + commands.add(new AddHuman(consoleUI)); + commands.add(new GetHumanInfo(consoleUI)); + commands.add(new SortByName(consoleUI)); + commands.add(new SaveTree(consoleUI)); + commands.add(new LoadTree(consoleUI)); + commands.add(new Finish(consoleUI)); + } + + public String menu(){ + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Меню:\n"); + for (int i = 0; i < commands.size(); i++) { + stringBuilder.append(i+1); + stringBuilder.append(". "); + stringBuilder.append(commands.get(i).getDescription()); + stringBuilder.append("\n"); + } + return stringBuilder.toString(); + } + + public void execute(int choice){ + Command command = commands.get(choice - 1); + command.execute(); + } + + public int size(){ + return commands.size(); + } +} diff --git a/src/ru/gb/family_tree/view/commands/AddHuman.java b/src/ru/gb/family_tree/view/commands/AddHuman.java new file mode 100644 index 0000000..9fd174b --- /dev/null +++ b/src/ru/gb/family_tree/view/commands/AddHuman.java @@ -0,0 +1,14 @@ +package ru.gb.family_tree.view.commands; + +import ru.gb.family_tree.view.ConsoleUI; + +public class AddHuman extends Command { + public AddHuman(ConsoleUI consoleUI) { + super("Добавить человека: ", consoleUI); + } + @Override + public void execute(){ + getConsoleUI().addHuman(); + }; + +} diff --git a/src/ru/gb/family_tree/view/commands/Command.java b/src/ru/gb/family_tree/view/commands/Command.java new file mode 100644 index 0000000..3cca3d6 --- /dev/null +++ b/src/ru/gb/family_tree/view/commands/Command.java @@ -0,0 +1,24 @@ +package ru.gb.family_tree.view.commands; + +import ru.gb.family_tree.view.ConsoleUI; + +public abstract class Command { + private String description; + private ConsoleUI consoleUI; + + public Command(String description, ConsoleUI consoleUI) { + this.description = description; + this.consoleUI = consoleUI; + } + + public String getDescription(){ + return description; + } + + public abstract void execute(); + + ConsoleUI getConsoleUI(){ + return consoleUI; + } +} + diff --git a/src/ru/gb/family_tree/view/commands/Finish.java b/src/ru/gb/family_tree/view/commands/Finish.java new file mode 100644 index 0000000..243597b --- /dev/null +++ b/src/ru/gb/family_tree/view/commands/Finish.java @@ -0,0 +1,14 @@ +package ru.gb.family_tree.view.commands; + +import ru.gb.family_tree.view.ConsoleUI; + +public class Finish extends Command{ + public Finish(ConsoleUI consoleUI) { + super("Закончить работу: ", consoleUI); + } + @Override + public void execute(){ + getConsoleUI().finish(); + }; +} + diff --git a/src/ru/gb/family_tree/view/commands/GetHumanInfo.java b/src/ru/gb/family_tree/view/commands/GetHumanInfo.java new file mode 100644 index 0000000..ce905ed --- /dev/null +++ b/src/ru/gb/family_tree/view/commands/GetHumanInfo.java @@ -0,0 +1,15 @@ +package ru.gb.family_tree.view.commands; + +import ru.gb.family_tree.view.ConsoleUI; + +public class GetHumanInfo extends Command{ + + public GetHumanInfo(ConsoleUI consoleUI) { + super("Получить список людей: ", consoleUI); + } + @Override + public void execute(){ + getConsoleUI().getHumanInfo(); + }; + +} \ No newline at end of file diff --git a/src/ru/gb/family_tree/view/commands/LoadTree.java b/src/ru/gb/family_tree/view/commands/LoadTree.java new file mode 100644 index 0000000..81fbbfb --- /dev/null +++ b/src/ru/gb/family_tree/view/commands/LoadTree.java @@ -0,0 +1,14 @@ +package ru.gb.family_tree.view.commands; + +import ru.gb.family_tree.view.ConsoleUI; + +public class LoadTree extends Command { + public LoadTree(ConsoleUI consoleUI) { + super("Выгрузить данный из файла: ", consoleUI); + } + @Override + public void execute(){ + getConsoleUI().loadTree(); + }; + +} diff --git a/src/ru/gb/family_tree/view/commands/SaveTree.java b/src/ru/gb/family_tree/view/commands/SaveTree.java new file mode 100644 index 0000000..85991b5 --- /dev/null +++ b/src/ru/gb/family_tree/view/commands/SaveTree.java @@ -0,0 +1,14 @@ +package ru.gb.family_tree.view.commands; + +import ru.gb.family_tree.view.ConsoleUI; + +public class SaveTree extends Command { + public SaveTree(ConsoleUI consoleUI) { + super("Записть дерево в файл: ", consoleUI); + } + @Override + public void execute(){ + getConsoleUI().saveTree(); + }; + +} diff --git a/src/ru/gb/family_tree/view/commands/SortByName.java b/src/ru/gb/family_tree/view/commands/SortByName.java new file mode 100644 index 0000000..c737364 --- /dev/null +++ b/src/ru/gb/family_tree/view/commands/SortByName.java @@ -0,0 +1,14 @@ +package ru.gb.family_tree.view.commands; + +import ru.gb.family_tree.view.ConsoleUI; + +public class SortByName extends Command{ + public SortByName(ConsoleUI consoleUI) { + super("Отсортировать людей по имени: ", consoleUI); + } + @Override + public void execute(){ + getConsoleUI().sotrByName(); + }; + +} From 0d7802eeffaf9d0f175342a22373fa981cb321f8 Mon Sep 17 00:00:00 2001 From: SlanSaf Date: Wed, 19 Jun 2024 15:53:01 +0300 Subject: [PATCH 10/13] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20MainMenu,=20Ser?= =?UTF-8?q?vise?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/gb/family_tree/model/Service.class | Bin 0 -> 2917 bytes .../model/family_tree/FamilyTree.class | Bin 5694 -> 5695 bytes .../model/family_tree/TreeNode.class | Bin 774 -> 774 bytes .../ru/gb/family_tree/model/human/Human.class | Bin 7391 -> 7570 bytes .../ru/gb/family_tree/model/save/tree.txt | Bin 788 -> 708 bytes .../gb/family_tree/presenter/Presenter.class | Bin 2309 -> 1839 bytes .../ru/gb/family_tree/view/ConsoleUI.class | Bin 3306 -> 3818 bytes .../ru/gb/family_tree/view/MainMenu.class | Bin 1978 -> 2209 bytes .../view/commands/AddChildern.class | Bin 0 -> 752 bytes .../view/commands/SetWedding.class | Bin 0 -> 746 bytes .../view/commands/SortByBirthDate.class | Bin 0 -> 805 bytes .../view/commands/SortByName.class | Bin 770 -> 770 bytes src/ru/gb/family_tree/model/Service.java | 78 ++++++++++++++++++ .../model/family_tree/FamilyTree.java | 6 +- .../model/family_tree/TreeNode.java | 2 +- src/ru/gb/family_tree/model/human/Human.java | 25 +----- src/ru/gb/family_tree/model/save/tree.txt | Bin 788 -> 708 bytes .../gb/family_tree/presenter/Presenter.java | 46 +++++------ src/ru/gb/family_tree/view/ConsoleUI.java | 52 +++++++----- src/ru/gb/family_tree/view/MainMenu.java | 4 + .../view/commands/AddChildern.java | 14 ++++ .../family_tree/view/commands/SetWedding.java | 14 ++++ .../view/commands/SortByBirthDate.java | 14 ++++ .../family_tree/view/commands/SortByName.java | 2 +- 24 files changed, 187 insertions(+), 70 deletions(-) create mode 100644 out/production/GBLesson1/ru/gb/family_tree/model/Service.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/AddChildern.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/SetWedding.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/SortByBirthDate.class create mode 100644 src/ru/gb/family_tree/model/Service.java create mode 100644 src/ru/gb/family_tree/view/commands/AddChildern.java create mode 100644 src/ru/gb/family_tree/view/commands/SetWedding.java create mode 100644 src/ru/gb/family_tree/view/commands/SortByBirthDate.java diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/Service.class b/out/production/GBLesson1/ru/gb/family_tree/model/Service.class new file mode 100644 index 0000000000000000000000000000000000000000..5917c360b71ff5d83f5f9dea2a469153f96df4d7 GIT binary patch literal 2917 zcmb7G`&Sc37`+o931I;Z8ry1pqU51O>!V66Dj))eM~elu4_%TWtZov|vY_^N{~vlz zebsY%`diQGAJxY;cNx`fA&g#$RKkO=0Dw03Dzd5=h~5*|MVwOKo624kZZhJ5`-8)=RcK zW&662SrNsKTR4G}+z-24Ht8r_NOweSRbF&mpc4w2hXOQg;WW-D#3;dRZN08=Af4Hp zw@gi2$cP6Mn|05hc)4I#&F1ASoR#6hV0gmu{0(6$0*_kA-b9H^nWg1^&H<`bE!kOr-k*Iwyc{~6;yaZg4_@xZz|-%B~CrhnsjW}`AHz#>14Kd z!onn`WY4s}s>@|osX|YBZccW88h2utu`nw&Fx-iItFh^mZQI?_i|aAmRXEw?I_tW+ zV!OAz%2rj^{M#=|`kC+4YfN^MZlgVlPE9XtRoAq4FHj+AOub?=4WGi92~i zpq$#XEvDAL?AxWM^Y*jQ28reRmRHhJZ_G8^^HH%I&po*l!Cyo!4AbK6#kU0lBFblx zy&}5U0#ezxP}yYcHF~ojF!tZhGe%UtWq(2P15yuiXW!wIb8m6v4UVlgkprG7A|5h`LMc29Ln(Y`LMeQYGa=Xn z-x53_3BAFoVs3}M2t=MBiKB?)m_bejGehJ!dp{Utg&!NzUm>1wi3fNiO^yNDDa0_` zB67STGH;TQ(=LqcZj2FPq}yUVYG90!o$#=P2Y18nj3C4xIAuy6M$U! zmw|$u^29mc1}7mGRhZLV@)4bfKHxHa_+>GdeUGaV{Eorhf?uTImkeAW_>lZV6G<7y z#u@<=aqDvH! zZxW?2$|5}|QTj#B!>^9KdV^an0RkPySvWUZ!225>>_-`zPz1m_TM_ii->(q7!nbHM zko^NaYA5>+w|9zahoe!F>BAgDiyu=YA^(iKNi2#x{4&Fca}B91qExV9;taqsqCMe? Q7$VWB7$+(`Wj6x%ZQ delta 29 lcmdn5vrlKkGZseS%`aGHurQSrZEoU>W@cpCe2*uQ69B7!3QYh2 diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/family_tree/TreeNode.class b/out/production/GBLesson1/ru/gb/family_tree/model/family_tree/TreeNode.class index 91503ea861fb23a0c44e89e51ae07d640db33d1f..ef4d3cb618445d09d26206bc1473711c5142a408 100644 GIT binary patch delta 12 TcmZo;Yh#;moH23Z2|FeL9exCh delta 12 TcmZo;Yh#;moH2jn2|FeL9mE8g diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/human/Human.class b/out/production/GBLesson1/ru/gb/family_tree/model/human/Human.class index 0089e4bd9914003c4b859de8e3d9e2997d00ba2d..be626b41b0ccead0b0788cbe5cccc03cee2e3528 100644 GIT binary patch delta 3078 zcmb7`2XItH7{~v6x%%!dIY=XyKtKrP4hY4OPz+Uy!hnNHaYjAJnNX8~AdWg7;4tE- zqr-FIA$<3(XEd1ZIM-&gnBcdYl~zS^#{ z8#VzLBvPxjrB1O$@8s^)O@oH59&E#E0at0ba%@HUoY`SH`mP5%@E%7)B_(4*v%)hg z1v+-rLt6X1iE@6I2fO9Glk7h9S-Dglnh~xH z&zdbzdXdOt%}-?+q95%luoU;z7kLV^{t2v~%0;+($MlM@s|AXCjn z*GJby-{6}0^$Vi4(T!<#k)jE!usMX?gC)YDH}f`FHGu;CYHvY`LwIywYEQ98ACemE zxsP$Q;C=pgK|2UEzGos!&6Oa``xTtCp&PGJeMRcj5%nCq3SM3_VdY9Uvf)DuzU9Er zUu)zdh&)QPL_g$XAV)@#G9GR50i}k+!RrJx=r^WykL;%on|l9{Pj(#Ob3QERDC%%P zbKoNfhB+`={qa=;l}UpRN`ts~9C23O-GN}|E)2~&bgkyA1=3E9cc4A*9hB~Xu@nu; zGYaW8U%u^-@~xAvRm(=106g?U+FMMkKz|$b5?_ZLX|Gi0#V5*gAqz;!uk>{pD&?E2 z`L0}1$f$HCbo!Kqm}BXAF)bTheCNVvs327gOt-U6}?-X;+(*$ zIJxn`Z0>x7l+6|C-HW8XsYu~<3=@1k(s6_0dAI_sC?kW?I>s)Y zX5GX}kR^IBJx`UWk@^Wt-b5vMQR-E>N|>95`$@1fJV$X%0AIGOL;bKNW2HqaXuZ63+Ph8vxX*q*X(L@lu%$W?rXBaDC zdNeajh0pMLwyEOJjkVO07_i)Am*<)ae}OOKR$CZgX?3s`+0}8QBZk#?)9QPguv+#l zY4r(nSZ*WCU`5E9*91$Jl4N~_uW1g;Aaa3QZIa!(&%`aG6MsX>x92GrK!VAT`~L$H z5g3AN$f7M5P|}kr51LQ}9yck;I^3Qt{HUpL8KzjJYW+m^GF1rIvONNi!AWi!o?usd zlI{K}bi~s%ZV7wbGi**v*+`znXl{q`c#b>nd6Z!}%CQ1>;sr)@B^KdDrO;@q563o; z6ASSjzNbck2jX_mWg=J^dP+`kjNHpc8+@5H{t6Fj~JPz^&DmY8wZ)j)9##E#*mK zQRjdMmNW3HLr;@?=8>3|bbq3jO=P`IEt{!j3$<*emhJzmMV?&dS{BE&yyTxhPWlp% zr!00-!!9OiH!a-5b8IgYvkyc0#c(s9OQ>%e_Q$pMVETT*k228g4n|vaGHoYSIu7Xb zax)!2kt~a0X>O4!1|wz%xtk8L#~)_zIKspI7{4Tr$GPB%a=yuSz|Z)FgiNO7*932@ z4yQ_tHbD3WGAh5(3R&$vd6)LM0>RDD>aeMCBS(ymq$xednc|A+`JECrHcuZ2+s4nA zWPO0l@bv-Mu+{jMOYkYDEx9}q8U&DFwJpcdz delta 2990 zcma)8X>e0j6#j0~=A~)Ul%!3YltK|YElJw4j|{T8ARiLR;@xV)w2PNSjt!Kc=pB_7jyF-V+Gx7oEBKac7o3H*J~tcwcN6VV;f zrk443{2^cw!j8Z6M_m38E(>IIYnfR!yYp%QAY4clE;=q2BLP1`9smuLRv7(Ds}SpPH*cC9k(}E)_jEeyI0! zSKs#$-}QrwqZcX2LOQaMNsDacAb?yHz>g5`dLR#XARj}~38VOS0=i%~t%gJ6I1zjF zQ|_J(d+8%pJ@4b44f}cD8J6ob)igLX9MEvDhSBPuj}Fk8B=m_S#Kq$Ym%?j$FcdBk zLTpCqdOlhpc{+FnqjR88`3@ROu}4KlBYkmZ=hTBLwk?^R^4n~R;Y4?3Gl;Cfc=za+ zGK>6@uXN`^R52H5!69YeyF1g`yh{Hq>Dq<@{fVW3t zP|Mpv^&wPWLiHom?TXTkP@g73t-%V#YL%xxPW~DKn`}Kt$Z^KcpGUN{PDmZTu>*T0Zwy8J66pquFjaf@|f_x(r)sI(+Y_YCR zu)N=7AQ4-0W5F?eMjOg9;(vgY-vVU0DahbBF&?BCV=2ZsiZOv=Of*q$Duy->5gC#` z(A%>?%9;Ty$46O*lei@!aWWLNipY7U*vsg~v0z&Z*J4y-D7*y|9w=$Xq&8uU!kx;} zo2Kw?C|qtbR*Zhm>u&fQUr2Nu$CokaL3AXgwgp2?n4GvBX0Qxu%s9Eql-vfn<)!4i z47G?+rk;V+;3iB?%y}(g8o;uVC6Q_-{W!kj8=3UJ{7ELFjf7Dxv*QQ|lYlUDz7*4A z5b*@ui3H|gcYyGT1h!*`wANd)d_^)vhR?amXX4ruIH}fVWap@K8qz<_aOTBvj2Fqp zluMDm#u#Zy{CJKzi5#Cv>h_x?#toa0muS5psr9$`F6O#ju5;RCHo|y;VKm+(3{^oy zIb~w$U42<`8oWf~g*P$Im*vO5?{S(5PSl`FVib#$L}4_X9|-be9EjfR>!3IoIeXrsUbsKrLi!6t5{CM-a+@@Jg!jj^p^ z$FukeXO!g6nY^DOPwp6SyD-Y-j(MJ<_5& zoD-I-2&i`MkePik=H)eiA0?mRkb(+YMXWceb zPuz@}ks;68X4H=7siv0)rYH_U`E|j=)Xt;S&BHX0$5;=XVA@V%7TN#6aUx@0z!c`Qzc6wR(u>KGz2hq45Q(r^2H(u|$$ z_X!Vjhw{WbuI@2cLV?c00NP!CkQFO`Ld+{?nRN= SR-vio|uj7b+leU zJXWQ~QCq1G(1)t}&F*F)_C}W0=Qh9jX6DTK_rJgX0kDZ30~w6vkTo%m35CKN``ETR zw%4|P-hZPH0)>eOuIC0D3S;F;YYLN?%E2%(4O8K!e`K}yt=D$f?VP?0e66jwzV2%; z(7yHJ!$=`}?CKMR%gxdAvSYRQsppVaxH@{G+jDfs+SUHCd!P->U`$lZnV3gWA=i&K z6joB`AKBK$xMbo2K2w;q9p~v$*Y*@%m78Z_?*_i>wdn!N+N^T-bLCy#|0 zj8T=ALA{G6K9>xeZ5@Pu8{X@l2)ZO2mlYPul~JeDxQgW*R!m&Ob%mwT>?HY9n0`y? z!9%ZqqJ4!@N>n0c1~*N7AySNfFYq@{pWEFqtz{DxSk|;7B6h3mAyJ8tT4^o*zFzp2YTBTqkPhgw?rydcq21>0W$otlfx0) ziT_hz`S1)@>U*ea?HzK}zcKUMd(6H=;rGz&JAUVp<#(3f0s(Va;7Xk< z7b0Uk!1tU1rO+8;kRFU(oM3`KpjiC_h1%NsVs>$SfQ9M+7tb8zsY7sin$6>42;Ydz z5_l0C_<>NO@FPbOUl9-a%86|eTU-;FMLgnYoG00ku?RUWmU9%56CndE{fR3XoJo+E z5;Q4bDRgf}2C;jE#|dnMI|4H!(2cZEt{}(Op2qSymYJ~Fha^Y=?#Hajh_yPb=Q=qz z&M_tv1{*e=Q5|Nil2J}&u(M;v9+N0(%!`htO9QN@MO9<<*Z5wnhqUF$A}LTF+jv4A zDR|0}q@0gK?4cQZFvLS`ZGbz&I&YJH=N#Ec$Oam5=?y#!ORwb7h{;1ayf@6f%lPl5 L#{UzwX3+c}(du15 literal 2309 zcma)7{ZkWH6g@AABy6@o6Fyogh@vGQ$YQIuHI`OI#2SGX3POKy7V-$|BpYY5K26AHNugA)Z9S#0B&S47{)p zY^!FwRcm?sh1~H4dhR-|jCL2N)j@&uOSay>=Qa6JID% zMzi62_g^j9b#~IgO%u0pn|4v|6nOYy3Af!47Bn~)p$iqCfv-(`gF6JSHSCJOe3Y;c zDsBf?5_bi1-R0;wUkf}Ri?&;-NzXtD@ie}}_etC{d88jip0keN4bSoI?HcQl@T5}x zd8F$0xzm%Nq(~mBLM{jt!w{!otxC_aYtC;9GOA8n0v7^vQrEeq(C!UvR1%no>QBoJ zG%}?>pc4i9%Z@9T_UqfyThlpZ0>iJ{6h%Sd!-T)*GzF$2_#*}o6(n3bhqJF5oF|qj zB2t%BD-X{d11mggbZF!WB%naw3~^(E`~=~46dAUyh6=st|_o-c+B+&{(Fvi5I0&lfhc5> zN9ZjSkI-K@MRxN9Lq{0?gRjN#gzGQ^LGT0yNS8%F207A(P!9GK{V1MdiC1-}WC;E) zV>~3QqKC1-Na0TmpW@URmReeq|zBKb4N+bD$-+io7ev0YZPL5mvD^587Jwbj*PM)VG3!i1%yJ4 zp%8qIS0%yJ;ImO_TtO0(jJ_J6n)>|^Rp93q)*Z@hVG*zQFMQcnsM|Y5oLnT%dIXLJ z`Rc76YMdf*rXz3+HS(xJS>wrB;Z9Ma6}~MO3$HO3!#~LW&TVZ84QH`%vu_pc%xh_E z;28l8HKaq}XY7#bZzcqOI$dBt=Hu9Cr>h-sleo8Nq}u`ZgpN|*Y(^_1Di(h3h^|;v L`8N4HhOPerx62go diff --git a/out/production/GBLesson1/ru/gb/family_tree/view/ConsoleUI.class b/out/production/GBLesson1/ru/gb/family_tree/view/ConsoleUI.class index d072353f4b5931b1402977fa2964a3481d75e461..a2fc8beb8dce4599ee68a17303b2d0a43fa7c43d 100644 GIT binary patch literal 3818 zcma)8TYD4N6CNzf-(9wdRhW0bYIU}Ai?AiF?=`&`^)ezic*_OLcLvyTuDul3x4N9rt zTABD{%CK$IX+;EWA?P|Dz`A=-CKvLqnbpu_*%~^>)lMrHPuTMXchYrCBRdj72<>8j zgNCkHLzVuiRy>G}A$00^2;a~Ubqev>>G+J1wK5B*h-1djS?2lpXwJ^(GUl;_hEU$; zrr|*!b2Z_S5V|$=-H$Twn0eE7O(#B48AZ^AO~P+8?Z(FM-=i!~(fo+dbE}Sr5!KLI z1=Fyz!M^Hp&DMyVbDNGwuw6soe9k$mK|2}34h;{lVK`}6cG9#95%eJ@H2Zn5HEC8I zROULU<54`OA)GD4Xy|P~RUNTni6kS4>v#fBGAnWgCP^)_6OLt9A{)lj8lLh#@$Pyz zy(RCu_f@oX$-BYnvJ95J+x+{=yQ2i&Qt1s&x!N1SF6<8B86D5!ImWM&HLI{0-+8f= zk+do&jY?Z4m1WQJbmET@9ec2sp3Krg8aBrI{Zv@3De3pTj{Tw+w#^IfxMiCW*2ZWE z2X%ZCW0j0oyAn)}S<|8Jyy4_cPS+ri5CSjiNZ=)sH7}T{f@_jWEYUv|#<+%U-iJKx zG99y0TBJu3>8N+R^rlxVUGY}DJEeDqqhTCstXJf|JEgZPdXl0OI*#CF4UxR*9yilz zdO<@=EJ1U!d{oCVsql4~oRJZ)H?`%CX~HOH<{Pe&ar>fJ3ZmM(kOC63?M zuzd}!+hoo7li12|G=eE+k3oA8Lp-KBn?}In}*e^gEsMx`rKVYA<_V zsu(e2#4TO8q+=0pYG~t$M(3+jgOL?)3Alns ztm_2DJjir6DQ-o{V) z)$mT$_BDBWQMT&_9`AUnh@pWc^j<@ZQ;r6T81`iyMeG|NT)_)_MZCF)Z+-sXe+z+T z2!U+~^M5!0_h3CXVKaZ*Nu!?*c#)!O(;lkXmrU)!_VcEsUvpjHih))DVOBC9O+x)$uq{kMRsKo^6Q1%e67aEA<#7 z#MsjigO_k)j8pX(&l6*RLyTWlF^1?l@o8|NnWa#VFv^%6T!j#~6LTc3MM?9gJgJG<{*IBb~8jD#g+ln!X4Kh+0^h?GoH8~{OtINAL01iBs8^loK7aYcb{|4^PF?;x%b}Qdr9;6 zzkj(4;0V6EV=g!NCLTh@!W1-t-G0HzjyieAcTW~wSD9uk%vMZG&a(S&({T$Yl*wEw zgvBE((@wq;@w|mo3bs5q953aaU?Ny37&s%4kh8HwgMqX1cC@G6Lu@f!7URGX@q5&P)g=@G@pEL~Iz*~sWa&I)bZwnw98I=-7vP9>zu{?bH<9PIa`cj8 z|F#^HJR{qaoZL#%N0KMEC3&~XA#JO*T(ABh_oRQ5zqV0*;l8GrV^a5maxdZXAdvqw5&%j}b37&u=nlNlh7a72s~djijOQ zcp{e26Y+I;1E$)-p6;Z%hJ3y7V`ye_gB*xMXu=Thp=UTOhtbJvs~695JVuBfeN4>)}h();wj&WRji z+%2x6q#wgaoX8jj`tdO_jVd;76Vs{l2tFZZP_4C$PYK2;YT+|T4q{wgZM7}-_*P@R zyX#lP#A??%UR}+IRiYX_8?j7TwSjvm1stcenz7TgoFU)YN(p<&VDbMszF-`=@Fm3o zbwqT`MYIu}JOW?gX+G6-9;UZaHMkAk+=Y67tHL95~5|RIYm|OMgf}%kuvn9jY8JY_1yflf+k^X z**2O_NOkWKu#M1Je&J6q|tH{N^*sA5_o-*@c4yW#jS2`;8CZ9`-2$9#+wZezPdW8e%Gr;uyhk zJ9pP0$ZdNQ!ec;q#Le$gQ_T=T>Im&XJx;1Ph0~@Yha6`Jt((=SWVb7Uq>5pr%yBu= ze2zd?oC_+_ND*9xg>)frbs~X_Dn{Qf$%_=sa;GI+f&&C6>UbRk$jf($EpN4JO|mMi Tuq>LT>Q`;IvMk}2~dqfnj? delta 751 zcmYLGOHUI~6#mZ4v`mK)Xpy3}K&dU%nS!tS0;?6RT5SbwwIV)1Z44VtkhoA|H?B?0 z-Lk=ri7~N6tpTHPp&J*b{s0%Q{RbvK&K-u5o7{8HcfNDZcg|h(ue2Lq|E_!lFoqjT z#wbzp>CbLa^Z3L9wRuD6Y(bx>QB3%hR$s4lqlARZ=`7CNtCZ#{6$AY;6kiXC7mDGF zNiabeSgZL%(Y=Ebw8bwa++#u2F-$NT3yrsp58t1R7zQltFtHQ6L`+Thq)hC=UV?Ua z_I`z+Cbs1yW4~k^5RcUUj!}X#9BD-mX%mNVSiDjrbVM}Nq@KZ16UUGhnr1~$5Xh;X zGjR%8fs~W!AOIBh3!Mp;eD`S$>E&k zdjLN1%^R% zCOkvR4r|kO>?_-W5gD~*EWC_^3O*rI$Cv{Kj!W}cq38dqU+g+g*0`_=R~Em6(9w-{ zY(g(Kv(zmZLWn;)j2vU*j7r%N&hhi+E@ILdpyUpqBacg%V&RvWWkUG_e+w-7jWlBg zTyaO5;{2+dsY|L1X*bt&7Ls+GUSCz4Gk6po*ve~-HG6Ynb7ft)$|{IC9$dpT>mm97 jZl@Gm;zmYuRWI37c;YzVbwYzqS#y=$CUm42)`Pays9T4;Dc!S!Fc8A(NO5A>ezVCvr)5B(@H;X|Q%%sbq2x!17v!$5kCay151@x7MsiXUIg#hL*FX&t7C7kJ4~ifI`o ze|DV8k#rpqcnoGkgd-TkYN7aiq=9M7=*XIw#T-K}CU6X!=EKZDP-e1FtTC(=o==ME zw2JQthD=p@;#<2}7r}R4cge|CeVe;A9>_=!O)Wf{2FkD!*E_lp zHR$40*zJ&xVeI?uz!rNlI@9#naJQn@M4nzpqn`vMKy8?(b%E3;B*_6%8(CKRiR4Yc z;uWn%-`AsmghkQ|gF3v%5-IAy8@we7!#m6kY1@4r(e5#IkIcWcG||jH&7{hRF`zNL ICzZhRU$^zhLjV8( literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/view/commands/SetWedding.class b/out/production/GBLesson1/ru/gb/family_tree/view/commands/SetWedding.class new file mode 100644 index 0000000000000000000000000000000000000000..78c7e5e19d4489be14221d1a8f81a509486c3fc5 GIT binary patch literal 746 zcmaiy%SyvQ6o&t4tEn+st@mrID7GqQr(i|If*=$()w+~49qUM%K$?2ld0Fa9_y*ok zaNz^EN?u4jX|;+N+zj&{&j0;0XXfqwl2L>h67G$6T_?SB_ujpA zAH8e$&bwSr%7~yvLaPD^QHB}2rk0E9zE%;&>7HYAt{w?~tm;;!qM4OvTS8nx4|*Ar0eL^La`i`KIF&9iOsD=2^7|rLtHc>%Ibrgx zTBXSCZLMffC7!c%%_wNL@bzag;v9%7!+a3?j~Qeb+Vrn!GE4?po7W+O#80?hbLbRu z-m2L;-w^(hV&9Wp@Lv)W^fD3pLqG`RLLaUDq}C9o3J{%*v$e-P270Vgc@R6LSoWzsrE{y%UFhNca!ZF<%XP% zegi*)8Yzge+&#^HA;a4(G^WXh%Vhp<-v9UByqUlMF8Tl}FtbQ8Y^$%~N%&Fq!{hKo zorlM&uYRa+6#HbV-{EKVQ=O_`rn*#pllF9=PR%&07a#p0&zB8TM+RdW#tmr5GCcCT zR;y{f<8A32?FPOO)}a*dE!%6ixx3e~s)G%~_)F=^V3XlRv39@@x#e)TWz_>;x~+08 z0aNwdj^~KCugj%|4jq#k3~z~r;lJTcha&l!XLF~) zeHrQNU?$j?9foH~?4)Uw87AzT;WDfy`G*%HgC;%*yBkeXuX|nJ7TYrFt1vR?r_t-; zA-z_Hz8{bRS#g)vIa05XrU;OIoM%tYkp3QL%+spJaV`2+xJPtUjY+$e35XhuvkC^KRVXbj7wQdqeH!iMM$ literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/view/commands/SortByName.class b/out/production/GBLesson1/ru/gb/family_tree/view/commands/SortByName.class index 64da2bb82fe2a1210d95e3337c0a045b00bba55e..8f5a1d49d8bc068f7a99c38b3561a519dbdb4dd4 100644 GIT binary patch delta 15 WcmZo-Yhv4w#>iAuvN?ls79#*AwFJii delta 15 WcmZo-Yhv4w#>iAsv^j%u79#*Aw*(); + } + + public void addHuman(String name, String gender, LocalDate date, String nameFather, String nameMather) { + familyTree.addHuman(new Human(name, getGenderFromString(gender), date)); + } + + public void addChildren(String nameParent, String nameChild){ + + } + + public String getHumanInfo(){ + String answer = familyTree.getInfo(); + return answer; + } + + public void sotrByName() { + familyTree.sortByName(); + } + + public void sortByBirthDate() { + familyTree.sortByBirthDate(); + } + + public void saveFemaleTree() { + save(familyTree, filePath); + } + + public void loadFemaleTree() { + familyTree = load(filePath); + } + + private static FamilyTree load(String filePath){ + Writable writable = new FileHandler(); + return (FamilyTree) writable.read(filePath); + } + + private static void save(FamilyTree familyTree, String filePath){ + Writable writable = new FileHandler(); + writable.save(familyTree, filePath); + } + + + public void setWedding(int idMale, int idFemale) { + familyTree.setWedding(idMale, idFemale); + } + + public static Gender getGenderFromString(String input) { + if (input == null) { + return null; + } + + try { + return Gender.valueOf(input); + } catch (IllegalArgumentException e) { + // Если введенная строка не соответствует ни одной из констант + return null; + } + } + +} diff --git a/src/ru/gb/family_tree/model/family_tree/FamilyTree.java b/src/ru/gb/family_tree/model/family_tree/FamilyTree.java index 1993aad..765d909 100644 --- a/src/ru/gb/family_tree/model/family_tree/FamilyTree.java +++ b/src/ru/gb/family_tree/model/family_tree/FamilyTree.java @@ -39,7 +39,7 @@ private void addToParents(E human){ } } - private void addToChildern(E human){ + public void addToChildern(E human){ for (E child: human.getChildren()){ child.addParent(human); } @@ -129,7 +129,7 @@ public String getInfo() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("В дереве "); stringBuilder.append(humanList.size()); - stringBuilder.append("объектов: \n"); + stringBuilder.append(" объектов: \n"); for (E human : humanList) { stringBuilder.append(human); stringBuilder.append("\n"); @@ -137,7 +137,7 @@ public String getInfo() { return stringBuilder.toString(); } - public void sotrByName(){ + public void sortByName(){ humanList.sort(new HumanComparatorByName<>()); } diff --git a/src/ru/gb/family_tree/model/family_tree/TreeNode.java b/src/ru/gb/family_tree/model/family_tree/TreeNode.java index fc5fd02..9f202c6 100644 --- a/src/ru/gb/family_tree/model/family_tree/TreeNode.java +++ b/src/ru/gb/family_tree/model/family_tree/TreeNode.java @@ -8,7 +8,7 @@ public interface TreeNode extends Serializable { void setId(long id); long getId(); T getFather(); - T getMother(); + T getMather(); boolean addChild(T human); boolean addParent(T human); String getName(); diff --git a/src/ru/gb/family_tree/model/human/Human.java b/src/ru/gb/family_tree/model/human/Human.java index d67da0c..04f11eb 100644 --- a/src/ru/gb/family_tree/model/human/Human.java +++ b/src/ru/gb/family_tree/model/human/Human.java @@ -7,7 +7,7 @@ import java.util.ArrayList; import java.util.List; -public class Human implements TreeNode { +public class Human implements TreeNode{ private long id; private String name; private LocalDate birthDate, deathDate; @@ -16,6 +16,8 @@ public class Human implements TreeNode { private Gender gender; private Human spouse; + + public Human (String name, Gender gender, LocalDate birthDate, LocalDate deathDate, Human father, Human mother) { id = -1; this.name = name; @@ -65,21 +67,6 @@ public Human getFather(){ return null; } - @Override - public Object getMother() { - return null; - } - - @Override - public boolean addChild(Object human) { - return false; - } - - @Override - public boolean addParent(Object human) { - return false; - } - public Human getMather(){ for (Human parent: parents){ if(parent.getGender() == Gender.Female){ @@ -111,10 +98,6 @@ public Human getSpouse(){ return spouse; } - @Override - public void setSpouse(Object human) { - - } public String getName(){ return name; @@ -231,7 +214,7 @@ public String getChildrenInfo(){ @Override public boolean equals(Object obj){ - if (this ==obj){ + if (this == obj){ return true; } if (!(obj instanceof Human)){ diff --git a/src/ru/gb/family_tree/model/save/tree.txt b/src/ru/gb/family_tree/model/save/tree.txt index c125058e89a9fb7f778fca95bb10929af8ce267b..4b3a19363ed1e684a351b1dec032a9592b314e56 100644 GIT binary patch delta 60 zcmV-C0K@;32E+xBHVB!$ehYcO(|wUXHUR>WbuI@2cLV?c00NP!CkQFO`Ld+{?nRN= S(); + service = new Service(); } - public void addHuman(String name, Gender gender, LocalDate date) { - familyTree.addHuman(new Human(name, gender, date)); + + public void addHuman(String name, String gender, LocalDate date, String nameFather, String nameMather){ + service.addHuman(name, gender, date, nameFather, nameMather); getHumanInfo(); } - public void getHumanInfo(){ - String answar = familyTree.getInfo(); - view.printAnswer(answar); + view.printAnswer(service.getHumanInfo()); } - public void sotrByName() { - familyTree.sotrByName(); + public void sortByName() { + service.sotrByName(); getHumanInfo(); } - public void saveFamaleTree() { - save(familyTree, filePath); + public void saveFemaleTree() { + service.saveFemaleTree(); } - public void loadFamaleTree() { - familyTree = load(filePath); + public void loadFemaleTree() { + service.loadFemaleTree(); } - private static FamilyTree load(String filePath){ - Writable writable = new FileHandler(); - return (FamilyTree) writable.read(filePath); + public void setWedding(int idMale, int idFemale) { + service.setWedding(idMale, idFemale); + getHumanInfo(); } - private static void save(FamilyTree familyTree, String filePath){ - Writable writable = new FileHandler(); - writable.save(familyTree, filePath); + public void addChildren(String nameParent, String nameChild) { + service.addChildren(nameParent, nameChild); } - + public void sortByBirthDate() { + service.sortByBirthDate(); + getHumanInfo(); + } } diff --git a/src/ru/gb/family_tree/view/ConsoleUI.java b/src/ru/gb/family_tree/view/ConsoleUI.java index f4f2687..4eb021d 100644 --- a/src/ru/gb/family_tree/view/ConsoleUI.java +++ b/src/ru/gb/family_tree/view/ConsoleUI.java @@ -33,16 +33,30 @@ public void start() { } + public void setWedding(){ + System.out.println("Введите Id мужчины: "); + String idMaleStr = scanner.nextLine(); + int idMale = Integer.parseInt(idMaleStr); + System.out.println("Введите Id женщины: "); + String idFimaleStr = scanner.nextLine(); + int idFimale = Integer.parseInt(idFimaleStr); + presenter.setWedding(idMale, idFimale); + } + public void loadTree() { - presenter.loadFamaleTree(); + presenter.loadFemaleTree(); } public void saveTree() { - presenter.saveFamaleTree(); + presenter.saveFemaleTree(); + } + + public void sortByName() { + presenter.sortByName(); } - public void sotrByName() { - presenter.sotrByName(); + public void sortByBirthDate(){ + presenter.sortByBirthDate(); } public void getHumanInfo() { @@ -55,13 +69,12 @@ public void finish() { public void addHuman(){ - Gender gender; + System.out.println("Укажите имя"); String name = scanner.nextLine(); System.out.println("Укажите пол Male или Female:"); String genderStr = scanner.nextLine(); - gender = getGenderFromString(genderStr); System.out.println("Укажите возраст:"); System.out.println("Введите год рождения:"); @@ -73,26 +86,25 @@ public void addHuman(){ System.out.println("Введите день:"); String dayStr = scanner.nextLine(); int day = Integer.parseInt(dayStr); + System.out.println("Укажите имя отца: "); + String nameFather = scanner.nextLine(); + System.out.println("Укажите имя матери: "); + String nameMather = scanner.nextLine(); LocalDate date = LocalDate.of(year, month, day); - presenter.addHuman(name, gender, date); - } - - public static Gender getGenderFromString(String input) { - if (input == null) { - return null; - } - - try { - return Gender.valueOf(input); - } catch (IllegalArgumentException e) { - // Если введенная строка не соответствует ни одной из констант - return null; - } + presenter.addHuman(name, genderStr, date, nameFather, nameMather); } @Override public void printAnswer(String answer) { System.out.println(answer); } + + public void addChildren() { + System.out.println("Укажите имя родителя: "); + String nameParent = scanner.nextLine(); + System.out.println("Укажите имя ребенка: "); + String nameChild = scanner.nextLine(); + presenter.addChildren(nameParent, nameChild); + } } diff --git a/src/ru/gb/family_tree/view/MainMenu.java b/src/ru/gb/family_tree/view/MainMenu.java index fdafd33..26bfb20 100644 --- a/src/ru/gb/family_tree/view/MainMenu.java +++ b/src/ru/gb/family_tree/view/MainMenu.java @@ -11,11 +11,15 @@ public class MainMenu { public MainMenu(ConsoleUI consoleUI) { commands = new ArrayList<>(); commands.add(new AddHuman(consoleUI)); + commands.add(new AddChildern(consoleUI)); commands.add(new GetHumanInfo(consoleUI)); + commands.add(new SetWedding(consoleUI)); commands.add(new SortByName(consoleUI)); + commands.add(new SortByBirthDate(consoleUI)); commands.add(new SaveTree(consoleUI)); commands.add(new LoadTree(consoleUI)); commands.add(new Finish(consoleUI)); + } public String menu(){ diff --git a/src/ru/gb/family_tree/view/commands/AddChildern.java b/src/ru/gb/family_tree/view/commands/AddChildern.java new file mode 100644 index 0000000..e33a3c5 --- /dev/null +++ b/src/ru/gb/family_tree/view/commands/AddChildern.java @@ -0,0 +1,14 @@ +package ru.gb.family_tree.view.commands; + +import ru.gb.family_tree.view.ConsoleUI; + +public class AddChildern extends Command { + public AddChildern(ConsoleUI consoleUI) { + super("Добавить ребенка: ", consoleUI); + } + @Override + public void execute(){ + getConsoleUI().addChildren(); + }; + +} diff --git a/src/ru/gb/family_tree/view/commands/SetWedding.java b/src/ru/gb/family_tree/view/commands/SetWedding.java new file mode 100644 index 0000000..efa96db --- /dev/null +++ b/src/ru/gb/family_tree/view/commands/SetWedding.java @@ -0,0 +1,14 @@ +package ru.gb.family_tree.view.commands; + +import ru.gb.family_tree.view.ConsoleUI; + +public class SetWedding extends Command { + public SetWedding(ConsoleUI consoleUI) { + super("Сыграть свадьбу: ", consoleUI); + } + @Override + public void execute(){ + getConsoleUI().setWedding(); + }; + +} diff --git a/src/ru/gb/family_tree/view/commands/SortByBirthDate.java b/src/ru/gb/family_tree/view/commands/SortByBirthDate.java new file mode 100644 index 0000000..4e2dff9 --- /dev/null +++ b/src/ru/gb/family_tree/view/commands/SortByBirthDate.java @@ -0,0 +1,14 @@ +package ru.gb.family_tree.view.commands; + +import ru.gb.family_tree.view.ConsoleUI; + +public class SortByBirthDate extends Command{ + public SortByBirthDate(ConsoleUI consoleUI) { + super("Отсортировать людей по дате рождения: ", consoleUI); + } + @Override + public void execute(){ + getConsoleUI().sortByBirthDate(); + }; + +} \ No newline at end of file diff --git a/src/ru/gb/family_tree/view/commands/SortByName.java b/src/ru/gb/family_tree/view/commands/SortByName.java index c737364..ae95982 100644 --- a/src/ru/gb/family_tree/view/commands/SortByName.java +++ b/src/ru/gb/family_tree/view/commands/SortByName.java @@ -8,7 +8,7 @@ public SortByName(ConsoleUI consoleUI) { } @Override public void execute(){ - getConsoleUI().sotrByName(); + getConsoleUI().sortByName(); }; } From 9fcb9eeb40de218d649f701255329821c80218ed Mon Sep 17 00:00:00 2001 From: SlanSaf Date: Thu, 20 Jun 2024 14:10:35 +0300 Subject: [PATCH 11/13] =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=80=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D0=B5=D0=B9=20=D0=B8?= =?UTF-8?q?=20=D0=B4=D0=B5=D1=82=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/gb/family_tree/model/Service.class | Bin 2917 -> 3136 bytes .../gb/family_tree/presenter/Presenter.class | Bin 1839 -> 1771 bytes .../ru/gb/family_tree/view/ConsoleUI.class | Bin 3818 -> 3853 bytes src/ru/gb/family_tree/model/Service.java | 9 ++++---- .../gb/family_tree/presenter/Presenter.java | 4 ++-- src/ru/gb/family_tree/view/ConsoleUI.java | 20 +++++++++++------- 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/Service.class b/out/production/GBLesson1/ru/gb/family_tree/model/Service.class index 5917c360b71ff5d83f5f9dea2a469153f96df4d7..41064ba7bf25b37371a7930ce43b48a3e6bb2db1 100644 GIT binary patch literal 3136 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 knx~KpH3d|{Y+_3f}1poj5 diff --git a/out/production/GBLesson1/ru/gb/family_tree/presenter/Presenter.class b/out/production/GBLesson1/ru/gb/family_tree/presenter/Presenter.class index 7add79165bce69398e90fcecd4411c8d9377cf74..89ba834567c25a5cd1a4af26c77cccd1e3c78831 100644 GIT binary patch delta 731 zcmZva%TB^T6o&s9TEqekTA>6~hzcl$01;5U;QfN)6SyM5M2)&|g z*S?AI0o)nSw4^jjn#`Qcoc}xLKhsC`E2w<@yuJb0MzgC(jMdG1o-)fU%o~m8YsQ&g zWbn7z?VafRxeDI{qcTY=R0>iSImeQz82I z>*t@!Q=LIu(-=X5oF!eFfTLNkHN>eBP4IleX%Cr!J-hBKapqhMpTo%gXPDn|(A9H> zwDUu?1r#lh1#iODvw>0M=q2-(CTUGbbw;UTpC%-FRdGNOr+Crk&{>nR#d9daM|`q} z(qAVev(SC&~uw5tWDi1!b~Yp>bDTb_e4=A~nbHFOQr= A9RL6T delta 729 zcmZvZIZnes7=_ZG#Tp4fo1DEFh!EkW3^TC zqtJNvV-4$ktEdY>>IDD9l%97_XyXG!Qf~;SGuecmFl_XtY{cul*093UM1W_M?-+U! zhk|doHXk10O^HyVu!(fZ$sNHKyHw@~cKBO&qFqJ?rAZ=G)t~xUTBVVWCy6iyoD`~7 zpvOxgu;=N!jiI?lS;J_@2s;~X@&tX)tmnBj5=}YA>6vKKcli2@r++pQwMI?T)X%ik z&tYEmz&g*_r|Q&HlN=bdk!>}^G&+&t4zmtz)OGknG_j8Zr)v|3HHI2L7LfN+oOmgu zyDS^I#*WP&PZs?li?K^aj5(W(Z6ah%Q=bc6(T=b&-=aa&#JQ%sRgD5p7=@O~n_iSmAG#a9BWX(M?~zM;%t*6=JEM^5?V|X#q7wOy!<9&b?lMBN~e} z?@qMGlJQO(jtlTA)t1V)<+h06l@hT?G_^aP6d-p-JL0R2AL7bpDeQM7Vr!$km)ejb zg=pcA>_kCR$8BT}Nz;U5$~S4c(5r~{CZSJRZm;&9V4a*0xX#2$oZ?r&X^32Vm5eB9dT-&YZN*iz;SRQ8 z5K-i?T~BAA5OU=G2g%a9$%pH>#+`+=J<7fI{$U)%4gLMsU=MB*v!WF{aEq9TU09FX z#BAuqO2!#rKc*4F-84ZvA8a=65tJFA2KR|MNb=$VF(*?h$3r|~GYfc(`CNNhiAILk z+F4>10xW`QtvX9i!*O Mv@sf@x&<%(0B>Fk_y7O^ delta 1201 zcmZvb%TE(g6vn?>=rElYgEbXef{qCfq4-Fw0u>QKaN#?~CPsoZDG@{(MHhyk5YXZa zLB=Qe#uw-U6dQtsKfu*=<^SMD-MTP-GcA;u+1xpE=9}L==R5Zft@}}+eEU1U2%rvA zGfIQKTGc1?d3{=s>vM^I{fny4=?jTrRbNc>Ct~_^P?d3BpwLpK4cI$Gi}uqV)NE3o zCQGjUr6C!Y1vXmh)kL4ZsLv*M(!VB#4SKIYv87szN?YETsc~)u^b|o6_Y}Gt+joXZlgsHwL;4srYa=EywP0E`@O#3eH5rdl7 zu|EGgZE!(w-HIEy$)~_ANL*vuF-Id+V~&z4L!}}Eg~-Nj4Do9zWZc0pZ2Yo4_2&rV zOxR>UzaLF8{y6rLQKyvD8;k(#Tz91OIVi?mljgw&jGD9}tcJ#12K;d19&?$b-A~az zDqjB}35vPz7G$yNbO-Ws2M<#EUy8Rkt=~p{z*2uQsW)pA+z*h;W>FBwi5bQ=q!|@t zR9Z5ctr>whn*N9EB&6CB5>6Gq;9S}0Zt80-^$(N!QCDt7y2g6Cymy6MTK1)TsYanO zalF z(`@A#b6JRD7oIc6>w9P$41*uQ0(=Bk&qkTw_}Hs+IGP5YlRvx7IvA zOXr2t#v3w>$@ecggdU#33_4V1nA4Ls=Ya8kCH;OdX;2(}X={9>0Bz*9*RrfL$U_G& h&{(); } - public void addHuman(String name, String gender, LocalDate date, String nameFather, String nameMather) { - familyTree.addHuman(new Human(name, getGenderFromString(gender), date)); + public void addHuman(String name, String gender, LocalDate date, int nameFather, int nameMather) { + familyTree.addHuman(new Human(name, getGenderFromString(gender), date, (Human) familyTree.getById(nameFather), (Human) familyTree.getById(nameMather))); } - public void addChildren(String nameParent, String nameChild){ - + public void addChildren(int nameParent, int nameChild){ + familyTree.getById(nameParent).addChild(familyTree.getById(nameChild)); } public String getHumanInfo(){ diff --git a/src/ru/gb/family_tree/presenter/Presenter.java b/src/ru/gb/family_tree/presenter/Presenter.java index 7efeedf..ee58ba3 100644 --- a/src/ru/gb/family_tree/presenter/Presenter.java +++ b/src/ru/gb/family_tree/presenter/Presenter.java @@ -18,7 +18,7 @@ public Presenter(View view) { } - public void addHuman(String name, String gender, LocalDate date, String nameFather, String nameMather){ + public void addHuman(String name, String gender, LocalDate date, int nameFather, int nameMather){ service.addHuman(name, gender, date, nameFather, nameMather); getHumanInfo(); } @@ -44,7 +44,7 @@ public void setWedding(int idMale, int idFemale) { getHumanInfo(); } - public void addChildren(String nameParent, String nameChild) { + public void addChildren(int nameParent, int nameChild) { service.addChildren(nameParent, nameChild); } diff --git a/src/ru/gb/family_tree/view/ConsoleUI.java b/src/ru/gb/family_tree/view/ConsoleUI.java index 4eb021d..25f9170 100644 --- a/src/ru/gb/family_tree/view/ConsoleUI.java +++ b/src/ru/gb/family_tree/view/ConsoleUI.java @@ -86,13 +86,15 @@ public void addHuman(){ System.out.println("Введите день:"); String dayStr = scanner.nextLine(); int day = Integer.parseInt(dayStr); - System.out.println("Укажите имя отца: "); + System.out.println("Укажите id отца: "); String nameFather = scanner.nextLine(); - System.out.println("Укажите имя матери: "); + int idFather = Integer.parseInt(nameFather); + System.out.println("Укажите id матери: "); String nameMather = scanner.nextLine(); + int idMather = Integer.parseInt(nameMather); LocalDate date = LocalDate.of(year, month, day); - presenter.addHuman(name, genderStr, date, nameFather, nameMather); + presenter.addHuman(name, genderStr, date, idFather, idMather); } @Override @@ -101,10 +103,12 @@ public void printAnswer(String answer) { } public void addChildren() { - System.out.println("Укажите имя родителя: "); - String nameParent = scanner.nextLine(); - System.out.println("Укажите имя ребенка: "); - String nameChild = scanner.nextLine(); - presenter.addChildren(nameParent, nameChild); + System.out.println("Укажите id родителя: "); + String idParentStr = scanner.nextLine(); + int idParent = Integer.parseInt(idParentStr); + System.out.println("Укажите id ребенка: "); + String idChildStr = scanner.nextLine(); + int idChild = Integer.parseInt(idChildStr); + presenter.addChildren(idParent, idChild); } } From 6eeda45aa5d32cef35db793452fff31d3fa7a16a Mon Sep 17 00:00:00 2001 From: SlanSaf Date: Thu, 20 Jun 2024 14:43:06 +0300 Subject: [PATCH 12/13] =?UTF-8?q?=D0=BE=D1=82=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D1=87=D0=B5=D0=BB=D0=BE=D0=B2=D0=B5=D0=BA?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/gb/family_tree/model/Service.class | Bin 3136 -> 2988 bytes .../gb/family_tree/presenter/Presenter.class | Bin 1771 -> 1719 bytes .../ru/gb/family_tree/view/ConsoleUI.class | Bin 3853 -> 3615 bytes src/ru/gb/family_tree/model/Service.java | 4 ++-- src/ru/gb/family_tree/model/save/tree.txt | Bin 708 -> 863 bytes .../gb/family_tree/presenter/Presenter.java | 4 ++-- src/ru/gb/family_tree/view/ConsoleUI.java | 8 +------- 7 files changed, 5 insertions(+), 11 deletions(-) diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/Service.class b/out/production/GBLesson1/ru/gb/family_tree/model/Service.class index 41064ba7bf25b37371a7930ce43b48a3e6bb2db1..e017870ad370e1aee195717db08c6c13ded07b38 100644 GIT binary patch delta 384 zcmXYqO)o=16o%iK%dO76twht?HmX!_Sj*Y?0hTsR zrHTX_oBkq;Mx1+fF>{_XXWr+01)l<{@%#1xU>4rKKJ%>M=Dkm+Xo74M>C_ zBw{QvHD%;yh<%R^&e`AEkG1zz^_#8Uf1h6gjN;^0JqdpZwE@(jp7v!js1QYC00x=_ zF6l!|)3>NMCXWkFk-kJjSkq9)tU?Ga0VL2$ZF2bTM%H;`vYoySn|_Q&nM#q*9Ehu; zQ^<`wNBLYyK%@k8VoE1y&`jJpW=WhTkb%G~pL7ldlVe}!J;E=Drn|bIVE4Ex;yrsn z{0&hpjIww{!vmVy-jqG-BBl zvG&9^ommrNhd!(e&n^m-SL+oV^~@Bq^r`r diff --git a/out/production/GBLesson1/ru/gb/family_tree/presenter/Presenter.class b/out/production/GBLesson1/ru/gb/family_tree/presenter/Presenter.class index 89ba834567c25a5cd1a4af26c77cccd1e3c78831..b51839c36c9fa587bcbcb375de615371ee7a89b7 100644 GIT binary patch delta 193 zcmXYoOAdlS5JanIP~#*6F8r`}hk5`Ie~2G6CVB!qgIAf85DXd@9>9ecaqrUDLDNa) z)l1h)U$lCBZg&6?Hkq=BLgP@7Z|O}Yl`TPuImzcSg~bOr-WiQve^8+56>u|F0zRh= z$=QZNhuKBI&HGI-M97WD7-0-5X~HB*nqmfNuGXHSyk6;&o+B=wY%CBPzq-@QzfoAR MG1WtD%~OHo3pXzu;{X5v delta 256 zcmdna`Q)W2Q(7#J9w7<@Kzu`n{)O+LsdJXwiRoypU4vnS&>M(Mo7+*G&3l8n?M zMg~StMg}gBfG=2JvJJDuCr~7wEs)&{ JD9^;;4FI<|DE0=@;-|Oo{LVnkq#fbD8%gU~>04D@v z4X$F8Ux91T7!z{8(MHvzQ58z5Dv*a&aN#;`@YW9ss75rmy_Q$}Be)wr!_ZY;;RqE(_8cbLmV00p?qTs~>{GPDn-H!wnisot%I zgH>A{=<^-i&**=e-ngaTKz%T$zALR)wF$ll=xb)-OX9!`&o)?$S~520WE{-R2qw|} zFQlH3hMbUartmKX3me@^eN#^TL|Q-L^we54wsOkb7Ra^vxeR7&6gxOqlf8|~-OlJr zcfMP5>vM?K8L7SlYrRGiXRNZ@P%Ia@>f@alLKkV>ir$+h%x`l5Qf;#WJ$S&Ajg#7i zhiaRRXvZV9%{|=zW9IDWKsBB)r{OTl@sv3SqVQmnIr^Kve1_*RxQ`bIF(#y|(A#D8 zd5HS3s$_}sLw5h%9$u1`+T?JyV@%Ui%6%WPzT{jIL3Ub_MB~oD9GbVJlILZjurzkj zYI_AiK!mXeMd*c_h5FEkO7zp7M`-+`>iPd|J*A#c+4>cmvGI>$yk;(K>o;l;0&kVM GrvC!1b)7f> delta 1336 zcmZ{j>oZhw7{|Y7?d9y*WiU3ggDjH_LNlZ+Bho0-bYo&v)Yb~cx9oD|mcYCRFd)F2(P3NH~pl6FRIo zgR^p_AwTN86&KJcKyswQYnoxC5r9?+)toraWTm7p};eV!F^PSBphL zpFAwa$6RB|RtP*d;yP~dSHMjedG^YG#1eWr%*nZ`mjfYKhfv(YZGKIGh<*$}$1j@} zZr-7-hfYl6_x%fuF7pmDewvfLDkB>Po;eHt;aHEm8qJ0T3~IC_MBpB^5TwBZnVO!o z`|~vIuE76*nEDlQK9o<=)}fE5q{Wg66Eg{BB?hwc;=yW=isg_jLb6wa;LvJ}s^yH$ zWNcZ&h**pSH4C+wlkDDL2;;HOLU9f zqUu(g-e$CkezZA5)h4EGu!q_to7IPN!B}b#E!SG}yj9$qgYdHMeK^cvsKz6fZwN;* z4j245rbRk1AI;)ejnhjVQU{*kF)bZC(M?+&s{(Z5sWw)7aT3p{8Bl@acuviTI+WoB zH4{A8g`q-i4P=VgqnrH#NZV*D?(); } - public void addHuman(String name, String gender, LocalDate date, int nameFather, int nameMather) { - familyTree.addHuman(new Human(name, getGenderFromString(gender), date, (Human) familyTree.getById(nameFather), (Human) familyTree.getById(nameMather))); + public void addHuman(String name, String gender, LocalDate date) { + familyTree.addHuman(new Human(name, getGenderFromString(gender), date)); } public void addChildren(int nameParent, int nameChild){ diff --git a/src/ru/gb/family_tree/model/save/tree.txt b/src/ru/gb/family_tree/model/save/tree.txt index 4b3a19363ed1e684a351b1dec032a9592b314e56..92fe079f0d714c51f71d336cc36bf609309ae028 100644 GIT binary patch delta 128 zcmX@YdY^4V2_wtIQayH-aux;#29}MhB$+1XF!35P6&EtpF>sf&Gcz!-KVTHB0P}$y w1_rQ7hKd4^0)Y|+Ht)=$%$%IbQB3k$%*eWKa0+43RZzmf>X?%{c|DUT05#1U>i_@% delta 25 gcmcc5c7%082_w_QQayI2aux;#2BwXxB$*g10AJb$UjP6A diff --git a/src/ru/gb/family_tree/presenter/Presenter.java b/src/ru/gb/family_tree/presenter/Presenter.java index ee58ba3..794e3d7 100644 --- a/src/ru/gb/family_tree/presenter/Presenter.java +++ b/src/ru/gb/family_tree/presenter/Presenter.java @@ -18,8 +18,8 @@ public Presenter(View view) { } - public void addHuman(String name, String gender, LocalDate date, int nameFather, int nameMather){ - service.addHuman(name, gender, date, nameFather, nameMather); + public void addHuman(String name, String gender, LocalDate date){ + service.addHuman(name, gender, date); getHumanInfo(); } public void getHumanInfo(){ diff --git a/src/ru/gb/family_tree/view/ConsoleUI.java b/src/ru/gb/family_tree/view/ConsoleUI.java index 25f9170..6da5b28 100644 --- a/src/ru/gb/family_tree/view/ConsoleUI.java +++ b/src/ru/gb/family_tree/view/ConsoleUI.java @@ -86,15 +86,9 @@ public void addHuman(){ System.out.println("Введите день:"); String dayStr = scanner.nextLine(); int day = Integer.parseInt(dayStr); - System.out.println("Укажите id отца: "); - String nameFather = scanner.nextLine(); - int idFather = Integer.parseInt(nameFather); - System.out.println("Укажите id матери: "); - String nameMather = scanner.nextLine(); - int idMather = Integer.parseInt(nameMather); LocalDate date = LocalDate.of(year, month, day); - presenter.addHuman(name, genderStr, date, idFather, idMather); + presenter.addHuman(name, genderStr, date); } @Override From d4812e8a3f969d31331b1a6a571ed1faec1c2a4c Mon Sep 17 00:00:00 2001 From: SlanSaf Date: Fri, 28 Jun 2024 21:30:10 +0300 Subject: [PATCH 13/13] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=BD=D0=B8=D1=8F=20=D1=87=D0=B5=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=D0=B5=D0=BA=D0=B0,=20=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D1=83?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=80=D0=BE=D0=B4=D1=81=D1=82=D0=B2=D0=B0,=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B8=20?= =?UTF-8?q?=D0=B8=20=D1=81=D1=87=D0=B8=D1=82=D1=8B=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../family_tree/model/FamilyTreeManager.class | Bin 0 -> 1098 bytes .../gb/family_tree/model/HumanFactory.class | Bin 0 -> 1192 bytes .../gb/family_tree/model/PersonFactory.class | Bin 0 -> 472 bytes .../ru/gb/family_tree/model/Service.class | Bin 2988 -> 3843 bytes .../model/family_tree/FamilyTree.class | Bin 5695 -> 5686 bytes .../ru/gb/family_tree/model/save/tree.txt | Bin 708 -> 896 bytes .../gb/family_tree/presenter/Presenter.class | Bin 1719 -> 2085 bytes .../ru/gb/family_tree/view/ConsoleUI.class | Bin 3615 -> 3625 bytes .../ru/gb/family_tree/view/MainMenu.class | Bin 2209 -> 2204 bytes .../view/commands/GetHumanInfo.class | Bin 765 -> 0 bytes .../family_tree/view/commands/GetInfo.class | Bin 0 -> 745 bytes src/ru/gb/family_tree/Main.java | 40 ----------------- .../family_tree/model/FamilyTreeManager.java | 25 +++++++++++ src/ru/gb/family_tree/model/HumanFactory.java | 14 ++++++ .../gb/family_tree/model/PersonFactory.java | 10 +++++ src/ru/gb/family_tree/model/Service.java | 42 ++++++++---------- .../model/family_tree/FamilyTree.java | 2 +- src/ru/gb/family_tree/model/save/tree.txt | Bin 863 -> 896 bytes .../gb/family_tree/presenter/Presenter.java | 13 ++++-- src/ru/gb/family_tree/view/ConsoleUI.java | 2 +- src/ru/gb/family_tree/view/MainMenu.java | 2 +- .../{GetHumanInfo.java => GetInfo.java} | 6 +-- 22 files changed, 82 insertions(+), 74 deletions(-) create mode 100644 out/production/GBLesson1/ru/gb/family_tree/model/FamilyTreeManager.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/model/HumanFactory.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/model/PersonFactory.class delete mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/GetHumanInfo.class create mode 100644 out/production/GBLesson1/ru/gb/family_tree/view/commands/GetInfo.class create mode 100644 src/ru/gb/family_tree/model/FamilyTreeManager.java create mode 100644 src/ru/gb/family_tree/model/HumanFactory.java create mode 100644 src/ru/gb/family_tree/model/PersonFactory.java rename src/ru/gb/family_tree/view/commands/{GetHumanInfo.java => GetInfo.java} (62%) diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/FamilyTreeManager.class b/out/production/GBLesson1/ru/gb/family_tree/model/FamilyTreeManager.class new file mode 100644 index 0000000000000000000000000000000000000000..cf0d74d26323e50a5055a1304d2a3a88587d6053 GIT binary patch literal 1098 zcmb7EO>fgc6r6R^I7uD11PI@>e6-C6s<|6+D3DX2NU2hZ3)-aHbSo#3T&Dm{?e>q= zAQC7%(_Q|0X^iT*NNtk_s}a0OL?jZ0Mt#0 zJG`K$0xKOoR&S=Gz6$qZAFG|oKn6X@c5Ia#=A$EhLOz)dQW?p&@!2An7|UKRwCw-9 zAzJZJ2kNbijs&U~^$WbpR=?QqMK02qa-40(OyFsz;0#RGcPG%mu6RtSg~{yNqgaHtyj* zBi7AO1<}^9o?z}Im~Qhc?A9477JlLCXJ*H^1?GW|BE@sh@mw-~$a}%@e3anrl80eZ qnc+P-!}T2YQ<~-{V2GKCHjwLa@;PJ$kFh~00?fcI?l&1(*!l}g;}UED literal 0 HcmV?d00001 diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/HumanFactory.class b/out/production/GBLesson1/ru/gb/family_tree/model/HumanFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..4415a653fd3249ea1dc1f82f9e1d370e4c3b4a6d GIT binary patch literal 1192 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 diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/family_tree/FamilyTree.class b/out/production/GBLesson1/ru/gb/family_tree/model/family_tree/FamilyTree.class index 6a3d9ca7f45e8c37de8834697ca9c14b5ea57a3d..ec4bab796eabc7f1ca3b1b2c30a5f05457dc1fd3 100644 GIT binary patch delta 80 zcmdn5vrUKV)W2Q(7#J9w7>;h_GUMFr$+?SzF?lnK&}l}-J)18G^Dr{+W!N|QzKAK~ i{>h@Eag#+vB`5cYE)YJ*z{D^OsF8``5W`_GeFOkuj~K52 delta 88 zcmdm{vtNhn)W2Q(7#J9w7>;e^GUH?|O3f`T+ib(RkArc~=HG&+85#F(J}%6|$h?nX p|Kw{Tri=$B^N7YV9t4sSlbb~s2p?i#VweUrfQjKS!x1oj6abm49LE3v diff --git a/out/production/GBLesson1/ru/gb/family_tree/model/save/tree.txt b/out/production/GBLesson1/ru/gb/family_tree/model/save/tree.txt index 4b3a19363ed1e684a351b1dec032a9592b314e56..63ff6a5a87e7ef905c250c7e3e4435ca34dc1b35 100644 GIT binary patch delta 259 zcmX@Y+Q2@+jN=c}%hS%WdFLkDnK80VEY)LYDQ96|U|`v}%9T-t5zJ;RE@Y@88#(XjF%%aSk9Iy;fn1Knbk7;rale!1g43H6g6$N!5TCjwH z%`G)IF(i+t7A^;IV0J5kzQvd(} delta 104 zcmZo*Kf*e}jAQ2BI_}E-mun~5nK3d=EY)LYDraF}U|`y~%9U}lEK{mPP-$^aVqS3} vLmdM%P=Wz0%}`M=c?OfZ44hX7lIJU7U~@~&P0UFxVPKA&{E$hQsh|P?2DBTh diff --git a/out/production/GBLesson1/ru/gb/family_tree/presenter/Presenter.class b/out/production/GBLesson1/ru/gb/family_tree/presenter/Presenter.class index b51839c36c9fa587bcbcb375de615371ee7a89b7..2cf3d93a6e2a883e358ddcdeae1583a17c4b2a80 100644 GIT binary patch literal 2085 zcma)-Z&Mmq6vm&67+~FiN!2tpHri+ds3A!k+XQPGOs%xU*kbMERc3`NYzCIhvY7E> zb*AdHo#_YYhwAh>yDJ)4rg^iR-E+_H{Jn>N{{8cB043}jh+!;&xQTIGQJ8#V9a)8z zhu(_f?o$)DF|Uxc>UBS5h4pOZqAOL;wVg(B)ECcg>q4bdvs%wBPZx9SZxWxG zxFgLq8`|@kW#_OX&Xz>+xx!R7Hw>IW7P$oSCYG_HFgskUe(Mw_-ZCujnbUozU4`k0 zh$WOM+%r*-P>gQJb4$lNR@*P~0}~JBbGmCC=`G#1T6&MeBo<$qc;u^E9jpGn>MIjp z^`*LmYMd25(s#dh>guYI81 zJ?o&wFW3F)*tc9;-ouY^uW5IqFHgjMW=e5~ofFv5WO89Nv{RQch}Zq9P6vkuM$?}G zslUtsjqLghc3nZ0IsA6mX&wsh&ZW_RFCj&F9GiST=ZPlbzWrkU3@X2Tf<*o=Tzz$h%n2qbPQA+i zj>$93oZ#kfKJhy~XGj34aSm7t(|peGZr#9^uakHd@jbTrE0V;;ROPCNUSHEPPF;rZ zo69S!rPPFo%}C=@l7&9$wA_!LFkGz-G^;ZBRVqxtwx1?2MIsxrAsWc&*If5 zL2ADivXTMo{$M;=a&ng#$v%TSBAW5VAY+A$)kp@HNyyk^!KB=2iDUNGDb}L0y3bBO z;9t>0pEe&@^qY~!OYD+I3Vxy_CFed0Jyb#u#<_h{{e7vuWJAR literal 1719 zcmZ{k`%V*E6vn?@s)gyMEl9oL1-wxTI9^dtIijFwO}!)_#=p$KY|EH-YNi8*$1+ij zn)m=d)XDkQbST)4X|lU->$leW)?V}bzaPH2mnWF(G0J zWf+$=u1F|WyA=jYyDyw(Bw0ygTDEg-XUD9VrqeKMtd>~JXv{`Ojh5s7d3067#x;SN z@Qra@3ZrnORIPS=-O#ux$5~3byyZ3A!1zMEtuZgee7hBdOS?;65N?TD3KOM-8g;Xz zntUqDEH`ayo^M`kH#bbM=4>>$Ga9MB?gXB!Mo_%io~NGhdM@|HSayZ^(Z| z;d5kmkK-uP9P=Ct1dL#eJO6O!c*htOEN}%BBWKJ(dLwr6j#iO%`3nj&vvYeGEAQdt z0X)YT1ZB}Ahm#Sw96Q_x=kYJ@6DUC}awfUu@c<8LtE6dSXNx?MTO)Lq5r=yi|BiDh z9JrG&6=+hxc;rfV4B{LVKW6(daVRj|0bNQ8`y4WCzbqyWv2>TkULiq*o{w3B9oAHD zJQvBibciw7Ww5D|8RcHa6d9#N2D>k2tWhwLJ123BpV`A)QdTpp@+>=WE}~6zEV@jh!P@t5y*JKlq+dTowz^~sD>2!^lbFm;Kuqqb$E~EuZ&8EW RtjGKz9S-X8lrg7J{U68*IM)CG diff --git a/out/production/GBLesson1/ru/gb/family_tree/view/ConsoleUI.class b/out/production/GBLesson1/ru/gb/family_tree/view/ConsoleUI.class index d8962b388ef7fc394981a4870678073da967e7db..c8c6a1b06c61744e3cca036856098dfe70240340 100644 GIT binary patch delta 198 zcmbO)vr>lZ)W2Q(7#J9w7?y41@?z&;PfsoJ%uCDP9K`;Td2&5B*W^kr{>dTS+KiJo zH*h;JMowYqU|?iWU`S<{3S==cSTOi9Oaro*8SEI`8KyIIF|aWBGng^V0E)3PgfZwd z%mj+DF{CrdG0Xyru`}c`h%?Lvig7ShGVn0WVVKLn2{duuWJz9E#`%-uc_-^G0IFkT l5M@wgSO`?d#GuL`$gl`(hc*K@!(y-Xw~Wsn>!aOv{vJmE_ON^y3lRgnv!h8$}ux5i_8n-$bEUTUF1$AaGo+33ma4aHf$8eD#!@F!sa diff --git a/out/production/GBLesson1/ru/gb/family_tree/view/MainMenu.class b/out/production/GBLesson1/ru/gb/family_tree/view/MainMenu.class index e4bee89b0c2ce00c477f07a7273196924889c126..e9d658cbbfb6f3cd5967478fd5afeef8c4f9efa0 100644 GIT binary patch delta 20 ccmZ1|I7e_pHRI$<%!j`BXQ)I|pc3p^*)N2+PC^tRtZYVe?%eyGJ9p;x?&=!AF4QDq44eLM|Jwf_{0M&f z7s2=7Obt%`8`_>y_)4XdU;erO*S~zH%1B^L!ngtnNrqRBr!{L@LvIQ5+o9`luAK<} zMKkPHOSkH6t=QWzjK3F_a6d3?=gP1ID`#dhD_tR ze3fA%H`*%9OBC%oXP7Dri+}W5HST=UYbHf9W!uors_uwT_k#)dNVFNYqS#N)p}>$b z9%jn07F9gB5*0}ND>pos`j9KO=NNoXgiXy1&vz?)QLNGnCFolLF;E@mXw8z^L7XB$ zax=qT|3mywH{&_2axYG~DZC(^?dy3gkfI7KVu>gWFEQJvz3u9d)L(!UPwG?qYFXmW;p*pXTEdJ%zS*lya8B)8b^d7d2T+JRmc=GmU>aIPH-exez6xvX3J6)o2Y z7+RNwCEOK;#Z>-CKh`xj%eAEO5FVcF-)h@&CAK?LbrsZf*$lTsLlFgkf=(dUNn_1FwCTyR|)cBIeVWobmoP{ zx2okLcXsrmNlr3v8@gH09TDizjJb!R!tmz=KldI^pJhlG-QW2x zwq11$zAl1(ln^-|ydEa$HDdIIfC%Ua`e^MZwTdV?Ks=LVbB~DL)-wiZl^Z_gCNN04 wKh#4QCPgPOf>EL{jG;HAE!1^DdqCm=oxf?pFKn;V6v_-34I0BZsR$;%0G&<8;{X5v literal 0 HcmV?d00001 diff --git a/src/ru/gb/family_tree/Main.java b/src/ru/gb/family_tree/Main.java index 0af5cfd..275ca64 100644 --- a/src/ru/gb/family_tree/Main.java +++ b/src/ru/gb/family_tree/Main.java @@ -16,44 +16,4 @@ public static void main(String[] args) { view.start(); } -// String filePath = "src/ru/gb/family_tree/save/tree.txt"; -// FamilyTree tree = testTree(); -// //FamilyTree tree = load(filePath); -// System.out.println(tree); -// tree.sotrByName(); -// System.out.println(tree); -// tree.sortByBirthDate(); -// System.out.println(tree); -// //save(tree, filePath); -// -// } -// -// private static FamilyTree load(String filePath){ -// Writable writable = new FileHandler(); -// return (FamilyTree) writable.read(filePath); -// } -// -// private static void save(FamilyTree familyTree, String filePath){ -// Writable writable = new FileHandler(); -// writable.save(familyTree, filePath); -// } -// -// private static FamilyTree testTree() { -// FamilyTree familyTree = new FamilyTree(); -// -// Human human1 = new Human("Oleg", Gender.Male, LocalDate.of(1985, 12, 12)); -// Human human2 = new Human("Olga", Gender.Female, LocalDate.of(1984, 6, 18)); -// Human human3 = new Human("Ruslan", Gender.Male, LocalDate.of(2006, 10, 10), human1, human2); -// Human human4 = new Human("Lena", Gender.Female, LocalDate.of(2016, 5, 4), human1, human2); -// -// -// familyTree.addHuman(human1); -// familyTree.addHuman(human2); -// familyTree.addHuman(human3); -// familyTree.addHuman(human4); -// -// familyTree.setWedding(human1.getId(), human2.getId()); -// -// return familyTree; -// } } diff --git a/src/ru/gb/family_tree/model/FamilyTreeManager.java b/src/ru/gb/family_tree/model/FamilyTreeManager.java new file mode 100644 index 0000000..1541046 --- /dev/null +++ b/src/ru/gb/family_tree/model/FamilyTreeManager.java @@ -0,0 +1,25 @@ +package ru.gb.family_tree.model; + +import ru.gb.family_tree.model.family_tree.FamilyTree; +import ru.gb.family_tree.model.save.Writable; + +public class FamilyTreeManager { + private final Writable writable; + + + // Внедрение зависимости через конструктор + public FamilyTreeManager(Writable writable) { + this.writable = writable; + } + + // Метод для загрузки FamilyTree из файла + public FamilyTree load(String filePath) { + return (FamilyTree) writable.read(filePath); + } + + // Метод для сохранения FamilyTree в файл + public void save(FamilyTree familyTree, String filePath) { + writable.save(familyTree, filePath); + } +} + diff --git a/src/ru/gb/family_tree/model/HumanFactory.java b/src/ru/gb/family_tree/model/HumanFactory.java new file mode 100644 index 0000000..ed12e20 --- /dev/null +++ b/src/ru/gb/family_tree/model/HumanFactory.java @@ -0,0 +1,14 @@ +package ru.gb.family_tree.model; + +import ru.gb.family_tree.model.human.Gender; +import ru.gb.family_tree.model.human.Human; + +import java.time.LocalDate; + +public class HumanFactory implements PersonFactory { + @Override + public Human createPerson(String name, Gender gender, LocalDate birthDate) { + return new Human(name, gender, birthDate); + } +} + diff --git a/src/ru/gb/family_tree/model/PersonFactory.java b/src/ru/gb/family_tree/model/PersonFactory.java new file mode 100644 index 0000000..bfe1dc9 --- /dev/null +++ b/src/ru/gb/family_tree/model/PersonFactory.java @@ -0,0 +1,10 @@ +package ru.gb.family_tree.model; + +import ru.gb.family_tree.model.family_tree.TreeNode; +import ru.gb.family_tree.model.human.Gender; + +import java.time.LocalDate; + +public interface PersonFactory > { + T createPerson(String name, Gender gender, LocalDate birthDate); +} \ No newline at end of file diff --git a/src/ru/gb/family_tree/model/Service.java b/src/ru/gb/family_tree/model/Service.java index f34dc18..28b279b 100644 --- a/src/ru/gb/family_tree/model/Service.java +++ b/src/ru/gb/family_tree/model/Service.java @@ -1,30 +1,36 @@ package ru.gb.family_tree.model; import ru.gb.family_tree.model.family_tree.FamilyTree; +import ru.gb.family_tree.model.family_tree.TreeNode; import ru.gb.family_tree.model.human.Gender; -import ru.gb.family_tree.model.human.Human; import ru.gb.family_tree.model.save.FileHandler; import ru.gb.family_tree.model.save.Writable; -import ru.gb.family_tree.presenter.Presenter; -import ru.gb.family_tree.view.View; import java.time.LocalDate; -import java.util.List; -public class Service { - private FamilyTree familyTree; +public class Service> { + private FamilyTree familyTree; + private PersonFactory factory; + + Writable fileHandler = new FileHandler(); + FamilyTreeManager manager = new FamilyTreeManager(fileHandler); private String filePath = "src/ru/gb/family_tree/model/save/tree.txt"; - public Service() { + public Service(PersonFactory factory) { + this.factory = factory; familyTree = new FamilyTree<>(); } public void addHuman(String name, String gender, LocalDate date) { - familyTree.addHuman(new Human(name, getGenderFromString(gender), date)); + T human = factory.createPerson(name, getGenderFromString(gender), date); + familyTree.addHuman(human); } - public void addChildren(int nameParent, int nameChild){ - familyTree.getById(nameParent).addChild(familyTree.getById(nameChild)); + public void addChildren(int idParent, int idChild){ + familyTree.getById(idParent).addChild(familyTree.getById(idChild)); + familyTree.getById(idParent).getSpouse().addChild(familyTree.getById(idChild)); + familyTree.getById(idChild).addParent(familyTree.getById(idParent).getSpouse()); + familyTree.getById(idChild).addParent(familyTree.getById(idParent)); } public String getHumanInfo(){ @@ -41,24 +47,13 @@ public void sortByBirthDate() { } public void saveFemaleTree() { - save(familyTree, filePath); + manager.save(familyTree, filePath); } public void loadFemaleTree() { - familyTree = load(filePath); - } - - private static FamilyTree load(String filePath){ - Writable writable = new FileHandler(); - return (FamilyTree) writable.read(filePath); + familyTree = manager.load(filePath); } - private static void save(FamilyTree familyTree, String filePath){ - Writable writable = new FileHandler(); - writable.save(familyTree, filePath); - } - - public void setWedding(int idMale, int idFemale) { familyTree.setWedding(idMale, idFemale); } @@ -67,7 +62,6 @@ public static Gender getGenderFromString(String input) { if (input == null) { return null; } - try { return Gender.valueOf(input); } catch (IllegalArgumentException e) { diff --git a/src/ru/gb/family_tree/model/family_tree/FamilyTree.java b/src/ru/gb/family_tree/model/family_tree/FamilyTree.java index 765d909..d82646c 100644 --- a/src/ru/gb/family_tree/model/family_tree/FamilyTree.java +++ b/src/ru/gb/family_tree/model/family_tree/FamilyTree.java @@ -99,7 +99,7 @@ public boolean setDivorse(long humansId1, long humansId2){ return false; } - public boolean remuve(long humansId){ + public boolean remove(long humansId){ if(checkId(humansId)){ E human = getById(humansId); return humanList.remove(human); diff --git a/src/ru/gb/family_tree/model/save/tree.txt b/src/ru/gb/family_tree/model/save/tree.txt index 92fe079f0d714c51f71d336cc36bf609309ae028..63ff6a5a87e7ef905c250c7e3e4435ca34dc1b35 100644 GIT binary patch delta 192 zcmcc5*1$f&jN=c}%hS%WdFM9TZDeF;EN5Y0U|^hln8{%B55^cV@64jioSfo9hB^jj zpac_GnrU(llez~~DM*U1qM!~$3zjgjxuxbN=A@P|utX;2CBii_fHg8yfK+jTiHd@X l0uV!Zav+lwKZqp`C-^1{GaD#?xKbqytd2RUSWGIY008U1Eu;Vd delta 143 zcmZo*zt1+ojAQ2BI_}E-muolLZDgD*%ake+R9c*qm{(lLP{+W`00iYMAhM!h@(d<* z891*FB+pmEz~+{ko0yYY!oVCk`5}`qW5MKaj0Tevm|0{5fRf&sMVUD{Sj;kDHefF( PVPJL4Nd;+RDyRSen4Tto diff --git a/src/ru/gb/family_tree/presenter/Presenter.java b/src/ru/gb/family_tree/presenter/Presenter.java index 794e3d7..73a5f5f 100644 --- a/src/ru/gb/family_tree/presenter/Presenter.java +++ b/src/ru/gb/family_tree/presenter/Presenter.java @@ -1,7 +1,10 @@ package ru.gb.family_tree.presenter; +import ru.gb.family_tree.model.HumanFactory; +import ru.gb.family_tree.model.PersonFactory; import ru.gb.family_tree.model.Service; import ru.gb.family_tree.model.family_tree.FamilyTree; +import ru.gb.family_tree.model.human.Human; import ru.gb.family_tree.model.save.FileHandler; import ru.gb.family_tree.model.save.Writable; import ru.gb.family_tree.view.View; @@ -10,11 +13,13 @@ public class Presenter { private View view; - private Service service; + private Service service; + private PersonFactory factory; public Presenter(View view) { this.view = view; - service = new Service(); + factory = new HumanFactory(); + service = new Service<>(factory); } @@ -44,8 +49,8 @@ public void setWedding(int idMale, int idFemale) { getHumanInfo(); } - public void addChildren(int nameParent, int nameChild) { - service.addChildren(nameParent, nameChild); + public void addChildren(int idParent, int idChild) { + service.addChildren(idParent, idChild); } public void sortByBirthDate() { diff --git a/src/ru/gb/family_tree/view/ConsoleUI.java b/src/ru/gb/family_tree/view/ConsoleUI.java index 6da5b28..3ec7892 100644 --- a/src/ru/gb/family_tree/view/ConsoleUI.java +++ b/src/ru/gb/family_tree/view/ConsoleUI.java @@ -59,7 +59,7 @@ public void sortByBirthDate(){ presenter.sortByBirthDate(); } - public void getHumanInfo() { + public void getInfo() { presenter.getHumanInfo(); } diff --git a/src/ru/gb/family_tree/view/MainMenu.java b/src/ru/gb/family_tree/view/MainMenu.java index 26bfb20..0eb40f6 100644 --- a/src/ru/gb/family_tree/view/MainMenu.java +++ b/src/ru/gb/family_tree/view/MainMenu.java @@ -12,7 +12,7 @@ public MainMenu(ConsoleUI consoleUI) { commands = new ArrayList<>(); commands.add(new AddHuman(consoleUI)); commands.add(new AddChildern(consoleUI)); - commands.add(new GetHumanInfo(consoleUI)); + commands.add(new GetInfo(consoleUI)); commands.add(new SetWedding(consoleUI)); commands.add(new SortByName(consoleUI)); commands.add(new SortByBirthDate(consoleUI)); diff --git a/src/ru/gb/family_tree/view/commands/GetHumanInfo.java b/src/ru/gb/family_tree/view/commands/GetInfo.java similarity index 62% rename from src/ru/gb/family_tree/view/commands/GetHumanInfo.java rename to src/ru/gb/family_tree/view/commands/GetInfo.java index ce905ed..083e128 100644 --- a/src/ru/gb/family_tree/view/commands/GetHumanInfo.java +++ b/src/ru/gb/family_tree/view/commands/GetInfo.java @@ -2,14 +2,14 @@ import ru.gb.family_tree.view.ConsoleUI; -public class GetHumanInfo extends Command{ +public class GetInfo extends Command{ - public GetHumanInfo(ConsoleUI consoleUI) { + public GetInfo(ConsoleUI consoleUI) { super("Получить список людей: ", consoleUI); } @Override public void execute(){ - getConsoleUI().getHumanInfo(); + getConsoleUI().getInfo(); }; } \ No newline at end of file