From af7f633095b0d5e9ee5ef364d5ea6d54b5a7baac Mon Sep 17 00:00:00 2001 From: "fabien.delecroix" <fabien.delecroix@univ-lille.fr> Date: Thu, 26 Sep 2024 07:28:03 +0200 Subject: [PATCH] partie 4 --- README.md | 41 +++++++++++++++--- .../iut/r304/{tp4 => tp3}/q1/Observable.class | Bin 757 -> 757 bytes .../univlille/iut/r304/tp3/q1/Observer.class | Bin 0 -> 263 bytes .../q2 => tp3/q3}/ConnectableProperty.class | Bin 678 -> 678 bytes .../q2 => tp3/q3}/ObservableProperty.class | Bin 806 -> 806 bytes .../univlille/iut/r304/tp4/q1/Observer.class | Bin 263 -> 0 bytes .../iut/r304/tp3/q1/ObserverTestStub.class | Bin 0 -> 1415 bytes .../iut/r304/tp3/q1/TestQ1$MockSubject.class | Bin 0 -> 681 bytes .../iut/r304/{tp4 => tp3}/q1/TestQ1.class | Bin 2465 -> 2471 bytes .../iut/r304/{tp4/q2 => tp3/q3}/TestQ1.class | Bin 1708 -> 1714 bytes .../iut/r304/{tp4/q2 => tp3/q3}/TestQ2.class | Bin 2485 -> 2485 bytes .../iut/r304/tp4/ObserverTestStub.class | Bin 1409 -> 0 bytes .../iut/r304/tp4/q1/TestQ1$MockSubject.class | Bin 681 -> 0 bytes 13 files changed, 34 insertions(+), 7 deletions(-) rename out/production/main/fr/univlille/iut/r304/{tp4 => tp3}/q1/Observable.class (67%) create mode 100644 out/production/main/fr/univlille/iut/r304/tp3/q1/Observer.class rename out/production/main/fr/univlille/iut/r304/{tp4/q2 => tp3/q3}/ConnectableProperty.class (62%) rename out/production/main/fr/univlille/iut/r304/{tp4/q2 => tp3/q3}/ObservableProperty.class (72%) delete mode 100644 out/production/main/fr/univlille/iut/r304/tp4/q1/Observer.class create mode 100644 out/test/test/fr/univlille/iut/r304/tp3/q1/ObserverTestStub.class create mode 100644 out/test/test/fr/univlille/iut/r304/tp3/q1/TestQ1$MockSubject.class rename out/test/test/fr/univlille/iut/r304/{tp4 => tp3}/q1/TestQ1.class (60%) rename out/test/test/fr/univlille/iut/r304/{tp4/q2 => tp3/q3}/TestQ1.class (76%) rename out/test/test/fr/univlille/iut/r304/{tp4/q2 => tp3/q3}/TestQ2.class (88%) delete mode 100644 out/test/test/fr/univlille/iut/r304/tp4/ObserverTestStub.class delete mode 100644 out/test/test/fr/univlille/iut/r304/tp4/q1/TestQ1$MockSubject.class diff --git a/README.md b/README.md index e4da3cf..908fa1c 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ classDiagram Objectif : +isDone() boolean ``` +Implémentez ces classes dans un sous-paquetage *q2*. On devra par exemple pouvoir dérouler le scénario suivant (pour y parvenir quelques questions ci-dessous pour vous guider) : <pre> @@ -156,33 +157,38 @@ La monodirectionnelle propage les changement d’une propriété (« source » Ce sont des mécanismes pratiques mais qui obligent à importer JavaFX ce qui n’est pas toujours souhaitable dans un projet. Vous devez réimplémenter ces mécanismes des propriétés. -**Q2.1** Rendez la classe ObservableProperty observable. +Rendez la classe ObservableProperty observable. Outre le fait qu'elle soit observable (attach, detach), cette classe doit avoir une propriété à laquelle on peut accéder : ```java package fr.univlille.iut.r304.tp3.q3; -public class ObservableProperty +public class ObservableProperty { -public Object getValue() + public Object getValue() { + + } -public void setValue(Object val) + public void setValue(Object val) { + + } ... +} ``` Bien sûr, le fait de changer la valeur de la propriété doit être notifié aux observateurs de celle-ci. Notez que par simplicité, on utilisera une propriété de type `Object` (donc n'importe quel type). -Vous pouvez aussi définir une classe générique avec un type paramétrique pour typer cette propriété. +On aurait aussi pu définir une classe générique avec un type paramétrique pour typer cette propriété. Vérifier la validité de votre implémentation en exécutant les tests associés à cette question. -**Q2.2** Créez la classe ConnectableProperty qui puisse se connecter de façon mono ou bi-directionnelle : +Implémentez la classe ConnectableProperty qui puisse se connecter de façon mono ou bi-directionnelle : ```java package fr.univlille.iut.r304.tp3.q3; -public class ConnectableProperty extends ObservableProperty +public class ConnectableProperty extends ObservableProperty { public void connectTo(ConnectableProperty other) { } @@ -194,3 +200,24 @@ public void unconnectFrom(ConnectableProperty other) { } ... ``` +## Partie 4 : Application avec la conversion de devises + +On souhaite réaliser une application de portefeuille gérant la conversion dans différentes monnaies. +Dans un premier temps, on va disposer d'un montant en euros et souhaiter l'afficher aussi en dollars. + +Dans un sous-paquetage *q4*, implémentez une classe **Devise** héritant de *ConnectableProperty* de manière à pouvoir instancier deux devises différentes, l'une correspondant aux euros, l'autre aux dollars. +Les valeurs n'étant pas les mêmes dans les deux monnaies, la méthode *void update(Subject other, Object data)* va être à redéfinir de manière à opérer la conversion. + +Une fois la classe implémentée, réalisez un *Main* avec 2 devises synchronisées, l'ajoutant ou le retrait d'un montant dans l'une se répercutant automatiquement sur l'autre. + +Voici un exemple de scénario : +``` +Ajout 20$ +18,00 € +20,00 $ +Retrait 11€ +7,00 € +7,78 $ +``` + +Ajoutez une troisième devise et démontrez la validité de votre solution à l'aide de tests. \ No newline at end of file diff --git a/out/production/main/fr/univlille/iut/r304/tp4/q1/Observable.class b/out/production/main/fr/univlille/iut/r304/tp3/q1/Observable.class similarity index 67% rename from out/production/main/fr/univlille/iut/r304/tp4/q1/Observable.class rename to out/production/main/fr/univlille/iut/r304/tp3/q1/Observable.class index 1c4244fded8eba21f7ee2333939fad0bcc10e3d7..f6dccbb84f864223cb8c3aba82ecc451cf307d20 100644 GIT binary patch delta 29 lcmey$`jvG;IHU2zh<HZhi94zpjVGHhnlT!0&Sval1OS~(319#K delta 29 lcmey$`jvG;IHSqLh<HYmi94zpO(vT#nlYMe&Sval1OT0d31k2O diff --git a/out/production/main/fr/univlille/iut/r304/tp3/q1/Observer.class b/out/production/main/fr/univlille/iut/r304/tp3/q1/Observer.class new file mode 100644 index 0000000000000000000000000000000000000000..05a6e1fb90fd9e915e353d4b3a92d1575634a876 GIT binary patch literal 263 zcmX^0Z`VEs1_mbvE_MbcMh4ZiBK^|5%(9%!oSans%+eD5B4Yy+{gMJ>{X#>1|D@v7 zqO#N?b_Nzk27#=^vPAuy#JqHU|D>$c<Pt^(w$g%>#FA7-1|1C_A`D7Q%1O1>3}a-l zBVM@=x~*UXxPtRbi;`2_GILTH8F*pN)B~wyV`N}tU}gXTCKg5pRt7c(kn33)*cliY N7#TPi7#NrsI025^N9O<l literal 0 HcmV?d00001 diff --git a/out/production/main/fr/univlille/iut/r304/tp4/q2/ConnectableProperty.class b/out/production/main/fr/univlille/iut/r304/tp3/q3/ConnectableProperty.class similarity index 62% rename from out/production/main/fr/univlille/iut/r304/tp4/q2/ConnectableProperty.class rename to out/production/main/fr/univlille/iut/r304/tp3/q3/ConnectableProperty.class index ad0999eea2d7db11370cd2eb338c9eea4e64370b..395e282acbcd42d513c8f89c7771314ed4b20d29 100644 GIT binary patch delta 40 jcmZ3+x{PsR^Yq47jB2MAr23ZWm{f$7bvjE#%{^TP|p delta 40 jcmZ3+x{PsQg_q0vM$2MAr23ZWm{f$7bvjE#%{^Un*# diff --git a/out/production/main/fr/univlille/iut/r304/tp4/q2/ObservableProperty.class b/out/production/main/fr/univlille/iut/r304/tp3/q3/ObservableProperty.class similarity index 72% rename from out/production/main/fr/univlille/iut/r304/tp4/q2/ObservableProperty.class rename to out/production/main/fr/univlille/iut/r304/tp3/q3/ObservableProperty.class index 5033e4acddb0b10a48822592ed62737f2b8e5f20..56d4ad73cdc0228b9b1816323930bbaca3c70368 100644 GIT binary patch delta 35 ncmZ3+wv25;IE%4<q4C7%6bOBI2BY!h7)CQj<IR&9Co=*7$!H4s delta 35 ncmZ3+wv25;IE#sXq0z+X6bOBI2BXR37)CQjlg*PECo=*7$$$#` diff --git a/out/production/main/fr/univlille/iut/r304/tp4/q1/Observer.class b/out/production/main/fr/univlille/iut/r304/tp4/q1/Observer.class deleted file mode 100644 index bdbc554d07a2311a0819cfaf6d9318e35efccdad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmX^0Z`VEs1_mbvE_MbcMh4ZiBK^|5%(9%!oSans%+eD5B4Yy+{gMI`{X#>1|D@v7 zqO#N?b_Nzk27#=^vPAuy#JqHU|D>$c<Pt^(w$g%>#FA7-1|1C_A`D7Q%1O1>3}a-l zBVM@=x~*UXxPtRbi;`2_GILTH8F*pN)B~wyV`N}tU}gXTCKg5pRt7c(kn33)*cliY N7#TPi7#NrsI02BiN9q6o diff --git a/out/test/test/fr/univlille/iut/r304/tp3/q1/ObserverTestStub.class b/out/test/test/fr/univlille/iut/r304/tp3/q1/ObserverTestStub.class new file mode 100644 index 0000000000000000000000000000000000000000..a28ffc964afc6d0a6bb8067f988a0753bc43e95b GIT binary patch literal 1415 zcmX^0Z`VEs1_mbvGcE=u24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SP6iGJPId+^9tLg(9!3V;v?Be|yv(wk%$%H5{mjx5{UT!n6aA6`WBo!y zegCB5)S|M~qL9?$lHiikBt{1A^2B1l{F2PH%+wS{2F56maeO=s{0st&44lRJxv61^ zIi;zL42+)a3_^?yf(X}m=9Q$TrxtNB2r`K9Fo-gUF*0yu=9NIzGizviaxq9SNU}3X z@i0g;$S^Xf6XCSPq?}Yn2DX&clEmZ;Mg}bnA0jlR7FlbCu`|dqGN=-znvsDwwW1(3 zxg<3O>RMjs{Ji3lM5ybT85kI}7#Ucc^HWk88TfrN^HTjvbCXhwLLkl)^2tw5%n3^@ z$^`MDf-EH&nZ=9@`ouXH76I0b3>@jHus{<?Pc3mpbs0x7T$V+{Q!|W_fvvP4C9x!x zkwJ&3zyUeY8l;b<xHKt?kwKFf2ZA**GT0GsgAXEMK$0oM&XmNGL`DW7Oj$+--r$nN z<ZR!>0%!m-YiLF>GH?awmlh?bx@CgWfhc-<)dShWpvb_%z{J4FAj`nazyeD43=9k` zpd`z{z#zjQ&mh3S$e_T$z`(?y$iU9P2+Btcj0{Q)3=FPdeGClzTH6^IwV1auu!9KR zjbO#f3=9lH3@i)`418eYI2i;O_!tBkR2Uc-co-NN7#R2&R2kG57#J8C)EUH}M(Q&# zg5_AXwlMInfg8jI78F6!%nH}60oSYx)yyoQg|1ZsNh>p4t0sdM)LuIVCI%)31_m}Q z>8%V%J^&RTpkQESkOi9{22lkyfq{Vy98e%PYcuFzn8mV{fgKSV5VI5*SQ!*?n5E00 z2lj$C11KCoL0kqZz8Dx7<h4L%Y3Uqb5ZuNfyp@3$6g~o43m7=GwYD*cgDhcY00p@i z11kdqg9-yEd;}QO7$h0g8RQr=!4@hofbya|-0|`Z5DOU?<QWVY3>lahj2IXgm>C%5 m7#JD28H}O+0l5VfU!XW)M-NyXu*r}J1=$ISP!n*>nF0U@4h;+d literal 0 HcmV?d00001 diff --git a/out/test/test/fr/univlille/iut/r304/tp3/q1/TestQ1$MockSubject.class b/out/test/test/fr/univlille/iut/r304/tp3/q1/TestQ1$MockSubject.class new file mode 100644 index 0000000000000000000000000000000000000000..d726b5639e54ddb41d3775227b34ce62123cd72e GIT binary patch literal 681 zcmX^0Z`VEs1_mbvWiAFL24;2!79Ivx1~x_p^|T`W(!9*FoXnh@RQ=4-68$1$0~7s{ z0%QF`Lw*0G;?$zD#H5^5Mg}&U%)HDJJ4Oa(4b3nv1`Y;Jb_OmU25tr(Mh3yG#Ii*F zoW#6zeb2m-)b!LMMh5n>#GKMp|1?GhF%3^m9}E@NTnu~+{Ok+@JPd*iLW~UhcwG{b zT3ixnsN$QSoE==6l$DxX!pOj%mtT^ZRta%rYEdyGgQy0QJ^o;2)|z3A3@pz1DXEMM z{63j^seYxoNvTC45KjsD<R>TQge4Ybg7{EDmXeIjVnzl-9}-<;&B(wFaZ(t_>x>L6 z8lE8A88aCf7(E#oxPtRbi;`2_GC{$~4e^m4C|npBIQ&wJOFZ(6OV}9{7#Wm_u$Ym7 z$1^W4wa7UqvA8(3n2~`SDQp-N8Tc5O7(jrDfdv%P42%rI3=9nV42%qn3=9mcTH6^I zH!?6VFfoWQFfg!z1^F0685kINz-(3qF$Qr41_nk32?j~1W=94lu%Vn<(mNQ~w=wV{ z3;?An1_l8J4hBK6Az~1PP(v6PI2oiEq!}0)m>FcimdY~7foXXLMFs{2E(S&hJ_dOP HB?cY<i(i!0 literal 0 HcmV?d00001 diff --git a/out/test/test/fr/univlille/iut/r304/tp4/q1/TestQ1.class b/out/test/test/fr/univlille/iut/r304/tp3/q1/TestQ1.class similarity index 60% rename from out/test/test/fr/univlille/iut/r304/tp4/q1/TestQ1.class rename to out/test/test/fr/univlille/iut/r304/tp3/q1/TestQ1.class index 96d285541ac9cef5378ac6ed300657cc69a0b0a1..9b70a29b761849982c49f89ee428dadff6fdfaaa 100644 GIT binary patch delta 250 zcmZ1|yj*xfIHU2z2xms)iE|7XjVGR!Vbq;yFTrB0UuZa)nNgQff3hK?B!uhDc#zR} zGcS`IBct(V9cEW1M$XAatbUx*4BQMd3}OtjlTWgSaw;;gGbk|#GAK`0XG`E!XW(Yg zU=U)^WRPLdnmmQAPgReBgF&A`fWeSKn!$)cnZcMro56&^h{24(hQXY{nZbg=i@|cT zJA1vLEdw`$9fKHyJ%cQR1A{t)<K*k?3B0Zh+zf6ELJaN<G7KJ*T{y}`eHgeId>O<T w{21gI{24SD0vL=L0w-VKs1glj;ARM8kYosFP-ci=&}N8aFk^_C9M9<l0AUm>j{pDw delta 244 zcmZ23yij;TIHSqL2xmr<iE|7XO(vd|Vbq#vFTrRsnT=7GNyi7m4rDyYXtG(DNsf`x zWU~>oD-$F4<O)_lPFV(S1~~>X2KmY7SwlIM8Q2+A7z7zqC+o5$@M<z}GiWggF=#W$ zFz8I4#nz{4z`(&^$RNOA%plER!l2Ax%An0)#$d!?!C=E+$>7Xj#o)zYJ=vGNUeKO_ zo56uWjKPsXmcfZZoxyqXUG@ZCcLr_-4+bFyPX-wVugP8<<)VHJ+zkE<VhjNcatwhC q8Vo@U#tgxeuW?j~hBI(8L@-D)L^3EdL@{VHL^GH%#7s`*bOHcVODf&~ diff --git a/out/test/test/fr/univlille/iut/r304/tp4/q2/TestQ1.class b/out/test/test/fr/univlille/iut/r304/tp3/q3/TestQ1.class similarity index 76% rename from out/test/test/fr/univlille/iut/r304/tp4/q2/TestQ1.class rename to out/test/test/fr/univlille/iut/r304/tp3/q3/TestQ1.class index 123ebbd8be8230d9ba41d93946ca80ff8c6900c7..c63f32dbf2b562b679837e08411e925fe9c99fb9 100644 GIT binary patch delta 74 zcmZ3(yNP!~IE%4<q4C6M2M9f13qqfjWYnFwQ3Av<oW!Whs6TOoB$%_=gVBSL(RlJi OrsE*K@#Yxj0A>I;=M^#l delta 70 zcmdnQyM}i{IE#sXq0z)>2M9f13qqfjWYn6tQG(HAGBcwtqt0YQMoC7K&3=p?jEp9e Pr!yS~tJ<8z9KZ|!$+;6D diff --git a/out/test/test/fr/univlille/iut/r304/tp4/q2/TestQ2.class b/out/test/test/fr/univlille/iut/r304/tp3/q3/TestQ2.class similarity index 88% rename from out/test/test/fr/univlille/iut/r304/tp4/q2/TestQ2.class rename to out/test/test/fr/univlille/iut/r304/tp3/q3/TestQ2.class index 642e02ee83b5ad7150ba4a96340abf9643665c30..0751e0e46e122f98b0ae37b8c7b6968a9e944091 100644 GIT binary patch delta 50 qcmdlgyj6HYIE%4<q4C6MM+m(@145rU0j4+4VAN-Xuue0*Vgmr0IuJns delta 50 qcmdlgyj6HYIE#sXq0z)>M+m(@145rU0j4+4VAN-Xuue0*Vgmr0Nf1E* diff --git a/out/test/test/fr/univlille/iut/r304/tp4/ObserverTestStub.class b/out/test/test/fr/univlille/iut/r304/tp4/ObserverTestStub.class deleted file mode 100644 index 98f425f29666fde6fccc351ecb81bb2bb7eb8dbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1409 zcmX^0Z`VEs1_mbvGcE=u24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SP6iGJPId+^9tLg(9!3VOv?Be|yv(wk%$%H5{mjx5{UT!n6aA6`6Mg@r z;?$zD)S{5o;*#K!(j-O(?()Q9zx<NSw9M2LMh3<xkXd{@4EziNj0~K``MIfKi8-aI zj0}vP><mJT41x%!c;=O)rl%HhF$gk<@Gyunh%qv7WagDX)iY~odU7#HFi5g9NbxX8 zGsrM9sN;55p&`_1iAg!Bj0|iksU?ZY8H@~C8a_m5N-eV13}a`IV`NYzN;M+`Z)!zB zYH~?x3e>f{&iQ%8C5ceiGczzSXfZOdIOnINGBWV{Wag#%mF6a;7KK2ZC*+f#oR|}q zSd<CkLj_q%GBS%98FcVC7(Mi@85uazQ(++{ke*uNis~$mVz?}ehNos2BLiD$K}upt zDkFmqQ6U3zpEXDyOL1vZ79)cu9@nA7fi)w89q~5!AW{V+fkNy|Ni0cZWDvrXWn|zD zE=f$z_Dw8+h90wqW)vd>S8#r5QF5wVCMXezq6e2A$QA}g1`Y-$21W*124)5pP=aS* zU|<2IR|W<K83uU<0R~0}1qKENCI&?Yb_PaJ4q{+rP-0+Ua0TmQVBpu<&cLX}yp@3+ zMDT6|D^_M;U=U(pVPIeoWME+sV&G&DX5eEGVNhXUVBle3WME+6XHaEOV_;xlWKd@i zgBq#NzzCLO)!M?qy9RC$8(2^rNi!>4vj$wVE>ttKfEKz|X(X-8aIKmQT2OoK7?>EC z7#JAXw4}E(Ao&1Pa4;~)Gq5r!fK3pCsDhfnz`zC$D3F`A8FVnrV%f^TjtC8iS;`Eo z3@SLx(q+&CdqJB46b_&uE&~-@3=9nNS|GEubPg~GZetMM%D@W>9|5fe3>?~8+Ze<_ zmM}Abf?SM&m4Sgloq?4>gF%2nlR=U}i$RV-2W+7N11KZP!yPZr0I?9{K?4Ru1||k0 q1_lOZ21YpsMh0#MW2k>XZUMy?C{EbX16ChwG9*F~abg0FIa2^jzYClI diff --git a/out/test/test/fr/univlille/iut/r304/tp4/q1/TestQ1$MockSubject.class b/out/test/test/fr/univlille/iut/r304/tp4/q1/TestQ1$MockSubject.class deleted file mode 100644 index b2b5928bb29ab21ccd330a1a89368f542a08cd23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 681 zcmX^0Z`VEs1_mbvWiAFL24;2!79Ivx1~x_p^|T`W(!9*FoXnh@RQ=4-68$1$0~7s{ z0u%j0Lw*0G;?$zD#H5^5Mg}&U%)HDJJ4Oa(4b3nv1`Y;Jb_OmU25tr(Mh3yG#Ii*F zoW#6zeb2m-)b!LMMh5n>#GKMp|1?GhF%3^m9}E@NTnu~+{Ok+@JPd*iLW~UhcwG{b zT3ixnsN$QSoE==6l$DxX!pOj%mtT^ZRta%rYEdyGgQy0QJ^o;2)|z3A3@pz1DXEMM z{63j^seYxoNvTC45KjsD<R>TQge4Ybg7{EDmXeIjVnzl-9}-<;&B(wFaZ(t_>x>L6 z8lE8A88aCf7(E#oxPtRbi;`2_GC{$~4e^m4C|npBIQ&wJOFZ(6OV}9{7#Wm_u$Ym7 z$1^W4wa7UqvA8(3n2~`SDQp-N8Tc5O7(jrDfdv%P42%rI3=9nV42%qn3=9mcTH6^I zH!?6VFfoWQFfg!z1qB#H85kINz-(3qF$Qr41_nk32?j~1W=94lu%Vn<(mNQ~w=wV{ z3;?An1_mJp4hCVcAz~1PP(v6PI2oiEq!}0)m>FcimdY~7foXXLMFs{2E(S&hJ_dOP HB?cY<lnj*L -- GitLab