Buscar

C++ para iniciantes.pdf

Prévia do material em texto

AprendendoC++
Módulo1
C++Fundamentos
AprendendoC++
Sehouverumalínguaquedefineaessênciadaprogramaçãohoje,éC++.
Éomaisproeminentesidiomaparaodesenvolvimentodealto
desempenhodesoftware.Asuasintaxetornou-seopadrãopara
profissionaislinguagensdeprogramação,esuafilosofiadedesign
repercuteemtodacomputação.
C++tambéméalínguaapartirdoqualambosJavaeC#sãoderivados.
Indicadosimplesmente,paraserumprogramadorprofissionalimplica
competênciaemC++.Éaportadeentradaparatodosdeprogramação
modernas.OobjetivodestemóduloéaintroduzirC++,incluindosua
história,asuafilosofiadedesign,eváriasdassuascaracterísticasmais
índicehabilidade
crítica1.
1:UmaBreveHistóriadeC++....................................................................................................................................2
habilidadecrítica1.2:ComoC++refere-seaJavaeC#.........................................................................................5
habilidadecrítica1.3:Programaçãoorientadaaobjetos........................................................................................7
habilidadecrítica1.4:umprimeiroprogramasimples..........................................................................................10
habilidadecrítica1.5:Umsegundolugarprogramasimples................................................................................15
habilidadecrítica1.6:Usandoumoperador..........................................................................................................17
habilidadecrítica1.7:Leituradeentradadoteclado.............................................................................................19
Projeto1-1aconversãodePésparametros........................................................................................................24
habilidadecrítica1.8:DoisDeclaraçõesdeControlede........................................................................................26
habilidadecrítica1.9:Usandoblocosdecódigo...................................................................................................30
Projeto1-2AgerarumatabelademetrosdeparaMedidordeconversões.........................................................33
habilidadecrítica1.10:ApresentandoFunções................................................................................................35
habilidadecrítica1.11:OC++Palavras-chave.....................................................................................................38
habilidadecrítica1.12:Identificadores...................................................................................................................39
AprendendoC++
importantes.Delonge,acoisamaisdifícilsobreaprendizagemdeuma
linguagemdeprogramaçãoéofatodequenenhumelementoexistede
formaisolada.Emvezdisso,oscomponentesdalínguatrabalharjuntos.
Esteinter-relaçãotornadifícilparadiscutirumaspectodeC++sem
envolvendooutros.Paraajudarasuperaresseproblema,estemódulo
forneceumabrevevisãogeraldeváriosC++características,incluindoa
formageraldeumprogramaC++,algumasbásicasdeclaraçõesde
controle,eoperadores.Elenãoentraremmuitosdetalhes,massim
concentra-seaconceitosgeraiscomunsaqualquerprogramaC++.
Habilidadecrítica1.1:UmabrevehistóriadeC++
AhistóriadeC++começacomC.Arazãoparaesteéfácildeentender:
C++éconstruídosobreabasedeC.Assim,C++éumsuperconjuntodeC.
C++expandidoereforçadaalinguagem Cparaapoiarprogramação
orientadaaobjetos(queédescritomaisadiantenestemódulo).C++
tambémadicionouváriasoutrasmelhoriasparaalinguagemC,incluindo
umlongoconjuntoderotinasdebiblioteca.Noentanto,grandepartedo
espíritoesabordeC++estádiretamenteHerdadodeC.Portanto,para
entendercompletamenteeapreciarC++,vocêprecisaentendero"comoe
por"portrásC.
C:oiníciodaidademodernadeprogramação
AinvençãodeCdefineoiníciodaidademodernadeprogramação.oseu
impactonãodevesersubestimadoporqueelemudoufundamentalmente
ocaminhodeprogramaçãofoiseaproximouepensouem.Asuafilosofia
dedesignesintaxeterinfluenciadotodososprincipaislínguadesdeentão.
Cfoium dosprincipais,forçasrevolucionáriasem computação.Cfoi
inventadoeimplementadopelaprimeiravezporDennisRitchieem um
DECPDP-11usandoosistemaoperacionalUNIX.Céoresultadodeum
processodedesenvolvimentoquecomeçoucomummaisvelhoslíngua
chamado BCPL.BCPLfoidesenvolvido porMartin Richards.BCPL
AprendendoC++
influenciadoumidiomachamadoB,quefoiinventadoporKenThompson
equelevouparaodesenvolvimentodeCnadécadade1970.Antesda
invençãodeC,linguagensdecomputadorforamgeralmenteconcebidos
quercomoacadêmicoexercíciosouporburocráticacomissões.Cera
diferente.Elefoiprojetado,implementado,edesenvolvidopelareal,de
trabalhoprogramadores,refletindoaformacomoelesseaproximouo
trabalhodeprogramação.suascaracterísticasforam afinados,testado,
pensouem,erepensadoporaspessoasquerealmenteusouoidioma.
Comoresultado,Catraiumuitosproponenteserapidamentetornou-sea
linguagem deescolhadeprogramadoresem todoomundo.Ccresceu
paraforadaprogramaçãoestruturadarevoluçãodadécadade1960.
Antesdeprogramaçãoestruturada,grandesprogramasforamdifícilpara
escreverporquealógicadoprogramatendiam adegenerarem queé
conhecidocomo"códigoespaguete,"um emaranhadomassadesaltos,
chamadas,eretornaqueédifícilaseguir.estruturadoidiomasdirigida
esteproblemaadicionandobemdefinidosdeclaraçõesdecontrole,sub-
rotinas
comvariáveislocais,eoutrasmelhorias.Usandoestruturadolínguas,tornou-sepossível
escrevermoderadamentegrandesprogramas.Emboranãoforamoutrosestruturadolínguas
nomomento,taiscomoPascal,Cfoioprimeiroacombinarcomsucessopoder,elegância,e
expressividade.Oseuconcisa,masfácildeusarsintaxejuntamentecomasuafilosofiaqueo
programador(nãooidioma)foiresponsávelrapidamenteganhoumuitosconverte.Elepode
serumpoucodifícilentenderapartirdehojeperspectiva,masCfoiumalufadadearfresco
queprogramadorestinhatãoesperada.Comoresultado,Ctornou-seomaisutilizado
programaçãoestruturadalinguagemdadécadade1980.
AprendendoC++
AnecessidadedeC++
Dadaadiscussãoanterior,vocêtalvezpossaestarperguntandoporC++
foiinventado.UmavezqueCfoiumbemsucedidocomputadorlinguagem
deprogramação,porqueestavaláanecessidadedeoutracoisa?A
respostaécomplexidade.Aolongodahistóriadaprogramação,a
complexidadecrescentedeprogramaslevouanecessidadedemaneiras
melhoresparagerenciarquecomplexidade.C++éumarespostaaque
precisam.Paramelhorcompreenderacorrelaçãoentreoaumento
programadecomplexidadeelinguagemdecomputadordesenvolvimento,
considere o seguinte. Abordagens para programação mudaram
dramaticamentedesdeainvençãodocomputador.Porexemplo,quando
computadoresforam inventados,deprogramaçãofoifeitousandoo
computadordopainelfrontalparaalternarnobinárioinstruçõesde
máquina.Enquantoprogramasforam apenasalgumascentenasde
instruçõespormuitotempo,estaabordagemtrabalhou.Comoprogramas
cresceu,linguagem assemblyfoiinventadoparaqueprogramadores
poderialidarcom maior,cadavezmaisprogramascomplexosusando
representaçõessimbólicasdamáquinainstruções.Comoprogramas
continuouacrescer,dealtonívellínguasforamdesenvolvidosparadar
programadoresmaisferramentascomqueparalidarcomacomplexidade.
Aprimeiraamplamenteutilizadolinguagem decomputadorfoi,éclaro,
FORTRAN.EnquantoFORTRAN foium muitoimpressionanteprimeiro
passo,édificilmenteumalinguagemqueincentivaclaro,fácildeentender
programas.décadade1960deuàluzprogramaçãoestruturada,queéo
métododeprogramaçãoencorajadosporlínguastaiscomoC.Com
estruturado línguas que era,pela primeira vez,possívelescrever
moderadamenteprogramascomplexosfacilmente.Noentanto,mesmo
comprogramaçãoestruturadamétodos,umavezqueumprojetoatinge
umcertotamanho,suacomplexidadeexcedeoqueumprogramadorpode
gerenciar.por1970satrasados,muitosprojetosforam pertoouneste
momento.Em respostaparaesteproblema,umanovamaneirade
programacomeçouasurgir:programaçãoorientadaaobjetos(OOP).
UsandoOOP,um programadorpoderiatrabalharcommaiores,mais
AprendendoC++
programascomplexos.OproblemafoiqueCfeznãosuportaprogramação
orientadaaobjetos.OdesejodeumobjetoorientadoparaversãodoCem
últimaanáliselevouàcriaçãodeC++.Emúltimaanálise,emboraCéum
dosmaisgostavaeamplamenteutilizadoprofissionallinguagensde
programaçãodomundo,chegaummomentoemqueasuacapacidade
paralidarcom complexidadeforexcedido.Umavezqueum programa
atinge um certo tamanho,torna-se tão complexo que é difícil
compreendercomoumtotalidade.AfinalidadedeC++épermitirqueesta
barreirapossaserquebradoeparaajudaroprogramadorcompreendere
gerenciarmaior,emaisprogramascomplexos.
NaceoC++
C++foiinventadoporBjarneStroustrupem1979,emBellLaboratoriesem
MurrayHill,NewJersey.Eleinicialmentechamadoanovalíngua"Ccom
Classes."Noentanto,em1983onomefoialteradoparaC++.Stroustrup
construídoC++sobreabasedeC,incluindotodososrecursosdeCdo,
atributos,ebenefícios.EletambémrespeitadoCdafilosofiasubjacente
queo programador,não a língua,éresponsável.Nesteponto,é
fundamentalparaentenderqueStroustrupnãocriouum inteiramente
novalinguagem deprogramação.Em vezdisso,elereforçadaum já
grande sucesso idioma.A maioria dos recursos que Stroustrup
adicionadoaoCforamconcebidosparaapoiarprogramaçãoorientadaa
objetos.Em essência,C++éoobjetoorientadoparaversãodoC.por
edifícioemcimaabasedeC,Stroustrupfornecidaumbomcaminhode
migraçãoparaOOP.Emvezdeterqueaprenderumainteiramentenova
língua,um programadorCnecessáriosparaaprenderapenasalguns
novosrecursosantesdecolherosbenefíciosdoorientadaaobjetos
metodologia.AocriarC++,Stroustrupsabiaqueeraimportantemantero
espíritooriginaldeC,incluindoasuaeficiência,flexibilidade,efilosofia,
enquantoaomesmotempoadicionandosuporteparaprogramação
orientadaaobjetos.Felizmente,oseuobjetivoerarealizado.C++ainda
AprendendoC++
forneceoprogramadorcomaliberdadeecontroledeC,juntamentecomo
poderdeobjetos.EmboraC++foiinicialmenteprojetadoparaajudarna
gestãodemuitograndeprogramas,édemodoalgumlimitadoaesteuso.
Na verdade,o objeto orientado para atributos de C++ pode ser
efetivamenteaplicadoapraticamentequalquertarefadeprogramação.
NãoéincomumverC++utilizadoparaprojetostaiscomoeditores,bancos
dedados,pessoalsistemasdearquivos,deredeutilitários,eprogramas
de comunicação.Porque C++ ações C da eficiência,muito alto
desempenhosistemasdesoftwareéconstruídousandoC++.Alémdisso,
C++ é frequentemente a linguagem de escolha para o Windows
programação.
AevoluçãodoC++
UmavezqueC++foiinventado,elepassouportrêsgrandesrevisões,com
cadarevisãoadicionandoae,quealteraasidioma.Aprimeirarevisãofoi
em1985eosegundoem1990.OterceiroocorreuduranteoC++processo
denormalização.háváriosanos,otrabalhocomeçouemumpadrãopara
C++.Emdireçãooefeito,umajointANSI(AmericanNationalStandards
Institute)e ISO(Normas Internacionais Organização)padronização
comissãofoiformada.Oprimeiroprojectodapropostadepadrãofoi
criadaem 25dejaneirode1994.Aesteprojectode,oANSI/ISOC++
comissão(dequeeueraummembro)manteveascaracterísticasdefinido
pelaprimeiravezporStroustrupeacrescentoualgunsnovos.Mas,em
geral,esteprojectoinicialrefletiuoestadodeC++nomomento.Logoapós
aconclusãodoprimeiroprojectodasC++padrão,umeventoocorreuque
causouopadrãoparaserexpandido:acriaçãodoStandardTemplate
Library(STL)porAlexanderStepanov.ASTLéumconjuntodegenéricos
rotinasquevocêpodeusarparamanipulardados.Eleéaomesmotempo
poderoso
Seelegante.mastambém émuitoamplas.Nasequênciaoprimeiro
projectode,acomissãovotouparaincluiroSTLnaespecificaçãopara
AprendendoC++
C++.AadiçãodeoSTLexpandiuoâmbitodeC++muitoalém asua
definiçãooriginal.Enquantoimportante,ainclusãodoSTL,entreoutras
coisas,diminuiuapadronizaçãodeC++.Éjustodizerqueapadronização
deC++levoumuitomaistempodoquequalquerumtinhaesperado.No
processo,muitosnovosrecursosforam adicionadosparaalíngua,e
muitaspequenasmudançasforam feitas.Naverdade,aversãodoC++
definidopeloANSI/ISOC++comissãoémuitomaioremaiscomplexado
queStroustrupdoprojetooriginal.Oprojectofinalfoiaprovadaparafora
decomité,em14denovembrode1997,eumANSI/ISOpadrãoparaC++
tornou-seumarealidadeem1998.EstaéaespecificaçãoparaC++queé
geralmentereferidocomoStandardC++.Omaterialnestelivrodescreve
StandardC++.EstaéaversãodoC++suportadoportodososmainstream
C++compiladores,incluindodaMicrosoftVisualC++.Assim,ocódigoe
informaçõesnestelivrosãototalmenteportátil.
Habilidadecrítica1.2:comoC++refere-seajavae
C#
Além de C++,há dois outros importante,moderno linguagens de
programação:JavaeC#.JavafoidesenvolvidopelaSunMicrosystems,e
C#foicriadoporMicrosoft.porquenãoháporvezes,confusãosobre
comoestasduaslínguasdizemrespeitoaC++,umabrevediscussãode
suarelaçãoéafim.C++éopaiparaambososJavaeC#.Emboraambos
osJavaeC#adicionado,removido,emodificadováriascaracterísticas,no
totalasintaxeparaestestrêslínguaséquaseidênticos.Alémdisso,o
modelodeobjetousadoporC++ésemelhanteaoaquelesusadospor
JavaeC#.Finalmente,oglobal"lookandfeel"delínguasseguintesé
muitosemelhante.IstosignificaqueumavezquevocêsabeC++,você
podefacilmenteaprenderJavaouC#.oopostotambém éverdade.Se
vocêsabeJavaouC#,aprendizagemC++éfácil.Estaéumarazãoque
JavaeC#compartilharC++desintaxeemodelodeobjeto,quefacilitoua
suaadopçãorápidaporlegiõesdeexperientesC++programadores.A
principaldiferençaentreC++,Java,eC#éotipodeambientede
computaçãoparaosquaiscadaéprojetado.C++foicriadaparaa
AprendendoC++
produçãodealtodesempenhoprogramasparaumtipoespecíficodeCPU
esistemaoperacional.Porexemplo,sevocêquiserescreverumprograma
queéexecutadoemumprocessadorIntelPentiumnoâmbitodosistema
operacionalWindows,emseguida,C++éamelhorlinguagemdeusar.
queestádiretamenteexecutadopelaCPU.Assim,éamarradoparauma
determinadaCPUesistemaoperacional.SevocêdesejaexecutarumC++
programaemumsistemadiferente,vocêprecisarecompilar-loemcódigo
demáquinaespecificamentedirecionadosparaesseambiente.Paracriar
um programaC++quecorraem umavariedadedeambientes,vários
diferentesexecutávelversõesdoprogramasãonecessários.JavaeC#
alcançarportabilidadecompilandoum programaem um pseudocódigo,
linguagemintermediária.NocasodeJava,estálinguagemintermediáriaé
chamado de bytecode.Para C#,é chamado Microsoftlinguagem
intermediária(MSIL).Emambososcasos,estepseudocódigoéexecutado
porumtempodeexecuçãosistema.ParaJava,estetempodeexecução
dosistemaéchamadodeJavaVirtualMachine(JVM).ParaC#,éa
CommonLanguageRuntime(CLR).Portanto,umprogramaJavapodeser
Q:ComoJavaeC#criarmulti-plataforma,programasportáveis,
eporquenãopossofazeromesmocomC++?
A:JavaeC#podecriarmulti-plataforma,programasportáveise
C++nãopossoporcausadotipodecódigoobjetoproduzido
pelocompilador.NocasodeC++,asaídadocompiladoré
códigodemáquina
Pergunteaoexpert
AprendendoC++
executadoemqualquerambienteparaosquaisumaJVMestádisponível,
eumC#programapodeserexecutadoemqualquerambienteemqueo
CLRéimplementado.UmavezqueoJavaeC#tempodeexecução
sistemasdeficarentreumprogramaeaCPU,JavaeC#programasde
incorreremumasobrecargaquenãoestápresentenaexecuçãodeum
C++programa.ÉporissoqueC++programasgeralmentecorrermais
rápidodoqueoequivalenteprogramasdeescritaemJavaouC#.Javae
C#foramdesenvolvidosemrespostaàprogramaçãoúnicanecessidades
doambienteem linhadaInternet.(C# também foiprojetadopara
simplificaracriaçãodecomponentesdesoftware.)AInternetestáligadoa
muitostiposdiferentesdeCPUsesistemasoperacionais.Assim,a
capacidadedeproduzirmulti-plataforma,programasportáveistornou-se
umapreocupaçãodominante.Aprimeiralínguaparaendereçoesta
necessidadefoiJava.UsandoJava,épossívelparaescreverumprograma
queéexecutadoem umagrandevariedadedeambientes.Assim,um
programaJavapodemoverlivrementenaInternet.Noentanto,opreço
quevocêpagarporportabilidadeéaeficiência,eprogramasJava
executarmaislentamentedoquefazerC++programas.Omesmoé
verdadeiroparaC#.Em últimaanálise,sevocêquiserparacriaraltodesempenhodesoftware,useC++.Sevocêprecisaparacriaraltamente
portátilsoftware,useJavaouC#.Umpontofinal:Lembre-sequeC++,
Java,e C# são projetados para resolverdiferentes conjuntos de
problemas.Nãoéum problemadosquaislínguaémelhorem edesi
mesmo.Em vezdisso,éumaquestãodequelínguaécertoparao
trabalhonamão.
1.PeloquelínguaéC++derivados?
2.OquefoioprincipalfatorquelevouacriaçãodeC++?
3.C++éopaideJavaeC#.VerdadeiroouFalse?
Progressodeverificação
AprendendoC++
Habilidadecrítica1.3:Programaçãoorientadaa
objetos
CentralparaC++éprogramaçãoorientadaaobjetos(OOP).apenascomo
explicado,OOPfoioimpulsoparaacriaçãodeC++.Porcausadisso,éútil
paraentenderOOPéprincípiosbásicosantesdeescreveratémesmoum
simplesC++programa.programaçãoorientadaaobjetoslevouos
melhoresidéiasdeprogramaçãoestruturadaecombinados-loscom
váriosnovosconceitos.Oresultadofoiumdiferentesemelhormaneirade
organizarum programa.Nosentidomaisgeral,um programapodeser
organizadoemumadasduasmaneiras:emtornodeseucódigo(oque
estáacontecendo)ouemtornodeseusdados(queestásendoafetados).
Usandoapenasestruturadotécnicasdeprogramação,programassão
normalmenteorganizadosemtornodecódigo.Estaabordagempodeser
pensadocomo"códigoagindoemdados."orientadaaobjetosprogramas
detrabalhoocontrário.Elessãoorganizadosemtornodedados,como
princípiofundamentalsendo"dadoscontrolaroacessoaocódigo."Em
umalinguagemorientadaaobjetos,vocêdefinirosdadoseorotinasque
sãoautorizadosaagiremqueosdados.Assim,umtipodedadosdefine
exatamenteoquetipodeoperaçõespodeseraplicadoparaqueosdados.
Respostas
1.C++éderivadodeC.
2.OaumentodoprogramadecomplexidadefoioprincipalfatorquelevouacriaçãodeC++.
3.verdade.
AprendendoC++
Parasuportarosprincípiosdaprogramaçãoorientadaaobjetos,todosos
OOPlínguas,incluindoC++,temtrêstraçosemcomum:encapsulamento,
polimorfismo,eherança.Vamosexaminarcada.
Encapsulamento
Encapsulamentoéummecanismodeprogramaçãoqueunecódigoeos
dadosquemanipula,equemantémtantoasalvodeinterferênciaexterna
eusoindevido.Emumalinguagemorientadaaobjetos,códigoedados
podemserunidosemtalformaqueumindependentecaixapretaécriado.
Dentrodacaixasãotodososdadosnecessáriosecódigo.Quandocódigo
eosdadossãoligadosentresinesteforma,umobjetoécriado.Emoutras
palavras,umobjetoéodispositivoquesuportaencapsulamento.
Q:Eujáouvifalarotermométodoaplicadoaumsub-rotina.éummétodoo
mesmoqueumafunção?
A:Emgeral,arespostaésim.OtermométodofoipopularizadoporJava.O
queumC++programadorchamadasdeumafunção,umprogramadorJava
chamadasummétodo.C#programadorestambémusarotermométodo.
Porqueésetornandotãoamplamenteutilizado,àsvezesotermométodo
tambéméusadoquandoreferindo-seaumC++
Pergunteaoexpert
AprendendoC++
Noprazodeumobjeto,códigooudadosouambospodemserprivatepara
esseobjetooupublic.códigoprivateoudadoséconhecidoporser
acessívelporapenasoutrapartedoobjeto.Ouseja,códigoprivadoou
dadoscannotseracessadoporumpedaçodeoprogramaqueexistefora
doobjeto.Quandocódigooudadosépublic,outraspartesdoseu
programapodeacessá-lomesmoqueédefinidonoprazodeumobjeto.
Normalmente,opúblicopartesdeum objetosãousadosparafornecer
umacontroladainterfaceparaoprivateelementosdoobjeto.C++de
unidadebásicadeencapsulamentoéaclasse.umaclassedefineaforma
deumobjeto.Eleespecificatantoosdadoseocódigoqueiráoperarem
queosdados.C++usaumaespecificaçãodeclasseparaconstruir
objetos.Objetossãoinstânciasdeumaclass.Assim,umaclassé
essencialmenteumconjuntodeplanosdequeespecificacomoconstruir
umobjeto.Ocódigoedadosqueconstituemumaclasssãochamadosde
membrosdaclass.Especificamente,variáveisdemembro,também
chamadodevariáveisdeinstância,sãoosdadosdefinidopelaclass.
funçõesdemembrosãoocódigoqueoperaemqueosdados.funçãoé
C++doprazoparaumasub-rotina.PolimorfismoPolimorfismo(apartir
degrego,quesignifica"muitasformas")éaqualidadequepermiteque
umainterfaceparaacessarumaclassgeraldeações.Um exemplo
simplesdepolimorfismoéencontradonovolantedeum automóvel.O
volante(ainterface)éomesmonãoimportaoquetipoderealdispositivo
deconduçãoéusado.Ouseja,ovolantefuncionaomesmoseoseucarro
temdirecçãomanual,direcçãoassistida,ouemracke-pinhãodedireção.
Assim,transformandoovolanteàesquerdafazcomqueocarroparairà
esquerdanãoimportaoquetipodedirecçãoéusado.obenefícioda
interfaceuniformeé,éclaro,queumavezquevocêsabecomopara
Função
AprendendoC++
operarovolante,vocêpodedirigirqualquertipodecarro.Omesmo
princípio também pode se aplicam a programação.Porexemplo,
considereumapilha(queéumprimeiro-in,última-outlista).Vocêpode
terumprogramaquerequertrêsdiferentestiposdepilhas.Umapilhaé
usadoparavaloresinteiros,umparavaloresdepontoflutuante,eumpara
caracteres.Nestecaso,oalgoritmoqueimplementacadapilhaéomesmo,
mesmoqueosdadossendoarmazenadoédiferente.deformanão
linguagem orientadaaobjetos,vocêserianecessárioparacriartrês
diferentesconjuntosdepilharotinas,comcadaconjuntousandonomes
diferentes.Noentanto,porcausadepolimorfismo,emC++vocêpodecriar
um geralconjuntodepilharotinasquefuncionaparatodosostrês
situações.Destaforma,umavezquevocêsabecomousarumapilha,
vocêpodeusartodoseles.Em termosmaisgerais,oconceitode
polimorfismoémuitasvezesexpressaporafrase"umainterface,
múltiplosmétodos."Istosignificaqueépossívelprojetarumainterface
genéricaaum grupodeactividadesrelacionadascom.Polimorfismo
ajudaareduzircomplexidade,permitindoqueamesmainterfacepara
especificarumaclassegeraldeação.Éocompiladordotrabalhopara
selecionaraaçãoespecífica(ouseja,método),umavezqueaplica-sea
cadasituação.Você,oprogramador,tem anecessidadedefazerisso
seleçãomanualmente.Vocêprecisaapenaslembre-seeutilizara
interfacegeral.
Herança
Herançaéoprocessopeloqualumobjetopodeadquiriraspropriedades
deoutroobjeto.Esteéimportanteporqueelesuportaoconceitode
classificaçãohierárquica.Sevocêpensarnisso,amaioriaconhecimentoé
feita gerenciávelporhierárquica(ou seja,de cima para baixo)
classificações.Porexemplo,um vermelhomaçãdeliciosafazparteda
classificaçãomaçã,queporsuavezfazpartedofrutoclass,queésoba
maior class comida. Ou seja,a comida class possui certas
qualidades(comestíveis,nutritivos,eassim pordiante)quetambém,
logicamente,seaplicam asuasubclasse,frutas.Paraalém destas
AprendendoC++
qualidades,ofrutoclasstemcaracterísticasespecíficas(suculento,doce,
eassimpordiante)quedistingui-lodeoutrosalimentos.Amaçãclasse
defineasqualidadesespecíficasparaumamaçã(cresceemárvores,não
tropical,eassimpordiante).,vermelho,maçãdeliciosaque,porsuavez,
herdartodasasqualidadesdetodososanterioresclassesedefiniria
apenasasqualidadesqueotornamúnico.semousodehierarquias,cada
objetoteriaquedefinirexplicitamentetodasassuascaracterísticas.
Usandoherança,um objetosóprecisadedefinirasqualidadesqueo
tornamúnicanoprazodesuaclass.Elepodeherdarseusatributosgerais
apartirdoseupai.Assim,éomecanismodeherançaquetornapossível
paraumobjetoparaserumainstânciaespecíficadeummaiscasogeral
1.NomeosprincípiosdeOOP.
2.OqueéaunidadebásicadeencapsulamentoemC++?
3.Oqueéodeusogeralprazoparaumasub-rotinaemC++?
Progresodeverificação
Respostas
1.encapsulamento,polimorfismo,eherançasãoosprincípiosdaOOP.
2.AclasséaunidadebásicadeencapsulamentoemC++.
3.funçãoéodeusogeralprazoparaumasub-rotinaemC++.
AprendendoC++
Habilidadecrítica1.4:Oprimeiroprograma
simples
Agoraéhoradecomeçaraprogramação.Vamoscomeçarporcompilare
funcionandoacurtaamostradoprogramaC++mostradoaqui:
Q:Vocêqueestadodeprogramaçãoorientadaaobjetos(OOP)éumaformaeficazparagerenciargrandes
programas.Noentanto,parecequeOOPpodeadicionarsubstancialdespesasgeraispararelativamente
pequenos.noqueserefereaC++,éestaverdade?
A:nº.Umponto-chaveparaentendersobreC++équeelepermitequevocêescreverorientadaaobjetos
programas,masnãoexigemquevocêfazê-lo.EsteéumadasdiferençasimportantesentreC++eJava/C#,
queempregamumrigorosoobjeto-modeloemquecadaprogramaé,apelomenosumapequenamedida,orientadaaobjetos.C++dá-lheaopção.Alémdisso,paraomaiorparte,oobjeto-recursosorientadosdeC++
sãotransparentesemtempodeexecução,tãopouco(sehouver)sobrecargaéincorridos.
Pergunteaoexpert

Continue navegando