From a892966c364b501cbc44d54800a82f9b6b8685f2 Mon Sep 17 00:00:00 2001 From: "Damith C. Rajapakse" Date: Sun, 4 Sep 2016 17:49:23 +0800 Subject: [PATCH] Update docs --- README.md | 31 +++- doc/DeveloperGuide.md | 29 ++++ doc/Diagrams.pptx | Bin 49655 -> 49640 bytes doc/LearningOutcomes.md | 260 ++++++++++++++++++++++++++++++++ doc/UserGuide.md | 117 ++++++++++++++ doc/images/mainClassDiagram.png | Bin 0 -> 65491 bytes 6 files changed, 435 insertions(+), 2 deletions(-) create mode 100644 doc/DeveloperGuide.md create mode 100644 doc/LearningOutcomes.md create mode 100644 doc/UserGuide.md create mode 100644 doc/images/mainClassDiagram.png diff --git a/README.md b/README.md index 44d52c1a3..184ca7c88 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,29 @@ -# addressbook-level3 -Address Book sample application (Level 3) +# AddressBook (Level 3) +* This is a CLI (Command Line Interface) Address Book application **written in OOP fashion**. It has a very basic GUI. +* It is a Java sample application intended for students learning Software Engineering while using Java as + the main programming language. +* It provides a **reasonably well-written** code example that is **significantly bigger** than what students + usually write in data structure modules. + +**Useful Links** +* [User Guide](doc/UserGuide.md) +* [Developer Guide](doc/DeveloperGuide.md) +* [Learning Outcomes](doc/LearningOutcomes.md) + +# Contributors + +* [Damith C. Rajapakse](http://www.comp.nus.edu.sg/~damithch) : Project Advisor +* [Leow Yijin](http://github.com/yijinl): Developer +* [Martin Choo](http://github.com/m133225): Developer +* [You Liang](http://github.com/yl-coder) : Developer + +# Acknowledgements + +Some parts of this sample application was inspired by the excellent +[Java FX tutorial](http://code.makery.ch/library/javafx-8-tutorial/) by Marco Jakob + +# Contact Us + +* **Bug reports, Suggestions** : Post in our [issue tracker](https://github.com/se-edu/addressbook-level3/issues) + if you noticed bugs or have suggestions on how to improve. +* **Contributing** : We welcome pull requests. Follow the process described [here](https://github.com/oss-generic/process) \ No newline at end of file diff --git a/doc/DeveloperGuide.md b/doc/DeveloperGuide.md new file mode 100644 index 000000000..5432b4ac6 --- /dev/null +++ b/doc/DeveloperGuide.md @@ -0,0 +1,29 @@ +# Developer Guide + +## Setting up + +#### Prerequisites + +1. **JDK 8** or later +2. **Eclipse** IDE +3. **e(fx)clipse** plugin for Eclipse (Do the steps 2 onwards given in + [this page](http://www.eclipse.org/efxclipse/install.html#for-the-ambitious)) + + +#### Importing the project into Eclipse + +0. Fork this repo, and clone the fork to your computer +1. Open Eclipse (Note: Ensure you have installed the **e(fx)clipse plugin** as given in the prerequisites above) +2. Click `File` > `Import` +3. Click `General` > `Existing Projects into Workspace` > `Next` +4. Click `Browse`, then locate the project's directory +5. Click `Finish` + +## Design + + +## Testing + +* In Eclipse, right-click on the `test/java` folder and choose `Run as` > `JUnit Test` + + diff --git a/doc/Diagrams.pptx b/doc/Diagrams.pptx index d6107da35d1289923d1319cb37a0e334bf4c0184..a796564d87ed73189a7cba21c42588e46611f379 100644 GIT binary patch delta 9075 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�zMjL%dL!J>WMHk~_5Ithd6K@hcDisQ<~*z_IoJ*e&=mr zM^T8N_WQ>B?-NQm=Ng{Y>M3ukon+(v_Ib;8t7=NTodi30L>&gDT6iAHnv2JCsXH^z zw2U`DHqa&@6FrKM0RD`r?=q3PdCv~jVAin;!SAt$cR7v@#^Ug&zG@tMYzJc^$gt*g zR-dI6`B1d@KGN_h2h!ETAV^Z%)4X#a+bdNj|1#b~9=k$+v3gQ4X!s4Zw5Swlr-qDx zU26491b!C#{jsY=1%2>bz#%&u&JbFC6dN-6?+z^ABa1!LA$Zc=W%OrahzSBNQVxFN zObm4E4pa`6Q^5cuio_h4p(h`F5C(P}8XI6_iy~ESJ?JSYKS)h2^pauoH9*UL(BeJ1 zPlqtlvOl!OmG3I1xfAh=bYblw4@B8Y7Qp(PUOJz2qsV-fT z@l7n>fIz9%Fdy>;_b9m~;d**$((yF4Ls6 zlHjNjAo=Hn2CXJ||5;E#D0C1Jy4R4@8b)vfJ%o~(23j|{!5s{L56Kx(AccQ0A=iwU zDE~8S5aRns3%th!wXj0IRbxVkSuj!mM?PbQaMa3yuh{-hky*KMW9+<#M)dTtnBh-keIIE44_KubM0_&XnThyyV;MSTG_w`-jVo+f*aYuogW~NAE+TcEtn9Xo(Kj9;@_wPCRY8&a}V`MX#GQF zn%KZkdjHUPD8)1VH^qb;HZg)Nt^QGYo7upRcK^^|DE;8{51oY49v3L3fiScX5&w1U z08v2K2-=~quKY(Eff%+(g5hEzg0X*HC?iZ7F!;0(g4relGXzm?qapt5nN0vaKlsCeK$!pO1t~zH+Ng>D*}hN@*8kFz OAVY05@a9#21^)|`?+;S| delta 9091 zcmaJ{1yEc~vt1TQA4%e z>E&^DSH<>XG3|(!jSGj>I^LyD0^`&!eM?vB>&x;o?u$`7mCv!s#I-DXX`L7>LmYYmmH5uVApElB0uAqod>94w0E5MkiU~1 zxvxVvwA`F|-pY5b*weFI>dK(?t~n-NJcBZFtEM}1AGKVmYOL|MYoij*E-$iCFcL%y3bibYnVI zal45Va0`nul{s<{3x_Ek}8Ns4X_yEs#uS z{{(SIb@yrfhG1I0)_*zL^$nd*XJqO8I&~f8*PLqAT+Qdpw^>Yj8Q8gefcC(vyghqy zOdoU4viKaj%$x3uu$_KiDfXIQZWivLoiQrBtppQdcBWk$e|kDK<0JG@;kK#zOd zZ2LVMg5fT4x_}n9T1zgi!NB*P=SBCNYbAWUWpt!?O&{0Duy~}}trhi-B^Hc*?hxS# z?12OSkU+R&iBOc4&cHqWeYl0@pR@IBDuuT$A&>}bapfH{ZU*=Jr=Yyy(+i31!7J#j zVM;H9NlT~a9Y-X4hQ4qEHQ@v9>!zWQ*zxhUw=;69`uWA<~a2+cJV+q6L7*Ynh(+b0}zE0S=o?iE8C^ZW}tWnY36 zt8@iZ^>^!Ml}^fcF@!(8@GHIEK)thV5}n~k$SXQ+U1@t4MjptXRy5yWKOPLS#T&Uo z$kz1KKRBr|@#=SoRESQNRcHxfAB52CTPXc%&yR3SW<;WbgT5+TU&y6U|zaHS*?;xLxo2gEe) zrc{lOd-Bt`1m?>+8aM-sq_$WHV!Ft&v#7rY4JKVN2r$1Mv?lH2lUE2JlDBn8jn_nJ zF|CpFMfzga80^QA&|v+fh1bSTCO!haZO@Z(!`=Nuw!~$QMXR*GYcr^n=o4fj7s=j( zD!lo~9E{AOZh{69Hu6%)Zd#Vi{%4oQBv=4ZSJ}=)-9j!7N^hF(lTU5G1w`!{WLaY$ z1jj@Z=SZt{Vh$9Hb7RjJSf#b&?sF+Nr}*14;imlN+t9dMo*eA&`^mRS;)JZMY3;Bm z7=F>>%M0-Lt+@S(1H7Qlg!uL#U%Ce8sZ$HKHmam}xr<8$9|ibf!73<=G{cP+_Rka2 zIQV*7ZD!bgUP_&bHGWGb?g{pv!JjKl2o9==9^jk2Zl7L-s@`4@bZ0Bn3kCBk_XFQLQ}BZ7*?uoW>FH zXN!H6WeO}AloVE738fqi$m|tV-!G95xe6*9rl_7LYAcEI7=s zJ7)C}$`9)KJ86f%vN|!orOrdk^Mo7^-A8LWyV!2}nFJ9^clZ#&AY|$G4~TR;=x0tn zp`pK9kLEYG$(hE*@>V(!gppK7UMbx={bC@`w*B38diT3P@WPd%>_TU34mqh2cB0Yv zoZs#>jnk_n;~l(<23}F{Th$reu`8gtyAUs7Q{N9L1Nkuf)AXe>C%8RccF>|0E#h;- z*~FqI&L<<-P$&z~=%dgcu)602Xy($Y#Z^xY|1X`351A)D)Tv zDrF2MOj~9U9#>`(d>*V*E+N+2;Betd;IeuUINh!yOw_z_bm#BwBT(*(%0S zf(_M4kVR|J6PFxHiqqp$Wck#5qs=nyW?0SlGa@(854c>x5AmL`)YP=W7wykLu-wtI z#ywS7hn{6-I!f$_lt<`7xvY=CV2)!22Mm7I2vKtHM+Ek;4O`l6@;-OYbZzDeL>n*3 z8wCLs-^~Q@n@SF2%G2;AyP#GneV%e zHc(Zd=_m>yPmU(a7^GDZ6T1g4k(^=*`f5@kYN3w}`(Cu6SO-s$zL?B#MxwT0h0bN{ z-STl1<%&?;cjnRVL;>d55%B*2lY-0}{O zJ*h_m%>nOQBOtHKfm4upI&dzD4MIZpxSaEY43Tf>=k~(S>Ymz(olUNV1QOEeDO1Ob zpxbJH&rCDbR`M!FV$h@ugXPZ*papha!GYZLUX`=KH?v{+*&=l?UVHz+_r71(5En(O z6TLG)>>kvBB)gPO%t3bEx(~f-avZ6-{B-s4Sd4io<(2%Vcd+8g%K4}y1}BBmJGUQY zB{)@5JO+3B}ZU>=a~>mSW!XzFQyI?rY{K%v;CRX>JA4T2_aN z=umuT?^k;ji05@y=9h=EXmD7;2tYK3Iq}Jrkf=bNb z%!m;S42pZ_y(x|);_sqT1bSf?-)(%hHI5=mMS(B=h?Y-vWiWkZLKv(ZbdLc;-`9(s z)Yo zgg7qQ=J{dfJKbU3<aXT4fzEvFVAIf^vWFwT!D%1#A1cC+OnTvqhZS>n^8)U4pLg`rP=Tq% z198Z3F(%$sUluZvQsGaBc2XyYV*?ELKcEN5Kxb{|;G5FGA$aGv*+PPu+H$(J)5$yw zTv%L1l`iOl6t`Da&z_JWI6HB_3Y{9c+J6(mZ{pUi<Wn3-w7joXV!K5*+?$V5>mmDecc&WqT;ZKdfi}tO=M_lhOJ4F3FAg|g z7W3gjBNfbmEvVkpYrCUHE9OB}*>$ zF~r7toSQIwBz5UbGRm|A+}`4k(jyuq-al%lGF~!IhC6`~YDs(PblkaSZ5;NT82R}m z%2^+-i^bp@8|8>&_EQ(S)CPt6t4vY?PG0n~dVEs#>ry};Y#rKL?23!0g;^$MFwH;z zXix+@gfqOVhJ=I4`x*J7o6~S4o6sxgeqaYw;vUg`u`b<^Go;!M-PaxaeMw4LZ86`S z)UHVk*>K>-wdIoh=}Uyb`;Ivm`c_pb%)m2^vhHupg*cWvN!PnEl;@O%vXTiOi@a0> zii#Kv46AZHT^pBbrh6@1U_PYY>@g}vkt{7KIwLHfGk$ibS!G$7x-A4-uyc6r} zVXaC)`9(Jff<33WVy_d{?DCynv_@@mUTf92NOJabkSV27NRsn_rHM` zx~#3_!(gJkqSe*)qwsYwwPz`sl2aw}(3W=k38A{qgM}0*T7LwoG!QRQ%r=kL3*wlk z(Lmku(T9>8K2Vy5xF{ot;biI~Q@ylc#LQ4*m-B}NHL9?7r`Rn3)=>q?{FedtykpyO zSvWZ?I5DfjCR)8>9E@glXGNLVG1>g{27NLvX5}F)veYXa2S)9=PwwDOQ`3BPB=BC~ z*U3XQULSPkyL^}JG%6pl$4|Jsq}yu8a~P(H*(Butl{zQGYW*0?CNP_} zQLI6rQWtAGH&+3b9I8r&xne3|4kW{gHFFED)QKrfal3mobD3wX2PKsP%p3DKqa3i@OlG>a z=1z)y(_J02106+PnqTM)A~cQad&o=}W3@Zg4QWbOkz6c4vS-C%7}956W|lz8=2Kk7 zmvkiDk~^yH$h^ssmS-Z-<7fEs0>=RgYzQD&ez1RitlnoCIc?v4PF8Xgk@Ajt4!oRh zOyK%af9jw~sr7c{R2?`8;A-*NV~OBT9L~t6?=o?k#3(<(fHy zoaxGjtbG8zTi~2Kx2vrM1IEFxyghze+PO8w7SYm}5)bd&U>bZf1_g7+nyZ5*#0@dt zH=3BGT*(o~w>B{{yLpDLrI_Wb@6wVW88kS@LgwIzFu?kEC2s9@z1~;z7~xD7b^E+* zCgIZrm3!7qnj1sf>nNqwgixsOQf5l_p@%{eT8-1!hbovO6CIoEC|$;Y3%&qa+w zr`3{1#FDu^6r1Uo@~V=5V#oyQQ$lA7h{c33Ga?98p_1cG{3(z3P9^|q$j61HrAsZT zcbKWu`wF;O9sfe)PBXZpz3?f@GSOwDh5EoaS}|tZ)X6OMrpcF$__S9W+t*nj?ktNO z9`$iTfzdq%fYXNU+DF0m0gQ&2u>b9FX{%^mpKu+2I}eWATZPU$ACQ4$!;W+J)8-Ov$Eg!sn;v_s3k6e(xp{*^hIG1M z6OFDoT}Mr(h_ji;2xOT4wkitHmUfS3WI20tit^H+wT|4Uq;+bfID0R!H!}wqWO_wX zC2nYMWNe-R%YUj_WXoqZWUSArB>W+_oLUX#LBcC*3N=6Vk~=}* z%s}Cjq)y0-(Ik9s$NX^=86_smH)^rFO4Ezr@}25(^He_)L%c0 z^M9ePIV1wZt7APUt;&+jLZLM97yf=^>o8){6e{Ye_K3Fl{l zSPAerz^VX362EiPxk!hcUa+nChHP2lEmW5M3rS<9RRpwJ2uD2~a#utdIuCz8oRh_V zzUr{_+iYb59EHp~?Xp|; zFM0#6`Fb$Ool14?+Q$1co79rL_r&TWz8_HwahKpN{GrBH)StNK@JvF=J>QW(#KB4m z+wTLQEeSxhaqTb9NYN{gOTAFqTqVQB3;U%oLettLF8%V))%vg}xxY&RzTY)k z0%HW1Q*^s3;^r8oH86>%)`IBl@p>rC-VI1MDN~SI=MduX4GfuQs1cEH32ufw9euVR zDeq*N`bqtSCZaq2Nyp7LK65f*%{09%C%Ah^X*v}Y@3OE-z#$3kVqpJ;Jk8ZM)n}Ad zt4+5x#rsat9%~#1k@(uba{lw=Y}#n!$-`U%=VBb^@8ntuqKcKaBqslobkUxYrjGbW zd$Vkb&T)^!deS4)Q{5WFjN7k!f&N@xW6IV%Idm`HE35uF+KF&Hl>oV>c%vb)?J?8T z^sOz>__2QkzO4|8t=CW-wfI-Vv`cI@&6)moh5)FMhF$7Su91ygLZueBK>{Jnks74S zQ0~5o%43=~)=y{OSZ=IlFc(RlI5bm3G_BEz^Tcs<^0P$}VQ&y#;LBX9AP@y51=#xs z_L!{+F?%tG@JP+-eF(-!TrHSyYP6DSDJlg()(in;&XSe5F#|1oeeRz=JO{8hzz~V} zda|gNcz=VW+aoCe$Z-{jUTSfdRAj<^Bmv}k+>S`}rjAN42#y} zE63BZQvHVud41WV&$@X${W`_^3ZzudVoDg^OK}bQNy!RV;@I1KLmC+7B&@R>NML z?(k_-qkyQ9m;3@Y)_jJnB&YnjwAu>=tn3Ee(n61Ao*%0DjL;n*Rt!p59p?{DGbSfm zqIf<~EK{B&;gSQDV*?Zz5Ik;CY+)e!>{v;1kNPmp$Sd!}6Q}X-Q_t6_zq&~Q*n-5m z-^%bhil%Se=2CZ&8nU!Ca-mdl*VH z{$7k1JNw(>Yq+8^i0T%(eU&`Cxt8Jc)~F3I5e#>>2|>J3z)6Q0-G(h~Q&b6tXG8W2 z97|bw&qrZ=sH-B7RX}&ON~yZ`Rg@U<=eZXMLI^U%@A)pAIgk(BZVbKsnz8ErkrDHE zy!FMglFG1f9NZ4%ZpY}Ej?Siogj@SN&CqD~EbFdNno$!qkT;MSop)vVmx$N4B8?^f zqD_3dXTl8Kp$zQG_7{j^I?sGm{>bxNO8lGUX|X9;-Bs^=0YX1p#l2@kv$aFFwrO+L zRF5iBww?M`^x09RQWn3Z-mP-@WGi(Ail#<63ljBw_74{UHdGuuOnN3lE{MHmDTZ1l*NXxwelPhJx`6B^@@re<$8FlVY^*rhlq>zodDn-S84Ei zBLdjF6ctS7RtKJ-M*#b9Ac0X?X~6tV2z4m*Uh;9KYbP#`7A1gcoH8%0hF~?&oEhR2#niFBJKB}qIPonrxc>>A^Ny?%ff0c`qhK&X1nROPSbnIqVMQ3bc3D*W8RZ~vY=zPONR$;8- zX)pvX8meE?@@gxagbj@`#m&iZwt`na|AEx!IhrA@!huhdv@@SfJv1ZwP~RtO?%DP6 z`f2x0R(Se2L2ZOhgu-+fIlM}}{8bt1Udj!CP#i(8c6CNooDiVbB^a2WWbSBQ=<_fY z1$LT5I+E6^WI9y8={_1eY zZYiK}GL^n2CGLYJjo^Sh8gF$rLbsmx^Rfric^`*L1a0GFGgdQb=S=)GlgU^Vjz|4cVA3Gs2e_6BM$!^m5$B}*B4PXtAnx=nZDXrHr$nH|kR$xr2n}Nwy zYk(APz5D)a(!!_`oTV(xO2Fiyk)&%uos(Snz7J_ zVOk>258z-QOcGlSD>{{>%_xJ=sJ-WPy^TZh&a0m<6Wvyp?I&QvyP@A6bXF@Q_T0qb0)djhU z)M!G8OeMmEroY%2rP62wilMgN_h7t6|BSQ{3Qz&VSi)GTyNnPGw1omcEXIRhY)li2wNFg1nKR@PFUy{`nXN04Tto zjpD$0S}-~*B)}w))Tamy< z%_u;0*0)&}a8@%tkbn(5+^h`@WdFmLZQ%q)aQuN)90=fw7J6Vj=i879{M^C;kp^aK z)dA*l|Cz68%b?`4c6%ofF8T`iFGb&H^;j`UCkpSb+HYe_;3Ank|l!4693AI z9-SPuYv0QYnY0}(605IrJq+b-5a tN%+^Z7VoX92fP*SziR%!%^K|ALqYhjWB11S?_iDK&K^n_*ZRL!{0~@~t9$?e diff --git a/doc/LearningOutcomes.md b/doc/LearningOutcomes.md new file mode 100644 index 000000000..62daa4c04 --- /dev/null +++ b/doc/LearningOutcomes.md @@ -0,0 +1,260 @@ +# Learning Outcomes [to be updated] +After studying this code and completing the corresponding exercises, you should be able to, + +1. [Apply Encapsulation `[LO-Encapsulation]`](#apply-encapsulation-lo-encapsulation) +1. [Implement a class `[LO-ImplementClass]`](https://github.com/se-edu/addressbook-level2/blob/master/doc/LearningOutcomes.md#implement-a-class-lo-implementclass) +1. [Follow the Single Responsibility Principle `[LO-SRP]`](https://github.com/se-edu/addressbook-level2/blob/master/doc/LearningOutcomes.md#follow-the-single-responsibility-principle-lo-srp) +1. [Handle Exceptions `[LO-Exceptions]`](#handle-exceptions-lo-exceptions) +1. [Use Inheritance to achieve code reuse `[LO-Inheritance]`](#use-inheritance-to-achieve-code-reuse-lo-inheritance) +1. [Follow Interface Segregation Principle `[LO-ISP]`](#follow-interface-segregation-principle-lo-isp) +1. [Use class-level members `[LO-ClassLevel]`](#use-class-level-members-lo-classlevel) +1. [Use Composition `[LO-Composition]`](#use-composition-lo-composition) +1. [Use Association Classes `[LO-AssociationClass]`](#use-association-classes-lo-associationclass) +1. [Use JUnit to implement unit tests `[LO-JUnit]`](#use-junit-to-implement-unit-tests-lo-junit) +1. [Use TDD `[LO-TDD]`](#use-tdd-lo-tdd) +1. [Work in a 2KLoC code base `[LO-2KLoC]`](#work-in-a-2kloc-code-base-lo-2kloc) + +------------------------------------------------------------------------------------------------------ + +### Apply Encapsulation `[LO-Encapsulation]` + +##### Exercise: Encapsulate `CommandResult` class members + +* A member of the `CommandResult` class is not encapsulated. i.e. it is visible outside the object. + Hide it so that it can only be accessed using methods provided. + +------------------------------------------------------------------------------------------------------ + +### Implement a class `[LO-ImplementClass]` + +##### Exercise: Split `Address` into more classes +* Assume the address is entered in the following format `a/BLOCK, STREET, UNIT, POSTAL_CODE`
+ e.g. `a/123, Clementi Ave 3, #12-34, 231534` +* Split the `Address` class as follows.
+ +* Update the user guide and tests to match. + +------------------------------------------------------------------------------------------------------ + +### Follow the Single Responsibility Principle `[LO-SRP]` + +The *Single Responsibility Principle (SRP)* states that a class should have only one reason to change. +The code given follows SRP to a reasonable extent, but there are places where it can be applied further. + +##### Exercise: Split `TextUi` class + +The exercise in the `LO-ImplementClass` section is somewhat related to SRP as well. +Here's a slightly more difficult exercise. + +* `TextUi` class has more than one responsibility. + Try to extract out the responsibility of Formatting text for display (e.g. adding decorations) in to a + separate class named `Formatter`. + +##### Resources +* [An explanation of the SRP](http://www.oodesign.com/single-responsibility-principle.html) from www.oodesign.com +* [Another explanation (more detailed)](http://code.tutsplus.com/tutorials/solid-part-1-the-single-responsibility-principle--net-36074) + by Patkos Csaba +* [A book chapter on SRP](https://drive.google.com/file/d/0ByOwmqah_nuGNHEtcU5OekdDMkk/view) by Robert C. Martin + +------------------------------------------------------------------------------------------------------ + +### Handle Exceptions `[LO-Exceptions]` + +**Resources**: +* [Best Practices for Exception Handling](http://www.onjava.com/pub/a/onjava/2003/11/19/exceptions.html) + by Gunjan Doshi + +##### Exercise: Handle 'file deleted' situation + +* The current code does not handle the situation where the user deletes the storage file while the + AddressBook program is running. Use exceptions to handle that situation. + +------------------------------------------------------------------------------------------------------ + +### Use Inheritance to achieve code reuse `[LO-Inheritance]` + +Note how the `Command` class contains some code that is reused by some of its child classes. +By defining `*Command` classes as child classes of `Command`, we have avoided having to duplicate those methods +in multiple `*Command` classes. + +##### Exercise: Extract a `Contact` class + +* Extract commonalities from `Phone`, `Email` and `Address` classes into a parent class called `Contact`.
+ + +------------------------------------------------------------------------------------------------------ + +### Follow Interface Segregation Principle `[LO-ISP]` + +The *Interface-Segregation Principle (ISP)* states that no client should be forced to depend on methods it does not use. + +Note how the `Person` class implements the `ReadOnlyPerson` interface so that clients who don't need write access to +`Person` objects can access `Person` objects through the `ReadOnlyPerson` interface instead. + + +##### Exercise: Add a `Printable` interface + +* Add a `Printable` interface as follows.
+ +* `Override` the `getPrintableString` in classes `Name`, `Phone`, `Email`, and `Address` so that each produces a printable + string representation of the object. e.g. `Name: John Smith`, `Phone: 12349862` +* Add the following method in a suitable place of some other class. + Note how the method depends on the Interface. + + + ```java + /** + * Returns a concatenated version of the printable strings of each object. + */ + String getPrintableString(Printable... printables){ + ``` + + The above method can be used to get a printable string representing a bunch of person details. + For example, you should be able to call that method like this: + + ```java + //p is a Person object + return getPrintableString(p.getPhone(), p.getEmail(), p.getAddress()); + ``` + +------------------------------------------------------------------------------------------------------ + +### Use class-level members `[LO-ClassLevel]` + +Note how some of the variables and methods are declared `static`. That means they are *class-level* members +rather than *instance-level* members.
+e.g.
`Main.VERSION`, `Name.EXAMPLE`, `Utils.isAnyNull(...)` + +##### Exercise: Add class-level members + +* Convert the `parse(...)` method of the `Parser` class to a class-level method. Note how this method + can be either class-level or instance-level. +* Note how the `setTags` method of the `Person` class cannot be converted to a class-level method. +* Add an instance-level member `int sequenceNumber` and a class-level variable `int nextSequenceNumber` + to the `Person` class. Using these two variables, ensure that each `Person` object has a unique sequence number + that indicates the order in which `Person` objects were created. e.g. + * `Adam` is the first `Person` object to be created. It is assigned sequence number 1. + * `Ben` and `Charlie` are created next, and assigned 2 and 3 respectively. + * `Ben` is deleted. + * `Daisy` is added next and is given sequence number 4. + +------------------------------------------------------------------------------------------------------ + +### Use Composition `[LO-Composition]` + +Note the following examples of *composition* (filled diamond): + +Whole | Parts +:------------ | :---------------------------------- +`AddressBook` | `UniquePersonList` `UniqueTagList` +`Person` | `Name` `Phone` `Email` `Address` + +Contrast with these examples of *aggregration* (empty diamond): + +Container | Contained +:------------------ | :------------------- +`UniquePersonList` | `Person` +`UuniqueTagList` | `Tag` + +------------------------------------------------------------------------------------------------------ + +### Use Association Classes `[LO-AssociationClass]` + +The current design does not have any association classes. + +##### Exercise: Add an Association Class `Tagging` + +* Assume the following: + 1. There are commands to add and remove tags to a person in the address book. + 2. When the AddressBook program exits, it should print out a list of all the tags added/deleted during that session. + e.g. + + ```sh + + Jake Woo [friend] + - Jake Woo [colleague] + + Jean Wong [client] + ``` +* To support (ii) above, implement an Association Class called `Tagging` as given in the diagram below.
+ Each `Tagging` object will represent an adding or deleting of a tag for a specific person that happened + during that session.
+ + +------------------------------------------------------------------------------------------------------ + +### Use JUnit to implement unit tests `[LO-JUnit]` + +Note the `test/seedu/addressbook/parser/ParserTest.java` class that users Junit to implement automated unit tests. + +**Resources**: +* [JUnit cookbook](http://junit.sourceforge.net/doc/cookbook/cookbook.htm) - a short tutorial from JUnit creators +* [JUnit tutorial](http://www.vogella.com/articles/JUnit/article.html) - a more detailed tutorial from a developer Lars Vogel +* [How do I run all JUnit tests at once?](http://stackoverflow.com/questions/5759602/how-to-simultaneously-run-all-junit-tests-for-a-eclipse-java-project-without-mav) +* How to test private methods in Java? + [ [short answer](http://stackoverflow.com/questions/34571/whats-the-proper-way-to-test-a-class-with-private-methods-using-junit) ] + [ [long answer](http://www.artima.com/suiterunner/private.html) ] + +**Side readings**: +* [Quora post] [What is the best way to avoid bugs](href="http://www.quora.com/What-are-good-ways-to-avoid-bugs-while-programming/answer/Mattias-Petter-Johansson) +* [Web article] [The Big Cost of Software Bugs](http://www.bloomberg.com/slideshow/2012-08-03/the-big-cost-of-software-bugs.html) - + An interesting post on 10 bugs that cost millions. +* [Web article] [The three pillars of unit testing](http://blog.goyello.com/2011/10/06/three-pillars-of-unit-tests) - + A short article about what makes a good unit test. +* [Quora post] [Is automated testing relevant to startups?](http://www.quora.com/What-kind-of-automated-testing-should-a-startup-have-from-the-beginning-through-the-first-six-months-of-live-operation/answer/Zach-Brock) +* [Learning from Apple’s #gotofail Security Bug](http://avandeursen.com/2014/02/22/gotofail-security/) - + How unit testing (and other good coding practices) could have prevented a major security bug. + +##### Exercise: Write unit tests for the `Utils` class + +* First, make sure you know how to run JUnit tests by running the `ParserTest.java`. + Instructions are in the [Developer Guide](DeveloperGuide.md#junit-tests). +* Add a `test/seedu/addressbook/common/UtilsTest.java` containing JUnit tests for the `Utils` class. + +------------------------------------------------------------------------------------------------------ + +### Use TDD `[LO-TDD]` + +It's recommended you do `[LO-JUnit]` before attempting TDD. + +**Resources**: + +* [Uncle Bob’s three rules of TDD](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd) - + (Uncle Bob = Robert C. Martin, the author of Clean Code) +* Let’s play TDD screencasts by James Shore: + [ [episode 1](http://jamesshore.com/Blog/Lets-Play/Lets-Play-Test-Driven-Development.html) ] + [ [episode 2](http://jamesshore.com/Blog/Lets-Play/Episode-2.html) ] + [ [the rest](http://jamesshore.com/index.index) ] +* [TDD: Is There Really Any Debate Any Longer?](http://www.drdobbs.com/testing/tdd-is-there-really-any-debate-any-longe/240007457) + + +**Side readings**: +* [Dev opinion][Programmers Without TDD Will be Unemployable by 2022](http://css.dzone.com/articles/programmers-without-tdd-will) + + +##### Exercise: Add a method in TDD fashion + +* Add the following method to the `Name` class. Use the TDD technique to add the method. Commit after each step. + + ```java + /** + * Returns true of the other name is very similar to this name. + * Two names are considered similar if ... + */ + public boolean isSimilar(Name other) { ... } + ``` + +* You may define 'similar' as you see fit. + Make sure the definition covers scenarios where other name is `null`, in a different case, in a different order, + is a subset/superset, etc.
+ e.g. `John K Smith` `John K SMITh` `John Smith` `Smith, John K` + +------------------------------------------------------------------------------------------------------ + +### Work in a 2KLoC code base `[LO-2KLoC]` + +##### Exercise: Enhance AddressBook + +Add a feature to AddressBook. Here are some suggestions. +* An Edit command +* A Sort command +* List all persons automatically after an add or delete command +* Any other enhancement that you might see fit diff --git a/doc/UserGuide.md b/doc/UserGuide.md new file mode 100644 index 000000000..dbcbcab93 --- /dev/null +++ b/doc/UserGuide.md @@ -0,0 +1,117 @@ +# User Guide + +This product is not meant for end-users and therefore there is no user-friendly installer. +Please refer to the [Setting up](DeveloperGuide.md#setting-up) section to learn how to set up the project. + +#### Starting the program + +**Using Eclipse** + +1. Find the project in the `Project Explorer` or `Package Explorer` (usually located at the left side) +2. Right click on the project +3. Click `Run As` > `Java Application` +4. The GUI should appear in a few seconds. + +### Viewing help : `help` +Format: `help` + +> Help is also shown if you enter an incorrect command e.g. `abcd` + +### Adding a person: `add` +Adds a person to the address book
+Format: `add NAME [p]p/PHONE_NUMBER [p]e/EMAIL [p]a/ADDRESS [t/TAG]...` + +> Words in `UPPER_CASE` are the parameters, items in `SQUARE_BRACKETS` are optional, +> items with `...` after them can have multiple instances. Order of parameters are fixed. +> +> Put a `p` before the phone / email / address prefixes to mark it as `private`. `private` details can only +> be seen using the `viewall` command. +> +> Persons can have any number of tags (including 0) + +Examples: +* `add John Doe p/98765432 e/johnd@gmail.com a/John street, block 123, #01-01` +* `add Betsy Crowe pp/1234567 e/betsycrowe@gmail.com pa/Newgate Prison t/criminal t/friend` + +### Listing all persons : `list` +Shows a list of all persons in the address book.
+Format: `list` + +### Finding all persons containing any keyword in their name: `find` +Finds persons whose names contain any of the given keywords.
+Format: `find KEYWORD [MORE_KEYWORDS]` + +> The search is case sensitive, the order of the keywords does not matter, only the name is searched, +and persons matching at least one keyword will be returned (i.e. `OR` search). + +Examples: +* `find John`
+ Returns `John Doe` but not `john` +* `find Betsy Tim John`
+ Returns Any person having names `Betsy`, `Tim`, or `John` + +### Deleting a person : `delete` +Deletes the specified person from the address book. Irreversible.
+Format: `delete INDEX` + +> Deletes the person at the specified `INDEX`. + The index refers to the index number shown in the most recent listing. + +Examples: +* `list`
+ `delete 2`
+ Deletes the 2nd person in the address book. +* `find Betsy`
+ `delete 1`
+ Deletes the 1st person in the results of the `find` command. + +### View non-private details of a person : `view` +Displays the non-private details of the specified person.
+Format: `view INDEX` + +> Views the person at the specified `INDEX`. + The index refers to the index number shown in the most recent listing. + +Examples: +* `list`
+ `view 2`
+ Views the 2nd person in the address book. +* `find Betsy`
+ `view 1`
+ Views the 1st person in the results of the `find` command. + +### View all details of a person : `viewall` +Displays all details (including private details) of the specified person.
+Format: `viewall INDEX` + +> Views all details of the person at the specified `INDEX`. + The index refers to the index number shown in the most recent listing. + +Examples: +* `list`
+ `viewall 2`
+ Views all details of the 2nd person in the address book. +* `find Betsy`
+ `viewall 1`
+ Views all details of the 1st person in the results of the `find` command. + +### Clearing all entries : `clear` +Clears all entries from the address book.
+Format: `clear` + +#### Exiting the program : `exit` +Exits the program.
+Format: `exit` + +#### Saving the data +Address book data are saved in the hard disk automatically after any command that changes the data.
+There is no need to save manually. + +#### Changing the save location +Address book data are saved in a file called `addressbook.txt` in the project root folder. +You can change the location by specifying the file path as a program argument.
+ +> The file name must end in `.txt` for it to be acceptable to the program. +> +> When running the program inside Eclipse, you can + [set command line parameters before running the program](http://stackoverflow.com/questions/7574543/how-to-pass-console-arguments-to-application-in-eclipse). diff --git a/doc/images/mainClassDiagram.png b/doc/images/mainClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..9d03acd97581a025ca66d42fe8ea03078faee678 GIT binary patch literal 65491 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 literal 0 HcmV?d00001