From b4ab0acef3fe89e36cc7ea8696f23b45296d5de5 Mon Sep 17 00:00:00 2001 From: Pablo Date: Sun, 9 Nov 2025 23:04:57 +0100 Subject: [PATCH] =?UTF-8?q?a=C3=B1adido=20parte2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parte2/bin/programa | Bin 0 -> 24072 bytes parte2/include/Cliente.h | 31 +++++++++++ parte2/include/Contrato.h | 33 +++++++++++ parte2/include/ContratoMovil.h | 39 +++++++++++++ parte2/include/ContratoTP.h | 32 +++++++++++ parte2/include/Fecha.h | 31 +++++++++++ parte2/obj/Cliente.o | Bin 0 -> 7392 bytes parte2/obj/Contrato.o | Bin 0 -> 5640 bytes parte2/obj/ContratoMovil.o | Bin 0 -> 8272 bytes parte2/obj/ContratoTP.o | Bin 0 -> 1704 bytes parte2/obj/Fecha.o | Bin 0 -> 5728 bytes parte2/src/Cliente.cpp | 58 +++++++++++++++++++ parte2/src/Contrato.cpp | 28 ++++++++++ parte2/src/ContratoMovil.cpp | 53 ++++++++++++++++++ parte2/src/ContratoTP.cpp | 14 +++++ parte2/src/Fecha.cpp | 99 +++++++++++++++++++++++++++++++++ parte2/src/main.cpp | 48 ++++++++++++++++ 17 files changed, 466 insertions(+) create mode 100755 parte2/bin/programa create mode 100644 parte2/include/Cliente.h create mode 100644 parte2/include/Contrato.h create mode 100644 parte2/include/ContratoMovil.h create mode 100644 parte2/include/ContratoTP.h create mode 100644 parte2/include/Fecha.h create mode 100644 parte2/obj/Cliente.o create mode 100644 parte2/obj/Contrato.o create mode 100644 parte2/obj/ContratoMovil.o create mode 100644 parte2/obj/ContratoTP.o create mode 100644 parte2/obj/Fecha.o create mode 100644 parte2/src/Cliente.cpp create mode 100644 parte2/src/Contrato.cpp create mode 100644 parte2/src/ContratoMovil.cpp create mode 100644 parte2/src/ContratoTP.cpp create mode 100644 parte2/src/Fecha.cpp create mode 100644 parte2/src/main.cpp diff --git a/parte2/bin/programa b/parte2/bin/programa new file mode 100755 index 0000000000000000000000000000000000000000..089a3ba4ee6078178c75ead9c2558a8daff764d0 GIT binary patch literal 24072 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 literal 0 HcmV?d00001 diff --git a/parte2/include/Cliente.h b/parte2/include/Cliente.h new file mode 100644 index 0000000..6608169 --- /dev/null +++ b/parte2/include/Cliente.h @@ -0,0 +1,31 @@ +#ifndef CLIENTE_H +#define CLIENTE_H + +#include //cin, cout +#include "Fecha.h" + +using namespace std; +//SI FALTA ALGUN METODO O FUNCION AÑADIRLO... +class Cliente { + long int dni; + char *nombre; + Fecha fechaAlta; +public: + Cliente(long int d, const char *nom, Fecha f); + virtual ~Cliente(); + Cliente& operator=(const Cliente& c); + + long int getDni() const { return this->dni; } + const char* getNombre() const { return nombre; } //VIP devolver un puntero constante para evitar que desde el main() se puede modificar el nombre + Fecha getFecha() const { return fechaAlta; } + + void setNombre(const char *nom); + void setFecha(Fecha f); + + bool operator==(const Cliente& c) const; // if (c1 ===c2) + +}; + +ostream& operator<<(ostream &s, const Cliente &c); //funcion no amiga de la clase + +#endif // CLIENTE_H diff --git a/parte2/include/Contrato.h b/parte2/include/Contrato.h new file mode 100644 index 0000000..ec9730f --- /dev/null +++ b/parte2/include/Contrato.h @@ -0,0 +1,33 @@ +#ifndef CONTRATO_H +#define CONTRATO_H + +#include //cin, cout +#include "Fecha.h" + +using namespace std; + +class Contrato { + static int contador; + const int idContrato; + long int dniContrato; + Fecha fechaContrato; +public: + Contrato(long int dni, Fecha f); + virtual ~Contrato(); +//Contrato(const Contrato& c); //¿es necesario? pensar y reflexionad + +//Contrato& operator=(const Contrato& c); //no es necesario y ademas no puede ser usado porque Contrato tiene un + //atributo constante idContrato que no puede modificarse + //no se puede usar el = en el main con objetos Contrato + + int getIdContrato() const { return this->idContrato; } + long int getDniContrato() const { return this->dniContrato; } + Fecha getFechaContrato() const { return this->fechaContrato; } + void setFechaContrato(Fecha f) { this->fechaContrato=f; } + void setDniContrato(long int dni) { this->dniContrato=dni; } + void ver() const; +}; + +ostream& operator<<(ostream &s, const Contrato &c); + +#endif // CONTRATO_H diff --git a/parte2/include/ContratoMovil.h b/parte2/include/ContratoMovil.h new file mode 100644 index 0000000..4010f7c --- /dev/null +++ b/parte2/include/ContratoMovil.h @@ -0,0 +1,39 @@ +#ifndef CONTRATOMOVIL_H +#define CONTRATOMOVIL_H + +#include //cin, cout +#include "Fecha.h" +#include "Contrato.h" + +using namespace std; + +class ContratoMovil: public Contrato { + float precioMinuto; + int minutosHablados; + char *nacionalidad; +public: + ContratoMovil(long int dni, Fecha f, float p, int m, char *nac); + virtual ~ContratoMovil(); //necesario porque hay un atributo puntero char* + ContratoMovil(const ContratoMovil& c); //necesario porque hay un atributo puntero char* + +//ContratoMovil& operator=(const ContratoMovil& c); //necesario si en el main pensamos usar = para asignar + //si NUNCA vamos a usar = en el main no hace falta implementarlo + //como ContratoMovil hereda un atributo constante idContrato que no puede modificarse + //no podemos usar el = en el main() y por tanto no lo implementamos + + float getPrecioMinuto() const { return this->precioMinuto; } + int getMinutosHablados() const { return this->minutosHablados; } + const char* getNacionalidad() const { return this->nacionalidad; } //IMPORTANTE devuelve un puntero constante + void setPrecioMinuto(float precio) { this->precioMinuto=precio; } + void setMinutosHablados(int m) { this->minutosHablados=m; } + void setNacionalidad(char* nac); + void ver() const; + float factura() const; +}; + +ostream& operator<<(ostream &s, const ContratoMovil &c); + + + + +#endif // CONTRATOMOVIL_H diff --git a/parte2/include/ContratoTP.h b/parte2/include/ContratoTP.h new file mode 100644 index 0000000..1cc9dbf --- /dev/null +++ b/parte2/include/ContratoTP.h @@ -0,0 +1,32 @@ +#ifndef CONTRATOTP_H +#define CONTRATOTP_H + +#include //cin, cout +#include "Fecha.h" +#include "Contrato.h" + +using namespace std; + +class ContratoTP: public Contrato { + static int minutosTP; + static float precioTP; + int minutosHablados; + static const float precioExcesoMinutos; + +public: + ContratoTP(long int dni, Fecha f, int m); + //virtual ~ContratoTP(); //¿es necesario? pensar y reflexionad + //ContratoTP(const ContratoTP& c); //¿es necesario? pensar y reflexionad + //ContratoTP& operator=(const ContratoTP& c); //¿es necesario? pensar y reflexionad + + static int getLimiteMinutos() { return ContratoTP::minutosTP; } + static float getPrecio() { return ContratoTP::precioTP; } + static void setTarifaPlana(int m, float p); //el el .cpp se pone la cabecera sin la palabra static + + //A RELLENAR POR EL ALUMNO... + +}; + +ostream& operator<<(ostream &s, const ContratoTP &c); + +#endif // CONTRATOTP_H diff --git a/parte2/include/Fecha.h b/parte2/include/Fecha.h new file mode 100644 index 0000000..2f09f6b --- /dev/null +++ b/parte2/include/Fecha.h @@ -0,0 +1,31 @@ +#ifndef FECHA_H +#define FECHA_H + +#include //cin, cout + +using namespace std; +//SI FALTA ALGUN METODO O FUNCION AÑADIRLO... +class Fecha { + int dia; + int mes, anio; +public: + Fecha(const int &dia, const int &m, const int &anio); +//virtual ~Fecha(); //NO HACE FALTA +//Fecha(const Fecha &f); //NO HACE FALTA: EL QUE GENERA EL COMPILADOR FUNCIONA BIEN YA QUE NO HAY PUNTEROS + int getDia() const { return dia; } + int getMes() const { return this->mes; } + int getAnio() const { return this->anio; } + void setFecha(const int &dia, const int &mes, const int &a); + void ver() const; + bool bisiesto() const; + Fecha operator++(); //++f + Fecha operator++(int i); //f++ + Fecha operator+(const int &i) const; //f+5 + + friend Fecha operator+(const int &i, const Fecha &f); //const por seguridad y & por velocidad + friend ostream& operator<<(ostream& os, const Fecha& f); +}; + +Fecha operator+(const int &i, const Fecha &f); //const por seguridad y & por velocidad + +#endif // FECHA_H diff --git a/parte2/obj/Cliente.o b/parte2/obj/Cliente.o new file mode 100644 index 0000000000000000000000000000000000000000..93d8e1b90fd04d1fa4a9b2174c52c5d052be2095 GIT binary patch literal 7392 zcmbtYU2I%O6&~C9YnrxBDd4sNHlYbFZC74bshv<&8`<03;3QhSaaBsK_4RsfZ?o$) zyVp^S5;c+&l*=lWpDKY$m4`|dF9>)c5)@f+M3X-CA%Y+x;XtWewMZ`NLmpCv^UXbH z?|6J~6W~bKGxMGEopa{gxihnVHFNO!)|M6}(xRSI;Yd)WMji_LY28h$9csI_y`RS5 zJiu)`w_CY=klQbD`(!uYbUFUXn~p!T;`l?$j(@q|zv%dx zYyQxZa}IRnG%}=b*G*&Sn&W3X8beEdHo*uHvzw?-xF)8mjWB6>>k+gYp)&Vp`>hE?qzSGedOmIax(;U4T(wwAH%`B1iGABp< z^d@J|MQ`&3)cT{}2DuZg3+mcSb-he=T^Ms3 z>vjgqB(t1apeZd#X&fI5m#mtl1afXY@^}0{I{u%7wXREOut@Va*4&MG=6WOZ!Q7I% z=Y2o(fpac%UHkqb4@io>pfTr(hji-R`XHPxre5Rvd;Zja-|-JE`&g*7&hJe1kGhud^-En=Ay&a5W1xZz8k~^^&EfHuPB|o$xca2>GmW=$7NZ zH@uj5Dxngc>Ty)_zm=Z8a;Z4w6_wiG*S9y(x&QFcQB0xBs}c@4gKK zWI#jco&`>VeYmMV80udJP7#MHN*(FWTH zyT$swrhX>mZ{wmpVd}?2{j;q9g{g0SOB*BzdztnBGWD6cw$^`yK2EXCE2d3rvFYPH z>;G=*;p1B9;}YBGg(dH4EYO1%C7`TRpWcqrwW-Zfuxe8{iPuV-KAEF%y>iwl+JY4k zf$NnJf#YOfD{V?vZ>YPEx=~TTP52HYf3bN^Q2kF^icoKX<<1$jg+9m9y z#>4!j_qxWz{PkKT?3eUBXw+G+QNrG(XS>o@5b7zF(0`S>O0DF~kZ%4OgWrh3v28}h z#T5;>onPfsij=Q=ZsBOYFnKgT z?v~)VnNBaI6I5A@UpjI?WeglEMng6VToB7``@UIg`^0{r`_Zs+COq2xvO?;<; zqsHQ=Ck7udaGZ5wKOBSq+Q7{^ykp>I9j+L-S%;4e+^oYRyuV>yxE)A7Pa61k1Am5b zxWis1_WKO`9R{8?aGcU&{{sUz?TeOwqG*|pv47RTvHyzypBwl$4g77!C4U~O-x&60 zKJOX$V}>8xp&?iq-MjoHh2L9Hj}4W?N$%(4k6p@bH*kt6OzguT`5zcCuCtlGd|8H%UE0ljUl` zEz=B)lN%~mPg0CX9UepM3!LzvNfxS=3jL&2$*HPWOwy0lr}Qz$L>zYSo$P;6?qPe`n~uhPV09S(>}DR=+`G?A!8fNE^p@BKX+fg(qzs zKO4cvelI*}zrdVcbfRs`E zH<@pLn>L^RAr{I1)m`#W#qcjOUw+4vnHD?#8-zyXfAuc;zl-62$b7tCQ|$PEAtmD5 z_!d5_o4*&?32aUIkOsioEC(ITPngEkm-Q#`4eB7(w9V%i=ddBxFYb-Pm-Txu1&@l~ z%kk~?BYbwNHV`=~{s_nKGUDS`x9}zYPLAJd1>h}(Itf0p@p z|6ij=_)>qU?bvW}iZ74Xcwu)+FDzoLke;XMYrbi9h@k7Qq^- F{{Vys$mRe5 literal 0 HcmV?d00001 diff --git a/parte2/obj/Contrato.o b/parte2/obj/Contrato.o new file mode 100644 index 0000000000000000000000000000000000000000..e2c80c105f61e151768a08d8eeb1c3ce3f35e4e6 GIT binary patch literal 5640 zcmbtYU1%It6uz7EC$&GOwQB#AZPn6HJ7kkq;}5c$PCMyOSh7h`F|3o#w%vA<4ZG8r zl!}E&aajxTK@jOfKp#YXvG`C#bTOih4^l+TOR*_bh|-5DMe@*6&v)mZ-J6>ki+Et> z-us>NopbKboV&>z_JKWhk%(Z4i04FY#HbJr_tyGx*^P@$VxzQOPGfLZsCK1lL1|R| z)zq$0{rjlxaZ0~ArPt@2(uo^R>5^0W!714@WqWpPMl8EjvS*#M_mi1$$~M_FmaBtO zqCsNio*AcEkcFO9m=X~lU3CL5caAiKdG~j?3I6;)jVt3zsqI& zn%ci>&RP4ib2ksjiFUBx*}hh0?k)Dim3!x=Cgqu`?w!AWy_2<*gSDbPsP6A9aDX~Q@f zZz2p21mBK$epTa{y7rYz4v+y2p?elM3BIeU{$Nf23UHFGcro9t=}!SC$>GKNx+Bs6 z{?7p?S&tX%yKDR}fs<^;0+ni^)XT~hgrkxzlzOph0SE-O&J?W87A>yaOTzX^92L_Sxrfv} zM$Z;ei!1kzu(#=1Etb*S7n~``2lTAb<}3G-urKJ@ENVqNN@K`HdV=h)D4h9n&k4H` zg5%17pEIO~$TL9g8p4CtVS}@S4iQ-p8!zfkFc=RO@`e_Pt)2K40~?r?pv(nCWc^>Wf{iDmP}RG(YSq;lE5f?F6( zWe2m~Fey9tSIbeX^+?9+=x4TVs&|rl_h2?u{{-pxWYS07`4(0GZE31|ZhyXDBW@LL zZ?SW`B#+?kLsfjfQA{(cad)@)SyoBAVSx^m4_Hq!)|PbP6e|)>*IEk+$tF!dht|v*}d6=oK>VKu5YeWhZx~68qCt4_O(> zpHwwWuGp2#ch#1gY!t+^PZd2keLR&udOUU5%_5ENj_S-XI@B3!PNmW#BW_=II2L=7 z`Z>2)OnIY28QRgqd8}-Avc{1o0`(D6M-Qq2SBe-w65yz2x9<3o07zouFZu8S{51{N z{lBkp)EAs(_Wy~7qgF9KrEtW>UB>v&3Wp#3c4Pckg~NV{hX1Z`*gv4*w>A7h4PQ#% z5rqAyWw?X-12O$<(eQPo=X{zBKlPF=M6-tL^Lj?}qvv@{!%?N#|0xaE*WrxjUtfoJ zG<)6ugofk(Xa65-xV}E08~%BHzSit@|37LtY7+auuHhRr{BOg*{K-rD2sVVoT>teN zzLE6oA9I1g-6q-dUtC9la~~S)9RxVvr4mpt;1AKm9NquJnqgG+krwYcpg3M6z%d7w zS5*f%&lS*VyhwoKVVO`J#`#{Y7&zabGX~E0B>!+^KYU*at2jE~xqZ}n1;0JYy+S7E zT3%+v6IQ?Lxx(rz7KH??yWAZ?MhkC{AgiEz#46zUgBNrj)Cr1zQN?do zhKP^7WIo6Li!ixM-cL=gXi`d7j}gJ2BBKfH@;E&u=k literal 0 HcmV?d00001 diff --git a/parte2/obj/ContratoMovil.o b/parte2/obj/ContratoMovil.o new file mode 100644 index 0000000000000000000000000000000000000000..537f94c48e52d81fa34a697359a1f79ddac0dfe3 GIT binary patch literal 8272 zcmbtYU2Ggz6~1eyP1Cfo8~)NJ73;)M7n+sViNQipE!fjeNNiT#IHeKRWV~M6E7rT# z?%1_U+e8FaU6x8lAVdX12qEAh4~PdIkf_oaweHV@0RfSUgppbiAVQ6j2TK^j`R<&v zdwo4qA~@3Qx%WHYIrrQ%cjn&Nv(AY}+7byRl28w;R!>l+vL9%*GrE~k-Rh9$?x8+> zI#_qIzK8W**6$y!mI z8{-?Vu3$zqp-!66Mk||*FdI@Kclp(oW?Zo7NnlAd*?J`%=S;82u-KhpadcfYDN8jPyV1xb>&_<4-my&N1BBy(;C-h)y{Gfpw!yn^A0`5IVf!R-k`LoY z?0(Ds1>hv_!H?KSTK1=aliX`#-`=*`8fOO==RuP**|K-D{iCLRDzqmF8)Ex2rX6Dhtr#=R`JTyXdqEShZ#>8L zJ54*a576~PwqZYN&f&9RY|Qaj;tMTxrt#ZVA|$~tM&PnTUAq}&ZdW>+ZKigG9df(0 z>m4%+#}2w(+QU1)&Cnj+@d#Y6qzGJAamxf|)Tq6LA2jmUYm2a~#&w0M#cP^$m9B$E zB+1|fjq8<5EndT-HR-E;%G+Hg_`1R+WsWB8B9;9d+q6@xz!gFj1n)VzMoxXe>OTa@dIG5GHo-{kq|XN}rd36HA74d(Zd zhUjOH^q#gb9~dj>~l)}I=!i4 zHm`;rOH~U~DbJf;T=eD&)tYt=mb`^tOuISjmK(t*Pgy}#EvS|XWiplhS#M7`9ibIg%zG6o zQ^B7-mOtq^xqdHuJdaFrl~THeCv3g|9-r%ScbTxHab z)G{=0G(jhiS(65KY9!t3dHKaff1y(wa|L=*rYa7Ixd`WDt?+pM zPVmEs^A7f&&6}a*7{}`ad)Qsvm-i<4*hPi^Rkj1iZX@^w1IM?o;J-9*ymbU$HE_Ix z1phPRc0M-@z8R;J-*?Cd-_#PP%fRn9aL2$gSK*&A@ZARfB?C9>_GQNHJbz*EyNoz5 z8GM|vW!zN*KWN~;HR2pH@V^*%w}D?X;voLN`TlMid^65oBu;|5nfL+5q0BrVh~a~tY~a!a zo{|pfB)2gyo{B~?298>boZ$xe_$C%P#|_|88$jR34+-#{x)uJs&TZhWQ@>K{1`eCZ zU%3HH<__o%Oo#+HE;%2|c~x*Z2fG$ucqI#$bM4nGT+Ww2v2ZzGu3EU9FIB3xG#mI6 zq=RaxXQWjvl>AgsSPWEZ(hq!3rTREanSyfk$;H6;!HP38$^=fF_;uN`$6LmAqe~8f-trf#K_F2{-C2z>yJQ z+g5Ky2#0#NBW5aJnVl_^=_ZvcK_Nwd1|6;ie*TNxpDxd*=BgDsmj+8TC8SrF@usRi z9UoKE)yn)Fmg)a3|DyF}J}(k5!wq>hx~Px+Se{+casF6XB12N&G~|`OmOF<_tmoaIOY141jKTW=R{?^1cIUvrerdTxf7#XAd_wc+i zKT~Y~vt*3&Kg#~{f0)Fu{V&A$yX63i1G2gW{*G5!<&9HwL;UA<+{H1;{+hZfdK0aK}a2*a37WMwcx0n6y gg#S4l7D%45jGRtrq+h&WEQ+?d{1^HTD>>W$KVU9{Gynhq literal 0 HcmV?d00001 diff --git a/parte2/obj/ContratoTP.o b/parte2/obj/ContratoTP.o new file mode 100644 index 0000000000000000000000000000000000000000..03c9350fd9bc4f904d72ae58176e95d568e6aaa0 GIT binary patch literal 1704 zcmbtU&2G~`5MHOH1<{`raR3z|UqD4_tvGF^ghQ1Qnf3rxRMHC)3Y*{%Ltr5>S- zZOo;1B{C~)g)Os_!{M*tyXo2Lnl<@kO^25-cD9M)QB2`tC7F=AAcCjBdbporRamHfbNIk4!3h*^$9R=;J3-s5N5&+`>a3LgBha^) z&QIpRyvKC<7EGt-p6RsAnoi@4nZyUiNx+f@$R=lj&W6667?L_M&=~=pVbDo|&QQCV zbZ@Q%lIa)=zVxJ#MvY11dIj&M%6a#-m`!iwvzub}y_nq*vl-Fd72vFx&5PMRoPkF} z$ujsIahgi7Blq4(+r^W{)YF2KO0vQ9+0{sx^t*BEbDLoT@W4XpTZES)j*}FbbfZSn z?>1A({ex-87>D_AlI=Cd`&MyL%eYfEw@IL|LMeiiJhpQ<9+rm6hG4SLZf+A{v5R;J zDS{Yr5GVa512ct#>7Ju}2KxzLGb8DW!MT^stFxY~3q{U1SO2KkI(2fY-I?Ax1lQSf*q$<8;qaNzJf#q1gF zt3yB}3g`IUL~5d(!^|w_G?B4_SCZk0bcY0UTE-xCL~@QL8^=xO23%Uqwo-lxwQL)> z-VZ09a(XUm;erKHCbtKB0DGhV?Y)IcAu5S}RkPRaGP*?ZOY!)@bgyxl$1jzMUka|M zh)c@h@k4;(my$Q0+w#l!0Z*0-V=QTmE+cqY>jF?9*F*52F!n%EG-hZEJU3^RtCI6h zI1`I>;IjPqH#aCRJ83{MZe5`2F)-f*E=_?;>7@rcB@Xl^KhQgq#x&mPxeD{Vag%(9 z8a)Fh2WHsHX$N{^8nZQxah^VN3x?9hJhyQlfca$O{k%!W-w9OFpv)|q``xV*;!Q&g ze@W{^6?>MkgLQS!c`6ScZrSSb)p)DDK2LR3bxqYC-wt${F*iIOc(5t~ixn_e8ZoSC z*j(Ctoq(C^jb`RLRp#1IT3mv~5Z^ucU@OC)eUFyCTTr)pMFS9Ein3b7q48HJ$q!}a zuL*Hp`57tau9JRuR{xTe??dNFURdiwMma#^QvN3PBroXY22g%S%0FKuPiN#0qXxd(JP4*iE{ht@X+3JV;u2M@rYOzr{DuYKrBx~H8=a^VJ>kY zKjo#8LWU=^v=#C%m|Qr1(JXC+Y}FDF5uOK{q!Q+vly!+y%W?d25{*8ynqaz#W!EL# z0(_0KFPY8^&ld5W!VKfN0OM31{-+Y}m2u~}0oZkT$Tt{f+IKKQ`@c#)&lSLah9?*Q zULL#>^mFm60Z02+3P2GW&o$`%62Du>;Y=xlfn8bNLA>n`(?g)9q zu^0=!8nCNWawC#vB^fRQwQr@KCg` z5QK*Kqwo+Og>%D(_+#)8UMlkeyA=w)R>ARZ5Pze@(astL-zUt?wf~$6R$@`_B%MS{!o=Yzh zq3QgmRrhsN;j8=VQgE!MWdC&qSM9%@$Nu{YU$y^{ zf@4)C`=2PdYX5fy$8QJXzlfWGrpL#_Q3l^3jLDF5#IN8oNWEwPIuX%Ht6lR=sRc> zw>m>!+d5@4Z+plNF>hNU!8qW}7NBg|&Lt7WTbC#$+#8Py+u>+em(>kRbw_Q>3!jMF zdGVF=6Wu-DSUeiD;`V9g<&Ie$!Q=5zm&Lp%;?bU%*!I8vod65;?pKZZ<%GUukb`5& z5$f~ln>qCH-jE*k`ShD|=;OU0J?cGx;Ze)9hmmMUWN&H$%oDY3fC<|2t00Vz;7bKs zmAovtf8}A&>s3 z^k2^nUEj*1e{Gri{Ze1I`>oWca|Rl3di>4-iddBpXMS%>ef_3=*YxeE}RmH%4McNb#VwC(WPlS_X{ChiTPmig87{{miK BsFeT! literal 0 HcmV?d00001 diff --git a/parte2/src/Cliente.cpp b/parte2/src/Cliente.cpp new file mode 100644 index 0000000..62f17f0 --- /dev/null +++ b/parte2/src/Cliente.cpp @@ -0,0 +1,58 @@ +#include +#include //strlen, strcpy +#include //std::setprecision +#include //stringstream +#include "Cliente.h" + +//Cliente::Cliente(long int d, char *nom, Fecha f):fechaAlta(f.getDia(), f.getMes(), f.getAnio()) { +Cliente::Cliente(long int d,const char *nom, Fecha f):fechaAlta(f) { //esta cabecera es mas corta (invoco + this->dni=d; //constructor copia de fecha + //en vez de constructor de 3 parametros) + //this->nombre=nombre; //MAL!!!! + this->nombre=new char[strlen(nom)+1]; + strcpy(this->nombre, nom); + + //this->fechaAlta=f;//MAL!!!! los tipos no primitivos debe ir en zona inicializadores +} + +Cliente::~Cliente() { + delete [] this->nombre; //si en el constructor uso new [] en el destructor uso delete [] +} + +Cliente& Cliente::operator=(const Cliente& c) { + if (this != &c) { //si no es x=x + this->dni=c.dni; + delete [] this->nombre; + //this->nombre=c.nombre; //MAL!!!! + this->nombre=new char[strlen(c.nombre)+1]; + strcpy(this->nombre, c.nombre); + this->fechaAlta=c.fechaAlta; + } + return *this; +} + +bool Cliente::operator==(const Cliente& c) const { + if (this->dni!=c.dni) return false; + if (strcmp(this->nombre, c.nombre)!=0) return false; + if (this->fechaAlta.getDia()!=c.fechaAlta.getDia() || + this->fechaAlta.getMes()!=c.fechaAlta.getMes() || + this->fechaAlta.getAnio()!=c.fechaAlta.getAnio()) return false; + return true; +} + +//RESTO DE METODOS Y FUNCIONES A RELLENAR POR EL ALUMNO.. + +void Cliente::setNombre(const char *nom){ + delete[] this->nombre; + this->nombre = new char[strlen(nom)+1]; + strcpy(this->nombre, nom); +} + +ostream& operator<<(ostream& os, const Cliente& c) { + os << c.getDni() << " - " << c.getNombre() << " (" << c.getFecha() << ")"; + return os; +} + +void Cliente::setFecha(Fecha f) { + this->fechaAlta = f; +} diff --git a/parte2/src/Contrato.cpp b/parte2/src/Contrato.cpp new file mode 100644 index 0000000..f2b65c7 --- /dev/null +++ b/parte2/src/Contrato.cpp @@ -0,0 +1,28 @@ +#include "Contrato.h" + +int Contrato::contador=1; + +Contrato::Contrato(long int dni, Fecha f): idContrato(contador), fechaContrato(f) { + //idContrato=contador; //ERROR es constante y debe ir en zona inicializadores + Contrato::contador++; + this->dniContrato=dni; + //this->fechaContrato=f; //ERROR es tipo no primitivo y debe ir en zona inicializadores +} + +Contrato::~Contrato() { + //dtor +} + + +void Contrato::ver() const { + cout << this->dniContrato << " (" << this->idContrato << " - "; + this->fechaContrato.ver(); //llamo al ver del objeto fecha + cout << ")"; +} + +ostream& operator<<(ostream &s, const Contrato &c) { + s << c.getDniContrato() << " (" << c.getIdContrato() << " - " << c.getFechaContrato() << " )"; + return s; +} + +//RESTO DE METODOS Y FUNCIONES A RELLENAR POR EL ALUMNO... diff --git a/parte2/src/ContratoMovil.cpp b/parte2/src/ContratoMovil.cpp new file mode 100644 index 0000000..73f6270 --- /dev/null +++ b/parte2/src/ContratoMovil.cpp @@ -0,0 +1,53 @@ +#include +#include +#include //strlen, strcpy +#include //std::setprecision +#include "Contrato.h" +#include "ContratoMovil.h" + +ContratoMovil::ContratoMovil(long int dni, Fecha f, float p, int m, char *nac): Contrato(dni, f) { + this->precioMinuto=p; + this->minutosHablados=m; + //this->nacionalidad=nac; //MAL!!!! + this->nacionalidad=new char [strlen(nac)+1]; + strcpy(this->nacionalidad, nac); +} + +ContratoMovil::~ContratoMovil() { + //implementarlo... +} + +//ContratoMovil::ContratoMovil(const ContratoMovil& c):Contrato(c) { //IMPORTANTE: SI PONGO ESTA CABECERA y no implemento un constructor de copia en CONTRATO + //NO DA ERROR AL COMPILAR PORQUE EL COMPILADOR GENERA UN CONSTRUCTOR COPIA POR SU CUENTA... + //...EL PROBLEMA ES QUE EL QUE GENERA EL COMPILADOR NO INCREMENTA contador + //Y ASIGNARIA EL MISMO CODIGO A AMBOS CONTRATOS + //solucion: implementar constructor copia en CONTRATO y usar esta cabecera... +ContratoMovil::ContratoMovil(const ContratoMovil& c):Contrato(c.getDniContrato(), c.getFechaContrato()) { //... o usar esta otra cabecera + this->precioMinuto=c.precioMinuto; + //terminar de implementarlo... +} + +void ContratoMovil::ver() const { + Contrato::ver(); //IMPORTANTE: llamamos al ver que heredo de mi padre PARA QUE MUESTRE LO DEL PADRE + //... y a continuacion solo "me preocupo" de mostrar lo que es exclusivo del hijo + cout << " " << this->minutosHablados << "m, " << this->nacionalidad << " " << this->precioMinuto; +} + +float ContratoMovil::factura() const { + //implementarlo... +} + + +void ContratoMovil::setNacionalidad(char* nac) { + //implementarlo... +} + +ostream& operator<<(ostream &s, const ContratoMovil &c) { + s << (Contrato &)c; //IMPORTANTE: convierto el objeto c (ContratoMovil &) a objeto Contrato & + // de esta forma se cree que es un objeto Contrato y muestra lo que indica el operator<< de Contrato + //... y a continuacion solo "me preocupo" de mostrar lo que es exclusivo del hijo + s << " " << c.getMinutosHablados() << "m, " << c.getNacionalidad() << " " << c.getPrecioMinuto() << " - "; + s << c.factura() << "€"; + return s; +} + diff --git a/parte2/src/ContratoTP.cpp b/parte2/src/ContratoTP.cpp new file mode 100644 index 0000000..f4996d2 --- /dev/null +++ b/parte2/src/ContratoTP.cpp @@ -0,0 +1,14 @@ +#include "ContratoTP.h" + +int ContratoTP::minutosTP=300; +float ContratoTP::precioTP=10; +const float ContratoTP::precioExcesoMinutos=0.15; + + +//static se pone en el .h (no se pone en el .cpp) +void ContratoTP::setTarifaPlana(int m, float p) { + ContratoTP::minutosTP=m; //puedo poner minutosTP=m ...pongo ContratoTP::minutosTP para recordar que es estatico + ContratoTP::precioTP=p; //puedo poner precioTP=p ...pongo ContratoTP::precioTP para recordar que es estatico +} + +//RESTO DE METODOS Y FUNCIONES A RELLENAR POR EL ALUMNO... diff --git a/parte2/src/Fecha.cpp b/parte2/src/Fecha.cpp new file mode 100644 index 0000000..241108e --- /dev/null +++ b/parte2/src/Fecha.cpp @@ -0,0 +1,99 @@ +#include "Fecha.h" + +Fecha::Fecha(const int &dia, const int &m, const int &anio) { + this->setFecha(dia, m, anio); //el cogido es el mismo que el del metodo setFecha +} + +void Fecha::setFecha(const int &dia, const int &mes, const int &a) { + int dmax, diaMes[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; + this->anio=a; //VIP debo asignar año para que al llamar a bisiesto() tenga el año bien + if (this->bisiesto()) + diaMes[2]=29; + + if (mes<1) //si el mes es incorrecto + this->mes=1; + else if (mes>12) //si el mes es incorrecto + this->mes=12; + else + this->mes=mes; + dmax=diaMes[this->mes]; //una vez fijado el mes veo cuantos dias tiene ese mes como maximo + + if (dia>dmax) //si dia es superior al numero de dias de dicho mes + this->dia=dmax; + else if (dia<1) //si dia es inferior a 1 + this->dia=1; + else + this->dia=dia; +} + +bool Fecha::bisiesto() const { + if (this->anio%4==0 && (this->anio%100!=0 || this->anio%400==0 )) //esto no es exacto... corregidlo ustedes + return true; + else + return false; +} + +void Fecha::ver() const { + if (this->dia < 10) + cout << "0"; + cout << this->dia << "/"; + if (this->mes < 10) + cout << "0"; + cout << this->mes << "/" << this->anio; +} + +Fecha Fecha::operator++() { //++f + int dmax, diaMes[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; + if (this->bisiesto()) //si el año es bisiesto febrero tiene 29 dias + diaMes[2]=29; + dmax=diaMes[this->mes]; + this->dia++; + if (this->dia>dmax) { //si al incrementar dia superamos el numero de dias de dicho mes + this->dia=1; //pasamos a 1 + this->mes++; //del mes siguiente + if (this->mes>12) { //si al incrementar mes pasamos de 12 meses + this->mes=1; //pasamos al mes 1 + this->anio++; //del año siguiente + } + } + return *this; //devolvemos el objeto fecha ya incrementado +} + +//RESTO DE METODOS Y FUNCIONES A RELLENAR POR EL ALUMNO... + + +Fecha Fecha::operator++(int) { //f++ + Fecha temp = *this; + + int dmax, diaMes[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; + if (this->bisiesto()) //si el año es bisiesto febrero tiene 29 dias + diaMes[2]=29; + + dmax=diaMes[this->mes]; + this->dia++; + if (this->dia>dmax) { //si al incrementar dia superamos el numero de dias de dicho mes + this->dia=1; //pasamos a 1 + this->mes++; //del mes siguiente + if (this->mes>12) { //si al incrementar mes pasamos de 12 meses + this->mes=1; //pasamos al mes 1 + this->anio++; //del año siguiente + } + } + + return temp; //devolvemos el objeto antes del incrementado +} + +ostream& operator<<(ostream& os, const Fecha& f) { + os << f.getDia() << "/" << f.getMes() << "/" << f.getAnio(); + return os; +} + + +Fecha Fecha::operator+(const int &dias)const { //f+5 + Fecha resultado = *this; + for(int i = 0; i < dias; i++){ + ++resultado; + } + return *this; +} + diff --git a/parte2/src/main.cpp b/parte2/src/main.cpp new file mode 100644 index 0000000..6c85489 --- /dev/null +++ b/parte2/src/main.cpp @@ -0,0 +1,48 @@ +#include +#include +#include //std::setprecision +#include //std::filesystem::exists +#include "Fecha.h" //definicion de la clase Fecha +#include "Contrato.h" // definicion de la clase Contrato +#include "ContratoTP.h" // definicion de la clase ContratoTP +#include "ContratoMovil.h" // definicion de la clase ContratoMovil + +using namespace std; + +int main(int argc, char *argv[]) { + Fecha f1(29,2,2001), f2(f1), f3(29,2,2004); + cout << "Fechas: "; + f1.ver(); cout << ", "; f2.ver(); cout << ", "; f3.ver(); cout << endl; + + Contrato *p = new Contrato(75547111, f1), c(23000111, Fecha(2,2,2002)); + cout << ContratoTP::getLimiteMinutos() << " - " << ContratoTP::getPrecio() << endl; + ContratoTP ct1(17333256, f1, 250); //habla 250 minutoe + ContratoTP ct2(12555100, f3, 320); //habla 320 minutos + ContratoTP ct3(ct1); + ContratoMovil cm1(17333256, f1, 0.12, 100, "ESPAÑOL"); //habla 100 minutos + ContratoMovil cm2(17000000, Fecha(3,3,2003), 0.10, 180, "FRANCES"); //habla 180 minutos + ContratoMovil cm3(cm2); + p->ver(); cout << "\n"; c.ver(); cout << endl; + ct1.ver(); cout << endl; ct2.ver(); cout << "\n"; ct3.ver(); cout << "\n"; + cm1.ver(); cout << endl; cm2.ver(); cout << "\n"; cm3.ver(); cout << "\n"; + cout << p->getIdContrato() << ct2.getIdContrato() << cm2.getIdContrato() << endl; + + cout << setprecision(2) << fixed; //a partir de aqui float se muestra con 2 decimales + + cout << "Facturas: " << ct1.factura() <<"-"<< ct2.factura() <<"-"<< cm1.factura() << endl; + ContratoTP::setTarifaPlana(350, 12); //350 minutos por 12 euros + p->setDniContrato(cm1.getDniContrato()); + ct3.setFechaContrato(p->getFechaContrato()+1); + cm3.setNacionalidad(cm1.getNacionalidad()); + cm2.setPrecioMinuto(cm1.getPrecioMinuto()+0.02); + cm1.setMinutosHablados(ct2.getMinutosHablados()/2); + ct1.setMinutosHablados(cm3.getMinutosHablados()*2); + cout << *p <<"\n"<< c << endl; + cout << ct1 <