Notas CPP
Notas CPP
Notas CPP
C++
Routo Terada
www.ime.usp.br/~rt
Depto. C. da Computação - USP
Objetivos
• Introdução a C++
• POO - Programação Orientada a Objetos
• Inheritance ou herança
• Constructor e desctructor
• Exemplos de programas
Bibliografia:
1. I. Pohl: C++ for C Programmers, 3rd. edition, Addison-Wesley
2. B. Stroustup: The C++ Programming Language, Addison-Wesley
3. Lee and Phillips: The Apprentice C++, ITP Editors
C++ (Routo) 2
1
3HYLWDUHVFUHYHU
VWGDQWHVGHQRPHV 9DLH[LELU$O{0XQGR
C++ (Routo) 3
9DLH[LELU
$O{0XQGR
3HGUR&DEUDO
eDJRUD"
C++ (Routo) 4
2
DQG IDOVH VKRUW
DQGBHT IORDW VLJQHG
DVP IRU VL]HRI
DXWR IULHQG VWDWLF
ELWDQG JRWR VWUXFW 3DODYUDVFKDYHHP&
ELWRU LI VZLWFK
ERRO LQOLQH WHPSODWH
EUHDN LQW WKLV
FDVH ORQJ WKURZ
FDWFK PXWDEOH WUXH
FKDU QDPHVSDFH WU\
FODVV QHZ W\SHGHI
FRPSO QRW W\SHLG
FRQVW QRWBHT W\SHQDPH
FRQWLQXH RSHUDWRU XQLRQ
GHIDXOW RU XQVLJQHG
GHOHWH RUBHT XVLQJ
GR SULYDWH YLUWXDO
GRXEOH SURWHFWHG YRLG
HOVH SXEOLF YRODWLOH
HQXP UHJLVWHU ZFKDUBW
H[SOLFLW UHWXUQ ZKLOH
H[WHUQ [RU
[RUBHT
C++ (Routo) 5
• 8PWLSRDJUHJDGRSHUPLWHXPFRQMXQWRGHGDGRV
FRPSRQHQWHVVHUWUDWDGRFRPRXP~QLFRWLSRGHGDGR
– HQTXDQWRSHUPLWHRDFHVVRDRVFRPSRQHQWHV
LQGLYLGXDLV
• $FRQVWUXomRVWUXFWGH&SHUPLWHDGHILQLomRGHWLSRV
DJUHJDGRV
• 2DFHVVRjVYDULiYHLVPHPEURpDWUDYpVGRRSHUDGRU
SRQWR³´FRPRHP[SHVR
1RPHGHWLSRQRYR
VWUXFW,GHQWLILFDGRUBGHBWLSR9DULiYHLVPHPEUR
^
7LSRYDUBPHPEUR
7LSRYDUBPHPEUR
7LSRYDUBPHPEUR1
`
C++ (Routo) 6
3
3$5$',*0$'(25,(17$d2$2%-(726322
C++ (Routo) 7
)XQo}HVVmR
PHPEURVGH
VWUXFWHP&
VFRSH
UHVROXWLRQ
RSHUDWRU
2YHUORDGLQJZSULQW ³SRQWRZ ³
9DLH[LELU
SRQWRZ
SRQWRZ
SRQWRZGHSRLVGHSOXV
C++ (Routo) 8
4
6ySRGHVHUXVDGRGHQWURGHVWHVWUXFW
9DLH[LELU
SRQWRZ
SRQWRZ
SRQWRZGHSRLVGHSOXV
C++ (Routo) 9
classes
• 1HFHVVLWDPRVGHXPPHFDQLVPRSDUDGHILQLUWLSRVGHGDGRV
TXH
✔ VHSDUDFODUDPHQWHDLQWHUIDFHGRWLSRGDVXD
LPSOHPHQWDomR VHSDUDWLRQRIFRQFHUQVHLQIRUPDWLRQ
KLGLQJ
✔ SUHYLQH³DEXVR´GRVGHWDOKHVGDLPSOHPHQWDomR
HQFDSVXODWLRQ
✔ SHUPLWHGHILQLomRGHFRPSRUWDPHQWR ,HIXQo}HV
DVVLPFRPRYDORUHVDEVWUDWRV
✔ SHUPLWHYHULILFDomRGHHUURVGXUDQWHDFRPSLODomR
✔ SHUPLWHGHVHQYROYLPHQWRVHSDUDGRGRVFRPSRQHQWHVGH
WLSRGHGDGRV
• 2PHFDQLVPRGHFODVVHP&SHUPLWHVDWLVID]HUHVWHV
UHTXLVLWRV
C++ (Routo) 10
5
CLASSES
CLASSES
Nasce(){ Nasce(){
.... ....
} }
)XQo}HVPHPEUR
Cresce(){ Morre(){
.... ....
} }
C++ (Routo) 12
6
,167$1&,$d2
Class Mamífero
Classificação Nome Instanciação
Idade
CPF
Nasce(){
....
}
Cresce(){
Objeto LU .... Objeto LI
Nome=Lulu } Nome=Lili
Idade=4 Idade=6
Peso=8 Peso=9
Nasce(){ Nasce(){
.... ....
} }
Cresce(){ Cresce(){
.... ....
} }
C++ (Routo) 13
,167$1&,$d2
Class Pessoa
Classificação Nome Instanciação
Idade
CPF
Nasce(){
....
}
Estuda(){
Objeto ZÉ .... Objeto JOCA
Nome=José } Nome=JoãoCarlos
Idade=41 Idade=61
CPF=388734122 CPF=1233213459
Nasce(){ Nasce(){
.... ....
} }
Estuda(){ Estuda(){
.... ....
} }
C++ (Routo) 14
7
Palavras-chave
• OBJETOS
• CLASSES
• INSTANCIAÇÃO
C++ (Routo) 15
OBJETOS
C++ (Routo) 16
8
main MODELO
objeto B de
interação
entre
objetos
objeto A
objeto C
“perguntas” e “respostas”
“mensagens” entre objetos
“estímulo” e “resposta”
C++ (Routo) 17
ponto4.cpp
FODVV
9DLH[LELU
SRQWRZ
SRQWRZ
SRQWRZGHSRLVGHSOXV
C++ (Routo) 18
9
C++ (Routo) 19
• 8PDGHILQLomRGHfodvvGHILQHRVGHWDOKHVH[DWRVHP&GRTXHDLQWHUIDFHFRP
DFODVVHpHGHVHPSHQKDGRLVSDSpLV
– SDSHOGHIDFLOLWDUYHULILFDomRGHHUURVHPWHPSRGHFRPSLODomR
– SDSHOGHGRFXPHQWDomRGHWDOKHVH[DWRVGHFRPRXVDUXPDFODVVH
• 'HILQLo}HVGHfodvvSRVVXHPDHVWUXWXUDJHUDOVHJXLQWH
FODVV ,G7LSR
{
SXEOLF 3DUWHS~EOLFDGHXPDFODVVH
GHILQLomRGLVSRQtYHODXPXVXiULR
,QWHUIDFH³FRQVWUXFWRU´
,G7LSR
,QWHUIDFHVGHIXQomRPHPEUR
7LSR5HVXOWDGR)XQomR0HPEUR
,QWHUIDFHVGHRSHUDGRUPHPEUR
7LSR5HVXOWDGRRSHUDWRU 7LSRODGRGLUHLWR
SULYDWH: 3DUWHSULYDGDGHXPDFODVVH
'HFODUDo}HVGHIGHWLSRH
LQWHUIDFHVGHIXQomR
12GLVSRQtYHOSDUDXPXVXiULR
};
C++ (Routo) 20
10
/LQJXDJHQV2ULHQWDGDVD2EMHWRV
• C++
• Java
• Object Pascal ( Delphi )
C++ (Routo) 21
$SDODYUD³IULHQG´
LQGLFDTXHDSHVDUGH
VHU³SXEOLF´R
RSHUDGRUWHPDFHVVR
jSDUWH³SULYDWH´
([LEH
L
L
L
C++ (Routo) 22
11
&RQVWUXFWRU
H
GHVWUXFWRU
&RQVWUXFWRUpLQYRFDGR
\ ]
'HVWUXFWRUpLQYRFDGRTGR
YDUGHL[DGHH[LVWLU RX
FRP³GHOHWH [´
C++ (Routo) 23
2YHUORDGLQJGHSULQW
C++ (Routo) 24
12
2YHUORDGLQJGH
([LEH
[ L
\ L
] L
C++ (Routo) 25
C++
super e sub class
Super Class
derived class
C++ (Routo) 26
13
empresa
Exemplo de
super e sub class
divisão_1
derived class
vantagens:
1. objetos do tipo GLUHWRULD usam funções já definidas para
GLYLVmRB;
2. herarquia reflete a relação dos objetos no domínio do problema
C++ (Routo) 27
pessoa
Exemplo de
super e sub class
estudante
derived class
vantagens:
1. objetos do tipo HVWXGDQWHBSyV usam funções já definidas para
HVWXGDQWH;
2. herarquia reflete a relação dos objetos no domínio do problema
C++ (Routo) 28
14
,QKHULWDQFHRXKHUDQoD
FRPSULYDWHPHPEHUV
LQFOXGHLRVWUHDP!HVWXGDQWHFSS
HQXPDQR^SULPHLURVHJXQGRWHUFHLURTXDUWRSyVJUD`
HQXPEROVD^&13T)$3(63&$3(6RXWUD`
FODVVHVWXGDQWH^VXSHUFODVV
SXEOLFFRQVWUXFWRUGHHVWXGDQWH
HVWXGDQWH FKDU HQPLQWHLGHQWGRXEOHHQWDQRH[
YRLGSULQW FRQVW
SULYDWH
LQWHLGHQWBHVWXGDQWH3
GRXEOHHQRWD3
DQRHD3
FKDUHQRPH3>@
` VXEFODVVHKHUDQoDGHILQLGDSRU
FODVVHVWXGDQWHBSyVSXEOLFHVWXGDQWH^VXEFODVV
SXEOLFFRQVWUXFWRUGHHVWXGDQWHBSyV
HVWXGDQWHBSyV FKDU HQPLQWHLGHQWGRXEOHHQW
DQRH[EROVDHSEOVFKDU HSGSWFKDU HSWHV
YRLGSULQW FRQVW
SULYDWH
EROVDHSE3
FKDUHSGHSWR3>@ YDULiYHLVDGLFLRQDLVVyGDVXEFODVVH
FKDUHSWHVH3>@
`
C++ (Routo) 29
HVWXGDQWHpVXSHUFODVVH ,QKHULWDQFHRXKHUDQoD
FODVVHVWXGDQWH^HVWXGDQWHK
FRPSURWHFWHGPHPEHUV
SXEOLF
HQXPDQR^SULPHLURVHJXQGRWHUFHLURTXDUWRSyVJUD`
HVWXGDQWH FKDU HQPLQWHLGHQWGRXEOHHQWDQRH[
YRLGSULQW FRQVW
SURWHFWHG
LQWHLGHQWBHVWXGDQWH3
GRXEOHHQRWD3
DQRHD3
FKDUHQRPH3>@
`FRQVWUXFWRUGHHVWXGDQWH
HVWXGDQWHHVWXGDQWH FKDU HQPLQWHLGHQWGRXEOHHQW
DQRH[ HLGHQWBHVWXGDQWH3 HLGHQW HQRWD3 HQW
HD3 H[
^VWUFS\ HQRPH3HQP `
YRLGHVWXGDQWHSULQW FRQVW
^FRXWHQRPH3HLGHQWBHVWXGDQWH3
HD3HQRWD3HQGO`
15
HVWXGDQWHBSyVpVXEFODVVHGHHVWXGDQWH
FODVVHVWXGDQWHBSyVSXEOLFHVWXGDQWH^
SXEOLF
HQXPEROVD^)$3(63&13T&$3(6RXWUD`
HVWXGDQWHBSyV FKDU HQPLQWHLGHQWGRXEOHHQWDQRH[
EROVDHSEOVFKDU HSGSWFKDU HSWHV
YRLGSULQW FRQVW
SURWHFWHG
EROVD HSE3
FKDUHSGHSWR3>@
FKDUHSWHVH3>@
`
HVWXGDQWHBSyVHVWXGDQWHBSyV FKDU HQPLQWHLGHQWGRXEOHHQWDQRH[EROVDHSEOV
FKDU HSGSWFKDU HSWHV HVWXGDQWH HQPHLGHQWHQWH[ HSE3 HSEOV
^
VWUFS\ HSGHSWR3HSGSW
VWUFS\ HSWHVH3HSWHV
`
YRLGHVWXGDQWHBSyVSULQW FRQVW
^
HVWXGDQWHSULQW H[LEHLQIRGDVXSHUFODVV
FRXWHSGHSWR3HSE3 ?Q
HSWHVH3HQGO
`
C++ (Routo) 31
C++ (Routo) 32
16
H[LEH
0'&
C++ (Routo) 33
H[LEH
C++ (Routo) 34
17