From 6f44777fb7b2a9358d65568966fc8f04b75d3781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Lucas?= Date: Fri, 22 May 2026 21:59:31 -0300 Subject: [PATCH] 22/05/2026 --- .../src/__pycache__/__init__.cpython-314.pyc | Bin 0 -> 298 bytes .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 382 bytes .../__pycache__/desenvolvedor.cpython-314.pyc | Bin 0 -> 2676 bytes .../__pycache__/estagiario.cpython-314.pyc | Bin 0 -> 2502 bytes .../__pycache__/funcionario.cpython-314.pyc | Bin 0 -> 5015 bytes .../__pycache__/gerente.cpython-314.pyc | Bin 0 -> 2754 bytes Guia2/src/folha_pagamento/desenvolvedor.py | 55 +++++++++++++++++- Guia2/src/folha_pagamento/estagiario.py | 43 +++++++++++++- Guia2/src/folha_pagamento/gerente.py | 55 +++++++++++++++++- .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 180 bytes ...desenvolvedor.cpython-314-pytest-9.0.3.pyc | Bin 0 -> 6247 bytes ...st_estagiario.cpython-314-pytest-9.0.3.pyc | Bin 0 -> 6134 bytes .../test_gerente.cpython-314-pytest-9.0.3.pyc | Bin 0 -> 6227 bytes 13 files changed, 146 insertions(+), 7 deletions(-) create mode 100644 Guia2/src/__pycache__/__init__.cpython-314.pyc create mode 100644 Guia2/src/folha_pagamento/__pycache__/__init__.cpython-314.pyc create mode 100644 Guia2/src/folha_pagamento/__pycache__/desenvolvedor.cpython-314.pyc create mode 100644 Guia2/src/folha_pagamento/__pycache__/estagiario.cpython-314.pyc create mode 100644 Guia2/src/folha_pagamento/__pycache__/funcionario.cpython-314.pyc create mode 100644 Guia2/src/folha_pagamento/__pycache__/gerente.cpython-314.pyc create mode 100644 Guia2/tests/__pycache__/__init__.cpython-314.pyc create mode 100644 Guia2/tests/__pycache__/test_desenvolvedor.cpython-314-pytest-9.0.3.pyc create mode 100644 Guia2/tests/__pycache__/test_estagiario.cpython-314-pytest-9.0.3.pyc create mode 100644 Guia2/tests/__pycache__/test_gerente.cpython-314-pytest-9.0.3.pyc diff --git a/Guia2/src/__pycache__/__init__.cpython-314.pyc b/Guia2/src/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6cba23fcb18b60a1d4fe62f372638d85b24455fc GIT binary patch literal 298 zcmXv`O-lnY6ihZ-KU%8(0xfu21P^-@@zSp?#cnBh3x=?bHOn@yB-ui59{e-@pk8w6 z!IL+k7mp@I2j0Ay$Go{YYd4X{`_D!B==WzZ|A_v?{?dy#^o(YBgfeV#7TG8xmSnMw zuh1;IMhW=};Usp=zOj5Ext8FLhe8Wwg=_bO5o!(9TFgPa)}U5}1QkM)q~XqApnBzO z#TR_(^Pq|E(s7_hpd(KoXzv-hyn9EVjL?Rbz@ef&DC+QJ=xEUG(`la5sfJQm=uFbi y!RC2-xDRW|Q)+ZU8Iwv{#%@;|cXGdkd0mMI-SYj|j|t+NV2pQYyhUSu>isX#Y)}^f literal 0 HcmV?d00001 diff --git a/Guia2/src/folha_pagamento/__pycache__/__init__.cpython-314.pyc b/Guia2/src/folha_pagamento/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d47a21a5e65659655ad95524124f226195a9ef24 GIT binary patch literal 382 zcmYk1y-ve06ou`kNvf1qup_ks1}Y?m3=9ad^eBiEt)+~N8=$2#}wUNjpXf_nNqOrGI=GvcQzd)Qq8JfeF%!66E;#x28@ zuo76>D%lFFfvxS5tDzIP+HIkUeTq8HJBDxv7xh7&O=FQU84HkJUum|8_o~t3if3z) zuK7$z_;!a}@=Wtlr&iSGe@SVNl#4kB`i`T9CZ6+97SX-MZ&dckNkEiqsTA)VIDJ|C^;o_kv=fGVhd)Xf>0V~ qv8MELwJB;hOEJq+ek+@>&)lw#pnX^v<1ISdqLVE;e?`ag0NgKhVrpvu literal 0 HcmV?d00001 diff --git a/Guia2/src/folha_pagamento/__pycache__/desenvolvedor.cpython-314.pyc b/Guia2/src/folha_pagamento/__pycache__/desenvolvedor.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..65fadb8ef8ae58aca2b6a4515d0006887e2acb82 GIT binary patch literal 2676 zcmbtWO-vg{6rQ!c%YtndFkk{Cn2-Q25r+_|RhtH+q)F3CfHo@RV7y({3t6=6(wQ+z z(n|5ILaLe^X-_#8sp_ehp4&r@SaJ#-wN;{?dLtqIyY;@F|fz(WT4eZHY?*q>Bs^J(4DRbU`{34b^x= zj}4Km{2Q`aNyIM}J>iAhYUL>35_biyO~D35j%Uz#Hmk}jo* ztMb@_j5nRBZsN*OOk3K}XhOb-cQuK6j5?ucIqz!khIbpe?!zG_E)E#GJ&F zbL0()w}NjiB6-1PwzuxP>vqAXmQrT{!Ua&M`%^GE3r^)~!Yj%gc^~BS9dpqGxCY4l zly?9HnV)i4~-;f5hv4A=3Ni{`SuDiQ`*;`r1lm<2oA zBx1~Vmqg6-S8dU}YI5pWMb{JwX1W*xW6@+Fc(OlUw_P+FhUJ=!83t)G$ zTk_p&rm<|`0JXc`u_BEkJa zUN>EzGTb*@X9qn33z+#qgy7EJflsyYy8q#L91f&Ccxs*7?ZAs8jc(Uv3p&EklECpD zEmPJq+iK=Nx_%4}qJ4N|y~k(*9RSje5)}ws);|cbe%9q0!oLJ+&yTfEUb{+2p_7n) z%m&=^)X=3@*ni_cabf`tEWx7}=sIlmKMJDmihk&{FG;^pD|)C_m|UTjJVf%}hp97rgJ1JK=P|r>5qrm6 zH=R2;ZNcdki#luE$-@Fbg_ZA_WJ%SaG7C=7+Z`qb55ek*$}0#KHt-;AZlBvYw|TV^ zKlx*-8`9)Kx<-9ysr*J*+Tp2iZqx96oWvV2x#&0$(FMJbo7}Ms zlS4CIEOHy#qiC;oN&tXcw(G)Dvbq$qU@I2L+A1o-QCM)Mroy&@WriYw01!K}n!JSkoTFwe}r3U6#|R zeHqvr*CaRI?smdh!!T(b_*Y15>jx!2kdN literal 0 HcmV?d00001 diff --git a/Guia2/src/folha_pagamento/__pycache__/estagiario.cpython-314.pyc b/Guia2/src/folha_pagamento/__pycache__/estagiario.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..408c337169fcfede40606900ed09fb07a65ef6c0 GIT binary patch literal 2502 zcmb^zO>YxNbjJ2N>#sQ2A>kv54JkHm!G{n51q4Xpqo`6owyL=pZ-@0JEZTU}nRO-7 zi!W7+RP{ruT22+*noG~z`2&tZ8(2}bRV!7fJpiVkr@lAqI0g)dsw4aD%zJO%_j|jq z^e3VO*3`p+%c?@iPk7i^aF(mJ7ak2#AsRhLUZXC}kga4F(E`In3tpg;L7&YHXrXaZ zQ10WgK)u+Rdd;w$8snB@_$)pQv=6OQuwjJJ2Dw07su4F(QQY7VacGGgpc)+}w(5pZ zkE>`wfMG2JuuoH5wM5-Wi5#VF6m*8Y=xO1y1xxA*cPT?3z&^G08*Gk&rgDe)Mz}=Y z0{Zz>DY)T7hLl42HpfDokP%Ww336#jilWjRmp;Bm8Z6CTG z=;0<$*In?rgI7vQ&$~)Dj~0fQ^ey*K)wyu8R_z^TTUDpN4U|nWzQD4V9DeHtw;0lH z-2fsp+OA1^aG!>MYX^V^DUn%;eiDq66*|2_y|8Ye8rX$|Y0nG1ob%Y!k@B0uJ&~2inVAWRKU=rhL|Jg7Jnz_-n7+go z7+!VCW+%tRr7NBy^?JKEGhftot7f^nUOZ+y2D8QSqU7lZlLTZFeEA_g{Ke5vk2d3D zEp*4&s6{;BUb>xvO@o{ts3BG^jf@kHIpYxkD*=wuJOu*laDn%7Ii5f=s^UoiC`0rC z0G&HBAHB{8VEnFDy*gHF=@W z&v~fkESg?qk-6M5>NfM@g4sBB^otDYUFIJR@gllz*h~mrmt~NXtKnA(+UBKuWC#a_ z_yE9P4RTLSTD}-u^BJ^k{pr8Lu;wS&G_M;BU>H@ zXe84Ll4$Ay?jD3mH2Lw!)e*#J5kG|Z>|?;E5SQ=p=8<=JJu=Evs zEnAGZoT&a=q4#jm$iB|pB+xqrx^Q#sy@^7e2&sHN{+y{?8SCQuXB=MH5d6UXK@edZau4u&O2B+LrLfdO5U7M`r{A$U`i-9vfYajb2aPj*Z_<58X*@Sx;nE6PfE1 zw-b8+aW|Qgju!%c_u^+qA%<;NgXym8UR2i?ooe02eO%Yyt~0w$N$UE%#f58IHM8dE zI>+|mdk_>5><8d&g+6ncYZ*Fop*1hoT@zZ*+tThraLP4I+Xhskjq;CR57tu$i;N%& ztNi3izgw}AIRgBPF#vzR4?h1M*rx1#bdUlF1NbwnDCtK8fb>&dm@Wjpolm{Riu0SF vMI0xp7ht%~iTFMun literal 0 HcmV?d00001 diff --git a/Guia2/src/folha_pagamento/__pycache__/funcionario.cpython-314.pyc b/Guia2/src/folha_pagamento/__pycache__/funcionario.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..699f9be00057870a9f5a3cdb6e3b6c2f04217c51 GIT binary patch literal 5015 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 literal 0 HcmV?d00001 diff --git a/Guia2/src/folha_pagamento/desenvolvedor.py b/Guia2/src/folha_pagamento/desenvolvedor.py index 5c5d3c9..d393791 100644 --- a/Guia2/src/folha_pagamento/desenvolvedor.py +++ b/Guia2/src/folha_pagamento/desenvolvedor.py @@ -1,6 +1,55 @@ from folha_pagamento.funcionario import Funcionario -# Desenvolva a classe Desenvolvedor aqui. +class Desenvolvedor(Funcionario): -class Desenvolvedor: - pass \ No newline at end of file + def __init__(self, nome, matricula, salario_base, linguagem, senioridade): + super().__init__(nome, matricula, salario_base) + self._linguagem = linguagem + self._senioridade = senioridade + + @property + def linguagem(self): + return self._linguagem + + @linguagem.setter + def linguagem(self, valor): + self._linguagem = valor + + @property + def senioridade(self): + return self._senioridade + + @senioridade.setter + def senioridade(self, valor): + self._senioridade = valor + + def calcular_bonus(self): + + if self.senioridade == 'junior': + return self.salario_base * 0.05 + + elif self.senioridade == 'pleno': + return self.salario_base * 0.10 + + elif self.senioridade == 'senior': + return self.salario_base * 0.15 + + return 0 + + def calcular_descontos(self): + return self.salario_base * 0.08 + + def calcular_adicionais(self): + + if self.linguagem == 'Python': + return 500 + + elif self.linguagem == 'Java': + return 400 + + elif self.linguagem == 'JavaScript': + return 350 + + else: + return 200 + \ No newline at end of file diff --git a/Guia2/src/folha_pagamento/estagiario.py b/Guia2/src/folha_pagamento/estagiario.py index d50a433..d884f30 100644 --- a/Guia2/src/folha_pagamento/estagiario.py +++ b/Guia2/src/folha_pagamento/estagiario.py @@ -2,5 +2,44 @@ # Desenvolva a classe Estagiario aqui. -class Estagiario: - pass \ No newline at end of file +class Estagiario(Funcionario): + def __init__(self, nome, matricula, salario_base, curso, carga_horaria): + super().__init__(nome, matricula, salario_base) + if not curso: + raise ValueError("Curso invalido") + + if not carga_horaria: + raise ValueError("Carga horária inválida") + + @property + def curso(self): + return self._curso + + @curso.setter + def curso(self, valor): + self._curso = valor + + @property + def carga_horaria(self): + return self._carga_horaria + + @carga_horaria.setter + def carga_horaria(self, valor): + if valor <= 0: + raise ValueError("Quantidade de horas da carga horaria invalida") + self._carga_horaria = valor + + + def calcular_bonus(self): + return self.salario_base * 0.03 + + def calcular_descontos(self): + return self.salario_base * 0.02 + + def calcular_adicionais(self): + if self.carga_horaria <= 20: + return 150 + elif self.carga_horaria <= 30: + return 250 + return 350 + \ No newline at end of file diff --git a/Guia2/src/folha_pagamento/gerente.py b/Guia2/src/folha_pagamento/gerente.py index 31819a1..dc63182 100644 --- a/Guia2/src/folha_pagamento/gerente.py +++ b/Guia2/src/folha_pagamento/gerente.py @@ -2,5 +2,56 @@ # Desenvolva a classe Gerente aqui. -class Gerente: - pass \ No newline at end of file +class Gerente(Funcionario): + def __init__(self, nome, matricula, salario_base, setor, qtd_equipe): + super().__init__(nome, matricula, salario_base) + + # Verificação do setor + if not setor: + raise ValueError("Setor Invalido") + + # Verificação da quantidade da equipe + if not qtd_equipe: + raise ValueError("Quantidade de membros da equipe inválida") + + @property + def setor(self): + return self._setor + + @setor.setter + def setor(self, valor): + self._setor = valor + + @property + def qtd_equipe(self): + return self._qtd_equipe + + @qtd_equipe.setter + def qtd_equipe(self, valor): + if valor <= 0: + raise ValueError("Quantidade invalida de membros da equipe") + self._qtd_equipe = valor + + def calcular_bonus(self): + if self.qtd_equipe <= 5: + return self.salario_base * 0.10 + + elif self.qtd_equipe <= 10: + return self.salario_base * 0.15 + + else: + return self.salario_base * 0.20 + + def calcular_descontos(self): + return self._salario_base * 0.12 + + def calcular_adicionais(self): + if self.qtd_equipe > 10: + return 2000 + elif self.qtd_equipe > 5: + return 1000 + else: + return 500 + + + \ No newline at end of file diff --git a/Guia2/tests/__pycache__/__init__.cpython-314.pyc b/Guia2/tests/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f07d56845fa68df79d4d54a28f2d020c938b182c GIT binary patch literal 180 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 z