From 8abc2d30a9958b89a8e833d65e0423487c832cf9 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Thu, 3 Feb 2022 16:23:36 +0100 Subject: [PATCH] implementation phonebook class --- d00/ex01/Contact.class.cpp | 46 +++++++++++++------------------- d00/ex01/Contact.class.hpp | 6 +++++ d00/ex01/PhoneBook.class.cpp | 21 ++++++++++++--- d00/ex01/builds/Contact.class.o | Bin 7320 -> 8944 bytes d00/ex01/builds/main.o | Bin 6160 -> 4160 bytes d00/ex01/main.cpp | 33 +++++++++-------------- d00/ex01/phonebook | Bin 19392 -> 19888 bytes 7 files changed, 54 insertions(+), 52 deletions(-) diff --git a/d00/ex01/Contact.class.cpp b/d00/ex01/Contact.class.cpp index 6a64ef2..c1ffbe1 100644 --- a/d00/ex01/Contact.class.cpp +++ b/d00/ex01/Contact.class.cpp @@ -1,6 +1,11 @@ #include "Contact.class.hpp" Contact::Contact( void ) { + this->add_first("NOT DEFINED"); + this->add_last("NOT DEFINED"); + this->add_nick("NOT DEFINED"); + this->add_num("NOT DEFINED"); + this->add_secret("NOT DEFINED"); return; } @@ -8,32 +13,17 @@ Contact::~Contact( void ) { return; } -void Contact::add_first( std::string str ) { - this->first.assign(str); - return; -} -void Contact::add_last( std::string str ) { - this->last.assign(str); - return; -} -void Contact::add_nick( std::string str ) { - this->nick.assign(str); - return; -} -void Contact::add_num( std::string str ) { - this->num.assign(str); - return; -} -void Contact::add_secret( std::string str ) { - this->secret.assign(str); - return; -} +// ADD +void Contact::add_first( std::string str ) {this->first.assign(str);} +void Contact::add_last( std::string str ) {this->last.assign(str);} +void Contact::add_nick( std::string str ) {this->nick.assign(str);} +void Contact::add_num( std::string str ) {this->num.assign(str);} +void Contact::add_secret( std::string str ) {this->secret.assign(str);} + +// GET +std::string Contact::get_first( void ) {return first;} +std::string Contact::get_last( void ) {return last;} +std::string Contact::get_nick( void ) {return nick;} +std::string Contact::get_num( void ) {return num;} +std::string Contact::get_secret( void ) {return secret;} -void Contact::print_contact( void ) { - std::cout << "FIRST NAME : " << this->first << std::endl; - std::cout << "LAST NAME : " << this->last << std::endl; - std::cout << "NICKNAME : " << this->nick << std::endl; - std::cout << "NUMBER : " << this->num << std::endl; - std::cout << "SECRET : " << this->secret << std::endl; - return; -} diff --git a/d00/ex01/Contact.class.hpp b/d00/ex01/Contact.class.hpp index 871ff8a..e27aabd 100644 --- a/d00/ex01/Contact.class.hpp +++ b/d00/ex01/Contact.class.hpp @@ -17,6 +17,12 @@ public: void add_num(std::string str); void add_secret(std::string str); + std::string get_first(); + std::string get_last (); + std::string get_nick (); + std::string get_num(); + std::string get_secret(); + void print_contact(); private: diff --git a/d00/ex01/PhoneBook.class.cpp b/d00/ex01/PhoneBook.class.cpp index f1dc82f..82bbba2 100644 --- a/d00/ex01/PhoneBook.class.cpp +++ b/d00/ex01/PhoneBook.class.cpp @@ -1,13 +1,26 @@ #include "PhoneBook.class.hpp" +#include "Contact.class.hpp" PhoneBook::PhoneBook( void ) { - return; - } PhoneBook::~PhoneBook( void ) { - return; - } + + /* + Contact new_contact; + + new_contact.add_first(name); + new_contact.add_last("lamy"); + new_contact.add_nick("hugonosaure"); + new_contact.add_num("0123456789"); + new_contact.add_secret("je suis un dino"); + + std::cout << "FIRST NAME : " << new_contact.get_first() << std::endl; + std::cout << "LAST NAME : " << new_contact.get_last() << std::endl; + std::cout << "NICKNAME : " << new_contact.get_nick() << std::endl; + std::cout << "NUMBER : " << new_contact.get_num() << std::endl; + std::cout << "SECRET : " << new_contact.get_secret() << std::endl; + */ diff --git a/d00/ex01/builds/Contact.class.o b/d00/ex01/builds/Contact.class.o index b59b4701d2d0698dae7ffe371cfd654b32053cfe..ad9941f1fc31a20b35ed166d0f6fd31771fe06ce 100644 GIT binary patch literal 8944 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 bhW;pe{l5c$twd>Os*O9P78d;~&Hw)ZsirVD literal 7320 zcmb_geQX>@6`%FxoR+4Io2L1oZM?OUHqiLwb4=~DsGQ?mawj{k<+D**u*U24#=ho! zXKwf0OQ^xceDtso7UB>7D5!`JRf0;DkU&DHNtF=iKLQd`K!7ZvN{JMKiv$W%gn4gw z-rc+LZBbI5G&?iD_w}1MvmbX~Ob#AzG7Ldti04FYMyL?q* z%|xoQa4WS8t+H?}Rrzi4I&w|*HC3aXC@YohwBrIzYev%CPv>O>H-HK4gxN3*7GCp8o=aM*}* zZZJDDutT`cu4hvy0K^Sb!M;~&>5{2c8qWdL5h<(400=6~T9AxG^@UOArG@H2Xi2kKv4T?Dqwks4XZo6Gx-VhBy^{-4HKD-!jBI#&h3nGHx4>h}z?8 zBXY!u?TL1ak4GJmj=t7pd?xx0Lo6B5ONRKdfxu6UE+PJG?1AAw>wJmMuus{)98ZsA zM$MtVlS%U#Qw;X8$xym~fD}VxCyypa&?J-WA4!hlh{@PwDesj`J7?vm&3UKjW(#>U z-WBVNb#@#s`O5egx?t8F>jt--%GEeGB8+m2@yNEV_pHDJ`cc5Kq4eUV?}3)DHuc}% z?1BMIQTIv2L7*lz{ikdC&ms=eiWl;Kv8I0oagZ?m>w!8{|0|_$!=B=g*W&+4=@aX@u&tA12sPc0>FvIG`9!B?!{Dt+^$z z8AKgO%O<KYU`%qEpj+3*s~Z>x9Dn8o+o6 za6^2gYK^>5#+7|AQ)fa=A`q#OM1rbpQbii@M574H%bg;E*wxS|q=fQrk{z(#9l+;p zMX60$V2}8k!u>M=m{j&F3ir<<;8$R~(SBIN-&FQ<8or?HI~DHV6AtZMGNMZFrTSbRY<# zzVD_9(55tkq11eC0 z#W7i&VTN-)FR(bA&m^2}E@sd9(3cF_*SM>sJZB^4Fjxp&wVgkk}gb(8Y zWYNFY@HvIQq2VhEzo6l7D|}7E*A(s(2OUm1|EI8EAh;(__@m&GP&nFCO;D3&_Wav+ zMzc57{BxRpXAoXAw?EOgzje>!=I(u4wnYy-CSpY=XT`GltS7Bv(K;*Siy7~T=M-nN zdCPO=VLsH;U&wow?Zpqz6|;Fy+QBqgr##kGKkrxbjMtkjxN_2Ro$fTGITo+Cqj|>b zkub3@YR~ zWzVlow_PZCB4!t6XPrDiz}b>esd6^Z5B5r#Enq=?U0F`&3X@h&&cgzHG&bqFs_Ymv z=6Y7qE6s`6bg=-PJTdtE(Y`?`-O{8?OI7+9{1A2Bm^}w}`GV)fP7IB8fTw*%F_?6w zvw3M-o;@RCx!nA$w5F!uSL-xS1!VE}ESTkTvbx7Yj^$s@=BMO{1W7(?tuW zQck%AIb-Fga-f^GZRwP4XU>zJH39(GTlLlLe5PNA0NpS zGBQca3O#%c7N-dH$dQ3?K9CFwFdCOh%u&6yj=*lo)7hfyCBuC~$<&4F#ZYisK76Ej zCx&tzyXbuQU_BTsUz+{@tS_In&)i+46aD>l2l%kikvQA|g(=Ik@QB7^akvAf%VjwS ze*zWqRxazEmGksGRgcxX?#{u3UVQ@8#W;mO=s=$F|Bnd9cvX+}DsT`0#OOUwii8@N z_yT64|MqGJXU)X7UQ-_nr&Ruj0Ht>r8sIlM%0fu~2^Dl8Fsokm{N<4Ry~=P!d18JH zN$+~f-wC8}{m6~WPgVXL2VtzQ75Q~sKn z_@46Daq=U4FYFs&^w~(TctiQWra2IQGTaINjn?0y4kfM+1=o)yA%9x`??E3K+$ex* l5n5GJ>iMC{==-Bmqa(fq`L(0x$LLk(|4p^A=+~(J{{_1^YO(+T diff --git a/d00/ex01/builds/main.o b/d00/ex01/builds/main.o index c06f7641bccbf8c8ccad96bd215c00b245af5ebe..e2dd9a34a02d049a2887a4fec82fb3f4212af79e 100644 GIT binary patch literal 4160 zcmb_e+iM(E7(bis)m~ED^qSVLMG%D!*)%m#ifm1`-H=TU*~EuRIh~!1n<2Y1>&|St zsZ`M!>LSAEH<>Q{A=B0}qmnp3G@$bE+%qA2HXcOSm0 zRQNyohBBPHEtZpq5&=z>ltf7P8F84*s9y5QC3{M7R* zTBMsU*4?0r}D`Wcoe$obv0dninu8E72BGK59=-s+; z(+%3lgM_0&hR~hdzT?BL;cXjyB9IE(3E(7Zi`jmvWrrM&rK#gyaWm z>oDLLG{jj#p3T($Nk)jcPCQwTb6!^IHpF3ZocLYjk{x|_$`LB19sXqp{9|%!$A7H@9(2Hu zbil_u)cK$TzuuwF#SZw+4srhIkoQx#KqVXi}*d%&rtxQx+xYZvD& z;_r-{6P$Gj|L$<^w^MscR{`WX7)fvvF-Mjc^#J_c)R>>vIQXs8D+Klt0{&KN%%28G z0`4v~3cIs<%yHlck>N+h*-K-NgYy6ZpXUO70UZhaw^3vMX8=incT;2hD}W@xu_ugw z3y=i(K5C5fFNl_P)!l%Y5b&`N%*R?mz<*Ya!tSsh$K$*d!SO(_^y>lQ@2AG``6vKC z5WzRn7y^6`HRc0@ATKx>YLJxbaW{pyR#)tdXS88Xf3g02PXoG)js$#OE9gyhB;dDx z1wyRfzx&|Uz1w>B9oUoHvaWaME@9N{vS~Q36G*dGGZ%zBTL@ka>{`Wf&A^@~{Y)Vk zay(xaP2V0ECFV#vtMNf8twtlAPWO}1v7{f=9Je%T6@qlynl)=OsF_aSk6PJ+NnN(( zxjN$Te~zd;!$|~oBT(fJSYAC4hUHZ%wo4GzXiAz)!wK#AAt@aXb5^#7ES0^YS(fuu zutJTZ@9UL8P{R+*T2QYFqg3e)Ij#UA4A%>6 zMlmAw#h+P&boGjh`Q z>lIr&*t7DTnn|jZGrlKhO?ReDwvuH@yJ6YYKn7-!5ENJTN7wF5c9O7T;r@BFfwoy0 zwWegYa9mD|S=j%vLhx@ldXN^sYS!#5LeTovs0jKlRPaS912)y!?x3_QXG%`>Q9-Xr zR8#QEes<#2WWg)Qtco>QvV*eY+U>%H=PoiuM^9159F&uEzB^2>Fd%6arqVK-6{m-X zS1o9o*58{k0~51L8);hqQllZO^dHP~&9W0L$oW3?Bm5san||QxFHS7hFZ$v+A2Z^< ziOM}vfJN^J*fZ!z_?-&1wQt)UGT?5DO9p?PNrrSnyfL_o_|Cyy4oQ){U48|UeN3@h zUHonBCFgee8+t-Fv@7z17tjAt=SOW($)hNelu`MkPM~Ys6ErV*Z=-{_{aYe#|{S|2^anEOt!9dpf`VtdtPfPmm)p zeixa@{`?*@&i?$xHsOCyJU`Y2!u5vQS{*cAOXlD^r037)4D-ica6HC;B@8imooJ}! zrp|9LpuZYcK7igPfUzj`PCJkYadfn6hx3}C`cV% z2cTmL@?j8Uq6*E-B2Pg+BRmwO4zB~yF$FmUJXEr?3eC(SPeG0l9tu*2*8%95f=mMs zLAF<+nOWp1$m4{Eg4E%406L~1)h1A08Z^gD>TLSKcd&DIoJd#Rs(hHP?7a?ls`AJ+ z@SIzNy;S)qT{)Sq998&U#G$=vTY-|S_QTvA;Brw8Yqy;o{z1jewJg?Q?G}^6>ORlC zs%l$A$+g=_4y$`QXD!xY?beaQ>i*4L)X*XSZY!I>aOODfPq6WoQ)&crMe2NbgQP&E zDyCJ(;bi()jmnM_%T_zLRT2kt*2mYaG$6SlpAMKoO6-T0R;D3yE9BUPSMLR!g6|+Vh`1g&DnKtpQ(fM4P z_|u33|8y+=RhxJ|wnd0Dv5K+pyvUzzSBl!>a72}$9uuWZUS!SOlt9kSduFLjY#AgxQR1B>O_I2nEt3|?i=i~gp(4CNT zOq`hys~l5dTf?wOgMJh&2K0=o0r(i;5ph9PA4El+TAwD=nrOiQPmRb3s;ZkZM14M} zWU#p0$Ou-LL*g~ar@aOVgfAeKM)=h*-3Y%H)~6A^uZf>R6a7>Z{gX}N-q{5IvwhU0gg@bwzUPG9JDAyQ2L5~ja{;T;Tj8Gb3lA7J>!41bE@ zJfCMZPWiNG`9-GB^Ld-$%Ydi4K4v)2=X-|pd~m;za2a_%2COp@IUGku=V6AWJpdX&!rhVy(5Go0u17Q=ZyA84HN zxk_at#OF+(=W~YPah6Y1_dc#C&!>~&JfGDJU&8$KF&uwVP`y(O=l-8$IQRc9!@2%9 z4CneQ)%zvrAFiKdIM>fIoa;ZtaISxx;avY?hI9Sj7|z!rjtdNg1D;j1KFb-tlHv4* z!foU4Ui_{hq1g)fkRQwe3H2{iT<}<}`LLfg42Qc=m3lOX{_&1M{`K;!xK}W|jp^eV zNctL9`Jm2#2DT=g0ek=vKAXlbqzN~#|e2H;k>`IX++F3KAzDj%)h%B*DlXsz|F1604F1oN6jHCRTca`DXnrjnN0S8rDI9Y2iKV) zYt&CBtqHRz{i5mk9@r>DW?36_iYOX9Z+5DK9m6MQ(LK9=2rxy!dB|P6O`lW(MWQutha zcSXo;?!AsXF1OlVDQ9Z~dqVCinjlI!?&al#>5gY%E@N5JE?aiNm%cfM2&^@5Fiz!g zgdHAT^nSq7j%>EJZXWHGyhYYS4RV)L^!(I+aGK(-`q5R^JO`eV-RR1*t)l(^)9OQC zZYg(e>T?}y_kZ)WX>hP+Ta(ZQ`Ek=XaeI@ABy>ThT$Tm+>6LfQtm99~$!>Kf{GZ3K zaDeKgy~a(KK9GM2P2zdW=`;w4@v{o&2k-$z_sBr1zr%h96Z%y_Drzj~m&1sj#CHy! ziFEeiI|8W}f;Wo4Q`>D0)T+<$9XbKVjpDzFmjIxB!5}a`>V@NftK(yCoL(t1JhPJ@K;@jXiRG(Mx_w}ukv))!s+{eV7@!u8Km{UQ4iyxaj%hhcoI zJzW19utzM^CgMgNAEs+4EWZzih|&9*l*v9xfF8-7MqDOLH5|X7<5RxmCM=^LT1(Qw zaaz|;eTMbpUXVTEKLdt7Xq|vnRMznm1n80SrqKq5c&_?_w&xh~Vcquv`$A~@#35~e zFyw&pC-@}TH>!WXuD`4mv3~3wvZwkV1AAk59{*W14WBBt>+^&94egP_`JV+KoIC1m Q*ZsdjZ!FqjFNfp*12&6jcmMzZ diff --git a/d00/ex01/main.cpp b/d00/ex01/main.cpp index 2565c6f..d9013eb 100644 --- a/d00/ex01/main.cpp +++ b/d00/ex01/main.cpp @@ -1,34 +1,27 @@ #include "PhoneBook.class.hpp" -#include "Contact.class.hpp" # include # include int main() { - Contact new_contact; - new_contact.add_first("hugo"); - new_contact.add_last("lamy"); - new_contact.add_nick("hugonosaure"); - new_contact.add_num("0123456789"); - new_contact.add_secret("je suis un dino"); - new_contact.print_contact(); + std::string cmd; + + while (1) + { + std::getline(std::cin, cmd); + if (cmd.compare("ADD") == 0) + std::cout << "it works !" << std::endl; + } + + return 0; } /* * class PhoneBook : - * add_contact (->Contact.create_contact) - * search_contact - * print_phonebook (->Contact.get_index/name/last/nick) - * index_print (Contact.print_contact) + * add_contact + * print_phonebook + * search_by_index * exit - * - * class Contact : - * create_contact (first ; last ; nick ; num ; secret) - * get_first - * get_last - * get_nick - * print_contact - * */ diff --git a/d00/ex01/phonebook b/d00/ex01/phonebook index 92a8f51a7f275c5fffea4f94aa8d287274bc356c..d87fd625b389747b292509c1b36912e26b816374 100755 GIT binary patch literal 19888 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 NAxq-|mw}5F{|oYVk!An@ literal 19392 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