You are on page 1of 245

%&%*$"5»3*"

&N IPNFOBHFN Ë NJOIB GBNÓMJB +PÍP  3PHÏSJB  -VDÏMJB  4BSBI


*TBEPSBF-PSFOB

&NNFNØSJBBPNFVBWÙ RVFGBMFDFVOPBVHFEFTFVTBOPT
EVSBOUFBFTDSJUBEFTUFMJWSP4BVEBEFT WPWÙ0TNVOEP

"HSBEFDJNFOUP FTQFDJBM B ,OVU )FHOB  QPS GPSOFDFS VN SJDP


NBUFSJBMIJTUØSJDPTPCSFB0SJFOUBÎBPB0CKFUPT

"HSBEFDJNFOUPNBJTFTQFDJBMBJOEBBPDPMFHB3ÏHJT1BUSJDL"MÏN
EFBDFJUBSPEFTBGJPEFFTDSFWFSPQSFGÈDJPEFTUFMJWSP FMFUBNCÏNGPJ
VN HSBOEF JODFUJWBEPS OB TVB FTDSJUB .VJUBT GPSBN BT DPOWFSTBT F
USPDBTEFJEFJBTQBSBRVFPPCKFUJWPGPTTFBMDBOÎBEPFTDSFWFSVNMJWSP
EF0SJFOUBÎBPB0CKFUPTRVFSFBMNFOUFFOTJOF0SJFOUBÎBPB0CKFUPT

1BSB GJOBMJ[BS  BHSBEFÎP B UPEPT PT NFVT BNJHPT EF USBCBMIP F


GBDVMEBEF RVF BKVEBSBN B NF UPSOBS VN BOBMJTUB EF TJTUFNBT EF
TVDFTTP

.VJUPPCSJHBEPFRVFBGPSÎBFTUFKBDPOPTDP
13&'«$*0
"0SJFOUBÎÍPB 0CKFUPTFTUÈ OBTVBTFYUB EÏDBEB&OUSFUBOUP  B
TVBQPQVMBSJ[BÎÍPTØBDPOUFDFVOBEÏDBEBEFDPNPTVSHJNFOUP
EFMJOHVBHFOTNBJTTPGJTUJDBEBTFNSFMBÎÍPB4JNVMBF4NBMMUBML
UBJT DPNP +BWB &OUÍP  B QBSUJS EFTUF QFSÓPEP  NVJUBT QFTRVJTBT
DPOHSFTTPT  USBCBMIPT F TPGUXBSFT GPSBN DPOTUSVÓEPT VTBOEP FTUF
QBSBEJHNBEFEFTFOWPMWJNFOUPEFTPGUXBSF

&NDPOUSBQBSUJEBBFTUBQPQVMBSJEBEF IÈTFNQSFVNEFTBGJPFN
GB[FS VN EFTFOWPMWFEPS JOJDJBOUF BQSFOEFS FTUF QBSBEJHNB
/PSNBMNFOUF PTBTQJSBOUFTBQSPHSBNBEPSFTEFTVDFTTPBQSFOEFN
EF JOÓDJP P QBSBEJHNB FTUSVUVSBEP  RVF Ï NFOPT DPNQMFYP FN
DPODFJUPT F Ï VNB BCPSEBHFN NBJT TJNQMJTUB EF QSPHSBNBÎÍP
&NCPSBFYJTUBFTUBEJGJDVMEBEFJOJDJBMOBWJTVBMJ[BÎÍPFBQMJDBÎÍPEPT
DPODFJUPTEB0SJFOUBÎÍPB0CKFUPT FTUFQBSBEJHNBUFOEFBTFSNBJT
OBUVSBM WJTUPRVF OPUSBCBMIPEFBVUPNBÎÍPEFQSPDFTTPTEPEJBB
EJB BNBOJQVMBÎÍPEFPCKFUPTOPNVOEPSFBMÏDPOTUBOUF TFKBNFMFT
DPODSFUPTPVBCTUSBUPT

$POIFÎP P 5IJBHP IÈ TFUF BOPT F WFOIP BDPNQBOIBOEP P TFV


DBNJOIBS OB FNQSFTB QÞCMJDB FN RVF USBCBMIBNPT F OFTUB MJOEB
NJTTÍP EF USBOTNJUJS DPOIFDJNFOUPT F FYQFSJÐODJB QBSB PT TFVT
BMVOPT 4FNQSF TF EFTUBDPV OP EFTFOWPMWJNFOUP +BWB PSJFOUBEP B
PCKFUPT F  QPS JTTP  GPJ DPOWJEBEP F NJOJTUSPV EJWFSTPT DVSTPT EB
QMBUBGPSNB+BWBOFTUBFNQSFTB DPNP+BWB#ÈTJDP +BWB4FSWFS'BDFT
)JCFSOBUF 4QSJOH EFOUSFPVUSPT"UVBMNFOUF QPSEFTBGJPTQFTTPBJT
FQSPGJTTJPOBJT FTUÈJOHSFTTBOEPOBQMBUBGPSNB/FU

$PNPJOÓDJPEBDBSSFJSBEFQSPGFTTPSVOJWFSTJUÈSJP KVOUBNFOUF
DPNPTBOPTEFFYQFSJÐODJBFNEFTFOWPMWJNFOUP 5IJBHPQFSDFCFVB
EJGJDVMEBEF EF TFVT BMVOPT F BUÏ NFTNP EF QSPGJTTJPOBJT DPN BOPT
EF QSPHSBNBÎÍP FN SFBMNFOUF DPNQSFFOEFS F BQMJDBS PT DPODFJUPT
EB0SJFOUBÎÍPB0CKFUPT&TUFTBMVOPTFQSPGJTTJPOBJTBUÏQSPHSBNBN
FN MJOHVBHFOT PSJFOUBEBT B PCKFUPT  NBT TFNQSF GBMIBN FN BMHVN
QPOUP OB BQMJDBÎÍP EPT DPODFJUPT EF PCKFUPT  DMBTTFT  IFSBOÎB
FODBQTVMBNFOUPT F PVUSPT &MF UBNCÏN QFSDFCFV VNB GBMIB OB
MJUFSBUVSB  RVF DPCSF CFN B QSPHSBNBÎÍP F B BOÈMJTF PSJFOUBEBT B
PCKFUPT  NBT QFDBN OP RVF UBMWF[ TFKB P QSJNPSEJBM P FOTJOP EPT
DPODFJUPTCÈTJDPTEPQBSBEJHNB%FWJEPBJTUP FMFSFTPMWFVFTDSFWFS
FTUFMJWSP

5IJBHP BQSFTFOUB UPEPT PT DPODFJUPT EF GPSNB DMBSB F PCKFUJWB


NPTUSBOEP TFNQSF FYFNQMPT EF DØEJHPT FN EVBT MJOHVBHFOT  OP
DBTP+BWBF$"PSHBOJ[BÎÍPEPTDPODFJUPTFNHSVQPTTJNJMBSFTF
TVBTFRVÐODJBEFBQSFTFOUBÎÍPGBDJMJUBNPBQSFOEJ[BEP6NHSBOEF
EJGFSFODJBM EFTUF MJWSP FN SFMBÎÍP BPT EFNBJT  RVF GPDBN
EFNBTJBEBNFOUFOBTMJOHVBHFOTEFQSPHSBNBÎÍPFFNDPNPBQMJDBS
PTDPODFJUPTEB00OFMBT ÏVNBJOWFSTÍPEFQSJPSJEBEF

&N WF[ EJTUP  FTUF MJWSP UPSOB PT DPODFJUPT EB 0SJFOUBÎÍP B
0CKFUPTPDFOUSPEBTBUFOÎÜFT0SFTVMUBEPEFTUBNVEBOÎBEFGPDPÏ
RVF PT DPODFJUPT F TVBT BQMJDBCJMJEBEFT TÍP BQSFOEJEPT EF GPSNB
FGFUJWB 1BSB DPNQMFNFOUBS BT FYQMJDBÎÜFT  TÍP EJTQPOJCJMJ[BEPT
FYFNQMPTEFDØEJHPTEFVNBBQMJDBÎÍPGJDUÓDJB QBSBBTTJNGBDJMJUBSP
FOUFOEJNFOUP F BTTJNJMBÎÍP 1BSB GJOBMJ[BS  BMHVNBT CPBT QSÈUJDBT
TÍPMJTUBEBTQBSBPTJOJDJBOUFTOÍPDPNFUFSFNBMHVOTFSSPTDPNVOT
NBT RVF QPEFN DPCSBS VN QSFÎP NVJUP DBSP OP GVUVSP 5BNCÏN
TÍP BQSFTFOUBEPT BMHVOT QSØYJNPT QBTTPT OP DBNJOIP EP
BQSFOEJ[BEPEB00

5FOIPDFSUF[BEFRVF BPUFSNJOBSBMFJUVSBEFTUFMJWSP WPDÐTFSÈ


VN EFTFOWPMWFEPS EJGFSFODJBEP F NBJT QSFQBSBEP QBSB VTBS P
QBSBEJHNBPSJFOUBEPBPCKFUPTEBNFMIPSGPSNBQPTTÓWFM7BNPTMÈ
FNCBSRVFDPN5IJBHPOFTUBFNQPMHBOUFFFOSJRVFDFEPSBKPSOBEB

1PS3ÏHJT1BUSJDL4JMWB4JNÍP
40#3&0"6503
0MÈQFTTPBM.FVOPNFÏ5IJBHP-FJUFF$BSWBMIP NBTTPVNBJT
DIBNBEP TØ EF 5IJBHP -FJUF "EPSP EFTFOWPMWJNFOUP F USBCBMIP
DPN JTUP IÈ  BOPT %FTEF PT FTUÈHJPT OP UFNQP EF GBDVMEBEF BUÏ
IPKF  KÈ USBCBMIFJ FN FNQSFTBT EF WÈSJPT SBNPT F UJQPT TPGUXBSF
IPVTF  FNQSFTBT QÞCMJDBT  FNQSFTBT OP SBNP EF TBÞEF  JOEÞTUSJBT
FOUSF PVUSPT OJDIPT EF OFHØDJP 5BNCÏN KÈ QSFTUFJ BMHVNBT
DPOTVMUPSJBTGPDBEBTOPEFTFOWPMWJNFOUP

&TTFQVMBQVMBNFQSPQPSDJPOPVJNQPSUBOUFTFYQFSJÐODJBT RVF
NFGJ[FSBNBNBEVSFDFSQFTTPBMNFOUFFUBNCÏNQSPGJTTJPOBMNFOUF
4FOÍPGPTTFNUPEPTPTNPNFOUPTWJWJEPT UBMWF[FVOÍPGPTTFPRVF
TPV IPKF "HSBEFÎP B WÈSJPT DPMFHBT EF USBCBMIP F GBDVMEBEF QPS
BKVEBSFNBGPSNBSBQFTTPBFQSPGJTTJPOBMRVFTPV

1SPGJTTJPOBMNFOUF  TFNQSF BUVFJ DPN +BWB  FN RVF QPTTVP USÐT


DFSUJGJDBÎÜFT "UVBMNFOUF  QPS OFDFTTJEBEF QSPGJTTJPOBM F EFTBGJP
QFTTPBM  TPV VN EFTFOWPMWFEPS $ -PHP FTUBSFJ NF DFSUJGJDBOEP
OFTUBMJOHVBHFNUBNCÏN

/PT ÞMUJNPT BOPT  FNCBSRVFJ OP NVOEP BDBEÐNJDP 4PV


QSPGFTTPSEFVNBGBDVMEBEFFN'PSUBMF[BFNJOJTUSPEVBTDBEFJSBT
1SPHSBNBÎÍP 0SJFOUBEB B 0CKFUPT * F &OHFOIBSJB EF 4PGUXBSF
5BNCÏN KÈ NJOJTUSFJ BT DBEFJSBT EF -JOHVBHFOT 'PSNBJT F
"VUÙNBUPT  $PNQJMBEPSFT F 1SPHSBNBÎÍP 0SJFOUBEB B 0CKFUPT **
"EPSP MFDJPOBS F QBSUP EP QSJODÓQJP EF RVF B NFMIPS GPSNB EF
BQSFOEFSÏFOTJOBS"MÏNEJTUP UBNCÏNNJOJTUSPDVSTPTFQBMFTUSBT
3FTVNJOEP TPVVNFOUVTJBTUBEPEFTFOWPMWJNFOUPEFTPGUXBSF

4PV HSBEVBEP F NFTUSF QFMB 6OJWFSTJEBEF EF 'PSUBMF[B F


BUVBMNFOUF  TPV GVODJPOÈSJP QÞCMJDP  USBCBMIBOEP OP 4&3130
FNQSFTBEFUFDOPMPHJBEP(PWFSOP'FEFSBM$BTPRVFJSBNTBCFSVN
QPVDP NBJT TPCSF NJN  BDFTTFN NFV DVSSÓDVMP MBUUFT  FN
IUUQMBUUFTDOQRCS /FMF UFSÍP NBJT BMHVNBT
JOGPSNBÎÜFT
40#3&0-*730
2VBOEP DPNFDFJ B NJOJTUSBS B DBEFJSB EF 1SPHSBNBÎÍP
0SJFOUBEB B 0CKFUPT *  WJ RVF OP NFSDBEP OÍP FYJTUJBN MJWSPT EF
0SJFOUBÎÍP B 0CKFUPT 00  )BWJB OB WFSEBEF MJWSPT EF +BWB  $
3VCZ  1ZUIPO FUD  NBT 0SJFOUBÎÍP B 0CKFUPT NFTNP OÍP &TTFT
MJWSPTGPDBNNBJTOBMJOHVBHFNFNTJFNBMGBMBNEF00F RVBOEP
GBMBN ÏNVJUPGPDBEPOBMJOHVBHFN%FWJEPBJTTP BMHVOTDPODFJUPT
UFSNJOBWBNTFOEPPNJUJEPTPVQPVDPFYQMPSBEPT

5PEP TFNFTUSF FSB VNB EJGJDVMEBEF EJTQPOJCJMJ[BS VNB


SFGFSÐODJB CJCMJPHSÈGJDB QBSB PT BMVOPT RVF UJOIBN BDBCBEP EF TBJS
EBDBEFJSBEFMØHJDBEFQSPHSBNBÎÍP&MFTBQSFOEFSBNDPN$DPNP
QSPHSBNBS EF GPSNB FTUSVUVSBEB  NBT OB IPSB EF BWBOÎBS QBSB B
0SJFOUBÎÍP B 0CKFUPT  TFNQSF QFSHVOUBWBN 1SPGFTTPS  WPDÐ QPEF
JOEJDBS VN CPN MJWSP EF 0SJFOUBÎÍP B 0CKFUPT  &V EJ[JB
0SJFOUBÎÍPB0CKFUPTNFTNPOÍP NBTUFNPTPMJWSP9RVFGBMBEB
MJOHVBHFN : &MF UFN VN DBQÓUVMP RVF BCPSEB BMHVOT DPODFJUPT EF
000VTFKB OÍPUFNPTMJWSPEF0SJFOUBÎÍPB0CKFUPT

'PJCBTFBEPOJTUPRVFEFDJEJFTDSFWFSFTUFMJWSP4FVQÞCMJDPBMWP
ÏBMVOPTRVFBDBCBSBNEFTBJSEBDBEFJSBEFMØHJDBEFQSPHSBNBÎÍP
PVBUÏNFTNPPTRVFQBTTBSBNQPSVNBDBEFJSBEF00 NBTTFOUFN
RVFBJOEBGBMUBBMHPBNBJT5BNCÏNQPEFNTFSVNCPNQÞCMJDP
QBSBFTUFMJWSPQSPGJTTJPOBJTRVFFTUÍPIÈNBJTUFNQPOPNFSDBEPEF
USBCBMIPFTØBHPSBFTUÍPUFOEPBPQPSUVOJEBEFPVOFDFTTJEBEFEFTF
BWFOUVSBSOB0SJFOUBÎÍPB0CKFUPT

0 PCKFUJWP EFTUF MJWSP Ï GPDBS F FYQMJDBS EB NFMIPS GPSNB


QPTTÓWFM UPEPT PT DPODFJUPT EFTUF QBSBEJHNB EF QSPHSBNBÎÍP
/FOIVNBMJOHVBHFNFNTJTFSÈPBMWPEFTUFMJWSP QPJTPTDPODFJUPT
BRVJ FYQMJDBEPT QPEFN TFS BQMJDBEPT FN RVBMRVFS VNB RVF
JNQMFNFOUFUBMQBSBEJHNB7BJTFSVNBEFDJTÍPEFQSPKFUPEFDBEB
MJOHVBHFNEJTQPOJCJMJ[BSPVOÍPPTDPODFJUPTBRVJFYQMJDBEPT

&OUSFUBOUP  QBSB BMHVOT DPODFJUPT GJDBSFN NBJT DMBSPT  Ï


OFDFTTÈSJP EFNPOTUSÈMPT FN VNB MJOHVBHFN EF QSPHSBNBÎÍP RVF
TFHVFPQBSBEJHNBPSJFOUBEPBPCKFUP/FTUFDBTP OBEBNFMIPSRVF
VTBS +BWB F $ DPNP MJOHVBHFOT EF FYFNQMP  QPJT TÍP BT NBJT
VUJMJ[BEBTOPNFSDBEPOPNPNFOUP

"MÏN EF BQSFTFOUBS UPEPT PT DPODFJUPT CBTFT EF 00  WBNPT


UBNCÏN JOJDJBS P MFJUPS FN BMHVNBT CPBT QSÈUJDBT OP VTP EFTUF
QBSBEJHNB EF QSPHSBNBÎÍP 1BSB JTUP  VTBSFNPT VN FYFNQMP
QSÈUJDPEBWJEBSFBM*OJDJBMNFOUF QFOTFJUBNCÏNFNDPMPDBSBMHVOT
DPODFJUPT BWBOÎBEPT OP VTP EB 0SJFOUBÎÍP B 0CKFUPT 1PSÏN  OP
QSPDFTTP EF QFTRVJTB EP NBUFSJBM CJCMJPHSÈGJDP  UFSNJOFJ NF
EFQBSBOEPDPNPMJWSP0SJFOUBÎÍPB0CKFUPTF40-*%QBSB/JOKBT
EPDPMFHB.BVSÓDJP"OJDIF7JRVFFTTFMJWSPUJOIBKVTUBNFOUFPRVF
RVFSJBGBMBSFKÈFTUBWBEJUPEFVNBGPSNBNVJUPCFNFMBCPSBEB

"MÏN EFMF  P MJWSP 0CKFDU0SJFOUFE "OBMZTJT BOE %FTJHO ‰ "


#SBJO 'SJFOEMZ (VJEF UP 00"%  EB TÏSJF )FBE 'JSTU  UBNCÏN Ï
NVJUP CPN TPCSF FTUB QBSUF &OUÍP EFDJEJ OÍP NBJT FTDSFWFS TPCSF
JTUP  NBT BDPOTFMIP GPSUFNFOUF B MFJUVSB EFTUFT MJWSPT BQØT P NFV
0V TFKB  FTUF MJWSP WBJ EP CÈTJDP BP JOUFSNFEJÈSJP +È FTTFT PVUSPT
QPTTVFNDPOUFÞEPTVNQPVDPNBJTBWBOÎBEPT

&TUFMJWSPFTUÈFTUSVUVSBEPEBTFHVJOUFGPSNB

1SJNFJSPWBNPTUFSVNBSÈQJEBJOUSPEVÎÍPTPCSFPRVF
ÏFQPSRVFVTBNPTBQSPHSBNBÎÍP
%FQPJTWBNPTTBCFSBPSJHFNEB00
&NTFHVJEB WFSFNPTQPSRVFVTÈMB
"QØTJTTP PRVFB00OPTEJTQPOJCJMJ[B
5FOEPFNNÍPTBTGFSSBNFOUBT DPNPVTÈMBT
$PNPVTÈMBTEBNFMIPSGPSNB
&QPSGJN RVBJTOPWPTDBNJOIPTEFWFNTFSUSJMIBEPT
&TQFSP RVF B MFJUVSB TFKB BHSBEÈWFM F FOSJRVFDFEPSB 5SBCBMIFJ
DPN B BKVEB EB $BTB EP $ØEJHP  EF GPSNB ÈSEVB QBSB FYQMJDBS EB
GPSNBNBJTBNJHÈWFMFJOTUJHBOUFPTDPODFJUPTEB00&TUFMJWSPÏB
SFBMJ[BÎÍPEFVNQSPKFUPRVFWJTBGPSOFDFSCBTFTTØMJEBTOPVTPEB
00 F MFWBS RVBMRVFS QSPKFUP F QSPGJTTJPOBM  EF 5* F EP SBNP EF
EFTFOWPMWJNFOUP BPTVDFTTP"HSBEFÎPBFTDPMIBEFTUFMJWSP

.VJUPPCSJHBEPF

2VFBGPSÎBFTUFKBDPNWPDЉ0CJ8BO,FOPCJ
Casa do Código Sumário

4VNÈSJP

*OUSPEVÎÍP 

6NCSFWFIJTUØSJDPEB0SJFOUBÎÍPB0CKFUPT 
0DPODFJUPEF4JNVMBÎÍP 
%B/PSVFHBQBSBPNVOEP 
"OPWBSPVQBHFNEB0SJFOUBÎÍPB0CKFUPT 
0RVFWFNQFMBGSFOUF 

1PSRVFVTBSB0SJFOUBÎÍPB0CKFUPT 
3FÞTP 
$PFTÍP 
"DPQMBNFOUP 
(BQTFNÉOUJDP 
3FTVNJOEP 

*OUSPEVÎÍPB0SJFOUBÎÍPB0CKFUPT 
%FGJOJÎÍP 
0TGVOEBNFOUPT 
3FTVNJOEP 

0TDPODFJUPTFTUSVUVSBJT 
"DMBTTF 
0BUSJCVUP 
Sumário Casa do Código

0NÏUPEP 
0PCKFUP 
0TUJQPTEFBUSJCVUPFNÏUPEP 
"NFOTBHFN 
1VUUJOHJUBMMUPHFUIFS 
3FTVNJOEP 

0TDPODFJUPTSFMBDJPOBJT 
)FSBOÎB 
"BTTPDJBÎÍP 
"JOUFSGBDF 
3FTVNJOEP 

0TDPODFJUPTPSHBOJ[BDJPOBJT 
1BDPUFT 
7JTJCJMJEBEFT 
3FTVNJOEP 

"VUJMJ[BÎÍP 
$PMPDBOEPBNÍPOBNBTTB 
&TUBNPTRVBTFBDBCBOEP 

#PBTQSÈUJDBTOPVTPEB0SJFOUBÎÍPB0CKFUPT 
#1TFQSFPDVQFDPNBDPFTÍPFBDPQMBNFOUP 
#1VTFTUSJOHTDPNQBSDJNÙOJB 
#1TFKBPCKFUJWP OÍPUFOUFQSFWFSPGVUVSP 
#1DSJFTFVTNÏUPEPTDPNDBSJOIP 
#1DPOIFÎBFVTFDPMFÎÜFT 
#1TPCSFTDSFWBFRVBMT IBTI$PEFFUP4USJOH 
#1ËTWF[FTÏNFMIPSBTTPDJBSFNWF[EFIFSEBS 
#1TFGPSPDBTP FWJUFBIFSBOÎBPV QFMPNFOPT B
TPCSFTDSJUB 
Casa do Código Sumário

#1TFQSFPDVQFDPNPFODBQTVMBNFOUP 
#1TBJCBVTBSJOUFSGBDFFDMBTTFBCTUSBUBOPNPNFOUPDFSUP
#1VTFFBCVTFEBTGBDJMJEBEFTGPSOFDJEBTQPS 
MJOHVBHFOTPSJFOUBEBTBPCKFUPT 
#1DPOIFÎBFVUJMJ[FBTDPOWFOÎÜFTEFDPEJGJDBÎÍPEB
MJOHVBHFNFTDPMIJEB 
'JOBMNFOUFBDBCPV 

0RVFWFNEFQPJTEB0SJFOUBÎÍPB0CKFUP 
1BESÜFTEFQSPKFUP %FTJHO1BUUFSOT 
3FGBUPSBÎÍP 
6.-‰6OJGJFE.PEFMJOH-BOHVBHF -JOHVBHFNEF
.PEFMBHFN6OJGJDBEB 
0SJFOUBÎÍPBBTQFDUPT 
'SBNFXPSLT 
0VUSBTDPJTBTBNBJT 

3FGFSÐODJBTCJCMJPHSÈGJDBT 
CAPÍTULO 1

*/530%6±°0

1PS RVF QSPHSBNBS  (FSBMNFOUF JTUP Ï GFJUP RVBOEP TF QSFDJTB


BVUPNBUJ[BS QSPDFTTPT EP OPTTP EJB B EJB  QBSB BTTJN TF HBOIBS
UFNQP F TFS QPTTÓWFM TF EFEJDBS B PVUSBT BUJWJEBEFT RVF OFDFTTJUBN
EFVNBNBJPSJOUFSWFOÎÍPIVNBOB0QSPDFTTPEFQSPHSBNBSQPEF
JOJDJBMNFOUF QBSFDFS DPNQMFYP F BCTUSBUP  NBT DPN P QBTTBS EF
UFNQP‰OBWFSEBEF QSÈUJDB‰WBJTFUPSOBOEPOBUVSBMBQPOUPEF
JEFOUJGJDBSTFVNiQSPHSBNBwFNRVBMRVFSMVHBS

1BSB QSPHSBNBSNPT  VTBNPT VNB MJOHVBHFN EF QSPHSBNBÎÍP 


RVFQPTTJCJMJUBJOGPSNBSBPDPNQVUBEPSDPNPFMFEFWFTFDPNQPSUBS
QBSB BTTJN DPOTFHVJSNPT BVUPNBUJ[BS P QSPDFTTP EFTFKBEP 1BSB
BUJOHJSNPT FTTF PCKFUJWP  EFWFNPT ‰ OPT EJBT EF IPKF ‰ VUJMJ[BS
VNB MJOHVBHFN EF QSPHSBNBÎÍP EF BMUP OÓWFM &TUB EJTQPOJCJMJ[B
DPNBOEPT QBMBWSBTDIBWFT  CFN QSØYJNPT EF VNB MJOHVBHFN
OBUVSBM $PN JTTP  P QSPDFTTP EF DPOWFSTBS DPN P DPNQVUBEPS Ï
GBDJMJUBEP  QPJT FTTBT QBMBWSBTDIBWFT GPSOFDFN VNB NBJPS DMBSF[B
EFDPNPTFEFWFPSRVFTUSBSPRVFPDPNQVUBEPSEFWFGB[FSQPSOØT

1 INTRODUÇÃO 1
&OUSFUBOUP  OFN TFNQSF GPJ BTTJN /PT QSJNØSEJPT EB
DPNQVUBÎÍP  FSB OFDFTTÈSJP VTBS DØEJHP EF NÈRVJOB QBSB
QSPHSBNBS  P RVF FSB DIBNBEP EF MJOHVBHFN EF CBJYP OÓWFM &TUB
VTBWB DBSUÜFT QFSGVSBEPT QBSB DPOWFSTBS DPN P DPNQVUBEPS &TTF
UJQPEFEJÈMPHPFSBQSPQÓDJPBFSSPT RVFUFSNJOBWBNQPSNJOBSB
QSPEVUJWJEBEF F BUÏ NFTNP B WPOUBEF EF TF USBCBMIBS DPN
DPNQVUBEPSFT

6NBEBTHSBOEFTWBOUBHFOTEPTVSHJNFOUPEFMJOHVBHFOTEFBMUP
OÓWFM  FN SFMBÎÍP B VNB MJOHVBHFN EF CBJYP OÓWFM  Ï P QSPDFTTP
DIBNBEP EF UFNQP EF DPNQJMBÎÍP 2VBOEP FYJTUJBN BQFOBT
MJOHVBHFOT EF CBJYP OÓWFM  RVF VTBWBN PT DBSUÜFT BOUFSJPSNFOUF
DJUBEPTQBSBGB[FSBFOUSBEBEFEBEPTOPDPNQVUBEPS PQSPDFTTPEF
QSPHSBNBÎÍP FSB NVJUP BSUFTBOBM  QSBUJDBNFOUF VN QSPDFTTP EF
UFOUBUJWB F FSSP &OUÍP  BT GBMIBT EPT QSPHSBNBT TØ QPEFSJBN TFS
WFSJGJDBEBT OP RVF TF DIBNB EF UFNQP EF FYFDVÎÍP  PV TFKB  OP
UFNQP FN RVF P QSPHSBNB SFBMNFOUF Ï QSPDFTTBEP QFMB $16 EP
DPNQVUBEPS

$PN B JOUSPEVÎÍP EP UFNQP EF DPNQJMBÎÍP  UPSOPVTF QPTTÓWFM


QSPDFTTBSPDØEJHPJOJDJBMNFOUFGFJUPEFGPSNBQSÏWJB QBSBBTTJNTF
GB[FSBTEFWJEBTWFSJGJDBÎÜFTFBUFTUBSRVFPDPNQVUBEPSDPOTFHVJSJB
SFBMJ[BS PT QBTTPT EFTFKBEPT DPN TVDFTTP /FTUF QSPDFTTP EF
DPNQJMBÎÍP PRVFGPJEFGJOJEP‰FTUSVUVSBEPFQSPHSBNBEP‰OÍP
QPEFSJBNVEBSRVBOEPPQSPHSBNBDPNFÎBSBGVODJPOBS"GJHVSBB
TFHVJS EFNPOTUSB P QSPDFTTP EF DPNQJMBÎÍP F FYFDVÎÍP EF VN
QSPHSBNB 1BSB VN NBJPS FOUFOEJNFOUP TPCSF FTUF NFDBOJTNP 
TVHJSPBMFJUVSBEPMJWSPEF1SJODFF5PTDBOJ  

2 1 INTRODUÇÃO
'JHVSB1SPDFTTPEFDPNQJMBÎÍPFFYFDVÎÍPEFVNQSPHSBNB

*OEFQFOEFOUFNFOUF EF VTBS VNB MJOHVBHFN EF BMUP PV CBJYP


OÓWFM  Ï QSFDJTP TFHVJS VN DPOKVOUP EF QBTTPT DPN VNB MØHJDB
FTQFDÓGJDB ‰ VNB TFRVÐODJB EF QBTTPT PSRVFTUSBEPT ‰ QBSB
DVMNJOBS OB BVUPNBUJ[BÎÍP EF VN QSPDFTTP " FTUF DPOKVOUP EF
QBTTPTEÈTFPOPNFEFBMHPSJUNP&TUFÏBCBTFEBQSPHSBNBÎÍP&
VN CPN BMHPSJUNP EFWF TFS HFOÏSJDP P TVGJDJFOUF QBSB QPEFS TFS
JNQMFNFOUBEPFNRVBMRVFSMJOHVBHFNEFQSPHSBNBÎÍP&TUBTVTBN
VOJEBEFT EF DØEJHPT DPN TJOUBYFT FTQFDÓGJDBT QBSB SFQSFTFOUBS UBJT
BMHPSJUNPT1BSBNBJTEFUBMIFTTPCSFBMHPSJUNPT BDPOTFMIPBMFJUVSB
EPMJWSPEF.FEJOBF'FSUJH  

&YJTUFNEJWFSTBTMJOHVBHFOTEFQSPHSBNBÎÍPFDBEBVNBQPTTVJ
QFDVMJBSJEBEFTEFBDPSEPDPNPQBSBEJHNBEFQSPHSBNBÎÍPRVFFTUB
JNQMFNFOUB &TTF QBSBEJHNB SFHF P NPEP DPNP P QSPHSBNBEPS
FYQSFTTBSÈ PT QBTTPT BMHPSJUNP  EP QSPDFTTP RVF EFTFKB
BVUPNBUJ[BS ² BUSBWÏT EFTUFT QBTTPT F TFHVJOEP BT OPSNBT EP
QBSBEJHNB VTBEP  RVF P QSPHSBNBEPS FYQSFTTBSÈ B GPSNB DPNP P
QSPHSBNBEFWFSÈFYFDVUBSQBSBBUJOHJSPPCKFUJWPBMNFKBEP

$BEBQBSBEJHNBQSPQÜFVNBWJTÍP VNNPEPRVFQPTTJCJMJUBBP
QSPHSBNBEPS EJ[FS DPNP P QSPHSBNB EFWF TF DPNQPSUBS 1PSÏN
JOEFQFOEFOUFNFOUF EFTUF NPEP  VN DPODFJUP CÈTJDP Ï DPNVN B
FTTBT MJOHVBHFOT B QSPHSBNBÎÍP JNQFSBUJWB &TUB GPJ EFGJOJEB QPS
+PIO WPO /FVNBOO F QSFDPOJ[B RVF TF EFWF EBS PSEFOT BP

1 INTRODUÇÃO 3
DPNQVUBEPS PVTFKB EFGJOJSEFGPSNBCFNGPSNBMJ[BEBFTFRVFODJBM
PT QBTTPT B TFSFN DVNQSJEPT  F BTTJN DPOTFHVJS DPEJGJDBS VN
BMHPSJUNP &TUF QSJODÓQJP GPJ EFGFOEJEP QPS FMF QBSB QPTTJCJMJUBS B
DSJBÎÍP EF MJOHVBHFOT EF QSPHSBNBÎÍP EF BMUP OÓWFM ‰ DPNP KÈ
UJOIBTJEPEJUPBOUFSJPSNFOUF‰RVFTFBTTFNFMIBTTFNBMJOHVBHFOT
OBUVSBJT QBSBBTTJNGBDJMJUBSTVBVTBCJMJEBEF

%PT NVJUPT QBSBEJHNBT EF QSPHSBNBÎÍP RVF FYJTUFN ‰


TFHVJOEP B QSPHSBNBÎÍP JNQFSBUJWB ‰  VN QBSUJDVMBSNFOUF TF
UPSOPV P NBJT VTBEP QBSB JOJDJBS PT BTQJSBOUFT B GVUVSPT
QSPHSBNBEPSFT EF TVDFTTP  P 1BSBEJHNB &TUSVUVSBEP &TUF GPJ
BEPUBEPQFMBTVBTJNQMJDJEBEFEFFYQSFTTBSPTBMHPSJUNPT&MFRVBTF
QPTTVJ VNB USBOTJÎÍP EJSFUB FOUSF B EFTDSJÎÍP EP BMHPSJUNP F B
QSPHSBNBÎÍP OBT MJOHVBHFOT RVF TFHVFN FTUFT QBSBEJHNBT "T
MJOHVBHFOTNBJTGBNPTBTRVFPTFHVFNTÍP C F Pascal &MBTTÍP
EF TJNQMFT NBOJQVMBÎÍP F SFRVFSFN CBJYP QPEFS DPNQVUBDJPOBM
QBSB TFSFN FYFDVUBEBT %FWJEP B JTUP  GPSBN MJOHVBHFOT NVJUP
VUJMJ[BEBT OPT QSJNØSEJPT EB DPNQVUBÎÍP QBSB DSJBS QSPHSBNBT
DPNFSDJBJT F BDBEÐNJDPT RVF FYFDVUBWBN FN DPNQVUBEPSFT RVF
FSBNNVJUPMJNJUBEPTFNNFNØSJBFQSPDFTTBNFOUP

1PSÏN  DPN P QBTTBS EP UFNQP  OPWBT OFDFTTJEBEFT OB


BVUPNBÎÍPEFQSPDFTTPTGPSBNTVSHJOEPF BUSFMBEPBJTTP PQPEFS
DPNQVUBDJPOBM EPT DPNQVUBEPSFT GPJ BVNFOUBOEP
TJHOJGJDBUJWBNFOUF $PN JTTP  B EFNBOEB QPS OPWPT QSPHSBNBT
OPWPTQBSBEJHNBT RVFQVEFTTFNNFMIPSFYQSFTTBSBTOFDFTTJEBEFT
EPOPTTPEJBBEJBFUBNCÏNBQSPWFJUBSEFGPSNBNBJTFGJDJFOUFPT
DPNQVUBEPSFTDSFTDFV FBDPNQVUBÎÍP‰NBJTQSFDJTBNFOUFBÈSFB
EF QSPHSBNBÎÍP ‰ DMBNPV QPS VN QBSBEJHNB RVF QVEFTTF
QPTTJCJMJUBS P BMDBODF EFTUFT PCKFUJWPT & GPJ EFWJEP B JTTP RVF P
1BSBEJHNB0SJFOUBEPB0CKFUPTVSHJV&TUFWFJPDPNBNJTTÍPEF
DPCSJS BT JOTVGJDJÐODJBT FYJTUFOUFT OPT QBSBEJHNBT BOUFSJPSNFOUF
DJUBEPT

4 1 INTRODUÇÃO
0 1BSBEJHNB 0SJFOUBEP B 0CKFUP 100  UFN DPNP QSJODJQBM
DBSBDUFSÓTUJDBVNBNFMIPSFNBJPSFYQSFTTJWJEBEFEBTOFDFTTJEBEFT
EP OPTTP EJB B EJB $PNP TFSÈ WJTUP NBJT BEJBOUF OP MJWSP  FMF
QPTTJCJMJUBDSJBSVOJEBEFTEFDØEJHPNBJTQSØYJNBTEBGPSNBDPNP
QFOTBNPTFBHJNPT BTTJNGBDJMJUBOEPPQSPDFTTPEFUSBOTGPSNBÎÍP
EBTOFDFTTJEBEFTEJÈSJBTQBSBVNBMJOHVBHFNPSJFOUBEBBPCKFUPT

%ÈTFPOPNFEF1SPHSBNBÎÍP0SJFOUBEBB0CKFUPBPQSPDFTTP
EF VTBS VNB MJOHVBHFN PSJFOUBEB B PCKFUP 1FSDFCFTF RVF B TJHMB
100UFSNJOBTFGVOEJOEPFOUSFPQBSBEJHNBFBQSPHSBNBÎÍP/P
EFDPSSFS EP MJWSP  TFSÍP FYQMJDBEPT UPEPT PT TFVT DPODFJUPT  F
WFSFNPTDPNPB0SJFOUBÎÍPB0CKFUPT 00 USBCBMIBQBSBBUJOHJSPT
PCKFUJWPTBRVBMTFQSPQÜF

1PS GJN  TFSÍP EFNPOTUSBEBT BMHVNBT CPBT QSÈUJDBT EF VTP EB


00 QBSBQPEFSNPTVUJMJ[ÈMBEFGPSNBFGJDJFOUFFFGJDB[$PNJTTP
Ï EF TF FTQFSBS RVF PT QSPHSBNBT GFJUPT TFKBN EF BMUB RVBMJEBEF F
TVQSBN UPEBT BT OFDFTTJEBEFT EF TFVT DMJFOUFT EB NFMIPS GPSNB
QPTTÓWFM&TQFSBTFUBNCÏNRVFPQSPDFTTPEFEFTFOWPMWJNFOUPTFKB
NBJTQSPEVUJWP FBNBOVUFOÎÍPEFTJTUFNBTPSJFOUBEPTBPCKFUPTTF
UPSOFNBJTGÈDJM

#PBMFJUVSB

1 INTRODUÇÃO 5
CAPÍTULO 2

6.#3&7&)*45»3*$0%"
03*&/5"±°0"0#+&504

"EÏDBEBÏ"DPNQVUBÎÍPDPNPBDPOIFDFNPTIPKFBJOEB
ÏVNTPOIP0TDPNQVUBEPSFTTÍPNÈRVJOBTHJHBOUFTDBTFEFQPVDB
DBQBDJEBEFEFQSPDFTTBNFOUPFBSNB[FOBNFOUP NBTNFTNPBTTJN
KÈ DPNFÎBWBN B DVNQSJS B TVB QSJODJQBM SB[ÍP EF FYJTUÐODJB
BVUPNBUJ[BSOPTTPEJBBEJB1BSBBUJOHJSFTUFPCKFUJWP FSBQSFDJTP‰
FIPKFBJOEBωJOGPSNBSBPDPNQVUBEPSPRVFFDPNPFMFEFWFSJB
FYFDVUBSBTBUJWJEBEFT1PSÏN OFTUFQFSÓPEPBTGPSNBTEFFYQSFTTBS
FTTBT EFNBOEBT BJOEB FTUBWBN FOHBUJOIBOEP .BT KÈ TVSHJB B
UÏDOJDBRVFGVUVSBNFOUFTFUPSOBSJBBNBJTVUJMJ[BEBB0SJFOUBÎÍPB
0CKFUPT

0$0/$&*50%&4*.6-"±°0
0QSJODJQBMJOTVNPQBSBB0SJFOUBÎÍPB0CKFUPTEBGPSNBDPNP
FMBÏDPOIFDJEBIPKFGPJPDPODFJUPEF4JNVMBÎÍP RVFOPNVOEPEB
DPNQVUBÎÍPTJHOJGJDBTJNVMBS PTFWFOUPT EPEJBB EJBFN TJTUFNBT
EJHJUBJT " GPSNBMJ[BÎÍP EB UFPSJB EB TJNVMBÎÍP QBSB TJTUFNBT
EJHJUBJT DPNQVUBEPSFT ÏDSFEJUBEBB,FJUI5PDIFS  FN5IF
"SUPG4JNVMBUJPO/FTUFUSBCBMIP FMFVTBNPEFMPTNBUFNÈUJDPT‰KÈ
TBCFNPT RVF DPNQVUBEPSFT TÍP ØUJNPT DPN OÞNFSPT ‰ QBSB
EFTDSFWFS DPNP PT DPNQVUBEPSFT QPEFSJBN DPNQSFFOEFS B MØHJDB
EF TJNVMBÎÍP EF FWFOUPT EJÈSJPT "MÏN EB EFGJOJÎÍP BOUFSJPSNFOUF
DJUBEB ÏGFJUBVNBDMBTTJGJDBÎÍPFNUJQPTEFTJNVMBÎÍP /"/$&

6 2 UM BREVE HISTÓRICO DA ORIENTAÇÃO A OBJETOS


 

%JTDSFUF &WFOUT 4JNVMBUJPO ‰ 6TB NPEFMPT MØHJDPT F


NBUFNÈUJDPT QBSB SFUSBUBS NVEBOÎBT EF FTUBEP BUSBWÏT
EPUFNQP BTTJNDPNPPTSFMBDJPOBNFOUPTRVFMFWBSBN
BFTTBTNVEBOÎBT

$POUJOVPVT 4JNVMBUJPO ‰ 6TB FRVBÎÜFT NBUFNÈUJDBT


RVF OÍP TF QSFPDVQBN FN SFQSFTFOUBS NVEBOÎBT EF
FTUBEPT F SFMBDJPOBNFOUPT  NBT BQFOBT NBOJQVMBS
EBEPT CSVUPT RVF TFSWJSBN EF JOTVNPT QBSB PVUSPT
QSPDFTTBNFOUPT

.POUF$BSMP4JNVMBUJPO‰6TBNPEFMPTEFJODFSUF[B
FN RVF B SFQSFTFOUBÎÍP EF UFNQP OÍP Ï OFDFTTÈSJB
6NBNFMIPSEFGJOJÎÍPÏVNQSPDFTTPPOEFBTPMVÎÍPÏ
BUJOHJEB BUSBWÏT EF UFOUBUJWB F FSSP  F UBM TPMVÎÍP TF
BQMJDBSÈTPNFOUFBPQSPCMFNBFTQFDÓGJDP

" QBSUJS EFTUBT EFGJOJÎÜFT  QPEFTF QFSDFCFS RVF B 00 EFSJWPV


EBEJTDSFUFFWFOUTTJNVMBUJPO QPJTKÈTFQSFPDVQBWBDPNBNVEBOÎB
EF FTUBEP ‰ NVEBOÎBT EF JOGPSNBÎÜFT OP EFDPSSFS EP
QSPDFTTBNFOUP F SFMBDJPOBNFOUPT  BT USPDBT EF JOGPSNBÎÜFT QBSB
HFSBSOPWBTJOGPSNBÎÜFT

%"/036&("1"3"0.6/%0
"MÏN EF UPEBT BT MFOEBT  NJUPMPHJBT EB &SB 7JLJOH F EP B)B
VNBSFHJÍPEB&TDBOEJOÈWJB NBJTQSFDJTBNFOUFB/PSVFHB EFJYPV
VN PVUSP HSBOEF MFHBEP B 0SJFOUBÎÍP B 0CKFUPT &SB   F OP
$FOUSP/PSVFHVÐTEF$PNQVUBÎÍP /PSXFHJBO$PNQVUJOH$FOUFS
‰ /$$  EB 6OJWFSTJEBEF EF 0TMP IBWJB EPJT QFTRVJTBEPSFT RVF
BDFJUBSBNPQSPKFUP EFTBGJP EFDSJBSVNBMJOHVBHFNEFTJNVMBÎÍP
EFFWFOUPTEJTDSFUPT‰EJTDSFUFFWFOUTJNVMBUJPO&MFTFSBN,SJTUFO

2.2 DA NORUEGA PARA O MUNDO 7


/ZHBBSEF0MF+PIBO%BIM

/ÍP TVSQSFFOEFOUFNFOUF FMFT EFDJEJSBN CBUJ[BS TVB MJOHVBHFN


EF 4*.6-"  RVF NBJT UBSEF GPJ DIBNBEB EF 4*.6-" * EFWJEP B
VNB SFGPSNVMBÎÍP F  FN TVB TFHVOEB F GJOBM WFSTÍP  4*.6-" 
&TUBÞMUJNBÏSFDPOIFDJEBDPNPBQSJNFJSBMJOHVBHFNEFSFOPNFOP
RVF EJ[ SFTQFJUP BP VOJWFSTP EB 0SJFOUBÎÍP B 0CKFUPT 0 USFDIP B
TFHVJS  QVCMJDBEP FN " IJTUPSZ PG EJTDSFUF FWFOUT TJNVMBUJPO
QSPHSBNNJOH MBOHVBHFT /"/$&    FYQMJDB CFN P QPSRVÐ
EFTTBDPOTJEFSBÎÍP

"TDPOUSJCVJÎÜFTUÏDOJDBTEF4*.6-"TÍPJNQSFTTJPOBOUFT RVBTF
JODSÓWFJT%BIMF/ZHBBSE FNTVBUFOUBUJWBEFDSJBSVNBMJOHVBHFN
POEF PT PCKFUPT EP NVOEP SFBM TFSJBN EF GPSNB QSFDJTB F
OBUVSBMNFOUF EFTDSJUPT  BQSFTFOUPV BWBOÎPT DPODFJUVBJT RVF TF
UPSOBSJBN SFBMJEBEF TPNFOUF RVBTF EVBT EÏDBEBT NBJT UBSEF UJQP
BCTUSBUP EF EBEPT  P DPODFJUP EF DMBTTF  IFSBOÎB  P DPODFJUP EF
DPSPUJOB NÏUPEP  <> B DSJBÎÍP  FYDMVTÍP F PQFSBÎÜFT EF
NBOJQVMBÎÍPFNPCKFUPTTÍPBQFOBTVNFYFNQMP

6NEPTDPODFJUPTCBTFTOBDSJBÎÍPEF4*.6-"*F4*.6-"
GPJ EF RVF B OPWB MJOHVBHFN EFWFSJB TFS PSJFOUBEB B QSPCMFNBT F
OÍP PSJFOUBEB B DPNQVUBEPSFT *TTP JNQMJDPV VN BVNFOUP EB
FYQSFTTJWJEBEF F GBDJMJEBEF EF VTP EB MJOHVBHFN 4*.6-" * GPJ
JOJDJBMNFOUF CBTFBEB FN '0353"/  P RVF JOGFMJ[NFOUF TF
DPOGJHVSPVFNVNBNÈEFDJTÍPEFQSPKFUP'0353"/QPTTVÓBVNB
FTUSVUVSB EF CMPDP RVF OÍP QPTTJCJMJUBWB B FYQSFTTJWJEBEF FTTFODJBM
QBSB B BCPSEBHFN EFTFKBEB QPS FMFT 'PJ B QBSUJS EFTTB EFGJDJÐODJB
RVF 4*.6-"   RVF TF CBTFPV FN "-(0  QPS QPTTVJS VNB
FTUSVUVSBEFCMPDPTFEBEPTNBJTBNJHÈWFM GPJMBOÎBEB

0 JNQBDUP DVMUVSBM RVF FTTB OPWB MJOHVBHFN USPVYF GPJ


QSJNPSEJBM QBSB P TVDFTTP F DPOTPMJEBÎÍP EP SFDÏNDSJBEP
QBSBEJHNB EF EFTFOWPMWJNFOUP &NCPSB 4*.6-" * F 4*.6-" 
TFKBNDPOTJEFSBEBTBTMJOHVBHFOTRVFEFSBNPSJHFNB00DPNPB

8 2.2 DA NORUEGA PARA O MUNDO


DPOIFDFNPT IPKF  OÍP TF QPEF EFJYBS EF DJUBS (144 ‰ (FOFSBM
1VSQPTF 4ZTUFN 4JNVUBMPS (03%0/    F 4*.4$3*15
."3,08*5;    DPNP DPQBSUJDJQBOUFT EBT PSJHFOT EB
0SJFOUBÎÍPB0CKFUPT

/B GJHVSB B TFHVJS  TÍP BQSFTFOUBEPT /ZHBBSE F %BIM "NCPT


GPSBN DPOEFDPSBEPT DPN P QSÐNJP 5VSJOH "XBSE FN  "QØT
EÏDBEBT EF QBSDFSJB OP EFTFOWPMWJNFOUP EB DPNQVUBÎÍP  BNCPT
GBMFDFSBNFNEBUBTNVJUPQSØYJNBTFN1PSÏN PMFHBEPRVF
EFJYBSBNQBSBBDPNQVUBÎÍPOVODBTFFYUJOHVJSÈ

'JHVSB/ZHBBSEF%BIM

 " /07" 3061"(&. %" 03*&/5"±°0 "


0#+&504
&NCPSB4*.6-"TFKBDPOTJEFSBEBBMJOHVBHFNRVFPSJHJOPV
B 00 F  DPN JTTP  UFOIB NPEJGJDBEP  EF GPSNB SBEJDBM  B NBOFJSB
DPNP TF EFTFOWPMWJB TPGUXBSF BQMJDBÎÜFT  BUÏ BRVFMF NPNFOUP
BJOEB TF UJOIB P TFHVJOUF QSPCMFNB B DPNQVUBÎÍP BJOEB FSB
GFDIBEB &NCPSB BT MJOHVBHFOT DJUBEBT OB TFÎÍP BOUFSJPS UFOIBN
JNQBDUBEP EF GPSNB DPOTJEFSÈWFM OB FWPMVÎÍP EBT MJOHVBHFOT EF

2.3 A NOVA ROUPAGEM DA ORIENTAÇÃO A OBJETOS 9


QSPHSBNBÎÍP  FMBT OÍP QPEJBN TFS VUJMJ[BEBT FN RVBMRVFS
DPNQVUBEPS

1PS FYFNQMP  (144 GPJ DSJBEB QBSB JOJDJBMNFOUF SPEBS FN


NÈRVJOBTEB*#.    +È4*.6-"SPEBWBFNVNB
6/*7"$  $PN JTTP  FNCPSB BT MJOHVBHFOT USPVYFTTFN NBJT
GBDJMJEBEFT OP QSPDFTTP EF EFTFOWPMWJNFOUP  BJOEB FYJTUJB P
QSPCMFNB EB QPSUBCJMJEBEF &TTBT MJOHVBHFOT FSBN FTQFDÓGJDBT QBSB
PTDPNQVUBEPSFTRVFGPSBNVTBEPTQBSBEFTFOWPMWÐMBT

&OUSFUBOUP  OB EÏDBEB EF   "MBO ,BZ  VN QFTRVJTBEPS EB


9FSPY 1BSD FN 1BMP "MUP OB $BMJGØSOJB  SFDFCFV P QSPKFUP EF DSJBS
VNB MJOHVBHFN RVF QVEFTTF TFS VTBEB OPT FNFSHFOUFT 1$T ‰
1FSTPOBM $PNQVUFST 'PJ CBTFBEP OFTUB QSFNJTTB RVF ,BZ DSJPV
4NBMMUBML  RVF FWPMVJV BUÏ 4NBMMUBML &TUB Ï DPOTJEFSBEB B
MJOHVBHFNRVF FGFUJWBNFOUF UPSOPVB00DPOIFDJEBBUÏPTEJBTEF
IPKF &MB USPVYF GBDJMJEBEFT DPNP JOUFSGBDF HSÈGJDB BNJHÈWFM  VN
BNCJFOUF EF EFTFOWPMWJNFOUP JOUFHSBEP *%&  DBQBDJEBEF EF TFS
FYFDVUBEB FN NÈRVJOBT EF QFRVFOP QPSUF  FOUSF PVUSBT
DBSBDUFSÓTUJDBT 4NBMMUBML MFWPV B 0SJFOUBÎÍP B 0CKFUPT B VN
QBUBNBSRVF BUÏBRVFMFNPNFOUP OÍPTFQSPKFUBWBQBSBMJOHVBHFOT
EFTUFQBSBEJHNB

"MÏN EPT DPODFJUPT CÈTJDPT ‰ DPNP DMBTTF  PCKFUP  BUSJCVUPT


NÏUPEPT FUD ‰  FMB FWPMVJV B VN DPODFJUP RVF UVEP P RVF B
MJOHVBHFNNBOJQVMBWBFSBNPCKFUPT$PNJTTP NÏUPEPT BUSJCVUPT
FUDGPSBNFMFWBEPTBPQBUBNBSEFPCKFUPTFNTJFOÍPDPNPBQFOBT
DPOTUJUVJOUFT EFTUF &NCPSB FTTB OÍP TFKB B BCPSEBHFN EBT
MJOHVBHFOTPSJFOUBEBTBPCKFUPTRVFEPNJOBNPNFSDBEPEFIPKF‰
DPNP Java  C#  Python  FUD ‰  4NBMMUBML SFWPMVDJPOPV P
QSPDFTTP EF DSJBÎÍP EF BQMJDBÎÜFT NBJT BNJHÈWFJT F EF GPSNB NBJT
QSPEVUJWB 'FSSBNFOUBT RVF VTBNPT IPKF  DPNP &DMJQTF  /FU#FBOT
7JTVBM4UVEJP/FUFUD UJWFSBNBMHVNBJOGMVÐODJBEPTBNCJFOUFTEF
EFTFOWPMWJNFOUPEF4NBMMUBML

10 2.3 A NOVA ROUPAGEM DA ORIENTAÇÃO A OBJETOS


026&7&.1&-"'3&/5&
"QØTFTTFTEPJTDBQÓUVMPTEFJNFSTÍPOPNVOEPEBQSPHSBNBÎÍP
F EB 0SJFOUBÎÍP B 0CKFUPT  POEF GPSBN WJTUPT P QPSRVÐ EF
QSPHSBNBSNPTFDPNPQSPHSBNBSNPTFNBMUPOÓWFM QPEFTVSHJSB
QFSHVOUBNBTDPNPQSPHSBNBS CFN DPNB0SJFOUBÎÍPB0CKFUPT
%F BHPSB FN EJBOUF  TFSÈ JOJDJBEP P QSPDFTTP EF FYQMJDBÎÍP EF QPS
RVF B 00 Ï DPOTJEFSBEB B GPSNB NBJT BNJHÈWFM EF SFQSFTFOUBS PT
QSPCMFNBTEPEJBBEJB QBSBEFQPJTTFSFNEFTDSJUPTTFVTDPODFJUPT F
GJOBMNFOUF BQSFTFOUBEBT BT EJDBT EF DPNP VTÈMB NFMIPS 1PS GJN
UBNCÏN TFSÍP BQSFTFOUBEPT BMHVOT DPODFJUPT RVF EFWFN TFS
BQSFOEJEPTBQØTB0SJFOUBÎÍPB0CKFUPT

.ÍPTËPCSB

2.4 O QUE VEM PELA FRENTE 11


CAPÍTULO 3

10326&64"3"
03*&/5"±°0"0#+&504

$PNPKÈUJOIBTJEPWJTUPOPDBQÓUVMP*OUSPEVÎÍP PQBSBEJHNB
FTUSVUVSBEP GPJ P QSFEFDFTTPS EP PSJFOUBEP B PCKFUPT 'PJ WJTUB
UBNCÏN VNB FYQMJDBÎÍP SÈQJEB F CÈTJDB TPCSF P QPSRVÐ EF TVB
HSBOEF BDFJUBÎÍP "MÏN EP RVF KÈ GPJ DJUBEP  IÈ BJOEB VNB PVUSB
DBSBDUFSÓTUJDB  UBMWF[ GJMPTØGJDB  TPCSF FTUF QBSBEJHNB EF
QSPHSBNBÎÍP &MF EFGFOEF RVF Ï QPTTÓWFM SFQSFTFOUBS UPEP F
RVBMRVFSQSPDFTTPEPNVOEPSFBMBQBSUJSEBVUJMJ[BÎÍPEF BQFOBT
USÐTFTUSVUVSBTCÈTJDBT

4FRVÐODJB‰0TQBTTPTEFWFNTFSFYFDVUBEPTVNBQØT
P PVUSP  MJOFBSNFOUF 0V TFKB  P QSPHSBNB TFSJB VNB
TFRVÐODJBGJOJUBEFQBTTPT&NVNBVOJEBEFEFDØEJHP
UPEPT PT QBTTPT EFWFN TFS GFJUPT QBSB TF QSPHSBNBS P
BMHPSJUNPEFTFKBEP

%FDJTÍP ‰ 6NB EFUFSNJOBEB TFRVÐODJB EF DØEJHP


QPEF PV OÍP TFS FYFDVUBEB 1BSB JTUP  VN UFTUF MØHJDP
EFWF TFS SFBMJ[BEP QBSB EFUFSNJOBS PV OÍP TVB
FYFDVÎÍP"QBSUJSEJTUP WFSJGJDBTFRVFEVBTFTUSVUVSBT
EF EFDJTÍP UBNCÏN DPOIFDJEB DPNP TFMFÎÍP  QPEFN
TFSVUJMJ[BEBTB if-else FB switch 

*UFSBÎÍP ‰ ² B FYFDVÎÍP SFQFUJUJWB EF VN TFHNFOUP


QBSUF EPQSPHSBNB"QBSUJSEBFYFDVÎÍPEFVNUFTUF

12 3 POR QUE USAR A ORIENTAÇÃO A OBJETOS


MØHJDP  B SFQFUJÎÍP Ï SFBMJ[BEB VN OÞNFSP GJOJUP EF
WF[FT &TUSVUVSBT EF SFQFUJÎÍP DPOIFDJEBT TÍP for
foreach  while  do-while  repeat-until FOUSF
PVUSBTEFQFOEFOEPEBMJOHVBHFNEFQSPHSBNBÎÍP

*OJDJBMNFOUF  QPEFTF QFOTBS RVF FTUBT USÐT FTUSVUVSBT TÍP P


TVGJDJFOUFQBSBUSBCBMIBS&OUSFUBOUP BPDPNFÎBSNPTGB[FOEPVNB
BWBMJBÎÍPNBJTNJOVDJPTB MPHPÏQPTTÓWFMOPUBSBMHVNBTMJNJUBÎÜFT
1PS FYFNQMP  TPNPT BDPTUVNBEPT B VTBS MJOHVBHFOT FTUSVUVSBEBT
QBSB BQSFOEFS B QSPHSBNBS 0V TFKB  DSJBNPT QSPHSBNBT TJNQMFT
DPNP DÈMDVMP EF NÏEJB  TPNB EF OÞNFSPT  VN KPHVJOIP EB WFMIB
FUD1PSÏN RVBOUPNBJTDPNQMFYPPQSPHSBNBTFUPSOB NBJTEJGÓDJM
GJDBBNBOVUFOÎÍPEFVNBTFRVÐODJBPSHBOJ[BEBEFDØEJHP

& TF B OFDFTTJEBEF BHPSB GPS VN DPOUSPMF EF FTUPRVF  6NB
BQMJDBÎÍP EFTUF UJQP NBOJQVMBSÈ DPODFJUPT DPNP QSPEVUP  WFOEB
FTUPRVF  DMJFOUF FUD &TUF UFSÈ PQFSBÎÜFT DPNP WFOEFS  DPNQSBS
BUVBMJ[BS FTUPRVF  DBEBTUSBS QSPEVUP  DBEBTUSBS DMJFOUF FUD -PHP
OPUBTF RVF JTTP MFWBSÈ B VN FNBSBOIBEP EF DØEJHP  NVJUBT WF[FT
NVJUP FYUFOTP F QSPQÓDJP Ë EVQMJDBÎÍP 1BSB UFOUBS BNFOJ[BS FTTB
TJUVBÎÍP  QPEFNPT SFDPSSFS B NPEVMBSJ[BÎÜFT RVF FTTBT MJOHVBHFOT
QSPWFFN.BTPDØEJHPDPNFÎBSÈBGJDBSNBJTDPNQMFYP

&OUÍP  QFSDFCFTF RVF  FNCPSB B DPNVOJEBEF UFOIB


SBQJEBNFOUF BDFJUBEP F BEPUBEP UBM QBSBEJHNB EFWJEP Ë TVB
TJNQMJDJEBEF EF USBCBMIP  VNB TJUVBÎÍP BEWFSTB GPJ DSJBEB B
TJNQMJGJDBÎÍPEBSFQSFTFOUBÎÍPEBTSFBJTOFDFTTJEBEFTEPTQSPCMFNBT
B TFSFN BVUPNBUJ[BEPT MFWB B VNB GBDJMJEBEF EF FOUFOEJNFOUP F
SFQSFTFOUBÎÍP 1PSÏN  JTTP QPEF MFWBS B VNB DPNQMFYJEBEF EF
QSPHSBNBÎÍP  DBTP P OJDIP EF OFHØDJP EP TJTUFNB BMWP TFKB
DPNQMFYP

"MÏN EP DJUBEP  QFSDFCFTF UBNCÏN RVF  EFWJEP Ë TVB GSBDB


SFQSFTFOUBUJWJEBEFEPNVOEPSFBM BQSPHSBNBÎÍPFTUSVUVSBEBGPDB

3 POR QUE USAR A ORIENTAÇÃO A OBJETOS 13


OB SFQSFTFOUBÎÍP EPT EBEPT F PQFSBÎÜFT EFTBTTPDJBEBT 0V TFKB
EBEPT F PQFSBÎÜFT EF EJWFSTPT DPODFJUPT TÍP NJTUVSBEPT  OÍP
GJDBOEP DMBSP RVBM PQFSBÎÍP SFBMNFOUF FTUÈ MJHBEB BPT FTQFDÓGJDPT
EBEPT " GJHVSB B TFHVJS JMVTUSB FTTB TJUVBÎÍP F NPTUSB RVF B
0SJFOUBÎÍPB0CKFUPTUFNPPCKFUJWPEFDPMPDBSPSEFNOBDBTBDPN
BJOUFSBÎÍPFOUSFPCKFUPT RVFUFNTFVFTDPQPCFNEFMJNJUBEP

'JHVSB1SPHSBNBÎÍPFTUSVUVSBEBY1SPHSBNBÎÍPPSJFOUBEBBPCKFUP

" QBSUJS EF UVEP P RVF GPJ FYQPTUP  WFSJGJDBTF RVF FTUB
TJNQMJDJEBEF DVMNJOB FN BMHVNBT EJGJDVMEBEFT  UBMWF[ BUÏ
EFGJDJÐODJBT  RVF QPEFN POFSBS  UPSOBS NBJT DPNQMFYP  TFS NBJT
QSPQFOTP Ë HFSBÎÍP EF FSSPT OP QSPDFTTP EF EFTFOWPMWJNFOUP "
TFHVJS TFSÍP BQSFTFOUBEBT RVBJT TÍP FTTBT EFGJDJÐODJBT F  EF GPSNB
JOUSPEVUØSJB DPNPB00QSPWÐBTPMVÎÍPQBSBFMBT

3&Á40
2VBOEP OPT SFGFSJNPT B FTUF BTTVOUP  MPHP OPUBNPT RVF EVBT
DPJTBT QPEFN TFS SFVUJMJ[BEBT FN MJOHVBHFOT EF QSPHSBNBÎÍP
DPNQPSUBNFOUPT ‰ OP DBTP PQFSBÎÜFT  TFSWJÎPT  BÎÜFT ‰ F
JOGPSNBÎÜFT ‰ OP DBTP EBEPT  DBSBDUFSÓTUJDBT *OJDJBMNFOUF
QFOTBNPT RVF P SFÞTP EF DØEJHP OÍP Ï QPTTÓWFM FN MJOHVBHFOT
FTUSVUVSBEBT  EFWJEP Ë BVTÐODJB EP DPODFJUP EF IFSBOÎB /PT
DBQÓUVMPT      F   TFSÍP WJTUPT FTUF F NBJT PVUSPT DPODFJUPT EB
0SJFOUBÎÍPB0CKFUPT

14 3.1 REÚSO
1PSÏN  Ï QPTTÓWFM BUJOHJSTF SFÞTP TFN B 00  NBT B RVFTUÍP Ï
DPNPVNBMJOHVBHFNFTUSVUVSBEBQPTTJCJMJUBJTTP 1BSBJMVTUSBSVN
QPVDP TPCSF FTUF BTTVOUP  TFSÈ BQSFTFOUBEP VN FYFNQMP FN C
VNB MJOHVBHFN QFSUFODFOUF BP QBSBEJHNB FTUSVUVSBEP F
BNQMBNFOUFDPOIFDJEBFVTBEB

3FVUJMJ[BOEPEBEPT
*OJDJBOEP DPN P SFBQSPWFJUBNFOUP EF JOGPSNBÎÜFT  OP DBTP
EBEPT  FN C  QPEFNPT USBCBMIBS DPN  UJQPT EF JOGPSNBÎÜFT
WBSJÈWFJT HMPCBJT F MPDBJT /FTUF DBTP  BQFOBT BT WBSJÈWFJT HMPCBJT
TFSÍP BOBMJTBEBT  QPJT BT WBSJÈWFJT MPDBJT UÐN VN FTDPQP NVJUP
MJNJUBEP RVFÏBGVOÎÍPËRVBMQFSUFODF"QBSUJSEJTUP QFSDFCFTF
RVFOÍPÏQPTTÓWFMSFVTÈMBT

7PMUBOEP BT WBSJÈWFJT HMPCBJT  MPHP EF JOÓDJP KÈ TF QFSDFCF VNB
MJNJUBÎÍPTFGPSBNEFGJOJEBTBQFOBTWBSJÈWFJTHMPCBJT UBNCÏNOÍP
TFBUJOHJSÈPSFÞTP QPJTFMBTFTUÍPEFGJOJEBTTFQBSBEBNFOUFEFOUSP
EPDØEJHPFTÍPVTBEBTEFGPSNBEFTBTTPDJBEBT

%FTTBGPSNB WFNPTBOFDFTTJEBEFEFVUJMJ[BSVNBFTUSVUVSBQBSB
VOJS FTUBT JOGPSNBÎÜFT RVF UÐN VN DFSUP SFMBDJPOBNFOUP F
SFQSFTFOUBNVNDPODFJUPBTFSQSPHSBNBEPP struct 4ØDPNP
TFV VTP TFSÈ QPTTÓWFM BHMVUJOBS BT JOGPSNBÎÜFT TFNFMIBOUFT  QBSB
BTTJNJOJDJBSNPTVNQSPDFTTPEFSFÞTP"TFHVJS WFKBPDØEJHPFN
C RVFFYFNQMJGJDBPSFÞTPEFEBEPTDPN strutc 

typedef struct {
double valor;
} Pagamento;

typedef struct {
Pagamento pagamento;
double desconto;
} Debito;

typedef struct {
Pagamento pagamento;

3.1 REÚSO 15
int parcelas;
float juros;
} Credito;

typedef struct {
char[50] nome;
char[11] cpf;
Debito debito;
Cretido credito;
} Cliente;

"DPEJGJDBÎÍPBOUFSJPSEFNPTUSBVNBTJUVBÎÍPEPNVOEPSFBMEF
VNTJNQMFTTJTUFNBEFWFOEBT FNRVFVN Cliente QPEFQPTTVJS
EPJTUJQPTEFQBHBNFOUP Debito F Credito  " OFDFTTJEBEF EF
SFÞTPFODPOUSBTFOPTUJQPTEFQBHBNFOUP2VBOEPPQBHBNFOUPÏB
WJTUB EÏCJUP  QPEFNPT UFS VN EFTDPOUP  F RVBOEP Ï B QSB[P
DSÏEJUP UFNPTBRVBOUJEBEFEFQBSDFMBTFQPTTÓWFJTKVSPT

&OUSFUBOUP  UBOUP P QBHBNFOUP FN EÏCJUP RVBOUP P FN DSÏEJUP


QPTTVFN VN WBMPS B TFS QBHP 0V TFKB  OÍP TFSJB VNB CPB QSÈUJDB
GJDBSSFQFUJOEPFTUBWBSJÈWFMFNWÈSJPTMPDBJT KÈRVFDSÏEJUPFEÏCJUP
TÍPUJQPTEFQBHBNFOUP0NBJTDPSSFUPTFSJBSFVUJMJ[BSFTUFWBMPS

1BSBBUJOHJSJTUP GPJDSJBEPVN struct DIBNBEP Pagamento


DPOTUJUVÓEP EF VNB WBSJÈWFM double valor  1PSÏN  DPNP
Debito F Credito TÍPUJQPTEF Pagamento GPJQSFDJTPSFBMJ[BS
EFOUSP EFMFT B EFGJOJÎÍP EF VNB WBSJÈWFM EP UJQP Pagamento 
"TTJN  GPJ QPTTÓWFM BUJOHJS P SFÞTP BMNFKBEP $POUVEP  GJDB DMBSP
RVF  RVBOUP NBJT OFDFTTÈSJP P SFÞTP  NBJT TFSÈ OFDFTTÈSJP OPT
QSFPDVQBSNPTDPNEFGJOJS struct EFOUSPEF struct 

$PNPQBTTBSEPUFNQP FMFTQPEFNGJDBSDIFJPTEFSFEFGJOJÎÜFT
DBEB WF[ NBJT QSPQÓDJPT B FSSPT EF FTRVFDJNFOUP EF SFEFGJOJÎÜFT
1FOTF TF GPTTF OFDFTTÈSJP BHPSB UFSNPT UJQPT EF DMJFOUFT ‰ 1FTTPB
'ÓTJDB F 1FTTPB +VSÓEJDB ‰  TFSJB OFDFTTÈSJP NBJT VNB WF[ UFSNPT
TUSVDUT EFOUSP EF TUSVDUT  PV TFKB  NBJT QPTTÓWFJT QPOUPT EF GBMIBT
1PEFSÓBNPT BUÏ BQFMBS QBSB VN ctrl+c  ctrl+v  QBSB FWJUBS
PNJTTÜFT NBTNFTNPBTTJNÏQPTTÓWFMQFSDFCFSRVFÏVNQSPDFTTP

16 3.1 REÚSO
BSDBJDP  RVF QPEF TF UPSOBS DPNQMFYP F DBEB WF[ NBJT QSPQÓDJP B
GBMIBT

3FVUJMJ[BOEPDPNQPSUBNFOUPT
"HPSB Ï B WF[ EF GBMBS TPCSF P SFBQSPWFJUBNFOUP EF
DPNQPSUBNFOUPT  OP DBTP PQFSBÎÜFT  TFSWJÎPT  BÎÜFT &N C
RVBOEPÏOFDFTTÈSJPSFVTBSPQFSBÎÜFT QPEFNPTVUJMJ[BSPDPODFJUP
EF GVOÎÜFT &TUBT DSJBN QPSÎÜFT EF DØEJHP TVCSPUJOBT  RVF TÍP
EFGJOJEBT EF GPSNB TFQBSBEBT EFOUSP EB VOJEBEF EF DØEJHP
QSJODJQBM $PN JTTP  FWJUBTF B SFQFUJÎÍP EF VNB EFUFSNJOBEB
TFRVÐODJB EF QBTTPT EJWFSTBT WF[FT  QPEFOEP BTTJN DIBNÈMB FN
WÈSJPTMPDBJTEBVOJEBEFEFDØEJHPQSJODJQBM

.BT F TF GPS OFDFTTÈSJP RVF FTUB QPSÎÍP EF DØEJHP GPTTF VTBEB
FNPVUSBVOJEBEFEFDØEJHP $PNPÏEFDPOIFDJNFOUP BJEFJBEF
C  Ï RVF OP DIBNBEP .PEVMP 1SJODJQBM ‰ VOJEBEF EF DØEJHP OB
RVBM B BQMJDBÎÍP JOJDJB TVB FYFDVÎÍP ‰ UVEP TFKB GFJUP QBSB RVF P
QSPHSBNB BUJOKB TFV PCKFUJWP &OUÍP  TF GPS OFDFTTÈSJP SFBQSPWFJUBS
VNBQPSÎÍPEFDØEJHPFNPVUSP.PEVMP1SJODJQBM OÍPTFSÈQPTTÓWFM
EFBUJOHJSFTUFPCKFUJWPBQFOBTDPNPVTPEFGVOÎÜFT KÈRVFFMBTTF
MJNJUBNËVOJEBEFEFDØEJHPFNRVFTÍPEFGJOJEBT

/FTUFDBTP TFSÈOFDFTTÈSJPVUJMJ[BSPDPODFJUPEF headers  PT


GBNPTPT .h  EF C  $PN P VTP EFMFT  QPEFNPT DSJBS USFDIPT EF
DØEJHPT RVF QPEFN TFS SFVUJMJ[BEPT FN NBJT EF VN .ØEVMP
1SJODJQBM"MÏNEBDSJBÎÍPEF headers QPEFNPTUBNCÏNVTBSP
DPODFJUP EF NØEVMPT FN C  RVF QFSNJUFN DSJBS .ØEVMPT
1SJODJQBJTQBSBTFSFNSFVTBEPTFNPVUSPT.ØEVMPT1SJODJQBJT

.BT NBJT VNB WF[  B TJUVBÎÍP FN RVF Ï OFDFTTÈSJP DSJBS VNB
HSBOEF RVBOUJEBEF EF FTUSVUVSBT QBSB TVQSJS VNB OFDFTTJEBEF ‰
TFOEP QSPQFOTBT B HFSBS QPOUPT EF GBMIBT ‰ WFN Ë UPOB "TTJN
DPOTUBOUFNFOUF Ï QSFDJTP MFNCSBS EF GB[FS PT JODMVEFT EPT
headers  PV NØEVMPT /PWBNFOUF QPEFNPT BQFMBS QBSB VN

3.1 REÚSO 17
ctrl+c  ctrl+v  QBSB FWJUBS PNJTTÜFT  NBT NFTNP BTTJN TFSÈ
SFBMJ[BEPVNQSPDFTTPBSDBJDP RVFQPEFTFUPSOBSDPNQMFYPFDBEB
WF[NBJTQSPQÓDJPBGBMIBT

1BSB TVQSJS UBJT EJGJDVMEBEFT  B 00 EJTQPOJCJMJ[B EPJT


NFDBOJTNPTQBSBSFÞTPEFDØEJHPBIFSBOÎBFBBTTPDJBÎÍP"QBSUJS
EFMFT  Ï QPTTÓWFM DSJBSNPT VOJEBEFT EF DØEJHP RVF DPNQBSUJMIBN
DØEJHPT EF GPSNB FTUSVUVSBM  PV TFKB  OÍP TÍP CMPDPT EF DØEJHP
EJTQFSTPT&MFTDSJBNVNSFMBDJPOBNFOUPRVF BMÏNEFQPTTJCJMJUBSP
SFÞTP EF GPSNB NBJT QSÈUJDB F NFOPT QSPQÓDJB B FSSPT  BJOEB HFSB
VNB NPEFMBHFN NBJT QSØYJNB EP NVOEP SFBM 2VBOEP GPSFN
BQSFTFOUBEPT B TFHVJS  P UFSNP (BQ 4FNÉOUJDP  DPODFJUP EF
NPEFMBHFNNBJTQSØYJNBEPNVOEPSFBM GJDBSÈNBJTDMBSP

$0&4°0
&TUF QSJODÓQJP QSFDPOJ[B RVF DBEB VOJEBEF EF DØEJHP EFWF TFS
SFTQPOTÈWFMTPNFOUFQPSQPTTVJSJOGPSNBÎÜFTFFYFDVUBSUBSFGBTRVF
EJ[FNSFTQFJUPTPNFOUFBPDPODFJUPRVFFMBQSFUFOEFSFQSFTFOUBS"
JEFJB QPS EFUSÈT EB DPFTÍP Ï OÍP NJTUVSBS SFTQPOTBCJMJEBEFT QBSB
FWJUBS RVF B VOJEBEF EF DØEJHP GJRVF TPCSFDBSSFHBEB DPN EBEPT F
UBSFGBTRVFOÍPMIFEJ[FNSFTQFJUP

*OJDJBMNFOUF  QPEFNPT QFOTBS RVF  FN MJOHVBHFOT FTUSVUVSBEBT


DPNP C OÍPÏQPTTÓWFMFWJUBSFTUBTJUVBÎÍP KÈRVFFMBTVUJMJ[BNP
.ØEVMP1SJODJQBMDPNPTVBVOJEBEFEFDØEJHPCÈTJDB PVTFKB TØÏ
QPTTÓWFM VN QPOUP EF EFTFOWPMWJNFOUP -PHP  FTUF NØEVMP
JOFWJUBWFMNFOUF OÍP TFSÈ DPFTP P TVGJDJFOUF 6N FYFNQMP UBMWF[
BKVEFBJMVTUSBSNFMIPSBTJUVBÎÍP

6NBBQMJDBÎÍPRVFWJTFSFQSFTFOUBSVNDPOUSPMFEFFTUPRVFTFSÈ
DPOTUJUVÓEB EF VN .ØEVMP 1SJODJQBM RVF  DPN DFSUF[B  UFSÈ
DFOUFOBT UBMWF[NJMIBSFT EFMJOIBTEFDØEJHPQBSBDPOTFHVJSDPCSJS
UPEBT BT OFDFTTJEBEFT  QBSB SFBMJ[BS B UBSFGB F SFQSFTFOUBS PT

18 3.2 COESÃO
DPODFJUPT QPS EFUSÈT EF VN TJTUFNB DPNQMFYP DPNP FTUF
*OFWJUBWFMNFOUF FTUBSÍPNJTUVSBEPT structs ‰QBSBSFQSFTFOUBS
PTDPODFJUPTEFQSPEVUP WFOEB DMJFOUF GPSOFDFEPSFUD‰FGVOÎÜFT
‰QBSBFYFDVUBSUBSFGBTEFWFOEFS DPNQSBS DBMDVMBSJNQPTUPT EBS
CBJYBOPFTUPRVFFUD*TUPNBJTVNBWF[MFWBBHSBWFTQSPCMFNBTFN
NBOVUFOÎÜFTDPSSFUJWBTPVFWPMVUJWBTEPDØEJHP BMÏNEFEJGJDVMUBS
EFGPSNBFYUSFNBTVBMFHJCJMJEBEFFFOUFOEJNFOUP

1BSB FMJNJOBS FTTB TJUVBÎÍP BEWFSTB  NBJT VNB WF[ Ï OFDFTTÈSJP


SFDPSSFSNPT B headers  F NØEVMPT FN C  $PN JTTP  BT
EJGJDVMEBEFT BQSFTFOUBEBT OB TFÎÍP EF 3FÞTP WPMUBN OPWBNFOUF B
BQBSFDFSQBSBUPSOBSEJGÓDJMBWJEBEPQSPHSBNBEPS

1BSB BHJMJ[BS P QSPDFTTP EF EFTFOWPMWJNFOUP  B 0SJFOUBÎÍP B


0CKFUPT EJTQPOJCJMJ[B DPODFJUPT RVF GBDJMJUBN B WJEB EP
EFTFOWPMWFEPS DMBTTF F BTTPDJBÎÍP $SJBS VOJEBEFT EF DØEJHP NBJT
DPFTBT DPN FTTFT DPODFJUPT Ï NBJT TJNQMFT EP RVF USBCBMIBS DPN
headers FNØEVMPT$PODPNJUBOUFNFOUFBFTUFTEPJTDPODFJUPT P
VTPEFNÏUPEPT FBUSJCVUPT DPOUSJCVJQBSBB EFGJOJÎÍPEF VOJEBEFT
EFDØEJHPRVFTFKBNSFTQPOTÈWFJTTPNFOUFQPSUBSFGBTFDPODFJUPTËT
RVBJT FMBT TF QSPQÜFN  BTTJN FWJUBOEP VNB TBMBEB NJTUB EF
SFTQPOTBCJMJEBEFT

&OUSFUBOUP  VTBS P DPODFJUP EF DMBTTF F BTTPDJBÎÍP EF GPSNB


FGFUJWB  QBSB BUJOHJS DMBTTFT DPFTBT  SFRVFS DPOIFDJNFOUP EF
NPEFMBHFN EF BQMJDBÎÍP  F JTUP TØ TFSÈ BUJOHJEP DPN UFNQP F
QSÈUJDB.BTJTTPUFSNJOBBDPOUFDFOEPEFGPSNBOBUVSBM"HSBOEF
EJGFSFOÎB FOUÍP Ï RVF  FN MJOHVBHFOT FTUSVUVSBJT  TFSJB OFDFTTÈSJP
QFSEFSTFNVJUPUFNQPOPDPNPGB[FSFOÍPOPPRVFGB[FS

"$01-".&/50
4F GPS SFBMJ[BEB VNB QFTRVJTB OB JOUFSOFU TPCSF P RVF Ï FTUF
UFSNP  TFSÍP FODPOUSBEBT BMHVNBT EFGJOJÎÜFT RVF  RVBOEP

3.3 ACOPLAMENTO 19
DPOEFOTBEBT  EJSÍP RVF "DPQMBNFOUP Ï VNB DPOFYÍP  VOJÍP PV
MJHBÎÍPFOUSFEPJTPVNBJTDPSQPT GPSNBOEPVNÞOJDPDPOKVOUP1BSB
B DPNQVUBÎÍP  BDPQMBNFOUP Ï P OÓWFM EF JOUFSEFQFOEÐODJB FOUSF PT
DØEJHPTEFVNQSPHSBNBEFDPNQVUBEPS

0V TFKB  FTUF UFSNP Ï VTBEP QBSB NFEJS RVBOUJGJDBS  P


SFMBDJPOBNFOUPFOUSFVOJEBEFTEFDØEJHPRVFTÍPVOJEBT BDPQMBEBT
QBSB RVF B OPTTB BQMJDBÎÍP DPOTJHB FYFDVUBS TVBT BUJWJEBEFT EB
GPSNB EFTFKBEB " QSJODÓQJP  QPEFNPT QFOTBS RVF MJOHVBHFOT
FTUSVUVSBEBTOÍPQPTTVFNBDPQMBNFOUP QPJTFMBTQPTTVFNTPNFOUF
VNBVOJEBEFEFDØEJHP PKÈDPOIFDJEP.ØEVMP1SJODJQBM5PEBWJB
P DPODFJUPEFBDPQMBNFOUPÏNBJTBNQMP

$PNP B EFGJOJÎÍP BOUFSJPSNFOUF DJUBEB EJ[ JOUFSEFQFOEÐODJB


FOUSFPTDØEJHPT OPUBTFRVFFTUBPDPSSFFNRVBMRVFSOÓWFMFOÍP
TPNFOUF FN VOJEBEFT EF DØEJHPT DPNQMFYBT 0V TFKB  FYJTUF
BDPQMBNFOUP FOUSF P .ØEVMP 1SJODJQBM DPN TVBT GVOÎÜFT ‰ PV
NFTNPFOUSFGVOÎÜFT‰ DPN headers NØEVMPTFRVBMRVFSPVUSB
FTUSVUVSB RVF QPTTVB TFV QSØQSJP DØEJHP &N MJOHVBHFOT
FTUSVUVSBEBT PBDPQMBNFOUPQPEFTFUPSOBSVNQSPCMFNBEFWJEPBP
QSPDFTTPEFDPNQJMBÎÍPPVMJOLBHFNEFTTBTMJOHVBHFOT

1BSB TBCFS NBJT TPCSF FTUFT QSPDFTTPT  TVHJSP VNB MFJUVSB


DPNQMFNFOUBS TPCSF DPNQJMBEPSFT  DPNP 1SJODF F 5PTDBOJ  
$PNP FTUF OÍP Ï P GPDP EP MJWSP  GJDB B DBSHP EP MFJUPS PCUFS UBJT
DPOIFDJNFOUPT 2VBOUP NBJT CBJYP GPS P OÓWFM EF FTUSVUVSBÎÍP EP
DØEJHP  NBJT DPNQMFYP TF UPSOB P QSPDFTTP EF TF USBCBMIBS DPN P
BDPQMBNFOUP

/ÍP PCTUBOUF  Ï OFDFTTÈSJP VTBS BDPQMBNFOUP QBSB PSHBOJ[BS P


DØEJHP F EJWJEJS SFTQPOTBCJMJEBEFT DPN PVUSBT VOJEBEFT EF DØEJHP
"P DJUBS EJWJEJS SFTQPOTBCJMJEBEFT  MPHP  OPUBTF RVF IÈ VN
SFMBDJPOBNFOUPNVJUPÓOUJNPFOUSFBDPQMBNFOUPFDPFTÍP0VTFKB
QBSB BUJOHJSNPT VNB CPB DPFTÍP  Ï OFDFTTÈSJP EJWJEJS
SFTQPOTBCJMJEBEFT F BDPQMBS B PVUSBT VOJEBEFT EF DØEJHP " QBSUJS

20 3.3 ACOPLAMENTO
EJTUP  WFSJGJDBNPT RVF FTUF SFMBDJPOBNFOUP ÓOUJNP Ï JNQPSUBOUF
NBTEFWFTFSNVJUPCFNEPTBEPQBSBOÍPHFSBSDØEJHPTEJGÓDFJTEF
TFSFNNBOUJEPT

" RVFTUÍP FOUÍP Ï DPNP GBDJMJUBS JTTP  .BJT VNB WF[  PT
DPODFJUPTEFDMBTTFFBTTPDJBÎÍPQPEFNTFSVUJMJ[BEPTQBSBGBDJMJUBSP
VTPEFBDPQMBNFOUP"PVTBSPDPODFJUPEFDMBTTF DPOTFHVFTFDSJBS
VOJEBEFT EF DØEJHPT NBJT BVUPDPOUJEBT F DPFTBT " QBSUJS EJTUP  P
BDPQMBNFOUP FOUSF FMBT UPSOBTF NBJT BMUP OÓWFM EP RVF FOUSF
QPSÎÜFT EF DØEJHP DPNP GVOÎÜFT  headers  FUD $POTFHVJS DSJBS
BQMJDBÎÜFTDPNVNBCPBDPFTÍPFBDPQMBNFOUPÏVNEPTEFTBGJPTEB
00  F P VTP EF UÏDOJDBT EF QSPHSBNBÎÍP TFSÍP FYQMJDBEPT NBJT
BEJBOUF QBSBBTTJNTFBUJOHJSUBMPCKFUJWP

("14&.¬/5*$0
5BNCÏNDIBNBEPEF'PTTP4FNÉOUJDP FTUFUFSNPDBSBDUFSJ[BB
EJGFSFOÎB FYJTUFOUF FOUSF EVBT SFQSFTFOUBÎÜFT EF DPODFJUPT QPS
EJGFSFOUFTSFQSFTFOUBÎÜFTMJOHVÓTUJDBT/PDPOUFYUPEBDPNQVUBÎÍP
SFGFSFTF Ë EJGFSFOÎB FOUSF B SFQSFTFOUBÎÍP EF VN DPOUFYUP EP
DPOIFDJNFOUP FN MJOHVBHFOT QBSBEJHNBT  EF QSPHSBNBÎÍP /P
DBTP EFTUF MJWSP  FTUÈ TFOEP EFNPOTUSBEP P HBQ FOUSF P QBSBEJHNB
FTUSVUVSBEPFPPSJFOUBEPBPCKFUPT

3FQSFTFOUBS PT DPODFJUPT RVF BT BQMJDBÎÜFT OFDFTTJUBN QBSB TF


UPSOBSFN QSPKFUPT EF TVDFTTP EF GPSNB BEFRVBEB F SFBMJTUB Ï VN
EFTBGJP&NMJOHVBHFOTDPNP C ‰FNRVFÏOFDFTTÈSJPQSFPDVQBS
TF NBJT FN EFGJOJS FOUSBEBT  QSPDFTTÈMBT F HFSBSTF TBÓEBT ‰ GJDB
EJGÓDJM USBCBMIBS FN BMUP OÓWFM 5SBCBMIBS DPN WBSJÈWFJT HMPCBJT PV
MPDBJT  GVOÎÜFT RVF TÍP EFGJOJEBT EF GPSNB EFTBTTPDJBEBT EFTTBT
WBSJÈWFJT‰NBTRVFEFWFNPQFSBSTPCSFFMBT‰ OÍPÏVNUSBCBMIP
BNJHÈWFM  QSJODJQBMNFOUF FN BQMJDBÎÜFT EF HSBOEF QPSUF  RVF QPS
OBUVSF[BTÍPNBJTDPNQMFYBT

3.4 GAP SEMÂNTICO 21


1PS NBJT RVF DSJFNPT structs  QBSB UFOUBS BHMVUJOBS
JOGPSNBÎÜFT  BT GVOÎÜFT BJOEB FTUBSJBN EFTBTTPDJBEBT EFMBT &TTF
("1 EB SFQSFTFOUBÎÍP FTUSVUVSBEB FN SFMBÎÍP BP NVOEP SFBM Ï P
RVF UPSOB FTUF QBSBEJHNB MJNJUBEP &TTB EJGJDVMEBEF Ï B HSBOEF
EJGFSFOÎBEBPSJFOUBÎÍPBPCKFUPT&MBEJTQPOJCJMJ[B QSJODJQBMNFOUF
PT DPODFJUPT EF DMBTTF  BUSJCVUP  NÏUPEP F PCKFUP QBSB DPOTFHVJS
SFQSFTFOUBS EF GPSNB NBJT SFBMJTUB PT DPODFJUPT RVF B BQMJDBÎÍP
EFTFKB SFQSFTFOUBS &TQFSP RVF P MJWSP DPOTJHB BKVEBS OB SFBMJ[BÎÍP
EFTUBUBSFGBEBNFMIPSGPSNBQPTTÓWFM

3&46.*/%0
" QBSUJS EFTTBT FYQMBOBÎÜFT  WFSJGJDBNPT RVF P QBSBEJHNB
FTUSVUVSBEP GPDB  EFNBTJBEBNFOUF  OB DSJBÎÍP EF DØEJHP  RVF TF
QSFPDVQBNBJTOPDPNPGB[FSBMHPEPRVFOPRVFEFWFTFSGFJUP
*TTP PDPSSF EFWJEP B VNB FTUSVUVSBÎÍP MJNJUBEB  RVF UFSNJOB
MFWBOEPNBJTFNDPOTJEFSBÎÍPBNBOJQVMBÎÍPEBJOGPSNBÎÍPEPRVF
BTVBSFQSFTFOUBÎÍP

&NCPSB TFKB QPTTÓWFM BUJOHJSNPT BT OFDFTTJEBEFT EF


QSPHSBNBÎÍP DPNPSFÞTP BDPQMBNFOUP DPFTÍPFSFQSFTFOUBÎÍP B
EJGJDVMEBEF PVNFTNPDPNQMFYJEBEF EFSFBMJ[ÈMBTEFNPOTUSBRVF
FNCPSB FTUF QBSBEJHNB UFOIB UJEP VNB HSBOEF BDFJUBÎÍP OP JOÓDJP
EBFSBEFEFTFOWPMWJNFOUPEFTPGUXBSF DPNPQBTTBSEPUFNQPBT
BQMJDBÎÜFT GPSBN OFDFTTJUBOEP EF GPSNBT NBJT BWBOÎBEBT  NBT BP
NFTNP UFNQP TJNQMJGJDBEBT  EF QSPHSBNBÎÍP & JOGFMJ[NFOUF P
QBSBEJHNBFTUSVUVSBEPOÍPDPOTFHVJVTVQSJSUBMEFNBOEB"QBSUJS
EP QSØYJNP DBQÓUVMP TFSÈ WJTUP DPNP B 0SJFOUBÎÍP B 0CKFUPT TF
QSPQÜFBTVQSJSFTTBEFNBOEB

22 3.5 RESUMINDO
CAPÍTULO 4

*/530%6±°0"
03*&/5"±°0"0#+&504

/P DBQÓUVMP BOUFSJPS  GPJ WJTUP RVF P QSPCMFNB EP QBSBEJHNB


FTUSVUVSBEPOÍPÏBJNQPTTJCJMJEBEFEFSFBMJ[BSBMHVNBTUÏDOJDBTEF
QSPHSBNBÎÍP DPNP SFÞTP  BDPQMBNFOUP FUD " RVFTUÍP Ï B
DPNQMFYJEBEF EF BUJOHJMBT /FTUF DBQÓUVMP  WFSFNPT B EFGJOJÎÍP EF
0SJFOUBÎÍPB0CKFUPTFPTGVOEBNFOUPTRVFFMBQSPQÜF

%&'*/*±°0
&NCPSBOÍPTFKBVNBSFGFSÐODJBNVJUPQSPGJTTJPOBM B8JLJQÏEJB
UFNVNBEFGJOJÎÍPNVJUPJOUFSFTTBOUFTPCSFB0SJFOUBÎÍPB0CKFUP
" 0SJFOUBÎÍP B 0CKFUPT Ï VN QBSBEJHNB EF BOÈMJTF  QSPKFUP F
QSPHSBNBÎÍP EF TJTUFNBT EF TPGUXBSF CBTFBEP OB DPNQPTJÎÍP F
JOUFSBÎÍP FOUSF EJWFSTBT VOJEBEFT EF TPGUXBSF DIBNBEBT EF PCKFUPT
IUUQTQUXJLJQFEJBPSHXJLJ0SJFOUBÎÍP@B@PCKFUPT 

&TTB EFGJOJÎÍP EFJYB CFN DMBSP RVF B 00 OÍP TF MJNJUB BQFOBT
FNTFSVNBOPWBGPSNBEFQSPHSBNBÎÍP&MBUBNCÏNTFQSFPDVQB
DPN B NPEFMBHFN BOÈMJTF F QSPKFUP  EPT QSPDFTTPTUBSFGBT RVF
EFWFN TFS SFBMJ[BEPT .BJT EP RVF VN UJQP EF MJOHVBHFN EF
QSPHSBNBÎÍP  B 0SJFOUBÎÍP B 0CKFUPT Ï VNB OPWB GPSNB EF TF
QFOTBS F SFQSFTFOUBS EF GPSNB NBJT SFBMJTUB BT OFDFTTJEBEFT EPT
TPGUXBSFT

&MB OÍP Ï VN QBSBEJHNB RVF JOWFOUPV BMHP SFBMNFOUF

4 INTRODUÇÃO A ORIENTAÇÃO A OBJETOS 23


SFWPMVDJPOÈSJP  NBT  OB WFSEBEF  GBDJMJUPV P QSPDFTTP EF
QSPHSBNBÎÍPBQBSUJSEPRVFKÈFYJTUJB%FVVNBOPWBSPVQBHFNB
QSPHSBNBÎÍPFBTTJNBUPSOPVFNVNQSPDFTTPEFBMUPOÓWFM$PNP
WFSFNPT B TFHVJS  00 UPSOB NBJT GÈDJM BUJOHJSNPT SFÞTP
BDPQMBNFOUP FOUSFPVUSBTUÏDOJDBTRVFWJTBNUPSOBSPDØEJHPNBJT
QSPGJTTJPOBMFNBOVUFOÓWFM

04'6/%".&/504
"OUFT EF TFSFN FOVNFSBEPT UPEPT PT DPODFJUPT OPT QSØYJNPT
DBQÓUVMPT  Ï JNQPSUBOUF QSPWFS VN FNCBTBNFOUP TPCSF PT QJMBSFT
GVOEBNFOUPT  EB 0SJFOUBÎÍP B 0CKFUPT 5PEPT PT DPODFJUPT RVF
FTUF MJWSP BQSFTFOUB UÐN DPNP GJOBMJEBEF QPTTJCJMJUBS F GBDJMJUBS B
BQMJDBÎÍP EFTUFT QJMBSFT .BJT VNB WF[  P VTP DPSSFUP EFTUFT
DPODFJUPTFMFWBFGBDJMJUBPQSPDFTTPEFQSPHSBNBÎÍP

"CTUSBÎÍP
"TTJN DPNP OP OPTTP DPUJEJBOP OPT BCTUSBÓNPT EF DFSUBT
EJGJDVMEBEFT QBSB BUJOHJSNPT OPTTBT NFUBT  OB QSPHSBNBÎÍP
PSJFOUBEBBPCKFUPTOÍPQPEFSJBTFSEJGFSFOUF"GJOBM DPNPKÈIBWJB
TJEP EJUP QSPHSBNBNPT QBSB BVUPNBUJ[BS QSPDFTTP EP OPTTP EJB B
EJB

4FPEJDJPOÈSJP.JDIBFMJTGPSDPOTVMUBEP FOUSFBMHVNBTEFTVBT
EFGJOJÎÜFT TPCSF P UFSNP BCTUSBÎÍP  FTTB TF FODBJYBSÈ OP OPTTP
DPOUFYUP1SPDFTTPQFMPRVBMTFJTPMBNDBSBDUFSÓTUJDBTEFVNPCKFUP
DPOTJEFSBOEPPTRVFUFOIBNFNDPNVNDFSUPTHSVQPTEFPCKFUPT

" JEFJB RVF FTTB EFGJOJÎÍP USBOTNJUF Ï RVF OÍP EFWFNPT OPT
QSFPDVQBS DPN DBSBDUFSÓTUJDBT NFOPT JNQPSUBOUFT  PV TFKB
BDJEFOUBJT%FWFNPT OFTUFDBTP OPTDPODFOUSBSBQFOBTOPTBTQFDUPT
FTTFODJBJT 1PS OBUVSF[B  BT BCTUSBÎÜFT EFWFN TFS JODPNQMFUBT F
JNQSFDJTBT NBTJTUPOÍPTJHOJGJDBRVFFMBQFSEFSÈTVBVUJMJEBEF/B

24 4.2 OS FUNDAMENTOS
WFSEBEF FTUBÏBTVBHSBOEFWBOUBHFN QPJTOPTQFSNJUF BQBSUJSEF
VN DPOUFYUP JOJDJBM  NPEFMBS OFDFTTJEBEFT FTQFDÓGJDBT *TTP
QPTTJCJMJUBGMFYJCJMJEBEFOPQSPDFTTPEFQSPHSBNBÎÍP QPJTÏQPTTÓWFM
OÍP USBCBMIBSNPT DPN P DPODFJUP BMWP EJSFUBNFOUF  NBT TJN DPN
TVBTBCTUSBÎÜFT

1PS FYFNQMP  TF VNB GÈCSJDB EF DBEFJSBT GPTTF SFQSFTFOUBS PT


QSPEVUPTRVFFMBKÈGBCSJDBFWFOEF PVNFTNPRVFVNEJBWFOIBB
GBCSJDBS F WFOEFS  FMB QPEFSJB QFOTBS JOJDJBMNFOUF FN VNB DBEFJSB
EBGPSNBNBJTCÈTJDB BCTUSBUB QPTTÓWFM$PNJTUP TFVQSPDFTTPEF
QSPEVÎÍPTFSJBGBDJMJUBEP QPJTFMBOÍPTBCFSJBJOJDJBMNFOUFRVBJTPT
UJQPTEFDBEFJSBTRVFFMBQPEFSJBGBCSJDBS NBTTBCFSJBRVFBDBEFJSB
UFSJB  QFMP NFOPT  QFSOBT  BTTFOUP F FODPTUP " QBSUJS EJTUP  FMB
QPEFSJB GBCSJDBS EJWFSTPT UJQPT DBEFJSB EF QSBJB  DBEFJSB EF BVMB
DBEFJSBEJHBNPTNPEFSOB FOUSFWÈSJPTPVUSPTUJQPT BNFEJEBRVF
OPWBTEFNBOEBTWJFTTFNBTVSHJS/FTUFDBTP FMFBEBQUBSJBTVBMJOIB
EFQSPEVÎÍPBQBSUJSEFVNNPMEFJOJDJBM

&N DBEB UJQP  BMHP QPEFSJB TFS BDSFTDFOUBEP PV NPEJGJDBEP EF


BDPSEPDPNTVBFTQFDJGJDJEBEF"TTJN OBDBEFJSBEFBVMB UFSJBVN
CSBÎP  KÈ B EF QSBJB TFSJB SFDMJOÈWFM 1PS GJN  B NPEFSOB UFSJB P
BTTFOUPBDPQMBEPBPFODPTUP$PNJTTP OPUBTFRVF BQBSUJSEFVN
NPEFMP JOJDJBM  BEBQUBÎÜFT GPSBN SFBMJ[BEBT QBSB TVQSJS BT
OFDFTTJEBEFT NBJT FTQFDÓGJDBT 0T QSPDFTTPT EF JOJDJBMNFOUF TF
QFOTBSOPNBJTBCTUSBUPFQPTUFSJPSNFOUFBDSFTDFOUBSPVTFBEBQUBS
TÍP UBNCÏN DPOIFDJEPT DPNP HFOFSBMJ[BÎÍP F FTQFDJBMJ[BÎÍP
SFTQFDUJWBNFOUF .BJT Ë GSFOUF  TFSÍP FYQMJDBEPT PT DPODFJUPT EF
DMBTTF F IFSBOÎB  CBTFT QBSB FOUFOEFSNPT P DPODFJUP EF BCTUSBÎÍP
1PS FORVBOUP  B GJHVSB B TFHVJS TFSÈ B ÏOJDB GPSNB EF JMVTUSBS FTUF
GVOEBNFOUP

4.2 OS FUNDAMENTOS 25
'JHVSB"CTUSBÎÍPEFVNBDBEFJSB

3FÞTP
/ÍP FYJTUF QJPS QSÈUJDB FN QSPHSBNBÎÍP RVF B SFQFUJÎÍP EF
DØEJHP *TUP MFWB B VN DØEJHP GSÈHJM  QSPQÓDJP B SFTVMUBEPT
JOFTQFSBEPT2VBOUPNBJTDØEJHPTTÍPSFQFUJEPTQFMBBQMJDBÎÍP NBJT
EJGÓDJM WBJ TF UPSOBOEP TVB NBOVUFOÎÍP *TTP QPSRVF GBDJMNFOUF TF
QPEF FTRVFDFS EF BUVBMJ[BS BMHVN QPOUP RVF MPHP MFWBSÈ B VNB
JODPOTJTUÐODJB  QPJT TF Ï P NFTNP DØEJHP RVF FTUÈ QSFTFOUF FN
WÈSJPTMVHBSFT ÏEFTFFTQFSBSRVFFMFFTUFKBJHVBMFNUPEPTFMFT

1BSB BMDBOÎBS FTUF GVOEBNFOUP  B 0SJFOUBÎÍP B 0CKFUPT QSPWÐ


DPODFJUPTRVFWJTBNGBDJMJUBSTVBBQMJDBÎÍP0GBUPEFTJNQMFTNFOUF
VUJMJ[BSNPTVNBMJOHVBHFNPSJFOUBEBBPCKFUPOÍPÏTVGJDJFOUFQBSB
TFBUJOHJSBSFVTBCJMJEBEF UFNPTEFUSBCBMIBSEFGPSNBFGJDJFOUFQBSB
BQMJDBSPTDPODFJUPTEFIFSBOÎBFBTTPDJBÎÍP QPSFYFNQMP&YJTUFN
WÈSJBTPVUSBTGPSNBT‰EFNBJTBMUPOÓWFM‰EFSFVUJMJ[BÎÍPFN00
NBTFTUFMJWSPFYQMJDBSÈFTUBTNBJTCÈTJDBT QPJTFMBTTFSWFNEFCBTF

26 4.2 OS FUNDAMENTOS
QBSB BT EFNBJT %F GPSNB JOUSPEVUØSJB  BRVJ TFSÈ GFJUB VNB SÈQJEB
FYQMBOBÎÍP .BT NBJT Ë GSFOUF UFSFNPT DBQÓUVMPT FTQFDÓGJDPT QBSB
JTTP

/B IFSBOÎB  Ï QPTTÓWFM DSJBS DMBTTFT B QBSUJS EF PVUSBT DMBTTFT


$PNPDPOTFRVÐODJBEJTUP PDPSSFVNSFBQSPWFJUBNFOUPEFDØEJHPT
‰EBEPTFDPNQPSUBNFOUPT‰EBDIBNBEBDMBTTFNÍF/FTUFDBTP
B DMBTTF GJMIB  BMÏN EP RVF KÈ GPJ SFBQSPWFJUBEB  QPEF BDSFTDFOUBS P
RVFGPSOFDFTTÈSJPQBSBTJ

+È OB BTTPDJBÎÍP  P SFBQSPWFJUBNFOUP Ï EJGFSFOUF 6NB DMBTTF


QFEFBKVEBBPVUSBQBSBQPEFSGB[FSPRVFFMBOÍPDPOTFHVFGB[FSQPS
TJTØ&NWF[EFTJNQMFTNFOUFSFQFUJS FNTJ PDØEJHPRVFFTUÈFN
PVUSB DMBTTF  B BTTPDJBÎÍP QFSNJUF RVF VNB DMBTTF GPSOFÎB VNB
QPSÎÍP EF DØEJHP B PVUSB "TTJN  FTUB USPDB NÞUVB DVMNJOB QPS
FWJUBSBSFQFUJÎÍPEFDØEJHP

4FSÈ WJTUP NBJT BEJBOUF RVF  DPN P VTP EFTUFT DPODFJUPT  Ï


QPTTÓWFM BUJOHJS P SFBQSPWFJUBNFOUP EF GPSNB NBJT JOUVJUJWB F
SFQSFTFOUBUJWB  BTTJN DPNP Ï GFJUP OBUVSBMNFOUF OP NVOEP SFBM
"MÏNEJTUP PTDØEJHPTGJDBSÍPNBJTSPCVTUPT NBOVUFOÓWFJTFGÈDFJT
EFFOUFOEFS

&ODBQTVMBNFOUP
6NB BOBMPHJB  DPN P NVOEP SFBM  TFSÈ GFJUB QBSB JOJDJBMNFOUF
FOUFOEFSNPTPRVFWFNBTFSPFODBQTVMBNFOUP2VBOEPBMHVÏNTF
DPOTVMUB DPN VN NÏEJDP  QPS FTUBS DPN VN SFTGSJBEP  TFSJB
EFTFTQFSBEPSTFBPGJOBMEBDPOTVMUBPNÏEJDPFOUSFHBTTFBTFHVJOUF
SFDFJUB

4.2 OS FUNDAMENTOS 27
3&$&*56«3*0 $0.1-&90

NHEFÈDJEPBDFUJMTBMJDÓMJDP
NHEFNBMFBUPEFEFYDMPSGFOJSBNJOB
NHEFDMPSJESBUPEFGFOJMFGSJOB
NHEFDBGFÓOB

.JTUVSBSCFNFJOHFSJSDPNÈHVB3FQFUJSFNNPNFOUPTEFDSJTF

" QSJNFJSB DPJTB RVF WJSJB FN NFOUF TFSJB POEF BDIBS FTTBT
TVCTUÉODJBT  4FSÈ RVF Ï WFOEJEP UÍP QPVDP  $PNP NJTUVSÈMBT
&YJTUFBMHVNBTFRVÐODJB 4FSJBVNBUBSFGBEJGÓDJM‰BUÏDPNQMFYB‰
EF TFS SFBMJ[BEB .BJT TJNQMFT EP RVF JTTP Ï P RVF PT NÏEJDPT
SFBMNFOUFGB[FNQBTTBNVNBDÈQTVMBPOEFUPEBTFTUBTTVCTUÉODJBT
KÈFTUÍPQSPOUBT0VTFKB FMBTKÈWÐNFODBQTVMBEBT

$PN JTTP  OÍP TFSÈ QSFDJTP TF QSFPDVQBS FN TBCFS RVBOUP F
DPNPBTTVCTUÉODJBTEFWFNTFSNBOJQVMBEBTQBSBOPGJOBMUFSNPTP
DPNQSJNJEPRVFSFTPMWFSÈPQSPCMFNB0RVFJOUFSFTTBÏPSFTVMUBEP
GJOBM OPDBTP BDVSBEPSFTGSJBEP"DPNQMFYJEBEFEFDIFHBSBFTTBT
NFEJEBTFDPNPNJTUVSÈMBTOÍPJOUFSFTTB²VNQSPDFTTPRVFOÍP
QSFDJTBTFSEPDPOIFDJNFOUPEPQBDJFOUF

3&$&*56«3*0 &/$"146-"%0

 DPNQSJNJEP EF 3FTGSJPM *OHFSJS DPN ÈHVB 3FQFUJS FN


NPNFOUPTEFDSJTF

28 4.2 OS FUNDAMENTOS
'JHVSB&ODBQTVMBNFOUPFTDPOEFOEPDPNQMFYJEBEFT

&TTBNFTNBJEFJBTFBQMJDBOB0SJFOUBÎÍPB0CKFUPT/PDBTP B
DPNQMFYJEBEF RVF EFTFKBNPT FTDPOEFS Ï B EF JNQMFNFOUBÎÍP EF
BMHVNB OFDFTTJEBEF $PN P FODBQTVMBNFOUP  QPEFNPT FTDPOEFS B
GPSNBDPNPBMHPGPJGFJUP EBOEPBRVFNQSFDJTBBQFOBTPSFTVMUBEP
HFSBEP /ÍP JNQPSUB QBSB RVFN SFRVJTJUPV BMHVN
QSPDFTTBNFOUPDPNQPSUBNFOUP  PV UFS DPOIFDJNFOUP EB MØHJDB
SFBMJ[BEB QBSB HFSBS P SFTVMUBEP GJOBM "QFOBT P SFTVMUBEP PCUJEP Ï
RVFÏSFMFWBOUF

6NB WBOUBHFN EFTUF QSJODÓQJP Ï RVF BT NVEBOÎBT TF UPSOBN


USBOTQBSFOUFT  PV TFKB  RVFN VTB BMHVN QSPDFTTBNFOUP OÍP TFSÈ
BGFUBEP RVBOEP TFV DPNQPSUBNFOUP JOUFSOP NVEBS -JOHVBHFOT
FTUSVUVSBEBT QSPWFFN FTUF GVOEBNFOUP  NBT QBSB BUJOHJMP Ï NBJT
EJGÓDJM 0T DPODFJUPT EF DMBTTF  NÏUPEP  FOUSF PVUSPT GBDJMJUBN FN
NVJUPBBQMJDBÎÍPEFTUFGVOEBNFOUP

6NB PVUSB DBSBDUFSÓTUJDB EP FODBQTVMBNFOUP Ï UBNCÏN B


PDVMUBÎÍPEBJOGPSNBÎÍP/FTUFDBTP FMFCMJOEBPBTQFDUPJOUFSOPEP
PCKFUPFNSFMBÎÍPBPNVOEPFYUFSJPS"TTJN DSJBTFVNBDBTDB PT
NÏUPEPT RVF BQSFOEFSFNPT NBJT BEJBOUF  BP SFEPS EBT
DBSBDUFSÓTUJDBT PT BUSJCVUPT RVF UBNCÏN BQSFOEFSFNPT NBJT
BEJBOUF  RVF UFN DPNP GJOBMJEBEF FWJUBS SFTVMUBEPT JOFTQFSBEPT
BDFTTPTJOEFWJEPT FOUSFPVUSPTQSPCMFNBT"GJHVSBBTFHVJSJMVTUSB
FTTBDBTDBRVFWJTBQSPUFHFSPTBTQFDUPTJOUFSOPTEFVNPCKFUP

4.2 OS FUNDAMENTOS 29
'JHVSB&ODBQTVMBNFOUPPDVMUBÎÍPEBJOGPSNBÎÍP

3&46.*/%0
/PT QSØYJNPT DBQÓUVMPT  TFSÍP FYQMJDBEPT UPEPT PT DPODFJUPT
DIBWFTEB0SJFOUBÎÍPB0CKFUPT1BSBGBDJMJUBSBMFJUVSB GPJSFBMJ[BEB
B TFHVJOUF EJWJTÍP DPODFJUVBM &TUSVUVSBJT  3FMBDJPOBJT F
0SHBOJ[BDJPOBJT

&TTBTFQBSBÎÍPWJTBGBDJMJUBSBMFJUVSBFUPSOÈMBNFOPTDBOTBUJWB
&NCPSB P QSJODJQBM JOUVJUP EP MJWSP TFKB FYQMJDBS EF GPSNB UFØSJDB
TFVT DPODFJUPT  QBSB GBDJMJUBS P FOUFOEJNFOUP VTBSFNPT BMHVOT
DØEJHPT FN Java  F C#  .BT UFOIB FN NFOUF RVF PT UØQJDPT B
TFSFN BQSFTFOUBEPT TF BQMJDBN B UPEB MJOHVBHFN PSJFOUBEB B
PCKFUPT NVEBOEPBQFOBTBGPSNBEFDPNPEFWFNTFSFTDSJUPT*TTP
PDPSSFEFWJEPËTJOUBYFQBSUJDVMBSEFDBEBVNB

30 4.3 RESUMINDO
026&²+"7"&$

Java  F C#  TÍP EVBT FOUSF BT WÈSJBT MJOHVBHFOT RVF


JNQMFNFOUBN P 1BSBEJHNB 0SJFOUBEP B 0CKFUP "UVBMNFOUF
TÍP BT MJOHVBHFOT NBJT VTBEBT OP NFSDBEP F  QPS JTTP
FYFNQMJGJDBSFNPTOPTTPTDØEJHPTDPNFMBT

1BSBTBCFSDPNPJOTUBMÈMBT VUJMJ[FNPTTFHVJOUFTMJOLT

+BWBIUUQTXXXKBWBDPNQU@#3

$
IUUQTNTEONJDSPTPGUDPNQUCSMJCSBSZBZLBTQY

4.3 RESUMINDO 31
CAPÍTULO 5

04$0/$&*504
&4536563"*4

&NCPSBB0SJFOUBÎÍPB0CKFUPTUFOIBWBOUBHFOTFNSFMBÎÍPBPT
QBSBEJHNBT RVF B QSFDFEFSBN  FYJTUF VNB EFTWBOUBHFN JOJDJBM TFS
VN NPEP NBJT DPNQMFYP F EJGÓDJM EF TF QFOTBS *TTP QPEF TFS
BUSJCVÓEP Ë HSBOEF RVBOUJEBEF EF DPODFJUPT RVF EFWFN TFS
BTTJNJMBEPT QBSB QPEFSNPT USBCBMIBS PSJFOUBEP B PCKFUPT 5PEBWJB
FTUFT EFWFN TFS BQSFOEJEPT EB GPSNB NBJT DMBSB F FGJDB[ QPTTÓWFM
QPJT TØ DPN P TFV EPNÓOJP Ï RVF QPEFSFNPT USBCBMIBS EF GPSNB
FGFUJWBFDPOTJTUFOUF

/P JOÓDJP EFTUB ÈSEVB ‰ NBT FNQPMHBOUF ‰ KPSOBEB  PT


DPODFJUPTFTUSVUVSBJTTÍPSFTQPOTÈWFJTQPSEFGJOJSPNBJTCÈTJDPEB
00²DPNBDPNCJOBÎÍPEFTUFTDPODFJUPTRVFPTEFNBJTTVSHFN"
TFHVJS  TFSÈ BQSFTFOUBEP P RVF TÍP VNB DMBTTF  BUSJCVUP  NÏUPEP F
PCKFUP 4FSÈ WJTUP UBNCÏN DPNP FMFT USBCBMIBN FN DPOKVOUP QBSB
TFSSFBMJ[BEPPQPOUBQÏJOJDJBMOB0SJFOUBÎÍPB0CKFUPT"MÏNEJTUP
BMHVOTTVCDPODFJUPTJOFSFOUFTBFMFTUBNCÏNTFSÍPBQSFTFOUBEPT

"$-"44&
0QBSBEJHNBRVFFTUÈTFOEPFTUVEBEPÏP1BSBEJHNB0SJFOUBEP
B0CKFUP 100 UBNCÏNDPOIFDJEPDPNP1SPHSBNBÎÍP0SJFOUBEB
B 0CKFUP &NCPSB TF UFOIB P UFSNP 0CKFUP QSFTFOUF OFTUBT EVBT
EFOPNJOBÎÜFT  UVEP DPNFÎB DPN B EFGJOJÎÍP EF VNB DMBTTF "OUFT

32 5 OS CONCEITOS ESTRUTURAIS
NFTNP EF TFS QPTTÓWFM NBOJQVMBS PCKFUPT  Ï QSFDJTP EFGJOJS VNB
DMBTTF QPJTFTUBÏBVOJEBEFJOJDJBMFNÓOJNBEFDØEJHPOB00²B
QBSUJSEFDMBTTFTRVFGVUVSBNFOUFTFSÈQPTTÓWFMDSJBSPCKFUPT

$MBTTFÏVNBFTUSVUVSBRVFBCTUSBJVNDPOKVOUPEFPCKFUPTDPN
DBSBDUFSÓTUJDBTTJNJMBSFT6NBDMBTTFEFGJOFPDPNQPSUBNFOUPEFTFVT
PCKFUPTBUSBWÏTEFNÏUPEPTFPTFTUBEPTQPTTÓWFJTEFTUFTPCKFUPTBUSBWÏT
EF BUSJCVUPT &N PVUSPT UFSNPT  VNB DMBTTF EFTDSFWF PT TFSWJÎPT
QSPWJEPTQPSTFVTPCKFUPTFRVBJTJOGPSNBÎÜFTFMFTQPEFNBSNB[FOBS
IUUQTQUXJLJQFEJBPSHXJLJ$MBTTF@ QSPHSBNBÎÍP 

&NCPSB B EFGJOJÎÍP BOUFSJPS KÈ DJUF PT DPODFJUPT EF BUSJCVUP F


NÏUPEP  TFSÈ BOBMJTBEB TPNFOUF B DMBTTF OFTUF NPNFOUP -PHP OB
QSJNFJSB MJOIB  BQBSFDF P TFHVJOUF UFYUP BCTUSBJ VN DPOKVOUP EF
PCKFUPT DPN DBSBDUFSÓTUJDBT TJNJMBSFT 0V TFKB  P PCKFUJWP EF VNB
DMBTTFÏEFGJOJS TFSWJSEFCBTF QBSBPRVFGVUVSBNFOUFTFSÈPPCKFUP
² BUSBWÏT EFMB RVF DSJBNPT P NPMEF BPT RVBJT PT PCKFUPT EFWFSÍP
TFHVJS&TUFNPMEFEFGJOJSÈRVBJTJOGPSNBÎÜFTTFSÍPUSBCBMIBEBTF
DPNPFMBTTFSÍPNBOJQVMBEBT

" DMBTTF Ï B GPSNB NBJT CÈTJDB EF TF EFGJOJS BQFOBT VNB ÞOJDB
WF[DPNPEFWFNTFSUPEPTPTPCKFUPTDSJBEPTBQBSUJSEFMB FNWF[EF
EFGJOJS DBEB PCKFUP TFQBSBEBNFOUF F BUÏ SFQFUJEBNFOUF " QBSUJS
EJTUP MPHPQFSDFCFNPTRVFPDPODFJUPEFDMBTTFÏGVOEBNFOUBMQBSB
B BQMJDBÎÍP EB BCTUSBÎÍP "TTJN  VNB DMBTTF UBNCÏN QPEF TFS
EFGJOJEBDPNPVNBBCTUSBÎÍPEFVNBFOUJEBEF TFKBFMBGÓTJDB CPMB
QFTTPB  DBSSP FUD  PV DPODFJUVBM WJBHFN  WFOEB  FTUPRVF FUD  EP
NVOEPSFBM

²BUSBWÏTEFDSJBÎÍPEFDMBTTFTRVFTFDPOTFHVJSÈDPEJGJDBSUPEBT
BT OFDFTTJEBEFT EF VN TJTUFNB TPGUXBSF  .BT DPNP TFSÈ QPTTÓWFM
JEFOUJGJDBS BT OFDFTTJEBEFT  FOUJEBEFT  EF VN TPGUXBSF  6N CPN
QPOUP EF QBSUJEB Ï QFOTBS FN TVCTUBOUJWPT &TUFT TÍP SFTQPOTÈWFJT
QPS OPNFBS UVEP P RVF DPOIFDFNPT  FOUÍP Ï B QBSUJS EFMFT RVF TF
QPTTJCJMJUBSÈ JEFOUJGJDBS RVBJT BT FOUJEBEFT VN TPGUXBSF UFSÈ EF

5.1 A CLASSE 33
NPEFMBS

1PS FYFNQMP  JNBHJOF RVF QSFDJTBNPT EFTFOWPMWFS VN TJUF EF


WFOEBTPOMJOF FOUJEBEFTDPNP Venda  Cliente  Fornecedor
Produto  FOUSF PVUSPT BQBSFDFSÍP 7FNPT RVF UPEPT FTUFT
TVCTUBOUJWPT GB[FN QBSUF EP DPOUFYUP EF VN TJUF EF WFOEBT DPNP
FTTF -PHP  Ï QPTTÓWFM FTQFDJGJDBS DPEJGJDBS  DMBTTFT QBSB BTTJN
NBOJQVMBSUBJTFOUJEBEFT

2VBOEPTFDSJBVNBDMBTTF FTUBNPTEFGJOJOEPPRVFDIBNBNPT
EFUJQPBCTUSBUPEFEBEP&TTFDPODFJUPKÈEFWFTFSDPOIFDJEP QPJT
OBQSPHSBNBÎÍPFTUSVUVSBEBKÈPUFNPT OPDBTPEPVTPEF struct 
0VTFKB NBJTVNBWF[WFNPTRVFB0SJFOUBÎÍPB0CKFUPTUFNDPNP
QSFNJTTB SFQSFTFOUBS NFMIPS P NVOEP SFBM  QPJT BQFOBT DPN
struct ÏQPTTÓWFMEFGJOJSPTEBEPTRVFBFOUJEBEFWJSÈBUFS+ÈFN
VNB DMBTTF UBNCÏN QPEFNPT EFGJOJS BT PQFSBÎÜFT KVOUBT B FTTFT
EBEPT

.BTDPNPEFWFNPTDIBNBS OPNFBSBTDMBTTFT 0OPNFEFVNB


DMBTTF EFWF SFQSFTFOUBS CFN TVB GJOBMJEBEF EFOUSP EP DPOUFYUP BP
RVBM FMB GPJ OFDFTTÈSJB 1PS FYFNQMP  FN VN TJTUFNB EF DPOUSPMF
IPTQJUBMBS  QPEFNPT UFS VNB DMBTTF DIBNBEB Pessoa  QBSB
SFQSFTFOUBSRVFNFTUÈIPTQJUBMJ[BEPPVBQFOBTTFOEPDPOTVMUBEP+È
FNVNTJTUFNBEFQPOUPEFWFOEBT UBNCÏNDPOIFDJEPDPNP1%7
RVF WFNPT OPT DBJYBT EF TVQFSNFSDBEPT  UFNPT NBJT VNB WF[ P
DPODFJUP EF Pessoa  RVF OFTUF DBTP Ï RVFN FTUÈ DPNQSBOEP PT
QSPEVUPT

" QBSUJS EJTUP  Ï QPTTÓWFM UFSNPT DMBTTFT OFTUFT TJTUFNBT DPN


FTUBTEFGJOJÎÜFT&OUSFUBOUP OPUBTFRVFPUFSNPQFTTPBQPEFHFSBS
VNB BNCJHVJEBEF  FNCPSB FTUFKB DPSSFUP /P IPTQJUBM UBNCÏN
FYJTUFN PT NÏEJDPT  FOGFSNFJSPT F  OP TVQFSNFSDBEP  HFSFOUFT F
WFOEFEPSFT 5PEPT TÍP QFTTPBT "TTJN  NVJUP NFMIPS TFSJB OP
IPTQJUBMEFGJOJSBDMBTTF Paciente FOP1%7B Cliente BMÏNEF
Médico  Vendedor  SFTQFDUJWBNFOUF 5PEPT FTUFT TÍP QFTTPBT

34 5.1 A CLASSE
NBT EFOUSP EF DBEB DPOUFYUP FMFT SFQSFTFOUBN QBQÏJT EJGFSFOUFT
FOUÍP  QBSB NFMIPSBS P FOUFOEJNFOUP F SFQSFTFOUBUJWJEBEF  TFSJB
NFMIPSNVEBSTFVTOPNFT

&NCPSB QPTTB QBSFDFS QSFDJPTJTNP  DMBTTFT DPN OPNFT


QPCSFNFOUFEFGJOJEPTQPEFNEJGJDVMUBSPFOUFOEJNFOUPEPDØEJHPF
BUÏ MFWBS F FSSPT EF VUJMJ[BÎÍP 1FOTF CFN BOUFT EF OPNFBS VNB
DMBTTF

" TFHVJS  WFKB DPNP DPEJGJDBS DMBTTFT FN Java  F C#  0T


FYFNQMPT EFTUF MJWSP FTUBSÍP EJTQPOÓWFJT QBSB TFSFN BCFSUPT OP
Eclipse  F Visual Studio  &NCPSB GBMBNPT JOJDJBMNFOUF FN
Cliente  F Paciente  QBSB FYFNQMJGJDBS B DPEJGJDBÎÍP EF VNB
DMBTTF TFSÈVUJMJ[BEPPDPODFJUPEFVNQFSTPOBHFN RVFQFSUFODFBP
VN KPHP EF WJEFPHBNF /FTUF DBQÓUVMP  FTUB DMBTTF TFSÈ VUJMJ[BEB
DPNPPQSJODJQBMFYFNQMP
//Java
class Personagem {

//C#
class Personagem
{

$PNPQPEFNPTWFS DSJBSBDMBTTFFNTJOÍPÏVNBUBSFGBÈSEVB
1PSÏN  JEFOUJGJDÈMB F SFDIFÈMB DPN JOGPSNBÎÜFT F
DPNQPSUBNFOUPT EBGPSNBDPSSFUBÏPNBJPSEFTBGJP/BTTFÎÜFTB
TFHVJS WFSFNPTDPNPSFBMJ[BSFTTFTSFDIFJPT

5.1 A CLASSE 35
&$-*14&&7*46"-456%*0026&4°0

/PDBQÓUVMP6NCSFWFIJTUØSJDPEB0SJFOUBÎÍPB0CKFUPT GPJ
DJUBEP P DPODFJUP EF *%& ‰ *OUFHSBUFE %FWFMPQNFOU
&OWJSPONFOU FN QPSUVHVÐT  "NCJFOUF EF %FTFOWPMWJNFOUP
*OUFHSBEP 6NB*%&OBEBNBJTÏEPRVFVNBGFSSBNFOUBRVF
EFWF TFS VUJMJ[BEB QBSB GBDJMJUBS P QSPDFTTP EF QSPHSBNBÎÍP
EFTFOWPMWJNFOUP $PNFMB UFNPTBDFTTPBGBDJMJEBEFTDPNP
EFUFDÎÍPEFFSSPT BVUPDPNQMFUFEFDØEJHPT FEJUPSFTEFDØEJHP
FUD

/FTUF DBTP  VTBSFNPT P Eclipse  QBSB Java  F P Visual


Studio QBSB C# 1BSBTBCFSNBJTTPCSFFTTBT*%&T BDFTTFN
PTTFHVJOUFTMJOLT

&DMJQTFIUUQXXXFDMJQTFPSH

7JTVBM4UVEJPIUUQTXXXWJTVBMTUVEJPDPN

/B*OUFSOFUFYJTUFNWÈSJPTUVUPSJBJTEFDPNPDSJBS JNQPSUBSF
FYQPSUBSQSPKFUPTOFTTBT*%&T

0"53*#650
"QØTPQSPDFTTPJOJDJBMEFJEFOUJGJDBSBTFOUJEBEFT DMBTTFT RVF
EFWFNTFSNBOJQVMBEBT DPNFÎBBTVSHJSBOFDFTTJEBEFEFEFUBMIÈ
MBT"QSJNFJSBDPJTBRVFWFNËNFOUFÏRVBJTJOGPSNBÎÜFTEFWFN
TFS NBOJQVMBEBT BUSBWÏT EFTUB DMBTTF  " QBSUJS EJTUP  DPNFÎBTF B
UBSFGBEFDBSBDUFSJ[ÈMBT&TTBTDBSBDUFSÓTUJDBTÏRVFWÍPEFGJOJSRVBJT
JOGPSNBÎÜFT BT DMBTTFT QPEFSÍP BSNB[FOBS F NBOJQVMBS /B 00
FTUBTDBSBDUFSÓTUJDBTFJOGPSNBÎÜFTTÍPEFOPNJOBEBTEFBUSJCVUP

"USJCVUPÏPFMFNFOUPEFVNBDMBTTF SFTQPOTÈWFMQPSEFGJOJSTVB

36 5.2 O ATRIBUTO
FTUSVUVSB EF EBEPT 0 DPOKVOUP EFTUFT TFSÈ SFTQPOTÈWFM QPS
SFQSFTFOUBS TVBT DBSBDUFSÓTUJDBT F GBSÍP QBSUF EPT PCKFUPT DSJBEPT B
QBSUJSEBDMBTTF

&TTB EFGJOJÎÍP EFJYB CFN DMBSP RVF PT BUSJCVUPT EFWFN TFS
EFGJOJEPT EFOUSP EB DMBTTF %FWJEP B JTTP  TÍP SFTQPOTÈWFJT QPS
EFGJOJS TVB FTUSVUVSB EF EBEPT ² B QBSUJS EP VTP EF BUSJCVUPT RVF
TFSÈ QPTTÓWFM DBSBDUFSJ[BS EFUBMIBS  BT DMBTTFT  TFOEP QPTTÓWFM
SFQSFTFOUBSGJFMNFOUFVNBFOUJEBEFEPNVOEPSFBM

"TTJNDPNPOBTDMBTTFT PTBUSJCVUPTQPEFNTFSSFQSFTFOUBEPTB
QBSUJS EF TVCTUBOUJWPT "MÏN EFTUFT  QPEFNPT UBNCÏN VTBS
BEKFUJWPT 1FOTBS FN BNCPT QPEF GBDJMJUBS P QSPDFTTP EF
JEFOUJGJDBÎÍPEPTBUSJCVUPT

1PSFYFNQMP JNBHJOFRVFBFOUJEBEF Paciente GPJJEFOUJGJDBEB


QBSBPTJTUFNBIPTQJUBMBS"MHVOTEFTFVTBUSJCVUPTQPEFNTFSOPNF
$1' TFYP5PEPTFTUFTTÍPTVCTUBOUJWPT NBTBMHVOTEFTFVTWBMPSFT
QPEFSJBNTFSBEKFUJWPT4FYP OPDBTP TFSJBGFNJOJOPPVNBTDVMJOP
+È OPNF QPEFSJB TFS 'VMBOB EB 4JMWB  RVF Ï VN TVCTUBOUJWP
QSØQSJP 2VBOUP NBJT GPS SFBMJ[BEP P QSPDFTTP EF DBSBDUFSJ[BÎÍP
NBJT EFUBMIBEB TFSÈ B DMBTTF F  DPN JTTP  FMB UFSÈ NBJT BUSJCVUPT
1PSÏN  Ï QSFDJTP UFS QBSDJNÙOJB OP QSPDFTTP EF JEFOUJGJDBÎÍP EPT
BUSJCVUPT

&NCPSBVNBUSJCVUPQPTTBQFSUFODFSBDMBTTF OFNTFNQSFGBSÈ
TFOUJEP FMF TFS EFGJOJEP *TTP PDPSSF EFWJEP BP DPOUFYUP OP RVBM B
DMBTTF WBJ TFS VTBEB 1PS FYFNQMP  GPJ WJTUP BOUFSJPSNFOUF RVF
Paciente  OÍP EFJYB EF TFS VNB Pessoa  F HFSBMNFOUF FMBT
QPTTVFN VN IPCCJF 1PSÏN  FN VN DPOUFYUP IPTQJUBMBS  FTUF
BUSJCVUPOÍPBHSFHBSJBNVJUPWBMPS+ÈFN Cliente ‰RVFUBNCÏN
ÏVNBQFTTPB‰TFSJBNBJTJOUFSFTTBOUF QPJTBQBSUJSEFTFVIPCCJF
QPEFSJBN TFS BQSFTFOUBEPT QSPEVUPT RVF MIF JOUFSFTTBTTFN NBJT
1FSDFCFTF DPNJTTP RVFPDPOUFYUPEFVTPEBDMBTTFWBJJNQBDUBS
EJSFUBNFOUFOPQSPDFTTPEFEFGJOJÎÍPEFTFVTBUSJCVUPT

5.2 O ATRIBUTO 37
"JOEB OP QSPDFTTP EF JEFOUJGJDBÎÍP F DSJBÎÍP EPT BUSJCVUPT  Ï
WBMJEP SFTTBMUBS RVF OFN TFNQSF VNB JOGPSNBÎÍP NFTNP TFOEP
JNQPSUBOUF  VNB DBSBDUFSÓTUJDB JOFSFOUF Ë FOUJEBEF  EFWF TFS
USBOTGPSNBEBFNVNBUSJCVUP6NFYFNQMPDMÈTTJDPEJTTPÏBJEBEF
&NCPSB FTTB TFKB VNB DBSBDUFSÓTUJDB WÈMJEB F JNQPSUBOUF QBSB VNB
QFTTPB TFKBFMBVN Paciente PV Cliente EFWJEPBPUSBCBMIPEF
NBOUÐMB BUVBMJ[BEB UPEP BOP GB[FNPT BOJWFSTÈSJP  OÍP WBMFSJB B
QFOBDSJÈMB

/FTUFDBTP TFSJBNFMIPSVTBSPRVFÏDPOIFDJEPDPNPBUSJCVUP
DBMDVMBEP PV BUSJCVUP EFSJWBEP /FTUF DBTP  FMF OÍP TF UPSOB VN
BUSJCVUP FN TJ  NBT UFN TFV WBMPS PCUJEP B QBSUJS EF VN NÏUPEP
BJOEB TFSÈ FYQMJDBEP P RVF WFN B TFS VN NÏUPEPT NBJT Ë GSFOUF 
"TTJN  B JEBEF EF VN QBDJFOUF QPEFSJB TFS DBMDVMBEB EB TFHVJOUF
GPSNB dataHoje - dataNascimento  %FTTB GPSNB  TFNQSF
UFSFNPT B JEBEF BUVBM F BUVBMJ[BEB EP Paciente  NFTNP FMB OÍP
TFOEPVNBUSJCVUPQFSUFODFOUFËFTUSVUVSBEFEBEPTEBDMBTTF

/ÍP EJGFSFOUFNFOUF EF MJOHVBHFOT FTUSVUVSBEBT  VN BUSJCVUP


QPTTVJVNUJQP$PNPTVBGJOBMJEBEFÏBSNB[FOBSVNWBMPSRVFTFSÈ
VTBEPQBSBDBSBDUFSJ[BSBDMBTTF FMFQSFDJTBSÈJEFOUJGJDBSRVBMPUJQP
EP WBMPS BSNB[FOBEP FN TJ -JOHVBHFOT PSJFOUBEBT B PCKFUPT
QSPWFFN PT NFTNPT UJQPT EF EBEPT CÈTJDPT ‰ DPN QFRVFOBT
WBSJBÎÜFT‰RVFTVBTBOUFDFTTPSBT"TFHVJS WFKBPTUJQPTFN Java
F C# 
//Java
boolean, byte, short, int, long, float, double, char, String

//C#
bool, byte, sbyte, short, ushort, int, uint, long, ulong, float, d
ouble, decimal, char, string, String

1BSBVNBUSJCVUPTFSEFGJOJEPFNVNBDMBTTF EFWFNPTTFHVJSP
NFTNPQSJODÓQJPEFEFGJOJÎÍPEFWBSJÈWFJT‰TFKBNHMPCBJTPVMPDBJT
‰ EF VNB MJOHVBHFN FTUSVUVSBEB EFDMBSBS TFV UJQP F EFQPJT TFV
OPNF0UJQPQPEFTFSVNEPTMJTUBEPTBQPVDP0OPNFEFWFTFHVJS

38 5.2 O ATRIBUTO
BNFTNBQSFPDVQBÎÍPEBDMBTTFTFSPNBJTSFQSFTFOUBUJWPQPTTÓWFM
/PNFTDPNP qtd  vlr EFWFNTFSFWJUBEPT/ÍPEFJYFBQSFHVJÎB
MIFEPNJOBS FTDSFWB quantidade F valor 0VQJPSBJOEB  data 
%BUB EF RVF  /BTDJNFOUP  NPSUF  EF FOWJP EF VN QSPEVUP  EF
DBODFMBNFOUPEFVNBWFOEB .BJTVNBWF[ EFJYFEFTFSQSFHVJÎPTP
F FTDSFWB dataNascimento  dataObito  dataEnvio
dataCancelamento 

/PNFT DPNQPTUPT QBSB BUSJCVUPT EFWFN TFS FODPSBKBEPT  QPJT


BTTJNTFSÈGPSOFDJEBVNBNBJPSFYQSFTTJWJEBEFBPTFMFT6NPVUSP
FYFNQMP TFSJB tipoCliente  FN RVF WBMPSFT QPTTÓWFJT TFSJBN
1FTTPB'ÓTJDBPV1FTTPB+VSÓEJDB

1BSB GJOBMJ[BS FTUBS TFÎÍP  B FWPMVÎÍP EP FYFNQMP EB DMBTTF


Personagem ÏBQSFTFOUBEB"MHVOTBUSJCVUPTGPSBNEFGJOJEPT

//Java
class Personagem {

String nome;
String cor;
int quantidadeDeCogumelos;
float altura;
String tipoFisico;
boolean possuiBigode;

//C#
class Personagem
{

string nome;
string cor;
int quantidadeDeCogumelos;
float altura;
string tipoFisico;
bool possuiBigode;

5.2 O ATRIBUTO 39
453*/(26&5*10²&44&

&N Java  String PVFN C#  string PV String ÏVN


UJQP EF EBEP OÍP QSJNJUJWP VTBEP QBSB SFQSFTFOUBS UFYUPT ²
VNBFWPMVÎÍPEPWFUPSEFDIBS char[] RVFUFNPTFN C
QPSFYFNQMP

&NCPSBFMFOÍPTFKBQSJNJUJWP OBWFSEBEFFMFÏVNBDMBTTF²
USBUBEP BTTJN QPSRVF UPEB BQMJDBÎÍP OFDFTTJUB NBOJQVMBS
UFYUPT ² BMHP UÍP CÈTJDP F JOFSFOUF BP QSPDFTTP EF
EFTFOWPMWJNFOUP RVF FTUF UJQP EF EBEP UFSNJOPV TF
QSJNJUJWBOEP

1BSBNBJTEFUBMIFTTPCSFFTUFFPVUSPTUJQPTEFEBEPTFN Java
F C#  BDPOTFMIP VNB PMIBEB OB EPDVNFOUBÎÍP EFTTBT
MJOHVBHFOT "TTJN  BMÏN EF BMHP B NBJT TPCSF PT UJQPT  TFSÈ
QPTTÓWFMBQSFOEFSBMHPBNBJTTPCSFFTTBTMJOHVBHFOT-FNCSF
TF FTUFÏVNMJWSPTPCSF0SJFOUBÎÍPB0CKFUPT FOÍPEF Java
PV C# 

%PDVNFOUBÎÍP +BWB
IUUQXXXPSBDMFDPNUFDIOFUXPSLQUKBWBKBWBT
FEPDVNFOUBUJPOJOEFYIUNM

%PDVNFOUBÎÍP $
IUUQTNTEONJDSPTPGUDPNQU
#3MJCSBSZLYYBTQY

0.²50%0
5FOEP JEFOUJGJDBEP B DMBTTF DPN TFVT BUSJCVUPT  B TFHVJOUF
QFSHVOUB QPEF TVSHJS NBT P RVF GB[FS DPN FMFT  $PNP NBOJQVMBS

40 5.3 O MÉTODO
UBJT BUSJCVUPT  ² OFTTB IPSB RVF P NÏUPEP FOUSB FN DFOB &TUF Ï
SFTQPOTÈWFM QPS JEFOUJGJDBS F FYFDVUBS BT PQFSBÎÜFT RVF B DMBTTF
GPSOFDFSÈ &TTBT PQFSBÎÜFT  WJB EF SFHSB  UÐN DPNP GJOBMJEBEF
NBOJQVMBSPTBUSJCVUPT

.ÏUPEP Ï VNB QPSÎÍP EF DØEJHP TVCSPUJOB  RVF Ï


EJTQPOJCJMJ[BEB QFMB DMBTTF &TUF Ï FYFDVUBEP RVBOEP Ï GFJUB VNB
SFRVJTJÎÍP B FMF 6N NÏUPEP TFSWF QBSB JEFOUJGJDBS RVBJT TFSWJÎPT
BÎÜFT RVFBDMBTTFPGFSFDF&MFTTÍPSFTQPOTÈWFJTQPSEFGJOJSFSFBMJ[BS
VNEFUFSNJOBEPDPNQPSUBNFOUP

1BSB GBDJMJUBS P QSPDFTTP EF JEFOUJGJDBÎÍP EPT NÏUPEPT EF VNB


DMBTTF QPEFNPTQFOTBSFNWFSCPT*TTPPDPSSFEFWJEPËTVBQSØQSJB
EFGJOJÎÍPBÎÜFT0VTFKB RVBOEPTFQFOTBOBTBÎÜFTRVFVNBDMBTTF
WFOIBBPGFSFDFS FMBJEFOUJGJDBTFVTNÏUPEPT

/PQSPDFTTPEFEFGJOJÎÍPEFVNNÏUPEP BTVBBTTJOBUVSBEFWF
TFSJEFOUJGJDBEB&TUBOBEBNBJTÏEPRVFPOPNFEPNÏUPEPFTVB
MJTUB EF QBSÉNFUSPT .BT DPNP OPNFBS PT NÏUPEPT  /PWBNFOUF
VNB FYQSFTTJWJEBEF BP OPNF EP NÏUPEP EFWF TFS GPSOFDJEB  BTTJN
DPNP GPJ GFJUP DPN P BUSJCVUP 1PS FYFNQMP  OP DPOUFYUP EP
IPTQJUBM  JNBHJOF UFSNPT VNB DMBTTF Procedimento  MPHP  VN
QÏTTJNPOPNFEFNÏUPEPTFSJB calcular $BMDVMBSPRVÐ 0WBMPS
UPUBM EP QSPDFEJNFOUP  P RVBOUP DBEB NÏEJDP EFWF SFDFCFS QFMP
NFTNP  P MVDSP EP QMBOP QPS FTUF  /FTUF DBTP  TFSJB NBJT
JOUFSFTTBOUF calcularTotal  calcularGanhosMedico
calcularLucro 

7FKBRVF BPMFSNPTFTTFTOPNFTMPHPEFDBSB KÈTBCFNPTPRVF


DBEB NÏUPEP TF QSPQÜF B GB[FS +È B MJTUB EF QBSÉNFUSPT TÍP
JOGPSNBÎÜFT BVYJMJBSFT RVF QPEFN TFS QBTTBEBT BPT NÏUPEPT QBSB
FTUFTFYFDVUFNTVBTBÎÜFT$BEBNÏUPEPQPEFSÈUFSBTVB DBTPIBKB
OFDFTTJEBEF &TUB MJTUB Ï CFN MJWSF F  FN EFUFSNJOBEPT NPNFOUPT
QPEFNPT OÍP UFS QBSÉNFUSPT  DPNP FN PVUSPT QPEFNPT TFS VNB
DMBTTF QBTTBEB DPNP QBSÉNFUSP  PV UBNCÏN UJQPT QSJNJUJWPT F

5.3 O MÉTODO 41
DMBTTFTBPNFTNPUFNQP)ÈUBNCÏNBQPTTJCJMJEBEFEFQBTTBSNPT
TPNFOUF UJQPT QSJNJUJWPT  FOUSFUBOUP  JTUP SFNFUF Ë QSPHSBNBÎÍP
FTUSVUVSBEB F EFWF TFS EFTFODPSBKBEP 7JB EF SFHSB  TF WPDÐ QBTTB
NVJUPT QBSÉNFUSPT TFQBSBEPT  UBMWF[ FMFT QVEFTTFN SFQSFTFOUBS
BMHVNDPODFJUPFNDPOKVOUP/FTUFDBTP WBMFSJBBQFOBBWBMJBSNPT
TFOÍPTFSJBNFMIPSDSJBSVNBDMBTTFQBSBBHMVUJOÈMPT

1PS GJN  FNCPSB OÍP GBÎB QBSUF EF TVB BTTJOBUVSB  PT NÏUPEPT
EFWFNQPTTVJSVNSFUPSOP4FVNBBÎÍPÏEJTQBSBEB ÏEFTFFTQFSBS
VNB SFBÎÍP 0 SFUPSOP EF VN NÏUPEP QPEF TFS RVBMRVFS VN EPT
UJQPT QSJNJUJWPT WJTUPT OB TFÎÍP TPCSF BUSJCVUPT "MÏN EFTUFT  P
NÏUPEPQPEFUBNCÏNSFUPSOBSRVBMRVFSVNEPTDPODFJUPT DMBTTFT
RVF GPSBN EFGJOJEPT QBSB TBUJTGB[FS BT OFDFTTJEBEFT EF TJTUFNB FN
EFTFOWPMWJNFOUP "TTJN  PT TFHVJOUFT FYFNQMPT QPEFN TFS
BQSFTFOUBEPT double calcularTotal()  void
finalizarProcedimento()  Procedimento
consultarProcedimentoPorPlano(Plano plano) 

70*%026&²*440

2VBOEPOFDFTTJUBNPTRVFVNNÏUPEPOÍPUFOIBSFUPSOP OÍP
EFWFNPT TJNQMFTNFOUF PNJUJS P UJQP EF SFUPSOP /B WFSEBEF
EFWFNPT VTBS B QBMBWSB SFTFSWBEB void  RVF TJHOJGJDB RVF P
NÏUPEPOÍPSFUPSOBSÈOBEB

-JOHVBHFOTDPNP C KÈEJTQPOJCJMJ[BNFTTFSFDVSTP

"HPSBÏIPSBEFWPMUBSËDMBTTF Personagem QBSBWFSDPNPFMB


GJDBSÈDPNBMHVOTNÏUPEPTEFGJOJEPT
//Java
class Personagem {

String nome;

42 5.3 O MÉTODO
String cor;
int quantidadeDeCogumelos;
float altura;
String tipoFisico;
boolean possuiBigode;

String getNome() {
return nome;
}

void setNome(String nome) {


this.nome = nome;
}

// get/set para os demais

void pular() {
// implementação aqui.
}

void pegarCogumelo(Cogumelo cogumelo) {


// implementação aqui.
}

BolaFogo atirarFogo() {
// implementação aqui.
}
}

//C#
class Personagem
{

string nome;
string cor;
int quantidadeDeCogumelos;
float altura;
string tipoFisico;
bool possuiBigode;

string Nome
{
get { return nome; }
set { nome = value; }
}

// get/set para os demais

void Pular()

5.3 O MÉTODO 43
{
// implementação aqui.
}

void PegarCogumelo(Cogumelo cogumelo)


{
// implementação aqui.
}

BolaFogo AtirarFogo()
{
// implementação aqui.
}

(&54&5 &*4"26&45°0

&NCPSB TFKB NVJUP DPNVN FODPOUSBS DØEJHPT EF FOTJOP EF


0SJFOUBÎÍP B 0CKFUPT  UBJT DPNP MJWSPT  UVUPSJBT  FOUSF PVUSPT
UFYUPT RVF VTFN get  set  FTUFT EFWFN TFS VTBEPT DPN
QBSDJNÙOJBFNVJUPDVJEBEP1SJODJQBMNFOUF P set 

1PS FORVBOUP  FTUB RVFTUÍP TFSÈ SFMFWBEB .BT  NBJT BEJBOUF


FOUSBSFNPT FN NBJT EFUBMIFT TPCSF FMB  F TFSÈ FYQMJDBEP P
QPSRVÐEFUBMQSFPDVQBÎÍP/FTUFNPNFOUP FMFTTFSÍPVTBEPT
QBSB NBOJQVMBS OPTTBT DMBTTFT  BUSJCVUPT F NÏUPEPT EF GPSNB
JOUSPEVUØSJB

5)*4026&²*440

"JOEBOÍPUFNPTDPOEJÎÜFTEFFYQMJDBSPRVFÏFQBSBRVFTFSWF
FTUBQBMBWSBSFTFSWBEB"QØTBTFÎÍP00CKFUPTFSBQSFTFOUBEB
TFSÈQPTTÓWFMFYQMJDBSEFGPSNBNBJTDMBSBPRVFWFNBTFS

44 5.3 O MÉTODO
%PJTNÏUPEPTFTQFDJBJT
&N VNB DMBTTF  JOEFQFOEFOUF EF RVBM DPODFJUP FMB RVFJSB
SFQSFTFOUBS QPEFNPTUFSRVBOUPTNÏUPEPTGPSFNOFDFTTÈSJPT$BEB
VN TFSÈ SFTQPOTÈWFM QPS VNB EFUFSNJOBEB PQFSBÎÍP RVF B DMBTTF
EFTFKB PGFSFDFS .VJUBT WF[FT  PT NÏUPEPT USBCBMIBN FN DPOKVOUP
QBSB SFBMJ[BS TFVT DPNQPSUBNFOUPT "MÏN EJTTP  JOEFQFOEFOUF EB
RVBOUJEBEF F GJOBMJEBEF EPT NÏUPEPT EF VNB DMBTTF  FYJTUFN EPJT
NÏUPEPTFTQFDJBJTRVFUPEBDMBTTFQPTTVJPDPOTUSVUPSFPEFTUSVUPS

0 DPOTUSVUPS Ï SFTQPOTÈWFM QPS DSJBS PCKFUPT ‰ OB TFÎÍP 0


0CKFUP TFSÈ WJTUP DPNP Ï FTTF QSPDFTTP EF DSJBÎÍP ‰ B QBSUJS EB
DMBTTFFNRVFTUÍP0VTFKB TFNQSFRVFGPSOFDFTTÈSJPDSJBSPCKFUPT
EF VNB EFUFSNJOBEB DMBTTF  TFV DPOTUSVUPS EFWFSÈ TFS VUJMJ[BEP ²
BUSBWÏT EP TFV VTP RVF TFSÈ QPTTÓWFM JOTUBODJBS PCKFUPT F  B QBSUJS
EJTUP NBOJQVMBSEFGPSNBFGFUJWBTFVTBUSJCVUPTFNÏUPEPT

"MÏN EJTUP  VNB PVUSB GVOÎÍP EP DPOTUSVUPS Ï QSPWFS BMHVOT


WBMPSFTJOJDJBJTRVFPPCKFUPQSFDJTBUFSOPDPNFÎP1PSGJN DPNP
Java  F C#  TÍP BT MJOHVBHFOT VUJMJ[BEBT QBSB JMVTUSBS PT OPTTPT
DPODFJUPT  P QSPDFTTP EF EFGJOJÎÍP EPT DPOTUSVUPSFT OFTTBT
MJOHVBHFOT Ï P TFHVJOUF DSJBS VN NÏUPEP DPN P NFTNP OPNF EB
DMBTTF F TFN SFUPSOP 1PEF PV OÍP UFS QBSÉNFUSPT 1BSB GBDJMJUBS  P
DØEJHPBTFHVJSÏBQSFTFOUBEP
//Java
class Personagem {

// Atributos definidos anteriormente

//Construtor
Personagem () {
// implementação desejada
}

// get/set e demais métodos

5.3 O MÉTODO 45
//C#
class Personagem
{

// Atributos definidos anteriormente

//Construtor
Personagem ()
{
// implementação desejada
}

// get/set e demais métodos

0 OPNF EP NÏUPEP DPOTUSVUPS Ï JEÐOUJDP BP EB DMBTTF 1PSÏN


IÈ VNB QFDVMJBSJEBEF /P QBSÈHSBGP BOUFSJPS GPJ EJUP RVF P
DPOTUSVUPSÏTFNSFUPSOP FKÈGPJWJTUPBOUFSJPSNFOUFRVF RVBOEP
VN NÏUPEP ‰ F P DPOTUSVUPS Ï VN ‰ OÍP UFN SFUPSOP  B QBMBWSB
SFTFSWBEB void  EFWF TFS VTBEB &OUSFUBOUP  QBSB PT DPOTUSVUPSFT
JTTP Ï EJGFSFOUF /FTUF DBTP  SFBMNFOUF PNJUFTF RVBMRVFS SFUPSOP
BUÏNFTNPP void ²QPTTÓWFMEFUFSNJOBSJNQMJDJUBNFOUFPUJQPEF
SFUPSOPBQBSUJSEFVNSBDJPDÓOJPCÈTJDPTFPDPOTUSVUPSQFSUFODFB
FTUBEFUFSNJOBEBDMBTTFFBGVOÎÍPEFMFÏDSJBSPCKFUPTBQBSUJSEFMB
MPHP TFV SFUPSOP TFSÈ PCKFUPT EP UJQP EB DMBTTF 1PS JTTP OÍP
QSFDJTBNPTEFGJOJSSFUPSOPBMHVN

46 5.3 O MÉTODO
$63*04*%"%& $0.0 4°0 %&'*/*%04 $0/4536503&4 &. 36#: &
1:5)0/

$PNP WFN TFOEP EJUP  FTUF MJWSP VTB Java F C#  DPNP


MJOHVBHFOT EF FYFNQMP 1PSÏN  3VCZ F 1ZUIPO UBNCÏN TÍP
MJOHVBHFOT PSJFOUBEBT B PCKFUPT EF HSBOEF BDFJUBÎÍP OP
NFSDBEP "TTJN  B UÓUVMP EF DVSJPTJEBEF  P DØEJHP B TFHVJS
JMVTUSBPTDPOTUSVUPSFTOFTUBTMJOHVBHFOT
# Python
def init():
# implementação desejada

# Ruby
def initialize()
# implementação desejada
end

² QPTTÓWFM OPUBS RVF  FN Ruby  F FN Python  P OPNF EP


DPOTUSVUPSOÍPUFNOFOIVNBSFMBÎÍPDPNPOPNFEBDMBTTF

1BSB GJOBMJ[BS P BTTVOUP EF DPOTUSVUPSFT  NVJUBT MJOHVBHFOT ‰


Java F C# TÍPFYFNQMPT‰QPTTVFNDPOTUSVUPSFTJNQMÓDJUPT0V
TFKB NFTNPTFPTQSPHSBNBEPSFTOÍPEFGJOJSFNVNDPOTUSVUPSQBSB
B DMBTTF  FMF FTUBSÈ EJTQPOÓWFM 1PS QBESÍP  P DPOTUSVUPS JNQMÓDJUP
UFN DPNP BTTJOBUVSB B KÈ BQSFTFOUBEB BOUFSJPSNFOUF P NFTNP
OPNF EB DMBTTF F TFN QBSÉNFUSPT 0T DØEJHPT BQSFTFOUBEPT FN
Java F C# EBDMBTTF Personagem TÍPFYFNQMPTEFDPOTUSVUPSFT
QBESÍP UBNCÏNDIBNBEPTEFEFGBVMU

/FTUFTDØEJHPT FMFTGPSBNEFGJOJEPTFYQMJDJUBNFOUFQBSBGBDJMJUBS
P FOUFOEJNFOUP &OUSFUBOUP  TF FMFT OÍP UJWFTTFN TJEP EFGJOJEPT
BJOEB QPEFSJBN TFS VTBEPT  QPJT FTTB Ï B GPSNB NÓOJNB EF EFGJOJS
VN DPOTUSVUPS Java  F C#  DPOTFHVFN QSPWFS FTTF UJQP EF
JNQMFNFOUBÎÍP BVUPNBUJDBNFOUF TPNFOUF B EFGJOJÎÍP EP

5.3 O MÉTODO 47
DPOTUSVUPSTFNOFOIVNBDPEJGJDBÎÍPJOUFSOBEFOUSPEFMF

+È P EFTUSVUPS UFN B GVOÎÍP JOWFSTB EFTUSVJS P PCKFUP DSJBEP B


QBSUJS EB DMBTTF 0V TFKB  TFNQSF RVF OÍP QSFDJTBSNPT NBJT EF
PCKFUPT RVF GPSBN DSJBEPT B QBSUJS EF VNB EFUFSNJOBEB DMBTTF
EFWFNPT VTBS TFV EFTUSVUPS ² BUSBWÏT EP TFV VTP RVF QPEFSFNPT
FMJNJOBS PT PCKFUPT DSJBEPT "P DPOUSÈSJP EP DPOTUSVUPS  PT
EFTUSVUPSFT FN Java  F C#  QPTTVFN TJOUBYFT CFN EJGFSFOUFT
7FKBNOBTBTFHVJS
//Java
class Personagem {

// Atributos definidos anteriormente

Personagem () {
// implementação desejada
}

// get/set e demais métodos

//destrutor
void finalize() {
// implementação desejada
}

//C#
class Personagem
{

// Atributos definidos anteriormente

Personagem ()
{
// implementação desejada
}

// get/set e demais métodos

//destrutor
~Personagem ()
{
// implementação desejada

48 5.3 O MÉTODO
}
}

" JEFJB QPS EFUSÈT EFTTF QSPDFTTP EF FMJNJOBÎÍP EPT PCKFUPT Ï
MJCFSBSQPTTÓWFJTSFDVSTPTRVFFMFUFWFEFBQPEFSBSQBSBSFBMJ[BSTVBT
BUJWJEBEFT BMÏNEFUBNCÏNTJNQMFTNFOUFFMJNJOÈMP1PSFYFNQMP
JNBHJOFVNPCKFUPDSJBEPBQBSUJSEFVNBDMBTTFRVFSFQSFTFOUFVNB
JNQSFTTPSB 1SPWBWFMNFOUF QSFDJTBSFNPT SFTFSWBS QBSB FMF VNB
QPSUB TFSJBM "TTJN TFSÈ QPTTÓWFM SFBMJ[BS B DPNVOJDBÎÍP FOUSF B
JNQSFTTPSB F P DPNQVUBEPS $PN JTTP  BT BQMJDBÎÜFT QPEFSÍP
SFBMJ[BSJNQSFTTÜFT

&OUSFUBOUP  TF FTTB QPSUB OÍP GPS MJCFSBEB FN NPNFOUP BMHVN
FMBGJDBSÈBMPDBEBJOEFGJOJEBNFOUFBFTUFPCKFUP NFTNPRVBOEPOÍP
FTUJWFSFN TFOEP SFBMJ[BEBT NBJT JNQSFTTÜFT &OUÍP TFSJB VNB CPB
QSÈUJDBMJCFSBSFTTBQPSUBRVBOEPPPCKFUPOÍPGPTTFNBJTOFDFTTÈSJP
PV TFKB  RVBOEP FMF QVEFTTF TFS EFTUSVÓEP /FTUF DBTP  OBEB NBJT
BQSPQSJBEPEPRVFMJCFSBSFTUFSFDVSTPOPEFTUSVUPS1BSBGJOBMJ[BS B
NFTNBJEFJBEFJNQMÓDJUPEPTDPOTUSVUPSFTTFBQMJDBBPTEFTUSVUPSFT

5.3 O MÉTODO 49
$63*04*%"%& +« 067* '"-"3 26& /°0 %&7&.04 64"3 %*3&5".&/5&
04%&4536503&4 ²7&3%"%&

4JN  Ï WFSEBEF $BTP IBKB OFDFTTJEBEF  EFWFNPT EFGJOJS PT


EFTUSVUPSFT QBSB OPTTBT DMBTTFT F GVUVSPT PCKFUPT  NBT OÍP
EFWFNPTVTÈMPTEJSFUBNFOUF*TUPOÍPÏQSPJCJEP NBTUBNCÏN
OÍP Ï VNB CPB QSÈUJDB /B WFSEBEF  NFTNP TF PT VTBSNPT
EJSFUBNFOUF  BJOEB OÍP UFSFNPT B DFSUF[B EF RVF  OP FYBUP
NPNFOUPEFTFVVTP PPCKFUPTFSÈFMJNJOBEP

*TTP PDPSSF EFWJEP B VNB GVODJPOBMJEBEF RVF BT MJOHVBHFOT


PSJFOUBEBT B PCKFUPT QSPWFFN P (BSCBHF $PMMFDUPS &TUF Ï
SFTQPOTÈWFM QPS BVUPNBUJDBNFOUF GJDBS JEFOUJGJDBOEP PCKFUPT
RVF OÍP NBJT FTUÍP TFOEP VTBEPT F FMJNJOÈMPT &TUF QSPDFTTP
EF HFSFODJBNFOUP EF PCKFUPT TVSHJV FN Smalltalk 80  F Ï
VUJMJ[BEP FN MJOHVBHFOT RVF TVSHJSBN EFQPJT  QPS FYFNQMP
Java F C# 

0 (BSCBHF $PMMFDUPS QPTTVJ BMHPSJUNPT EF JEFOUJGJDBÎÍP EF


PCKFUPTPDJPTPTRVF DPNDFSUF[B GBSÍPVNØUJNPUSBCBMIPQBSB
OØT FMJNJOBOEPPTOÍPNBJTVTBEPT&TUBGBDJMJEBEFNBJTVNB
WF[ SFGPSÎB P TFOUJEP EB 00 GBDJMJUBS P QSPDFTTP EF
EFTFOWPMWJNFOUP &N MJOHVBHFOT DPNP C  UFNPT EF OPT
QSFPDVQBS FN MJCFSBS B NFNØSJB DPN DPNBOEPT EP UJQP
free 

"TPCSFDBSHBEFNÏUPEP
.VJUBTWF[FT ÏQSFDJTPRVFVNNFTNPNÏUPEPQPTTVBFOUSBEBT
QBSÉNFUSPT  EJGFSFOUFT *TTP PDPSSF QPSRVF FMF QPEF QSFDJTBS
SFBMJ[BS PQFSBÎÜFT EJGFSFOUFT FN EFUFSNJOBEP DPOUFYUP &TUF
QSPDFTTPÏDIBNBEPEFTPCSFDBSHBEFNÏUPEP

50 5.3 O MÉTODO
1BSBSFBMJ[ÈMB EFWFNPTNBOUFSPOPNFEPNÏUPEPJOUBDUP NBT
BMUFSBS TVB MJTUB EF QBSÉNFUSPT 1PEFN TFS BDSFTDFOUBEPT PV
SFUJSBEPT QBSÉNFUSPT QBSB BTTJN TF QSPWFS VN OPWP
DPNQPSUBNFOUP 1PS FYFNQMP  TF VNB EFUFSNJOBEB BQMJDBÎÍP
UJWFTTF VNB DMBTTF QBSB SFQSFTFOUBS VN RVBESJMÈUFSP  FMB EFWFSJB TF
DIBNBS Quadrilatero  F QPTTVJS P NÏUPEP calcularArea
TFHVJOEPBTCPBTQSBUJDBTKÈDJUBEBT.BTTBCFNPTRVFVNRVBESBEP
SFUÉOHVMP MPTBOHPFUSBQÏ[JPTÍPRVBESJMÈUFSPT

.BJT JOUFSFTTBOUF EP RVF QPTTVJS VN NÏUPEP QBSB DBEB GJHVSB
calcularAreaQuadrado  calcularAreaLosango FUD ÏEFGJOJSP
NFTNPNÏUPEP calcularArea  DPN VNB MJTUB EF QBSÉNFUSPT RVF
TFBEFRVFBDBEBVNEFTTFTRVBESJMÈUFSPT"TFHVJS WFKBPSFTVMUBEP
EFTTBBCPSEBHFN
//Java
class Quadrilatero {

//Área do quadrado
double calcularArea(double lado) {
return lado * lado;
}

//Área do retângulo
double calcularArea(double baseMaior, double baseMenor) {
return baseMaior * baseMenor;
}

//Área do trapézio
double calcularArea(double baseMaior, double baseMenor, double a
ltura) {
return ((baseMaior + baseMenor) * altura)/2;
}

//Área do losango
double calcularArea(double diagonalMaior, double diagonalMenor)
{
return diagonalMaior * diagonalMenor;
}
}

//C#
class Quadrilatero

5.3 O MÉTODO 51
{

//Área do quadrado
double CalcularArea(double lado)
{
return lado * lado;
}

//Área do retângulo
double CalcularArea(double baseMaior, double baseMenor)
{
return baseMaior * baseMenor;
}

//Área do trapézio
double CalcularArea(double baseMaior, double baseMenor, double a
ltura)
{
return ((baseMaior + baseMenor) * altura)/2;
}

//Área do losango
double CalcularArea(double diagonalMaior, double diagonalMenor)
{
return diagonalMaior * diagonalMenor;
}

/P FYFNQMP EFNPOTUSBEP BOUFSJPSNFOUF  BQFOBT B RVBOUJEBEF


EPT QBSÉNFUSPT GPJ BMUFSBEB 1PSÏN  TFVT UJQPT GPSBN PT NFTNPT
.BTDBTPIBKBOFDFTTJEBEF PTUJQPTQPEFNUBNCÏNTFSNVEBEPT4F
GPTTF QSFDJTP RVF P DÈMDVMP EBT ÈSFBT TØ GPTTF GFJUP B QBSUJS EF
NFEJEBTJOUFJSBT OBEBJNQFEJSJBRVFPUJQP double GPTTFUSPDBEP
QPS int  /FTUF DBTP  TFSJBN PVUSBT TPCSFDBSHBT QBSB P NÏUPEP
calcularArea 

0V TFKB  TFNQSF RVF B MJTUB EF QBSÉNFUSPT NVEB  TFKB


BDSFTDFOUBOEPPVFMJNJOBOEPQBSÉNFUSPT NVEBOEPTFVTUJQPTFBUÏ
NFTNP TVB TFRVÐODJB  FTUBSFNPT DSJBOEP TPCSFDBSHBT EF VN
NÏUPEP .BT MFNCSFTF EF RVF P OPNF EFMF EFWF QFSNBOFDFS
JOUBDUP

52 5.3 O MÉTODO
6."/07"/0.&/$-"563"

2VBOEP RVFSFNPT OPT SFGFSFODJBS B BUSJCVUPT F NÏUPEPT EF


VNBDMBTTFPCKFUP QPEFNPTDIBNBSBNCPTEFNFNCSPT&TUFÏ
VNUFSNPRVFFOHMPCBKVOUBNFOUFFTUFTEPJTDPODFJUPT4FWPDÐ
PVWJS BMHVÏN GBMBS FN NFNCSPT EB DMBTTF PV NFNCSPT EP
PCKFUP TBJCBRVFFTUÍPTFSFGFSJOEPBTFVTBUSJCVUPTFNÏUPEPT

00#+&50
&NCPSB P OPNF EP QBSBEJHNB RVF FTUÈ TFOEP FTUVEBEP TFKB
0SJFOUBÎÍP B 0CKFUP  KÈ UÓOIBNPT WJTUP RVF UVEP DPNFÎB DPN B
EFGJOJÎÍPEFVNBDMBTTF&OUÍP PRVFÏVNPCKFUP ²BJOTUBODJBÎÍP
EFVNBDMBTTF

$PNPKÈFYQMJDBEP BDMBTTFÏBBCTUSBÎÍPCBTFBQBSUJSEBRVBMPT
PCKFUPTGPSBNDSJBEPT2VBOEPTFVTBB00QBSBDSJBSVNTPGUXBSF
QSJNFJSP QFOTBNPT OPT PCKFUPT RVF FMF WBJ NBOJQVMBSSFQSFTFOUBS
5FOEPFTUFTTJEPTJEFOUJGJDBEPT EFWFNPTFOUÍPEFGJOJSBTDMBTTFTRVF
TFSWJSBNEFBCTUSBÎÍPCBTFQBSBRVFPTPCKFUPTWFOIBNBTFSDSJBEPT
JOTUBODJBEPT 

6NPCKFUPÏBSFQSFTFOUBÎÍPEFVNDPODFJUPFOUJEBEFEPNVOEP
SFBM  RVF QPEF TFS GÓTJDB CPMB  DBSSP  ÈSWPSF FUD  PV DPODFJUVBM
WJBHFN FTUPRVF DPNQSBFUD FQPTTVJVNTJHOJGJDBEPCFNEFGJOJEP
QBSBVNEFUFSNJOBEPTPGUXBSF1BSBFTUFDPODFJUPFOUJEBEF EFWFTFS
EFGJOJEB JOJDJBMNFOUF VNB DMBTTF B QBSUJS EB RVBM QPTUFSJPSNFOUF
TFSÍPJOTUBODJBEPTPCKFUPTEJTUJOUPT

5.4 O OBJETO 53
'JHVSB&YFNQMPTEFPCKFUPTEPNVOEPSFBM

$POUFYUVBMJ[BOEP NFMIPS  JNBHJOF RVF UFNPT VN TPGUXBSF EF


'MVYPEF$BJYB MPHP VNDPODFJUPRVFFMFUFSJBEFNBOJQVMBSTFSJB
VNBDPOUB&OUÍPEFWFSÓBNPTDSJBSVNBDMBTTFDIBNBEB Conta F B
QBSUJSEFMB PCKFUPTRVFSFQSFTFOUBSJBNVNB$POUBEF«HVB $POUB
EF&OFSHJB $POUBEF5FMFGPOF FOUSFPVUSPTRVFTFSJBNDSJBEPT$BEB
VN UFSJB TFVT SFTQFDUJWPT WBMPSFT DPNP QPS FYFNQMP UPUBM B TFS
QBHP FNQSFTBRVFGPSOFDFUBMTFSWJÎP FOUSFPVUSPT

"QBSUJSEJTUP QFSDFCFNPTRVF OPQSPDFTTPEFJEFOUJGJDBÎÍPEPT


DPODFJUPTFOUJEBEFT RVF TÍP OFDFTTÈSJPT QBSB P TPGUXBSF TF UPSOBS
PQFSBOUF QSJNFJSPEFWFNPTJEFOUJGJDBSPTPCKFUPTFNVNBMUPOÓWFM
EF QFOTBNFOUP 4PNFOUF BQØT FTUF QSPDFTTP Ï RVF BT DMBTTFT DPN
TFVTBUSJCVUPTFNÏUPEPTTÍPEFGJOJEBTQBSBBCTUSBJSFTUFTPCKFUPTF
GJOBMNFOUF DSJBSDBEBPCKFUPEJTUJOUPBQBSUJSEBDMBTTFEFGJOJEB

1BSB JEFOUJGJDBS F OPNFBS PT PCKFUPT  EFWFNPT TFHVJS P NFTNP


QSJODÓQJP EBT DMBTTFT QFOTBS FN TVCTUBOUJWPT *TTP PDPSSF QPSRVF
VNPCKFUPÏDSJBEPBQBSUJSEFVNBDMBTTF1PSGJN PDØEJHPBTFHVJS
JMVTUSBDPNPDSJBSVNPCKFUPBQBSUJSEBDMBTTF Personagem 
//Java

Personagem personagem = new Personagem();

54 5.4 O OBJETO
//C#

Personagem personagem = new Personagem();

&TTF DØEJHP VTB P DPOTUSVUPS RVF GPJ EFGJOJEP OB DMBTTF


Personagem QBSBDSJBS JOTUBODJBS VNPCKFUPBQBSUJSEFMB$PNP
BVYÓMJP EP PQFSBEPS new  VN PCKFUP EP UJQP Personagem Ï
JOTUBODJBEP  RVF Ï BSNB[FOBEP OB WBSJÈWFM personagem  &TUF
QFSTPOBHFN QPEFSJB UFS P WBMPS 1FSTPOBHFN  QBSB TFV BUSJCVUP
nome  "TTJN  QPEFSÓBNPT OPT SFGFSJS B FTUF PCKFUP DSJBEP QPS
TPNFOUF1FSTPOBHFN

01&3"%03/&8

1BSB RVFN WFN EB QSPHSBNBÎÍP FTUSVUVSBEB  Ï DPNVN TF


QFOTBSRVFTØPTPQFSBEPSFT +  -  *  / FOUSFPVUSPTRVF
NBOJQVMBN EBEPT QSJNJUJWPT  FTUÍP EJTQPOÓWFJT .BT BMÏN
EFTUFT  FYJTUFN NBJT PQFSBEPSFT  QPJT FYJTUFN NBJT UJQPT
EJTQPOÓWFJT

$MBTTFT0CKFUPT TÍP UJQPT EF EBEPT OÍP QSJNJUJWPT RVF TÍP


EFGJOJEPTQPSQSPHSBNBEPSFT&OUÍPEFWFNFYJTUJSPQFSBEPSFT
FTQFDÓGJDPTQBSBFMFT6NEFMFTÏP new SFTQPOTÈWFMQPSDSJBS
PCKFUPTBQBSUJSEFVNBDMBTTF

0FTUBEPEFVNPCKFUP
2VBOEP DSJBNPT VN PCKFUP  QPEFSFNPT VTBS TFVT BUSJCVUPT F
NÏUPEPT'PDBOEPNBJTFTQFDJGJDBNFOUFOPTBUSJCVUPT WBMPSFTBGJOT
QPEFSÍP TFS BUSJCVÓEPT B FMFT EF BDPSEP DPN DBEB OFDFTTJEBEF
FTQFDÓGJDBFNNPNFOUPTEJTUJOUPT²OFTTFQSPDFTTPEFNVEBOÎBEF
WBMPSFTEPTBUSJCVUPTRVFÏEFGJOJEPPFTUBEPEFVNPCKFUP

0FTUBEPEFVNPCKFUPÏPDPOKVOUPEPTWBMPSFTEPTTFVTBUSJCVUPT

5.4 O OBJETO 55
EFVNEFUFSNJOBEPNPNFOUP&TUFTWBMPSFTQPEFNNVEBSBRVBMRVFS
NPNFOUP F FN RVBMRVFS RVBOUJEBEF  TPC RVBMRVFS DJSDVOTUÉODJB
$PN JTTP  P PCKFUP QPEF UFS RVBOUPT FTUBEPT OFDFTTJUBS FORVBOUP FMF
FTUJWFSFNFYFDVÎÍP

0VTFKB PDPODFJUPEFFTUBEPEFVNPCKFUPÏJOUSJOTFDBNFOUFF
TPNFOUFMJHBEPBPTTFVTBUSJCVUPT1PSFYFNQMPQBSBVNPCKFUPEF
VNBDMBTTF Aluno VNFTUBEPWBMJEPTFSJB

nome 'VMBOP
matricula 
situação "QSPWBEP
disciplinas  &TUSVUVSB EF EBEPT  4JTUFNBT
0QFSBDJPOBJT 5FPSJBEB$PNQVUBÎÍP

1BSBFTUFNFTNPPCKFUP VNPVUSPFTUBEPTFSJB

nome 'VMBOP
matricula 
situação 3FQSPWBEP
disciplinas  &TUSVUVSB EF EBEPT  4JTUFNBT
0QFSBDJPOBJT 5FPSJBEB$PNQVUBÎÍP

1FSDFCB RVF TPNFOUF B TJUVBÎÍP NVEPV EF "Aprovado"  QBSB


"Reprovado"  "TTJN  VN OPWP FTUBEP GPJ BTTVNJEP QPS FTUF
PCKFUP

1PSÏN  TF UJWÏTTFNPT VN PVUSP PCKFUP EB DMBTTF Aluno  FTUF
OÍPTFSJBVNUFSDFJSPFTUBEPQBSBPPCKFUPJOJDJBMNFOUFBQSFTFOUBEP
1PSFYFNQMP

nome $JDSBOP
matricula 
situação .BUSJDVMBEP
disciplinas  -ØHJDB .BUFNÈUJDB  "SRVJUFUVSB EF
$PNQVUBEPSFT $PNQJMBEPSFT

56 5.4 O OBJETO
&TUF Ï VN PVUSP PCKFUP DPNQMFUBNFOUF EFTBTTPDJBEP DPN P
QSJNFJSP  RVF SFQSFTFOUBWB P "Fulano"  &TUF BHPSB SFQSFTFOUB P
"Cicrano"  4ÍP PCKFUPT DPNQMFUBNFOUF EJGFSFOUFT  QPJT TÍP EVBT
JOTUÉODJBT PCKFUPT EBDMBTTF Aluno DSJBEBTVNBQBSBSFQSFTFOUBS
P "Fulano"  F PVUSB P "Cicrano"  &MBT QPTTVFN B JEFOUJEBEF
EJGFSFOUF  OP DBTP B NBUSÓDVMB EP BMVOP  F DBEB VNB UFSÈ P TFV
DPOKVOUPEFFTUBEPQPTTÓWFMEFGPSNBJOEFQFOEFOUF

² EF TF FTQFSBS RVF VN EFUFSNJOBEP PCKFUP NVEF


DPOTUBOUFNFOUF EF FTUBEP  QPJT DPNP FMF FTUÈ TFOEP VUJMJ[BEP
EVSBOUF P QSPDFTTP EF FYFDVÎÍP EP TPGUXBSF  PT WBMPSFT EF TFVT
BUSJCVUPT EFWFN NVEBS DPOTUBOUFNFOUF QBSB PT QSPDFTTBNFOUPT
OFDFTTÈSJPTFSFNFYFDVUBEPTDPNÐYJUP$BTPVNPCKFUPOÍPNVEF
EFFTUBEPPVNVEFNVJUPQPVDPEVSBOUFPQSPDFTTPEFFYFDVÎÍPEP
TJTUFNB DBCFVNBSFGMFYÍPTFSÈRVFFTUFDPODFJUPSFBMNFOUFEFWFSJB
UFS TJEP USBOTGPSNBEP FN VN PCKFUP  5BMWF[ TJN  UBMWF[ OÍP "
TJUVBÎÍPEFWFSÈTFSBOBMJTBEB FDBEBDPOUFYUPMFWBSÈBVNBEFDJTÍP
EJGFSFOUF0JNQPSUBOUFOFTUFDBTPÏSFGMFUJS

"JEFOUJEBEF JHVBMEBEF EFVNPCKFUP


1PS EFGJOJÎÍP  UPEP PCKFUP Ï ÞOJDP 4F UJWFSNPT VNB DMBTTF F
GPSFNDSJBEPTEPJTPCKFUPTBQBSUJSEFMB DBEBVNTFSÈEJGFSFOUFEP
PVUSP  NFTNP RVF TFVT FTUBEPT TFKBN JHVBJT QPS DPJODJEÐODJB
1PSÏN DBEBTJTUFNBUFSÈOFDFTTJEBEFTFTQFDÓGJDBTQBSBEFGJOJSPRVF
UPSOB VN PCKFUP JHVBM B PVUSP %FWJEP B JTTP  B JEFOUJEBEF PV
JHVBMEBEFEFPCKFUPTEFWFTFSEFGJOJEBQPSRVFNDSJPVBDMBTTF QPJT
TØ FTUF UFN P DPOIFDJNFOUP EP DPOUFYUP FN RVFTUÍP QBSB QPEFS
EFUFSNJOBSPRVFUPSOBEPJTPCKFUPTJHVBJT

1PEFSEFUFSNJOBSTFEPJTPCKFUPTTÍPJHVBJTÏEFHSBOEFVUJMJEBEF
FN TJTUFNBT  QPJT TF VNB EBT QSFNJTTBT EFMFT Ï BVUPNBUJ[BS VN
QSPDFTTP EP NVOEP SFBM  OBEB NFMIPS EP RVF QPEFS QSPWFS
GBDJMJEBEFT RVF BHJMJ[FN B FYFDVÎÍP EBT BUJWJEBEFT 1PS FYFNQMP

5.4 O OBJETO 57
JNBHJOF VN FTUPRVF EF VNB MPKB EF FMFUSPEPNÏTUJDPT 4F VN
GVODJPOÈSJP GPS QSFDJTBS FODPOUSBS VN EFUFSNJOBEP QSPEVUP  FN
VN QSPDFTTP NBOVBM FMF JSJB TF EJSJHJS BP FTUPRVF F WJTVBMNFOUF
QSPDVSBSFTUBOUFQPSFTUBOUF QSBUFMFJSBQPSQSBUFMFJSB&OUSFUBOUP TF
FYJTUJS VN TPGUXBSF  FMF QPEF EJHJUBS P OPNF PV UJQP EF
FMFUSPEPNÏTUJDP RVF EFTFKB FODPOUSBS "TTJN  VNB WBSSFEVSB
BVUPNÈUJDB TFSÈ GFJUB F FMJNJOBSÈ VNB HSBOEF RVBOUJEBEF EF JUFOT
RVFOÍPTÍPJHVBJTBPTRVFFMFEFTFKBBDIBS&TQFDJGJDBOEPNBJT TF
FMFEFTFKBFODPOUSBVNBQBSFMIPEF#MVSBZ OÍPUFSJBMØHJDBUFSEFJS
BFTUBOEFTEFTPOT 57TFUD

.BTDPNPFMFTBCFSJBFTQFDJGJDBNFOUFBFTUBOUFFQSBUFMFJSBPOEF
TF FODPOUSBN PT BQBSFMIPT EF #MVSBZ  " JEFOUJEBEF PV JHVBMEBEF
QPEF BKVEBS OJTTP /FTUF DBTP  FMF VTBSJB VN PCKFUP RVF
SFQSFTFOUBTTF TFVT QBSÉNFUSPT EF QFTRVJTB QBSB BTTJN BHJMJ[BS P
QSPDFTTP.BTPRVFUPSOBSJBTFVPCKFUPEFQFTRVJTBJHVBMBPPCKFUP
RVFEFTFKBQSPDVSBS .BJTVNBWF[ RVFNEFGJOJVBDMBTTFÏRVFUFN
DPNPEFUFSNJOBSJTTP/PFYFNQMPEP#MVSBZ QPEFSÓBNPTDPMPDBS
P UJQP EF BQBSFMIP F NPEFMP "TTJN B JHVBMEBEF TFSJB EFUFSNJOBEB
BUSBWÏTEPTBUSJCVUPTRVFBSNB[FOBTTFNFTTFTWBMPSFT

1BSBQPEFSFGFUJWBNFOUFWFSJGJDBSTFVNPCKFUPÏJHVBMBPPVUSP
EFWFNPT VUJMJ[BS VN NÏUPEP  QPJT  DPNP KÈ WJNPT  TÍP FTUFT PT
SFTQPOTÈWFJT QPS EFGJOJS PT DPNQPSUBNFOUPT  BÎÜFT EBT
DMBTTFTPCKFUPT /FTUF DBTP  Ï P DPNQPSUBNFOUP RVF UPSOB EPJT
PCKFUPTJHVBJT"JOEBOPFYFNQMPEP#MVSBZ PNÏUPEPWFSJGJDBSJBTF
P UJQPEFBQBSFMIPFNPEFMPTÍPJHVBJTBBMHVOTEPFTUPRVF&NDBTP
QPTJUJWP  TFSJB JOGPSNBEB B MPDBMJ[BÎÍP EFMFT EFOUSP EP FTUPRVF  F
BTTJNPWFOEFEPSJSJBEJSFUBNFOUFBPMPDBMQBSBQFHBSPQSPEVUPEP
DMJFOUF

&N Java F C# FYJTUFVNNÏUPEPFTQFDÓGJDPQBSBEFUFSNJOBS


TF EPJT PCKFUPT TÍP JHVBJT P equals  $PNP B GVOÎÍP EFTUF Ï
EFUFSNJOBS TF EPJT PCKFUPT TÍP JHVBJT  OBEB NBJT ØCWJP RVF FMF

58 5.4 O OBJETO
SFUPSOF VN CPPMFBOP ² B QBSUJS EB EFGJOJÎÍP EFTUF NÏUPEP RVF
QPEFNPT EFGJOJS P RVF UPSOB EPJT PCKFUPT JHVBJT &WPMVJOEP VN
QPVDP NBJT P FYFNQMP EP QFSTPOBHFN  WBNPT EFGJOJS P NÏUPEP
equals QBSBOPTTBDMBTTF Personagem 

//Java
class Personagem {

// Atributos definidos anteriormente

// Construtor

// get/set e demais métodos

//destrutor

//Equals
@Override
public boolean equals(Object obj) {

if (obj instanceof Personagem) {

Personagem p = (Personagem) obj;


return this.nome.equals(p.getNome());
}

return false;
}
}

//C#
class Personagem
{

// Atributos definidos anteriormente

// Construtor

// get/set e demais métodos

//destrutor

//Equals
public override bool Equals(Object obj)
{
if (obj is Personagem)
{

5.4 O OBJETO 59
Personagem p = obj as Personagem;
return return this.nome.Equals(p.nome);
}

return false;
}
}

/PTNÏUPEPT equals MJTUBEPTBOUFSJPSNFOUF GPJEFGJOJEPRVF


P RVF EFUFSNJOB EPJT PCKFUPT EB DMBTTF Personagem  JHVBJT Ï TF P
BUSJCVUP OPNF EF DBEB VN QPTTVJ WBMPSFT JHVBJT 1PEFNPT OPUBS
OFTUFTNÏUPEPTRVF QBSBEFUFSNJOBSUBMJHVBMEBEF OÍPGPJVTBEPP
PQFSBEPS == 

&NMJOHVBHFOTPSJFOUBEBTBPCKFUPT RVBOEPFTUFÏVUJMJ[BEPDPN
PCKFUPT  OB WFSEBEF WFSJGJDBNPT TF FTUFT FTUÍP BQPOUBOEP QBSB P
NFTNPMVHBSOBNFNØSJBEPDPNQVUBEPS-PHPOÍPTFSJBVNBCPB
QSÈUJDB VUJMJ[BS UBM PQFSBEPS QBSB PCKFUPT  BGJOBM  UPEB WF[ RVF VN
new ÏFYFDVUBEP VNOPWPMVHBSOBNFNØSJBTFSÈSFTFSWBEPQBSB
UBMPCKFUP"TTJN BJHVBMEBEFTFNQSFSFUPSOBSJB false 

'PJ EFWJEP B JTUP RVF VTBNPT P NÏUPEP equals  $PNP P


BUSJCVUP OPNF Ï EP UJQP TUSJOH F FMB Ï VN PCKFUP FN MJOHVBHFOT
PSJFOUBEBTBPCKFUPT OBEBNFMIPSEPRVFVTBSVNNÏUPEP equals
QBSBDPNQBSBSPCKFUPT

60 5.4 O OBJETO
!07&33*%&  07&33*%&  0#+&$5  16#-*$  */45"/$&0'  *4  "4 ."*4
1"-"73"4/07"4

$BEB WF[ RVF BWBOÎBNPT NBJT OPT DPODFJUPT  WÍP BQBSFDFOEP


NBJT OPWBT QBMBWSBT SFTFSWBEBT EBT MJOHVBHFOT %BT RVF
BDBCBNPT EF MJTUBS  QPEFNPT GBMBS TPCSF instanceOf  is
as  "T EFNBJT TFSÍP WJTUBT RVBOEP FYQMJDBSNPT PVUSPT
DPODFJUPT

$PNP KÈ UÓOIBNPT WJTUP  PCKFUPT TÍP JOTUÉODJBT EF DMBTTFT


&OUÍPOBEBNBJTOPSNBMEPRVF FNEFUFSNJOBEPTNPNFOUPT
QSFDJTBSNPTWFSJGJDBSTFVNPCKFUPFNRVFTUÍPÏVNBJOTUÉODJB
EFVNBEFUFSNJOBEBDMBTTF PVTFKB TFGPJDSJBEPBQBSUJSEFMB
1BSB GB[FS FTTB WFSJGJDBÎÍP FN Java  VTBNPT P PQFSBEPS
instanceof 

" MJOIB obj instanceof Personagem  TFSÈ BWBMJBEB DPNP


true  DBTP P PCKFUP EFOPUBEP QFMB WBSJÈWFM obj  UFOIB TJEP
DSJBEP B QBSUJS EB DMBTTF Personagem  " MJOIB obj is
Personagem  TFHVF P NFTNP SBDJPDÓOJP  QPSÏN  DPNP Ï FN
C# PPQFSBEPSFRVJWBMFOUFÏP is 

1PS GJN  DBTP TFKB true  FN BNCPT P SFTVMUBEP  QPEFNPT


USBCBMIBS DPN P PCKFUP QBTTBEP DPNP QBSÉNFUSP  QSFDJTBOEP
BQFOBT GB[FS B DPOWFSTÍP QBSB P UJQP FTQFDÓGJDP MFNCSFNTF
DMBTTFTTÍPUJQPT /FTUFDBTP BDPOWFSTÍPFN Java ÏGFJUBQFMB
MJOIB Personagem p = (Personagem) obj  F  FN C#  QPS
Personagem p = obj as Personagem 

"SFQSFTFOUBÎÍPOVNÏSJDBEFVNPCKFUP
&NCPSBOÍPTFKBVNDPODFJUPEFGBUPEB0SJFOUBÎÍPB0CKFUPT B

5.4 O OBJETO 61
SFQSFTFOUBÎÍP OVNÏSJDB EF VN PCKFUP OP DBTP  TFV IBTIDPEF  Ï
NVJUP ÞUJM  F MJOHVBHFOT DPNP Java  C#  Ruby  FOUSF PVUSBT
EJTQPOJCJMJ[BN UBM SFQSFTFOUBÎÍP #BTJDBNFOUF  VN IBTIDPEF Ï VN
OÞNFSPRVFÏHFSBEPBQBSUJSEPFTUBEPDPSSFOUFEPPCKFUP PVTFKB
EPT WBMPSFT EF TFVT BUSJCVUPT OBRVFMF EFUFSNJOBEP NPNFOUP &TUF
OÞNFSP TFSWF QBSB PUJNJ[BS F QFTRVJTBS FN FTUSVUVSBT RVF VUJMJ[B
UBCMFTIBTI UBCFMBTEFEJTQFSTÍP /ÍPÏPGPDPEFTUFMJWSPFYQMJDBS
UBCMFTIBTI NBTTBCFSEFTVBFYJTUÐODJBÏPQSJNFJSPQBTTPQBSBTFV
VTPEFGPSNBFGJDJFOUF

$PNP EJUP  P IBTIDPEF TFSWF QBSB PUJNJ[BS B QFTRVJTB &OUÍP


MPHP OPUBNPT VNB DFSUB SFMBÎÍP DPN P FRVBMT *TUP PDPSSF QPSRVF
FTUFNÏUPEPÏSFTQPOTÈWFMQPSEFUFSNJOBSTFEPJTPCKFUPTTÍPJHVBJT
F RVBOEPGB[FNPTQFTRVJTBT TÍPJNQSFTDJOEÓWFJTBDPNQBSBÎÍPEF
PCKFUPTJHVBJT/FTUFDBTP PDØEJHPIBTIHFSBEPBVYJMJBSÈPFRVBMTB
GJMUSBS PCKFUPT  QBSB BTTJN EJNJOVJS B RVBOUJEBEF EF DPNQBSBÎÜFT
OFDFTTÈSJBT QBSB TF DIFHBS BP PCKFUP EFTFKBEP &TUF DØEJHP IBTI
NPTUSBSÈ TVB JNQPSUÉODJB FN FTUSVUVSBT DPNP NBQT &TUBT TFSÍP
FYQMJDBEBT OP DBQÓUVMP  #PBT QSÈUJDBT OP VTP EB 0SJFOUBÎÍP B
0CKFUPT 1BSB DBMDVMBS P IBTIDPEF EF VN PCKFUP  FYJTUFN EJWFSTBT
GØSNVMBT  NBT BRVJ TFSÈ BQSFTFOUBEB B NBJT VTBEB OB 00 $BTP
DÈMDVMPT NBJT TPGJTUJDBEPT TFKBN OFDFTTÈSJPT  PVUSPT BMHPSJUNPT
QPEFN TFS VTBEPT "OUFT EF BQSFTFOUBS PT QBTTPT QBSB P DÈMDVMP  Ï
OFDFTTÈSJPJOGPSNBSRVF QPSBVYJMJBSPFRVBMT PDÈMDVMPEPDØEJHP
IBTIEFWFTFSFNDJNBEPTNFTNPTBUSJCVUPTRVFGPSBNVUJMJ[BEPT
OPFRVBMT4ØBTTJN  DPNFTTB QBSDFSJBEFBUSJCVUPT  ÏRVF BNCPT
QPEFSÍPTFBKVEBS

"SNB[FOF BMHVN WBMPS DPOTUBOUF  EJGFSFOUF EF [FSP F EF


QSFGFSÐODJB QSJNP 1PS FYFNQMP   1FHVF UPEPT PT BUSJCVUPT
SFMFWBOUFT QBSB TVB DMBTTF OP DBTP  PT RVF FTUÍP TFOEP VTBEPT OP
equals 1BSBDBEBVNEFMFT GBÎBPDÈMDVMPEPIBTIDPEFJOUFJSPY
BQBSUJSEPTTFHVJOUFTQBTTPT

62 5.4 O OBJETO
 4FPDBNQPÏ boolean DPNQVUF (f ? 0 : 1); 

 4FPDBNQPÏVN byte  char  short PV int  compute


(int)f; 

 4FPDBNQPÏVN long DPNQVUF (int)(f ^ (f &gt&gt&gt


32)); 

 4F P DBNQP Ï
VN float  DPNQVUF
Float.floatToBits(f); 

 4F P DBNQP Ï VN  DPNQVUF


double
Double.doubleToLongBits(f) FVTFPIBTIQBSB longs OP
SFTVMUBEPEFTDSJUPOPQBTTP

 4F P DBNQP Ï VN PCKFUP  DPNQVUF 0  TF FMF GPS OVMP $BTP
DPOUSÈSJP VTFPIBTIDPEFEFTTFPCKFUP

 4FPDBNQPÏVNBSSBZ USBUFPDPNPTFDBEBFMFNFOUPGPTTF
VNDBNQPTFQBSBEP

 $PNCJOFPIBTIDPEFYDBMDVMBEPQBSBDBEBFMFNFOUPFNVN
SFTVMUBEPDPNPEFTDSJUP result = 37 * result + x;

 3FUPSOFPSFTVMUBEP

5BMWF[ VN FYFNQMP EF VTP GBDJMJUF P FOUFOEJNFOUP " TFHVJS


WFKBPTDØEJHPTRVFNPTUSBNBBQMJDBÎÍPEFUBMQBTTPBQBTTP/FTUFT
PT BUSJCVUPT RVF FTUBWBN QSFTFOUFT FN EFUFSNJOBEPT NÏUPEPT
equals GPSBNVUJMJ[BEPTOPTNÏUPEPT hashCode() FN Java F
GetHashCode() FN C# 

//Java

//Exemplo 1
@Override
public int hashCode() {

int result = 17;

5.4 O OBJETO 63
result = 37 * result + numeroNotaFiscal; //numeroNotaFiscal é um
int, neste caso se enquadra na regra 2.

return result;
}

//Exemplo 2
@Override
public int hashCode() {

int result = 11;


result = 43 * result + numeroNotaFiscal; //numeroNotaFiscal é um
int, neste caso se enquadra na regra 2.
result = 43 * result + cliente == null ? 0 : cliente.hashCode();
//É um objeto, regra 6. Neste caso a classe `Cliente` deverá dispo
nibilizar tal o calculo do _hashcode_.

return result;
}

//C#

//Exemplo 1
public override int GetHashCode()
{
int result = 17;
result = 37 * result + numeroNotaFiscal; //numeroNotaFiscal é um
int, neste caso se enquadra na regra 2.

return result;
}

//Exemplo 2
public override int GetHashCode()
{
int result = 11;
result = 43 * result + numeroNotaFiscal; //numeroNotaFiscal é um
int, neste caso se enquadra na regra 2.
result = 43 * result + cliente == null ? 0 : cliente.GetHashCode
(); //É um objeto, regra 6. Neste caso a classe `Cliente` deverá d
isponibilizar tal o calculo do _hashcode_.

return result;
}

6NB DPJTB JNQPSUBOUF EF TBCFSNPT Ï RVF OÍP Ï OFDFTTÈSJP


BQSFOEFSPV QFMPNFOPT EFDPSBSUPEPTPTQBTTPTQBSBTFDIFHBSBP

64 5.4 O OBJETO
WBMPSEPDÈMDVMPIBTI5BOUPP eclipse RVBOUPP Visial Studio
EJTQPOJCJMJ[ÍP GPSNBT BVUPNBUJ[BEBT EF HFSBS UBJT NÏUPEPT 0
JNQPSUBOUF Ï TBCFS RVF FMFT EFWFN TFS DSJBEPT QBSB BVYJMJBSFN P
equals 

"SFQSFTFOUBÎÍPQBESÍPEFVNPCKFUP
&NCPSB UBNCÏN OÍP TFKB VN DPODFJUP FGFUJWP EB 0SJFOUBÎÍP B
0CKFUP  B SFQSFTFOUBÎÍP QBESÍP PV SFQSFTFOUBÎÍP FN UFYUP EF VN
PCKFUPÏNVJUPÞUJM0CKFUPTQPEFNQPTTVJSEJWFSTPTBUSJCVUPT NBT
OFNTFNQSFUPEPTEFWFNTFSFYJCJEPTRVBOEPTFEFTFKBWJTVBMJ[ÈMP

1PSFYFNQMP JNBHJOFVNMJWSPEFVNBCJCMJPUFDB4BCFNPTRVF
VNPCKFUPDMBTTF Livro QPEFUFSFOUSFTFVTBUSJCVUPTP titulo
edicao  area  assunto  autor  quantidadePaginas
editora  FOUSF NVJUPT PVUSPT 2VBOEP OB CJCMJPUFDB EFTFKBTF
QFTRVJTBSQPSVNMJWSP OBMJTUBHFNEFSFTVMUBEPTOÍPBQBSFDFUPEPT
PTWBMPSFTEPTBUSJCVUPTEPTMJWSPTFODPOUSBEPT(FSBMNFOUF BQBSFDF
TPNFOUFTFVUÓUVMPFBVUPS QPSFYFNQMP²FTUFDPNQPSUBNFOUPRVF
ÏDIBNBEPEF3FQSFTFOUBÎÍP1BESÍP

/P DBTP  TÍP JEFOUJGJDBEPT PT BUSJCVUPT RVF NFMIPS DPOTFHVFN


SFQSFTFOUBSPPCKFUPFNRVFTUÍPEFGPSNBSFTVNJEB%FBDPSEPDPN
DBEB TJTUFNB  DBEB PCKFUP QPEF UFS VNB SFQSFTFOUBÎÍP QBESÍP
EFGJOJEB$BEBDPOUFYUPTFSÈSFTQPOTÈWFMQPSEFGJOJSDPNPPPCKFUP
EFWF TFS BQSFTFOUBEP  F VN FTUVEP EFWF TFS GFJUP QBSB DPOTFHVJS
JEFOUJGJDBSPTBUSJCVUPTNBJTSFMFWBOUFT

"TTJN PQSPDFTTPEFFYJCJÎÍPEPTPCKFUPTÏGBDJMJUBEPFUBNCÏN
UPSOB NBJT BNJHÈWFM B BQSFTFOUBÎÍP EB JOGPSNBÎÍP B RVFN QSFDJTB
EFMB Java  F C#  QPTTVFN VN NÏUPEP FTQFDÓGJDP QBSB QSPWFS B
SFQSFTFOUBÎÍP FN UFYUP QBESÍP  EF DMBTTFTPCKFUPT DSJBEPT P
NÏUPEP toString $PNPBGVOÎÍPEFMFÏFYJCJSFNGPSNBEFUFYUP
P PCKFUP  OBEB NBJT ØCWJP EF RVF FMF SFUPSOF VNB String  "
TFHVJS  WFKB DPNP FMF EFWF TFS EFGJOJEP FN DBEB VNB EFTTBT

5.4 O OBJETO 65
MJOHVBHFOT
//Java
class Personagem {

// Atributos definidos anteriormente

// Construtor

// get/set e demais métodos

//destrutor

//Equals e hashCode

//toString
@Override
public String toString() {
return "Nome do personagem: " + this.nome;
}
}

//C#
class Personagem
{

// Atributos definidos anteriormente

// Construtor

// get/set e demais métodos

//destrutor

//Equals e GetHashCode

//toString
public override string ToString()
{
return "Nome do personagem: " + this.nome;
}
}

" QBSUJS EFTTB EFGJOJÎÍP  QPEFNPT OPUBS RVF Ï CFN NBJT GÈDJM
FODBQTVMBEP TFNQSFVUJMJ[BSP toString QBSBFYJCJSPPCKFUPEP
RVF VTBS B DPODBUFOBÎÍP EF DIBNBEBT BPT gets  QPS FYFNQMP
"MÏNEFTFSNBJTTJNQMFT DPOTFHVJNPTFWJUBSSFUSBCBMIPT

66 5.4 O OBJETO
045*104%&"53*#650&.²50%0
4ØBQØTPTDPODFJUPTEFDMBTTFFPCKFUPTFSFNFYQMJDBEPTÏRVFÏ
QPTTÓWFM BQSFTFOUBS PT EPJT UJQPT EF BUSJCVUPT F NÏUPEPT "NCPT
QPEFNTFSEFJOTUÉODJBPVFTUÈUJDP

0TBUSJCVUPTEFJOTUÉODJB FNCPSBEFGJOJEPTOBDMBTTF QFSUFODFN


BP PCKFUP 0V TFKB  TØ QPEFSÍP TFS BDFTTBEPTVUJMJ[BEPT B QBSUJS EF
JOTUÉODJBT EF VNB DMBTTF  OP DBTP VN PCKFUP $PN JTTP  DBEB VN
QPEF UFS WBMPSFT EJTUJOUPT QBSB TFVT BUSJCVUPT F BTTJN DPOTFHVJS
BSNB[FOBSPTWBMPSFTRVFOFDFTTJUBN

1PS FYFNQMP  TF FN VNB DMBTTF DIBNBEB Pessoa  FYJTUJS VN


BUSJCVUPEFJOTUÉODJBDIBNBEP nome QPEFSFNPTDSJBSEPJTPCKFUPT
F DBEB VN UFS VN WBMPS FN QBSUJDVMBS QBSB FTUF BUSJCVUP /P DBTP
QPEFSÓBNPT UFS VN PCKFUP DPN P WBMPS Isadora  F PVUSP DPN P
WBMPS Lorena $BTPVNBDPJODJEÐODJBPDPSSFTTF FTTFTEPJTPCKFUPT
EJTUJOUPT BUÏ QPEFSJBN UFS P NFTNP WBMPS QBSB P BUSJCVUP nome
NBT NFTNP BTTJN DBEB WBMPS QFSUFODFSJB JTPMBEBNFOUF B DBEB
PCKFUP 1PS QBESÍP  UPEP BUSJCVUP Ï EF JOTUÉODJB F  QBSB EFGJOJMPT
EFTUBGPSNB CBTUBDSJBSPTBUSJCVUPTDPNPKÈWFNTFOEPGFJUP

0BUSJCVUPFTUÈUJDPQFSUFODFBDMBTTFFOÍPBPPCKFUP"USJCVUPT
EFTUF UJQP EFWFN TFS BDFTTBEPTVUJMJ[BEPT EJSFUBNFOUF B QBSUJS EB
DMBTTF1PEFNBUÏTFSBDFTTBEPTVTBEPTWJBPPCKFUP NBTJTTPOÍPÏ
VNB CPB QSÈUJDB F EFWF TFS EFTFODPSBKBEP %FWJEP B FTTF
DPNQPSUBNFOUP EF QFSUFODFS B DMBTTF F OÍP BP PCKFUP  FMF TF
DPNQPSUB EF GPSNB PQPTUB BP EF JOTUÉODJB WBMPSFT BSNB[FOBEPT
OFMFTTÍPJHVBJTFNUPEPTPTPCKFUPTDSJBEPTBQBSUJSEBDMBTTF QPJT
FMFT QFSUFODFN B FMB BOUFT NFTNP EF FYJTUJS VN PCKFUP %FWJEP B
JTTP  PCKFUPT EJTUJOUPT UFSÍP P NFTNP WBMPS QBSB FTTF EFUFSNJOBEP
BUSJCVUP

1PSFYFNQMP BNFTNBDMBTTF Pessoa QPEFSJBUFSVNBUSJCVUP


DIBNBEP quantidadeOlhos *OEFQFOEFOUFEFRVFRVBMRVFSPCKFUP

5.5 OS TIPOS DE ATRIBUTO E MÉTODO 67


DSJBEP  FTTF WBMPS TFNQSF TFSÈ  1PEFNPT UFS PT NFTNPT PCKFUPT
DJUBEPTBOUFSJPSNFOUF OPDBTP Isadora F Lorena $BEBVNUFN
TFVQSØQSJPWBMPSEF nome NBTBNCPTQPTTVFNEPJTPMIPT&OUÍP
P BUSJCVUP quantidadeOlhos  QPEFSJB TFS FTUÈUJDP 1BSB EFGJOJS
BUSJCVUPT EFTUB GPSNB  Ï OFDFTTÈSJP JOGPSNBS RVF FMF Ï FTUÈUJDP B
QBSUJSEBQBMBWSBSFTFSWBEB static 0DØEJHPBTFHVJSFYFNQMJGJDB
FTUBEFGJOJÎÍP
//Java
class Pessoa {

String nome;
static int quantidadeOlhos;

//C#
class Pessoa
{

string nome;
static int quantidadeOlhos;

*OJDJBOEP BT FYQMJDBÎÜFT TPCSF P NÏUPEP  P EF JOTUÉODJB BTTJN


DPNPPBUSJCVUPTÍPEFGJOJEPTOBDMBTTF NBTTÍPBDFTTBEPTVTBEPT
WJB P PCKFUP 0V TFKB  B FYFDVÎÍP EFMFT TØ QPEFSÈ TFS SFRVJTJUBEB
BUSBWÏTEFVNPCKFUP1PSOBUVSF[B PNÏUPEPOÍPBSNB[FOBWBMPSFT
F TJN FYFDVUB VNB BÎÍP &OUÍP  NFTNP QFSUFODFOEP B PCKFUPT
EJTUJOUPT  P DPNQPSUBNFOUP TFSÈ P NFTNP " ÞOJDB RVFTUÍP Ï RVF
FMFTØQPEFTFSSFRVJTJUBEPBUSBWÏTEFVNPCKFUP1PSQBESÍP UPEP
NÏUPEP Ï EF JOTUÉODJB F  QBSB EFGJOJS JTTP  CBTUB DSJÈMPT DPNP KÈ
WJOIBTFOEPGFJUP
//Java
class Pessoa {

String nome;
static int quantidadeOlhos;

String falar() {

68 5.5 OS TIPOS DE ATRIBUTO E MÉTODO


return "Olá!";
}

//C#
class Pessoa
{

string nome;
static int quantidadeOlhos;

String Falar()
{
return "Olá!";
}
}

+ÈPNÏUPEPFTUÈUJDPQFSUFODFËDMBTTFFOÍPBPPCKFUP PVTFKB
EFWF TFS BDFTTBEP EJSFUBNFOUF BUSBWÏT EB DMBTTF .BJT VNB WF[  FMF
FYFDVUBVNBBÎÍPFFMBTFSÈBNFTNBJOEFQFOEFOUFEPPCKFUP QPJT
BOUFTNFTNPEFQFSUFODFSBPPCKFUP FMBKÈQFSUFODJBËDMBTTF"TTJN
DPNP OP BUSJCVUP  QBSB EFGJOJS P NÏUPEP DPNP FTUÈUJDP  B QBMBWSB
SFTFSWBEB static EFWFTFSVTBEB"TFHVJS WFKBVNFYFNQMP
//Java
class Pessoa {

String nome;
static int quantidadeOlhos;

String falar() {
return "Olá!";
}

static void andar() {


// implementação deseja
}
}

//C#
class Pessoa
{

string nome;
static int quantidadeOlhos;

5.5 OS TIPOS DE ATRIBUTO E MÉTODO 69


String Falar()
{
return "Olá!";
}

static void Andar() {


// implementação deseja
}

.²50%0&45«5*$006/°0&*4"26&45°0

/P RVF EJ[ SFTQFJUP B NÏUPEPT  VN RVFTUJPOBNFOUP Ï WBMJEP


QPSRVFVTBSVNNÏUPEPEFGPSNBFTUÈUJDB KÈRVF TFOEPEFTUF
UJQP PV EF JOTUÉODJB  P DPNQPSUBNFOUP FN TJ TFSÈ TFNQSF P
NFTNP "SFTQPTUBÏEFWFNPTVTBSNÏUPEPTFTUÈUJDPTBQFOBT
RVBOEP NÏUPEPT OÍP SFRVFSFN B DSJBÎÍP EF PCKFUPT QBSB TVB
FYFDVÎÍP&MFTTÍPJOEFQFOEFOUFTFTØGPSBNEFGJOJEPTFNVNB
DMBTTF QPSRVF  BGJOBM EF DPOUBT  B DMBTTF Ï B VOJEBEF EF
QSPHSBNBÎÍPNÓOJNBOPQBSBEJHNBPSJFOUBEPBPCKFUP

6NFYFNQMPDMÈTTJDPEJTUPÏBDMBTTF Math QSFTFOUFUBOUPFN


Java  DPNP FN C#  &MB Ï VNB DMBTTF VUJMJUÈSJB RVF QPTTVJ
WÈSJPT NÏUPEPT EF WÈSJPT DÈMDVMPT NBUFNÈUJDPT  QPS FYFNQMP
TFOP DPTTFOP WBMPSBCTPMVUP FOUSFPVUSPT5PEPTPTNÏUPEPT
EFTUBDMBTTFTÍPFTUÈUJDPT/ÍPTFSJBOFDFTTÈSJPDSJBSVNPCKFUP
EFTUB DMBTTF  QBSB  QPS FYFNQMP  TPNFOUF TBCFS P TFOP EF VN
ÉOHVMPBUSBWÏTEPNÏUPEP sin #BTUBSFRVJTJUBSEFGPSNBMJWSF
QBTTBOEPPÉOHVMPEFTFKBEP
//Java
Math.sin(30);

//C#
Math.Sin(30);

70 5.5 OS TIPOS DE ATRIBUTO E MÉTODO


130/50 "(03"10%&.04'"-"340#3&05)*4

0 this  Ï VNB QBMBWSB SFTFSWBEB RVF Ï VTBEB QBSB B


BVUPSSFGFSÐODJB&TUBPDPSSFRVBOEPRVFSFNPTOPTSFGFSFODJBS
BNÏUPEPTFBUSJCVUPTEBDMBTTFFPCKFUP&NCPSBTFKBQPTTÓWFM
VTBSP this DPNBUSJCVUPTFNÏUPEPTFTUÈUJDPT ÏNBJTVTVBM
VTÈMPDPNNFNCSPTEFJOTUÉODJB.BJTFTQFDJGJDBNFOUFBJOEB
DPNBUSJCVUPT

0OÍPVTPFNNFNCSPTFTUÈUJDPTÏTJNQMFTFTUFTKÈQFSUFODFN
Ë DMBTTF F TØ FYJTUJSÈ VNB WFSTÍP EFMFT +È DPN BUSJCVUPT EF
JOTUÉODJB  DBEB PCKFUP HVBSEBSÈ TFV QSØQSJP FTUBEP OFMFT  F P
VTP EP this  QPEF BKVEBS B EJGFSFODJBS  QPS FYFNQMPT
QBSÉNFUSPTRVFQPTTBNWJSBUFSPNFTNPOPNFEPTBUSJCVUPT

".&/4"(&.
.FOTBHFNÏPQSPDFTTPEFBUJWBÎÍPEFVNNÏUPEPEFVNPCKFUP
*TUP PDPSSF RVBOEP VNB SFRVJTJÎÍP DIBNBEB  B FTTF NÏUPEP Ï
SFBMJ[BEB  BTTJN EJTQBSBOEP B FYFDVÎÍP EF TFV DPNQPSUBNFOUP
EFTDSJUP QPS TVB DMBTTF 1PEF UBNCÏN TFS EJSFDJPOBEB EJSFUBNFOUF B
DMBTTF DBTPBSFRVJTJÎÍPTFKBBVNNÏUPEPFTUÈUJDP

"EFGJOJÎÍPBOUFSJPSEFJYBCFNDMBSPRVF RVBOEPSFRVJTJUBNPT
RVF VN DPNQPSUBNFOUP DØEJHP  EF VN NÏUPEP TFKB FYFDVUBEP
FTUBNPT QBTTBOEP VNB NFOTBHFN B FTUF NÏUPEP .FOTBHFOT
QPEFN TFS USPDBEBT FOUSF NÏUPEPT EPT PCKFUPTDMBTTFT  QBSB TFSFN
SFBMJ[BEBTBTBUJWJEBEFTJOFSFOUFTBDBEBVN

²EFTFFTQFSBSRVFUSPDBTEFNFOTBHFOTPDPSSBNEFGPSNBMJWSF
F DPOTUBOUF EVSBOUF B FYFDVÎÍP EF VN TJTUFNB 4Ø BTTJN PT
PCKFUPTDMBTTFTQPEFSÍPFYFDVUBSTVBTUBSFGBT4FEVSBOUFBFYFDVÎÍP

5.6 A MENSAGEM 71
EF VN TJTUFNB GPS EFUFDUBEP RVF DFSUPT NÏUPEPT OVODB UFSÍP
NFOTBHFOT QBTTBEBT B FMFT  WBMF B QFOB SFGMFUJS TPCSF B SFBM
OFDFTTJEBEFEFTVBFYJTUÐODJB
//Java

Pessoa pessoa = new Pessoa();

pessoa.falar();

Pessoa.andar();

//C#

Pessoa pessoa = new Pessoa();

pessoa.Falar();

Pessoa.Andar();

0T DØEJHPT BQSFTFOUBEPT BOUFSJPSNFOUF JMVTUSBN FYFNQMPT EF


NFOTBHFOTQBTTBEBT5BOUPFN Java RVBOUPFN C# PQSPDFTTPÏ
P NFTNP DPMPDBS RVFN EFTFKB EJTQBSBS B NFOTBHFN F P NÏUPEP
BMWP4FPNÏUPEPGPSEFJOTUÉODJB DPMPDBTFPPCKFUP/FTUFDBTP GPJ
VUJMJ[BEP VN PCKFUP  SFQSFTFOUBEP QFMB WBSJÈWFM pessoa  EP UJQP
Pessoa  F P NÏUPEP EF JOTUÉODJB falar()  +È TF P NÏUPEP GPS
FTUÈUJDP  DPMPDBTF B DMBTTF /FTUF DBTP  GPJ VTBEP EJSFUBNFOUF B
DMBTTF Pessoa FPNÏUPEPFTUÈUJDP andar() 

1655*/(*5"--50(&5)&3
"QØT VNB ÈSEVB QBTTBHFN QFMPT DPODFJUPT FTUSVUVSBJT  VN
FYFNQMPQSÈUJDPEFDPNPUPEPTFMFTQPEFNTFSVTBEPTFNDPOKVOUP
QPEFGBDJMJUBSPFOUFOEJNFOUP7BNPTBQSPGVOEBSVNQPVDPNBJTP
FYFNQMPEPQFSTPOBHFNEPKPHPEFWJEFPHBNF

$PNP B NFUB FSB NPEFMBS VN QFSTPOBHFN EF VN KPHP


JOJDJBMNFOUF QSFDJTBNPT DSJBS VNB DMBTTF DIBNBEB Personagem 

72 5.7 PUTTING IT ALL TOGETHER!


6N QFSTPOBHFN HFOÏSJDP UFSJB  QFMP NFOPT  VN OPNF .BT DPNP
PT OPTTPT QFSTPOBHFOT ‰ EF TVDFTTP ‰ QPTTVFN NBJT
DBSBDUFSÓTUJDBT  NBJT BUSJCVUPT QSFDJTBSÍP TFS BEJDJPOBEPT &OUÍP
GPSBN DSJBEPT PT TFHVJOUFT BUSJCVUPT nome  cor
quantidadeDeCogumelos  altura  tipoFisico
possuiBigode  $BEB VN UFWF TFV UJQP EF EBEPT FTQFDÓGJDP
EFGJOJEP

"MÏN EJTUP  GPJ WFSJGJDBEP RVF FTUFT QFSTPOBHFOT QPEFSJBN


SFBMJ[BSBMHVNBTBÎÜFT BGJOBM BNFUBÏQPTTJCJMJUBSPVTPEFMFT KPHBS
DPN VN EFMFT &OUÍP PT TFHVJOUFT NÏUPEPT GPSBN DSJBEPT QBSB
SFQSFTFOUBS BMHVNBT EF TVBT BÎÜFT QPTTÓWFJT pular()
pegarCogumelo(Cogumelo cogumelo)  atirarFogo()  .BJT
NÏUPEPTQPEFSJBNUFSTJEPDSJBEPT NBTFTUFTTÍPTVGJDJFOUFTQBSBP
FOUFOEJNFOUP RVF Ï QSFDJTP "MÏN EFTUFT NÏUPEPT  UBNCÏN GPSBN
DSJBEPT PT NÏUPEPT toString  equals  hashCode  PT
DPOTUSVUPSFTFEFTUSVUPSFT&TUFTTÍPNÏUPEPTBVYJMJBSFTFEFHSBOEF
VUJMJEBEF

0 QSPDFTTP EF JEFOUJGJDBÎÍP EF DMBTTFTPCKFUPT DPN TFVT


BUSJCVUPT F NÏUPEPT JOJDJBMNFOUF Ï USBCBMIPTP 1BSB UFOUBS GBDJMJUBS
FTUB BUJWJEBEF  DSJPVTF VN NPEFMP NFOUBM TJNQMJGJDBEP EFMFT OP
QSPDFTTPEFNPEFMBHFN"GJHVSBBTFHVJSJMVTUSBFTTFNPEFMP

5.7 PUTTING IT ALL TOGETHER! 73


'JHVSB.PEFMPNFOUBMTJNQMJGJDBEPEBDMBTTF1FSTPOBHFN

&NCPSB TFKB JOJDJBMNFOUF ÞUJM  DPNP P QBTTBS EP UFNQP B


DPNQMFYJEBEF EF NPEFMBHFN QPEF BVNFOUBS F FTTB SFQSFTFOUBÎÍP
QPEF TF UPSOBS JOWJÈWFM &OUÍP B TFHVJOUF SFQSFTFOUBÎÍP QPEF
GBDJMJUBSBSFQSFTFOUBÎÍPEPDPODFJUPEFVNQFSTPOBHFNDSJBSVNB
DBJYB DPN  TFÎÜFT VNB QBSB P OPNF EB DMBTTF  VNB QBSB PT
BUSJCVUPTFBÞMUJNBQBSBPTNÏUPEPT"GJHVSBBTFHVJSJMVTUSBFTTB
OPWBSFQSFTFOUBÎÍP

'JHVSB6.-CÈTJDBEBDMBTTF1FSTPOBHFN

74 5.7 PUTTING IT ALL TOGETHER!


/PUBTFRVFFTUBGPSNBÏNBJTSFTVNJEBFQSØYJNBEPRVFTFSÈ
DPEJGJDBEP /B WFSEBEF  OÍP JOWFOUFJ FTUB SFQSFTFOUBÎÍP  BQFOBT
GBDJMJUFJB6.-$PNPB00BJOEBFTUÈTFOEPBQSFOEJEB OÍPWBMFB
QFOB VN BQSPGVOEBNFOUP NBJPS FN 6.- 0 VTP EFTUB GPSNB
TJNQMJGJDBEB EF NPEFMBHFN Ï TVGJDJFOUF F TFSÈ BEPUBEB B QBSUJS EF
BHPSB

026&²6.-

²VNBMJOHVBHFNHSÈGJDBEFNPEFMBHFNEFTJTUFNBTPSJFOUBEPT
B PCKFUPT ² VN QBESÍP NVOEJBMNFOUF BDFJUP 6.- TJHOJGJDB
6OJGJFE .PEFMJOH -BOHVBHF FN QPSUVHVÐT  -JOHVBHFN EF
.PEFMBHFN6OJGJDBEB 

&MB QSPWÐ WÈSJBT OPUBÎÜFT HSÈGJDBT QBSB GBDJMJUBS P QSPDFTTP EF


NPEFMBHFN EF TJTUFNBT 00 7BMF B QFOB BQSFOEFS VN QPVDP
NBJT TPCSF FMB 1BSB NBJT JOGPSNBÎÜFT  BDFTTF P MJOL
IUUQXXXVNMPSH

7PMUBOEP BP FYFNQMP F VUJMJ[BOEP B GPSNB EF NPEFMBHFN


BQSFTFOUBEB ÏOFDFTTÈSJPVTBSBDMBTTF Personagem QBSBBTTJNTFS
QPTTÓWFMDSJBSPTPCKFUPTEFTFKBEPTFQPEFSNBOJQVMÈMPT1BSBJTUP
PTDØEJHPTFN Java F C# TÍPBQSFTFOUBEPTBTFHVJS
//Java
class Jogo {

public static void main(String[] args) {

Personagem mario = new Personagem();

mario.setNome("Mario");
mario.setCor("Vermelha");
mario.setQuantidadeCogumelos(0);
mario.setAltura(1.60);
mario.setTipoFisico("Gordinho");

5.7 PUTTING IT ALL TOGETHER! 75


mario.setPossuiBigode(true);

Personagem luigi = new Personagem();

luigi.setNome("Luigi");
luigi.setCor("Verde");
luigi.setQuantidadeCogumelos(0);
luigi.setAltura(1.80);
luigi.setTipoFisico("Magro");
luigi.setPossuiBigode(true);

mario.pular();
mario.atirarFogo();

luigi.pular();
luigi.atirarFogo();

//C#
class Jogo
{

static void Main(string[] args)


{

Personagem mario = new Personagem();

mario.Nome = "Mario";
mario.Cor = "Vermelha";
mario.QuantidadeCogumelos = 0;
mario.Altura = 1.60;
mario.TipoFisico = "Gordinho";
mario.PossuiBigode = true;

Personagem luigi = new Personagem();

luigi.Nome = "Luigi" ;
luigi.Cor = "Verde";
luigi.QuantidadeCogumelos = 0;
luigi.Altura = 1.80;
luigi.TipoFisico = "Magro";
luigi.PossuiBigode = true;

mario.Pular();
mario.AtirarFogo();

76 5.7 PUTTING IT ALL TOGETHER!


luigi.Pular();
luigi.AtirarFogo();

1SPOUP 'JOBMNFOUF BDIP RVF GJDPV DMBSP RVBJT QFSTPOBHFOT


RVFSJBDSJBSP.ÈSJPFP-VJHJ0TFHVJOUFSFTVMUBEPTFSÈPCUJEPBP
VUJMJ[BS P DPOTUSVUPS EB DMBTTF Personagem  QBSB DSJBS PT EPJT
PCKFUPT FVUJMJ[BSPTNÏUPEPT set QBSBDPMPDBSPTWBMPSFTEFDBEB
BUSJCVUP DBSBDUFSÓTUJDB EP.ÈSJPF-VJHJ

'JHVSB%PJTPCKFUPTDSJBEPTBQBSUJSEBDMBTTF1FSTPOBHFNP.ÈSJPFP-VJHJ "SUF
QSPNPDJPOBMEF.BSJPF-VJHJ DPNPWJTUPFN/FX4VQFS.BSJP#SPT8JJ

"PVUJMJ[BSPTNÏUPEPT  set QSPWÐPTWBMPSFTJOJDJBJTQBSBFTUFT


EPJTQFSTPOBHFOT0QSJNFJSPFTUBEPQBSBFTUFTPCKFUPTGPJQSPWJEP
" QBSUJS EJTUP  FMFT QPEFSÍP NVEBS EF FTUBEP EF BDPSEP DPN TVB
OFDFTTJEBEF 1PS FYFNQMP  RVBOEP RVBMRVFS VN EFMFT QFHBS VN
DPHVNFMP  FMFT BVNFOUBSÍP EF UBNBOIP  MPHP  TVB BMUVSB TFSÈ
NPEJGJDBEB FVNOPWPFTUBEPQBSBFMFTTFSÈBTTVNJEP

" DIBNBEB BPT set  GPSBN NFOTBHFOT F  B QBSUJS EJTUP  PT


PCKFUPTFTUÍPQSPOUPTQBSBTFSFNVTBEPTDPNPQFSTPOBHFOTEPKPHP
1BTTBOEP UBNCÏN NFOTBHFOT QBSB PT NÏUPEPT pular()  PV
atirarFogo() EFRVBMRVFSVNEFMFT PTFHVJOUFSFTVMUBEPQPEFTFS
PCUJEP

5.7 PUTTING IT ALL TOGETHER! 77


'JHVSB"ÎÜFTEFGB[FSQVMBSFBUJSBSGPHPBQØTBTNFOTBHFOTSFDFCJEBTQFMPPCKFUP.ÈSJP
"SUFQSPNPDJPOBMDPNPWJTUPFN/FX4VQFS.BSJP#SPT8JJ

026&4°004.²50%04."*/

5BOUP Java DPNP C# QSPWFFNFTUFTNÏUPEPTQBSBTFSFNP


QPOUP EF FOUSBEB  JOÓDJP EB FYFDVÎÍP EF QSPHSBNBT $PNP
OPTTPT FYFNQMPT TÍP TJNQMFT  VUJMJ[BSFNPT NVJUP EFMFT
&YJTUFN PVUSBT GPSNBT EF JOJDJBS B FYFDVÎÍP EF QSPHSBNBT
OFTUBTMJOHVBHFOT NBT NBJTVNBWF[ TFBQSPGVOEFNOFTUBT

4F NFOTBHFOT GPSFN QBTTBEBT QBSB PT NÏUPEPT toString


hashCode F equals PTTFHVJOUFTSFTVMUBEPTTFSÍPFYJCJEPT

//Java

//Chamadas
mario.toString();

mario.equals(luigi);

mario.hasCode();

//Resultados
Nome do Personagem: Mário

false

74113764

78 5.7 PUTTING IT ALL TOGETHER!


//C#

//Chamadas
luigi.ToString();

luigi.Equals(luigi);

luigi.GetHashCode();

//Resultados
Nome do Personagem: Luigi

true

73777346

3&46.*/%0
/FTUF DBQÓUVMP  GPJ WJTUP DPNP EFGJOJS BT FTUSVUVSBT CBTFT EB
0SJFOUBÎÍP B 0CKFUPT &NCPSB TFKBN EF TVNB JNQPSUÉODJB  FTUBT
BJOEBOÍPTÍPTVGJDJFOUFTQBSBVTBSNPTEFGPSNBQMFOBB00

/P QSØYJNP DBQÓUVMP  WFSFNPT DPODFJUPT VN QPVDP NBJT


BWBOÎBEPT &OUSFUBOUP  Ï JNQPSUBOUF RVF PT DPODFJUPT WJTUPT BRVJ
UFOIBNTJEPBTTJNJMBEPTEFGPSNBFGFUJWBQBSBOÍPQFOBMJ[BSGVUVSPT
BQSFOEJ[BEPT " DSJBÎÍP EF FYFNQMPT QSØQSJPT RVF TF BTTFNFMIFN
BPTVTBEPTBRVJGBDJMJUBFTTBGJYBÎÍP1SBUJRVFN

5.8 RESUMINDO 79
CAPÍTULO 6

04$0/$&*504
3&-"$*0/"*4

0T DPODFJUPT SFMBDJPOBJT TÍP SFTQPOTÈWFJT QPS QPTTJCJMJUBS B


DSJBÎÍP EF DMBTTFT B QBSUJS  PV DPN B BKVEB  EF PVUSBT DMBTTFT "
TFHVJS  WFSFNPT P RVF Ï IFSBOÎB  BTTPDJBÎÍP F JOUFSGBDF 5BNCÏN
BQSFOEFSFNPT PT TVCDPODFJUPT JOFSFOUFT B DBEB VN EFTUFT &TUF
DBQÓUVMP SFWJTJUBSÈ P FYFNQMP EP IPTQJUBM BQSFTFOUBEP OP DBQÓUVMP
BOUFSJPS

)&3"/±"
0DPODFJUPEFIFSBOÎBOBEBNBJTÏEPRVFVNBQPTTJCJMJEBEFEF
SFQSFTFOUBSBMHPRVFKÈFYJTUFOPNVOEPSFBM6NFYFNQMPDMÈTTJDP
EJTUP Ï RVBOEP OB FTDPMB  OB BVMB EF DJÐODJBT  FTUVEBNPT TPCSF
DMBTTJGJDBÎÍPCJPMØHJDB/FMBBTFHVJOUFEJWJTÍPÏGFJUBFOUSFPTTFSFT
WJWPT 3FJOP  'JMP  $MBTTF  0SEFN  'BNÓMJB  (ÐOFSP  &TQÏDJF $BEB
EJWJTÍPNBJTCBJYBIFSEBPRVFGPSOFDFTTÈSJPEBEJWJTÍPTVQFSJPS F
JTUP PDPSSF QPSRVF B NBJT CBJYB Ï VN TVCUJQP EB EJWJTÍP BDJNB
&TQÏDJFIFSEBEF(ÐOFSP RVFQPSTVBWF[IFSEBEF'BNÓMJBFBTTJN
QPSEJBOUF

/PDBTPEFOØTTFSFTIVNBOPT OPTTBDMBTTJGJDBÎÍPEFOUSPEFTUB
FTUSVUVSBTFSJB

3FJOP"OJNBMJB
'JMP$IPSEBUB

80 6 OS CONCEITOS RELACIONAIS
$MBTTF.BNNBMJB
0SEFN1SJNBUFT
'BNÓMJB)PNJOJEBF
(ÐOFSP)PNP
&TQÏDJF)PNP4BQJFOT

/PDBTP )PNP4BQJFOTIFSEBEF)PNP RVFQPSTVBWF[IFSEB


EF)PNJOJEBFFBTTJNQPSEJBOUF6NFYFNQMPNBJTTJNQMFTÏRVF
UPEPT OØT IFSEBNPT BMHP EF OPTTPT QBJT  FMFT IFSEBSBN EF OPTTPT
BWØTFBTTJNQPSEJBOUF

.BT WPMUBOEP B 0SJFOUBÎÍP B 0CKFUP  DPNP QPEFNPT BQMJDBS B


IFSBOÎB  +È WJNPT DPODFJUPT EF )PNP 4BQJFOT  )PNP FUD  F
UBNCÏN RVF TFNQSF RVF EFTFKBNPT SFQSFTFOUBS VN DPODFJUP EP
NVOEP SFBM FN VNB MJOHVBHFN PSJFOUBEB B PCKFUP  P DPODFJUP EF
DMBTTFEFWFTFSVUJMJ[BEP"TTJN OB00 RVBOEPEFTFKBSNPTVTBSP
DPODFJUPEFIFSBOÎB  ÏOFDFTTÈSJP GB[FSVNBDMBTTF IFSEBSEF PVUSB
DMBTTF

)FSBOÎB Ï P SFMBDJPOBNFOUP FOUSF DMBTTFT FN RVF VNB DMBTTF


DIBNBEBEFTVCDMBTTF DMBTTFGJMIB DMBTTFEFSJWBEB ÏVNBFYUFOTÍP
VNTVCUJQP EFPVUSBDMBTTFDIBNBEBEFTVQFSDMBTTF DMBTTFQBJ DMBTTF
NÍF DMBTTFCBTF %FWJEPBJTUP BTVCDMBTTFDPOTFHVFSFBQSPWFJUBSPT
BUSJCVUPT F NÏUPEPT EFMB "MÏN EPT RVF WFOIBN B TFS IFSEBEPT  B
TVCDMBTTFQPEFEFGJOJSTFVTQSØQSJPNFNCSPT

&TTB EFGJOJÎÍP EFJYB CFN DMBSP RVF IFSBOÎB TØ PDPSSF FOUSF
DMBTTFT 4F WPDÐ PVWJS B GSBTF P PCKFUP 9 IFSEPV EF : TBJCB RVF
RVFNBQSPGFSJVOÍPMFVFTUFMJWSPFBJOEBÏVNKPWFNQBEBXBOOB
0SJFOUBÎÍP B 0CKFUPT *TUP PDPSSF QPSRVF PCKFUPT TØ FYJTUFN FN
UFNQPEFFYFDVÎÍP JNQPTTJCJMJUBOEPBTTJNTVBBMUFSBÎÍPFTUSVUVSBM
+ÈBTDMBTTFT QPSTFSFNEPUFNQPEFEFTFOWPMWJNFOUP DPNQJMBÎÍP
QPEFSÍP EFGJOJS B FTUSVUVSB EF OPWBT DMBTTFT F  DPOTFRVFOUFNFOUF
EFPCKFUPTDSJBEPTBQBSUJSEFTUBT

6.1 HERANÇA 81
" IFSBOÎB QPEF PDPSSFS FN RVBOUPT OÓWFJT GPSFN OFDFTTÈSJPT
1PSÏN VNBCPBRVBOUJEBEFEFOÓWFJTÏEF OPNÈYJNP 2VBOUP
NBJT OÓWFJT FYJTUJSFN  NBJT DPNQMFYP EF FOUFOEFS P DØEJHP GJDBSÈ
QPJT DBEB WF[ NBJT VN EJTUBODJBNFOUP EP DPODFJUP CBTF Ï HFSBEP
&TTFTOÓWFJTTÍPDIBNBEPTEF)JFSBSRVJBEF$MBTTF/PFYFNQMPEB
DMBTTJGJDBÎÍP CJPMØHJDB  QBSUJOEP EP OÓWFM &TQÏDJF BUÏ 3FJOP  B
)JFSBSRVJBEF$MBTTFUFSJBOÓWFJT

7FKBRVF BQBSUJSEB&TQÏDJF)PNP4BQJFOT QPEFNPTDIFHBSOP


'JMP $IPSEBUB  RVF FOHMPCB UPEPT PT WFSUFCSBEPT $PN JTTP  B
QPTTJCJMJEBEFEFNBOJQVMBSKBDBSÏTFQFTTPBTBPNFTNPUFNQPTFSJB
QPTTÓWFM &OUSFUBOUP  JTUP QPEFSJB MFWBS B EJGJDVMEBEFT EF EFGJOJÎÍP
EPRVFSFBMNFOUFEFTFKBTFNPEFMBS

0GVOEBNFOUPEFSFÞTPKÈFYQMJDBEPÏJOUSJOTFDBNFOUFMJHBEPB
IFSBOÎB F UBNCÏN B BCTUSBÎÍP 2VBOEP EFGJOJNPT VNB DMBTTF EB
GPSNB NBJT BCTUSBUB QPTTÓWFM  Ï QPSRVF OFDFTTJUBNPT SFVTBS TFV
DPODFJUPFTFVTNFNCSPTFNPVUSPTDPODFJUPTTJNJMBSFT"IFSBOÎB
EFWFTFSBQMJDBEBQBSBJTTP

2VBOEP VNB DMBTTF IFSEBS EF PVUSB  FMB QPEFSÈ BDSFTDFOUBS


OPWPTNFNCSPT NBTOÍPFYDMVJS0SB TFBJEFJBÏSFVTBSQBSBFWJUBS
SFQFUJÎÍP  OÍP UFSJB MØHJDB FYDMVJS DØEJHP "MÏN EJTUP  B HSBOEF
WBOUBHFNEBIFSBOÎBÏBEFGJOJÎÍPEFTVCUJQPT&NCPSBPSFÞTPTFKB
JNQPSUBOUF FMFOB WFSEBEFÏ VNBDPOTFRVÐODJBEB IFSBOÎB QPJT Ï
QPTTÓWFM UBNCÏN UFSNPT SFÞTP BUSBWÏT EF PVUSPT SFMBDJPOBNFOUPT
FTUFTRVFTFSÍPWJTUPTNBJTBEJBOUF

2VBOEPVUJMJ[BNPTBIFSBOÎB FTUBNPTEJ[FOEPRVFVNDPODFJUP
Ï EP UJQP EF PVUSP DPODFJUP  F FTUB QPTTJCJMJEBEF Ï WJUBM QBSB
SFQSFTFOUBS GJFMNFOUF P NVOEP SFBM RVF FTUB TF NPEFMBOEP 1PS
FYFNQMP OPIPTQJUBM FYJTUFNWÈSJPTUJQPTEFQFTTPBTFOUSFBTRVBJT
QPEFNPT DJUBS QBDJFOUFT F GVODJPOÈSJPT &TUFT ÞMUJNPT QPEFN TFS
.ÏEJDPT  &OGFSNFJSPT  'JTJPUFSBQFVUBT  (FSFOUFT  FOUSF PVUSPT
/PUBTF RVF .ÏEJDPT  &OGFSNFJSPT  'JTJPUFSBQFVUBT  (FSFOUFT TÍP

82 6.1 HERANÇA
UJQPTEFGVODJPOÈSJPT &QBDJFOUF FGVODJPOÈSJPTÍP EPUJQP QFTTPB
0VTFKB BQBSUJSEFVNUJQP ÏQPTTÓWFMEFGJOJSPVUSPTUJQPT"GJHVSB
BTFHVJSEFNPOTUSBFTTBIJFSBSRVJB

'JHVSB6.-CÈTJDBEB)JFSBSRVJBEF$MBTTFEPIPTQJUBM

" GJHVSB NPTUSB RVF GPJ EFGJOJEB VNB TVQFSDMBTTF DIBNBEB


Pessoa RVFTFSWJVEFCBTFQBSB Paciente F Funcionario &TUB
ÞMUJNB TFSWJV EF CBTF QBSB Medico  F Gerente  " TFUB TFNQSF
BQPOUB QBSB B DMBTTF NÍF  BTTJN DPNQSPWBOEP P FYQPTUP 5PEB
QFTTPB UFN VN OPNF F TFYP  QPSÏN TØ QBDJFOUFT QPTTVFN EBUB EF
JOUFSOBÎÍPFTØGVODJPOÈSJPTQPTTVFNVNBEBUBEFBENJTTÍPFVNB
NBUSÓDVMB/FTUFDBTP  Pessoa ÏPUJQPCBTFFNRVFQPEFNPTDSJBS
PVUSPTTVCUJQPT NBTBQSPWFJUBOEPBMHP

&N DBEB TVCUJQP  NFNCSPT JOFSFOUFT B DBEB VNB GPSBN TFOEP


BDSFTDFOUBEPT EF BDPSEP DPN B OFDFTTJEBEF  BTTJN DBEB VNB
UPSOPVTFDPNQMFUB&N Medico QPSFYFNQMP BMÏNEFBDSFTDFOUBS
TFVOÞNFSPEF$3. GPJBDSFTDFOUBEPPNÏUPEP operar() %FTUB
GPSNB  B DMBTTF Medico  DPOTFHVJV EFGJOJS UPEPT PT NFNCSPT RVF
OFDFTTJUBWB FN DPOKVOUP DPN B EBUB EF BENJTTÍP  OÞNFSP EF
NBUSÓDVMB IFSEBEPT EF Funcionario  OPNF F TFYP RVF

6.1 HERANÇA 83
Funcionario IFSEPVEF Pessoa 

0 QSPDFTTP EF EFGJOJS P NBJT HFOÏSJDP OBT DMBTTFT CBTFT F JS


BDSFTDFOUBOEP OBT GJMIBT P NBJT FTQFDÓGJDP Ï DPOIFDJEP DPNP
(FOFSBMJ[BÎÍPF&TQFDJBMJ[BÎÍP2VBOUPNBJTTFTPCFOB)JFSBSRVJB
EF$MBTTF NBTHFOÏSJDPGJDB FRVBOUPNBJTEFTDF NBJTFTQFDÓGJDP

'JHVSB&TQFDJBMJ[BÎÍPFHFOFSBMJ[BÎÍP

"MHVOTDVJEBEPTEFWFNTFSUPNBEPTRVBOEPVTBNPTBIFSBOÎB
DPNP POEF DPMPDBS PT BUSJCVUPT F NÏUPEPT  F RVBOEP SFBMNFOUF
EFWFNPTVTÈMB$BTPPTNFNCSPTTFKBNEFGJOJEPTOBDMBTTFFSSBEB
TJUVBÎÜFT FTESÞYVMBT QPEFN PDPSSFS  QPJT OÍP SFQSFTFOUBSÍP B
SFBMJEBEF 1PS FYFNQMP  OP DPOUFYUP EP IPTQJUBM  TF GPS MFWBEP FN
DPOTJEFSBÎÍP RVF B IFSBOÎB FTUÈ TFOEP VTBEB TØ QFMP SFÞTP F OÍP
QFMPTTVCUJQPT TFSJBNBJTGÈDJMFYJTUJSTPNFOUFEVBTDMBTTFTGJMIBTEF
QFTTPB Paciente  F Funcionario  "TTJN B DMBTTF Pessoa
QPEFSJBQPTTVJSMPHPPBUSJCVUP$3.QBSBDPOTFHVJSSFQSFTFOUBSVN
GVODJPOÈSJPNÏEJDP

1PSÏN JTTPMFWBSJBBVNFSSPHSBWF KÈRVFQBDJFOUFTQPEFSJBN


UFS FOUSF TFVT BUSJCVUPT P $3. 1BDJFOUFT OÍP TÍP NÏEJDPT -PHP
QFSDFCFNPTRVFQFOTBSFNIFSBOÎBTØQPSSFÞTPÏVNDBNJOIPGÈDJM
QBSB DPNFUFSNPT FSSPT &TTB NFTNB QSFPDVQBÎÍP WBMF QBSB PT

84 6.1 HERANÇA
NÏUPEPT1PSGJN TØTFQPEFVTBSBIFSBOÎBDBTPBQFSHVOUBNÈHJDB
TFKBWFSEBEFJSBVNBDPJTBÏBPVUSB

4F OÍP GPS  KBNBJT EFWFNPT VTBS B IFSBOÎB 6N NÏEJDP Ï VN


GVODJPOÈSJP  TJN &OUÍP VUJMJ[BNPT 6N GVODJPOÈSJP Ï VNB QFTTPB
TJN .BJT VNB WF[  Ï QPTTÓWFM VTÈMB ² JNQPSUBOUF SFTTBMUBS RVF
QPEFNPTVTBS NBTOÍPTPNPTPCSJHBEPTBJTTP4FWFSJGJDBSNPTRVF
JTTPUSBSÈHBOIPBPNPEFMPFNRVFTUÍP FOUÍPVUJMJ[BNPTBIFSBOÎB
6N QBDJFOUF Ï VN GVODJPOÈSJP  OÍP -PHP  OÍP Ï QPTTÓWFM NPEFMBS
FTUBSFMBÎÍPDPNPVNBIFSBOÎB

'JOBMNFOUF QBSBGJOBMJ[BSFTUBTFÎÍP BDPEJGJDBÎÍPEBIJFSBSRVJB


EFDMBTTFQBSBBTDMBTTFTDJUBEBTÏBQSFTFOUBEBFN Java F C# 
//Java
class Pessoa {

String nome;
String sexo;

// get/set e métodos afins


}

class Paciente extends Pessoa {

Date dataInternacao;

// get/set e métodos afins


}

class Funcionario extends Pessoa {

Date dataAdmissao;
String matricula;

// get/set e métodos afins


}

class Medico extends Funcionario {

Date CRM;

// get/set e métodos afins

6.1 HERANÇA 85
void operar() {
// implementação desejada
}
}

class Gerente extends Funcionario {

Date CRA;

// get/set e métodos afins

void liberarPagamento() {
// implementação desejada
}
}

//C#
class Pessoa
{

String nome;
String sexo;

// get/set e métodos afins


}

class Paciente : Pessoa


{

Date dataInternacao;

// get/set e métodos afins


}

class Funcionario : Pessoa


{

Date dataAdmissao;
String matricula;

// get/set e métodos afins


}

class Medico : Funcionario


{

Date CRM;

// get/set e métodos afins

86 6.1 HERANÇA
void Operar()
{
// implementação desejada
}
}

class Gerente : Funcionario


{

Date CRA;

// get/set e métodos afins

void LiberarPagamento()
{
// implementação desejada
}
}

&N Java  B IFSBOÎB Ï GFJUB DPN P VTP EB QBMBWSB SFTFSWBEB


extends +ÈFN C# EFWFTFSVUJMJ[BEPPTÓNCPMP :  EPJTQPOUPT 
" QBSUJS EFTTFT DØEJHPT  WFSJGJDBNPT RVF B DMBTTF Pessoa  Ï B
TVQFSDMBTTF EF UPEBT BT EFNBJT DMBTTFT .BT  FN BMHVOT NPNFOUPT
BMHVNBT TVCDMBTTFT UFSNJOBN TFOEP TVQFSDMBTTFT EF PVUSBT  DPNP
Funcionario IFSEBEF Pessoa FOUÍP Funcionario ÏTVCDMBTTF
EBTVQFSDMBTTF Pessoa 1PSÏN  Medico IFSEBEF Funcionario
FOUÍPOFTUFNPNFOUP Funcionario QBTTPVBTFSVNBTVQFSDMBTTFF
Medico  VNB TVCDMBTTF /PUBTF RVF CBTUB NVEBS P QPOUP EF
SFGFSÐODJBRVFBTTVCDMBTTFTFTVQFSDMBTTFTQPEFNNVEBS

05*10%&%"%0%"5&

5BOUP Java  DPNP C#  QSPWFFN VN UJQP EF EBEP OÍP


QSJNJUJWP QBSB NBOJQVMBÎÍP EF EBUBT DIBNBEP Date  &TUF Ï
VNB DMBTTF F QPTTVJ WÈSJPT NÏUPEPT RVF BVYJMJBN OB
NBOJQVMBÎÍPEFEBUBT

6.1 HERANÇA 87
/" )&3"/±"  6." 46#$-"44& 5&. "$&440 " 50%04 04 .&.#304 %"
461&3$-"44&

4JN F OÍP /B WFSEBEF  BJOEB FYJTUF VN DPODFJUP RVF


QSFDJTBNPT FYQMJDBS QBSB QPEFS SFTQPOEFS FTUB QFSHVOUB EF
GPSNBDPNQMFUB

2VBOEP WFSNPT P DPODFJUP EF 7JTJCJMJEBEF  QPEFSFNPT


SFTQPOEFSNFMIPSBFTUBQFSHVOUB1PSFORVBOUP WBNPTEJ[FS
RVFTJN.BTEFQPJTFYQMJDBSFNPTNFMIPSPOÍP

5JQPTEFDMBTTF
&N SFMBÎÍP B DPNP JEFOUJGJDBS BT DMBTTFT OB IFSBOÎB  BMÏN EPT
DPODFJUPT EF TVQFSDMBTTF F TVCDMBTTF  FYJTUFN BJOEB EPJT PVUSPT
NPEPTEFDPNPSFQSFTFOUBSBTDMBTTFTBCTUSBUBTFDPODSFUBT

6NB DMBTTF BCTUSBUB UFN DPNP QSJODJQBM GVOÎÍP TFS B


JNQMFNFOUBÎÍPDPNQMFUBEPDPODFJUPEFBCTUSBÎÍP4ÍPDMBTTFTRVF
SFQSFTFOUBNDPODFJUPTUÍPHFOÏSJDPTRVFOÍPWBMFBQFOBUSBCBMIBS
DPN FMFT EJSFUBNFOUF &MFT FTUÍP JODPNQMFUPT F EFWFN TFS
DPNQMFUBEPTQFMBTDMBTTFTRVFIFSEBSFNEFMB PVTFKB TFVTTVCUJQPT

1PS OÍP WBMFS B QFOB USBCBMIBS EJSFUBNFOUF DPN FMBT  FMBT UÐN
VNBDBSBDUFSÓTUJDBJNQPSUBOUFOÍPQPEFNTFSJOTUBODJBEBT0VTFKB
OÍPQPEFNPTDSJBSPCKFUPTEJSFUBNFOUFBQBSUJSEFMBT"PUFOUBSNPT
VTBS P PQFSBEPS new  DPN VNB DMBTTF BCTUSBUB  VN FSSP EP
DPNQJMBEPS JOGPSNBSÈ RVF DMBTTFT BCTUSBUBT OÍP QPEFN TFS
JOTUBODJBEBT

1PSTFSFNEFVTPJOEJSFUP HFSBMNFOUFDMBTTFTBCTUSBUBTFTUÍPOP
UPQPEBIJFSBSRVJBEFDMBTTF0FYFNQMPEPIPTQJUBMJMVTUSBCFNFTUB
TJUVBÎÍP 6UJMJ[BS EJSFUBNFOUF PCKFUPT EP UJQP Pessoa  UBMWF[ OÍP

88 6.1 HERANÇA
TFKBÞUJM BGJOBM ÏNVJUPJNQPSUBOUFJEFOUJGJDBSRVFNÏ Paciente
Medico  Funcionario  QBSB FTUF OJDIP EF OFHØDJP $BEB VN
FYFDVUBSÈ VNB UBSFGB EJGFSFOUF EFOUSP EP IPTQJUBM F EFWFSÈ TFS
USBUBEPEBGPSNBBEFRVBEB&OUÍP FNCPSBJOJDJBMNFOUFOÍPUFOIB
TFEFGJOJEPBDMBTTF Pessoa  DPNP BCTUSBUB  BHPSB Ï QPTTÓWFM GB[FS
JTUP F BTTJN PCSJHÈMB B NBOJQVMBS TPNFOUF TVBT TVCDMBTTFT 0
DØEJHP B TFHVJS JMVTUSB DPNP GB[FS JTTP  QPS NFJP EP BDSÏTDJNP EB
QBMBWSBSFTFSWBEB abstract 
//Java
abstract class Pessoa {

String nome;
String sexo;

// get/set e métodos afins


}

//C#
abstract class Pessoa
{
String nome;
String sexo;

// get/set e métodos afins


}

2VBOEP GPJ EJUP RVF BT DMBTTFT BCTUSBUBT HFSBMNFOUF FTUÍP OP


UPQP EB IJFSBSRVJB EF DMBTTF  GPJ QBSB EFJYBS P HBODIP QBSB B
TFHVJOUF TJUVBÎÍP OP IPTQJUBM FYJTUFN WÈSJPT GVODJPOÈSJPT  DPNP
NÏEJDPT  BENJOJTUSBEPSFT OP DBTP P HFSFOUF  FOGFSNFJSPT  FOUSF
PVUSPT4BCFTFUBNCÏNRVFFYJTUFNNVJUPTUJQPTEFNÏEJDPT DPNP
BOFTUFTJTUB DBSEJPMPHJTUB USBVNBUPMPHJTUB FOUSFPVUSPT&OUÍP NBJT
VNB WF[  OÍP WBMF B QFOB USBCBMIBS EJSFUBNFOUF DPN BMHVOT
DPODFJUPT  OP DBTP NÏEJDP F GVODJPOÈSJP "TTJN  USBOTGPSNBS BT
DMBTTFT Medico F Funcionario FNBCTUSBUBTTFSJBVNBCPBQSÈUJDB
PSJFOUBEBBPCKFUPT

" TFHVJS  BQSFTFOUP P FYFNQMP POEF VNB DMBTTF BCTUSBUB IFSEB


EFPVUSBBCTUSBUB$PNJTTP BTDMBTTFTBCTUSBUBTFTUBSJBNOÍPTØOP

6.1 HERANÇA 89
UPQP NBTUBNCÏNOPNFJPEBIJFSBSRVJBEFDMBTTF&TUBOÍPÏVNB
TJUVBÎÍPNVJUPDPNVN NBT EFQFOEFOEPEBOFDFTTJEBEF QPEFTFS
GFJUP 5PEBWJB  B SFHSB EF BUÏ  OÓWFJT EF IFSBOÎB EFWF TFS
MFNCSBEB
//Java
abstract class Funcionario extends Pessoa {

Date dataAdmissao;
String matricula;

// get/set e métodos afins


}

abstract class Medico extends Funcionario {

Date CRM;

// get/set e métodos afins

void operar() {
// implementação desejada
}
}

class Anestesista extends Medico {

...

//C#
abstract class Funcionario : Pessoa
{

Date dataAdmissao;
String matricula;

// get/set e métodos afins


}

abstract class Medico : Funcionario


{

Date CRM;

// get/set e métodos afins

90 6.1 HERANÇA
void Operar()
{
// implementação desejada
}
}

class Anestesista : Medico


{

...

"MÏNEFEFGJOJSBDMBTTFDPNPBCTUSBUB‰RVFTFSWJSÈEFNPMEF
QBSB PVUSBT DMBTTFT ‰  QPEFNPT UBNCÏN EFGJOJS NÏUPEPT DPNP
BCTUSBUPT " JEFJB EF EFGJOJS VN NÏUPEP DPNP BCTUSBUP Ï QBSB RVF
FMF UBNCÏN TJSWB EF NPMEF 1BSB JTTP  FMF OÍP EFWF QPTTVJS VNB
JNQMFNFOUBÎÍP NBTTJNBQFOBTBEFGJOJÎÍPEFTVBBTTJOBUVSB

.ÏUPEPTBCTUSBUPTTØQPEFNTFSEFGJOJEPTFNDMBTTFTBCTUSBUBT
1PSÏN  DMBTTFT BCTUSBUBT QPEFN UBNCÏN QPTTVJS NÏUPEPT OÍP
BCTUSBUPT  PV TFKB  RVF QPTTVBN TVB JNQMFNFOUBÎÍP 2VBOEP P
DPODFJUPEFQPMJNPSGJTNPGPSFYQMJDBEP GJDBSÈNBJTDMBSPQBSBRVF
TFSWF VN NÏUPEP BCTUSBUP 1PS FORVBOUP  BQFOBT TFSÈ NPTUSBEP
DPNPEFGJOJMP
//Java
abstract class Medico extends Funcionario {

// atributos

// get/set e métodos afins

//Método abstrato
abstract void operar();

//Método não abstrato.


void fazerAlgo() {
//Implementação desejada
}
}

//C#

6.1 HERANÇA 91
abstract class Medico : Funcionario
{

// atributos

// get/set e métodos afins

//Método abstrato
abstract void Operar();

//Método não abstrato.


void FazerAlgo() {
//Implementação desejada
}

0 DØEJHP BOUFSJPS NPTUSB RVF QPS QBESÍP UPEP NÏUPEP Ï OÍP


BCTUSBUPFOFTUFDBTP TÍPPTNÏUPEPTDPNPKÈWJOIBNTFOEPDSJBEPT
1BSB EFGJOJS VN NÏUPEP DPNP BCTUSBUP  EFWFTF FOUÍP OÍP QSPWFS
VNB JNQMFNFOUBÎÍP F GJOBMJ[ÈMP DPN  1PS GJN  VN FSSP NVJUP
DPNVNQBSBJOJDJBOUFTÏQFOTBSRVFBQBMBWSB abstract QPEFTFS
VTBEBDPNBUSJCVUPT NBTJTTPOÍPÏQFSNJUJEP/ÍPFYJTUFBUSJCVUP
BCTUSBUP/ÍPUFSJBMØHJDBVNBUSJCVUPBCTUSBUP JODPNQMFUP KÈRVF
FMFÏVUJMJ[BEPQBSBBSNB[FOBSWBMPSFT QSPWFSPFTUBEPEPPCKFUP

92 6.1 HERANÇA
6. ".*(0 .&6 %*44& 26& $0/4&(6*6 */45"/$*"3 &. 6." $-"44&
"#453"5"&-&²6..&/5*3040 06&6²26&/°04&*%&/"%"

7PDÐ  "*/%"  OÍP TBCF EF OBEB 3FBMNFOUF Ï QPTTÓWFM


JOTUBODJBS VNB DMBTTF BCTUSBUB VTBOEP P DPODFJUP EF $MBTTFT
"OÙOJNBT 1PSÏN  OÍP WBNPT FOUSBS OFTUF NÏSJUP QBSB OÍP
BQSPGVOEBS EFNBJT  QPJT OPTTP MJWSP WBJ EP CÈTJDP BP
JOUFSNFEJÈSJP"WBOÎBEPTØEFQPJT

4FGBMÈTTFNPTEF$MBTTFT"OÙOJNBT EFWFSÓBNPTUBNCÏNGBMBS
EF $MBTTFT *OUFSOBT  QPSÏN NBJT VNB WF[ FTUBSÓBNPT
BWBOÎBOEP "QØT B MFJUVSB EFTUF MJWSP  QSPDVSFN QPS FTTFT
DPODFJUPT QPJTTÍPCBTUBOUFÞUFJT

"HPSBÏBWF[EFGBMBSEBTDMBTTFTDPODSFUBT2VBOEPVNBDMBTTF
OÍPÏBCTUSBUB FMBTØQPEFTFSDPODSFUB"PDPOUSÈSJPEBTBCTUSBUBT
FTUBTOÍPTÍPHFOÏSJDBT NBTTJNCFNFTQFDÓGJDBT&MBTSFQSFTFOUBNP
DPODFJUP EF VTP EJSFUP RVF EFWF TFS USBCBMIBEP F  QPS JTTP  OÍP TØ
QPEFN  DPNP EFWFN  TFS JOTUBODJBEBT .BOJQVMÈMBT Ï WJUBM QBSB P
CPNGVODJPOBNFOUPEBBQMJDBÎÍP

/P DPOUFYUP EP IPTQJUBM  TFSJBN DMBTTFT DPODSFUBT


Anestesista  Gerente  Paciente FOUSFPVUSPT/PUBTFRVFÏ
NBJT GÈDJM JNBHJOBS P RVF VN BOFTUFTJTUB GB[  OP DBTP BQMJDBS
BOFTUFTJBT RVFVNNÏEJDP.ÏEJDPEFRVÐ 'JDBVNQPVDPWBHP

1BSB EFGJOJS DMBTTFT DPNP DPODSFUBT  CBTUB EFGJOJS BT DMBTTFT


DPNP KÈ WÓOIBNPT GB[FOEP  BOUFT EF FYQMJDBS P DPODFJUP EBT
BCTUSBUBT/PDBTP CBTUBVTBSBQBMBWSB class TFHVJEBEPOPNFEB
DMBTTF0RVFTFQBSBVNBDMBTTFBCTUSBUBEFVNBDPODSFUBÏBQFOBT
VNBRVFTUÍPDPODFJUVBM RVFEFWFTFSCFNFOUFOEJEB

6.1 HERANÇA 93
/PTFYFNQMPTJOJDJBJTTPCSFIFSBOÎB UÓOIBNPTDPMPDBEPBDMBTTF
Pessoa  DPNP DPODSFUB  QPJT BJOEB OÍP FSB DPOIFDJEP P DPODFJUP
EFDMBTTFBCTUSBUBF DPOTFRVFOUFNFOUF BQBMBWSB abstract  .BT
DPNPEFTFOSPMBSEPTFYFNQMPT OPUBNPTRVFÏPNBJTDPSSFUPFSB
EFGJOJMB DPNP BCTUSBUB  OP DPOUFYUP EP IPTQJUBM &OUÍP P VTP EB
QBMBWSB abstract  QBSB B EFGJOJÎÍP EF DMBTTFT BCTUSBUBT EFWF TFS
VUJMJ[BEP RVBOEP IPVWFS B OFDFTTJEBEF EF BQMJDBS P DPODFJUP EF
BCTUSBÎÍP GPSEFHSBOEFWBMPSDPODFJUVBMFSFMFWBOUFQBSBPDPOUFYUP
EB BQMJDBÎÍP $BTP JTTP OÍP TF BQMJRVF  Ï TØ OÍP VTBS FTUB QBMBWSB
BTTJN  FTUBSFNPT DSJBOEP DMBTTFT DPODSFUBT  RVF EFWFSÍP TFS
NBOJQVMBEBTEJSFUBNFOUF

"JOEB FN SFMBÎÍP B DMBTTFT DPODSFUBT  RVBOEP FMBT IFSEBN B


QBSUJS EF VNB DMBTTF BCTUSBUB RVF QPTTVB NÏUPEPT BCTUSBUPT  FMBT
UFSÍP B PCSJHBUPSJFEBEF EF QSPWFS B JNQMFNFOUBÎÍP QBSB UBJT
NÏUPEPT *TUP PDPSSF QPSRVF  DPNP FMBT TÍP EF VTP EJSFUP  Ï EF TF
FTQFSBS RVF FTUFT NÏUPEPT TFKBN VTBEPT F  QBSB JTTP TFS QPTTÓWFM
TFVT DPNQPSUBNFOUPT EFWFN FTUBS FTQFDJGJDBEPT 1PSÏN  TF VNB
DMBTTFBCTUSBUBIFSEBSEFPVUSBDMBTTFBCTUSBUB FTTBPCSJHBUPSJFEBEF
OÍPÏWBMJEB

5JQPTEFIFSBOÎB
&YJTUFNEPJTUJQPTEFIFSBOÎBBTJNQMFTFBNÞMUJQMB

" TJNQMFT PDPSSF RVBOEP VNB TVCDMBTTF UFN BQFOBT VNB


TVQFSDMBTTF/FTUFDBTP BDMBTTFGJMIBQSFDJTPVBQFOBTFTQFDJBMJ[BSF
SFVUJMJ[BS NFNCSPT EF BQFOBT VN DPODFJUP  VNB DMBTTF NÍF EB
BQMJDBÎÍP/PDPOUFYUPEPIPTQJUBM IFSBOÎBTTJNQMFTPDPSSFSBNFN
Anestesista  IFSEBOEP EF Medico  Medico  IFSEBOEP EF
Funcionario F Paciente  IFSEBOEP EF Pessoa  "TTJN  QBSB
DPEJGJDBSIFSBOÎBTEPUJQPTJNQMFT CBTUBGB[FSPRVFKÈWJOIBTFOEP
GFJUPFN Java DPMPDBSBDMBTTFGJMIBFTUFOEFOEP extends VNB
DMBTTF NÍF F FN C#  VNB DMBTTF EFSJWBEB FTUFOEFOEP :  VNB

94 6.1 HERANÇA
DMBTTFCBTF/ÍPTFSÈBQSFTFOUBEPOFOIVNDØEJHP QPJTFTTFUJQPEF
IFSBOÎBKÈWFNTFOEPVTBEP

" NÞMUJQMB PDPSSF RVBOEP VNB TVCDMBTTF OFDFTTJUB OÍP EF


BQFOBTVNB NBTEVBTPVNBJTTVQFSDMBTTFT"TTJN FTUBDMBTTFGJMIB
QPEFSÈFTQFDJBMJ[BSNBJTEFVNDPODFJUPEFVNBBQMJDBÎÍP&NCPSB
JOJDJBMNFOUF P FYFNQMP EP IPTQJUBM OÍP UFOIB IFSBOÎB NÞMUJQMB
QPEFNPT QFOTBS OB TFHVJOUF TJUVBÎÍP P IPTQJUBM UFN NÏEJDPT RVF
SFBMJ[BNBUFOEJNFOUPTBPTQBDJFOUFTFQPTTVJHFSFOUFTRVFGB[FNB
BENJOJTUSBÎÍPGJOBODFJSBEPIPTQJUBM QPSFYFNQMP

.BT P IPTQJUBM QPEF UFS B QPMÓUJDB EF PVUPSHBS B DBQBDJEBEF EF


HFSFODJBSFRVJQFT DPOTUJUVÓEBTQPSPVUSPTNÏEJDPT BVNNÏEJDPF
BTTJN FTUF QPEFS MJCFSBS QBHBNFOUPT  HFSJS IPSÈSJPT  BCPOBS GBMUBT
EPTTFVTTVCPSEJOBEPT FOUSFPVUSBTTJUVBÎÜFT/FTUFDBTP BMÏNEBT
SFTQPOTBCJMJEBEFT EF VN NÏEJDP  FMF UBNCÏN UFSJB BT
SFTQPOTBCJMJEBEFTEFVNHFSFOUF QPSFYFNQMP

"TTJN QPEFSJBTVSHJSVNOPWPDPODFJUPFVNBDMBTTFDIBNBEB
ChefeDeEquipe RVBMIFSEBSJBEBTDMBTTFT Medico  F Gerente 
/FTUB TJUVBÎÍP  B TVCDMBTTF ChefeDeEquipe  QPTTVJSJB EVBT
TVQFSDMBTTFT Medico F Gerente &TUFÏVNFYFNQMPEFIFSBOÎB
NÞMUJQMB 6NB DMBTTF EFSJWBEB QSFDJTPV EF EVBT TVQFSDMBTTFT QBSB
QPEFS TFS DPNQMFUB 4F NBJT DMBTTFT GPTTFN OFDFTTÈSJBT  NBJT
TVQFSDMBTTFTQPEFSJBNTFSVUJMJ[BEBT

/FTUF NPNFOUP  QPEFSJB TFS DPMPDBEP PT DØEJHPT FN Java  F


C#  QBSB FYFNQMJGJDBS B IFSBOÎB NÞMUJQMB &OUSFUBOUP  JTUP OÍP Ï
QPTTÓWFM  QPJT FTTBT MJOHVBHFOT OÍP QPTTVFN FTUF UJQP EF IFSBOÎB
&MBTUSBCBMIBNTPNFOUFDPNIFSBOÎBTJNQMFT&TUBGPJVNBEFDJTÍP
EFQSPKFUPEPTDSJBEPSFTEFTTBTMJOHVBHFOT

.BT  QBSB OÍP QBTTBS FN CSBODP F B UÓUVMP EF DVSJPTJEBEF  TFSÈ
BQSFTFOUBEPDPNPGB[FSIFSBOÎBNÞMUJQMBFN C++ RVBMUBNCÏNÏ
VNBMJOHVBHFNPSJFOUBEBBPCKFUPTCFNDPOIFDJEB

6.1 HERANÇA 95
class ChefeDeEquipe: Medico, Gerente {

...

" QBSUJS EP DØEJHP BQSFTFOUBEP FN C++  QFSDFCFNPT RVF


USBCBMIBSDPNIFSBOÎBNÞMUJQMBÏVNQSPDFTTPTJNQMFT4F Java F
C#  QFSNJUJTTFN FTTF UJQP EF IFSBOÎB  TFSJB DPNP TF  EFQPJT EP
extends FEP : WÈSJBTDMBTTFTTFQBSBEBTQPSWÓSHVMBQVEFTTFNTFS
VTBEBTFOÍPTPNFOUFDMBTTF

026&-&706+"7"&$"/°01044*#*-*5"3&.)&3"/±".Á-5*1-"

3FTQPTUBDPOGMJUPEFOPNFT

0 RVF Ï JTTP  *NBHJOF RVF B DMBTTF Medico  QPTTVÓTTF VN


BUSJCVUP DIBNBEP cargaHoraria  QBSB SFQSFTFOUBS B
RVBOUJEBEFEFIPSBTRVFFMFEFWFFTUBSEJTQPOÓWFMQBSBBUFOEFS
BPT QBDJFOUFT F  QPS DPJODJEÐODJB  B DMBTTF Gerente  UBNCÏN
QPTTVÓTTF VN BUSJCVUP DIBNBEP cargaHoraria  QBSB
SFQSFTFOUBS B RVBOUJEBEF EF IPSBT RVF EFWF USBCBMIBS OP
HFSFODJBNFOUP EP IPTQJUBM $PNP B DMBTTF ChefeDeEquipe
IFSEB EFTTBT EVBT DMBTTFT  TF FTUB QSFDJTBTTF NBOJQVMBS P
BUSJCVUP cargaHoraria  EF RVBM DMBTTF TFSJB P BUSJCVUP
VUJMJ[BEPFNVNEFUFSNJOBEPNPNFOUP

1FSDFCB RVF FTTB DPJODJEÐODJB HFSBSJB VNB BNCJHVJEBEF


DIBNBEB EF $POGMJUP EF /PNFT 1PSÏN  FTUB OÍP Ï VNB
TJUVBÎÍP TFN TPMVÎÍP  UBOUP RVF C++  USBCBMIB DPN IFSBOÎB
NÞMUJQMB"RVFTUÍPÏRVBOUPTFRVFSTBDSJGJDBSPEFTFNQFOIP
EBMJOHVBHFNQBSBTPMVDJPOBSFTUBTJUVBÎÍP 5SBUBS$POGMJUPEF
/PNFT SFRVFS VN DPNQJMBEPS NBJT DPNQMFYP F SPCVTUP *TUP
UFSNJOB QFOBMJ[BOEP P EFTFNQFOIP EB MJOHVBHFN &OUÍP B
EFDJTÍP EF Java  F C#  Ï BDFSUBEB FN QSPQPSDJPOBS VNB

96 6.1 HERANÇA
MJOHVBHFNNBJTSÈQJEB

.BT OÍP QPEFNPT TJNQMFTNFOUF FMJNJOBS VN DPODFJUP EB


0SJFOUBÎÍPB0CKFUPTTFNUFSQFSEBT6NFYFNQMPEJTUPÏNBJT
VNBWF[P ChefeDeEquipe &N Java F C# OÍPQPEFSÓBNPT
NPEFMBSFTUBTJUVBÎÍP QPJTOÍPUFNPTIFSBOÎBNÞMUJQMB4FJTUP
GPSJNQSFTDJOEÓWFMQBSBBBQMJDBÎÍP FOUÍPOÍPQPEFSÓBNPTVTBS
FTTBTMJOHVBHFOT1PSÏN QBSBFWJUBSFTTBTJUVBÎÍPESÈTUJDB FMBT
QPTTVFN PVUSPT NFJPT EF FNVMBS IFSBOÎB NÞMUJQMB .BJT
BEJBOUFWFSFNPTJTTP

6QDBTUFEPXODBTU
2VBOEP USBCBMIBNPT DPN IFSBOÎB  QPEFN TVSHJS EVBT
PQFSBÎÜFTSFBMJ[BEBTDPNPTPCKFUPTRVFGPSBNDSJBEPTBQBSUJSEBT
DMBTTFTFOWPMWJEBTFNVNBIJFSBSRVJBEFDMBTTFVQDBTUFEPXODBTU

0 VQDBTU Ï VNB PQFSBÎÍP EF DPOWFSTÍP  OB RVBM TVCDMBTTFT TÍP


QSPNPWJEBTBTVQFSDMBTTFT$PNPVNBDMBTTFGJMIBÏEPUJQPEFTVB
DMBTTF NÍF  FTUB DPOWFSTÍP Ï QFSNJUJEB 6UJMJ[BOEP P FYFNQMP EP
IPTQJUBM QPEFNPTWJTVBMJ[BSFTUFUJQPEFDPOWFSTÍP5FNPTBDMBTTF
Pessoa  RVF Ï B DMBTTF NÍF EF UPEBT BT DMBTTFT RVF BRVJ GPSBN
BQSFTFOUBEBT & BUÏ BHPSB  OP DPOUFYUP EP IPTQJUBM  VN NÏEJDP Ï
VNB QFTTPB  NBT VN QBDJFOUF F VN HFSFOUF UBNCÏN TÍP 6N
HFSFOUFÏVNGVODJPOÈSJP VNDBSEJPMPHJTUBÏVNNÏEJDP

5PEPTFTUFTFYFNQMPTNPTUSBNRVFBTTVCDMBTTFTTÍPEPNFTNP
UJQPRVFTVBTTVQFSDMBTTFT&OUÍP DBTPGPTTFOFDFTTÈSJP VNVQDBTU
QPEFSJB TFS SFBMJ[BEP FOUSF PT PCKFUPT RVF GPSBN DSJBEPT B QBSUJS
EFTUBT DMBTTFT " TFHVJS  WFKB PT DØEJHPT FN Java  F C#  RVF
JMVTUSBNPVQDBTU
//Java

Pessoa pessoa;

6.1 HERANÇA 97
pessoa = new Medico();

pessoa = new Paciente();

pessoa = new Funcionario();

Funcionario funcionario = new Gerente();

Medico medico = new Anestesista();

//C#
Pessoa pessoa;

pessoa = new Medico();

pessoa = new Paciente();

pessoa = new Funcionario();

Funcionario funcionario = new Gerente();

Medico medico = new Anestesista();

"T MJOIBT EF DØEJHP BQSFTFOUBEBT EFNPOTUSBN VNB


DBSBDUFSÓTUJDBJOFSFOUFBPVQDBTUTFSJNQMÓDJUB"VUPNBUJDBNFOUFBT
TVCDMBTTFT TÍP QSPNPWJEBT B DMBTTF Pessoa  Medico  PV
Funcionario  /ÍP QSFDJTBNPT GB[FS OBEB B NBJT QBSB FTTB
USBOTGPSNBÎÍPTFSSFBMJ[BEB

2VBOEP GBMBNPT TPCSF DBTU FN MJOHVBHFOT FTUSVUVSBEBT  MPHP


MFNCSBNPTEPTUJQPTQSJNJUJWPT DPNPGB[FSPDBTUEFVN long
QBSBVN int EFVN double QBSBVN int EFVN int QBSBVN
float 2VBOEPGB[FNPTVNBDPOWFSTÍP DBTU EFVN int  QBSB
float  B TJNQMFT DPEJGJDBÎÍP Ï GFJUB float = int  *TTP PDPSSF
QPSRVF VN int  DBCF EFOUSP EF VN GMPBU &TTB JEFJB EF DBCFS
UBNCÏN TF BQMJDB BPT PCKFUPT  TØ RVF DPN PVUSP OPNF  OP DBTP
TVCUJQP 4F VNB TVCDMBTTF Ï TVCUJQP EF TVB DMBTTF NÍF  FOUÍP FMB
DBCF OFMB 1PS JTUP Ï QFSNJUJEP GB[FS VQDBTU EF GPSNB JNQMÓDJUB
FOUSFPCKFUPT

0 EPXODBTU Ï B PQFSBÎÍP JOWFSTB  BTTJN TVQFSDMBTTFT TÍP

98 6.1 HERANÇA
DPOWFSUJEBTFNTVCDMBTTFT1PSÏN FNCPSBTFKBVNDPODFJUPWÈMJEP
FTUF EFWF TFS EFTFODPSBKBEP *TUP PDPSSF QPSRVF QPEFN PDPSSFS
WÈSJBTFTQFDJBMJ[BÎÜFTEJTUJOUBTBQBSUJSEFVNBHFOFSBMJ[BÎÍP

/PDPOUFYUPEPIPTQJUBM ÏEFDPOIFDJNFOUPRVFUPEPNÏEJDPÏ
VNGVODJPOÈSJP UPEPHFSFOUFÏVNGVODJPOÈSJP NBTOFNUPEPTPT
GVODJPOÈSJPTTÍPNÏEJDPT"QSPWBEJTTPÏPRVFBDBCPVEFTFSEJUP
UPEPHFSFOUFÏVNGVODJPOÈSJP&YJTUFNEJWFSTPTUJQPTEJTUJOUPTEF
GVODJPOÈSJPT F DBEB VN UFN TVB DMBTTF QSØQSJB EF SFGFSÐODJB 1PS
JTTP P EPXODBTU EFWF TFS FWJUBEP " TFHVJS  WFKB PT DØEJHPT FN
Java F C# RVFJMVTUSBNPEPXODBTURVFGVODJPOBNBUÏVNDFSUP
QPOUP
//Java

1. Funcionario funcionario1 = new Gerente();

2. Gerente gerente1 = (Gerente) funcionario1;

3. Funcionario funcionario2 = new Funcionario();

4. Gerente gerente2 = (Gerente) funcionario2;

//C#

1. Funcionario funcionario1 = new Gerente();

2. Gerente gerente1 = funcionario1 as Gerente;

3. Funcionario funcionario2 = new Funcionario();

4. Gerente gerente2 = funcionario2 as Gerente;

/BT TFHVOEBT MJOIBT EF DBEB DØEJHP  P EPXODBTU GVODJPOB


QPSRVFBWBSJÈWFM funcionario1 EFGJOJEBOBTMJOIBTBSNB[FOB
VNPCKFUP Gerente  FNCPSB TFV UJQP TFKB Funcionario  *TTP Ï
WÈMJEP QPSRVF Gerente  IFSEB EF Funcionario  /P DBTP EB
QSJNFJSBMJOIBEFDBEBDØEJHP GPJGFJUPVNVQDBTU FOBTFHVOEBP
EPXODBTU 1PSÏN  QPEFNPT WFSJGJDBS FSSPT OBT RVBSUBT MJOIBT *TUP
QPSRVF  OBT UFSDFJSBT MJOIBT  BT WBSJÈWFJT funcionario2

6.1 HERANÇA 99
BSNB[FOBNPCKFUPT Funcionario TF DPNPKÈUJOIBTJEPEJUP OFN
UPEPGVODJPOÈSJPÏHFSFOUF QPJTFYJTUFNNÏEJDPT FOUSFPVUSPT

'JHVSB6QDBTUF%PXODBTU

0QPMJNPSGJTNP
&N EFUFSNJOBEPT NPNFOUPT FN VNB IJFSBSRVJB EF DMBTTFT
QSFDJTBNPTRVFVNNFTNPNÏUPEP OPNFFMJTUBEFQBSÉNFUSP PV
TFKB  BTTJOBUVSB  TF DPNQPSUF EF GPSNB EJGFSFOUF EFQFOEFOEP EP
PCKFUP JOTUBODJBEP B QBSUJS EF VNB DMBTTF EF VNB IJFSBSRVJB
RVBMRVFS *TUP TVSHF EFWJEP Ë OFDFTTJEBEF EF GMFYJCJMJEBEF RVF B
IJFSBSRVJBEFDMBTTFEFTFKBGPSOFDFS1PSFYFNQMP TBCFNPTRVFDBEB
UJQPEFNÏEJDPQPEFUFSVNBGPSNBEJGFSFOUFEFSFBMJ[BSTVBBÎÍPEF
PQFSBSVNQBDJFOUFEFBDPSEPDPNPQSPDFEJNFOUP&NVNQBSUP
QPSFYFNQMP PBOFTUFTJTUBBQMJDBVNBJOKFÎÍPBOFTUÏTJDB PPCTUFUSB
SFBMJ[B B QSFQBSBÎÍP F SFUJSBEB EB DSJBOÎB  P QFEJBUSB SFBMJ[B VN
DPOKVOUPEFWFSJGJDBÎÜFTQBSBBUFTUBSBTBÞEFEPSFDÏNOBTDJEPFUD

$BEB NÏEJDP SFBMJ[B TVBT EFUFSNJOBEBT BÎÜFT EFQFOEFOEP EF

100 6.1 HERANÇA


TVBGVOÎÍPOPQBSUP NBTUPEPTFTUÍPPQFSBOEPOBRVFMFNPNFOUP
&TUBQPTTJCJMJEBEFEFVNBNFTNBBÎÍPQPEFSTFNPMEBSEFBDPSEP
DPNPPCKFUPFNRVFTUÍPÏDIBNBEPEFQPMJNPSGJTNP&NDBEBUJQP
EF NÏEJDP TVCDMBTTF  B BÎÍP EF PQFSBS Ï SFBMJ[BEB EF GPSNB
EJTUJOUB QPJTDBEBVNBUFNTVBTQFDVMJBSJEBEFT.BTNFTNPBTTJN
BBÎÍPÏBNFTNBFNTVBGPSNBNBJTÓOUJNBPQFSBS&TUBBÎÍPGPJ
IFSEBEBBQBSUJSEBTVQFSDMBTTF Medico 

" HSBOEF WBOUBHFN EP VTP EP QPMJNPSGJTNP Ï RVF QPEFNPT


VUJMJ[BS PCKFUPT EJTUJOUPT F DPOUJOVBS FYFDVUBOEP B NFTNB BÎÍP
TFOEP RVF FTUB BÎÍP TF NPMEBSÈ BP PCKFUP DPSSFOUF &TTB Ï B
GMFYJCJMJEBEFDJUBEBBOUFSJPSNFOUF0DØEJHPBTFHVJSFYFNQMJGJDBSÈ
FTTBTJUVBÎÍPDJUBEB
//Java

class Parto extends Procedimento {

Medico[] medicos = new Medico[]{new Anestesista(), new Obstetr


a(), new Pediatra()};

void realizarParto() {

for (int i = 0; i < medicos.length; i++) {

Medico medico = medicos[i];

medico.operar();
}
}
}

//C#
class Parto : Procedimento
{

Medico[] medicos = new Medico[]{new Anestesista(), new Obstetr


a(), new Pediatra()};

void RealizarParto()
{

for (int i = 0; i < medicos.length; i++) {

6.1 HERANÇA 101


Medico medico = medicos[i];

medico.Operar();
}
}
}

0T DØEJHPT BQSFTFOUBEPT JMVTUSBN RVF P QSPDFEJNFOUP EP UJQP


Parto ÏSFBMJ[BEPQPSUSÐTUJQPTEFNÏEJDPTEJTUJOUPTBOFTUFTJTUB
PCTUFUSB F QFEJBUSB $BEB VN SFBMJ[B TFRVFODJBMNFOUF PT QBTTPT EF
TVB BÎÍP Operar  F FTUB NPMEBTF EF BDPSEP DPN P NÏEJDP FN
RVFTUÍP &TUB GMFYJCJMJEBEF QPTTJCJMJUB RVF  FORVBOUP P TJTUFNB
FTUJWFS GVODJPOBOEP  QPEFTF NVEBS PT NÏEJDPT FOWPMWJEPT FN
EFUFSNJOBEPQSPDFEJNFOUP NBT NFTNPBTTJN BBÎÍPEF operar
OÍP TFSÈ BGFUBEB .FMIPS BJOEB  FMB TF BEBQUBSÈ EF BDPSEP DPN P
NÏEJDPDPSSFOUFEPQSPDFEJNFOUPFNRVFTUÍP

" NFMIPS GPSNB EF QPTTJCJMJUBSNPT P VTP EF QPMJNPSGJTNP Ï


USBCBMIBS DPN DMBTTFT F NÏUPEPT BCTUSBUPT "TTJN QPEFNPT BQFOBT
EFGJOJS B BTTJOBUVSB EP NÏUPEP BÎÍP  F EFJYBS QBSB B TVCDMBTTF
SFBMNFOUFEFGJOJSPDPNQPSUBNFOUPEFTUBPQFSBÎÍP0QSPDFTTPEF
EFGJOJSBDMBTTF Medico FPNÏUPEP operar DPNPBCTUSBUPTKÈGPJ
BQSFTFOUBEP "HPSB QPEFNPT BQFOBT EFNPOTUSBS DPNP BQMJDBS P
QPMJNPSGJTNP
//Java

class Anestesista extends Medico {

@Override
void operar() {
// passos a serem seguidos para aplicar a anestesia
}
}

class Obstetra extends Medico {

@Override
void operar() {
// passos a serem seguidos para realizar o parto em si

102 6.1 HERANÇA


}
}

class Pediatra extends Medico {

@Override
void operar() {
// passos a serem seguidos para averiguar a saúde do recém
-nascido
}
}

//C#
class Anestesista : Medico
{

override void Operar()


{
// passos a serem seguidos para aplicar a anestesia
}
}

class Obstetra : Medico {

override void Operar()


{
// passos a serem seguidos para realizar o parto em si
}
}

class Pediatra : Medico {

override void Operar()


{
// passos a serem seguidos para averiguar a saúde do recém
-nascido
}
}

0TDØEJHPTEFJYBNDMBSPRVF QBSBVUJMJ[BSPQPMJNPSGJTNP CBTUB


QSPWFSNPTPDPNQPSUBNFOUPQBSBPNÏUPEPBCTUSBUPOBDMBTTFFN
RVFTUÍP  F JTUP KÈ Ï PCSJHBUØSJP QBSB NÏUPEPT BCTUSBUPT EFWJEP ËT
SFHSBT EB 0SJFOUBÎÍP B 0CKFUPT %FTUB GPSNB  PT PCKFUPT
JOTUBODJBEPTBQBSUJSEFMBUFSÍPBDFTTPBPDPNQPSUBNFOUPEFGJOJEP
&N Java ÏOFDFTTÈSJPPVTPEP @Override F FN C# BQBMBWSB
override 7FSFNPTBTFHVJSPQPSRVÐEJTUP

6.1 HERANÇA 103


" FYQMBOBÎÍP EFJYB CFN DMBSB B SFMBÎÍP JOUSÓOTFDB FOUSF
QPMJNPSGJTNP F IFSBOÎB QBSB QPEFS FYJTUJS QPMJNPSGJTNP  Ï
OFDFTTÈSJPRVFTFUFOIBVNBIFSBOÎB4ØBTTJNTFSÈQPTTÓWFMQSPWFS
PDPNQPSUBNFOUPQBSBVNNÏUPEPBCTUSBUPIFSEBEP DPNPJOUVJUP
EF RVF FTUF UFOIB VN DPNQPSUBNFOUP EJGFSFOUF EF BDPSEP DPN P
PCKFUP 1PSÏN  BP VTBSNPT B IFSBOÎB  OÍP EFWFNPT
PCSJHBUPSJBNFOUFVUJMJ[BSPQPMJNPSGJTNP

1BSB VTÈMP  Ï OFDFTTÈSJP SFBMJ[BS BT DPEJGJDBÎÜFT BOUFSJPSNFOUF


BQSFTFOUBEBT0QPMJNPSGJTNPUSB[BGMFYJCJMJEBEFKÈFYQMJDBEB NBT
TFFTUBOÍPGPSOFDFTTÈSJB FOUÍPOÍPPVUJMJ[F4PNFOUFDPNPUFNQP
F QSÈUJDB RVF FTUF UJQP EF EFDJTÍP QPEFSÈ TFS UPNBEB EF GPSNB
FGFUJWB

4&3«26&5&/)06.10-*.03'*4.0/&45"4*56"±°0

5FOIP EVBT DMBTTFT DPNQMFUBNFOUF EJTUJOUBT  RVF OFN GB[FN


QBSUF EF VNB NFTNB IJFSBSRVJB EF DMBTTF 1PSÏN  BNCBT
QPTTVFN VN NÏUPEP DPN B NFTNB BTTJOBUVSB OPNF F
QBSÉNFUSPT  EF GPSNB JEÐOUJDB  NBT DPN DPNQPSUBNFOUPT
EJGFSFOUFT*TUPÏQPMJNPSGJTNP

"SFTQPTUBÏOÍP*TTPÏBQFOBTVNBHSBOEFDPJODJEÐODJB1BSB
UFSNPT QPMJNPSGJTNP  UFNPT EF UFS VNB B SFMBÎÍP EF IFSBOÎB
FOUSFDMBTTFT

"TPCSFTDSJUB
$PNP P QSØQSJP OPNF TVHFSF  TPCSFTDSJUB Ï RVBOEP VNB
FTDSJUB VNBJNQMFNFOUBÎÍPEFVNNÏUPEP TPGSFVNBFTDSJUBQPS
DJNB  PV TFKB  Ï SFEFGJOJEB " TPCSFTDSJUB Ï VUJMJ[BEB RVBOEP Ï
OFDFTTÈSJP NPEJGJDBS VN DPNQPSUBNFOUP IFSEBEP &TTB BMUFSBÎÍP

104 6.1 HERANÇA


QPEFBDSFTDFOUBSPVFMJNJOBSBMHPEPDPNQPSUBNFOUPIFSEBEP

1PS FYFNQMP  GPJ WJTUP OP QSPDFEJNFOUP EF VN QBSUP RVF P
BOFTUFTJTUB Ï P SFTQPOTÈWFM QPS BQMJDBS BT JOKFÎÜFT EF BOFTUÏTJDPT
QBSBPQBSUPQPEFSTFSSFBMJ[BEP/FTUFDBTP BDMBTTF Anestesista
QPTTVJ VNB JNQMFNFOUBÎÍP FTQFDÓGJDB QBSB P NÏUPEP operar
QPEFS SFBMJ[BS TFVT QBTTPT $BTP VN SFTJEFOUF EF BOFTUFTJTUB
QBSUJDJQBTTFEFTUFQBSUP FMFQSPWBWFMNFOUFOÍPFYFDVUBSJBUPEPTPT
QBTTPT RVF VN NÏEJDP FYQFSJFOUF FYFDVUB &MF QPEFSJB FOUÍP TFS
VNBTVCDMBTTFEF Anestesista FTPCSFTDSFWFSPNÏUPEP operar
QBSBBTTJNSFBMJ[BSBQFOBTPRVFFMFQVEFTTFGB[FS"DPEJGJDBÎÍPB
TFHVJSFYFNQMJGJDBPFYQPTUP
//Java
class Anestesista extends Medico {

void operar() {
// Calcular quantidade de anestésico
// Esterilizar local de aplicação
// Aplicar injeções
// Monitorar sensibilidade
// ...
}
}

class ResidenteAnestesista extends Anestesista {

@Override
void operar() {
// Calcular quantidade de anestésico
// Esterilizar local de aplicação
}
}

//C#
class Anestesista : Medico
{

void Operar()
{
// Calcular quantidade de anestésico
// Esterilizar local de aplicação
// Aplicar injeções
// Monitorar sensibilidade

6.1 HERANÇA 105


// ...
}
}

class ResidenteAnestesista : Anestesista


{

override void Operar()


{
// Calcular quantidade de anestésico
// Esterilizar local de aplicação
}
}

&N Java  BTTJN DPNP OP QPMJNPSGJTNP  B VUJMJ[BÎÍP EP


@Override  EFWF TFS GFJUB "TTJN  B TVCDMBTTF SFEFGJOF P NÏUPEP
IFSEBEP F B TPCSFTDSJUB Ï SFBMJ[BEB &N C#  B QBMBWSB SFTFSWBEB
override  UBNCÏN EFWF TFS VTBEB BOUFT EP UJQP EF SFUPSOP EP
NÏUPEP " QBSUJS EJTUP  PT NÏUPEPT EB TVQFSDMBTTFT EFJYBN EF TFS
VUJMJ[BEPT  F PT NÏUPEPT EBT TVCDMBTTFT TÍP PT RVF QBTTBSÍP B TFS
VTBEPTQFMBDMBTTF ResidenteAnestesista  "TTJN  FTUB DMBTTF GF[
VNB TPCSFTDSJUB EP NÏUPEP operar  RVF GPJ IFSEBEP EB DMBTTF
Anestesista  /FTUF FYFNQMP  B TPCSFTDSJUB FMJNJOPV BMHVOT
QBTTPT  NBT DPNP UJOIB TJEP EJUP  TF GPTTF QSFDJTP DSJBS PVUSPT
QBTTPT JTTPQPEFSJBTFSUBNCÏNGFJUP

&OUSFUBOUP FNBMHVOTDBTPT PNÏUPEPTPCSFTDSJUPOBTVCDMBTTF


QSFDJTB VUJMJ[BS JOUFHSBMNFOUF P DPNQPSUBNFOUP EP NÏUPEP EB
TVQFSDMBTTF  F EFQPJT SFBMJ[BS TFVT QBTTPT FTQFDÓGJDPT 1BSB SFBMJ[BS
FTUB UBSFGB  BT MJOHVBHFOT PSJFOUBEBT B PCKFUP QSPWFFN TJOUBYFT
FTQFDÓGJDBT FN Java  Ï B QBMBWSB super  F  FN C#  B QBMBWSB
base 7FKBBTFHVJSDPNPVTÈMBT

//Java
class ResidenteAnestesista extends Anestesista {

@Override
void operar() {
super.operar();
// passos especificos para a sobrscrita.

106 6.1 HERANÇA


}
}

//C#
class ResidenteAnestesista : Anestesista
{

override void Operar()


{
base.Operar();
// passos especificos para a sobrscrita.

}
}

/PT FYFNQMPT BOUFSJPSFT  BOUFT EB FYFDVÎÍP EPT QBTTPT


FTQFDÓGJDPT EBT TPCSFTDSJUBT  PT NÏUPEPT EBT TVQFSDMBTTFT TÍP
FYFDVUBEPT QPS DPNQMFUP "TTJN DPNP OB TPCSFTDSJUB  OP
QPMJNPSGJTNPBTQBMBWSBT super F base QPEFNTFSVUJMJ[BEBTDBTP
PDPNQPSUBNFOUPQPMJNØSGJDPOFDFTTJUFEBFYFDVÎÍPEFNÏUPEPTEB
DMBTTFNÍFBOUFTEFSFBMJ[BSTVBTUBSFGBT

6.1 HERANÇA 107


010-*.03'*4.0&"40#3&4$3*5"4°0*%³/5*$04²*440.&4.0

4JNFOÍP%PQPOUPEFWJTUBEFJNQMFNFOUBÎÍP SFBMNFOUFPT
EPJT TÍP JEÐOUJDPT  NBT DPODFJUVBMNFOUF TÍP EJGFSFOUFT "
TPCSFTDSJUB TPCSFTDSFWF BMHP FYJTUFOUF  OP DBTP VN
DPNQPSUBNFOUP QBESÍP EB TVQFSDMBTTF %F BDPSEP DPN B
OFDFTTJEBEF  QPEFNPT NVEÈMP PV OÍP +È OP QPMJNPSGJTNP
OÍP IÈ OFDFTTJEBEF EF TF UFS VN DPNQPSUBNFOUP QBESÍP  BUÏ
QPSRVF DPNP KÈ GPJ EJUP  HFSBMNFOUF P NÏUPEP OP RVBM
EFTFKBNPTQSPWFSPDPNQPSUBNFOUPQPMJNØSGJDPÏBCTUSBUP

$PN JTTP  QPEFNPT DIFHBS B TFHVJOUF DPODMVTÍP UPEB


TPCSFTDSJUBUBNCÏNÏVNQPMJNPSGJTNP BGJOBM BPTPCSFTDSFWFS
VN DPNQPSUBNFOUP  UFSNJOBNPT QSPWFOEP VN OPWP EF
BDPSEP DPN B TVCDMBTTF +È P QPMJNPSGJTNP OÍP Ï
PCSJHBUPSJBNFOUFVNBTPCSFTDSJUB QPJTTFUJWFSNPTVNNÏUPEP
BCTUSBUP TFN VNB JNQMFNFOUBÎÍP  OÍP UFSFNPT P RVF
SFEFGJOJS/FTUFDBTP UFNPTVNQPMJNPSGJTNPQVSP

""440$*"±°0
"UÏ P NPNFOUP GPJ WJTUP BQFOBT VN UJQP EF SFMBDJPOBNFOUP B
IFSBOÎB &TUF Ï ÞUJM QBSB RVBOEP QSFDJTBNPT PCUFS VN SFÞTP EF
NFNCSPT F  QSJODJQBMNFOUF  VNB EFGJOJÎÍP EF TVCUJQPT &NCPSB
FTUBT TJUVBÎÜFT TFKBN DPNVOT F ÞUFJT FN BQMJDBÎÜFT PSJFOUBEBT B
PCKFUPT OÍPÏBÞOJDBOFDFTTJEBEFEFSFMBDJPOBNFOUP1PSFYFNQMP
GPJ WJTUP RVF OP IPTQJUBM FYJTUFN WÈSJPT UJQPT EF NÏEJDPT &OUÍP
QBSBQPEFSNPTBQMJDBSPSFÞTPFBFTQFDJBMJ[BÎÍP GPJDSJBEPBDMBTTF
Medico FBTDMBTTFT Anestesista  Obstetra  FOUSF BT EFNBJT
TFOEP RVF B QSJNFJSB GPJ EFGJOJEB DPNP BCTUSBUB F BT EFNBJT
IFSEBSBNEFTUB"UÏFTUFNPNFOUP UVEPDFSUP

108 6.2 A ASSOCIAÇÃO


.BT F TF GPS QSFDJTP SFQSFTFOUBS  OP NPEFMP EP IPTQJUBM  PT
FOEFSFÎPT EPT NÏEJDPT  5BOUP VN BOFTUFTJTUB RVBOUP VN PCTUFUSB
QSFDJTBSÍP EF VN FOEFSFÎP &TUF UFSJB VN OPNF EF SVB  CBJSSP
DJEBEF  FOUSF PVUSPT BUSJCVUPT RVF TFSJBN OFDFTTÈSJPT QBSB
SFQSFTFOUÈMP ² DPNVN JOJDJBOUFT BQMJDBSFN B TFHVJOUF TPMVÎÍP
GB[FSBTDMBTTFT Anestesista F Obstetra  PV NFTNP Medico
IFSEBSFN EB DMBTTF Endereco  "TTJN  UPEPT PT BUSJCVUPT EF VN
FOEFSFÎPTFSJBNDPNQBSUJMIBEPTDPNUPEBTFTTBTDMBTTFT"QSJNFJSB
WJTUB JTTPQBSFDFVNBTPMVÎÍPBDFJUÈWFM NBTJOGFMJ[NFOUFOÍPÏ

$PNP KÈ GPJ WJTUP OB TFÎÍP EF IFSBOÎB  B IFSBOÎB UFN DPNP
GJOBMJEBEF QPTTJCJMJUBS B DSJBÎÍP EF TVCUJQPT NBJT EP RVF SFVUJMJ[È
MPT &OUÍP  DBCF VNB QFSHVOUB VN FOEFSFÎP Ï VN BOFTUFTJTUB
&WJEFOUFNFOUF RVF OÍP -PHP B IFSBOÎB TFSJB VNB FTDPMIB GBMIB
QBSB SFQSFTFOUBS P SFMBDJPOBNFOUP FOUSF B DMBTTF Endereco  F
Medico 

&OUSFUBOUP  B DMBTTF Medico  BJOEB FTUÈ QSFDJTBOEP EF VN


FOEFSFÎP"TTJNVNBOPWBQFSHVOUBQPEFTFSGFJUBVNBOFTUFTJTUB
QPTTVJVNFOEFSFÎP &WJEFOUFNFOUFRVFTJN6NBOFTUFTJTUBOÍPÏ
VN FOEFSFÎP  NBT QSFDJTB VTBS VN QBSB QPEFS SFQSFTFOUBS FTUF
DPODFJUP " QBSUJS EJTUP  WFSJGJDBNPT RVF B DMBTTF Medico  EFWF TF
BTTPDJBS Ë DMBTTF Endereco  QBSB QPEFS DPNQMFUBS TVB
SFQSFTFOUBUJWJEBEF "T DMBTTFT F  DPOTFRVFOUFNFOUF  PT PCKFUPT
QPEFNTFBTTPDJBSRVBOUBTWF[FTGPSFNOFDFTTÈSJBT

"TTPDJBÎÍP QPTTJCJMJUB VN SFMBDJPOBNFOUP FOUSF DMBTTFTPCKFUPT


OP RVBM FTUFT QPTTBN QFEJS BKVEB B PVUSPT F BTTJN SFQSFTFOUBS EF
GPSNB DPNQMFUB P DPODFJUP OP RVBM TF EFTUJOBN /FTUF UJQP EF
SFMBDJPOBNFOUP BTDMBTTFTFPTPCKFUPTJOUFSBHFNFOUSFTJQBSBBUJOHJS
TFVTPCKFUJWPT

&TTB EFGJOJÎÍP EFJYB DMBSB B TJUVBÎÍP EFTDSJUB BOUFSJPSNFOUF 0


BOFTUFTJTUB QPS TJ TØ OÍP UJOIB DPNP SFQSFTFOUBS P DPODFJUP EF
FOEFSFÎP  QSFDJTBWB SFMBDJPOBSTF DPN BMHVÏN 'B[FS B DMBTTF

6.2 A ASSOCIAÇÃO 109


Medico  IFSEBS EF Endereco  FNCPSB B QPTTJCJMJUBTTF UFS BDFTTP
BPT BUSJCVUPT EF VN FOEFSFÎP  TFSJB VN HSBOEF FSSP DPODFJUVBM
/FTUFDBTP BÞOJDBGPSNBDPSSFUBÏGB[FSVNBBTTPDJBÎÍPFOUSFFTUBT
EVBT DMBTTFT $PN JTTP  FMBT TF DPNQMFNFOUBSÍP QBSB NPEFMBS P
NÏEJDPDPSSFUBNFOUF

0 FYFNQMP EFTUB BTTPDJBÎÍP Ï VNB TJUVBÎÍP DMÈTTJDB EF BMUB


DPFTÍP 2VBOEP WJNPT BT EJGJDVMEBEFT EF DPFTÍP FN MJOHVBHFOT
FTUSVUVSBEBT F DPNP B 00 QPEFSJB GBDJMJUBS JTTP OP DBQÓUVMP  1PS
RVF VTBS B 0SJFOUBÎÍP B 0CKFUPT  FSB EFTUF UJQP EF TJUVBÎÍP RVF
OFDFTTJUBWB TFS FYQMPSBEP &N WF[ EF NJTUVSBS PT BUSJCVUPT EF
FOEFSFÎP EFOUSP EF BOFTUFTJTUB F BTTJN GB[FS B TBMBEB NJTUB EF
DPODFJUPT  DPMPDBNPT PT BUSJCVUPT FN DMBTTFT TFQBSBEBT
QPTTJCJMJUBOEP RVF BNCBT TF SFMBDJPOBTTFN QBSB BUJOHJS TFVT
PCKFUJWPTBQBSUJSEFVNBBTTPDJBÎÍPFOUSFFMBT

" BKVEB BOUFSJPSNFOUF DJUBEB OÍP TF SFTUSJOHF B BQFOBT


NPEFMBS DPODFJUPT 1PEF UBNCÏN TFS B FYFDVÎÍP EF BUJWJEBEFT  PV
TFKB  B FYFDVÎÍP EF NÏUPEPT 1PS FYFNQMP  GPJ WJTUP RVF B DMBTTF
Parto QPTTVÓBVNBBTTPDJBÎÍPDPN Medico OBWFSEBEFDPNVN
WFUPSEFNÏEJDPT1BSBPQBSUPTFSSFBMJ[BEP BTBUJWJEBEFTJOFSFOUFT
B FTUFT EFWFN TFS FYFDVUBEBT 4F FTUBT BUJWJEBEFT GPTTFN EFGJOJEBT
EJSFUBNFOUFEFOUSPEBDMBTTF Parto FTUBSÓBNPTDSJBOEPVNBDMBTTF
OÍP DPFTB &OUÍP P DPSSFUP Ï EFGJOJMBT EFOUSP EB DMBTTF EF DBEB
NÏEJDP FTQFDÓGJDP  GB[FS B BTTPDJBÎÍP EFMFT DPN B DMBTTF Parto  F
EFMFHBSBFYFDVÎÍPEBTBUJWJEBEFTFTQFDÓGJDBTBDBEBNÏEJDP"TTJN
B BTTPDJBÎÍP BKVEPV OB FYFDVÎÍP EFTUBT BUJWJEBEFT &TUB DIBNBEB
EF VNB BÎÍP EF VN PCKFUP OBEB NBJT Ï EP RVF P DPODFJUP EF
NFOTBHFNRVFKÈUJOIBTJEPWJTUP0VTFKB PRVFQPTTJCJMJUBBUSPDB
EFJOGPSNBÎÜFTOBBTTPDJBÎÍPÏPDPODFJUPEFNFOTBHFN

0T UJQPT EF VNB BTTPDJBÎÍP BHSFHBÎÍP  DPNQPTJÎÍP F


EFQFOEÐODJB

110 6.2 A ASSOCIAÇÃO


" BTTPDJBÎÍP QPEF TFS SFBMJ[BEB EF EVBT GPSNBT FTUSVUVSBM F
DPNQPSUBNFOUBM " QSJNFJSB QPTTVJ EPJT UJQPT BHSFHBÎÍP F
DPNQPTJÎÍP"TFHVOEBTPNFOUFVNUJQPEFQFOEÐODJB

" FTUSVUVSBM UFN DPNP DBSBDUFSÓTUJDB B BTTPDJBÎÍP PDPSSFS OB


FTUSVUVSBEBDMBTTF NBJTQSFDJTBNFOUFFNTFVTBUSJCVUPT"TTJN VN
EPT BUSJCVUPT EF VNB DMBTTF Ï EP UJQP EF PVUSB DMBTTF /P FYFNQMP
BOUFSJPSEF Medico F Endereco UFNPTVNBBTTPDJBÎÍPFTUSVUVSBM
Medico UFNVNEFTFVTBUSJCVUPTRVFÏEPUJQP Endereco $PN
JTTP  B DMBTTF Medico  F  DPOTFRVFOUFNFOUF  PT PCKFUPT DSJBEPT B
QBSUJSEFMBUFSÍPBDFTTPBPTBUSJCVUPTEBDMBTTFPCKFUP Endereco "
DPEJGJDBÎÍPBTFHVJSJMVTUSBJTTP
//Java
abstract class Medico extends Funcionario {

Date CRM;

//Aqui está a associação


Endereco endereco;

// get/set e métodos afins

void operar() {
// implementação desejada
}
}

//C#
abstract class Medico : Funcionario
{

Date CRM;

//Aqui está a associação


Endereco endereco;

// get/set e métodos afins

void Operar()
{
// implementação desejada
}
}

6.2 A ASSOCIAÇÃO 111


"JOEB TPCSF B BTTPDJBÎÍP FTUSVUVSBM  B EP UJQP DPNQPTJÎÍP
PDPSSF RVBOEP VN SFMBDJPOBNFOUP EB GPSNB QBSUF UPEP PDPSSF
0V TFKB  B QBSUF OÍP QPEF FYJTUJS TFN B FYJTUÐODJB EP UPEP
6UJMJ[BOEPPFYFNQMPEF Endereco F Medico  KÈ DJUBEP  UFNPT B
TFHVJOUF TJUVBÎÍP P FOEFSFÎP 3VB    EF 0MJWFJSB   / 
'PSUBMF[B$&TØQPEFFYJTUJSTFQFSUFODFSBVNFVOJDBNFOUFVN
NÏEJDP/ÍPUFSJBGJOBMJEBEFBMHVNBFTTFFOEFSFÎPFYJTUJSTFNFTUBS
MJHBEP B VN NÏEJDP  FNQSFTB  FOUSF PVUSPT /PUBNPT  OFTUF DBTP
VNB GPSUF SFMBÎÍP FOUSF B QBSUF  OP DBTP P FOEFSFÎP  F P UPEP  OP
DBTPPNÏEJDP"TTJN PNÏEJDPÏDPNQPTUPQPSVNFOEFSFÎPFFTUF
QFSUFODFTPNFOUFBFTUFNÏEJDP$BTPTFUFOIBVNFOEFSFÎP3VB
  EF 0MJWFJSB   /  'PSUBMF[B  $&  FTUF KÈ Ï VN PVUSP
FOEFSFÎP  QPJT P OÞNFSP NVEPV &OUÍP  FMF QFSUFODFSÈ B RVBMRVFS
PVUSP PCKFUP  NFOPT P QSJNFJSP NÏEJDP DJUBEP "TTJN FTUF OPWP
FOEFSFÎPWBJDPNQPSVNPVUSPPCKFUP

+È B BTTPDJBÎÍP FTUSVUVSBM EP UJQP BHSFHBÎÍP PDPSSF RVBOEP P


SFMBDJPOBNFOUP QBSUF UPEP OÍP PDPSSF 0V TFKB  B QBSUF QPEF TFS
DPNQBSUJMIBEBFOUSFWÈSJPTPCKFUPT UPEPT EJTUJOUPT1PSFYFNQMP P
QSPDFEJNFOUP Parto  TFSÈ FYFDVUBEP OB 4BMB  OP QFSÓPEP EB
NBOIÍ+ÈPQSPDFEJNFOUP RevascularizacaoMiocardio UBNCÏN
TFSÈFYFDVUBEPOB4BMB TØRVFQFMBUBSEF

/PUBTFRVFBQBSUF RVFOPDBTPÏB Sala QPEFQFSUFODFSB


UPEPTEJTUJOUPT RVFOPDBTPTÍPPTQSPDFEJNFOUPT"TTJN B Sala
BHSFHBTF QBSB GPSNBS B FTUSVUVSB EFTTFT QSPDFEJNFOUPT  NBT OÍP
DPNQÜFÞOJDBFFYDMVTJWBNFOUFTPNFOUFVNEFMFT"TFHVJS WFKBP
FYFNQMPDPEJGJDBEPEFBHSFHBÎÍP
class Parto extends Procedimento {

//Aqui está a associação


Sala sala;

//C#

112 6.2 A ASSOCIAÇÃO


class RevascularizacaoMiocardio : Procedimento
{

//Aqui está a associação


Sala sala;
}

$0.104*±°0&"(3&("±°04°0*%³/5*$04²*440.&4.0

.BJTVNBWF[ TJNFOÍP%PQPOUPEFWJTUBEFJNQMFNFOUBÎÍP
SFBMNFOUF PT EPJT TÍP JEÐOUJDPT  NBT DPODFJUVBMNFOUF TÍP
EJGFSFOUFTDPNPKÈWJNPT)ÈBJOEBVNRVFTUJPOBNFOUPFOUSF
FTUFTTFTÍPJHVBJTFNJNQMFNFOUBÎÍPOÍPTFSJBTPNFOUFVNB
BTTPDJBÎÍP QPSRVFFOUÍPFTTBEJWJTÍP &TTFRVFTUJPOBNFOUPÏ
VN UFSSFOP GÏSUJM QBSB NVJUBT EJTDVTTÜFT .VJUPT EJ[FN RVF
FTUFTOÍPQFSUFODFB0SJFOUBÎÍPB0CKFUPT NBTTJNB6.-+È
PVUSPT QFOTBN P DPOUSÈSJP 1BSUJDVMBSNFOUF  DPOTJEFSP RVF
QFSUFODF B BNCPT  QPSRVF TF VTP VNB MJOHVBHFN PSJFOUBEB B
PCKFUPT  DPOTFRVFOUFNFOUF VTBSFJ 6.- 4F WPV JNQMFNFOUBS
VTBOEP PCKFUPT F GB[FS TVB NPEFMBHFN VTBOEP 6.-  UFSFJ EF
UFSVNBDPOWFSHÐODJBEFDPODFJUPTEFBNCPT QBSBBTTJNPCUFS
NFMIPSFTSFTVMUBEPT

1PS GJN  WBNPT QBSB B BTTPDJBÎÍP DPNQPSUBNFOUBM  OP DBTP B


EFQFOEÐODJB .VJUBT WF[FT QSFDJTBNPT QBTTBS PCKFUPT DPNP
QBSÉNFUSPT QBSB PT NÏUPEPT  PV NFTNP JOTUBODJBS PCKFUPT EFOUSP
EP DPSQP EPT NÏUPEPT $PN JTTP  UFNPT BDFTTPT BPT NFNCSPT
EFTTFT PCKFUPTDMBTTFT QBSB OPT BKVEBS B SFBMJ[BS BT BUJWJEBEFT
OFDFTTÈSJBT*TUPOBEBNBJTÏRVFVNPVUSPFYFNQMPEFBTTPDJBÎÍP
QPSÏNFTUBBHPSBOÍPFTUÈMJHBEBËFTUSVUVSBEBDMBTTFPCKFUP OÍPÏ
VNBUSJCVUP

"HPSB  FTUB BTTPDJBÎÍP GB[ QBSUF EF VN NÏUPEP  TFKB BUSBWÏT EF
TFV QBSÉNFUSP PV EF VNB JOTUBODJBÎÍP EJSFUB FN TFV DPSQP +È GPJ

6.2 A ASSOCIAÇÃO 113


NPTUSBEP VN FYFNQMP EF EFQFOEÐODJB OP DBQÓUVMPTFÎÍP TPCSF
NÏUPEPT /P NÏUPEP EF FYFNQMP Procedimento
consultarProcedimentoPorPlano(Plano plano)  FYJTUF VNB
EFQFOEÐODJBDPNBDMBTTFPCKFUP Plano 4FRVBMRVFSPVUSPPCKFUP
GPS JOTUBODJBEP EFOUSP EFTUF NÏUPEP  VNB OPWB EFQFOEÐODJB TFSÈ
DSJBEBQBSBBDMBTTFEFTUFOPWPPCKFUP

"TDBSBDUFSÓTUJDBTEFVNBBTTPDJBÎÍPVOÈSJB NÞMUJQMB
DBSEJOBMJEBEFFOBWFHBCJMJEBEF
"T BTTPDJBÎÜFT QPTTVFN BMHVNBT DBSBDUFSÓTUJDBT RVF WJTBN
GBDJMJUBSBTVBVTBCJMJEBEFFUBNCÏNPTFVFOUFOEJNFOUP"TFHVJS
TFSÍPEFNPOTUSBEBTTJUVBÎÜFTRVFWJTBNFYQPSUBJTDBSBDUFSÓTUJDBT

(FSBMNFOUF PTIPTQJUBJTBUFOEFNQBDJFOUFTBUSBWÏTEFVNQMBOP
EF TBÞEF /FTUFT QMBOPT  FYJTUF VN DPODFJUP RVF Ï P CFOFGJDJÈSJP
VNB QFTTPB RVF QPTTVJ VN QMBOP QBSB DPCSJS TVBT OFDFTTJEBEFT
NÏEJDBT &TTF CFOFGJDJÈSJP UFSNJOB TF USBOTGPSNBOEP OP QBDJFOUF
RVBOEPFMFÏBUFOEJEPOPIPTQJUBM

² DPNVN UBNCÏN RVF FTUF CFOFGJDJÈSJP QPTTVB EFQFOEFOUFT


UJQP VNB NÍF RVF QBHB P QMBOP EF TBÞEF EF TFV GJMIP  KVOUBNFOUF
DPN TFV QSØQSJP QMBOP "TTJN EFGJOFTF VN BVUPSSFMBDJPOBNFOUP
QPJTUBOUPBNÍFRVBOUPPGJMIPTÍPCFOFGJDJÈSJPT"EJGFSFOÎBÏRVF
P GJMIP FTUÈ SFMBDJPOBEP DPN B NÍF  P GJMIP EFQFOEF EB NÍF 1BSB
JEFOUJGJDBS TFQBSBEBNFOUF P UJUVMBS F P EFQFOEFOUF  QPEFSÓBNPT
EFGJOJSVNBUSJCVUP"DPEJGJDBÎÍPBTFHVJSJMVTUSBFTTBTJUVBÎÍP
class Beneficiario {

String nome;
Date dataNascimento
String tipoBeneficiario;
Beneficiario dependente;

// gets/sets

// métodos afins

114 6.2 A ASSOCIAÇÃO


}

//C#
class Beneficiario
{

String nome;
Date dataNascimento
String tipoBeneficiario;
Beneficiario dependente;

// gets/sets

// métodos afins
}

0 BUSJCVUP dependente  OB DMBTTF Beneficiario  Ï EF TFV


QSØQSJP UJQP *TUP Ï VNB BTTPDJBÎÍP VOÈSJB  QPJT TPNFOUF VNB
DMBTTFPCKFUP GPJ VTBEB  OP DBTP B DMBTTF Beneficiario  1BSB
EJGFSFODJBSRVFNÏPUJUVMBSFRVFNÏPEFQFOEFOUF GPJDSJBEPVN
BUSJCVUP tipoBeneficiario  OP RVBM QPTTÓWFJT WBMPSFT QPEFSJBN
TFSUJUVMBSPVEFQFOEFOUF

+ÈOBDMBTTF Parto UFNPTVNBBTTPDJBÎÍPNÞMUJQMB QPJTWÈSJPT


UJQPT EF DMBTTFT TÍP VUJMJ[BEBT OBT BTTPDJBÎÜFT Parto  UFN P
BUSJCVUP sala EPUJQP Sala FUFNVNWFUPSEFNÏEJDPTEPUJQP
Medico  0V TFKB  UFWF NBJT EF VN UJQP EF DMBTTF FOWPMWJEB OB
BTTPDJBÎÍP"DPEJGJDBÎÍPJMVTUSBPFYQPTUP
//Java

class Parto extends Procedimento {

Medico[] medicos = new Medico[]{new Anestesista(), new Obstetr


a(), new Pediatra()};

Sala sala;
}

//C#
class Parto : Procedimento
{

Medico[] medicos = new Medico[]{new Anestesista(), new Obstetr

6.2 A ASSOCIAÇÃO 115


a(), new Pediatra()};

Sala sala;
}

"JOEBOBDMBTTF Parto OPUBNPTRVFTÍPFYBUBNFOUFNÏEJDPT


FTBMBFOWPMWJEPTOFTUFQSPDFEJNFOUP&TUBRVBOUJEBEFEFNÏEJDPT
F TBMB DPSSFTQPOEF B DBSEJOBMJEBEF EFTUBT BTTPDJBÎÜFT "T
DBSEJOBMJEBEFTQPEFNUFSRVBOUJEBEFTGJYBT DPNPBEFTUFFYFNQMP
PV OÍP UFS VNB RVBOUJEBEF EFGJOJEB  PV TFKB  UFSÈ RVBOUPT PCKFUPT
GPSFN OFDFTTÈSJPT " DBSEJOBMJEBEF TFSWF QBSB JEFOUJGJDBS RVBOUPT
PCKFUPTBBTTPDJBÎÍPQPTTVJ

1PSGJN WBNPTWFSBOBWFHBCJMJEBEF&MBQPEFTFSVOJEJSFDJPOBM
PV CJEJSFDJPOBM " QSJNFJSB EFUFSNJOB RVF B BTTPDJBÎÍP BDPOUFDF
TPNFOUF EF VN MBEP /P DBTP EB DMBTTF Parto  P UJQP Ï
VOJEJSFDJPOBM  QPJT TØ Ï SFMFWBOUF TBCFS B TBMB OB RVBM P QBSUP TFSÈ
FYFDVUBEP"TTJNDSJPVTFVNBUSJCVUPFN Parto EPUJQP Sala 
$BTP GPTTF OFDFTTÈSJP TBCFS B RVBM QSPDFEJNFOUP VNB TBMB
QFSUFODFTTF  EFWFSÓBNPT FOUÍP UFS VN WFUPS EF Parto  OB DMBTTF
Sala  QPJT TØ BTTJN TFSJB QPTTÓWFM PCUFS FTTB SBTUSFBCJMJEBEF "P
GB[FS JTUP  B OBWFHBCJMJEBEF UPSOBSJBTF CJEJSFDJPOBM  QPJT BT EVBT
DMBTTFTFOWPMWJEBTUJOIBNVNBBSFGFSÐODJBEBPVUSB7FKBBTFHVJSB
DPEJGJDBÎÍP
//Java
class Parto extends Procedimento {

Medico[] medicos = new Medico[]{new Anestesista(), new Obstetr


a(), new Pediatra()};

Sala sala;
}

class Sala {

Parto[] partos;

//C#

116 6.2 A ASSOCIAÇÃO


class Parto : Procedimento
{

Medico[] medicos = new Medico[]{new Anestesista(), new Obstetr


a(), new Pediatra()};

Sala sala;
}

class Sala
{

Parto[] partos;

"*/5&3'"$&
&N BMHVNBT BQMJDBÎÜFT PSJFOUBEBT B PCKFUPT RVF OFDFTTJUBN EF
VNBNPEFMBHFNVNQPVDPNBJTFMBCPSBEB NVJUBTWF[FTÏQSFDJTP
EFUFSNJOBS VN DPOKVOUP EF NÏUPEPT RVF EFWFN PCSJHBUPSJBNFOUF
TFS VTBEPT 1PSÏN  DPNP FTTFT NÏUPEPT TFSÍP SFBMNFOUF
JNQMFNFOUBEPT  OÍP JNQPSUB RVFN EFGJOJV UBM DPOKVOUP &TTB
PCSJHBUPSJFEBEFEFEFGJOJÎÍPEFNÏUPEPTÏDIBNBEPEFJOUFSGBDF

*OUFSGBDFEFGJOFVNDPOUSBUPRVFEFWFTFSTFHVJEPQFMBDMBTTFRVF
BJNQMFNFOUB2VBOEPVNBDMBTTFJNQMFNFOUBVNBJOUFSGBDF FMBTF
DPNQSPNFUF B SFBMJ[BS UPEPT PT DPNQPSUBNFOUPT RVF B JOUFSGBDF
EJTQPOJCJMJ[B

6N FYFNQMP SFBM UBMWF[ QPTTB BKVEBS B FOUFOEFS UBM DPODFJUP


1PSFYFNQMP JNBHJOFRVFPIPTQJUBMRVFFTUÈTFOEPVUJMJ[BEPDPNP
CBTF EF FYFNQMJGJDBÎÍP UFSÈ EF QSFTUBS DPOUBT BP .JOJTUÏSJP EB
4BÞEF&MFTBCFRVFEFWFJOGPSNBSBPUBMNJOJTUÏSJPRVBOUPGBUVSPV
OP NÐT DPSSFOUF  RVBJT QSPDFEJNFOUPT GPSBN FYFDVUBEPT  FOUSF
PVUSBT OFDFTTJEBEFT 0 QSØQSJP NJOJTUÏSJP TBCF RVF QSFDJTB EFTTBT
JOGPSNBÎÜFT NBTOÍPTBCFDPNPPCUÐMBT BGJOBMFMBTFTUÍPFNQPEFS
EP IPTQJUBM & QBSB QPTTJCJMJUBS FTTB USPDB EF JOGPSNBÎÜFT FOUSF P

6.3 A INTERFACE 117


IPTQJUBMFPNJOJTUÏSJP EFWFTFSEFGJOJEBVNBJOUFSGBDF

"TTJN  P NJOJTUÏSJP EFWF EJTQPOJCJMJ[BS VN DPOKVOUP EF


NÏUPEPT  OP DBTP B JOUFSGBDF  QBSB RVF P IPTQJUBM TFKB PCSJHBEP F
UFOIB DPNP GPSOFDÐMBT 1BSB P NJOJTUÏSJP OÍP JNQPSUB RVBJT
BUJWJEBEFT GPSBN SFBMJ[BEBT QBSB TF DIFHBS B UBJT JOGPSNBÎÜFT
BQFOBT JNQPSUB BT JOGPSNBÎÜFT FN TJ $PNP FTUBT GPSBN PCUJEBT Ï
EFSFTQPOTBCJMJEBEFEPIPTQJUBM

2VBOEPVNPVUSPIPTQJUBMGPSSFQBTTBSTVBTJOGPSNBÎÜFTQBSBP
NJOJTUÏSJP  FTUF UBNCÏN EFWFSÈ JNQMFNFOUBS B NFTNB JOUFSGBDF
&OUSFUBOUP  B TVB JNQMFNFOUBÎÍP QPEFSÈ TFS DPNQMFUBNFOUF
EJGFSFOUF FN SFMBÎÍP BP QSJNFJSP IPTQJUBM &TTB TJUVBÎÍP SFGPSÎB B
EFGJOJÎÍP EF JOUFSGBDF Ï PCSJHBUØSJP TF QSPWFS P DPNQPSUBNFOUP
NBTDPNPFTUFTFSÈSFBMJ[BEPQBSBBJOUFSGBDFÏJSSFMFWBOUF"TFHVJS
WFKBDPNPDSJBSVNBJOUFSGBDFFDPNPDMBTTFTQPEFNVUJMJ[ÈMB
//Java
interface IDemonstrativoOperacional {

double disponibilizarFaturamentoMensal();

Procedimento[] informarProcedimentoExecutados();
}

class TransmissaoDadosMinisterio implemets IDemonstrativoOperacion


al {

@Override
public double disponibilizarFaturamentoMensal() {
// implementação específica para o hospital conseguir info
rmar seu faturamento mensal.
}

@Override
public Procedimento[] informarProcedimentoExecutados() {
// implementação específica para o hospital conseguir info
rmar os procedimento executados.
}

//C#

118 6.3 A INTERFACE


interface IDemonstrativoOperacional
{

double DisponibilizarFaturamentoMensal();

Procedimento[] InformarProcedimentoExecutados();
}

class TransmissaoDadosMinisterio : IDemonstrativoOperacional


{

public double DisponibilizarFaturamentoMensal()


{
// implementação específica para o hospital conseguir info
rmar seu faturamento mensal.
}

public Procedimento[] InformarProcedimentoExecutados()


{
// implementação específica para o hospital conseguir info
rmar os procedimento executados.
}

"TTJN DPNP FYJTUF VNB QBMBWSB SFTFSWBEB QBSB TF DSJBS VNB
DMBTTF class FYJTUFVNBQBSBBJOUFSGBDF OPDBTP interface 
5BOUPFN Java RVBOUPFN C# BQBMBWSBÏBNFTNB1PSÏN QBSB
VUJMJ[BS B JOUFSGBDF  PDPSSF VNB QFRVFOB NVEBOÎB &N Java
EFWFNPT VTBS B QBMBWSB SFTFSWBEB implements  F  FN C#  NBJT
VNBWF[PTÓNCPMP : 

" DPEJGJDBÎÍP BOUFSJPS EFNPOTUSB B TJUVBÎÍP RVF  RVBOEP BT


DMBTTFT TransmissaoDadosMinisterio JNQMFNFOUBSBNBJOUFSGBDF
IDemonstrativoOperacional  FMBT OFDFTTJUBSBN SFBMJ[BS B
JNQMFNFOUBÎÍP EPT NÏUPEPT EB JOUFSGBDF " QSPWB EJTUP Ï RVF PT
NÏUPEPTFTUBWBNTFNDPSQPOBJOUFSGBDF OPDBTPUJOIBVN ; MPHP
BQØT PT QBSÐOUFTFT  F OÍP UJOIB DIBWFT EFMJNJUBOEP TFV DPSQP
5PEBWJB RVBOEPBTDMBTTFTJNQMFNFOUBSBNBJOUFSGBDF PTNÏUPEPT
UJWFSBNTFVTDPSQPTEFGJOJEPT5FNPTVNEFUBMIFBNBJTÏVNBCPB
QSÈUJDB DPMPDBS B MFUSB * OP JOÓDJP EP OPNF EBT JOUFSGBDFT  QBSB

6.3 A INTERFACE 119


BTTJNEJGFSFODJBSNPTPRVFÏVNBDMBTTFFPRVFÏVNBJOUFSGBDF

.²50%0 $0. ;  4&. $)"7&4 & 4&. $0310 *440 ² 6. .²50%0
"#453"50

4JN 1PS QBESÍP  UPEP NÏUPEP EF VNB JOUFSGBDF Ï BCTUSBUP &
QPSTFSQBESÍP OÍPQSFDJTBNPTDPMPDBSBQBMBWSB abstract 

4FTVBJEFJBÏGPSOFDFSPDPOUSBUPEFJNQMFNFOUBÎÍP NBTOÍP
RVFS TF QSFPDVQBS DPN B JNQMFNFOUBÎÍP FN TJ  OBEB NFMIPS
EPRVFVUJMJ[BSVNNÏUPEPBCTUSBUP

.²50%04 "#453"504 4» 10%&. 4&3 %&'*/*%04 %&/530 %& $-"44&4


"#453"5"40-*730%*;*440

4JN  F P MJWSP FTUÈ DFSUP " JOUFSGBDF TF DPNQPSUB DPNP VNB
DMBTTFBCTUSBUB TØRVFNBJTSFTUSJUJWB&NDMBTTFTBCTUSBUBT GPJ
WJTUP RVF  TF OFDFTTÈSJP  QPEFNPT UFS NÏUPEPT OÍP BCTUSBUPT
.BTFNVNBJOUFSGBDFJTTPOÍPÏQPTTÓWFM

120 6.3 A INTERFACE


026&."*46."*/5&3'"$&10%&/04"13&4&/5"3

"MÏN EPT NÏUPEPT BCTUSBUPT  IÈ VN PVUSP QBESÍP OBT


JOUFSGBDFT 4F OFDFTTÈSJP  QPEFNPT EFGJOJS BUSJCVUPT OBT
JOUFSGBDFT FFMFTTFNQSFTFSÍPQÞCMJDPT FTUÈUJDPTFDPOTUBOUFT
&TUÈUJDP KÈ TBCFNPT P RVF Ï  QÞCMJDPT WFSFNPT OB QBSUF EF
WJTJCJMJEBEFT1PEFNPTFOUÍPBQFOBTFYQMJDBSPDPOTUBOUFT

2VBOEPVNBUSJCVUPÏDPOTUBOUFTJHOJGJDBRVFTFVWBMPSOÍP
NVEB4FVWBMPSJOJDJBMEFWFTFSEFGJOJEPOPNPNFOUPEFTVB
DSJBÎÍP PV OP DPOTUSVUPS  F OÍP NVEBSÈ NBJT EVSBOUF B
FYFDVÎÍP EB BQMJDBÎÍP " MJOHVBHFN C  KÈ EJTQPOJCJMJ[B FTTF
SFDVSTP CBTUBTFMFNCSBSEP const &N Java PFRVJWBMFOUF
ÏBQBMBWSB final F FN C# BQBMBWSB readonly 

2VBOEPGPJFYQMJDBEPPDPODFJUPEFIFSBOÎB WJNPTRVF Java F


C# OÍP EJTQPOJCJMJ[BWBN B IFSBOÎB NÞMUJQMB &OUSFUBOUP  FN
SFMBÎÍP ËT JOUFSGBDFT  FTUBT MJOHVBHFOT QFSNJUFN JNQMFNFOUBÎÜFT
NÞMUJQMBT 0V TFKB  VNB DMBTTF QPEF JNQMFNFOUBS NBJT EF VNB
JOUFSGBDF F  QBSB JTTP  CBTUB TFQBSÈMBT QPS ,  WÓSHVMB  7FKB VN
FYFNQMPHFOÏSJDP
//Java
interface IUm {

...

interface IDois {

...

6.3 A INTERFACE 121


class Classe1 implements IUm, IDois {

...

//C#
interface IUm
{

...

interface IDois
{

...

class Classe1 : IUm, IDois {

...

5BNCÏN RVBOEP GPJ FYQMJDBEP IFSBOÎB  GPJ EJUP RVF  FNCPSB


FTUBT MJOHVBHFOT OÍP EJTQPOJCJMJ[BTTFN B IFSBOÎB NÞMUJQMB  FSB
EJTQPOJCJMJ[BEP VN NFDBOJTNP BMUFSOBUJWP &TTF NFDBOJTNP Ï
KVTUBNFOUF B JOUFSGBDF $PN FMB  QPEFNPT UBNCÏN EFGJOJS UJQPT F
TVCUJQPT"EJGFSFOÎBÏRVFOBIFSBOÎBQPEFNPTSFVUJMJ[BSNÏUPEPT
DPN DPNQPSUBNFOUPT EFGJOJEPT  KÈ OB JOUFSGBDF OPT MJNJUBNPT B
BQFOBTBTBTTJOBUVSBTEPTNÏUPEPT QPJTDPNPGPJEJUP QPSQBESÍP
UPEPTPTNÏUPEPTEFVNBJOUFSGBDFEFWFNTFSBCTUSBUPT.BTNFTNP
BTTJN BJOEBUFNPTBEFGJOJÎÍPEFTVCUJQPT"TFHVJS WFKBNBJTVN
FYFNQMP HFOÏSJDP EF DPNP NFTDMBS IFSBOÎB EF DMBTTFT F
JNQMFNFOUBÎÍP EF JOUFSGBDFT  QBSB BTTJN FNVMBS VNB IFSBOÎB
NÞMUJQMBFN Java F C# 
//Java
class Classe1 extends Classe0 implements IUm, IDois {

122 6.3 A INTERFACE


...

//C#
class Classe1 : CLasse0, IUm, IDois {

...

3&46.*/%0
'PSBNNVJUPTDPODFJUPT4PNBOEPTFBPTEPDBQÓUVMPBOUFSJPS
GPSBNWJTUPTBUÏBHPSBNBJTEFDPODFJUPTQBSBDSJBSUVEPPRVFGPS
QSFDJTP QBSB TF USBCBMIBS DPN B 0SJFOUBÎÍP B 0CKFUPT &OUSFUBOUP
BJOEBFYJTUFNNBJTBMHVOT4FTPNFOUFPTDPODFJUPTBUÏBHPSBWJTUPT
KÈ TÍP TVGJDJFOUFT EF FNCBSBMIBS P SBDJPDÓOJP  JNBHJOF PT DØEJHPT
HFSBEPT

&ÏKVTUBNFOUFQBSBFWJUBSFTTFFNCBSBMIBNFOUPEFSBDJPDÓOJP
F  QSJODJQBMNFOUF  EF DØEJHP  RVF PT QSØYJNPT F GJOBJT DPODFJUPT
FYJTUFN7BNPTMÈ FTUÈRVBTFBDBCBOEP

6.4 RESUMINDO 123


CAPÍTULO 7

04$0/$&*504
03("/*;"$*0/"*4

0T DPODFJUPT PSHBOJ[BDJPOBJT TÍP SFTQPOTÈWFJT QPS BHMVUJOBS


DMBTTFTRVFSFQSFTFOUBNDPODFJUPTTJNJMBSFT BTTJNDPNPDMBTTFTRVF
DPNQBSUJMIBNBTNFTNBTGJOBMJEBEFT"MÏNEJTUP UBNCÏNMJNJUBN
BDFTTPTBNFNCSPTEBTDMBTTFT BTTJNPSHBOJ[BOEPBVUJMJ[BÎÍPEFMFT
EFOUSPEPDØEJHP"TFHVJS TFSÈWJTUPPRVFTÍPFQBSBRVFTFSWFNPT
QBDPUFTFWJTJCJMJEBEFT

1"$05&4
² DPNVN TVSHJS B TFHVJOUF TJUVBÎÍP P TJTUFNB UFSÈ EF[FOBT EF
DMBTTFT  RVF SFQSFTFOUBSÍP PT DPODFJUPT EP EPNÓOJP EB BQMJDBÎÍP
DPNP DMBTTFT VUJMJUÈSJBT  DMBTTFT EF BDFTTP B CBODPT EF EBEPT  FOUSF
PVUSPT UJQPT QPTTÓWFJT 1PSÏN  TF TJNQMFTNFOUF EFJYBSNPT UPEBT
FTUBT KVOUBT  GJDBSÈ EJGÓDJM EF BDIBS VNB DMBTTF RVBOEP EFTFKBEP "
NJTUVSBEFDMBTTFTDPNGJOBMJEBEFTFDPODFJUPTEJGFSFOUFTEJGJDVMUBB
PSHBOJ[BÎÍPFQFTRVJTB²QBSBJTTPRVFFYJTUFNPTQBDPUFT

6N QBDPUF Ï VNB PSHBOJ[BÎÍP GÓTJDB PV MØHJDB DSJBEB QBSB


TFQBSBS DMBTTFT DPN SFTQPOTBCJMJEBEFT EJTUJOUBT $PN JTTP  FTQFSBTF
RVFBBQMJDBÎÍPGJRVFNBJTPSHBOJ[BEBFTFKBQPTTÓWFMTFQBSBSDMBTTFT
EFGJOBMJEBEFTFSFQSFTFOUBUJWJEBEFTEJGFSFOUFT

5BOUP Java RVBOUP C# EJTQPOJCJMJ[BNQBDPUFTQBSBPSHBOJ[BS


BQMJDBÎÜFT 1PSÏN  B GPSNB DPNP DBEB VNB EFMBT JNQMFNFOUB UBM

124 7 OS CONCEITOS ORGANIZACIONAIS


DPODFJUP Ï EJGFSFOUF " TFHVJS TFSÈ WJTUP  JOJDJBMNFOUF  DPNP DSJBS
QBDPUFTFN Java 
//Java
package entidades;

abstract class Medico extends Funcionario {

...

package entidades;

class Obstetra extends Medico {

...

package integracaoMinisterio;

interface IDemonstrativoOperacional {

...

package integracaoMinisterio;

class TransmissaoDadosMinisterio implements IDemonstrativoOperacio


nal {

...

0DØEJHPBOUFSJPSNFOUFBQSFTFOUBEPNPTUSBVNBOPWBQBMBWSB
package ²KVTUBNFOUFFMBRVFDSJBQBDPUFTFN Java "PVTBSNPT
FTUB QBMBWSB  P Java  DSJB VNB QBTUB OP TJTUFNB EF BSRVJWPT EP
DPNQVUBEPS DPN P JOUVJUP EF KVOUBS BT DMBTTFT RVF QPTTVBN
SFQSFTFOUBUJWJEBEFT TFNFMIBOUFT 1BSB QPTTJCJMJUBS JTUP  DBEB DMBTTF
EFWF EFDMBSBS B EFGJOJÎÍP EF QBDPUF EF GPSNB JHVBM  DPNP GPJ GFJUP
OBTDMBTTFTEPQBDPUFEFFOUJEBEFT package entidades 

7.1 PACOTES 125


$BTPPVUSBTDMBTTFTQSFDJTFNGJDBSFNQBDPUFTEJGFSFOUFTEFWJEP
BSFQSFTFOUBUJWJEBEFTEJGFSFOUFT BEFDMBSBÎÍPEPQBDPUFEFWFNVEBS
FNDBEBTJUVBÎÍP DPNPGPJGFJUPOBTDMBTTFTEFJOUFHSBÎÍP package
integracaoMinisterio  1PS GJN  B GJHVSB TFHVJOUF NPTUSB DPNP
GJDBNFTUBTQBTUBT QBDPUFT OPFDMJQTFFOPTJTUFNBEFBSRVJWPT

'JHVSB1BDPUFTFN+BWB

$BTP QSFDJTFNPT DSJBS QBDPUFT EFOUSP EF QBDPUFT  OP DBTP


TVCQBDPUFT FTUFTEFWFNTFSTFQBSBEPTQPS .  QPOUP  /FTUF DBTP
GJDBSJB package integracaoMinisterio.saude  package
integracaoMinisterio.fazenda  &N SFMBÎÍP Ë EJTQPTJÎÍP EFTUFT
TVCQBDPUFT OP TJTUFNB EF BSRVJWPT  TFSJB TJNJMBS Ë GJHVSB KÈ
BQSFTFOUBEB  TØ RVF BHPSB FYJTUJSJBN QBTUBT EFOUSP EF QBTUBT
TVCQBTUBT FEFOUSPEFTUFTBSRVJWPT .java 

126 7.1 PACOTES


&9*45&6.1"%3°01"3""%&'*/*±°0%&/0.&4%041"$05&4

4JN  DMBSP $BEB MJOHVBHFN UFN TFV QBESÍP &N Java  P


QBESÍP Ï B 63- EB FNQSFTB  EF USÈT QBSB B GSFOUF  RVF FTUÈ
EFTFOWPMWFOEPBBQMJDBÎÍP-PHPBQØTJTUP POPNFEPQSPKFUP
1PSGJN PTSFBJTQBDPUFTRVFTFEFTFKBDSJBS

-FWBOEP FN DPOTJEFSBÎÍP FTUF MJWSP EF 0SJFOUBÎÍP B 0CKFUPT


QVCMJDBEP QFMB $BTB EP $ØEJHP F RVF QPTTVJ WÈSJPT DBQÓUVMPT
FMF GJDBSJB BTTJN package
br.com.casaDoCodigo.livroOO.capitulo1, package
br.com.casaDoCodigo.livroOO.capitulo2  F BTTJN QPS
EJBOUF

"HPSB TFSÈ WJTUP DPNP DSJBS QBDPUFT FN C#  DIBNBEPT EF


OBNFTQBDFT"PDPOUSÈSJPEF Java  C# OÍPPCSJHBUPSJBNFOUFDSJB
QBTUBT F TVCQBTUBT OP TJTUFNB EF BSRVJWPT RVBOEP EFDMBSBNPT
OBNFTQBDFT /FTUB MJOHVBHFN  B TFQBSBÎÍP EF DMBTTFT QPEF PDPSSFS
TPNFOUF EF GPSNB MØHJDB F OÍP GÓTJDB .BT TF GPS QSFDJTP  QBTUBT F
TVCQBTUBT QPEFN TFS DSJBEBT 0 DØEJHP B TFHVJS JMVTUSB DPNP
EFDMBSBSOBNFTQBDFT
//C#
namespace entidades
{

abstract class Medico : Funcionario {

...

}
}

namespace entidades
{

7.1 PACOTES 127


class Obstetra : Medico {

...

}
}

namespace integracaoMinisterio;
{

interface IDemonstrativoOperacional {

...

}
}

namespace integracaoMinisterio
{

class TransmissaoDadosMinisterio : IDemonstrativoOperacional {

...

}
}

&TTB DPEJGJDBÎÍP BQSFTFOUB B QBMBWSB namespace  EP C#


SFTQPOTÈWFMQPSDSJBSPTFTQBÎPTEFOPNFTMØHJDPTQBSBBTFQBSBÎÍP
EF DMBTTFT EF GJOBMJEBEFT EJGFSFOUFT *OJDJBMNFOUF  FTUB EFDMBSBÎÍP
OÍP DSJBSÈ QBTUBT OP TJTUFNB EF BSRVJWPT  NBT JOUFSOBNFOUF B
MJOHVBHFNMFWBSÈFNDPOTJEFSBÎÍPRVFBTDMBTTFTFTUÍPFNQBDPUFT
EJGFSFOUFT1PSÏN TFBDSJBÎÍPEFQBTUBTOPTJTUFNBEFBSRVJWPGPS
OFDFTTÈSJB VNDBNJOIPBMUFSOBUJWPEFWFTFSVUJMJ[BEP"TTJN EFWF
TF DSJBS EJSFUBNFOUF VNB QBTUB WJB P 7JTVBM 4UVEJP  QBSB RVF FTUB
GFSSBNFOUB DSJF VNB EFDMBSBÎÍP EF OBNFTQBDF QBSB FTTB QBTUB "
GJHVSBBTFHVJSJMVTUSBJTTP

128 7.1 PACOTES


'JHVSB/BNFTQDBDFTFN$

&NCPSBBJNBHFNEFJYFDMBSPRVFPOPNFEBOBNFTQBDFUFOIB
GJDBEP JHVBM BP EB QBTUB DSJBEB  BJOEB Ï QPTTÓWFM  TF OFDFTTÈSJP
BMUFSBSPOPNFEBOBNFTQBDFTFNBMUFSBSPOPNFEBQBTUB*TTPTØ
SFGPSÎBBJEFJBEFRVF C# QPTTJCJMJUBVNBPSHBOJ[BÎÍPMØHJDBFOÍP
GÓTJDBEBTDMBTTFT

1BSBGJOBMJ[BS BTTJNDPNPPTQBDPUFTEF Java BTOBNFTQBDFT


EF C#  QPTTJCJMJUBN TVCOBNFTQBDFT  VUJMJ[BOEP UBNCÏN P .
QPOUP  "MHVOT FYFNQMPT TFSJBN namespace
integracaoMinisterio.saude  namespace
integracaoMinisterio.fazenda FBTTJNQPSEJBOUF

7.1 PACOTES 129


&44" 4&1"3"±°0 &. 1"$05&4 3&"-.&/5& 03("/*;" " $"4" ."4
26"/%04&1"3"%"4 $0.0"4$-"44&44&&/9&3(".

3FBMNFOUFTFOÍPUJWFTTFVNBGPSNBEFQPTTJCJMJUBSRVFDMBTTFT
EF QBDPUFT F OBNFTQBDFT EJGFSFOUF TF FOYFSHBTTFN  EF OBEB
BEJBOUBSJBBPSHBOJ[BÎÍP&OUÍP EFWFNPTJOGPSNBSPOEFDBEB
DMBTTFTFFODPOUSB QBSBBTTJNFMBTTFFOYFSHBSFN

&N Java  B QBMBWSB VUJMJ[BEB Ï B import  +È FN C#  Ï B


using  " TFHVJS  WFKB B DMBTTF Medico  TFOEP FOYFSHBEB
EFOUSP EB DMBTTF TransmissaoDadosMinisterio  RVF FTUÍP
FNQBDPUFTEJGFSFOUFT
//Java
package integracaoMinisterio;

import entidades.Medico;

class TransmissaoDadosMinisterio implements IDemonstrativoOpe


racional {

...

//C#
using entidades.Medico;

namespace integracaoMinisterio
{

class TransmissaoDadosMinisterio : IDemonstrativoOperacion


al {

...

}
}

130 7.1 PACOTES


7*4*#*-*%"%&4
5BNCÏNDIBNBEBTEF.PEJGJDBEPSFTEF"DFTTP BTWJTJCJMJEBEFT
UÐN DPNP GJOBMJEBEF DPOUSPMBS P BDFTTP NBOJQVMBÎÍP  EF DMBTTFT
BUSJCVUPTFNÏUPEPT

6N NPEJGJDBEPS EF BDFTTP UFN DPNP GJOBMJEBEF EFUFSNJOBS BUÏ


RVF QPOUP VNB DMBTTF  BUSJCVUP PV NÏUPEP QPEF TFS VUJMJ[BEP "
VUJMJ[BÎÍP EF NPEJGJDBEPSFT EF BDFTTP Ï GVOEBNFOUBM QBSB P VTP
FGFUJWPEB0SJFOUBÎÍPB0CKFUPT"MHVNBTCPBTQSÈUJDBTFDPODFJUPTTØ
TÍPBUJOHJEPTDPNPVTPDPSSFUPTEFMFT

" 00 QSPWÐ  WJTJCJMJEBEFT  RVF TÍP QSJWBEB  QSPUFHJEB F


QÞCMJDB TFOEPSFTQFDUJWBNFOUFBTQBMBWSBT private  protected
F public  VUJMJ[BEBT QBSB JOEJDBS UBJT WJTJCJMJEBEFT 5BOUP Java
DPNP C#  VTBN FTUBT QBMBWSBT SFTFSWBEBT 1PSÏN  OFN UPEBT BT
MJOHVBHFOT PSJFOUBEBT B PCKFUP JNQMFNFOUBN DPNQMFUBNFOUF P
DPODFJUPEFWJTJCJMJEBEF"MJOHVBHFN Python ÏVNFYFNQMPEJTUP
QPJTOFMB QPSFYFNQMP UPEPTPTBUSJCVUPTTÍPQÞCMJDPT

"OUFSJPSNFOUF  KÈ IBWJB TJEP EJUP RVF P DPODFJUP EF DMBTTFT


JOUFSOBT OÍP TFSJB FYQMPSBEP OFTUF MJWSP  QPS TFS VN QPVDP NBJT
BWBOÎBEP %FWJEP B JTUP  FNCPSB UPEBT BT WJTJCJMJEBEFT QPTTBN TFS
BQMJDBEBT B DMBTTFT  BQFOBT B WJTJCJMJEBEF QÞCMJDB TFSÈ VTBEB QBSB
DMBTTFT " TFHVJS  TFSÈ EFGJOJEP DBEB VN EFTUFT NPEJGJDBEPSFT EF
BDFTTP F FYFNQMPT TFSÍP FYJCJEPT QBSB UPSOBS NBJT DMBSP TVBT
BQMJDBCJMJEBEFT

$PNFÎBOEPQFMBWJTJCJMJEBEFNBJTSFTUSJUJWB OFTUFDBTPBQSJWBEB
private  &TUB WJTJCJMJEBEF EFGJOF RVF BUSJCVUPT F NÏUPEPT TØ
QPEFNTFSNBOJQVMBEPTBQFOBTOPMPDBMEFTVBEFGJOJÎÍP0VTFKB TF
NFNCSPTGPSFNEFGJOJEPTDPNFTTBWJTJCJMJEBEF FMFTTØQPEFSÍPTFS
NBOJQVMBEPTEFOUSPEBDMBTTFPOEFGPSBNEFGJOJEPT"TFHVJS WFKB
DPNPVUJMJ[BSFTUBWJTJCJMJEBEFFTFVTFGFJUPT

7.2 VISIBILIDADES 131


public class Beneficiario {

private String nome;


private Date dataNascimento
private String tipoBeneficiario;
private Endereco endereco;

// gets/sets

private void idade() {


//cálculo da idade a partir da data de nascimento.
}
}

public class TestePrivate {

private Beneficiario beneficiario;

//1
String nome = beneficiario.nome;

//2
beneficiario.idade();
}

//C#
public class Beneficiario
{
private String nome;
Date dataNascimento
private String tipoBeneficiario;
Endereco endereco;

// gets/sets

private void Idade()


{
//cálculo da idade a partir da data de nascimento.
}
}

public class TestePrivate


{

private Beneficiario beneficiario;

//1
String nome = beneficiario.nome;

132 7.2 VISIBILIDADES


//2
beneficiario.Idade();
}

0TDØEJHPTBQSFTFOUBEPTBQPVDPBQSFTFOUBSJBNFSSPTFNF
  QPJT DPNP PT BUSJCVUPT F NÏUPEPT GPSBN EFGJOJEPT DPNP
private  TØ TÍP BDFTTÓWFJT EFOUSP EB DMBTTF Beneficiario  /B
DMBTTF TestePrivate ÏJNQPTTÓWFMBDFTTBSFTUFT&NSFMBÎÍPBPVTP
EF private FN C# BMHPNBJTQPEFTFSEJUPTFOÍPTFEFGJOJSVN
BUSJCVUP DPNP private  EF GPSNB FYQMJDJUB DPNP FN private
String nome  QPS QBESÍP B MJOHVBHFN BTTVNF RVF FTUB Ï B
WJTJCJMJEBEF EFTFKBEB *TUP PDPSSF FN Endereco endereco  QPS
FYFNQMP +È FN Java  DBTP TF EFTFKF VN BUSJCVUP private  Ï
OFDFTTÈSJPGB[ÐMPTFNQSFEFGPSNBFYQMJDJUB

&45" 7*4*#*-*%"%& ² .6*50 3&453*5*7"&-" 3&"-.&/5& 4&37& 1"3"


"-(6."$0*4"

/ÍPTØTFSWF DPNPÏBQSJODJQBMWJTJCJMJEBEF²DPNPVTPEFMB
RVF BMHVOT EPT QSJODJQBJT GVOEBNFOUPT EB 0SJFOUBÎÍP B
0CKFUPTTÍPJNQMFNFOUBEPT

6."0653"0#4&37"±°0

&NCPSB  QBSB FYFNQMJGJDBS P VTP EP private  UFOIBTF


UFOUBEP BDFTTBS EJSFUBNFOUF VN BUSJCVUP  OB WFSEBEF JTTP Ï
QFSNBOFOUFNFOUFQSPJCJEPOPNVOEPEB00.FTNPTFOEP
QPTTÓWFM  OÍP EFWF TFS GFJUP  QPJT OÍP Ï VNB CPB QSÈUJDB .BJT
VNBWF[ WFSFNPTNBJTTPCSFJTTPOPDBQÓUVMP#PBTQSÈUJDBT
OPVTPEB0SJFOUBÎÍPB0CKFUPT

7.2 VISIBILIDADES 133


"HPSBÏBWF[EBWJTJCJMJEBEFJOUFSNFEJÈSJB OPDBTPBQSPUFHJEB
protected  &TUB WJTJCJMJEBEF EFGJOF RVF BUSJCVUPT F NÏUPEPT TØ
QPEFN TFS NBOJQVMBEPT BQFOBT OP MPDBM EF TVB EFGJOJÎÍP F OBT
DMBTTFT RVF IFSEBN EB DMBTTF POEF GPSBN EFGJOJEPT 0V TFKB  TF
GPSFNEFGJOJEPTNFNCSPTDPNFTTBWJTJCJMJEBEF FMFTTØQPEFSÍPTFS
NBOJQVMBEPTEFOUSPEBDMBTTFFOBTTVCDMBTTFTEFTUBDMBTTF"TFHVJS
WFKBDPNPVUJMJ[BSFTUBWJTJCJMJEBEFFTFVTFGFJUPT
//Java

package entidades;

public class Funcionario {

protected String nome;

protected void metodo1() {


// implementação desejada
}
}

package entidades;

public class Medico extends Funcionario {

private void metodo() {

//1
String texto = nome;

//2
metodo1();
}
}

package entidades;

public class Paciente {

private void metodo() {

//3
String texto = nome;

//4

134 7.2 VISIBILIDADES


metodo1();

}
}

//C#
namespace entidades
{
public class Funcionario
{
protected String nome;

protected void Metodo1()


{
// implementação desejada
}
}
}

namespace entidades
{
public class Medico : Funcionario {

private void Metodo() {

//1
String texto = nome;

//2
Metodo1();
}
}
}

namespace entidades
{
public class Paciente
{

private void metodo()


{
//3
String texto = nome;

//4
metodo1();
}
}
}

7.2 VISIBILIDADES 135


/P DØEJHP FYQPTUP  BT NBSDBÎÜFT //1  F //2  OB DMBTTF
Medico  TÍP BQSFTFOUBEBT  F OFMBT Ï QPTTÓWFM BDFTTBS P BUSJCVUP
nome  F P NÏUPEP metodo1()  SFTQFDUJWBNFOUF *TTP QPSRVF B
DMBTTF Medico ÏVNBTVCDMBTTFEF Funcionario FFMBEFGJOJVFTUFT
NFNCSPTDPNP protected &OUSFUBOUP BDMBTTF Paciente  RVF
OÍP Ï VNB DMBTTF GJMIB EF Funcionario  BQSFTFOUBSÈ FSSPT OBT
NBSDBÎÜFT //3 F //4 

1BSB GJOBMJ[BS  BHPSB Ï B WF[ EB WJTJCJMJEBEF NFOPT SFTUSJUJWB  B


QÞCMJDB public  5PEPT PT NFNCSPT EFGJOJEPT DPN FTUB
WJTJCJMJEBEFTÍPBDFTTÓWFJTFNRVBMRVFSMVHBS JOEFQFOEFOUFNFOUFEF
RVBMRVFS SFMBDJPOBNFOUP FOUSF BT DMBTTFT ® QSJNFJSB WJTUB  QPEF
QBSFDFSBNFMIPSWJTJCJMJEBEF.BTOBWFSEBEFOÍPÏ5PSOBSUPEPT
PT NFNCSPT EF VNB DMBTTF QÞCMJDPT QPEF QPTTJCJMJUBS BDFTTPT
JOEFWJEPT EF BUSJCVUPT F VTP JOEFWJEP EF NÏUPEPT 0 VTP EB
WJTJCJMJEBEF public  EFWF TFS GFJUP DPN DVJEBEP QBSB OÍP GFSJS
BMHVOT EPT QSFDFJUPT EB 0SJFOUBÎÍP B 0CKFUPT " TFHVJS  WFKB PT
DØEJHPTQBSBFYFNQMJGJDBSTFVVTP
public class Endereco {

public String logradouro;


public int numero;
public String bairro;

public String getLogradouro() {


return this.logradouro;
}

public void setLogradouro(String logradouro) {


this.logradouro - = logradouro;
}

//demais get/set
}

//C#
public class Endereco
{

public String logradouro;

136 7.2 VISIBILIDADES


public int numero;
public String bairro;

public String Logradouro


{
get { return logradouro; }
set { logradouro = value; }
}

//demais get/set
}

1PS TFS VNB WJTJCJMJEBEF EF VTP MJWSF  GPJ NPTUSBEB BQFOBT B
FYFNQMJGJDBÎÍPEBEFGJOJÎÍP/ÍPÏOFDFTTÈSJPFYFNQMJGJDBSTFVVTP
KÈRVF QPSTFSEFBDFTTPMJWSF CBTUBVUJMJ[ÈMPEBGPSNBRVFKÈWJOIB
TFOEP FYQPTUB OBT PVUSBT WJTJCJMJEBEFT 4Ø RVF BHPSB OFOIVN FSSP
PDPSSFSÈ

& "(03"  26"- %"4  7*4*#*-*%"%&4 %&70 &4$0-)&3 1"3" .&64


.&.#304&$-"44&4

/BWFSEBEF OÍPTFEFWFFTDPMIFSVNB NBTTJNVTBSBTUSÐTBP


NFTNP UFNQP &N DBEB TJUVBÎÍP  VN NPEJGJDBEPS EF BDFTTP
EJGFSFOUFEFWFTFSVUJMJ[BEP

7.2 VISIBILIDADES 137


3&"-.&/5& 4» &9*45&. &44"4  7*4*#*-*%"%&4  +« 067* '"-"3 %&
0653"4

1FMB0SJFOUBÎÍPB0CKFUPT TÍPTPNFOUFFTTFTNPEJGJDBEPSFT
EF BDFTTP &OUSFUBOUP  BMHVNBT MJOHVBHFOT QSPWFFN
WJTJCJMJEBEFT B NBJT .BT FTUBT OÍP GB[FN QBSUF EB UFPSJB EB
001PSFYFNQMP FN Java  FYJTUF B WJTJCJMJEBEF default
FN RVF NFNCSPT F DMBTTFT EFGJOJEPT DPN FTUB QPEFN TFS
VTBEPTQPSDMBTTFTEFOUSPEFVNNFTNPQBDPUF JOEFQFOEFOUF
EF RVBMRVFS SFMBDJPOBNFOUP FOUSF FMBT +È C#  QPTTVJ B
internal RVFQPTTJCJMJUBRVFNFNCSPTFDMBTTFTQPTTBNTFS
VUJMJ[BEPT FN RVBMRVFS MVHBS EP QSPKFUP  NBT MJNJUB P VTP
EFTUFTBQFOBTBPQSPKFUPDPSSFOUF

0VUSBTMJOHVBHFOTEFGJOFNPVUSBTWJTJCJMJEBEFTEFBDPSEPDPN
B TVB OFDFTTJEBEF .BT P GBUP Ï RVF FTUBT WJTJCJMJEBEFT
QSPQSJFUÈSJBTOÍPQFSUFODFNËUFPSJBEB0SJFOUBÎÍPB0CKFUPT
F  ËT WF[FT  BUÏ WÍP DPOUSB BMHVOT EF TFVT QSFDFJUPT 4F
SFBMNFOUFQSFDJTBSVTÈMBT GBÎBDPNDVJEBEP

1PSGJN OPDBQÓUVMP0TDPODFJUPTSFMBDJPOBJTIBWJBVNBDBJYB
DPNPTFHVJOUFUÓUVMP/BIFSBOÎB VNBTVCDMBTTFUFNBDFTTPBUPEPT
PTNFNCSPTEBTVQFSDMBTTF "SFTQPTUBFSB4JNFOÍP"HPSBRVF
BT WJTJCJMJEBEFT GPSBN BQSFTFOUBEBT  QPEFNPT SFTQPOEFS NFMIPS B
FTUBQFSHVOUB

1BSB NFNCSPT QSJWBEPT  OFOIVN BDFTTP EJSFUP TFSÈ QPTTÓWFM


1PSÏN PTBUSJCVUPTQSJWBEPTBJOEBGBSÍPQBSUFEFFTUBEPEPTPCKFUPT
DSJBEPTBQBSUJSEBTVCDMBTTF BGJOBM BFTUSVUVSBEFEBEPTÏSFVTBEB
OB IFSBOÎB /FTUF DBTP  TØ OÍP QPEFSÈ TFS BDFTTBEB EJSFUBNFOUF
1BSB NFNCSPT QSPUFHJEPT F QÞCMJDPT  BT QSØQSJBT FYQMJDBÎÜFT
BOUFSJPSFTKÈTÍPTVGJDJFOUFT

138 7.2 VISIBILIDADES


3&46.*/%0
"QØT FTTFT RVBUSP DBQÓUVMPT SFDIFBEPT EF DPODFJUPT F
FYFNQMJGJDBÎÜFT  Ï JNQPSUBOUF DPMPDÈMPT FN QSÈUJDB QBSB VNB
NFMIPSGJYBÎÍP%FWJEPBJTUP PQSØYJNPDBQÓUVMPBQSFTFOUBSÈVNB
JNQMFNFOUBÎÍPDPNQMFUB BUÏDFSUPQPOUP FDPNFOUBEBEPFYFNQMP
EPIPTQJUBM RVFWJOIBTFOEPVUJMJ[BEPOPTDBQÓUVMPTBOUFSJPSFT

7.3 RESUMINDO 139


CAPÍTULO 8

"65*-*;"±°0

*OGFMJ[NFOUF  TPNFOUF UFS DPOIFDJNFOUP EF UPEPT PT DPODFJUPT


BQSFTFOUBEPT BUÏ BHPSB OÍP Ï TVGJDJFOUF QBSB VUJMJ[BS EF GPSNB
DPSSFUB B 0SJFOUBÎÍP B 0CKFUPT "OUFT EF DPNFÎBS B QSPHSBNBS B
BQMJDBÎÍPEFTFKBEB ÏQSFDJTPQFOTBSFNDPNPBQMJDBSDBEBVNEPT
DPODFJUPT OPDBTP SFBMJ[BSPRVFTFDIBNBEFNPEFMBHFNPSJFOUBEB
BPCKFUPT

/FTUF QSPDFTTP  Ï JEFOUJGJDBEP POEF QPEFNPT BQMJDBS DBEB VN


EPT DPODFJUPT 1BSB JTUP  EFWFNPT GB[FS VN FTUVEP EFUBMIBEP EP
EPNÓOJPEBBQMJDBÎÍPQBSBBTTJNOÍPNFUFSPTQÏTQFMBTNÍPT PV
TFKB UPNBSEFDJTÜFTFSSBEBTRVFWFOIBNBQSFKVEJDBSBRVBMJEBEFEB
BQMJDBÎÍP FN NPNFOUPT GVUVSPT /FTUF DBQÓUVMP  SFWJTJUBSFNPT P
FYFNQMP EP IPTQJUBM RVF WJOIB TFOEP VTBEP OPT BOUFSJPSFT .BT
EFTUBWF[TFSÈGFJUBVNBJNQMFNFOUBÎÍPNBJTDPNQMFUBFGVODJPOBM
EFTUF FYFNQMP $PNP KÈ WÓOIBNPT GB[FOEP  FTUB JNQMFNFOUBÎÍP
NBJTDPNQMFUBTFSÈGFJUBFN Java F C# 

$0-0$"/%0".°0/"."44"
+È WJNPT RVF  NVJUP NBJT EP RVF VNB GPSNB EF QSPHSBNBS  B
0SJFOUBÎÍP B 0CKFUP Ï VNB GPSNB EF NPEFMBS NFMIPS VNB
SFQSFTFOUBÎÍPNBJTSFBMJTUBEBTOFDFTTJEBEFTEFTJTUFNBTBGJOT$PN
JTTP VNEPTQSJNFJSPTQBTTPTRVFEFWFNPTSFBMJ[BSRVBOEPWBNPT
JOJDJBS VN QSPKFUP PSJFOUBEP B PCKFUPT Ï FOUFOEFS P EPNÓOJP EP
TJTUFNBRVFTFEFTFKBEFTFOWPMWFS²BQBSUJSEFTUFQSPDFTTPRVFTFSÈ

140 8 A UTILIZAÇÃO
QPTTÓWFM JEFOUJGJDBS BT FOUJEBEFT PCKFUPT DPN TFVT BUSJCVUPT F
NÏUPEPT RVFPTJTUFNBNBOJQVMBSÈ

4PNFOUF BQØT FTTF SFDPOIFDJNFOUP EF DBNQP Ï RVF EFWFNPT


JOJDJBSPQSPDFTTPEFQSPHSBNBÎÍP#BTFBEPOJTUP BTTFÎÜFTBTFHVJS
JOJDJBSÍPPQSPDFTTPEFJNFSTÍPOPEPNÓOJPEPTJTUFNBEPIPTQJUBM
RVFTFSÈVUJMJ[BEP1PTUFSJPSNFOUF FMFTFSÈDPEJGJDBEP

0EPNÓOJPEPTJTUFNBIPTQJUBMBS
$PNP JOGPSNBEP BOUFSJPSNFOUF  P TJTUFNB IPTQJUBMBS TFSÈ
DPNQMFUP ‰ BUÏ DFSUP QPOUP *TTP TJHOJGJDB RVF OÍP TFSÈ SFBMNFOUF
JNQMFNFOUBEP VN TJTUFNB DPNQMFUP  QPJT VN TJTUFNB EFTUF UJQP
QPTTVJ DFOUFOBT EF DMBTTFT 4FSJB JOWJÈWFM FYQPS UPEBT FTUBT OFTUF
MJWSP $PN JTTP  VN TVCDPOKVOUP EFTUF UJQP EF TJTUFNB TFSÈ
NPEFMBEPFJNQMFNFOUBEP&TUFTFSÈTVGJDJFOUFQBSBEFNPOTUSBSBT
BQMJDBÎÜFTEPTDPODFJUPTEB00RVFGPSBNBQSFTFOUBEPTOFTUFMJWSP
0EPNÓOJPEFTUFTJTUFNBÏBQSFTFOUBEPBTFHVJS

8.1 COLOCANDO A MÃO NA MASSA 141


0 TJTUFNB EP IPTQJUBM EFWF QPTTJCJMJUBS B NBOJQVMBÎÍP EF
QBDJFOUFT F NÏEJDPT $BEBTUSBS  BUVBMJ[BS F FYDMVÓMPT EFWF TFS
QPTTÓWFM5BNCÏNEFWFNPTQPEFSNBSDBSFDBODFMBSDPOTVMUBT
FQSPDFEJNFOUPT

0 QBDJFOUF EFWF DPOTFHVJS WJTVBMJ[BS TVBT DPOTVMUBT F PT


NÏEJDPT DPOTVMUBSFN TFVT QSPDFEJNFOUPT 5BOUP B DPOTVMUB
DPNP P QSPDFEJNFOUP UFSÍP VN WBMPS UPUBM  EFQFOEFOEP EP
RVFGPSSFBMJ[BEP0TUJQPTEFQSPDFEJNFOUPTÍPGBSJOHPQMBTUJB
FOFVSPDJSVSHJB

/P QSJNFJSP Ï DPCSBEB VNB DPQBSUJDJQBÎÍP EP QBDJFOUF QBSB


QBHBS PT IPOPSÈSJPT EP QSPDFEJNFOUP /P TFHVOEP  JTUP OÍP
PDPSSF 0 IPTQJUBM EFWF SFQBTTBS PT QSPDFEJNFOUPT SFBMJ[BEPT
BP.JOJTUÏSJPEB4BÞEF

0 CPY GPSOFDF VNB WJTÍP SFTVNJEB EP TJTUFNB RVF TFSÈ


JNQMFNFOUBEP &TUB EFTDSJÎÍP TFSWJSÈ EF HVJB QBSB B NPEFMBHFN F
QSPHSBNBÎÍP (FSBMNFOUF  P EPNÓOJP JOJDJBM OÍP Ï DPNQMFUP P
TVGJDJFOUF  FOUÍP Ï DPNVN BMHVNBT OPWBT OFDFTTJEBEFT TVSHJSFN
EVSBOUF P QSPDFTTP EF EFTFOWPMWJNFOUP  F FTUBT QPEFSÍP TFS
BDPMIJEBT

0QSPDFTTPEFNPEFMBHFN
" EFTDSJÎÍP EP EPNÓOJP EP TJTUFNB EFJYPV DMBSP RVBJT BT
QSJODJQBJT FOUJEBEFT B TFSFN NBOJQVMBEBT NÏEJDP  QBDJFOUF
DPOTVMUBFQSPDFEJNFOUP1PSÏN VNQSPDFEJNFOUP RVFHFSBMNFOUF
ÏUBNCÏNDIBNBEPEFDJSVSHJB BDPOUFDFFNVNBTBMB&OUÍP NBJT
FTTBFOUJEBEFUBNCÏNTFSÈUSBCBMIBEBBTBMB"MÏNEJTUP QBDJFOUFF
NÏEJDPT QPTTVFN VN FOEFSFÎP  MPHP  VNB OPWB FOUJEBEF B TFS
USBCBMIBEB

142 8.1 COLOCANDO A MÃO NA MASSA


1PS GJN  VN NÏEJDP UFN VN DPOKVOUP EF FTQFDJBMJEBEFT &TUBT
TFSÍP MJNJUBEBT B TPNFOUF  4FOEP BTTJN  USÐT OPWBT FOUJEBEFT
TVSHJSBN NFTNPOÍPUFOEPTJEPMJTUBEBTJOJDJBMNFOUFOBEFTDSJÎÍP
&MBTTÍPTVGJDJFOUFTQBSBPJOÓDJPEBNPEFMBHFN

5PEBT FTUBT FOUJEBEFT TFSÍP DPEJGJDBEBT DPNP DMBTTFT  QBSB


QPTUFSJPSNFOUFPCKFUPTTFSFNDSJBEPTBQBSUJSEFMBT&NSFMBÎÍPBP
QBDJFOUFFNÏEJDP BNCPTTÍPQFTTPBT$PNJTTP EFWFNPTDSJBSVNB
DMBTTF BCTUSBUB DIBNBEB Pessoa   RVF TFSÈ VNB TVQFSDMBTTF EF
Paciente F Medico 

"MÏN EJTUP  GPJ EJUP RVF FYJTUJBN EPJT UJQPT EF QSPDFEJNFOUPT
GBSJOHPQMBTUJB F OFVSPDJSVSHJB $PN JTTP  NBJT VNB TVQFSDMBTTF
UBNCÏN BCTUSBUB QPEF TFS DSJBEB Procedimento  "T TVCDMBTTFT
EFTUBTFSÍP Faringoplastia F Neurocirurgia "TTJN BIFSBOÎB
TFSÈVUJMJ[BEB/PDPOUFYUPEPQSPDFEJNFOUP TFSÈQPTTÓWFMFYQMPSBS
PQPMJNPSGJTNP

5BOUP NÏEJDP DPNP QBDJFOUF UÐN FOEFSFÎPT &OUÍP


JOJDJBMNFOUF QPEFSÓBNPT QFOTBS FN GB[FS VNB BTTPDJBÎÍP EF
FOEFSFÎPDPNFMFT1PSÏN OPUBTFRVFBNCPTTÍPQFTTPBT%FWJEPB
JTUP  B NFMIPS GPSNB EF NPEFMBS FTTB BTTPDJBÎÍP Ï DPMPDÈMB OB
TVQFSDMBTTF  OP DBTP Pessoa  $PNP NÏEJDP F QBDJFOUF IFSEBN
EFTUBDMBTTF TFSÈGFJUPVNSFBQSPWFJUBNFOUPEFTTBBTTPDJBÎÍP

"MÏN EFTUB BTTPDJBÎÍP  FYJTUFN PVUSBT 6N QSPDFEJNFOUP UFN


VNBTBMB VNBDPOTVMUBÏEFVNQBDJFOUFDPNVNNÏEJDP‰OFTUF
DBTP TFSÍPEVBTBTTPDJBÎÜFTRVFBDMBTTF Consulta QPTTVJSÈ

1PS GJN  Ï QSFDJTP UFSNPT VNB JOUFSGBDF QBSB P IPTQJUBM


DPOTFHVJS USBOTNJUJS PT EBEPT QBSB P .JOJTUÏSJP EB 4BÞEF "QØT
UPEPFTUFQSPDFTTP BGJHVSBBTFHVJSEFNPOTUSBBNPEFMBHFNJOJDJBM

8.1 COLOCANDO A MÃO NA MASSA 143


'JHVSB.PEFMBHFN

"QØTPQSPDFTTPEFSFDPOIFDJNFOUPEBTFOUJEBEFT ÏBIPSBEF
EFGJOJS PT TFVT BUSJCVUPT F NÏUPEPT 0MIBOEP QBSB BT FOUJEBEFT
WÈSJPTBUSJCVUPTQPEFNTFSEFGJOJEPT1PSÏN TFSÍPEFGJOJEPTBQFOBT
PTRVFNBJTUFSÍPVUJMJEBEFQBSBPDPOUFYUPEPIPTQJUBMRVFTFEFTFKB
PCUFS"TFHVJS WFKBBMJTUBHFNEPTBUSJCVUPT

Pessoa

- String nome
- Date dataNascimento
- Endereco endereco

Paciente

- String CPF
- Plano plano

Medico

- int CRM
- Especialidade[] especialidades
- double valorHora

Endereco

144 8.1 COLOCANDO A MÃO NA MASSA


- String logradouro
- int numero
- String bairro
- String CEP

Plano

- String nome
- double mensalidade

Consulta

- Paciente paciente
- Medico medico
- Date data
- String receituario
- double valor

Especialidade

- String nome

Procedimento

- Paciente paciente
- Medico[] medicos
- Date data
- Sala sala
- String observacoes
- double valor
- int tempoDuracao

Sala

- String nome

7BMFSFTTBMUBSRVF QPSQBESÍPFCPBQSÈUJDB UPEPTPTBUSJCVUPT

8.1 COLOCANDO A MÃO NA MASSA 145


EFWFN TFS QSJWBEPT /FTUB NPEFMBHFN  FTTB WJTJCJMJEBEF FTUÈ
SFQSFTFOUBEBQFMPPTÓNCPMP -  USBÎP RVFQSFDFEFBEFGJOJÎÍPEF
DBEBBUSJCVUP0VUSPEFUBMIFBTFSFYQMJDBEPÏRVFPTEPJTUJQPTEF
QSPDFEJNFOUPTUÐNPTNFTNPTBUSJCVUPTEBDMBTTF Procedimento 
1PSJTTP FMFTOÍPGPSBNBQSFTFOUBEPTOBMJTUBHFNBOUFSJPS

1BSB GJOBMJ[BS  B JOUFSGBDF DSJBEB Ï BQFOBT QBSB QBESPOJ[BS B


USBOTNJTTÍPEPTEBEPTQBSBP.JOJTUÏSJPEB4BÞEF%FWJEPBJTUP FMB
OÍPQPTTVJBUSJCVUPT"PBUVBMJ[BSBNPEFMBHFN GJDBSJBBTTJN

'JHVSB.PEFMBHFNDPNBUSJCVUPT

"HPSB Ï B WF[ EPT NÏUPEPT "TTJN DPNP PT BUSJCVUPT  PT


NÏUPEPTUBNCÏNQPTTVFNWJTJCJMJEBEFT1PSQBESÍP BNBJPSJBEPT
NÏUPEPT EFWF TFS QÞCMJDB /FTUB NPEFMBHFN  FTTB WJTJCJMJEBEF FTUÈ
SFQSFTFOUBEBQFMPPTÓNCPMP +  NBJT RVFQSFDFEFBEFGJOJÎÍPEF
DBEBNÏUPEP"TFHVJS WFKBBMJTUBHFN

Paciente

+ void cadastrar(Paciente paciente)


+ void alterar(Paciente paciente)
+ void excluir(Paciente paciente)
+ Paciente consultar(String CPF)
+ Paciente[] consultar(String nome, Date

146 8.1 COLOCANDO A MÃO NA MASSA


dataNascimento)

Medico

+ void cadastrar(Medico medico)


+ void alterar(Medico medico)
+ void excluir(Medico medico)
+ Medico consultar(int CRM)
+ Medico[] consultar(String nome)

Consulta

+ void marcar(Medico medico, Paciente


paciente, Date data)
+ void cancelar(Consulta consulta)
+ Consulta[]
pesquisarPorPaciente(Paciente paciente)

Procedimento

+ void marcar(Medico medico, Paciente


paciente, Date data)
+ void cancelar(Procedimento
procedimento)
+ Procedimento[]
pesquisarPorMedico(Medico medico)
+ abstract double caucularTotal()

ITransmissaoDadosMinisterioSaude

+ void gerarDados()

/PUF RVF  OB MJTUBHFN  BMHVNBT DMBTTFT OÍP GPSBN DJUBEBT DPN
TFVT NÏUPEPT *TTP PDPSSF QPSRVF OFN UPEB DMBTTF UFN B NFTNB
JNQPSUÉODJB EFOUSP EP TJTUFNB  DPNP QPS FYFNQMP  Plano  /P
DPOUFYUPEPIPTQJUBM OÍPUFSJBOFDFTTJEBEFEFFYJTUJSVNQMBOPRVF

8.1 COLOCANDO A MÃO NA MASSA 147


OÍP FTUJWFTTF BUSFMBEP B VN QBDJFOUF /FTUF DBTP  BP TF DSJBS P
QBDJFOUF PQMBOPKÈÏDSJBEPKVOUPFBSNB[FOBEPDPNFMF

0NFTNPQSJODÓQJPTFBQMJDBBFOEFSFÎPFFTQFDJBMJEBEF MFWBOEP
FN DPOTJEFSBÎÍP PT EFWJEPT SFMBDJPOBNFOUPT " DMBTTF BCTUSBUB
Pessoa GPJDSJBEBBQFOBTQBSBHFOFSBMJ[BSPTDPODFJUPTEF Medico
F Paciente %FWJEPBJTUP BTVCUJQJGJDBÎÍPF DPOTFRVFOUFNFOUF P
SFÞTPEFBUSJCVUPTTÍPBMDBOÎBEPT5BNCÏNEFWJEPBJTUP FTUBDMBTTF
QPTTVJ BQFOBT PT NÏUPEPT CÈTJDPT RVF QSBUJDBNFOUF RVBMRVFS
FOUJEBEF EF VN TJTUFNB PSJFOUBEP B PCKFUPT QSPWÐ DBEBTUSP
QFTRVJTB  JODMVTÍP F DPOTVMUB +È B Procedimento  RVF UBNCÏN Ï
BCTUSBUB  QPTTVJ BMHVOT NÏUPEPT  QPS FYFNQMP  P double
caucularTotal() RVFUBNCÏNÏBCTUSBUP

1BSB GJOBMJ[BS  B JOUFSGBDF DSJBEB QPTTVJ BQFOBT P NÏUPEP


SFTQPOTÈWFM QPS HFSBS PT EBEPT EF USBOTNJTTÍP &TUF QSPDFTTP TFSÈ
GFJUP EF BDPSEP DPN BT SFHSBT EP IPTQJUBM "P BUVBMJ[BS B
NPEFMBHFN GJDBSJBBTTJN

'JHVSB.PEFMBHFNDPNBUSJCVUPTFNÏUPEPT

0QSPDFTTPEFDPEJGJDBÎÍP
5FOEPEFGJOJEPUPEPPNPEFMPEFEPNÓOJPEBBQMJDBÎÍP ÏIPSB

148 8.1 COLOCANDO A MÃO NA MASSA


EF DPEJGJDÈMP /FTUF NPNFOUP  BMHVNBT EFDJTÜFT EFWFN TFS
UPNBEBT  F UBMWF[ B QSJODJQBM TFKB RVBM WFSUFOUF EB QSPHSBNBÎÍP
PSJFOUBEBBPCKFUPTEFWFSFNPTTFHVJS

&YJTUFN EVBT HSBOEFT WFSUFOUFT GPSNBT  EF DPEJGJDBS BT


BQMJDBÎÜFT6NBRVFVTBPQBESÍP#VTTJOFTT0CKFDU FPVUSBRVFOÍP
P VTB F  BTTJN  FWJUB P DIBNBEP .PEFMP "OÐNJDP &TUB BCPSEBHFN
UBNCÏN Ï DPOIFDJEB DPNP %PNBJO .PEFM $BEB DBNJOIP TFSÈ
FYQMJDBEP  QBSB BTTJN FOUFOEFSNPT F QPEFSNPT SFBMJ[BS B FTDPMIB
DPSSFUB *OJDJBMNFOUF  TFSÈ FYQMJDBEP P #VTTJOFTT 0CKFDU  F EFQPJT
DPNPFWJUBSP.PEFMP"OÐNJDP

/P #VTTJOFTT 0CKFDU  VNB EBT QSJODJQBJT DBSBDUFSÓTUJDBT EB


0SJFOUBÎÍP B 0CKFUPT Ï RVFCSBEB BHMVUJOBS EBEPT F
DPNQPSUBNFOUPTOBNFTNBVOJEBEFEFDØEJHP0VTFKB PTBUSJCVUPT
FNÏUPEPTTÍPTFQBSBEPT&TUBBUJUVEFÏUPNBEBRVBOEPEFTFKBNPT
PCUFS VNB BMUB SFVTBCJMJEBEF EPT DPNQPSUBNFOUPT  NBT OÍP
EFTFKBNPTRVFJTUPMFWFBVNBJOUFSGFSÐODJBOPNPEFMPEFFOUJEBEFT
DPODFJUPT EBBQMJDBÎÍP

-FWBOEP FN DPOTJEFSBÎÍP B NPEFMBHFN QBSB P TJTUFNB


IPTQJUBMBS EF FYFNQMP  QBSB P DPODFJUP EF QBDJFOUF  EVBT DMBTTFT
TFSJBNDSJBEBTB Paciente RVFSFQSFTFOUBSJBTPNFOUFPDPODFJUP
FOUJEBEF BTFSNBOJQVMBEPF BTTJN UFSJBTPNFOUFPTBUSJCVUPTFB
PacienteBO  PV PacienteBusiness  RVF DPOUFSJB TPNFOUF PT
NÏUPEPTQBSBNBOJQVMBSPTQBDJFOUFT

/PUF RVF FTUB BCPSEBHFN UFSNJOB QPS PCSJHBS B DSJBS get T F


set T QBSB QPTTJCJMJUBS B NBOJQVMBÎÍP EPT BUSJCVUPT GPSB EB
FOUJEBEF*TUP FNCPSBQPTTBQBSFDFSOBUVSBM UFSNJOBQPSGFSJSVNB
PVUSBDBSBDUFSÓTUJDBEB0SJFOUBÎÍPB0CKFUPTPFODBQTVMBNFOUP

5FSBDFTTPEJSFUPBPBUSJCVUPQPSNFJPEFVN get NFTNPFTUF


TFOEPEFGJOJEPDPNPQSJWBEPFQSJODJQBMNFOUFQPTTJCJMJUBSNVEÈMP
EJSFUBNFOUF DPN VN set  QPEF SFTVMUBS FN DPNQPSUBNFOUPT

8.1 COLOCANDO A MÃO NA MASSA 149


BEWFSTPTGVUVSBNFOUF&TTBBCPSEBHFNÏEJUBOBMJUFSBUVSBPSJFOUBEB
BPCKFUPTDPNPQSPHSBNBSEFGPSNBFTUSVUVSBEBVTBOEP0SJFOUBÎÍP
B0CKFUPT

.FTNPDPNFTUBTSFTTBMWBT FTUBGPSNBEFQSPHSBNBÎÍPÏNVJUP
VTBEB  F JTTP PDPSSF QPSRVF FMB GBDJMJUB P QSPDFTTP EF DPEJGJDBÎÍP
UPSOBOEPPDØEJHPNFOPTDPNQMFYPFGBDJMJUBOEPTFVFOUFOEJNFOUP
2VBOUP NBJT SFMBDJPOBNFOUPT FYJTUJSFN FOUSF BT FOUJEBEFT EB
BQMJDBÎÍP NBJTFTTBBCPSEBHFNNPTUSBSÈPTFVWBMPS7FKBBTFHVJS
VNFYFNQMPEFBQMJDBÎÍPEFTUBBCPSEBHFN
//Java
public class CarrinhoDeCompras {

private String codigo;


private Produto[] produtos;

public void setCodigo(String codigo) {


this.codigo = codigo;
}

public String getCodigo() {


return this.codigo;
}

public void setProdutos(Produto[] produtos) {


this.produtos = produtos;
}

public Produto[] getProdutos() {


return this.produtos;
}

public class CarrinhoDeComprasBO {

public Produtos[] listarProdutos() {

//lógica de obter todos os produtos a partir de um


//repositório de dados
}

public void adicionarProduto(Produto produto) {

150 8.1 COLOCANDO A MÃO NA MASSA


//lógica de adicionar um novo produto. Esta deve se
//preocupar se o produto novo não já existe.
}

public void removerProduto(Produto produto) {

//lógica de remover o produto do carrinho.


}

public void esvaziar(Produto produto) {

//lógica de remover todos os produtos de uma vez


}

public void finalizarPedido() {

//lógica de gerar uma venda a partir do carrinho


}
}

//C#
public class CarrinhoDeCompras
{

private String codigo;


private Produto[] produtos;

public String Codigo


{
set {this.codigo = value;}
get {return this.codigo;}
}

public Produto[]
{
set {this.produtos = value;}
get {return this.produtos;}
}
}

public class CarrinhoDeComprasBO


{

public Produtos[] listarProdutos


{
//lógica de obter todos os produtos a partir de um
//repositório de dados
}

8.1 COLOCANDO A MÃO NA MASSA 151


public void adicionarProduto(Produto produto)
{
//lógica de adicionar um novo produto. Esta deve se
//preocupar se o produto novo não já existe.
}

public void removerProduto(Produto produto)


{
//lógica de remover o produto do carrinho.
}

public void esvaziar(Produto produto)


{
//lógica de remover todos os produtos de uma vez
}

public void finalizarPedido


{
//lógica de gerar uma venda a partir do carrinho
}
}

/ÍP VTBOEP P #VTTJOFTT 0CKFDU  F BTTJN FWJUBOEP P .PEFMP


"OÐNJDP  UFSNJOBNPT TFHVJOEP  PT QSFDFJUPT EB 00 KVOUBS
EBEPT F DPNQPSUBNFOUPT $PN JTTP  PT NÏUPEPT EF NBOJQVMBÎÍP
EPT BUSJCVUPT F PT BUSJCVUPT FTUÍP KVOUPT OB NFTNB DMBTTF %FTTB
GPSNB BQFOBTVNBDMBTTFÏDSJBEB OPDBTPB Paciente 

&TUBBCPSEBHFNQSF[BRVFOÍPTFEFWFDSJBS get TF set T EF


GPSNB JOEJTDSJNJOBEB  NBT RVF FTUFT TFKBN VNB TJUVBÎÍP EF
FYDFÎÍP.ÏUPEPTEFOFHØDJP RVFFYQSFTTBNBTOFDFTTJEBEFT TÍPPT
RVFEFWFNTFSVUJMJ[BEPTQBSBBDFTTBSPTBUSJCVUPTEJSFUBNFOUF

&TUB GPSNB EF QSPHSBNBÎÍP Ï B NBJT EFGFOEJEB QPS HSBOEFT


HVSVT EB 0SJFOUBÎÍP B 0CKFUPT  DPNP .BSUJO 'PXMFS &OUSF PT
NPUJWPT EF EFGFTB EFTUB BCPSEBHFN Ï RVF FMB HFSB VN NFOPS
BDPQMBNFOUP FOUSF BT DMBTTFT EB BQMJDBÎÍP  KÈ RVF EJNJOVÓNPT B
RVBOUJEBEF EF DMBTTFT F  DPOTFRVFOUFNFOUF  EF SFMBDJPOBNFOUPT
UBNCÏN "MÏN EJTUP  OÍP UFNPT VN NPEFMP EF EPNÓOJP QPCSF
MJNJUBOEPOPTBVNTJNQMFTQVOIBEPEF get T  set TFBUSJCVUPT

152 8.1 COLOCANDO A MÃO NA MASSA


%FGBUP VN.PEFMP"OÐNJDPGFSFPTQSFDFJUPTEB00.BT OÍP
WBNPT UJSBS P TFV NÏSJUP  QPJT B DPNQMFYJEBEF EF DPEJGJDBÎÍP F
FOUFOEJNFOUP TÍP QFSDFQUÓWFJT QBSB BQMJDBÎÜFT DPN HSBOEF
RVBOUJEBEF EF FOUJEBEFT F  DPOTFRVFOUFNFOUF  EF SFMBDJPOBNFOUPT
‰ QSJODJQBMNFOUF QBSB JOJDJBOUFT " TFHVJS  WFKB VN FYFNQMP EF
BQMJDBÎÍPEFTUBBCPSEBHFN
//Java
public class CarrinhoDeCompras {

private String codigo;


private Produto[] produtos;

public Produtos[] listarProdutos() {

//lógica de obter todos os produtos a partir de um


//repositório de dados
}

public void adicionarProduto(Produto produto) {

//lógica de adicionar um novo produto. Esta deve se


//preocupar se o produto novo não já existe.
}

public void removerProduto(Produto produto) {

//lógica de remover o produto do carrinho.


}

public void esvaziar(Produto produto) {

//lógica de remover todos os produtos de uma vez


}

public void finalizarPedido() {

//lógica de gerar uma venda a partir do carrinho


}
}

//C#
public class CarrinhoDeCompras
{

private String codigo;

8.1 COLOCANDO A MÃO NA MASSA 153


private Produto[] produtos;

public Produtos[] listarProdutos


{
//lógica de obter todos os produtos a partir de um
//repositório de dados
}

public void adicionarProduto(Produto produto)


{
//lógica de adicionar um novo produto. Esta deve se
//preocupar se o produto novo não já existe.
}

public void removerProduto(Produto produto)


{
//lógica de remover o produto do carrinho.
}

public void esvaziar(Produto produto)


{
//lógica de remover todos os produtos de uma vez
}

public void finalizarPedido


{
//lógica de gerar uma venda a partir do carrinho
}
}

5FOEPBHPSBBQSFTFOUBEPFTUFTEPJTDBNJOIPT BQFSHVOUBWPMUB
RVBMWFSUFOUFTFHVJS "SFTQPTUBÏTJNQMFTBRVFNFMIPSTFBEFRVBS
ËT OFDFTTJEBEFT EB BQMJDBÎÍP &TUF MJWSP OÍP UFN DPNP GJOBMJEBEF
DBUFRVJ[BSPTJOJDJBOUFTFNEFUFSNJOBEPDBNJOIP NBTTJNNPTUSBS
UPEBT BT QPTTJCJMJEBEFT QBSB QPEFS DSJBS QSPKFUPT PSJFOUBEPT B
PCKFUPTEFTVDFTTP EFTEFPTDPODFJUPTBUÏBTTVBTVUJMJ[BÎÜFT&QBSB
TF DIFHBS B FTTF QPOUP  TPNFOUF TFSÈ QPTTÓWFM DPN VNB BOÈMJTF
DSÓUJDB F EFUBMIBEB "RVJ FTUÍP TFOEP EBEBT BT GFSSBNFOUBT
OFDFTTÈSJBTQBSBTFBUJOHJSUBMPCKFUJWP

&OUÍP QBSBBHSBEBSBHSFHPTFUSPJBOPT PFYFNQMPEPQSPKFUPEP


IPTQJUBM TFSÈ JNQMFNFOUBEP TFHVJOEP BT EVBT WFSUFOUFT B DPN
#VTTJOFTT 0CKFDU F TFN P .PEFMP "OÐNJDP -FNCSBOEP EF RVF

154 8.1 COLOCANDO A MÃO NA MASSA


BNCBT TFSÍP GFJUBT FN Java  F C#  0VUSP EFUBMIF RVF EFWF TFS
DJUBEP Ï RVF  FNCPSB PT FYFNQMPT EF NPEFMBHFN BQSFTFOUBEPT BUÏ
BHPSB VTFN WFUPSFT  QPS RVFTUÜFT EF GBDJMJEBEF EF VTP F EF CPBT
QSÈUJDBT PTFYFNQMPTVTBNMJTUBTBPJOWÏTEFWFUPSFT/PDBQÓUVMPB
TFHVJS  TPCSF CPBT QSÈUJDBT  TFSÈ BCPSEBEP DPN NBJT DMBSF[B P RVF
WFN B TFS UBJT MJTUBT $PN JTTP  FYJTUJSBN  WFSTÜFT EB BQMJDBÎÍP EF
FYFNQMP ² BDPOTFMIÈWFM CBJYBS UPEPT PT QSPKFUPT QBSB VN NFMIPS
BDPNQBOIBNFOUPEBTFYQMJDBÎÜFT5PEBTFTUÍPEJTQPOÓWFJTFN

&YFNQMP #VTTJOFTT 0CKFDU FN +BWB


IUUQTHJUIVCDPNUIJBHPMFJUFFDBSWBMIPFYFNQMPT-JWSP
CMPCNBTUFS)PTQJUBM#0+[JQ
&YFNQMP OÍP BOÐNJDP FN +BWB
IUUQTHJUIVCDPNUIJBHPMFJUFFDBSWBMIPFYFNQMPT-JWSP
CMPCNBTUFS)PTQJUBM/"+[JQ
&YFNQMP #VTTJOFTT 0CKFDU FN $
IUUQTHJUIVCDPNUIJBHPMFJUFFDBSWBMIPFYFNQMPT-JWSP
CMPCNBTUFS)PTQJUBM#0$[JQ
&YFNQMP OÍP BOÐNJDP FN $
IUUQTHJUIVCDPNUIJBHPMFJUFFDBSWBMIPFYFNQMPT-JWSP
CMPCNBTUFS)PTQJUBM/"$[JQ

$BTP TF RVFJSB CBJYBS UPEPT EF VNB WF[  VUJMJ[BS P MJOL
IUUQTHJUIVCDPNUIJBHPMFJUFFDBSWBMIPFYFNQMPT-JWSP

*OGFMJ[NFOUF OÍPÏQPTTÓWFMOFTUBTFÎÍPFYJCJSUPEPTPTDØEJHPT
EBTWFSTÜFTEBBQMJDBÎÍP"MÏNEFTFSFNFYUFOTPT OÍPGBDJMJUBSJBB
MFJUVSBFPSHBOJ[BÎÍP1PSUBOUP ÏÞUJMGB[FSVNBBOÈMJTFEFUBMIBEBEB
TFÎÍP BOUFSJPS  DPOGSPOUBOEPB DPN PT DØEJHPT EJTQPOJCJMJ[BEPT
"MÏNEJTUP VNBBOÈMJTFTPCSFBBCPSEBHFN#VTTJOFTT0CKFDU #0 F
OÍPBOÐNJDBEFWFTFSGFJUB%FGPSNBJOUSPEVUØSJBTPCSFFTUBBOÈMJTF
FMB BGFUB BUÏ B GPSNB EF EFGJOJÎÍP EPT QBDPUFT F OBNFTQBDFT EB
BQMJDBÎÍP"TBQMJDBÎÜFTSPEBNEJSFUBNFOUFOP Eclipse F Visual
Studio 

8.1 COLOCANDO A MÃO NA MASSA 155


4FSÈ QPTTÓWFM JOUFSBHJS DPN B BQMJDBÎÍP WJB DPOTPMF 1BSB JTUP
DMBTTFTVUJMJUÈSJBTGPSBNDSJBEBTQBSBQPTTJCJMJUBSBFOUSBEBEFEBEPT
&MBTOÍPGB[FNQBSUFEJSFUBNFOUFEPEPNÓOJPEPTJTUFNBIPTQJUBMBS
NBTQSFDJTBSBNTFSDSJBEBTQBSBGBDJMJUBSBVTBCJMJEBEFEPTJTUFNB

&TUFÏVNFYFNQMPDMÈTTJDPEFFODBQTVMBNFOUP1BSBRVFNWBJ
VTBSBBQMJDBÎÍP OÍPJNQPSUBDPNPÏPQSPDFTTPEFMFJUVSBEFEBEPT
EP UFDMBEP  P RVF JOUFSFTTB Ï P SFTVMUBEP .BT DBTP B DVSJPTJEBEF
TVSKB VNBBOBMJTBEBOFTUBTDMBTTFTTFSÈEFCPNQSPWFJUP&MBTUFSÍP
BMHVNBT GBDJMJEBEFT RVF Java  F C#  EJTQPOJCJMJ[BN QBSB P
EFTFOWPMWJNFOUPEFBQMJDBÎÜFT

&NDBEBWFSTÍP BDMBTTF RodarAplicacao EFWFTFSVTBEBQBSB


JOJDJBSBBQMJDBÎÍP²OFMBRVFPNÏUPEP main GPJEFGJOJEPQBSBTFS
PQPOUPEFJOÓDJPEBFYFDVÎÍP

&45".0426"4&"$"#"/%0
/FTUFDBQÓUVMP B0SJFOUBÎÍPB0CKFUPTGPJVUJMJ[BEBOBGPSNBRVF
FMB TF QSPQÜF TFS VNB GPSNB EF NPEFMBS F QSPHSBNBS 'PJ GFJUB
JOJDJBMNFOUF VNB NPEFMBHFN EP TJTUFNB EP IPTQJUBM B QBSUJS EF
VNB EFTDSJÎÍP GPSOFDJEB %FQPJT  GPSBN JEFOUJGJDBEBT BT FOUJEBEFT
BDPNQBOIBEP EF TFVT BUSJCVUPT F NÏUPEPT 5BNCÏN GPSBN
GPSOFDJEBT BQMJDBÎÜFT EF FYFNQMP RVF DPEJGJDBN B NPEFMBHFN
QSPQPTUB

&OUSFUBOUP  FNCPSB UFOIB TJEP EJUP BOUFSJPSNFOUF RVF OÍP


CBTUBWB UFS DPOIFDJNFOUP EPT DPODFJUPT  NBT TJN BQMJDÈMPT EF
GPSNB DPSSFUB  BJOEB UFNPT VN QBTTP B NBJT " NPEFMBHFN F
DPEJGJDBÎÍP BQSFTFOUBEBT OFTUF DBQÓUVMP TÍP JNQPSUBOUFT QBSB
EBSNPT PT QSJNFJSPT QBTTPT .BT BJOEB TFSÍP NVJUPT BUÏ TF UPSOBS
VN.FTUSF+FEJOB0SJFOUBÎÍPB0CKFUPT

/P QSØYJNP DBQÓUVMP  TFSÍP EBEBT BMHVNBT EJDBT JOJDJBJT EF

156 8.2 ESTAMOS QUASE ACABANDO


DPNPDPNFÎBSBGB[FSBQMJDBÎÜFTVTBOEPB00.FTNPTFOEPEJDBT
TJNQMFT  TÍP EF TVNB JNQPSUÉODJB QBSB TF FWJUBS WÓDJPT NÈT
QSÈUJDBT RVFMFWFNBUSBOTUPSOPTGVUVSPT

8.2 ESTAMOS QUASE ACABANDO 157


CAPÍTULO 9

#0"413«5*$"4/0640
%"03*&/5"±°0"
0#+&504

/PT DBQÓUVMPT BOUFSJPSFT  WJNPT QPS RVF VTBS B 0SJFOUBÎÍP B


0CKFUPT TFVTDPODFJUPTFDPNPVUJMJ[ÈMPT&OUSFUBOUP ÏQSFDJTPVTBS
DPNDVJEBEPUPEPTFMFT%FWFNPTUFSQSVEÐODJBBPBQMJDÈMPT QPJT
TF GPSFN VUJMJ[BEPT EF GPSNB JNQFOTBEB  NBOVUFOÎÜFT GVUVSBT OB
BQMJDBÎÍP QPEFN TF UPSOBS POFSPTBT  PV BUÏ NFTNP JOWJÈWFJT &TUF
UJQP EF TJUVBÎÍP FYUSFNB Ï P RVF MFWB B JOTVDFTTPT EF QSPKFUPT
PSJFOUBEPTBPCKFUP

1BSBUFOUBSFWJUBSUBJTTJUVBÎÜFTBEWFSTBT QPEFNPTVTBSGPSNBT
BWBOÎBEBTEFTF USBCBMIBSDPN 0SJFOUBÎÍPB0CKFUPT  UBJTDPNP EF
1BESÜFTEF1SPKFUP1PSÏN QBSBVNBVUJMJ[BÎÍPDPSSFUBRVFUSBHBPT
HBOIPT FTQFSBEPT  Ï OFDFTTÈSJB VNB DFSUB FYQFSJÐODJB FN
QSPHSBNBÎÍP PSJFOUBEB B PCKFUPT 4Ø BTTJN  FTUBT F PVUSBT GPSNBT
BWBOÎBEBT TFSÍP FOUFOEJEBT EF GPSNB FGJDB[ F  DPOTFRVFOUFNFOUF
TFSÍPBQMJDBEBTOPNPNFOUPDFSUPFDPSSFUBNFOUF

5PEBWJB OÍPQPEFNPTFTQFSBSBUÏFTTBFYQFSJÐODJBDIFHBSQBSB
BTTJNUFOUBSTPMVDJPOBSGBMIBTBOUFSJPSFT PVNFTNPFWJUÈMBT/FTUF
DBQÓUVMP  TFSÈ BQSFTFOUBEP VN QFRVFOP DBUÈMPHP EF CPBT QSÈUJDBT
RVF BKVEBN B JOJDJBS P VTP EB 00  QBSB BTTJN QSPWFS VN BUBMIP B
FTUF MPOHP DBNJOIP  PCUFS TVDFTTPT F FODVSUBS P UFNQP QBSB VNB
NFMIPS BQMJDBCJMJEBEF 4ÍP CPBT QSÈUJDBT TJNQMFT  NBT RVF BKVEBN

158 9 BOAS PRÁTICAS NO USO DA ORIENTAÇÃO A OBJETOS


OP BNBEVSFDJNFOUP F FOUFOEJNFOUP EF DPNP F RVBOEP VTBS PT
DPODFJUPTBQSFTFOUBEPTOFTUFMJWSP7FKBBMJTUBHFNEFMFTBTFHVJS

 #1 4& 13&0$61& $0. " $0&4°0 &


"$01-".&/50
&TUB Ï B NBJT CÈTJDB  NBT UBNCÏN B NBJT JNQPSUBOUF  EBT CPBT
QSÈUJDBT /P DPOUFYUP EB 0SJFOUBÎÍP B 0CKFUPT  DSJBS DMBTTFT OÍP
DPFTBT F DPN BDPQMBNFOUP GPSUF Ï VN GBUPS QSFQPOEFSBOUF QBSB P
JOTVDFTTP EF QSPKFUPT &YJTUF BUÏ VNB NÈYJNB RVF EJUB FTUB CPB
QSÈUJDB5SBCBMIFDPNBMUBDPFTÍPFCBJYPBDPQMBNFOUP

$PNP KÈ WJNPT OP DPNFÎP EP MJWSP  B GBMUB EF DPFTÍP MFWB B
DMBTTFT JODIBEBT  RVF NJTUVSBN SFTQPOTBCJMJEBEFT " TFHVJS  WFKB
VNBDMBTTFOÍPDPFTB
//Java
public class Venda {

private String nomeCliente;


private String cpfCliente;
private String enderecoEntrega;
private int cep;
private Debito pagamento;
private Produto[] produtos;
private String nomeVendedor;
private double comissaoVendedor;
}

//C#
class Venda
{
private String nomeCliente;
private String cpfCliente;
private String enderecoEntrega;
private int cep;
private Debito pagamento;
private Produto[] produtos;
private String nomeVendedor;
private double comissaoVendedor;
}

9.1 BP01: SE PREOCUPE COM A COESÃO E ACOPLAMENTO 159


/PUFRVFFMBUFNNVJUBTDBSBDUFSÓTUJDBTRVFOÍPEJ[FNSFTQFJUP
EJSFUBNFOUF B FMB NFTNB 0 RVF DPNQSPWB JTUP Ï RVF PT BUSJCVUPT
QPTTVFN OPNFT NBJT EFUBMIBEPT QBSB DPOTFHVJS SFQSFTFOUBS TVBT
VUJMJEBEFT F SFQSFTFOUBUJWJEBEFT RVF UFSNJOBN FYQMJDJUBOEP PVUSPT
DPODFJUPT6NBDMBTTFNBJTDPFTBTFSJB
//Java
public class Venda {

private Cliente cliente;


private Endereco endereco;
private Debito pagamento;
private Produto[] produtos;
private Vendedor vendedor;
}

//C#
public class Venda
{
private Cliente cliente;
private Endereco endereco;
private Debito pagamento;
private Produto[] produtos;
private Vendedor vendedor;
}

1FSDFCBRVFBMHVNBTDBSBDUFSÓTUJDBTTVNJSBN QPJTOPWBTDMBTTFT
GPSBNDSJBEBTQBSBBSNB[FOBSUBJTJOGPSNBÎÜFT FBTTJNSFUJSÈMBTEB
DMBTTF Venda  /FTUF DBTP  BT BTTPDJBÎÜFT BKVEBSBN B DSJBS VNB
DMBTTFNBJTDPFTB

&OUSFUBOUP BJOEBFYJTUFBMHPBTFSNFMIPSBEPOFTUFFYFNQMPP
BDPQMBNFOUP/PUFRVFFYJTUFVNBDPQMBNFOUPNVJUPBMUP PVTFKB
Venda EFQFOEFEFPVUSBDMBTTFEFGPSNBNVJUPGPSUF*TUPBDPOUFDF
DPN B DMBTTF Debito  $BTP B WFOEB QSFDJTF UFS PVUSB GPSNB EF
QBHBNFOUP VNBHSBOEFBMUFSBÎÍPUFSJBEFTFSSFBMJ[BEBQBSBQPEFS
BDFJUBSFTTBOPWBNPEBMJEBEF OPDBTPDBSUÍP

*OJDJBMNFOUF  QPEFNPT BUÏ QFOTBS FN BDSFTDFOUBS VN OPWP


BUSJCVUP  private Cartao pagamentoCartao  F SFTPMWFS P
QSPCMFNBDPNJTTP.BTFTFVNGJOBODJBNFOUPQBTTBSBTFSBDFJUP

160 9.1 BP01: SE PREOCUPE COM A COESÃO E ACOPLAMENTO


6N OPWP BUSJCVUP  -PHP QFSDFCFNPT RVF FTTB BCPSEBHFN OÍP
SFTPMWF NBT OBWFSEBEF HFSBOPWPTBDPQMBNFOUPTFDBEBWF[NBJT
WBJGJDBOEPEJGÓDJMTPMVDJPOÈMPT

$BEBVNBEFTTBTGPSNBTEFQBHBNFOUPUSBCBMIBJTPMBEBNFOUF F
EFQFOEFS EJSFUBNFOUF EFMB UFSNJOB DVMNJOBOEP FN VNB GPSUF
EFQFOEÐODJB EB DMBTTF Venda  DPN FTUFT QBHBNFOUPT  QPJT
BMUFSBÎÜFT OP QBHBNFOUP BDBCBN SFGMFUJOEP UBNCÏN OB DMBTTF
Venda "GJHVSBBTFHVJSJMVTUSBUBMTJUVBÎÍP

'JHVSB"DPQMBNFOUPGPSUF

"DPQMBNFOUPT EFWFN FYJTUJS  QPJT VNB EBT DBSBDUFSÓTUJDBT


CÈTJDBTEB0SJFOUBÎÍPB0CKFUPTÏBUSPDBEFNFOTBHFOT FJTTPTØÏ
QPTTÓWFM QFMP BDPQMBNFOUP &OUÍP  DPNP SFTPMWFS B TJUVBÎÍP
BQSFTFOUBEB 5PSOBOEPPTBDPQMBNFOUPTGSBDPT GMFYÓWFJT

6N CPN BDPQMBNFOUP Ï BRVFMF RVF QPTTJCJMJUB NBOVUFOÎÜFT


TFN HSBOEFT JNQBDUPT  TFN FGFJUPT DPMBUFSBJT 1BSB FTUB TJUVBÎÍP  B
NFMIPSGPSNBTFSJBDSJBSVNBDMBTTFBCTUSBUB PVJOUFSGBDF FPTUJQPT
EF QBHBNFOUP IFSEBSJBN PV JNQMFNFOUBSJBN FTUB $PN JTTP  B
DMBTTF Venda  OÍP EFQFOEFSJB EJSFUBNFOUF EF Debito  Cartao

9.1 BP01: SE PREOCUPE COM A COESÃO E ACOPLAMENTO 161


FUD  NBT TJN EF VN QBHBNFOUP HFOÏSJDP RVF QPEFSJB TF NPMEBS B
OFDFTTJEBEFDPSSFOUF

%FTUBGPSNB QPEFSÓBNPTNVEBSBGPSNBEFQBHBNFOUPTFNRVF
HSBOEFT BMUFSBÎÜFT OB WFOEB GPTTFN OFDFTTÈSJBT " GJHVSB B TFHVJS
SFQSFTFOUB P NFTNP NPEFMP  TØ RVF DPN PT BDPQMBNFOUPT NBJT
GSBDPT

'JHVSB"DPQMBNFOUPGSBDP

/PUFRVFB Venda BHPSBTØEFQFOEFEF Pagamento NBTFTUF


QPEFTFSEPUJQP Debito  Cartao  Financiamento FUD0VTPEF
IFSBOÎB PV JOUFSGBDF  F QPTTJWFMNFOUF EF QPMJNPSGJTNP  BKVEBSÈ B
UPSOBS FTTF BDPQMBNFOUP NBJT GMFYÓWFM " RVBMRVFS NPNFOUP B
GPSNBEFQBHBNFOUPQPEFTFSNVEBEB TFNBGFUBSBDMBTTF Venda 

&TUBÏBGPSNBNBJTDMÈTTJDBEFBDPQMBNFOUP.BTUBNCÏNQPEF
TFSOPUBEPOBEFQFOEÐODJBEFNÏUPEPTFOUSFTJ FOUSFPVUSBTGPSNBT
0 JNQPSUBOUF Ï UFS FN NFOUF RVF EFWFNPT UPSOBS P BDPQMBNFOUP
GMFYÓWFM

#164&453*/(4$0.1"3$*.¼/*"

162 9.2 BP02: USE STRINGS COM PARCIMÔNIA


*OGFMJ[NFOUF ÏNVJUPDPNVNPVTPJOEJTDSJNJOBEPEFTUSJOHTOB
EFGJOJÎÍPEFBUSJCVUPT*TUPQPEFPDPSSFSEFWJEPBTUSJOHTFSVNUJQP
EF EBEP NVJUP DPNVN OP EJB B EJB  F RVF OBUVSBMNFOUF UFSNJOB
UPSOBOEPB BNQMBNFOUF VUJMJ[BEB 1PSÏN  DVJEBEPT EFWFN TFS
UPNBEPTQBSBFWJUBSTJUVBÎÜFTBEWFSTBT7FKBBTFHVJSVNDØEJHPRVF
JMVTUSBFTTFTDVJEBEPT
//Java
public class Cliente {

private String nome;


private String dataAniversario;
private String sexo;
private String endereco;
}

//C#
public class Cliente
{
private String nome;
private String dataAniversario;
private String sexo;
private String endereco;
}

" QSJNFJSB WJTUB  FTUB DMBTTF OÍP QPTTVJ QSPCMFNB BMHVN .FSB
JMVTÍP &YJTUFN FSSPT HSBWFT OB TVB EFGJOJÎÍP  RVF JOJDJBOUFT
DPNVNFOUFDPNFUFNPVTPFYDFTTJWPEPUJQPUFYUP OPDBTPTUSJOH
*TTP HFSBMNFOUF PDPSSF EFWJEP B FTUF TVQPSUBS UPEP UJQP EF WBMPS
&OUSFUBOUP FTUBGBDJMJEBEFUFSNJOBHFSBOEPQSPCMFNBTGVUVSPT

1PSFYFNQMP  private String dataAniversario; 1PEFNPT


QFOTBSQSFDJTBTFSVNUFYUP QPJTBEBUBÏOPQBESÍP dd/mm/aaaa
FTØUFYUPTTVQPSUBNJTTP .BT F TF GPS QSFDJTP DBMDVMBS B JEBEF EP
DMJFOUF  $PNP VN UFYUP QPEFSÈ TFS VUJMJ[BEP QBSB EFUFSNJOBS UBM
WBMPS $FSUBNFOUFPSFTVMUBEPTFSÈPCUJEP NBTPDBNJOIPUSBÎBEP
QBSBFODPOUSÈMPTFSÈFYUSFNBNFOUFÈSEVP

/FTUFDBTP EFWFTFSVTBEPPUJQPEFEBEP Date  &NCPSB FTUF


OÍP HVBSEF B EBUB OP GPSNBUP dd/mm/aaaa  WÈSJBT PVUSBT

9.2 BP02: USE STRINGS COM PARCIMÔNIA 163


GBDJMJEBEFTTÍPPCUJEBT  DPNPBEJÎÍP FTVCUSBÎÍPEF EJBT NFTFT PV
BUÏBOPT/PUFRVFPVTPEPUJQPEFEBEPBQSPQSJBEP BMÏNEFFTUBS
DPSSFUPTFNBOUJDBNFOUF‰BGJOBM  dataAniversario ÏVNBEBUBF
OÍP VN UFYUP TJNQMFT ‰  UFSNJOB QPS QSPQJDJBS GBDJMJEBEFT EF
NBOJQVMBÎÍP /FTUF DBTP  QBSB BQSFTFOUBS B EBUB OP GPSNBUP
EFTFKBEP QPEFNPTVTBSDMBTTFTBVYJMJBSFTEFGPSNBUBÎÍP

+È OP DBTP EP BUSJCVUP private String sexo;  QPEFNPT


QFOTBSBHPSBTJNÏUFYUP4ØQPEFTFS.BTDVMJOPPV'FNJOJOP/ÍP
UFNPRVFEJTDVUJS.BJTVNBNFSBJMVTÍP1PSTFSVNUFYUPMJWSF P
RVFJNQFEFEFBMHVÏNDPMPDBSVNWBMPSEJGFSFOUFEFTUFTEPJT .BJT
VNB WF[  Ï QPTTÓWFM OPUBS RVF P UJQP TUSJOH UFSNJOB OÍP TFOEP B
NFMIPSPQÎÍP

"TTJN  QSFDJTBSJBN TFS SFBMJ[BEBT WBMJEBÎÜFT B NBJT ‰ OFTUF


DBTP BUÏEFTOFDFTTÈSJBT‰QBSBWBMJEBSTFTPNFOUFFTUFTEPJTWBMPSFT
GPSBN BUSJCVÓEPT 1BSB FTTB TJUVBÎÍP  P VTP EP UJQP Enum  TFSJB B
NFMIPSPQÎÍP&TUFUJQPEFEBEPDSJBVNDPOKVOUPGJYP MJNJUBEPF
QSFEFUFSNJOBEPEFPQÎÜFT$PNJTTP FWJUBTFRVFWBMPSFTEJGFSFOUFT
EPTEJTQPOJCJMJ[BEPTQFMP Enum TFKBNVTBEPT

164 9.2 BP02: USE STRINGS COM PARCIMÔNIA


&/6. "*/%"/°05*/)"4*%0"13&4&/5"%0&45&5*10%&%"%0

3FBMNFOUF FTTFÏVNOPWPUJQPEFEBEP²VNBGBDJMJEBEFRVF
BMHVNBT MJOHVBHFOT PSJFOUBEBT B PCKFUPT GPSOFDFN $PNP KÈ
EJUPBOUFSJPSNFOUF FMF ÏVTBEP QBSBDSJBSVN DPOKVOUPGJYP F
MJNJUBEPEFWBMPSFT$BTPUFOIBNPTBTJUVBÎÍPDJUBEB ÏNFMIPS
DSJBS Enum EPRVFDSJBSUPEPVNBFTUSVUVSBEFQSPHSBNBÎÍP
QBSBNBOUFSB GJYBÎÍPF MJNJUBÎÍPEFWBMPSFT 7FKBB TFHVJS
DPNPEFGJOJSVN Enum FN Java FFN C# 
//Java
public Enum Sexo {
MASCULINO,
FEMINIO;
}

//C#
public Enum Sexo
{
MASCULINO,
FEMINIO;
}

1BSBVUJMJ[BSP Enum CBTUBVTBSTFVOPNFFVNEFTFVTWBMPSF


EJTQPOJCJMJ[BEPT Sexo.MASCULINO PV Sexo.FEMINIO  1BSB
NBJT JOGPSNBÎÜFT TPCSF FTUF UJQP EF EBEPT  Ï BDPOTFMIBEP
BDFTTBS BT EPDVNFOUBÎÜFT EJTQPOJCJMJ[BEBT QBSB FTUF UJQP EF
EBEPFN Java F C# 

1BSB GJOBMJ[BS  UFNPT UBNCÏN private String endereco; 


1FOTPV QSPOUP  GJOBMNFOUF VN RVF FTUÈ DFSUP  &33"%0 .BJT
VNB WF[  B TUSJOH OÍP Ï B NFMIPS PQÎÍP " TFHVJOUF TJUVBÎÍP
EFNPOTUSB UBM FTDPMIB FRVJWPDBEB "Rod. CE-040 km 22, n°
378. Eusébio - CE. CEP: 61760-000"  4F FTUF GPTTF VN WBMPS
QBSB P BUSJCVUP FOEFSFÎP  P TFHVJOUF QSPCMFNB BQBSFDFSJB DPNP
QFTRVJTBSQPSDMJFOUFTRVFSFTJEFNOPNVOJDÓQJPEF&VTÏCJP

9.2 BP02: USE STRINGS COM PARCIMÔNIA 165


*OJDJBMNFOUF QPEFSÓBNPTQFOTBSFNQFTRVJTBSEFOUSPEBTUSJOH
F WFS RVBJT UJOIBN FTTB QBSUF EFOUSP EF TJ &NCPSB GVODJPOBTTF
NBJT VNB WF[ TFSJB VNB BUJWJEBEF ÈSEVB F QSPQÓDJB B FSSPT  QPJT
CBTUBWB VNB MFUSB FN NBJÞTDVMP QBSB OÍP NBJT TFS QPTTÓWFM
FODPOUSBSBQBMBWSBEFTFKBEB FBTTJNBQMJDBSPGJMUSPEFTFKBEP"MÏN
EJTUP  VN PVUSP FTTF HSBWF DPFTÍP &OEFSFÎP OÍP Ï VNB
DBSBDUFSÓTUJDB EJSFUB EF DMJFOUF  NBT TJN EF VNB DMBTTF Endereco
RVF UFSJB BUSJCVUPT DPNP logradouro  numero  bairo
cidade  cep FUD&TUBDMBTTF Endereco FOUÍP EFWFTFSBTTPDJBEB
B Cliente QPJT Endereco ÏVNDPODFJUPSFBMDPNDBSBDUFSÓTUJDBT
QSØQSJBT RVFQPEFNTFSBTTPDJBEBTBPVUSPTDPODFJUPT

"QØT UBJT DPOTJEFSBÎÜFT  BT DMBTTFT DPSSFUBNFOUF EFGJOJEBT


GJDBSJBNBTTJN
//Java
public class Cliente {

private String nome;


private Date dataAniversario;
private Sexo sexo;
private Endereco endereco;
}

//C#
public class Cliente
{
private String nome;
private Date dataAniversario;
private Sexo sexo;
private Endereco endereco;
}

/PUFVNBSFQSFTFOUBUJWJEBEFNBJTBMJOIBEBDPNBSFBMJEBEFEF
DPODFJUPTFNBOJQVMBÎÍP

#14&+"0#+&5*70 /°05&/5&13&7&3
0'65630
²NVJUPDPNVNJOJDJBOUFTOB00QFOTBSFNEBTFHVJOUFGPSNB

166 9.3 BP03: SEJA OBJETIVO, NÃO TENTE PREVER O FUTURO


WPVDSJBSVNBDMBTTFCFNHFOÏSJDB QBSBTFSTVQFSDMBTTFEFUPEBTBT
DMBTTFT0V TFOÍPTFSWJSEFDMBTTFNÍF QPEFSÈTFSVTBEBFNRVBMRVFS
TJUVBÎÍP "TTJN  DPOTJHP VN CPN SFBQSPWFJUBNFOUP EF DØEJHP
&NCPSBQPTTBQBSFDFSDFSUBFTTBGPSNBEFSBDJPDÓOJP OBWFSEBEFFMB
OÍP Ï *TUP PDPSSF EFWJEP B VN QSJODÓQJP DIBNBEP ,*44  RVF OB
WFSEBEFQPEFTFSBQMJDBEPBRVBMRVFSÈSFBFTJHOJGJDB,FFQ*U4JNQMF
4UVQJE0VTFKB NBOUFOIBJTTPTJNQMFT FTUÞQJEP

2VBOEP TÍP DSJBEBT DMBTTFT HFOÏSJDBT EFNBJT  TFVT


FOUFOEJNFOUPT GJDBN QSFKVEJDBEPT &MBT QPEFN GJDBS TFN TFOUJEP
BMHVN  NBT  NFTNP BTTJN  FTUBSÍP QSFTFOUFT FN UPEP MVHBS "MÏN
EJTUP VNBDPQMBNFOUPNVJUPBMUPTFSÈDSJBEP QPJTUPEBTBTDMBTTFT
EF TVB BQMJDBÎÍP EFQFOEFSBN EFMB  F TFSÍP TVCDMBTTFT PV TF
BTTPDJBSÍPBFMB4FBMHVNEJBGPSOFDFTTÈSJPGB[FSVNBNPEJGJDBÎÍP
OFMB UPEPPTJTUFNBQPEFTFSBGFUBEP

6TBSIFSBOÎBTØDPNPJOUVJUPEFSFÞTPÏVNFRVÓWPDP²DPNP
VNB DPOTFRVÐODJB  QPS OÍP TFS B SFBM BQMJDBCJMJEBEF EB IFSBOÎB "
HSBOEF WBOUBHFN EF TFV VTP Ï B DSJBÎÍP EF TVCUJQPT  RVF TÍP
DPODFJUPT SFBJT EP EJB B EJB 0 VTP EF IFSBOÎB Ï CPN F EFWF TFS
FODPSBKBEP NBTOPNPNFOUPDFSUP

1PSFYFNQMP TFPTJTUFNBTØUSBUBSEFWFOEBTBQFTTPBTGÓTJDBT
FOUÍPOÍPQSFDJTBNPTDSJBSVNBDMBTTFDIBNBEB Pessoa  F EFQPJT
VNB DIBNBEB PessoaFisica  RVF IFSEB EF Pessoa  /ÍP TFSÈ
SFBMJ[BEBWFOEBTQBSBQFTTPBTKVSÓEJDBT&OUÍPQPSRVFTFQSFPDVQBS
FN SFÞTP  TF FMF OB WFSEBEF OÍP TFSÈ OFDFTTÈSJP  $BTP VN EJB B
TJUVBÎÍP NVEF F B WFOEB QBSB QFTTPB KVSÓEJDB TF UPSOF SFBMJEBEF
FOUÍP VNB FWPMVÎÍP EFWF TFS GFJUB OP TJTUFNB QBSB USBUBS FTTB
TJUVBÎÍP/FTUFDBTP BDMBTTF Pessoa DPNFÎBBNPTUSBTFVWBMPS

%BNFTNBGPSNB VTBSBBTTPDJBÎÍPTØQBSBSFÞTPUBNCÏNQPEF
TFSVNFRVÓWPDPÏQSFDJTPFYJTUJSVNSFMBDJPOBNFOUPSFBMFOUSFPT
DPODFJUPTQBSBRVFFMFTQPTTBNTFBTTPDJBS&NBNCPTPTDBTPT EFWF
FYJTUJS VNB MJHBÎÍP DPODFJUVBM FOUSF PT DPODFJUPT QBSB RVF TF

9.3 BP03: SEJA OBJETIVO, NÃO TENTE PREVER O FUTURO 167


SFMBDJPOFN TFKBQPSIFSBOÎBPVBTTPDJBÎÍP

6NBNPEFMBHFNFGJDJFOUFÏBRVFMBRVFTVQSFBTOFDFTTJEBEFTEP
NPNFOUP  NBT RVF QPTTB TFS FWPMVÓEB GBDJMNFOUF .PEFMBHFOT
FYUSFNBNFOUFGMFYÓWFJTUFSNJOBNQPSUPSOBSPNPEFMPDPNQMFYP
DPNBDPQMBNFOUPGPSUF EJGÓDJMEFFOUFOEFSFNBOUFS

 #1 $3*& 4&64 .²50%04 $0.


$"3*/)0
4ÍPOPTNÏUPEPTEFVNBDMBTTFPOEFNBJTTFUSBCBMIBSÈ BGJOBM
TÍPOFMFTRVFBTDPJTBTSFBMNFOUFBDPOUFDFN&OUÍP ÏQSFDJTPUPNBS
BMHVOTDVJEBEPTOPRVFEJ[SFTQFJUPBUBNBOIP SFQFUJÎÍPEFDØEJHP
FQBSÉNFUSPT0NÏUPEPBTFHVJSBQSFTFOUBVNBHFSBÎÍPGJDUÓDJBEF
SFMBUØSJPTEFDMJFOUFT
//Java
public class RelatorioCliente {

...

public byte[] pedidosCliente(String cpfCliente, String nomeCli


ente, String nomeUsuarioLogado, String matriculaUsuarioLogado, Dat
e dataInicial, Date dataFinal, String tipoRelatorio) {

//Verificando o tipo de relatório


if ("ANALITICO".equals(tipoRelatorio)) {

this.cabecalho.setTitulo("Pedidos Cliente");
this.cabecalho.setTipo("Analitico");
this.cabecalho.setDataInicial(dataInicial);
this.cabecalho.setDataFinal(dataFinal);
this.cabecalho.setNomeCliente(nomeCliente);
this.cabecalho.setCpfCliente(cpfCliente);

Pedido[] pedidos = bancoDeDados.pesquisarPedidos(cpfCl


iente, dataInicial, dataFinal);

for(int i = 0; i < pedidos.length; i++) {

Pedido pedido = pedidos[i];


this.conteudoAnalitico.setNomeProduto(pedido.getPr

168 9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO


otuto().getNome());
this.conteudoAnalitico.setValorProduto(pedido.getP
roduto().getPreco());
}

double valorTotalPedidos = 0;
for(int i = 0; i < pedidos.length; i++) {

Produto produto = pedidos[i].getProduto();


valorTotalPedidos = valorTotalPedidos + produto.ge
tPreco();
}

this.resumo.setValorTotalPedidos(valorTotalPedidos);
this.resumo.setTotalPedidos(produtos.length);

this.rodape.setDataGeracao(new Date());
this.rodape.setUsuarioImpressao(nomeUsuarioLogado);
this.rodape.setMatriculaImpressao(matriculaUsuarioLoga
do);

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.gerarRelatorio(this.cabecalho, this.


conteudoAnalitico, this.resumo, this.rodape);

} else if ("QUANTITATIVO".equals(tipoRelatorio)) {

this.cabecalho.setTitulo("Pedidos Cliente");
this.cabecalho.setTipo("Quantidativo");
this.cabecalho.setDataInicial(dataInicial);
this.cabecalho.setDataFinal(dataFinal);
this.cabecalho.setNomeCliente(nomeCliente);
this.cabecalho.setCpfCliente(cpfCliente);

Pedido[] pedidos = bancoDeDados.pesquisarPedidos(cpfCl


iente);

for(int i = 0; i < produtos.length; i++) {

Produto produto = produtos[i];


this.conteudoQuantitativo.setMes(pedido.getMes());
this.conteudoQuantitativo.setQuantidadeComprada(pe
dido.getProduto().getQuantidade());
}

double valorTotalPedidos = 0;
for(int i = 0; i < pedidos.length; i++) {

9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO 169


Produto produto = pedidos[i].getProduto();
valorTotalPedidos = valorTotalPedidos + produto.ge
tPreco();
}

this.resumo.setValorTotalPedidos(valorTotalPedidos);
this.resumo.setTotalPedidos(produtos.length);

this.rodape.setDataGeracao(new Date());
this.rodape.setUsuarioImpressao(nomeUsuarioLogado);
this.rodape.setMatriculaImpressao(matriculaUsuarioLoga
do);

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.gerarRelatorio(this.cabecalho, this.


conteudoQuantitativo, this.resumo, this.rodape);
}

...
}

//C#
public class RelatorioCliente
{
...

public byte[] PedidosCliente(String cpfCliente, String nomeCli


ente, String nomeUsuarioLogado, String matriculaUsuarioLogado, Dat
e dataInicial, Date dataFinal, String tipoRelatorio)
{
//Verificando o tipo de relatório
if ("ANALITICO".Equals(tipoRelatorio))
{
this.cabecalho.Titulo = "Pedidos Cliente";
this.cabecalho.Tipo = "Analitico";
this.cabecalho.DataInicial = dataInicial;
this.cabecalho.DataFinal = dataFinal;
this.cabecalho.NomeCliente = nomeCliente;
this.cabecalho.CpfCliente = cpfCliente;

Pedido[] pedidos = bancoDeDados.PesquisarPedidos(cpfCl


iente, dataInicial, dataFinal);

for(int i = 0; i < pedidos.length; i++)


{

170 9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO


Pedido pedido = pedidos[i];
this.conteudoAnalitico.NomeProduto = pedido.Protut
o.Nome;
this.conteudoAnalitico.ValorProduto = pedido.Produ
to.Preco;
}

double valorTotalPedidos = 0;
for(int i = 0; i < pedidos.length; i++)
{
Produto produto = pedidos[i].Produto;
valorTotalPedidos = valorTotalPedidos + produto.Pr
eco;
}

this.resumo.ValorTotalPedidos = valorTotalPedidos;
this.resumo.TotalPedidos = produtos.length;

this.rodape.DataGeracao = new Date();


this.rodape.UsuarioImpressao = nomeUsuarioLogado;
this.rodape.MatriculaImpressao = matriculaUsuarioLogad
o;

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.GerarRelatorio(this.cabecalho, this.


conteudoAnalitico, this.resumo, this.rodape);

}
else if ("QUANTITATIVO".Equals(tipoRelatorio))
{
this.cabecalho.Titulo = "Pedidos Cliente";
this.cabecalho.Tipo = "Quantidativo";
this.cabecalho.DataInicial = dataInicial;
this.cabecalho.DataFinal = dataFinal;
this.cabecalho.NomeCliente = nomeCliente;
this.cabecalho.CpfCliente = cpfCliente;

Pedido[] pedidos = bancoDeDados.PesquisarPedidos(cpfCl


iente);

for(int i = 0; i < produtos.length; i++)


{
Produto produto = produtos[i];
this.conteudoQuantitativo.Mes = pedido.Mes;
this.conteudoQuantitativo.QuantidadeComprada = pedido.
Produto.Quantidade;
}

9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO 171


double valorTotalPedidos = 0;
for(int i = 0; i < pedidos.length; i++)
{
Produto produto = pedidos[i].Produto;
valorTotalPedidos = valorTotalPedidos + produto.Pr
eco;
}

this.resumo.ValorTotalPedidos = valorTotalPedidos;
this.resumo.TotalPedidos = produtos.length;

this.rodape.DataGeracao = new Date();


this.rodape.UsuarioImpressao = nomeUsuarioLogado;
this.rodape.MatriculaImpressao = matriculaUsuarioLogad
o;

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.GerarRelatorio(this.cabecalho, this.


conteudoQuantitativo, this.resumo, this.rodape);
}

...
}

" QSJNFJSB WJTUB  FTUF NÏUPEP QPEF QBSFDFS DPSSFUP .BT BP


BOBMJTBSNPT NBJT EFUBMIBEBNFOUF  PT  QPOUPT EF QSFPDVQBÎÜFT
BQBSFDFN

5BNBOIP
/PUF RVF FMF UFN NVJUBT MJOIBT EF DØEJHP  QPSRVF UFSNJOB
SFBMJ[BOEP NVJUBT PQFSBÎÜFT 4FSJB VNB CPB QSÈUJDB EJWJEJMP FN
NÏUPEPT NFOPSFT  QBSB BTTJN GBDJMJUBS TFV FOUFOEJNFOUP 2VBOUP
NBJT MJOIBT VN NÏUPEP UFN  NBJT EJGÓDJM GJDB TFV FOUFOEJNFOUP
"UVBMNFOUF  FMF QPTTVJ  MJOIBT *NBHJOF NÏUPEPT DPN   
MJOIBT

"TFHVJS WFKBDPNPPNÏUPEPGJDBSJBDPNFTTBNFMIPSJB

172 9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO


//Java
public class RelatorioCliente {

...

public byte[] pedidosCliente(String cpfCliente, String nomeCli


ente, String nomeUsuarioLogado, String matriculaUsuarioLogado, Dat
e dataInicial, Date dataFinal, String tipoRelatorio) {

//Verificando o tipo de relatório


if ("ANALITICO".equals(tipoRelatorio)) {

this.cabecalho = montarCabecalho("Pedidos Cliente", "A


nalitico", dataInicial, dataFinal, nomeCliente, cpfCliente);

Pedido[] pedidos = bancoDeDados.pesquisarPedidos(cpfCl


iente, dataInicial, dataFinal);

for(int i = 0; i < pedidos.length; i++) {

Pedido pedido = pedidos[i];


this.conteudoAnalitico.setNomeProduto(pedido.getPr
otuto().getNome());
this.conteudoAnalitico.setValorProduto(pedido.getP
roduto().getPreco());
}

double valorTotalPedidos = 0;
for(int i = 0; i < pedidos.length; i++) {

Produto produto = pedidos[i].getProduto();


valorTotalPedidos = valorTotalPedidos + produto.ge
tPreco();
}

this.resumo = montarResumo(valorTotalPedidos, produtos


.length);

this.rodape = montarRodape(new Date(), nomeUsuarioLoga


do, matriculaUsuarioLogado);

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.gerarRelatorio(this.cabecalho, this.


conteudoAnalitico, this.resumo, this.rodape);

} else if ("QUANTITATIVO".equals(tipoRelatorio)) {

9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO 173


this.cabecalho = montarCabecalho("Pedidos Cliente", "Q
uantidativo", dataInicial, dataFinal, nomeCliente, cpfCliente);

Pedido[] pedidos = bancoDeDados.pesquisarPedidos(cpfCl


iente);

for(int i = 0; i < produtos.length; i++) {

Produto produto = produtos[i];


this.conteudoQuantitativo.setMes(pedido.getMes());
this.conteudoQuantitativo.setQuantidadeComprada(pe
dido.getProduto().getQuantidade());
}

double valorTotalPedidos = 0;
for(int i = 0; i < pedidos.length; i++) {

Produto produto = pedidos[i].getProduto();


valorTotalPedidos = valorTotalPedidos + produto.ge
tPreco();
}

this.resumo = montarResumo(valorTotalPedidos, produtos


.length);

this.rodape = montarRodape(new Date(), nomeUsuarioLoga


do, matriculaUsuarioLogado);

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.gerarRelatorio(this.cabecalho, this.


conteudoQuantitativo, this.resumo, this.rodape);
}

private void montarCabecalho(String titulo, String tipo, Date


dataInicial, Date dataFinal, String nomeCliente, String cpfCliente)
{

// aqui ficaria o código responsável por preencher o cabeç


alho, que antes estava dentro do método pedidosCliente.
}

private void montarResumo(double valorTotalPedidos, long total


Produtos) {

// aqui ficaria o código responsável por preencher o resum

174 9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO


o, que antes estava dentro do método pedidosCliente.
}

private void montarRodape(Date dataGeracao, String usuarioLoga


do, String matriculaUsuario) {

// aqui ficaria o código responsável por preencher o rodap


é, que antes estava dentro do método pedidosCliente.
}
...
}

//C#
public class RelatorioCliente
{
...

public byte[] PedidosCliente(String cpfCliente, String nomeCli


ente, String nomeUsuarioLogado, String matriculaUsuarioLogado, Dat
e dataInicial, Date dataFinal, String tipoRelatorio)
{
//Verificando o tipo de relatório
if ("ANALITICO".Equals(tipoRelatorio))
{
this.cabecalho = MontarCabecalho("Pedidos Cliente", "A
nalitico", dataInicial, dataFinal, nomeCliente, cpfCliente);

Pedido[] pedidos = bancoDeDados.PesquisarPedidos(cpfCl


iente, dataInicial, dataFinal);

for(int i = 0; i < pedidos.length; i++)


{
Pedido pedido = pedidos[i];
this.conteudoAnalitico.NomeProduto = pedido.Protut
o.Nome;
this.conteudoAnalitico.ValorProduto = pedido.Produ
to.Preco;
}

double valorTotalPedidos = 0;
for(int i = 0; i < pedidos.length; i++)
{
Produto produto = pedidos[i].Produto;
valorTotalPedidos = valorTotalPedidos + produto.Pr
eco;
}

this.resumo = MontarResumo(valorTotalPedidos, produtos


.length);

9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO 175


this.rodape = MontarRodape(new Date(), nomeUsuarioLoga
do, matriculaUsuarioLogado);

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.GerarRelatorio(this.cabecalho, this.


conteudoAnalitico, this.resumo, this.rodape);

}
else if ("QUANTITATIVO".Equals(tipoRelatorio))
{
this.cabecalho = MontarCabecalho("Pedidos Cliente", "Q
uantidativo", dataInicial, dataFinal, nomeCliente, cpfCliente);

Pedido[] pedidos = bancoDeDados.PesquisarPedidos(cpfCl


iente);

for(int i = 0; i < produtos.length; i++)


{
Produto produto = produtos[i];
this.conteudoQuantitativo.Mes = pedido.Mes;
this.conteudoQuantitativo.QuantidadeComprada = ped
ido.Produto.Quantidade;
}

double valorTotalPedidos = 0;
for(int i = 0; i < pedidos.length; i++)
{
Produto produto = pedidos[i].Produto;
valorTotalPedidos = valorTotalPedidos + produto.Pr
eco;
}

this.resumo = MontarResumo(valorTotalPedidos, produtos


.length);

this.rodape = MontarRodape(new Date(), nomeUsuarioLoga


do, matriculaUsuarioLogado);

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.GerarRelatorio(this.cabecalho, this.


conteudoQuantitativo, this.resumo, this.rodape);
}

176 9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO


private void MontarCabecalho(String titulo, String tipo, Date
dataInicial, Date dataFinal, String nomeCliente, String cpfCliente)

{
// aqui ficaria o código responsável por preencher o cabeç
alho, que antes estava dentro do método PedidosCliente.
}

private void MontarResumo(double valorTotalPedidos, long total


Produtos)
{
// aqui ficaria o código responsável por preencher o resum
o, que antes estava dentro do método PedidosCliente.
}

private void MontarRodape(Date dataGeracao, String usuarioLoga


do, String matriculaUsuario)
{
// aqui ficaria o código responsável por preencher o rodap
é, que antes estava dentro do método PedidosCliente.
}
...
}

$PN FTTB NFMIPSJB  OPUF RVF P NÏUPEP QSJODJQBM  OP DBTP P


pedidosCliente GJDPVNFOPS1BSBSFBMJ[ÈMB NÏUPEPTNFOPSFTF
BVYJMJBSFT GPSBN DSJBEPT F  DPN JTUP  DBEB VN GJDPV NBJT DPODJTP
%FTTBGPSNB BMFJUVSBEPNÏUPEP pedidosCliente GPJGBDJMJUBEBF
DPOTFRVFOUFNFOUF TFVFOUFOEJNFOUPUBNCÏN

3FQFUJÎÍPEFDØEJHP
.FTNP UFOEP BQMJDBEP B NFMIPSJB EF UBNBOIP  BJOEB UFNPT
VNB PVUSB B TFS BQMJDBEB OP DPSQP EFTTFT NÏUPEPT /P DBTP  P
QSPCMFNBBHPSBÏBSFQFUJÎÍPEPDÈMDVMPEPWBMPSUPUBMEPTQSPEVUPT
"QMJDBOEPFTUBNFMIPSJB PDØEJHPGJDBSJBEBTFHVJOUFGPSNB
//Java
public class RelatorioCliente {

...

public byte[] pedidosCliente(String cpfCliente, String nomeCli


ente, String nomeUsuarioLogado, String matriculaUsuarioLogado, Dat

9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO 177


e dataInicial, Date dataFinal, String tipoRelatorio) {

//Verificando o tipo de relatório


if ("ANALITICO".equals(tipoRelatorio)) {

this.cabecalho = montarCabecalho("Pedidos Cliente", "A


nalitico", dataInicial, dataFinal, nomeCliente, cpfCliente);

Pedido[] pedidos = bancoDeDados.pesquisarPedidos(cpfCl


iente, dataInicial, dataFinal);

for(int i = 0; i < pedidos.length; i++) {

Pedido pedido = pedidos[i];


this.conteudoAnalitico.setNomeProduto(pedido.getPr
otuto().getNome());
this.conteudoAnalitico.setValorProduto(pedido.getP
roduto().getPreco());
}

double valorTotalPedidos = calcularValorTotalPedido(pe


didos);

this.resumo = montarResumo(valorTotalPedidos, produtos


.length);

this.rodape = montarRodape(new Date(), nomeUsuarioLoga


do, matriculaUsuarioLogado);

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.gerarRelatorio(this.cabecalho, this.


conteudoAnalitico, this.resumo, this.rodape);

} else if ("QUANTITATIVO".equals(tipoRelatorio)) {

this.cabecalho = montarCabecalho("Pedidos Cliente", "Q


uantidativo", dataInicial, dataFinal, nomeCliente, cpfCliente);

Pedido[] pedidos = bancoDeDados.pesquisarPedidos(cpfCl


iente);

for(int i = 0; i < produtos.length; i++) {

Produto produto = produtos[i];


this.conteudoQuantitativo.setMes(pedido.getMes());
this.conteudoQuantitativo.setQuantidadeComprada(pe
dido.getProduto().getQuantidade());

178 9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO


}

double valorTotalPedidos = calcularValorTotalPedido(pe


didos);

this.resumo = montarResumo(valorTotalPedidos, produtos


.length);

this.rodape = montarRodape(new Date(), nomeUsuarioLoga


do, matriculaUsuarioLogado);

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.gerarRelatorio(this.cabecalho, this.


conteudoQuantitativo, this.resumo, this.rodape);
}

private void montarCabecalho(String titulo, String tipo, Date


dataInicial, Date dataFinal, String nomeCliente, String cpfCliente)
{

// aqui ficaria o código responsável por preencher o cabeç


alho, que antes estava dentro do método pedidosCliente.
}

private void montarResumo(double valorTotalPedidos, long total


Produtos) {

// aqui ficaria o código responsável por preencher o resum


o, que antes estava dentro do método pedidosCliente.
}

private void montarRodape(Date dataGeracao, String usuarioLoga


do, String matriculaUsuario) {

// aqui ficaria o código responsável por preencher o rodap


é, que antes estava dentro do método pedidosCliente.
}

private double calcularValorTotalPedido(Pedido[] pedidos) {

double valorTotalPedidos = 0;
for(int i = 0; i < pedidos.length; i++) {

Produto produto = pedidos[i].getProduto();


valorTotalPedidos = valorTotalPedidos + produto.getPre

9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO 179


co();
}

return valorTotalPedidos;
}
...
}

//C#
public class RelatorioCliente
{
...

public byte[] PedidosCliente(String cpfCliente, String nomeCli


ente, String nomeUsuarioLogado, String matriculaUsuarioLogado, Dat
e dataInicial, Date dataFinal, String tipoRelatorio)
{
//Verificando o tipo de relatório
if ("ANALITICO".Equals(tipoRelatorio))
{
this.cabecalho = MontarCabecalho("Pedidos Cliente", "A
nalitico", dataInicial, dataFinal, nomeCliente, cpfCliente);

Pedido[] pedidos = bancoDeDados.PesquisarPedidos(cpfCl


iente, dataInicial, dataFinal);

for(int i = 0; i < pedidos.length; i++)


{
Pedido pedido = pedidos[i];
this.conteudoAnalitico.NomeProduto = pedido.Protut
o.Nome;
this.conteudoAnalitico.ValorProduto = pedido.Produ
to.Preco;
}

double valorTotalPedidos = CalcularValorTotalPedido(pe


didos);

this.resumo = MontarResumo(valorTotalPedidos, produtos


.length);

this.rodape = MontarRodapa(new Date(), nomeUsuarioLoga


do, matriculaUsuarioLogado);

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.GerarRelatorio(this.cabecalho, this.


conteudoAnalitico, this.resumo, this.rodape);

180 9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO


}
else if ("QUANTITATIVO".Equals(tipoRelatorio))
{
this.cabecalho = MontarCabecalho("Pedidos Cliente", "Q
uantidativo", dataInicial, dataFinal, nomeCliente, cpfCliente);

Pedido[] pedidos = bancoDeDados.PesquisarPedidos(cpfCl


iente);

for(int i = 0; i < produtos.length; i++)


{
Produto produto = produtos[i];
this.conteudoQuantitativo.Mes = pedido.Mes;
this.conteudoQuantitativo.QuantidadeComprada = ped
ido.Produto.Quantidade;
}

double valorTotalPedidos = CalcularValorTotalPedido(pe


didos);

this.resumo = MontarResumo(valorTotalPedidos, produtos


.length);

this.rodape = MontarRodapa(new Date(), nomeUsuarioLoga


do, matriculaUsuarioLogado);

GeradorPDF geradorPDF = new GeradorPDF();

return geradorPDF.GerarRelatorio(this.cabecalho, this.


conteudoQuantitativo, this.resumo, this.rodape);
}

private void MontarCabecalho(String titulo, String tipo, Date


dataInicial, Date dataFinal, String nomeCliente, String cpfCliente)

{
// aqui ficaria o código responsável por preencher o cabeç
alho, que antes estava dentro do método PedidosCliente.
}

private void MontarResumo(double valorTotalPedidos, long total


Produtos)
{
// aqui ficaria o código responsável por preencher o resum
o, que antes estava dentro do método PedidosCliente.
}

9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO 181


private void MontarRodape(Date dataGeracao, String usuarioLoga
do, String matriculaUsuario)
{
// aqui ficaria o código responsável por preencher o rodap
é, que antes estava dentro do método PedidosCliente.
}

private double CalcularValorTotalPedido(Pedido[] pedidos) {

double valorTotalPedidos = 0;
for(int i = 0; i < pedidos.length; i++) {

Produto produto = pedidos[i].Produto;


valorTotalPedidos = valorTotalPedidos + produto.Preco;
}

return valorTotalPedidos;
}
...
}

$PN JTUP  B MØHJDB SFTQPOTÈWFM QPS DBMDVMBS P UPUBM EP QFEJEP


QPEFTFSSFBQSPWFJUBEBJOEFQFOEFOUFEPUJQPEFSFMBUØSJPBOBMÓUJDP
PV RVBOUJUBUJWP .BJT VNB WF[  P NÏUPEP QSJODJQBM GJDPV NFOPS F
NBJTDPODJTP1PEFNPT OÍPUFS OPUBEPJOJDJBMNFOUF NBT TØP GBUP
EF EJNJOVJS P UBNBOIP EP NÏUPEP QSJODJQBM UBNCÏN MFWPV B
FMJNJOBÎÍPEFSFQFUJÎÍPEFDØEJHP

7BMF SFTTBMUBS UBNCÏN RVF FTTFT OPWPT NÏUPEPT QSFDJTBN TFS


QSJWBEPT " GJOBMJEBEF EFMFT Ï SFBQSPWFJUBNFOUP F PSHBOJ[BÎÍP
EFOUSPEFTUBDMBTTF$BTPFMFTGPTTFNQÞCMJDPTPVQSPUFHJEPT BDFTTPT
JOEFWJEPTQPEFSJBNHFSBSSFTVMUBEPTJOEFTFKBEPT

1BSÉNFUSPT
1PS GJN  WFKBNPT PT QBSÉNFUSPT EP NÏUPEP &NCPSB QPTTB
QBSFDFSOBUVSBMQBTTBSUPEPTFTUFTQBSÉNFUSPTQBSBPNÏUPEP BGJOBM
FSBBTTJNRVFTFGB[JBDPN C OPNVOEPPSJFOUBEPBPCKFUPFTTB
OÍP Ï VNB CPB QSÈUJDB ² DPNVN WFS DØEJHP EF JOJDJBOUFT
DPNFUFOEP FTTF UJQP EF NÈ QSÈUJDB "P BOBMJTBSNPT NFMIPS P

182 9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO


NÏUPEP GBDJMNFOUFQFSDFCFNPTBGBMIB
//Java
public class RelatorioCliente {

...

public byte[] pedidosCliente(String cpfCliente, String nomeCli


ente, String nomeUsuarioLogado, String matriculaUsuarioLogado, Dat
e dataInicial, Date dataFinal, String tipoRelatorio) {

...

...
}

//C#
public class RelatorioCliente
{
...

public byte[] PedidosCliente(String cpfCliente, String nomeCli


ente, String nomeUsuarioLogado, String matriculaUsuarioLogado, Dat
e dataInicial, Date dataFinal, String tipoRelatorio)
{
...
}

...
}

/PUF RVF FMFT EJ[FN SFTQFJUP B PCKFUPT RVF P QSØQSJP TJTUFNB


NBOJQVMB &OUÍP  TF KÈ UFNPT DMBTTFT F  DPOTFRVFOUFNFOUF  PCKFUPT
DPNFTUFTWBMPSFT QPSRVFFMFTEFWFNTFSQBTTBEPTEFGPSNBJTPMBEB
%FGJOJUJWBNFOUF  JTUP OÍP Ï B NFMIPS GPSNB EF TF USBCBMIBS 0
DPSSFUPTFSJB
//Java
public class RelatorioCliente {

...

public byte[] pedidosCliente(Cliente cliente, UsuarioLogado us


uario, Date dataInicial, Date dataFinal, String tipoRelatorio) {

9.4 BP04: CRIE SEUS MÉTODOS COM CARINHO 183


...

...
}

//C#
public class RelatorioCliente
{
...

public byte[] PedidosCliente(Cliente cliente, UsuarioLogado us


uario, Date dataInicial, Date dataFinal, String tipoRelatorio)
{
...
}

...
}

$PNJTUP BUÏBBTTJOBUVSBEPNÏUPEPGJDPVNFOPSFNBJTMFHÓWFM
²DPNVNWFSDØEJHPTEFJOJDJBOUFTDPNNÏUPEPTQPTTVJOEP 
QBSÉNFUSPT

1BSBGJOBMJ[BSB#1 BJOEBQPEFNPTEJ[FSBMHPBNBJTTPCSFB
MJTUBEFQBSÉNFUSPT2VBOUPNBJTTFVTBNQBSÉNFUSPTEFTBTTPDJBEPT
F FN HSBOEF RVBOUJEBEF  NBJT BDPQMBNFOUP TF DSJB DPN FTUF
NÏUPEP 4F BMHVN EJB VN OPWP QBSÉNFUSP RVF EJHB SFTQFJUP BP
DMJFOUF UJWFS EF TFS BEJDJPOBEP  QSPWBWFMNFOUF QSFDJTBSÍP TFS
DPSSJHJEPT WÈSJPT QPOUPT EB BQMJDBÎÍP &OUSFUBOUP  TF VN PCKFUP
DMJFOUF GPS QBTTBEP  BT DIBNBEBT B FTUF NÏUPEP GJDBSÍP JOUBDUBT
#BTUBSÈ GB[FS B NBOVUFOÎÍP SFRVFSJEB OP NÏUPEP RVF SFDFCF FTUF
QBSÉNFUSPFPQSFFODIJNFOUPEPOPWPBUSJCVUPPOEFGPSOFDFTTÈSJP

#1$0/)&±"&64&$0-&±¿&4
"UÏPNPNFOUP RVBOEPFSBOFDFTTÈSJPBSNB[FOBSPCKFUPT FSBN
VUJMJ[BEPT PT WFUPSFT BSSBZT  &NCPSB TFKB B QSJNFJSB GPSNB EF

184 9.5 BP05: CONHEÇA E USE COLEÇÕES


BSNB[FOBNFOUP BQSFTFOUBEB OB QSPHSBNBÎÍP  FTUFT QPTTVFN
BMHVNBT MJNJUBÎÜFT  TFOEP FOUSF FMBT UBNBOIP GJYP  EJGJDVMEBEF EF
QFTRVJTBFDPOUSPMFEFJOTFSÎÍPEFJUFOT

5BNBOIPGJYP
4F VN WFUPS EF JOUFJSPT DPN  QPTJÎÜFT GPS DSJBEP F  FN
EFUFSNJOBEP NPNFOUP  GPS OFDFTTÈSJP VNB  QPTJÎÍP  VN
QFRVFOPUSBCBMIPUFSÈEFTFSSFBMJ[BEPDSJBSVNOPWPWFUPS BHPSB
DPNQPTJÎÜFT FEFQPJTDPQJBSPTWBMPSFTEPWFUPSBOUJHPQBSBP
OPWP

&TTB TJUVBÎÍP Ï GÈDJM EF JNQMFNFOUBS  NBT F TF BHPSB GPSFN 


QPTJÎÜFT &EFQPJT -PHPOPUFRVFFTUBBCPSEBHFNEFDSJBSVN
OPWP F SFQBTTBS PT JUFOT TF UPSOB SFQFUJUJWB /FTUF DBTP  Ï NFMIPS
VTBS VNB FTUSVUVSB RVF QPTTJCJMJUF VN NBJPS EJOBNJTNP FN TVB
NBOJQVMBÎÍP

%JGJDVMEBEFEFQFTRVJTB
4F GPS OFDFTTÈSJP FODPOUSBS VN FMFNFOUP EFOUSP EF VN WFUPS
OÍP UFNPT P RVF GB[FS Ï OFDFTTÈSJP QFSDPSSÐMP QBSB WFSJGJDBS TF P
JUFNEFTFKBEPFODPOUSBTFEFOUSPEFMF/PQJPSEPTDBTPT PWFUPSÏ
UPUBMNFOUFQFSDPSSJEPQBSBTFDIFHBSËDPODMVTÍPEFRVFPJUFNOÍP
FTUÈ EFOUSP EFMF &NCPSB NBJT VNB WF[ QPTTB QBSFDFS ØCWJP F
JOFWJUÈWFMUBMTJUVBÎÍP FMBQPEFTFSNFMIPSBEB

$POUSPMFEFJOTFSÎÍP
4FGPSOFDFTTÈSJPBWFSJHVBSTFVNOPWPJUFNKÈFYJTUFEFOUSPEP
WFUPS QBSB QPEFS BEJDJPOÈMP  OPWBNFOUF TF UPSOBN QSFTFOUFT PT
QSPCMFNBTEFUBNBOIPGJYPFEJGJDVMEBEFEFQFTRVJTB4FOÍPFYJTUJS
F P WFUPS FTUJWFS DIFJP  TFSÈ QSFDJTP DSJBS VN OPWP F GB[FS B DØQJB
1BSB QPEFS DIFHBS B FTTB DPODMVTÍP  FMF UBMWF[ UFOIB EF TFS
QFSDPSSJEPDPNQMFUBNFOUF

9.5 BP05: CONHEÇA E USE COLEÇÕES 185


$PNPFWJUBSFTTBTTJUVBÎÜFTBEWFSTBT $PMFÎÜFT
1SPWBWFMNFOUF  FTUSVUVSBT DPNP MJTUBT F DPOKVOUPT KÈ UFOIBN
TJEP BQSFTFOUBEBT "MÏN EFTUBT  VNB DPMFÎÍP FTQFDJBM DPOIFDJEB
DPNP NBQB  RVF VUJMJ[B P QSJODÓQJP EF DIBWFWBMPS  UBNCÏN Ï EF
HSBOEFVUJMJEBEF$BTPBJOEBOÍPUFOIBNTJEPBQSFTFOUBEBT ÏCPN
DPOIFDÐMBT

&TUBTFTUSVUVSBTOÍPTÍPBTNBJTGMFYÓWFJTEFTFUSBCBMIBS1PSÏN
FTTB GMFYJCJMJEBEF QPEF MFWBS B VNB DPNQMFYJEBEF EF NBOJQVMBÎÍP
QSJODJQBMNFOUFFNMJOHVBHFOTFTUSVUVSBTDPNP C 4FSÈOFDFTTÈSJP
NBOJQVMBSQPOUFJSPT FJTUPQPEFTFSUSBCBMIPTPFQSPQÓDJPBFSSPT

² QFOTBOEP FN UPSOBS NBJT TJNQMFT BMUP OÓWFM  P VTP EFTTBT


FTUSVUVSBT RVF MJOHVBHFOT PSJFOUBEBT B PCKFUPT QPTTVFN DMBTTFT
FTQFDJBMNFOUF DSJBEBT QBSB GBDJMJUBS B NBOJQVMBÎÍP EFTUBT BT
DPMFÎÜFT 5BOUP Java  DPNP C#  QPTTVFN DPMFÎÜFT "RVJ TFSÍP
BQSFTFOUBEBT BT NBJT VUJMJ[BEBT EF BNCBT &YJTUFN BJOEB PVUSBT
DPMFÎÜFT FDBTPTFEFTFKFDPNQMFNFOUBSPTFTUVEPT QPEFTFSFDPSSFS
ËTEPDVNFOUBÎÜFTEFUBJTMJOHVBHFOT

-JTUBT

%JGFSFOUF EPT WFUPSFT  VNB MJTUB OÍP QPTTVJ UBNBOIP GJYP &MB
QPEFDSFTDFSEF BDPSEPDPN BOFDFTTJEBEF"MÏN EJTUP P QSPDFTTP
EF JODMVTÍP Ï TJNQMJGJDBEP EFWJEP B OÍP TFS QSFDJTP GB[FS DØQJB EF
VNBMJTUBQBSBPVUSB ArrayList FN Java F List FN C# TÍPBT
DMBTTFT SFTQPOTÈWFJT QPS SFQSFTFOUBS FTTB FTUSVUVSB " TFHVJS  WFKB
FYFNQMPTEFDPNPVTÈMBT
//Java
import java.util.ArrayList;

public class ExemploLista {

public static void main(String[] args) {

ArrayList<Aluno> listaNomes = new ArrayList<>();

186 9.5 BP05: CONHEÇA E USE COLEÇÕES


//1
listaNomes.add(new Aluno("Fulnano"));
listaNomes.add(new Aluno("Cicrano"));
listaNomes.add(new Aluno("Beltrano"));
System.out.println(listaNomes.size());

//2
for(String item: listaNomes) {
System.out.println(item.getNome());
}

//3
System.out.println(listaNomes.contains(new Aluno("Cicrano"
)));

//4
listaNomes.remove(new Aluno("Cicrano"));
listaNomes.remove(1);
System.out.println(listaNomes.size());

//5
for(Aluno item: listaNomes) {
System.out.println(item);
}
}
}

//C#
using System.Collections.Generic;

public class ExemploLista


{
static void main(String[] args)
{
List<Aluno> listaNomes = new List<Aluno>();

//1
listaNomes.Add(new Aluno("Fulnano"));
listaNomes.Add(new Aluno("Cicrano"));
listaNomes.Add(new Aluno("Beltrano"));
System.Console.WriteLine(listaNomes.Count);

//2
foreach (Aluno item in listaNomes)
{
System.Console.WriteLine(item.Nome);
}

9.5 BP05: CONHEÇA E USE COLEÇÕES 187


//3
System.Console.WriteLine(listaNomes.Contains(new Aluno("Ci
crano")));

//4
listaNomes.Remove(new Aluno("Cicrano"));
listaNomes.RemoveAt(1);
System.Console.WriteLine(listaNomes.Count);

//5
foreach (Aluno item in listaNomes)
{
System.Console.WriteLine(item);
}

System.Console.ReadLine();
}
}

"QØT DSJBS BT MJTUBT FN //1  TÍP BDSFTDFOUBEPT  JUFOT F TVB
DBQBDJEBEF Ï BQSFTFOUBEB /PUF B QSBUJDJEBEF &N //2  B MJTUB Ï
QFSDPSSJEB F FYJCJEB 6N EFUBMIF B NBJT QPEF TFS FYQMJDBEP FN
//2 P for  -JOHVBHFOT PSJFOUBEBT B PCKFUPT QPTTVFN FTTF GPS
FTQFDJBM QBSB QFSDPSSFS BT DPMFÎÜFT 1FSDFCB RVF FMFT TÍP NBJT
TJNQMFTEPRVFPUSBEJDJPOBM for  FN RVF Ï OFDFTTÈSJP DSJBS VNB
WBSJÈWFMQBSBDPOUSPMFFJODSFNFOUP&TUF for QFSDPSSFDPMFÎÜFTEF
PCKFUPTEFGPSNBNBJTBNJHÈWFM

&N //3  Ï QPTTÓWFM WFSJGJDBS TF EFOUSP EB MJTUB FYJTUF P JUFN
Cicrano &N //4 ÏSFNPWJEPPJUFN Cicrano F MPHPEFQPJT P
JUFNEBQPTJÎÍP$PNFTUFQFRVFOPFYFNQMP MPHPÏQPTTÓWFMWFSB
GBDJMJEBEFEFNBOJQVMBÎÍPEFTUBDPMFÎÍP

188 9.5 BP05: CONHEÇA E USE COLEÇÕES


1"3" 26& 4&37&. 04 4¶.#0-04 &  & 0 26& &45« &/53& &-&4 0
26&&-&4'";&.$0."4$0-&±¿&4

&MFT TÍP SFTQPOTÈWFJT QPS QPTTJCJMJUBS P VTP EF HFOFSJDT &TUF


DPODFJUP OÍP QFSUFODF FGFUJWBNFOUF B 0SJFOUBÎÍP B 0CKFUPT
NBTBNBJPSJBEBTMJOHVBHFOTPSJFOUBEBTBPCKFUPTVTVGSVJEFTUB
DBSBDUFSÓTUJDB

2VBOEP VNB DPMFÎÍP Ï QBSBNFUSJ[BEB BUSBWÏT EF HFOFSJDT


TJHOJGJDBRVFFMBTPNFOUFBDFJUBSÈFMFNFOUPTRVFTFKBNEPUJQP
EFGJOJEPFOUSFPTTÓNCPMPT < F > /PDBTPEP ArrayList
BOUFSJPSNFOUF BQSFTFOUBEP  FMF TØ BDFJUBSÈ WBMPSFT EP UJQP
String $BTPUFOUFTFJOTFSJSBMHVNPVUSPUJQPEFFMFNFOUP
VNFSSPEVSBOUFPQSPDFTTPEFDPNQJMBÎÍP OPDBTP OP&DMJQTF
F 7JTVBM 4UVEJP  BQBSFDFSÈ  F BTTJN FWJUBSÈ FSSPT EVSBOUF B
FYFDVÎÍPEBBQMJDBÎÍP

.BQBT

4ÍP FTTBT DPMFÎÜFT RVF VTBN P QSJODÓQJP EF DIBWFWBMPS /FTUF


DBTP  OÍP TPNFOUF P JUFN Ï BSNB[FOBEP  NBT UBNCÏN VN
JEFOUJGJDBEPS QBSB FMF 7BMF SFTTBMUBS RVF FTUF JEFOUJGJDBEPS Ï ÞOJDP
EFOUSPEPNBQB

&N Java  BT DPMFÎÜFT HashMap  F HashTable  TÍP BT NBJT


VUJMJ[BEBT  QSJODJQBMNFOUF B QSJNFJSB %FWJEP B JTTP  P FYFNQMP
VTBSÈFTUB+ÈFN C# FYJTUFBDMBTTF Hashtable F Dictionary "
EJGFSFOÎBFOUSFFMBTÏRVFBTFHVOEBÏQBSBNFUSJ[BEB KÈBQSJNFJSB
OÍPÏ4FSÈVTBEBBTFHVOEBPQÎÍPEP C# EFWJEPËQBSBNFUSJ[BÎÍP
1PSÏN BGPSNBEFVTBSBDMBTTF Hashtable FN C# ÏBNFTNBEF
Dictionary 

9.5 BP05: CONHEÇA E USE COLEÇÕES 189


7FKBBTFHVJSFYFNQMPTEFDPNPVTÈMBT
//Java
import java.util.HashMap;

public class ExemploMapa {

public static void main(String[] args) {

HashMap<String, Aluno> map = new HashMap<>();

//1
map.put("A1", new Aluno("Fulano"));
map.put("A2", new Aluno("Cicrano"));
map.put("A3", new Aluno("Beltrano"));
System.out.println(map.size());

//2
System.out.println(map.containsKey("A3"));

//3
System.out.println(map.containsValue(new Aluno("Beltrano")
));

//4
for (Aluno aluno : map.values()) {
System.out.println(aluno.getNome());
}

//5
map.remove("A2");
System.out.println(map.size());

//6
System.out.println(map.get("A1"));
System.out.println(map.get("A1").getNome());
}
}

//C#
using System.Collections.Generic;

public class ExemploMapa


{
static void main(String[] args)
{
Dictionary<String, Aluno> dictionary = new Dictionary<Stri
ng, Aluno>();

190 9.5 BP05: CONHEÇA E USE COLEÇÕES


//1
dictionary.Add("A1", new Aluno("Fulano"));
dictionary.Add("A2", new Aluno("Cicrano"));
dictionary.Add("A3", new Aluno("Beltrano"));
System.Console.WriteLine(dictionary.Count);

//2
System.Console.WriteLine(dictionary.ContainsKey("A1"));

//3
System.Console.WriteLine(dictionary.ContainsValue(new Alun
o("Beltrano")));

//4
foreach (KeyValuePair<String, Aluno> item in dictionary)
{
System.Console.WriteLine(item.Value.Nome);
}

//5
dictionary.Remove("A3");
System.Console.WriteLine(dictionary.Count);

//6
System.Console.WriteLine(dictionary["A2"]);
System.Console.WriteLine(dictionary["A2"].Nome);

System.Console.ReadLine();
}
}

&N //1  BQØT DSJBS PT NBQBT  TÍP BEJDJPOBEPT  JUFOT F B


DBQBDJEBEFBUVBMEPTNBQBTTÍPBQSFTFOUBEBT&N //2 WFSJGJDBTF
TF VNB DIBWF FYJTUF OP NBQB F  FN //3  TF VN WBMPS FYJTUF &N
//4 NPTUSBTFDPNPQFSDPSSFSVNNBQB&N //5 SFNPÎÜFTTÍP
SFBMJ[BEBT 1PS GJN  FN //6  WFNPT DPNP BDFTTBS VN WBMPS
EJSFUBNFOUF OP NBQB .BJT VNB WF[  OPUF B GBDJMJEBEF EF
NBOJQVMBÎÍPEFTUBDPMFÎÍP

$POKVOUPT

"T DPMFÎÜFT RVF SFQSFTFOUBN FTUF DPODFJUP TÍP WFSTÜFT


TJNQMJGJDBEBTEPDPOKVOUPEBNBUFNÈUJDB#BTJDBNFOUF BQSJODJQBM

9.5 BP05: CONHEÇA E USE COLEÇÕES 191


DBSBDUFSÓTUJDB VUJMJ[BEB EPT DPOKVOUPT EB NBUFNÈUJDB QPS FTUBT
DPMFÎÜFT Ï OÍP QPTTJCJMJUBS JODMVTÍP EF FMFNFOUPT SFQFUJEPT &N
Java  F FN C#  B DMBTTF HashSet  Ï B JNQMFNFOUBÎÍP EFTUF
DPODFJUP"TFHVJS WFKBFYFNQMPT
//Java
import java.util.HashSet;

public class ExemploConjunto {

public static void main(String[] args) {

HashSet<Aluno> alunos = new HashSet<>();

//1
alunos.add(new Aluno("Fulano"));
alunos.add(new Aluno("Cicrano"));
alunos.add(new Aluno("Beltrano"));
alunos.add(new Aluno("Fulano"));
System.out.println(alunos.size());

//2
System.out.println(alunos.contains(new Aluno("Beltrano")));

//3
for (Aluno aluno : alunos) {
System.out.println(aluno.getNome());
}

//4
alunos.remove(new Aluno("Fulano"));
System.out.println(alunos.size());
}
}

//C#
using System.Collections.Generic;

public class ExemploConjunto


{
static void main(String[] args)
{
HashSet<Aluno> alunos = new HashSet<Aluno>();

//1
alunos.Add(new Aluno("Fulano"));
alunos.Add(new Aluno("Cicrano"));

192 9.5 BP05: CONHEÇA E USE COLEÇÕES


alunos.Add(new Aluno("Beltrano"));
alunos.Add(new Aluno("Fulano"));
System.Console.WriteLine(alunos.Count);

//2
System.Console.WriteLine(alunos.Contains(new Aluno("Beltrano")
));

//3
foreach (Aluno item in alunos) {
System.Console.WriteLine(item.Nome);
}

//4
alunos.Remove(new Aluno("Fulano"));
System.Console.WriteLine(alunos.Count);

System.Console.ReadLine();
}
}

&N //1  BQØT DSJBS PT DPOKVOUPT  TÍP BEJDJPOBEPT  JUFOT F B


DBQBDJEBEFBUVBMEPTDPOKVOUPTTÍPBQSFTFOUBEBT&SBEFTFFTQFSBS
DPNPSFTQPTUB NBTOPUFRVFPÞMUJNPFMFNFOUPBEJDJPOBEPÏJHVBM
BPQSJNFJSP-PHP PWBMPSEFWFTFSBQSFTFOUBEP

&N //2 ÏWFSJGJDBEPTFVNFMFNFOUPQFSUFODFBPDPOKVOUPF


FN //3  NPTUSBEP DPNP QFSDPSSFS P DPOKVOUP &N //4  TÍP
SFBMJ[BEBT SFNPÎÜFT *OGFMJ[NFOUF  OÍP Ï QPTTÓWFM BDFTTBS
EJSFUBNFOUF VN WBMPS EP DPOKVOUP DPNP TF GF[ FN MJTUBT F NBQBT
/PWBNFOUF OPUFBGBDJMJEBEFEFNBOJQVMBÎÍPEFTUBDPMFÎÍP

2VBMBNFMIPSDPMFÎÍP 2VBMEFWFTFSVTBEB
"QØT FTTB SÈQJEB JOUSPEVÎÍP TPCSF DPMFÎÜFT  FTTBT EVBT
QFSHVOUBTQPEFNTVSHJS"WFSEBEFÏRVFOÍPFYJTUFBNFMIPS NBT
TJNBRVFNBJTTFBEFRVBËTJUVBÎÍP$BTPBTFRVÐODJBEFJOTFSÎÍP
EFWB TFS QSFTFSWBEB F P BDFTTP QPTJDJPOBM EFWB TFS QPTTJCJMJUBEP
EFWFNTFSVTBEBTMJTUBT4FGPSOFDFTTÈSJPDSJBSJEFOUJGJDBEPSFTQBSB
PT FMFNFOUPT F B TFRVÐODJB OÍP GPS OFDFTTÈSJB  NBQBT EFWFN TFS

9.5 BP05: CONHEÇA E USE COLEÇÕES 193


VUJMJ[BEPT

"MÏNEJTUP NBQBTUÐNVNUFNQPEFBDFTTPNVJUPNBJTSÈQJEP
EP RVF MJTUBT  DBTP JTTP UBNCÏN TFKB VNB OFDFTTJEBEF 4F BDFTTP
EJSFUPOÍPGPSOFDFTTÈSJP NBTDPOUSPMFEFSFQFUJÎÍPGPSQSJNPSEJBM
DPOKVOUPTTFSÍPBCPMBEBWF[

$PN JTTP  QFSDFCFNPT RVF  QBSB DBEB TJUVBÎÍP  VNB DPMFÎÍP


EFWFSÈ TFS VTBEB  NBT JTTP OÍP B UPSOB TVQFSJPS BT PVUSBT /B
WFSEBEF  DBEB TJUVBÎÍP SFRVFS VN VTP BQSPQSJBEP F  TØ DPN P
EPNÓOJPEFUPEBTBTDPMFÎÜFT BTEFDJTÜFTDPSSFUBTTFSÍPUPNBEBT

#140#3&4$3&7"&26"-4 )"4)$0%&
&50453*/(
&JTPTUSÐTNPTRVFUFJSPT&NCPSBOÍPTFKBPCSJHBUØSJP ÏNVJUP
JNQPSUBOUF QSJNPSEJBM  TPCSFTDSFWFS FTUFT NÏUPEPT *TUP Ï NVJUP
NBJT EP RVF VNB CPB QSÈUJDB  Ï VNB GPSNB EF FWJUBS SFTVMUBEPT
JOEFTFKBEPT 1BSB EFNPOTUSBS PT FGFJUPT DPMBUFSBJT EF OÍP
TPCSFTDSFWÐMPT PTFYFNQMPTEB#1TFSÍPSFWJTJUBEPT

² NVJUP DPNVN  BUÏ JOFWJUÈWFM  VNB BQMJDBÎÍP VUJMJ[BS BMHVNBT


EBT DPMFÎÜFT BQSFTFOUBEBT BOUFSJPSNFOUF /P FYFNQMP EF VTP EF
MJTUBT NBQBTFDPOKVOUPT IBWJBDIBNBEBTBPTNÏUPEPTEFSFNPÎÍP
EF JUFOT  NÏUPEPT EF QFTRVJTBT F UBNCÏN BDFTTBOEP EJSFUP BMHVOT
EPTJUFOTEBTDPMFÎÜFT"TFHVJS WFKBPRVFBDPOUFDFRVBOEPOÍPTF
TPCSFTDSFWFFTUFTNÏUPEPTFTFVUJMJ[BDPMFÎÜFT

3FNPÎÜFTFQFTRVJTBT
//Java
//ArrayList
listaNomes.remove(new Aluno("Cicrano"));
listaNomes.contains(new Aluno("Cicrano"))

//HashMap
map.containsValue(new Aluno("Beltrano"))

194 9.6 BP06: SOBRESCREVA EQUALS, HASHCODE E TOSTRING


//HashSet
alunos.remove(new Aluno("Fulano"));
alunos.contains(new Aluno("Beltrano"));

//C#
//List
listaNomes.Remove(new Aluno("Cicrano"));
listaNomes.Contains(new Aluno("Cicrano"));

//Dictionary
dictionary.Remove("A3");
dictionary.ContainsValue(new Aluno("Beltrano"));

//HashSet
alunos.Remove(new Aluno("Fulano"));
alunos.Contains(new Aluno("Beltrano"));

² EF TF FTQFSBS RVF UPEBT BT DIBNBEBT BPT NÏUPEPT


BOUFSJPSNFOUFBQSFTFOUBEPTPCUFOIBNTVDFTTP PVTFKB BTSFNPÎÜFT
TFKBNSFBMJ[BEBTFBTQFTRVJTBTQFMPTNÏUPEPT contains SFUPSOFN
true &OUSFUBOUP TFPNÏUPEP equals FTFVQBSDFJSP hashCode
QBSBBDMBTTF Aluno OÍPUJWFSFNTJEPTJNQMFNFOUBEPT UPEBTFTUBT
DIBNBEBTGBMIBSÍP

"HPSB OPUF P QPSRVÐ EF UBM GBMIB Aluno  Ï VN UJQP EF EBEP
EFGJOJEPQPSVNQSPHSBNBEPS& Java F C# OÍPTBCFNPRVFFMF
Ï  BQFOBT BDFJUBSBN RVF FMF GPTTF EFGJOJEP &TUBT MJOHVBHFOT OÍP
TBCFNDPNPEFUFSNJOBSPRVFUPSOBVNBMVOPJHVBMBPVUSP

&NCPSB QPTTB QBSFDFS ØCWJP FTUF SBDJPDÓOJP  Ï NVJUP DPNVN


JOJDJBOUFT QFOTBSFN EB TFHVJOUF GPSNB Ï NVJUP TJNQMFT B
EFUFSNJOBÎÍPEFJHVBMEBEFEFVNBMVOP/ÍPGBSFJP equals KÈRVF
TPNFOUF VN BUSJCVUP VNB NBUSÓDVMB PV $1'  Ï VTBEP 'BSFJ B
DPNQBSBÎÍPEJSFUBEFTUFTBUSJCVUPT*OGFMJ[NFOUF FTUBTJNQMJGJDBÎÍP
SFTVMUBSÈ FN GBMIBT GVUVSBT Java  F C#  OÍP DPOTFHVJSÍP
EFUFSNJOBS P RVF UPSOB BMVOPT JHVBJT  F BUÏ OPUBSNPT RVF B OÍP
JNQMFNFOUBÎÍPEP equals ÏPHSBOEFWJMÍPEBIJTUØSJB IPSBTUFSÍP
TJEPQFSEJEBT

9.6 BP06: SOBRESCREVA EQUALS, HASHCODE E TOSTRING 195


1PS GJN  BMÏN EF HFSBS P DFOÈSJP BEWFSTP DJUBEP  IÈ VNB PVUSB
HSBWF GBMIB P FODBQTVMBNFOUP Ï GFSJEP &YQPS B MØHJDB EF
EFUFSNJOBÎÍPEFJHVBMEBEFFFTQBMIÈMBQFMPDØEJHP BMÏNEFUPSOBS
P DØEJHP GSÈHJM F QSPQÓDJP B FSSPT  Ï DPNP TF SFWJTJUÈTTFNPT B
QSPHSBNBÎÍP FTUSVUVSBEB  OB RVBM UVEP FSB GFJUP EF GPSNB NFOPT
PSHBOJ[BEBFSFVUJMJ[ÈWFM

"DFTTPEJSFUPBJUFOT
0TDØEJHPTBTFHVJSTFSWFNQBSBFYJCJSPTPCKFUPT Alunos 
//Java
//Array
for(Aluno item: listaNomes) {
System.out.println(item);
}

//HashMap
System.out.println(map.get("A1"));

//C#
//List
foreach (Aluno item in listaNomes)
{
System.Console.WriteLine(item);
}

//Dictionary
System.Console.WriteLine(dictionary["A2"]);

1PSÏN TFPTSFTQFDUJWPTNÏUPEPT toString OÍPUJWFSFNTJEPT


DPEJGJDBEPT NBJTVNBWF[PSFTVMUBEPTFSÈJOFTQFSBEP&N Java
WBJ BQBSFDFS P OPNF EB DMBTTF DPN TFV QBDPUF DPNQMFUP  P DØEJHP
IBTIF FN C# POPNFEBDMBTTFDPNTFVOBNFTQBDF

&TTFUJQPEFJODÙNPEPQPEFTFUPSOBSNBJTDPNVNDBTPWÈSJBT
DPODBUFOBÎÜFTTFKBNGFJUBTEJSFUBNFOUFDPNPCKFUPT/FTUFDBTP UBJT
MJOHVBHFOTJNQMJDJUBNFOUFDIBNBSÍPTFVT toString  F  DPNP FMFT
OÍPGPSBNEFGJOJEPT FTTBFYJCJÎÍPOBEBBNJHÈWFMTFSÈBQSFTFOUBEB
/PWBNFOUF  RVFTUÜFT EF RVFCSB EF FODBQTVMBNFOUP  GSBHJMJEBEF EF

196 9.6 BP06: SOBRESCREVA EQUALS, HASHCODE E TOSTRING


DØEJHPFQSPHSBNBÎÍPFTUSVUVSBEBWJSÍPËUPOB

 #1 ®4 7&;&4 ² .&-)03 "440$*"3 &.


7&;%&)&3%"3
" NBJPSJB EPT JOJDJBOUFT FN QSPHSBNBÎÍP PSJFOUBEB B PCKFUPT
QFOTBRVFBIFSBOÎBÏBQSJODJQBMGPSNBEFSFÞTP.BT OBWFSEBEF B
SFBM GVOÎÍP EB IFSBOÎB OÍP Ï QPTTJCJMJUBS P SFÞTP  NBT TJN DSJBS
TVCUJQPT&JTTPKÈUJOIBTJEPEJUPBOUFT

1PEFNPTUFSSFÞTPTFNOFDFTTBSJBNFOUFUFSIFSBOÎB6NBQSPWB
EJTUP GPSBN PSHBOJ[BÎÜFT GFJUBT OB #1 'PSBN DSJBEPT NÏUPEPT
QSJWBEPT QBSB FODBQTVMBS DØEJHPT RVF TF SFQFUJBN  RVF GPSBN
DIBNBEPTFNWÈSJPTQPOUPTEFVNPVUSPNÏUPEP0VTFKB PDØEJHP
GPJSFVTBEPTFNBFYJTUÐODJBEFIFSBOÎB

/ÍP UFS FTUB QFSDFQÎÍP EF SFÞTP TFN IFSBOÎB HFSB TJUVBÎÜFT
DPNPBEFTDSJUBBTFHVJSVNQSPHSBNBEPSFTUÈJNQMFNFOUBOEPVN
TJUF EF WFOEBT F DIFHPV P NPNFOUP EFMF DPEJGJDBS P DBSSJOIP EF
DPNQSBT$PNPOFTUFTFSÍPBSNB[FOBEPTWÈSJPTQSPEVUPT ÏNVJUP
DPNVNJOJDJBOUFTGB[FSFNBTFHVJOUFDPEJGJDBÎÍP
//Java
public class carrinhoCompras extends ArrayList {

...
}

//C#
public class carrinhoCompras : List
{
...
}

&NCPSB QPTTB QBSFDFS B NFMIPS PQÎÍP EFWJEP BP ArrayList


QPTTJCJMJUBS P BSNB[FOBNFOUP EF WÈSJPT PCKFUPT  TFOEP KVTUBNFOUF
JTUP P RVF P DBSSJOIP GB[  BMÏN EF TF QPEFS SFVTBS UPEBT BT
GBDJMJEBEFT EF NBOJQVMBÎÍP EF PCKFUPT DPNP JOTFSJS  FYDMVJS

9.7 BP07: ÀS VEZES É MELHOR ASSOCIAR EM VEZ DE HERDAR 197


BUVBMJ[BS  FOUSF PVUSBT  BP TF GB[FS VNB BOÈMJTF NBJT QSPGVOEB
WÈSJPTFSSPTTVSHFN&TUFTTFSÍPBQSFTFOUBEPTBTFHVJS

2VFCSBTFNÉOUJDB
6NDBSSJOIPEFDPNQSBTOÍPÏVNBMJTUB%FWFNPTMFNCSBSEF
RVFIFSBOÎBÏQBSBDSJBSTVCUJQPT0SFÞTPÏVNBDPOTFRVÐODJBEP
VTPEFIFSBOÎB"IFSBOÎBUFNDPNPQSJODJQBMGJOBMJEBEFBDSJBÎÍP
EFTVCUJQPT

2VFCSBEFFODBQTVMBNFOUP
2VBOEPVNBDMBTTFIFSEBEBPVUSB FMFTFUPSOBVNBWFSTÍPNBJT
FTQFDÓGJDBEFTVBTVQFSDMBTTF$PNJTTP FMBUFNBDFTTPBBMHVOTEF
TFVTNÏUPEPTF JOGFMJ[NFOUF BPTFVFTUBEP*TUPÏVNBHSBWFRVFCSB
EFFODBQTVMBNFOUP

$MBTTFT DPNP ArrayList  FN Java  TÍP GFJUBT QBSB TFSFN


VTBEBTEFGPSNBRVFTVBDPNQMFYJEBEFJOUFSOBTFKBEFTQSF[BEB"P
TF UFS BDFTTP Ë TVB JNQMFNFOUBÎÍP  BDFTTPT JOEFWJEPT QPEFN TFS
QPTTJCJMJUBEPT PRVFQPEFHFSBSDPNQPSUBNFOUPTJOFTQFSBEPT

'PSUFBDPQMBNFOUP
&NCPSB TFKB VN DPODFJUP JNQPSUBOUF F RVF EFWF TFS VTBEP  B
IFSBOÎB HFSB VN BMUP BDPQMBNFOUP 6NB TVCDMBTTF Ï GJMIB EF TVB
TVQFSDMBTTF  EFQFOEFOEP GPSUFNFOUF EFMB QBSB FYJTUJS $BTP
BMUFSBÎÜFTTFKBNGFJUBTOBDMBTTFNÍF BTGJMIBTTFSÍPBGFUBEBTF NBJT
VNBWF[ DPNQPSUBNFOUPTJOFTQFSBEPTQPEFNTVSHJS

0RVFGB[FSFOUÍP
1BSFDF RVF IFSBOÎB OÍP Ï CPN F EFWF TFS FWJUBEB &SSBEP /B
WFSEBEF  B IFSBOÎB EFWF TFS VTBEB OP MVHBS DFSUP F OB IPSB DFSUB
$PNP EJUP FMB Ï QBSB DSJBS TVCUJQPT  P SFÞTP Ï VNB EBT

198 9.7 BP07: ÀS VEZES É MELHOR ASSOCIAR EM VEZ DE HERDAR


DPOTFRVÐODJBT CPBT EFTFVTÈMB

.VJUBTDMBTTFTTÍPQSPKFUBEBTTPNFOUFQBSBTFSFNIFSEBEBT QPJT
TFSWFNBQFOBTEFNPMEFQBSBPVUSBT OPDBTPTVCUJQPT6NFYFNQMP
EJTUPÏBDMBTTF AbstractCollection FN Java &MBÏVNBDMBTTF
RVF SFQSFTFOUB VNB DPMFÎÍP UÍP CÈTJDB RVF OÍP TF UFN DPNP
USBCBMIBS EJSFUBNFOUF DPN FMB  NBT BT DMBTTFT ArrayList  F
HashSet FN Java TÍPTVCDMBTTFTEFMBT OÍPEJSFUBNFOUF

&N TJUVBÎÜFT DPNP B DJUBEB BOUFSJPSNFOUF  OBT RVBJT


QSFDJTBNPTEFSFÞTP‰NBTOÍPIÈBSFMBÎÍPEFÏVN FTJNVNB
SFMBÎÍP EF VTB VN  QSFDJTB EF VN ‰  B BTTPDJBÎÍP Ï NVJUP
NFMIPS /B WFSEBEF  Ï B ÞOJDB PQÎÍP "TTJN  OÍP IÈ RVFCSB
TFNÉOUJDB  QPJT VN DBSSJOIP EF DPNQSB QSFDJTB EF VNB MJTUB EF
QSPEVUPT  F OÍP Ï VNB 6N DBSSJOIP OÍP QSFDJTB TBCFS DPNP Ï P
QSPDFTTPEFBSNB[FOBNFOUPEPTQSPEVUPTOBMJTUB FMFTPNFOUFRVFS
BSNB[FOÈMPT

"T MJTUBT  OP DBTP ArrayList  PV List  TPGSFSFN BMUFSBÎÜFT


EFWJEP ËT TVBT MJOHVBHFOT  F FTUBT EFWFN TFS USBOTQBSFOUFT QBSB
RVFNBTVTBN$PNJTUP OPUFRVFOFTUFDBTPBBTTPDJBÎÍPUPSOPVP
DØEJHP NVJUP NBJT PSJFOUBEP B PCKFUP  NBJT GMFYÓWFM F NFOPT
BDPQMBEP"TFHVJS WFKBDPNPPDØEJHPGJDBSJBDPNUBMNFMIPSJB
//Java
public class CarrinhoCompras {

private ArrayList<produto> produtos;

...
}

//C#
public class CarrinhoCompras
{
private List<produto> produtos;

...
}

9.7 BP07: ÀS VEZES É MELHOR ASSOCIAR EM VEZ DE HERDAR 199


#14&'030$"40 &7*5&")&3"/±"
06 1&-0.&/04 "40#3&4$3*5"
/B #1  GPJ DJUBEP RVF FYJTUFN DMBTTFT RVF TÍP EFGJOJEBT
FTQFDJBMNFOUF QBSB TFSFN IFSEBEBT 5BNCÏN GPJ EJUP RVF P VTP
JOEFWJEP EF IFSBOÎB QPEF HFSBS FSSPT EF FODBQTVMBNFOUP F
BDPQMBNFOUP 3FTTBMUBTF UBNCÏN RVF  EFWJEP B FTUFT GBUPT  B
IFSBOÎBBJOEBEFWFTFSVTBEB TØRVFOPMVHBSDFSUPFOBIPSBDFSUB

&OUÍPDPNPCMJOEBSPDØEJHPQBSBRVFEFUFSNJOBEBTDMBTTFTOÍP
QPTTBN TFS IFSEBEBT F  BTTJN  FWJUBS UBJT TJUVBÎÜFT BEWFSTBT
3FTQPTUB BT DMBTTFT EFWFN TFS JNQPTTJCJMJUBEBT EF TFSFN IFSEBEBT
4ØBTTJNQPEFSÍPTFSFWJUBEPTFSSPT.BTDPNPÏFTUFNFDBOJTNP

-JOHVBHFOTDPNP Java F C# QPTTVFNNFJPTEFJNQPTTJCJMJUBS


RVF EFUFSNJOBEBT DMBTTFT TFKBN TVQFSDMBTTFT EF PVUSBT DMBTTFT
VUJMJ[BOEP BT QBMBWSBT SFTFSWBEBT final  F sealed
SFTQFDUJWBNFOUF $PN P VTP EFTUBT  B IJFSBSRVJB EF DMBTTF Ï
GJOBMJ[BEBOBTDMBTTFTFNRVFFMBTGPSBNVTBEBT

$PN JTUP  VNB QFSHVOUB QPEF TVSHJS SFBMNFOUF IÈ FTTB


OFDFTTJEBEF 3FTQPTUBTJN FBTDMBTTFT String EFTUBTMJOHVBHFOT
TÍPFYFNQMPTEJTUP

$BTPGPTTFQFSNJUJEPRVFTVCDMBTTFTEF String GPTTFNDSJBEBT


QPTTJWFMNFOUF P DPNQPSUBNFOUP QBESÍP EB NBOJQVMBÎÍP EF
BUSJCVUPT EP UJQP UFYUP TFSJBN BGFUBEPT 'BDJMNFOUF FSSPT TFSJBN
JOUSPEV[JEPT F B JMVTÍP EF RVF FTTB TVCDMBTTF BUFOEFSJB EF GPSNB
NBJTFTQFDÓGJDBBTOFDFTTJEBEFTMPHPJSJBQPSÈHVBBCBJYP

0 DPNQPSUBNFOUP GPSOFDJEP QPS Java  F C#  QBSB B


NBOJQVMBÎÍP EF TUSJOHT DPN DFSUF[B Ï P TVGJDJFOUF QBSB BUFOEFS B
UPEBT BT OFDFTTJEBEFT /ÍP IÈ OFDFTTJEBEF BMHVNB EF TF DSJBS VN
TVCUJQPEF String -PHP BIFSBOÎBBQBSUJSEFTUBTDMBTTFTEFWFTFS
FWJUBEBPV NFMIPSEJ[FOEP QSPJCJEB

200 9.8 BP08: SE FOR O CASO, EVITE A HERANÇA OU, PELO MENOS, A
SOBRESCRITA
" TFHVJS  WFKB DPNP GPJ EFGJOJEP FN Java  F FN C#  RVF B
DMBTTF String  OÍP QPTTJCJMJUF IFSBOÎB %FTDPOTJEFSF BT
JOGPSNBÎÜFTBNBJTRVFBQBSFDFNOBEFGJOJÎÍPEFUBJTDMBTTFT GPRVF
TPNFOUFOP final F sealed 
//Java
public final class java.lang.String implements java.io.Serializable
, java.lang.Comparable, java.lang.CharSequence {
...
}

//C#
public sealed class String : IComparable, ICloneable, IConvertible
, IComparable<string>, IEnumerable<char>, IEnumerable, IEquatable<
string>
{
...
}

1PSÏN  FYJTUF UBNCÏN B TJUVBÎÍP FN RVF B IFSBOÎB EFWF TFS


QFSNJUJEB  NBT BMHVOT EPT NÏUPEPT IFSEBEPT OÍP EFWFN TFS
TPCSFTDSJUPT"TTJN PVTPEBTQBMBWSBT final F sealed OÍPEFWF
NBJT TFS BQMJDBEP OB DMBTTF  NBT TJN FN BMHVOT NÏUPEPT %FTTB
GPSNB  B TPCSFTDSJUB F QPTTÓWFJT DPNQPSUBNFOUPT QPMJNØSGJDPT TÍP
FWJUBEPT"TFHVJS WFKBDPNPJNQMFNFOUBSUBMTJUVBÎÍP
//Java
public class MinhaClasse {

public final void metodo1()


...
}

public void metodo2() {


...
}
}

//C#
public class MinhaClasse
{

public sealed void Metodo1()


{
...

9.8 BP08: SE FOR O CASO, EVITE A HERANÇA OU, PELO MENOS, A SOBRESCRITA
201
}

public void Metodo2()


{
...
}
}

"DPEJGJDBÎÍPBOUFSJPSJMVTUSBRVFTVCDMBTTFTEF MinhaClasse
QPEFN TFS DSJBEBT &OUSFUBOUP  OÍP TFSÈ QFSNJUJEB B TPCSFTDSJUB EF
metodo1()  QPJT UBM PQFSBÎÍP GPJ QSPJCJEB QFMP VTP EF final  F
sealed 

'*/"-7&34644&"-&%

&N+BWB BQBMBWSB final QPEFTFSVTBEBFNDMBTTFT NÏUPEPT


F UBNCÏN FN BUSJCVUPT /FTUF DBTP  FMB NVEB EF
DPNQPSUBNFOUP.BTJTTPKÈUJOIBTJEPEJUP"PTFVTBS final
FNBUSJCVUPT FMFTTFUPOBNOBWFSEBEFDPOTUBOUFT PVTFKB TFVT
WBMPSFTOÍPQPEFNNVEBS&N C# BQBMBWSB sealed  TØ TF
BQMJDB B DMBTTFT F NÏUPEPT 1BSB B DSJBÎÍP EF DPOTUBOUFT  B
QBMBWSB readonly  Ï RVF EFWF TFS VUJMJ[BEB *TUP UBNCÏN KÈ
IBWJBTJEPDJUBEP

3FTVNJEBNFOUF UPEBWF[RVFTVBBQMJDBÎÍPQPTTVJSDMBTTFTRVF
SFQSFTFOUBNEFUFSNJOBEPTDPODFJUPTRVFKÈTÍPPGJNEBIJFSBSRVJB
EFDMBTTFT‰PVTFKB KÈTÍPTVGJDJFOUFNFOUFSFQSFTFOUBEPTEFGPSNB
TFNÉOUJDB F DPNQPSUBNFOUBM ‰  UPSOF UBJT DMBTTFT GJOBJT F TFMBEBT
$BTP FYJTUBN DMBTTFT RVF EFWBN TFS IFSEBEBT  NBT OFTUBT FYJTUBN
EFUFSNJOBEPT NÏUPEPT B TFSFN QSFTFSWBEPT QBSB HBSBOUJS P
FODBQTVMBNFOUP UPSOFTPNFOUFFTUFTGJOBJTFTFMBEPT

 #1 4& 13&0$61& $0. 0

202 9.9 BP09: SE PREOCUPE COM O ENCAPSULAMENTO


&/$"146-".&/50
6NB CPB NFEJEB EF RVBMJEBEF EF VNB BQMJDBÎÍP PSJFOUBEB B
PCKFUPÏPRVBOUPFMBÏFODBQTVMBEB$FSUBNFOUFPDPSSFSÍPDFOUFOBT
EF USPDBT EF NFOTBHFOT FOUSF EJWFSTBT DMBTTFT 1BSB SFBMJ[BS UBJT
USPDBT  NÏUPEPT TFSÍP FYFDVUBEPT ² KVTUBNFOUF OB DSJBÎÍP EFTUFT
RVF EFWFNPT UPNBS NBJT DVJEBEP "MÏN EJTUP  DVJEBEPT DPN B
QSFTFSWBÎÍP EP FTUBEP JOUFSOP EPT PCKFUPT UBNCÏN EFWFN TFS
UPNBEPT

"QMJDBÎÜFTNBMQSPKFUBEBTHFSBNVNBHSBOEFEFQFOEÐODJBFOUSF
BT TVBT DMBTTFT  QPJT NÏUPEPT OÍP SFBMJ[BSBN CFN B UBSFGB EF
FTDPOEFS TVBT DPNQMFYJEBEFT EF JNQMFNFOUBÎÍP  F BUSJCVUPT
UFSNJOBN TFOEP BDFTTBEPT EJSFUBNFOUF 1BSB BKVEBS B DSJBS
BQMJDBÎÜFTNBJTFODBQTVMBEBT WFKBBTFHVJSBMHVNBTEJDBT

%FGJOBBTWJTJCJMJEBEFTEFGPSNBBEFRVBEB
7JB EF SFHSB  UPEBT BT DMBTTFT EFWFN TFS QÞCMJDBT $SJBS VNB
DMBTTFOÍPQÞCMJDB OPDBTP QSPUFHJEBPVQSJWBEB TØÏQPTTÓWFMDBTP
TFKB VNB DMBTTF JOUFSOB $PNP FTUF DPODFJUP OÍP GPJ BCPSEBEP OP
MJWSP  DBTP TF EFTFKF DPOIFDÐMP  WBMF B QFOB QFTRVJTBS OPWBNFOUF
OBTEPDVNFOUBÎÜFTEF Java F C# 

&N SFMBÎÍP BPT BUSJCVUPT F NÏUPEPT  B SFHSB NVEB VN QPVDP


*OJDJBOEP QFMPT BUSJCVUPT  FTUFT EFWFN TFS TFNQSF QSJWBEPT QBSB
HBSBOUJS B PDVMUBÎÍP EB JOGPSNBÎÍP  P FODBQTVMBNFOUP EP FTUBEP
JOUFSOPEPPCKFUP1PTTJCJMJUBSPBDFTTPEJSFUPBVNBUSJCVUP OPDBTP
EFGJOJOEPPDPNPQSPUFHJEPPVQÞCMJDP QPEFHFSBSGBMIBTHSBWFTEF
TFHVSBOÎB

0VTPEFTUBTWJTJCJMJEBEFTÏSBSÓTTJNPQBSBBUSJCVUPT&OUSFUBOUP
TF GPSFN OFDFTTÈSJBT  EFWFN TFS VNB FYDFÎÍP  PV TFSÍP VTBEBT
EFWJEP B PVUSBT OFDFTTJEBEFT  DPNP FYQPS WBMPSFT DPOTUBOUFT
BUSJCVUPT EF JOUFSGBDF ‰ QÞCMJDPT QPS QBESÍP ‰  FOUSF PVUSBT

9.9 BP09: SE PREOCUPE COM O ENCAPSULAMENTO 203


QFDVMJBSJEBEFT

/PRVFEJ[SFTQFJUPBPTNÏUPEPT KÈÏPDPOUSÈSJPFMFTEFWFNTFS
TFNQSF QÞCMJDPT QPS QBESÍP *TUP PDPSSF QPSRVF FMFT TÍP
SFTQPOTÈWFJTQPSEFGJOJSB"1* "QQMJDBUJPO1SPHSBNNJOH*OUFSGBDF 
&TUB Ï SFTQPOTÈWFM QPS EFUFSNJOBS P RVF TF QPEF GB[FS DPN VNB
EFUFSNJOBEB DMBTTF PV VN DPOKVOUP EFMBT NØEVMP  DPNQPOFOUF
FUD 

.ÏUPEPT QSJWBEPT EFWFN TFS VTBEPT QBSB PSHBOJ[BS B


DPEJGJDBÎÍP JOUFSOB EB DMBTTF &TUFT EFWFN BVYJMJBS PT NÏUPEPT
QÞCMJDPTBFYQPSFNB"1*²DPNPTFPTNÏUPEPTQÞCMJDPTGPTTFNB
WJTÍP FYUFSOB EPT NÏUPEPT QSJWBEPT  EPT QSPDFTTBNFOUPT
OFDFTTÈSJPTQBSBFYFDVUBSEFUFSNJOBEBTUBSFGBT FTUBTRVFOÍPTFSJBN
OFDFTTÈSJBT FYQPS EJSFUBNFOUF /B WFSEBEF  TFSJBN QSPJCJEBT  QPJT
QPEFSJBNFYQPSDPNQPSUBNFOUPTRVFTFUSBOTGPSNBSJBNFNGBMIBT
EFTFHVSBOÎB.BJTVNBWF[ NÏUPEPTQSPUFHJEPTTÍPVNDBTPSBSP

$VJEBEPDPNHFUTFTFUT
&NCPSB TFKB NVJUP DPNVN P VTP EF get/set  FMFT RVFCSBN
GBDJMNFOUFPFODBQTVMBNFOUP*TTPPDPSSFQPSRVF NFTNPEFGJOJOEP
VNBUSJCVUPDPNPQSJWBEP TFVNNÏUPEP set  GPS EFGJOJEP QBSB
FMF EFOBEBBEJBOUBSÈPBUSJCVUPTFSQSJWBEP#BTUBDIBNBSP set
QBSBBMUFSBSEJSFUBNFOUFTFVWBMPS0VTFKB BCMJOEBHFNEPFTUBEP
JOUFSOPEPPCKFUPGPJQBSBPFTQBÎP

0 VTP EFTUFT NÏUPEPT TF UPSOPV QBESÍP EFWJEP B BMHVNBT


QSÈUJDBTEF Java NBJTQSFDJTBNFOUFEPQBESÍP+BWB#FBOT0VUSP
GBUPS RVF EJGVOEJV NBJT FTUF VTP GPJ P TVSHJNFOUP EF GSBNFXPSLT
OPQSØYJNPDBQÓUVMP TFSÈWJTUPPRVFÏJTTP EFBDFTTPBCBODPEF
EBEPT UBJTDPNPP)JCFSOBUF²NVJUPDPNVNBTDMBTTFTRVFTFSÍP
TBMWBT OP CBODP UFSFN TPNFOUF PT BUSJCVUPT F get/set  QBSB
NBOJQVMBSTFVTWBMPSFT

204 9.9 BP09: SE PREOCUPE COM O ENCAPSULAMENTO


6NPVUSPGBUPSRVFFWJEFODJBPTFVVTPFYDFTTJWPÏPDIBNBEP
.PEFMP"OÐNJDP KÈDJUBEPOPDBQÓUVMP"TDMBTTFTTØQPTTVFNFTUFT
UJQPTEFNÏUPEPTBMÏNEPTBUSJCVUPT

1BSBUFOUBSNJOJNJ[BSPVTPEFTFOGSFBEPEFMFT BMHVOTDVJEBEPT
QPEFNTFSUPNBEPT

&NWF[EF set GBÎBVNBTPCSFDBSHBEPDPOTUSVUPS

² TFNQSF CPN VNB DMBTTF QPTTVJS VN DPOTUSVUPS


QBESÍP TFNQBSÉNFUSPT EFWJEPBPVTPEFGSBNFXPSLT
BGJOT.BTDBTPTFKBOFDFTTÈSJPQBTTBSVNFTUBEPJOJDJBM
QBSB VN PCKFUP SFDÏNDSJBEP  FN WF[ EF GB[FS
DIBNBEBT TFRVFODJBJT BPT set T  Ï NFMIPS RVF VN
DPOTUSVUPSTFKBDSJBEPSFDFCFOEPUBJTWBMPSFTEFTFKBEPT
"TTJN  BMÏN EF QSPWFS FTUF FTUBEP EF VNB TØ WF[
UFSNJOBFMJNJOBEPPT set T

&NWF[EF get GBÎBNÏUPEPTEFOFHØDJP

/ÍPFYQPOIBEJSFUBNFOUFPWBMPSBUSJCVUPQBSBEFQPJT
SFBMJ[BS VN QSPDFTTBNFOUP DPN FMF 0 NFMIPS Ï
EJTQPOJCJMJ[BS UBM QSPDFTTBNFOUP &TUF Ï VN QSJODÓQJP
DIBNBEP 5FMM  EPOhU BTL EJHB  OÍP QFSHVOUF  2VBOUP
NFOPTFODBQTVMBEPVNDØEJHP NBJTQFSHVOUBTFGB[
6NFYFNQMPCÈTJDPEJTUPÏPDØEJHPBTFHVJS

//Java

if (paciente.getFatura().getDataPagamento() != null) {
//pacienta pagou o plano de saude, então pode ser atendido.
}

//Java

if (paciente.Fatura.DataPagamento != null)
{
//pacienta pagou o plano de saude, então pode ser atendido.
}

9.9 BP09: SE PREOCUPE COM O ENCAPSULAMENTO 205


/P DØEJHP BOUFSJPS  OPUF RVF B MØHJDB EF TBCFS TF P QBDJFOUF
QPEF TFS BUFOEJEP EFQFOEF EJSFUBNFOUF EB EBUB EF QBHBNFOUP
"MÏN EJTUP  TF NBJT BMHVNB WFSJGJDBÎÍP OFDFTTJUBS TFS GFJUB
GVUVSBNFOUF QBSB EFUFSNJOBS P BUFOEJNFOUP EP QBDJFOUF  NBJT
QPOUPTFTQBMIBEPTOBBQMJDBÎÍPFYJTUJSÍP0DØEJHPBTFHVJSNFMIPSB
UBMTJUVBÎÍP
//Java

//Na classe `Paciente`


public boolean podeSerAtendito() {

return this.fatura.getDataPagamento() != null;


}

if (paciente.podeSerAtendito()) {
//processamento necessário
}

//Java

//Na classe `Paciente`


public bool PodeSerAtendito
{
get {return this.Fatura.DataPagamento != null;}
}

if (paciente.PodeSerAtendido())
{
//processamento necessário
}

$PNFTUBNFMIPSJB GBDJMNFOUFQFSDFCFTFRVF TFBMHPBNBJTGPS


OFDFTTÈSJPQBSBEFUFSNJOBSPBUFOEJNFOUPEPQBDJFOUF TFSÈGFJUBB
NBOVUFOÎÍP FN VN TØ MPDBM  OP DBTP OP NÏUPEP
podeSerAtendido  /PUF UBNCÏN RVF  OP if  OÍP GPJ
QFSHVOUBEP BP QBDJFOUF TF FMF QPEF TFS BUFOEJEP  F FMF KÈ EJTTF TF
QPEFSJBPVOÍP

&N SFTVNP FNCPSB PT gets/sets  TFKBN BNQMBNFOUF


VUJMJ[BEPT  FMFT OÍP TÍP B NFMIPS PQÎÍP QBSB NFMIPSBS P
FODBQTVMBNFOUP.BTJTUPOÍPTJHOJGJDBRVFEFBHPSBFNEJBOUFFMFT

206 9.9 BP09: SE PREOCUPE COM O ENCAPSULAMENTO


EFWBNTFSFWJUBEPT&MFTTÍPGÈDFJTEFVTBS TFUPSOBSBNVNQBESÍP
BMÏNEFEFJYBSPDØEJHPGÈDJMEFFOUFOEFS

"MÏN EJTTP  Ï QPTTÓWFM NBOUFS B TFHVSBOÎB EB BQMJDBÎÍP DPN B


BQMJDBÎÍP EF PVUSB QPMÓUJDB EF TFHVSBOÎB 1PSÏN  Ï QPTTÓWFM VUJMJ[BS
PVUSBTBMUFSOBUJWBTBPT gets/sets QBSB SFBMJ[BSBTNFTNBT BÎÜFT
%FWFTFSFTDPMIJEBBRVFNFMIPSBUFOEFSBOFDFTTJEBEF

4FGPSPDBTP CMJOEFPFTUBEPEPPCKFUPEFGJOJUJWBNFOUF
"MHVNBTWF[FT ÏOFDFTTÈSJPOÍPQFSNJUJSRVFPFTUBEPEPPCKFUP
NVEFEVSBOUFTVBFYJTUÐODJB0TWBMPSFTJOJDJBMNFOUFQBTTBEPT WJB
VNDPOTUSVUPSDPNQBSÉNFUSPT OÍPQPEFNNVEBSBUÏBEFTUSVJÎÍP
EFTUFPCKFUP&TUBTJUVBÎÍPÏDPOIFDJEBDPNPDMBTTFTJNVUÈWFJT&TUBT
DMBTTFTDPOTFRVFOUFNFOUFDSJBNPCKFUPTJNVUÈWFJT

&TUFUJQPEFOFDFTTJEBEFTVSHFRVBOEPNVEBSPFTUBEPEPPCKFUP
QPEF HFSBS SFTVMUBEPT JOEFTFKBEPT .BT VUJMJ[BS PT WBMPSFT JOJDJBJT
TFN NPEJGJDÈMPT Ï EF GVOEBNFOUBM JNQPSUÉODJB *TTP PDPSSF
QSJODJQBMNFOUF DPN QSPHSBNBÎÍP DPODPSSFOUF  OB RVBM WÈSJPT
QSPHSBNBTBDFTTBNPNFTNPPCKFUP$BTPBMHVNEFTUFTGBÎBVNB
BMUFSBÎÍPJOEFWJEB UPEPTPTEFNBJTQPEFNTFSBGFUBEPT/FTUFDBTP
ÏNBJTTFHVSPTPNFOUFFYQPSPFTUBEPJOUFSOPPVVTÈMPQBSBHFSBS
SFTVMUBEPTEFSJWBEPTBQBSUJSEFMF

5PSOBOEP P FYFNQMP VN QPVDP NBJT QBMQÈWFM F VUJMJ[BOEP B


BQMJDBÎÍPIPTQJUBMBSEFFYFNQMPEFTUFMJWSP WFKBNPTVNFYFNQMPEF
VNB DMBTTF RVF QPEFSJB UFS TJEP DSJBEB DPNP JNVUÈWFM  B
Neurocirurgia $BTPGPTTFVNBRVFTUÍPEFTFHVSBOÎBIPTQJUBMBS
OÍPQPEFSNPEJGJDBSVNQSPDFEJNFOUPNBSDBEPQBSB QPSFYFNQMP
NVEBSTVBEBUBEFFYFDVÎÍP NÏEJDPTFOWPMWJEPTFUD FTUBDMBTTFF
DPOTFRVFOUFNFOUF TFVTPCKFUPTEFWFSJBNTFSJNVUÈWFJT

/FTUF DBTP  TF GPTTF OFDFTTÈSJP BMHVNB NPEJGJDBÎÍP  FSB NBJT


QSVEFOUFDSJBSVNOPWPPCKFUP‰PVTFKB NBSDBSVNBOPWBDJSVSHJB

9.9 BP09: SE PREOCUPE COM O ENCAPSULAMENTO 207


EFTUFUJQP‰EPRVFBMUFSBSBFYJTUFOUF/FTUFDBTP PPCKFUPBOUFSJPS
UFSJBEFTFSEFTUSVÓEP QPJTOÍPTFSJBNBJTÞUJM

1BSBTFDSJBSDMBTTFTFPCKFUPTJNVUÈWFJT BMHVOTQBTTPTEFWFNTFS
TFHVJEPT

 /ÍPDSJBSPTNÏUPEPT set OFTUF DBTP VNDPOTUSVUPS DPN


QBSÉNFUSPT EFWF TFS EJTQPOJCJMJ[BEP QBSB QBTTBS P FTUBEP
JOJDJBMFÞOJDPEFTUFPCKFUP"QØTJTTP PTWBMPSFTOÍPNVEBSÍP
NBJT
 /ÍP QPTTJCJMJUBS RVF B DMBTTF TFKB TVQFSDMBTTF PV TFKB  FTUB
DMBTTFEFWFTFS final FN Java PV selad FN C#  *TTP
EFWF TFS GFJUP QPSRVF  DPNP VNB TVCDMBTTF Ï VN TVCUJQP EF
TVB TVQFSDMBTTF  UFSNJOB UFOEP BDFTTP B TFV FTUBEP F JTTP
GFSJSJB B OFDFTTJEBEF EF JOWJBCJMJ[BS B NBOJQVMBÎÍP F
DPOTFRVFOUFNFOUF BMUFSBÎÍPEPFTUBEPJOUFSOPEPPCKFUP
 *NQPTTJCJMJUBS B BMUFSBÎÍP EPT WBMPSFT EPT BUSJCVUPT OFTUF
DBTP  PT BUSJCVUPT EFWFN TFS EFDMBSBEPT DPNP final  FN
Jabva PV readonly FN C# 
 %FGJOJS PT BUSJCVUPT DPNP QSJWBEPT NBJT VNB WF[  FTUB
WJTJCJMJEBEFNPTUSBTVBJNQPSUÉODJB&NCPSBPTEFNBJTQBTTPT
TFKBN JNQPSUBOUFT QBSB UPSOB B DMBTTFPCKFUP JNVUÈWFM  EF
OBEBBEJBOUBSJBTFPBUSJCVUPOÍPGPTTFQSJWBEP

3FTVNJOEP BOBMJTBOEP B BQMJDBÎÍP F WFSJGJDBOEP TF FTTBT 


TJUVBÎÜFTFTUÍPTFNQSFUSBUBEBTEBGPSNBBEFRVBEB DFSUBNFOUFTVB
BQMJDBÎÍP TF UPSOBSÈ NBJT FODBQTVMBEB F  DPOTFRVFOUFNFOUF  NBJT
TFHVSB

 #1 4"*#" 64"3 */5&3'"$& & $-"44&


"#453"5"/0.0.&/50$&350
6NB EÞWJEB DPNVN Ï RVBOEP VTBS JOUFSGBDFT PV DMBTTFT
BCTUSBUBT &NCPSB BT EVBT TFKBN CFN QBSFDJEBT  FYJTUFN TJUVBÎÜFT

208 9.10 BP10: SAIBA USAR INTERFACE E CLASSE ABSTRATA NO MOMENTO


CERTO
OBT RVBJT DBEB VNB QPEF NFMIPS TFS BQMJDBEB RVF B PVUSB 1BSB
QPEFS JEFOUJGJDBS RVBM P NPNFOUP BEFRVBEP QBSB VTBS DBEB VNB
VNCPNQPOUPEFQBSUJEBÏSFWJTJUBSTVBTEFGJOJÎÜFT

$MBTTFBCTUSBUBDMBTTFRVFTFSWFEFNPMEFQBSBPVUSBT
DMBTTFT ² B JNQMFNFOUBÎÍP EJSFUB EP DPODFJUP EF
BCTUSBÎÍP F  EFWJEP B JTUP  OÍP QPEF TFS JOTUBODJBEB
&TUF UJQP EF DMBTTF QPEF EFGJOJS NÏUPEPT BCTUSBUPT PV
OÍP

*OUFSGBDF Ï B EFGJOJÎÍP EF VN DPOUSBUP  VNB


PCSJHBUPSJFEBEF EF JNQMFNFOUBÎÍP EPT TFSWJÎPT
QSPWJEPT /FTUB  TPNFOUF BT BTTJOBUVSBT EPT NÏUPEPT
FTUÍP EJTQPOÓWFJT  EFJYBOEP QBSB RVFN JNQMFNFOUB UBM
JOUFSGBDF QSPWFS P DPNQPSUBNFOUP OFDFTTÈSJP 1PS
QBESÍP  UPEPT TFVT NÏUPEPT EFWFN TFS QÞCMJDPT
BCTUSBUPT ‰ PV TFKB  OFOIVNB JNQMFNFOUBÎÍP Ï
QFSNJUJEB

5FOEP BQSFTFOUBEP OPWBNFOUF BT EFGJOJÎÜFT EFTUFT EPJT


DPODFJUPT EB 0SJFOUBÎÍP B 0CKFUPT  BHPSB QPEFNPT DPNFÎBS VNB
BOÈMJTF NBJT EFUBMIBEB EF BNCBT  F BTTJN DPOTFHVJS JEFOUJGJDBS P
NFMIPSNPNFOUPEFVUJMJ[BSDBEBVNEFMBT

$PNP QSJNFJSP QPOUP  DPOTFHVJNPT JEFOUJGJDBS RVF  FNCPSB


JOUFSGBDFTTFKBNVUJMJ[BEBTQBSBFNVMBSIFSBOÎBNÞMUJQMB FTUBOÍPÏ
TVBGJOBMJEBEF4ØRVFNSFBMNFOUFGPJDSJBEBQBSBDSJBSTVCUJQPTÏB
DMBTTFBCTUSBUB&TUBTJNDSJBVNBIJFSBSRVJBEFDMBTTFT EFTVCUJQPT
1PSÏN  OÍP Ï VN FSSP VTBS JOUFSGBDFT QBSB FNVMBS IFSBOÎB /B
WFSEBEF EFWFNPTTPNFOUFUPNBSDVJEBEPBPVUJMJ[BSJOUFSGBDFTQBSB
FTUFGJN

0 QSJODJQBM FGFJUP DPMBUFSBM EF FNVMBS IFSBOÎB NÞMUJQMB  PV


NFTNP TJNQMFT  DPN JOUFSGBDFT Ï VN GPSUF BDPQMBNFOUP DPN FMB
&NCPSB QPTTB TF QFOTBS JOJDJBMNFOUF EB TFHVJOUF GPSNB BDPQMBS

9.10 BP10: SAIBA USAR INTERFACE E CLASSE ABSTRATA NO MOMENTO CERTO


209
DPNPRVF KÈRVFOÍPFYJTUFNDPNQPSUBNFOUPTJNQMFNFOUBEPT FTUF
BDPQMBNFOUPPDPSSFEFWJEPBFTTBTVBQSØQSJBOBUVSF[BEFJYBSQBSB
PTJNQMFNFOUBEPSFTBEFGJOJÎÍPEPDPNQPSUBNFOUP

$BTPWÈSJBTDMBTTFTJNQMFNFOUFNVNBEFUFSNJOBEBJOUFSGBDF F
FN BMHVN NPNFOUP GPS OFDFTTÈSJP FWPMVJS FTUB JOUFSGBDF
BDSFTDFOUBOEP VNB OPWB BTTJOBUVSB EF NÏUPEP  UPEBT TVBT
JNQMFNFOUBÎÜFT UFSÍP EF TFS BUVBMJ[BEBT *TTP QPSRVF  DPNP TVB
QSØQSJBEFGJOJÎÍPEJ[ IÈVNBPCSJHBUPSJFEBEFEFJNQMFNFOUBÎÍPEPT
TFSWJÎPTQSPWJEPT.FTNPRVFPDPNQPSUBNFOUPTFKBJHVBMBUPEBTBT
JNQMFNFOUBÎÜFT UPEBTUFSÍPEFTFSBUVBMJ[BEBT

/FTUF DBTP  WBMF B QFOB SFGMFUJS TF FTTB IFSBOÎB SFBMNFOUF EFWF
TFSNÞMUJQMB PVNFTNPTFEFWFNPTVTBSJOUFSGBDFQBSBVNBIFSBOÎB
TJNQMFT$BTPTFDIFHVFËDPODMVTÍPEFRVFOÍP OFTUFDBTPÏNFMIPS
VUJMJ[BS VNB DMBTTF BCTUSBUB "TTJN  UPEBT BT DMBTTFT RVF IFSEBSFN
EFMBUBMWF[OÍPQSFDJTFNTFSBUVBMJ[BEBTDBTPFTUFOPWPNÏUPEPTFKB
DPNVNBUPEBTFUFOIBPNFTNPDPNQPSUBNFOUP

/FTUF DBTP  CBTUB EFGJOJS FTUF OPWP NÏUPEP DPN VNB


JNQMFNFOUBÎÍP QBESÍP  PV TFKB  OÍP BCTUSBUP F  BTTJN  DBEB
TVCDMBTTF GBSÈ B TPCSFTDSJUB EF BDPSEP DPN TVB OFDFTTJEBEF *TTP
PDPSSF QPSRVF DMBTTFT BCTUSBUBT TVQPSUBN NÏUPEPT OÍP BCTUSBUPT
1BSB GJOBMJ[BS  OPUF RVF JOUFSGBDFT TÍP NFOPT GMFYÓWFJT RVF DMBTTFT
BCTUSBUBT  QPJT FMBT QPEFN TFS NBJT GÈDFJT EF FWPMVJS FN
EFUFSNJOBEPTDBTPT+ÈJOUFSGBDFTTÍP QPSOBUVSF[B JOGMFYÓWFJT

6NTFHVOEPQPOUPÏVNBEFSJWBÎÍPEPQSJNFJSP1PSOÍPTFSFN
NVJUP GMFYÓWFJT QBSB FNVMBS IFSBOÎB  JOUFSGBDFT  BMÏN EF TFSFN
VUJMJ[BEBT QBSB DSJBS B JEFJB EF JOEFQFOEÐODJB EF JNQMFNFOUBÎÍP
UBNCÏN QPEFN TFS VTBEBT QBSB NBSDBS DMBTTFT /FTUF DBTP
TFNBOUJDBNFOUF GBMBOEP  DMBTTFT BCTUSBUBT SFBMNFOUF TÍP B GPSNB
DPSSFUBQBSBEFGJOJSUJQPTFTVCUJQPT PVTFKB VNBIJFSBSRVJB.BTP
RVF WFN B TFS VNB DMBTTF NBSDBEB  5BMWF[ VN FYFNQMP SFBM EF
TJTUFNBTDPSQPSBUJWPTTFKBVNBCPBGPSNBEFEFGJOJSJTUP

210 9.10 BP10: SAIBA USAR INTERFACE E CLASSE ABSTRATA NO MOMENTO


CERTO
1PS FYFNQMP  DBTP P TJTUFNB IPTQJUBMBS BQSFTFOUBEP OFTUF MJWSP
UJWFTTFBTFHVJOUFOFDFTTJEBEFBPTBMWBSEFUFSNJOBEBTFOUJEBEFTOP
CBODP EF EBEPT  EFWF TFS GFJUB VNB BVEJUPSJB TPCSF FTUFT EBEPT
TBMWPT/FTUFDBTP EFWFNTFSBSNB[FOBEPTRVFNBMUFSPVPTEBEPTF
B EBUB EB PQFSBÎÍP %FTUB GPSNB  BT FOUJEBEFT RVF OFDFTTJUBTTFN
EFTUB BVEJUPSJB EFWFSJBN JNQMFNFOUBS VNB JOUFSGBDF DIBNBEB
IAuditavel FBTTJNJNQMFNFOUBS EFGPSNBPCSJHBUØSJB PNÏUPEP
DadosAuditados gerarDadosAuditoria() 

$PN JTTP  TPNFOUF BT DMBTTFT RVF OFDFTTJUBWBN EFTUB PQFSBÎÍP


TFSJBNPCSJHBEBTBQSPWFSUBMDPNQPSUBNFOUP/FTUFDBTP TFFNWF[
EF VNB JOUFSGBDF  GPTTF VUJMJ[BEB VNB DMBTTF BCTUSBUB  VN FSSP
TFNÉOUJDP QPEFSJB TFS JOTFSJEP *TTP QPSRVF  DPNP FMB
QSPWBWFMNFOUFGPJJOTFSJEBFNVNOÓWFMCFNBMUPOBIJFSBSRVJBEF
DMBTTF‰QBSBBTTJNFWJUBSFSSPTEFDPNQJMBÎÍPOBTDMBTTFTDPODSFUBT
RVF FTUBSJBN OP GJOBM EB IJFSBSRVJB ‰  WÈSJBT DMBTTFT RVF OÍP
OFDFTTJUBSJBN TFS BVEJUBEBT QPTTVJSJBN UBM QPTTJCJMJEBEF *TUP
PDPSSFSJBEFWJEPËDBSBDUFSÓTUJDBEBIFSBOÎBDSJBSTVCUJQPT0VTFKB
IFSEBSJBN NFNCSPT EB DMBTTF NÍF  NFTNP RVF OÍP QSFDJTBTTFN
EFTUFT"TTJN QPTTÓWFJTBVEJÎÜFTJOEFTFKBEBTTFSJBNQPTTJCJMJUBEBT

1BSB GJOBMJ[BS  DBTP GPTTF UFOUBEP BVEJUBS VNB DMBTTF RVF OÍP
JNQMFNFOUBTTFBJOUFSGBDF IAuditavel VNFSSPPDPSSFSJB QPJTP
NÏUPEP DadosAuditados gerarDadosAuditoria()  OÍP FTUBSJB
QSFTFOUF4FGPTTFVNBIFSBOÎB FMFFTUBSJBEJTQPOÓWFM

1BSB FODFSSBS B #1  EVBT PCTFSWBÎÜFT GJOBJT QPEFN TFS


BQSFTFOUBEBT VNB TPCSF DMBTTF BCTUSBUB F VNB TPCSF JOUFSGBDF ²
NVJUP DPNVN JOJDJBOUFT DSJBSFN BT DIBNBEBT DMBTTFT DVSJOHB
&TUBTHFSBMNFOUFQPTTVFNNBJTEFVNBSFTQPOTBCJMJEBEF‰PVTFKB
SFQSFTFOUBN NBJT EF VN DPODFJUP /FTUF DBTP  TVB DPFTÍP Ï NVJUP
CBJYB1SBUJDBNFOUFJOFYJTUFOUF

$MBTTFT DVSJOHB UFOEFN B GJDBS EJGÓDFJT EF NBOUFS EFWJEP Ë


DPNQMFYJEBEF EF DØEJHP HFSBEB QFMB TBMBEB NJTUB EF DPODFJUPT

9.10 BP10: SAIBA USAR INTERFACE E CLASSE ABSTRATA NO MOMENTO CERTO


211
6N FYFNQMP EJTTP Ï VNB DMBTTF Pessoa  RVF  BP NFTNP UFNQP
QVEFTTFSFQSFTFOUBSVNB PessoaFisica FVNB PessoaJuridica 
/PUFPQSPCMFNB

"USJCVUPTDPNP cpf F cnpj  FTUBSJB EJTQPOÓWFJT QBSB BNCPT


"MÏN EJTUP  TFSJB OFDFTTÈSJP VN DPOUSPMF NBJT SÓHJEP F
DPOTFRVFOUFNFOUF  NBJT DPNQMFYP EF RVBM DPODFJUP FTUBSJB TFOEP
SFQSFTFOUBEP FN EFUFSNJOBEP NPNFOUP 4F $1' FTUJWFS
QSFFODIJEP ÏVNBQFTTPBGÓTJDBTFGPS$/1+ VNBQFTTPBKVSÓEJDB
.BTRVFNHBSBOUJSJBRVFFNEFUFSNJOBEPNPNFOUPVN$/1+OÍP
FTUBSJBQSFFODIJEPQBSBVNBQFTTPBGÓTJDB

/FTUFDBTP OÍPUFNPRVFEJTDVUJSVNBDMBTTFBCTUSBUBDIBNBEB
Pessoa  EFWF TFS DSJBEB 4PNFOUF BUSJCVUPT DPNVOT DPNP nome
FTUBSJBN EFGJOJEPT "TTJN PessoaFisica  F PessoaJuridica
GJDBSJBN SFTQPOTÈWFJT QPS EFGJOJS BUSJCVUPT NBJT FTQFDÓGJDPT F EF
GPSNB OÍP DPNQBSUJMIBEB /FTUB DBTP  cpf  F cnpj
SFTQFDUJWBNFOUFFFOUSFPVUSPTOFDFTTÈSJPT

5BNCÏN Ï NVJUP DPNVN JOJDJBOUFT VTBSFN JOUFSGBDFT QBSB


BQFOBT QSPWFSFN DPOTUBOUFT 1PS OBUVSF[B  BUSJCVUPT FN JOUFSGBDFT
TÍPQÞCMJDPT DPOTUBOUFTFFTUÈUJDPT*TTPMFWBBQFOTBSRVFÏVNCPN
DBNJOIPVTBSJOUFSGBDFTQBSBJTTP.BTDPNPGPJEJUPBOUFSJPSNFOUF
JOUFSGBDFT TÍP EJTQPOJCJMJ[BEBT QBSB NBSDBS DMBTTFT PV HFSBS
JOEFQFOEÐODJBEFJNQMFNFOUBÎÍP

.BSDBS DMBTTFT TPNFOUF QBSB HBOIBS DPOTUBOUFT Ï


TFNBOUJDBNFOUF FSSBEP "MÏN EJTUP  DBTP GVUVSBNFOUF TFKB
OFDFTTÈSJP NPEJGJDBS B DMBTTF QBSB OÍP NBJT JNQMFNFOUBS UBM
JOUFSGBDFEFWJEPBRVFTUÜFTEFNPEFMBHFN BTDPOTUBOUFTTVNJSJBN
/FTUFDBTP OÍPUFNPRVFEJTDVUJSVTFVN Enum DPNVNBUSJCVUP
RVFQSPWFOIBVNBUSJCVUPDPNVNBEFTDSJÎÍPNBJTBNJHÈWFMQBSBB
DPOTUBOUF $PN JTTP  P DPOTUSVUPS EP Enum  EFWF SFDFCFS P WBMPS
EFTUFBUSJCVUP"TFHVJS WFKBVNFYFNQMP

212 9.10 BP10: SAIBA USAR INTERFACE E CLASSE ABSTRATA NO MOMENTO


CERTO
//Java

public enum Imposto {

ICMS("IMPOSTO SOBRE CIRCULAÇÃO DE MERCADORIAS e SERVIÇOS"),


PIS_COFINS("Programas de Integração Social e de Formação do Pa
trimônio do Servidor Público/Contribuição para o Financiamento da
Seguridade Social"),
ISS("IMPOSTO SOBRE SERVIÇOS DE QUALQUER NATUREZA");

private String descricao;

private Imposto(String descricao) {


this. descricao = descricao;
}

public String getDescricao() {


return descricao;
}
}

// Para usar o enum e depois obter sua descrição

compra.setImposto(Imposto.ICMS);

System.out.println(compra.getImposto().getdescricao());

//Resultado
IMPOSTO SOBRE CIRCULAÇÃO DE MERCADORIAS e SERVIÇOS

enum Imposto {

[Description("IMPOSTO SOBRE CIRCULAÇÃO DE MERCADORIAS e SERVIÇ


OS")]
ICMS,
[Description("Programas de Integração Social e de Formação do
Patrimônio do Servidor Público/Contribuição para o Financiamento d
a Seguridade Social")]
PIS_COFINS,
[Description("IMPOSTO SOBRE SERVIÇOS DE QUALQUER NATUREZA")]
ISS
};

// Para usar o enum e depois obter sua descrição

compra.Imposto = Imposto.ICMS;

Console.WriteLine(compra.Imposto.Description);

9.10 BP10: SAIBA USAR INTERFACE E CLASSE ABSTRATA NO MOMENTO CERTO


213
//Resultado
IMPOSTO SOBRE CIRCULAÇÃO DE MERCADORIAS e SERVIÇOS

*OGFMJ[NFOUF FN C# QBSBUFSBDFTTPB Description OÍPÏUÍP


TJNQMFTDPNPNPTUSBEPBOUFSJPSNFOUF²OFDFTTÈSJPBMHVOTQBTTPTB
NBJT RVFSGPHFNPFTDPQPEFTUFFYFNQMPFUFSNJOBSJBNUPSOBOEPP
NBJTDPNQMFYPEFFOUFOEFSOFTUFNPNFOUP.BTPFYFNQMPBQFOBT
JMVTUSB RVF BTTJN DPNP Java  Ï QPTTÓWFM TF DIFHBS B EFTDSJÎÍP 0
DBNJOIPTØOÍPÏUÍPGBDJMRVBOUPFN Java 

1BSBGBDJMJUBSPFOUFOEJNFOUPEFTUB#1BUBCFMBBTFHVJSMJTUBBT
DPOTJEFSBÎÜFT EF VTP EBT FTUSVUVSBT EJTDVUJEBT 4FNQSF MFWF FN
DPOTJEFSBÎÍP FTUBT QBSB QPEFS UPNBS B EFDJTÍP DPSSFUB .BJT VNB
WF[VNBSFDFJUBEFCPMPOÍPFTUÈEJTQPOÓWFM TØBQSÈUJDBFWJWÐODJB
OPEFTFOWPMWJNFOUPPSJFOUBEPBPCKFUPTQPTTJCJMJUBSÈGB[FSBFTDPMIB
RVFNBJTTFBEFRVFËTJUVBÎÍPDPSSFOUF

*OUFSGBDF $MBTTFBCTUSBUB

/ÍPQPTTJCJMJUBIFSBOÎBNÞMUJQMBEF
1PTTJCJMJUBFNVMBSIFSBOÎBNÞMUJQMB
GPSNBBMHVNB

.FOPTGMFYJCJMJEBEFEFFWPMVÎÍP .BJPSGMFYJCJMJEBEFEFFWPMVÎÍP

6TBEBQBSBNBSDBSDMBTTFT/ÍPDSJBN 6TBEBQBSBEFGJOJSTVCUJQPTF
IJFSBSRVJBT IJFSBSRVJBT

/ÍPQPEFTFSJOTUBODJBEB /ÍPQPEFTFSJOTUBODJBEB

.ÏUPEPTPCSJHBUPSJBNFOUFBCTUSBUPT4FN 1PTTJCJMJUBNÏUPEPTOÍPBCTUSBUPT
SFÞTP .BJPSSFÞTP

1PTTJCJMJUBNÞMUJQMBTJNQMFNFOUBÎÜFT 4ØQPTTJCJMJUBIFSBOÎBTJNQMFT

1PTTJCJMJUBTPNFOUFBUSJCVUPTFTUÈUJDPT
1PTTJCJMJUBRVBMRVFSUJQPEFBUSJCVUP
DPOTUBOUFTFQÞCMJDPT

 #1 64& & "#64& %"4 '"$*-*%"%&4


'03/&$*%"4 103 -*/(6"(&/4
03*&/5"%"4"0#+&504

214 9.11 BP11: USE E ABUSE DAS FACILIDADES FORNECIDAS POR


LINGUAGENS ORIENTADAS A OBJETOS
3FDÏNDIFHBEPT OP NVOEP PSJFOUBEP B PCKFUPT  UFOUFN MFWBS
DPOTJHP BMHVNBT QSÈUJDBT ‰ NVJUBT EFMBT NÈT ‰ EP NVOEP
FTUSVUVSBEP&TUBTQPEFNUPSOBSPDØEJHPEJGÓDJMEFNBOUFSF QJPS
MFWBSBFSSPTJOFTQFSBEPT%FWJEPBJTTP MJOHVBHFOTDPNP Java  F
C# EJTQPOJCJMJ[BNNFJPTQBSBUFOUBSNJOJNJ[BSTJUVBÎÜFTBEWFSTBT
² WJUBM QBSB P NFMIPS VTP EFTUBT MJOHVBHFOT RVF BT GBDJMJEBEFT QPS
FMBTGPSOFDJEBTTFKBNVUJMJ[BEBT"TFHVJS WFKBBMHVNBTTJUVBÎÜFTRVF
FMBTGPSOFDFNVNBTPMVÎÍPNBJTBEFRVBEB

.BOJQVMBÎÍPEFTUSJOHT
² NVJUP DPNVN JOJDJBOUFT FN Java  F C#  NBOJQVMBSFN
TUSJOHT EF GPSNB JOEJTDSJNJOBEB  QSJODJQBMNFOUF SFBMJ[BOEP
DPODBUFOBÎÜFT5PEBWF[RVFVNBTUSJOHÏDPODBUFOBEBDPNPVUSB
VNBOPWBTUSJOHÏDSJBEBFBTBOUFSJPSFTTÍPFTRVFDJEBTOBNFNØSJB

$BTP DPODBUFOBÎÜFT FN HSBOEF RVBOUJEBEF TFKBN GFJUBT  WÈSJBT


TUSJOHT OÍP NBJT VUJMJ[BEBT GJDBSÍP JOBDFTTÓWFJT OB NFNØSJB "MÏN
EJTUP BMFHJCJMJEBEFEPDØEJHPÏQSFKVEJDBEB1BSBTBOBSUBMTJUVBÎÍP
EFWFTF VTBS B DMBTTF StringBuilder  5BOUP Java  F C#
EJTQPOJCJMJ[BNUBMDMBTTF"TFHVJS ÏBQSFTFOUBEBBTJUVBÎÍPBEWFSTB
ËTVBDVSB
//Java
//Como não criar textos dinâmicos.
String mensagem = "Sr. " + usuario.getNome() + " recebemos sua rec
lamação. Um email de confirmação foi enviado para " + usuario.getE
mail() + ".Em até " + reclamacao.getPrazoDias() + " dias estaremos
entrando em contato para resolver seu problema. Agradecemos o con
tato".

//Como usar StringBuilder

StringBuilder mensagemBuilder = new StringBuilder();


mensagemBuilder.append("Sr. ");
mensagemBuilder.append(usuario.getNome());
mensagemBuilder.append("recebemos sua reclamação. Um email de conf
irmação foi enviado para");
mensagemBuilder.append(usuario.getEmail());
mensagemBuilder.append(".Em até ");

9.11 BP11: USE E ABUSE DAS FACILIDADES FORNECIDAS POR LINGUAGENS


ORIENTADAS A OBJETOS 215
mensagemBuilder.append(reclamacao.getPrazoDias());
mensagemBuilder.append(" dias estaremos entrando em contato para r
esolver seu problema. Agradecemos o contato");

String mensagem = mensagemBuilder.toString();

//C#
//Como não criar textos dinâmicos.
String mensagem = "Sr. " + usuario.getNome() + " recebemos sua rec
lamação. Um email de confirmação foi enviado para " + usuario.getE
mail() + ".Em até " + reclamacao.getPrazoDias() + " dias estaremos
entrando em contato para resolver seu problema. Agradecemos o con
tato".

//Como usar StringBuilder

StringBuilder mensagemBuilder = new StringBuilder();


mensagemBuilder.Append("Sr. ");
mensagemBuilder.Append(usuario.getNome());
mensagemBuilder.Append("recebemos sua reclamação. Um email de conf
irmação foi enviado para");
mensagemBuilder.Append(usuario.getEmail());
mensagemBuilder.Append(".Em até ");
mensagemBuilder.Append(reclamacao.getPrazoDias());
mensagemBuilder.Append(" dias estaremos entrando em contato para r
esolver seu problema. Agradecemos o contato");

String mensagem = mensagemBuilder.ToString();

4FPDØEJHPQBSFDFSJMFHÓWFM UFNPTNBJTVNBHSBOEFWBOUBHFN
EFVUJMJ[BS StringBuilder UFNQPEFQSPDFTTBNFOUP$PODBUFOBS
TUSJOHT Ï VN QSPDFTTP DVTUPTP QBSB P QSPDFTTBEPS 4F FTTBT
DPODBUFOBÎÜFT GPSFN GFJUBT EFOUSP EF VN for  QPS FYFNQMP
VTBOEPP +  NBJT UBMPQFSBÎÍPMFWBSJBVOT TFHVOEPTQBSB
NFOTBHFOT6TBOEPB StringBuilder  TFSJB NBJT PV NFOPT  
TFHVOEPTQBSBBTNFTNBTNFOTBHFOT

1SFDJTÍPEFWBMPSFT
®T WF[FT  Ï QSFDJTP RVF BT BQMJDBÎÜFT NBOJQVMFN WBMPSFT
NPOFUÈSJPT1BSBJTUP UJQPTEFEBEPT DPNP float F double TÍP
EJTQPOJCJMJ[BEPTFN Java F C# 1PSÏN NVJUBTWF[FTBTQSFDJTÜFT
EFTUFTUJQPTEFEBEPTQPEFNTFSVNHSBOEFQSPCMFNB"TFHVJS WFKB

216 9.11 BP11: USE E ABUSE DAS FACILIDADES FORNECIDAS POR


LINGUAGENS ORIENTADAS A OBJETOS
VNDØEJHPRVFJMVTUSBUBMTJUVBÎÍP
//Java

double valor1 = 0.1;


double valor2 = 0.2;

System.out.println((valor1 + valor2) == 0.3);

//C#
double valor1 = 0.1;
double valor2 = 0.2;

System.Console.WriteLine((valor1 + valor2) == 0.3);

²EFTFFTQFSBSRVFBSFTQPTUBBQFSHVOUBEBJHVBMEBEFEBTPNB
EBT WBSJÈWFJT DPN P WBMPS 0.3  TFKB true  OP DBTP  WFSEBEF
1PSÏN  JOGFMJ[NFOUF UBOUP FN Java  F C#  B SFTQPTUB WBJ TFS
false *TTPPDPSSFEFWJEPBQSPCMFNBTEFQSFDJTÍPEFWBMPSFTRVF
UBJTMJOHVBHFOTQPTTVFN

"MHVOT WBMPSFT OÍP DPOTFHVFN TFS SFQSFTFOUBEPT CJOBSJBNFOUF


EF GPSNB GJOJUB  F JTUP UFSNJOB MFWBOEP B FTTBT JNQSFDJTÜFT &N
QFRVFOBT TPNBT  P FSSP QPEF OÍP TF EFNPOTUSB NVJUP HSBWF  NBT
QBSB DÈMDVMPT DPOTFDVUJWPT F FN HSBOEF RVBOUJEBEF  DFOUBWPT
QPEFN TF UPSOBS NJMIBSFT /FTUF DBTP  VNB QFRVFOB EÓWJEB JOJDJBM
QPEFMFWBSBMHVÏNBGBMÐODJB

1BSB TBOBS UBM TJUVBÎÍP  P Java  EJTQPOJCJMJ[B B DMBTTF


BigDecimal  &TUB TJN DPOTFHVF SFTPMWFS UBM TJUVBÎÍP 0 DØEJHP B
TFHVJS BQFOBT JMVTUSB B TPNB EPT NFTNPT WBMPSFT  NBT FTTB DMBTTF
QPTTVJWÈSJBTPVUSBTGVODJPOBMJEBEFT²BDPOTFMIBEPVNFTUVEPNBJT
EFUBMIBEPTPCSFFMBTF QBSBJTUP NBJTVNBWF[BTEPDVNFOUBÎÍPTEF
UBJTMJOHVBHFOTTFSÍPEFHSBOEFVUJMJEBEF&N C# BDMBTTFTJNJMBSÏ
B Decimal 
//Java

BigDecimal b1 = new BigDecimal(0.1);


BigDecimal b2 = new BigDecimal(0.2);

9.11 BP11: USE E ABUSE DAS FACILIDADES FORNECIDAS POR LINGUAGENS


ORIENTADAS A OBJETOS 217
System.out.println(b1.add(b2, new MathContext(2)).doubleVa
lue() == (0.3));

//C#

Decimal d1 = new Decimal(0.1);


Decimal d2 = new Decimal(0.2);

System.Console.WriteLine(Decimal.Add(d1, d2) == 0.3M);

-PPQ for
²NVJUPDPNVNBVUJMJ[BÎÍPEPMPPQ for EBTFHVJOUFGPSNB
//Java

for (int i = 0; i < <itemDeControle>; i++) {


...
}

//C#

for (int i = 0; i < <itemDeControle>; i++)


{
...
}

&NCPSB OÍP UFOIB OBEB EF FSSBEP DPN UBJT DØEJHPT  OPUF RVF
FMFT TÍP NVJUP MPOHPT F FYQÜFN EFNBTJBEBNFOUF PT QBTTPT
OFDFTTÈSJPTQBSBQFSDPSSFSVNDPOKVOUPEFPCKFUPT$BTPGPTTFVNB
MJTUBEFBMVOPT TFSJB
//Java

for (int i = 0; i < listaAlunos.size(); i++) {


...
}

//C#

for (int i = 0; i < listaAlunos.Count; i++)


{
...
}

-PHJDBNFOUFRVF EFOUSPEP for TFSJBQSFDJTPEFTFNCBMBSPT

218 9.11 BP11: USE E ABUSE DAS FACILIDADES FORNECIDAS POR


LINGUAGENS ORIENTADAS A OBJETOS
BMVOPTRVFFTUBWBNEFOUSPEBMJTUB1BSBGBDJMJUBSBNBOJQVMBÎÍPEF
UBJT DPMFÎÜFT  Java  F C#  EJTQPOJCJMJ[BN VN for  FTQFDJBM
DIBNBEP EF foreach  &TUF KÈ EFTFNCBMB PT JUFOT EB MJTUB
BVUPNBUJDBNFOUF GBDJMJUBOEPB NBOJQVMBÎÍP&TUF foreach  KÈ GPJ
BQSFTFOUBEPOB#1
//Java

for(Aluno aluno: listaAlunos) {


...
}

//C#

foreach (Aluno aluno in listaAlunos)


{
...
}

" QBSUJS EPT DØEJHPT  OPUF RVF P foreach  EJTQPOJCJMJ[B VNB


GPSNBBVUPNÈUJDBEFEFTFNCBMBSPTJUFOTEBDPMFÎÍPOBWBSJÈWFMEP
UJQPEFTFKBEB/FTUFDBTP DBEBJUFNGPJDPMPDBEPEFOUSPEBWBSJÈWFM
aluno EPUJQP Aluno 

3FTVNJOEP TFNQSF RVF BDIBS RVF TFV DØEJHP QPEF TFS


NFMIPSBEP  RVF BMHP OÍP FTUÈ DIFJSBOEP CFN  QSPDVSF QPS VNB
DMBTTFBVYJMJBS1SPWBWFMNFOUF  Java F C#  EJTQPOJCJMJ[BSÍP VNB
RVFUPSOBSÈTVBWJEBCFNNBJTTJNQMFT

 #1 $0/)&±" & 65*-*;& "4


$0/7&/±¿&4 %& $0%*'*$"±°0 %"
-*/(6"(&.&4$0-)*%"
"MÏN EF QPTTVJS TJOUBYFT FTQFDÓGJDBT  DBEB MJOHVBHFN UBNCÏN
QPTTVJ DPOWFOÎÜFT CPBT QSÈUJDBT  RVF EFWFN TFS VTBEBT OP TFV
QSPDFTTP EF DPEJGJDBÎÍP ² JNQPSUBOUF TFHVJS UBJT DPOWFOÎÜFT QBSB
UPSOBSPDØEJHPMFHÓWFMQPSPVUSPTQSPHSBNBEPSFT FBTTJNGBDJMJUBS
NBOVUFOÎÜFTGVUVSBT

9.12 BP12: CONHEÇA E UTILIZE AS CONVENÇÕES DE CODIFICAÇÃO DA


LINGUAGEM ESCOLHIDA 219
1BSBNBJTEFUBMIFTTPCSFBTDPOWFOÎÜFTEFDØEJHPTEF Java  F
C# PTTFHVJOUFTMJOLTEFWFNTFSVUJMJ[BEPT

+BWB
IUUQXXXPSBDMFDPNUFDIOFUXPSLKBWBDPEFDPOWUPD
IUNM
$ IUUQTNTEONJDSPTPGUDPNFO
VTMJCSBSZGGBTQY F
IUUQTNTEONJDSPTPGUDPNFO
VTMJCSBSZNTWWTBTQY

"QFOBTQBSBJMVTUSBSPRVFWFNBTFSUBJTDPOWFOÎÜFT BTFHVJSÏ
BQSFTFOUBEBVNBSÈQJEBMJTUB

/PNFTEFNÏUPEPT
&N Java  P OPNF EF UPEP NÏUPEP EFWF DPNFÎBS DPN B
QSJNFJSB MFUSB FN NJOÞTDVMP "QØT JTUP  B QSJNFJSB MFUSB EF DBEB
QBMBWSB EFWF TFS NBJÞTDVMB 6N FYFNQMP TFSJB public double
calcularImposto() 

&N C# POPNFEFUPEPNÏUPEPEFWFDPNFÎBSDPNBQSJNFJSB
MFUSB FN NBJÞTDVMP "QØT JTUP  B QSJNFJSB MFUSB EF DBEB QBMBWSB
UBNCÏN EFWF TFS NBJÞTDVMB 6N FYFNQMP TFSJB public double
CalcularImposto() 

/PNFTEFDMBTTFTFJOUFSGBDFT
5BOUPFN Java RVBOUPFN C# PTOPNFTEBTDMBTTFTEFWFNUFS
TVBQSJNFJSBMFUSBFNNBJÞTDVMP"QØTJTTP BQSJNFJSBMFUSBEFDBEB
QBMBWSB UBNCÏN EFWF TFS NBJÞTDVMB /BT JOUFSGBDFT  TFVT OPNFT
EFWFNTFNQSFJOJDJBSDPNBMFUSB I  "QØT JTUP  BQMJRVF B NFTNB
DPOWFOÎÍPEBTDMBTTFT

&N Java TFSJBBMHPDPNP public class CarrinhoCompras

220 9.12 BP12: CONHEÇA E UTILIZE AS CONVENÇÕES DE CODIFICAÇÃO DA


LINGUAGEM ESCOLHIDA
F public interface ITransmissaoDadosMinisterioSaude 

&N C# TFSJBBMHPDPNP public class CarrinhoCompras F


public interface IITransmissaoDadosMinisterioSaude 

/PNFEFDPOTUBOUFT
&N Java PTBUSJCVUPTPVWBSJÈWFJTEFGJOJEPTDPNPDPOTUBOUFT
EFWFN UFS TVBT QBMBWSBT FN NBJÞTDVMP F TFQBSBEBT QPS _
VOEFSMJOF  6N FYFNQMP TFSJB private final int
QUANTIDADE_TENTATIVAS = 10; 

+È C# OÍPUFNPTVNBDPOWFOÎÍPEFGJOJEBQBSBJTUP

'*/"-.&/5&"$"#06
1SPOUP "QØT VN MPOHP  NBT FOSJRVFDFEPS  FTUVEP  NVJUP EP
RVF QPEFSJB TFS EJUP  FYQMJDBEP F SFGPSÎBEP TPCSF B 0SJFOUBÎÍP B
0CKFUPT GPJ GFJUP 5PEPT PT DPODFJUPT GPSBN BQSFTFOUBEPT  TVB
IJTUØSJB PQPSRVÐEFTVBHSBOEFBDFJUBÎÍPFUD

%FTTF QPOUP FN EJBOUF  RVBOUP NBJT TF QSBUJDBS  NBJT


FYQFSJÐODJB F  DPOTFRVFOUFNFOUF  DPOIFDJNFOUP TF BERVJSJSÈ
"TTJN PTVDFTTPTFSÈPQSØYJNPQPOUP1BSBGJOBMJ[BSPTFTUVEPT P
QSØYJNP DBQÓUVMP BQSFTFOUB P RVF FTQFSBS BQØT TF BQSFOEFS B
0SJFOUBÎÍPB0CKFUPT&NCPSBNVJUPKÈUFOIBTJEPEJUP BMHPBNBJT
QSFDJTB TFS BQSFTFOUBEP QBSB FMFWBS VN QPVDP P OÓWFM EP
DPOIFDJNFOUPBUÏBRVJBERVJSJEP

9.13 FINALMENTE ACABOU! 221


CAPÍTULO 10

026&7&.%&10*4%"
03*&/5"±°0"0#+&50

"QØT UFSNPT FYQMJDBEPT UPEPT PT DPODFJUPT  DPNP VUJMJ[ÈMPT F


BMHVNBTEJDBTEFVTPEB0SJFOUBÎÍPB0CKFUPT VNBQFSHVOUBQPEF
TVSHJSFTUPVQSPOUPQBSBGB[FSUVEPPRVFTFNQSFRVJTFEBNFMIPS
GPSNB DPN B QSPHSBNBÎÍP PSJFOUBEB B PCKFUPT  " SFTQPTUB Ï NBJT
PVNFOPT

&NCPSBUVEPRVFQVEFTTFUFSTJEPFYQMJDBEPUFOIBEFGBUPTJEP
FYQMJDBEP  TPNFOUF VTBS B 0SJFOUBÎÍP B 0CKFUPT BJOEB OÍP Ï P
TVGJDJFOUF QBSB DPOTUSVJS BQMJDBÎÜFT EF BMUB RVBMJEBEF ² OFDFTTÈSJP
NBJT BMHVOT DPOIFDJNFOUPT  RVF GPHFN EP FTDPQP EFTUF MJWSP  NBT
RVFTFSÍPBQSFTFOUBEPTEFGPSNBJOUSPEVUØSJBQBSBQPTUFSJPSFTUVEP

 1"%3¿&4 %& 130+&50 %&4*(/


1"55&3/4
&NCPSBB00QSF[FQPSVNBNFMIPSFTUSVUVSBÎÍPEBBQMJDBÎÍP
DPN B DSJBÎÍP EF DMBTTFT  QBDPUFT  DPOUSPMF EF WJTJCJMJEBEFT  SFÞTP
FUD  OFN TFNQSF FMB DPOTFHVF BUJOHJS TFV PCKFUJWP EF GPSNB
TBUJTGBUØSJB *TTP PDPSSF EFWJEP B DPNQMFYJEBEFT JOFSFOUFT EF DBEB
BQMJDBÎÍP ®T WF[FT  Ï OFDFTTÈSJP SFBWBMJBS DPNP B FTUSVUVSBÎÍP EB
BQMJDBÎÍPGPJGFJUB FSFWFSDPNPFMBGPJDPOTUSVÓEB²OFTUFQPOUPOP
RVBMQPEFNPTVTBSQBESÜFTEFQSPKFUP

0MJWSPNBJTGBNPTPEFQBESÜFTEFQSPKFUPTPCSFB0SJFOUBÎÍPB

222 10 O QUE VEM DEPOIS DA ORIENTAÇÃO A OBJETO


0CKFUPT Ï P 1BESÜFT EF 1SPKFUP TPMVÎÜFT SFVUJMJ[ÈWFJT EF TPGUXBSF
PSJFOUBEPBPCKFUPT EF&SJDI(BNNB +PIO7MJTTJEFT 3BMQI+PIOTPO
F3JDIBSE)FMN  /FTTFMJWSP BEFGJOJÎÍPEPRVFWFNBTFSVN
QBESÍPEFQSPKFUPÏBTFHVJOUF

%FTDSFWF VN QSPCMFNB OP OPTTP BNCJFOUF F P DFSOF EF TVB


TPMVÎÍP  EF UBM GPSNB RVF WPDÐ QPTTB VTBS FTTB TPMVÎÍP NBJT EF
VNNJMIÍPEFWF[FT TFNOVODBGB[ÐMPEBNFTNBNBOFJSB

0VTFKB TÍPUÏDOJDBTRVFWJTBNSFTPMWFSQSPCMFNBTSPUJOFJSPTF
RVF BDPOUFDFN FN EJTUJOUBT TJUVBÎÜFT 1PSÏN  B BQMJDBÎÍP EPT
QBESÜFT  JOEFQFOEFOUF EF RVBMRVFS BQMJDBÎÍP  WJTB UPSOBS P DØEJHP
NBJT FTUSVUVSBEP  SFVUJMJ[ÈWFM F SPCVTUP 0T RVBUSP BVUPSFT
DPOIFDJEPT DPNP HBOHVF EPT RVBUSP (BOH PG 'PVS ‰ (P'
JEFOUJGJDBSBN BMHVNBT GBMIBTEJGJDVMEBEFT DPOTUBOUFT FN EJWFSTPT
QSPKFUPT EF TPGUXBSF PSJFOUBEPT B PCKFUPT FN RVF USBCBMIBSBN "
QBSUJS EJTTP  DSJBSBN F DBUFHPSJ[BSBN QBESÜFT QBSB TPMVDJPOBS UBJT
EFGJDJÐODJBTEB0SJFOUBÎÍPB0CKFUPT#BTJDBNFOUF TÍPDBUFHPSJBT

$SJBÎÍP SFTQPOTÈWFJT QPS HFSFODJBS B JOTUBODJBÎÍP EF


PCKFUPT
&TUSVUVSBM SFTQPOTÈWFJT QPS HFSFODJBS DPNP DMBTTFT F
PCKFUPTTFSFMBDJPOBNQBSBDSJBSOPWBTDMBTTFTFPCKFUPT
$PNQPSUBNFOUBJT SFTQPOTÈWFJT QPS HFSFODJBS
BMHPSJUNPTFDPNVOJDBÎÜFTFOUSFDMBTTFTFPCKFUPT

&TUBT DBUFHPSJBT WJTBN JOUSPEV[JS DPEJGJDBÎÜFT RVF TBOFN BT


EFGJDJÐODJBTJOFSFOUFTBDBEBVNB5PEPCPNQSPHSBNBEPSEFWFUFS
DPOIFDJNFOUP RVF TFNQSF QSFDJTBSÈ BQMJDBS QBESÜFT EF QSPKFUP FN
TVBBQMJDBÎÍP.BTJTTPOÍPTJHOJGJDBRVFEFWBTBCFSUPEPTEFDBCFÎB
BGJOBM TÍPNVJUPT

10.1 PADRÕES DE PROJETO (DESIGN PATTERNS) 223


²VNBØUJNBSFDPNFOEBÎÍPQPTTVJSFTUFMJWSP QBSBRVF TFNQSF
RVFTVSHJSBOFDFTTJEBEFEFBQMJDBÎÍPEFBMHVNQBESÍP WPDÐQPTTB
DPOTVMUÈMP F BTTJN FTDPMIFS P QBESÍP BEFRVBEP &MF VTB B
Smalltalk  DPNP MJOHVBHFN EF BQMJDBCJMJEBEF EPT QBESÜFT  NBT
QPS TFSFN QBESÜFT QBSB TPGUXBSF PSJFOUBEPT B PCKFUPT  FMFT QPEFN
GBDJMNFOUF TFSFN BQMJDBEPT FN Java  F C#  CBTUBOEP NVEBS B
TJOUBYF1BSBFTUBTMJOHVBHFOT UBNCÏNFYJTUFNQBESÜFTFTQFDÓGJDPT
*EFOUJGJRVFFVTFPTRVBOEPOFDFTTÈSJP

3&'"503"±°0
.FOPT SPCVTUP RVF VN QBESÍP EF QSPKFUP  NBT OÍP NFOPT
JNQPSUBOUF SFGBUPSBÎÜFTFNDØEJHPTPSJFOUBEPTBPCKFUPQPEFNTFS
SFBMJ[BEBT .BT P RVF WFN B TFS UBM BUJWJEBEF  " TFHVJS  WFKB VNB
CSFWFEFGJOJÎÍP

3FGBUPSBÎÍP Ï P QSPDFTTP EF BMUFSBÎÍP EF VN TJTUFNB EF


TPGUXBSFEFNPEPRVFPDPNQPSUBNFOUPFYUFSOPEPDØEJHPOÍP
NVEF  NBT RVF TVB FTUSVUVSB JOUFSOB TFKB NFMIPSBEB ² VNB
NBOFJSB EJTDJQMJOBEB EF BQFSGFJÎPBS P DØEJHP RVF NJOJNJ[B B
DIBODF EF JOUSPEVÎÍP EF GBMIBT &N FTTÐODJB  RVBOEP WPDÐ VTB
SFGBUPSBÎÍP WPDÐFTUÈNFMIPSBOEPPQSPKFUPEFDØEJHPBQØTFTUF
UFSTJEPFTDSJUP '08-&3  

" QBSUJS EFTUB EFGJOJÎÍP  QPEFNPT OPUBS RVF  EJGFSFOUF EF VN


QBESÍP RVF Ï SFTQPOTÈWFM QPS JOUSPEV[JS OPWBT DPEJGJDBÎÜFT QBSB
NFMIPSBS VN DØEJHP PSJFOUBEP B PCKFUP  B SFGBUPSBÎÍP OÍP
OFDFTTBSJBNFOUF GBSÈ P NFTNP &N EFUFSNJOBEPT NPNFOUPT  FMB
QPEFSÈ TPNFOUF SFBEFRVBS P RVF KÈ FTUÈ FTDSJUP "TTJN DPNP OPT
QBESÜFT WÈSJPTUJQPTEFSFGBUPSBÎÜFTQPEFNTFSSFBMJ[BEBT5PEBWF[
RVF DØEJHPT EVQMJDBEPT  DMBTTFT F NÏUPEPT HSBOEFT  FOUSF PVUSPT

224 10.2 REFATORAÇÃO


QPOUPTEFNFMIPSJBGPSFNJEFOUJGJDBEPT VNBSFGBUPSBÎÍPQPEFSÈTFS
BQMJDBEB

1BSB JMVTUSBS EF GPSNB QSÈUJDB P RVF WFN B TFS F DPNP SFBMJ[BS
VNB SFGBUPSBÎÍP  TFSÈ BQSFTFOUBEB B TFHVJOUF TJUVBÎÍP VNB
BQMJDBÎÍPJOJDJBMNFOUFTØFSBSFTQPOTÈWFMQPSHFSFODJBSWFOEBTQBSB
DMJFOUFT QFTTPB GÓTJDB &OUÍP  B BQMJDBÎÍP  DPN DFSUF[B  UFSJB VNB
DMBTTFDIBNBEB Cliente OBRVBMTFVTBUSJCVUPTTFSJBNEFGJOJEPT
1PSÏN  FN EFUFSNJOBEP NPNFOUP  B FNQSFTB DPNFÎPV B SFBMJ[BS
WFOEBT QBSB FNQSFTBT  RVF TÍP QFTTPBT KVSÓEJDBT /FTUF DBTP  VNB
OPWB DMBTTF EFWFSJB TFS DSJBEB .BT KÈ FYJTUF B DMBTTF Cliente 
&OUÍP  TFSJB NFMIPS SFEFGJOJS TFV OPNF QBSB PessoaFisica
DIBNBSBOPWBDMBTTFEF PessoaJuridica 

"MÏN EJTUP  VNB TVQFSDMBTTF  RVF QPEFSJB TFS DIBNBEB EF


Pessoa QPEFSJBTFSBEJDJPOBEBQBSBBTTJNTFUFSBOPÎÍPEFEPJT
TVCUJQPTEFDMJFOUFTQPTTÓWFJT"UÏBÓUVEPCFN QPJTBDMBTTFRVFGPJ
SFOPNFBEB GJDBSJB QSBUJDBNFOUF JOUBDUB F B OPWB UFSJB NVJUPT EPT
BUSJCVUPTJHVBJTËEBQSJNFJSBBGJOBM UBNCÏNFSBVNUJQPEFDMJFOUF
²KVTUBNFOUFFTTBQSBUJDJEBEFRVFQPEFTFSSFGBUPSBEB

2VBOEP VNB DMBTTF NÍF GPJ JOUSPEV[JEB OP NPEFMP  MPHP


QPEFNPT OPUBS RVF BMHVOT BUSJCVUPT QPEFN TF UPSOBS DPNVOT BPT
EPJT TVCUJQPT %FJYÈMPT FN DBEB TVCDMBTTF TFSJB VN FSSP EF
NPEFMBHFN RVF SBQJEBNFOUF MFWBSJB B NBJPSFT FSSPT  DPNP
EVQMJDBÎÍP EF DØEJHP /FTUF DBTP  UBJT BUSJCVUPT EFWFSJBN NJHSBS
QBSBBDMBTTFNÍF OPDBTP Pessoa /PDBTP FTUBSFPSHBOJ[BÎÍPOB
EFGJOJÎÍP EPT BUSJCVUPT GPJ VNB SFGBUPSBÎÍP  DIBNBEB EF TVCJS
DBNQPOBIJFSBSRVJB

&N TFV MJWSP  .BSUJO 'PXMFS   EFGJOF WÈSJBT SFGBUPSBÎÜFT


RVF QPEFN TFS BQMJDBEBT .BJT VNB WF[  OÍP Ï OFDFTTÈSJP F OFN
QPTTÓWFM TBCFS UPEBT EF DBCFÎB /FTUF DBTP  NBJT VN MJWSP EF
DBCFDFJSB EFWF TFS BERVJSJEP QPS QSPHSBNBEPSFT PSJFOUBEPT B
PCKFUPT %JGFSFOUFNFOUF EPT QBESÜFT  BT SFGBUPSBÎÜFT TÍP NBJT

10.2 REFATORAÇÃO 225


TJNQMFTF DPNPQBTTBSEPUFNQP TFSÍPNBJTGBDJMNFOUFQFSDFCJEBT
OP DØEJHP /PWBNFOUF  QPS UBJT SFGBUPSBÎÜFT TFSFN BQMJDBEBT FN
MJOHVBHFOTPSJFOUBEBBPCKFUPT  Java F C# UBNCÏNQFSNJUFNFTUF
UJQPEFNFMIPSJB

6.-‰6/*'*&%.0%&-*/(-"/(6"(&
-*/(6"(&.%&.0%&-"(&.6/*'*$"%"
&NCPSBFTUBKÈUFOIBTJEPDJUBEBEFGPSNBTVQFSGJDJBM BHPSBTFSÈ
GFJUB VNB FYQMJDBÎÍP VN QPVDP NBJT EFUBMIBEB 6.- Ï VNB
MJOHVBHFNRVFUFNDPNPQSJODJQBMGJOBMJEBEFSFQSFTFOUBSEFGPSNB
HSÈGJDB VNB BQMJDBÎÍP PSJFOUBEB B PCKFUP 5BM SFQSFTFOUBÎÍP UFN P
PCKFUJWPEFGPSOFDFSVNBWJTÍPFTUÈUJDBFDPNQMFUBEBBQMJDBÎÍP NBT
EF VNB GPSNB NBJT BNJHÈWFM F FOUFOEÓWFM "GJOBM  WJTVBMJ[BS
EJBHSBNBT Ï CFN NBJT BMUP OÓWFM EP RVF TBJS WBTDVMIBOEP UPEBT BT
DMBTTFTEBBQMJDBÎÍP QBSBBTTJNFOUFOEFSDPNPFMBFTUÈFTUSVUVSBEB

&MB TVSHJV B QBSUJS EB GVTÍP EBT QSÈUJDBT EF NPEFMBHFN EF


TPGUXBSF DSJBEBT QPS #PPDI  3VNCBVHI F +BDPCTPO #BTJDBNFOUF
FMFTEFGJOJSBNVNDPOKVOUPEFEJBHSBNBTRVFWJTBNGPSOFDFSVNB
SFQSFTFOUBÎÍP TFNÉOUJDB EB BQMJDBÎÍP  NBT DPN P BVYÓMJP EF
JNBHFOT " GJHVSB B TFHVJS BQSFTFOUB PT EJBHSBNBT RVF B 6.-
EJTQPOJCJMJ[BOBTVBWFSTÍP

226 10.3 UML — UNIFIED MODELING LANGUAGE (LINGUAGEM DE MODELAGEM


UNIFICADA)
'JHVSB%JBHSBNBTEB6.-

" GJHVSB EFJYB DMBSP RVF FYJTUFN EJWFSTPT EJBHSBNBT  VN QBSB
DBEB OFDFTTJEBEF EF SFQSFTFOUBÎÍP EF VNB BQMJDBÎÍP PSJFOUBEB B
PCKFUP%FOUSFFTUFT PTRVFNBJTTÍPDPOIFDJEPTTÍPPT%JBHSBNB
EF $BTP EF 6TP  %JBHSBNB EF 4FRVÐODJB F %JBHSBNB EF $MBTTF
3FTQFDUJWBNFOUF  FMFT TÍP SFTQPOTÈWFJT QPS GPSOFDFS VNB WJTÍP
HFSBM EBT GVODJPOBMJEBEFT EB BQMJDBÎÍP F RVFN WBJ VUJMJ[ÈMBT
NPTUSBSBTJOUFSBÎÜFTOFDFTTÈSJBTQBSBRVFVNBGVODJPOBMJEBEFTFKB
FYFDVUBEB F SFQSFTFOUBS UPEBT BT FOUJEBEFT DMBTTFT  RVF TÍP
OFDFTTÈSJBT QBSB B BQMJDBÎÍP TF UPSOBS PQFSBOUF .BJT VNB WF[
SFTQFDUJWBNFOUF  BT GJHVSBT TFHVJOUFT JMVTUSBN DBEB VN EFTTFT
EJBHSBNBT

10.3 UML — UNIFIED MODELING LANGUAGE (LINGUAGEM DE MODELAGEM


UNIFICADA) 227
'JHVSB%JBHSBNBEF$BTPEF6TP

'JHVSB%JBHSBNBEF4FRVÐODJB

228 10.3 UML — UNIFIED MODELING LANGUAGE (LINGUAGEM DE MODELAGEM


UNIFICADA)
'JHVSB%JBHSBNBEF$MBTTF

&NCPSB FYJTUBN UPEPT FTUFT EJBHSBNBT  OÍP Ï PCSJHBUØSJP


VUJMJ[BSUPEPTOBDPODFQÎÍPEFTVBBQMJDBÎÍP/BWFSEBEF EFWFNPT
FTDPMIFS RVBJT EFMFT TFSÍP JNQSFTDJOEÓWFJT QBSB GPSOFDFS B NFMIPS
SFQSFTFOUBÎÍP EPDVNFOUBÎÍP EFTVBBQMJDBÎÍP²JNQPSUBOUFUFSB
OPÎÍP EF RVF GB[FS VN EJBHSBNB TØ QPS GB[FS  FN WF[ EF GBDJMJUBS
QPEFEJGJDVMUBSPFOUFOEJNFOUPEBBQMJDBÎÍP

/PWBNFOUF  QPS DPOUB EF RVF UPEB MJOHVBHFN PSJFOUBEB B


PCKFUPTQPEFTFSEJBHSBNBEB BQMJDBÎÜFTFN Java F C# QFSNJUFN
FTUFUJQPEFEPDVNFOUBÎÍP

03*&/5"±°0""41&$504
4PNFOUF UFS DPOIFDJNFOUPT EPT DPODFJUPT EB 00 OÍP Ï P
TVGJDJFOUF $PNP GPJ EJUP OB TFÎÍP EF QBESÜFT F SFGBUPSBÎÍP  OFN
TFNQSF TØ VTBOEP B 0SJFOUBÎÍP B 0CKFUPT TF DPOTFHVJSÈ DSJBS
BQMJDBÎÜFT EF RVBMJEBEF .FTNP TF QBESÜFT GPSFN VUJMJ[BEPT F

10.4 ORIENTAÇÃO A ASPECTOS 229


SFGBUPSBÎÜFTGPSFNBQMJDBEBT

/PDBTPBHPSB UFNPTBTFHVJOUFTJUVBÎÍPNFTNPDPNPBVYÓMJP
EF QBESÜFT PV SFGBUPSBÎÜFT  BMHVNBT OFDFTTJEBEFT EF BQMJDBÎÜFT
PSJFOUBEBT B PCKFUPT UFSNJOBN QPS TF FTQFMIBS QFMB BQMJDBÎÍP 'PJ
QFOTBOEP FN SFTPMWFS FTTB TJUVBÎÍP RVF (SFHPS ,JD[BMFT  NBJT VN
GVODJPOÈSJPEB9FSPY DSJPVB1SPHSBNBÎÍP0SJFOUBEBB"TQFDUPT

4FVJOUVJUPFSBFNDPOTFHVJSJTPMBSUBJTOFDFTTJEBEFTFTQBMIBEBT
RVFFMFDIBNPVEFDSPTTDVUUJOHDPODFSO FNVNBVOJEBEFEFDØEJHP
DIBNBEBBTQFDUP"TTJN FMBJOUFSDFQUBSJBBFYFDVÎÍPEBTDMBTTFTEF
VNB BQMJDBÎÍP PSJFOUBEB B PCKFUPT  F FYFDVUBSJB P RVF BOUFT FTUBWB
FTQBMIBEP

1BSB DPOTFHVJS SFBMJ[BS FTUB UBSFGB  DPODFJUPT DPNP KPJO QPJOU


QPJOUDVUT  BEWJDFT  FOUSF PVUSPT TÍP VTBEPT "QFOBT QBSB JMVTUSBS
DPNP VUJMJ[BS B PSJFOUBÎÍP B BTQFDUP  P DØEJHP B TFHVJS BQSFTFOUB
VNBJOUFSDFQUBÎÍPFN AspectJ 

//Definição de um pointcut
pointcut chamadaSet() : execution(* *.set*(..) ) && this(Pacient
e);

//Advice que será executado a partir do pointcut


after() : chamadaSet() {
//fazer algo
}

" DPEJGJDBÎÍP BOUFSJPS EFGJOF VN QPJOUDVU RVF Ï EJTQBSBEP


RVBOEPIÈVNBDIBNBEBFNRVBMRVFSNÏUPEPDVKPOPNFÏJOJDJBEP
DPN B QBMBWSB set  EF VN PCKFUP EP UJQP Aluno  &TUF QPJOUDVU
EFWFSÈEJTQBSBSBFYFDVÎÍPEPBEWJDFDIBNBEP chamadaSet() RVF
SFBMJ[BSÈ BMHVNB FYFDVÎÍP MPHP BQØT B GJOBMJ[BÎÍP after()  EP
NÏUPEPDVKPOPNFÏJOJDJBEPDPNBQBMBWSB set EFVNPCKFUPEP
UJQP Aluno 

$PNQMJDBEP  OÍP  3FBMNFOUF  Ë QSJNFJSB WJTUB Ï  NBT DPN P

230 10.4 ORIENTAÇÃO A ASPECTOS


UFNQPTFUPSOBNBJTGÈDJM5BNCÏNWPDÐEFWFUFSOPUBEPBMJHBÎÍP
DPN Java BGJOBM BMJOHVBHFNVTBEBDIBNBTF AspectJ  "TTJN
DPNP P QBSBEJHNB PSJFOUBEP B PCKFUP QPTTVJ JNQMFNFOUBÎÜFT FN
WÈSJBTMJOHVBHFOTDPNP Java F C# BTQFDUPUBNCÏNQPTTVJWÈSJBT
AspectJ ÏQBSB Java F PostSharp ÏQBSB C# 

"QBSUJSEFTUFFYFNQMP GJDBDMBSPRVFB1SPHSBNBÎÍP0SJFOUBEB
B"TQFDUPTUFNDPNPGJOBMJEBEFBVYJMJBSB1SPHSBNBÎÍP0SJFOUBEBB
0CKFUPT/ÍPTFSJBVNBCPBQSÈUJDBDPOTUSVJSVNBBQMJDBÎÍPJOUFJSB
TØ DPN BTQFDUPT OB WFSEBEF  UBMWF[ OFN GPTTF QPTTÓWFM &NCPSB B
GVOÎÍP EP BTQFDUP TFKB BVYJMJBS B 00  VNB EJGJDVMEBEF TVSHF B
MFHJCJMJEBEF

1PS FTDPOEFS JOUFSDFQUBS  EFUFSNJOBEBT FYFDVÎÜFT  QPEFNPT


BDIBS FTUSBOIP VN SFTVMUBEP B NBJT PV VN SFTVMUBEP B NFOPT
RVBOEPTFFTQFSBWBTØPSFTVMUBEPEPNÏUPEPEBDMBTTFPSJFOUBEBB
PCKFUP1BSBVNEFTBWJTBEPDPOTFHVJSJEFOUJGJDBSRVFGPJVNBTQFDUP
RVF BUVPV TPCSF P DØEJHP  VN CPN UFNQP QPEF UFS TJEP QFSEJEP
$PNJTTP DIFHBNPTËDPODMVTÍPVTBSBTQFDUPTUFNTFVWBMPS NBT
VUJMJ[FPDPNQBSDJNÙOJB

'3".&803,4
.VJUBT WF[FT  B OFDFTTJEBEF EF BHJMJ[BS P QSPDFTTP EF
EFTFOWPMWJNFOUP EF VNB BQMJDBÎÍP Ï VN QPOUP DSVDJBM QBSB P
TVDFTTP EP QSPKFUP 1PSÏN  OBT BQMJDBÎÜFT PSJFOUBEBT B PCKFUPT
EFUFSNJOBEBT OFDFTTJEBEFT UFSNJOBN TFOEP VN HBSHBMP QPS TFSFN
SFQFUJUJWBT  EFNPSBEBT EF JNQMFNFOUBS FUD ² QBSB TPMVDJPOBS UBJT
TJUVBÎÜFT RVF GSBNFXPSLT EFWFN TFS VTBEPT " EFGJOJÎÍP EP RVF
WFNBTFSVNGSBNFXPSLÏ

10.5 FRAMEWORKS 231


6N DPOKVOUP EF DMBTTFT RVF USBCBMIBN FN DPOKVOUP QBSB
BVUPNBUJ[BSVNBOFDFTTJEBEFFTQFDÓGJDB

" EFGJOJÎÍP BOUFSJPS EFJYB DMBSP VN GSBNFXPSL OÍP Ï VNB


BQMJDBÎÍPFNTJ NBTVNBQPSÎÍPEFDØEJHPRVFEFWFTFSJODMVÓEBFN
PVUSB BQMJDBÎÍP QBSB BHJMJ[BS EFUFSNJOBEBT BUJWJEBEFT &YJTUFN
EJWFSTPT GSBNFXPSLT QBSB EJWFSTBT OFDFTTJEBEFT /P NVOEP EB
0SJFOUBÎÍPB0CKFUPT QPEFNTFSDJUBEPT

)JCFSOBUF Java  F /)JCFSOBUF C#  GSBNFXPSLT


QBSBVTPEFCBODPTEFEBEPTSFMBDJPOBM
+4' Java  GSBNFXPSL QBSB DSJBÎÍP EF BQMJDBÎÜFT
XFC
/-PH C#  GSBNFXPSL QBSB DPOUSPMF EF MPHT EF
BQMJDBÎÜFT

&NCPSB VN GSBNFXPSL USBHB P HBOIP EF UFNQP EF


EFTFOWPMWJNFOUP VNBEFTWBOUBHFNQPEFTVSHJSBDPNQMFYJEBEFEF
DPOGJHVSBÎÍP ² NVJUP DPNVN BT BQMJDBÎÜFT TF UPSOBSFN NBJT
DPNQMFYBT EF DPOGJHVSBS  EF NPOUBS P BNCJFOUF EF USBCBMIP
RVBOEPVTBNPTEFTFOGSFBEBNFOUFGSBNFXPSLT

1PSÏN  FTUB EJGJDVMEBEF JOJDJBM OÍP EFWF QSFWBMFDFS TPCSF PT


HBOIPTEFVUJMJ[BSVN0RVFEFWFNPTUFSFNNFOUFÏOPJOÓDJPEB
DPOGJHVSBÎÍP PBQSFOEJ[BEPEFNBJTVNBUFDOPMPHJBSFBMNFOUFTFSÈ
VN QPOUP EF HBSHBMP  NBT DPN P QBTTBS EP UFNQP  P GSBNFXPSL
NPTUSBSÈ TFV WBMPS 6NB DPJTB Ï DFSUB TFNQSF FYJTUJSÈ VN
GSBNFXPSLQBSBBHJMJ[BSEFUFSNJOBEBTJUVBÎÍP"RVFTUÍPÏRVBOEP
FTUFTFSÈEFTDPCFSUP

0653"4$0*4"4"."*4

232 10.6 OUTRAS COISAS A MAIS...


'BDJMNFOUFOPUBNPTRVFNVJUBDPJTBBJOEBUFNEFTFSBQSFOEJEB
QBSBOPTUPSOBSNPTQSPHSBNBEPSFTFGVUVSPTQSPGJTTJPOBJTEF5*EF
TVDFTTP 0T UØQJDPT BOUFSJPSNFOUF DJUBEPT TÍP BQFOBT B QPOUB EP
JDFCFSH 5ØQJDPT DPNP UFTUF EF TPGUXBSF  CBODPT EF EBEPT
SFMBDJPOBJT  QSPHSBNBÎÍP QBSB XFC  NFUPEPMPHJBT EF
EFTFOWPMWJNFOUP EF TPGUXBSF  USBUBNFOUP EF FYDFÎÜFT F
QSPHSBNBÎÍPQBSBXFCBJOEBEFWFNTFSFTUVEBEPT.FTNPRVFOÍP
GBÎBNQBSUFEFTUFMJWSP GJDBBSFDPNFOEBÎÍPÏEFWJUBMJNQPSUÉODJB
RVF BT EFWJEBT MJUFSBUVSBT TFKBN FTUVEBEBT QBSB TF BERVJSJS UBJT
DPOIFDJNFOUPT

/ÍP TFSÈ VN DBNJOIP GÈDJM TF UPSOBS VN QSPGJTTJPOBM EF 5* EF
TVDFTTP TFKBOBÈSFBEFHFTUÍP TVQPSUFPVEFTFOWPMWJNFOUP‰GPDP
EFTUFMJWSP.BTVNBDPJTBÏDFSUBDBCFSÈBWPDÐ MFJUPS USJMIBSTFV
DBNJOIP

4VDFTTPFCPBTPSUF

10.6 OUTRAS COISAS A MAIS... 233

You might also like