Anda di halaman 1dari 13

Programao Orientada a Objetos com C++

Prof. Srgio de Barros Pinto

1. Domnio da Aplicao
Realidade na qual a aplicao est inserida. ! partir da an lise do dom"nio e com o uso de mecanismos de abstrao e#tra"mos o modelo conceitual da aplicao. O modelo conceitual pode ser representado pelas classes de objetos pr$prios do dom"nio da aplicao e pelos seus relacionamentos.

2. Modelo em Trs Camadas


! modelagem de uma aplicao em tr%s camadas considera que as classes so agrupadas segundo sua funcionalidade& em' Classes de (nterface& Classes de Controle& e Classes Persistentes )ou *ntidades+.

3. Classes de Objetos
!s classes de objetos representam as entidades& as interfaces e os controles necess rios para que a aplicao funcione. !s classes podem ser subdi,ididas em tr%s tipos distintos' Classes Persistentes )ou *ntidades+& que contm as informa-es que de,em continuar e#istindo mesmo quando o sistema no esti,er ati,o. !s classes persistentes geralmente so e#tra"das do modelo de dados da aplicao )modelo entidade.relacionamento+. Classes de Controle& que possuem o con/ecimento das especificidades da aplicao )regras do neg$cio+.

Classes de interface& que tratam da ligao da aplicao com o mundo e#terior& responsabili0ando.se pela entrada e sa"da de dados e comandos.

!s classes do tipo 1*ntidade2 so obtidas durante a an lise do dom"nio da aplicao. !s classes do tipo 1Controle2 e do tipo 1(nterface2 aparecem na e#panso do modelo conceitual para um modelo de tr%s camadas. Classes podem ser formadas a partir de outras classes por processos agregao e composio e /erana ),er item 3+.

4. M todos de !ma Classe de Objetos


Os mtodos de uma classe descre,em seu comportamento e equi,alem 4s 1procedures2 e 4s fun-es da programao estruturada. Os mtodos podem ser classificados como 1p5blicos2 e 1pri,ados2. 6todos p5blicos podem ser acessados por objetos de outras classes. 6todos pri,ados s$ podem ser acessados pelo pr$prio objeto. *sse processo de 1esconder2 algo dos demais objetos e classes de objetos c/amado de 1encapsulamento2.

". Atrib#tos de !ma Classe de Objetos


Os atributos de uma classe so os dados associados 4 classe e equi,alem 4s ,ari ,eis e constantes encontradas nas fun-es e 1procedures2 da programao estruturada. Os atributos das classes 1Persistentes2 so os atributos obtidos durante a modelagem de dados )modelo *ntidade.Relacionamento+. Os atributos das classes de 1Controle2 so os dados necess rios para o cumprimento das regras de neg$cio. Os atributos das classes do tipo 1(nterface2 so os dados necess rios para seu o funcionamento.

$. Objetos
Objetos so inst7ncias de uma classe. Os objetos e#istem apenas durante o tempo em que a aplicao esti,er ati,a. 8ma ,e0 encerrada a aplicao& os objetos dei#am de e#istir. Os objetos instanciados a partir de classes 1Persistentes2 t%m seus atributos arma0enados )geralmente em tabelas de banco de dados+ antes de serem eliminados.

%. Mecanismos da Orientao a Objetos


! orientao a objeto emprega os mecanismos de 1!ssociao2& 1!gregao2& 1Composio2 e 19enerali0ao2. a. Associao :escre,e um conjunto de cone#-es entre objetos. 8ma associao representada pela sua cardinalidade e pela descrio de papis.

b. A&re&ao ; um tipo especial de associao e representa a associao entre o todo e suas partes. <a agregao as partes podem e#istir independentes do todo.

c. Composio ; um tipo mais forte de relacionamento todo=parte& no qual as partes no podem e#istir independentes do todo.

d. 'enerali(ao ; uma relao do tipo especiali0ao=generali0ao na qual os objetos dos elementos especiali0ados )fil/os+& podem ser substitu"dos por elementos genricos )pais+. Os fil/os compartil/am a estrutura e o comportamento dos pais )/erana+.

). Classes em *C++,
>amos criar uma classe CPonto para representar um ponto do espao ?: @.A :efinio de Classe em 1C++2 Criar o arqui,o de B/eaderB c/amado ponto./& que de,er conter a definio da classe. Cifndef pontoD Cdefine pontoD ==..................................................... ==:efinio da Classe CPonto ==..................................................... class CPonto E pri,ate' ==Coordenadas do ponto int #F int GF public' CPonto)+F ==6todo construtor da classe CPonto)int& int+F ==Outro mtodo construtor da classe HCPonto)+E IF ==6todo destruidor da classe ,oid SetPosicao)int& int+F ,oid SetJ)int+F ,oid SetK)int+F int 9etJ)+F int 9etK)+F IF Cendif @.L (mplementao de Classe em 1C++2 Criar o arqui,o c/amado ponto.cpp& que de,er conter a implementao da classe.

Cinclude Mcstdlib./N ==incluso dos arqui,os ./ necess rios Cinclude Bponto./B ==incluso do arqui,o de definio da classe ==..................................................... ==(mplementao da Classe CPonto ==..................................................... CPonto''CPonto)+ E # O P.PF G O P.PF I ==........................................................ CPonto''CPonto) int coordJ& float coordK+ E # O coordJF G O coordKF I ==........................................................ ,oid CPonto''SetPosicao)int coordJ& float coordK+ E # O coordJF G O coordKF I ==........................................................ ,oid CPonto''SetJ)int coord+ E # O coordF I ==........................................................ ,oid CPonto''SetK)float coord+ E G O coordF I ==........................................................ int CPonto''9etJ)+ E return #F I ==........................................................ float CPonto''9etK)+ E return GF I ==........................................................

-.erccio a/aliado 10 Construa uma classe C!rraG para representar uma estrutura de
dados do tipo arraG. ! classe de,er conter os seguintes par7metros e mtodos' Par7metros' taman/o6a#!rraG ==taman/o m #imo do arraG ,agas:isponi,eis ==quantidade de ,agas dispon",eis no arraG pro#ima>aga =="ndice da pr$#ima ,aga dispon",el no arraG ou .A ==se no e#istirem ,agas dispon",eis. 6todos' (nserir)#+ ==insere o ,alor # na pr$#ima ,aga dispon",el ==retorna P )indicando sucesso+ ou .A )indicando fal/a+ (nserir)#& G+ == se G for , lido& insere o ,alor # na posio G Retirar)G+ ==se G for , lido& retorna o ,alor contido na posio G e ==limpa o conte5do da posio Qer)G+ ==se G for , lido& retorna o ,alor contido na posio G ObterPro#>aga)+ ==retorna o "ndice da pr$#ima posio ,aga ou .A se no ==e#istirem posi-es ,agas Qimpar)+ ==limpa o arraG 9etRaman/o6a#)+ ==retorna o taman/o m #imo do arraG 9etPro#>aga)+ ==retorna a pr$#ima ,aga dispon",el ou .A se no e#istir ==,aga 9et>agas:isponi,eis)+ ==retorna a quantidade de ,agas dispon",eis

*#emplo de uso dos mtodos' p.NQer)AP+F == p um ponteiro para um objeto C!rraG # O p.NRetirar)L+F== # uma ,ari ,el do mesmo tipo == dos ,alores inseridos no arraG O programa a seguir mostra um e#emplo do uso da classe e seus mtodos' Cinclude McstdlibN Cinclude MiostreamN Cinclude BarraG./B ==Obser,ao' <o se esquea de inserir o arqui,o arraG.cpp no projeto using namespace stdF int main)int argc& c/ar Sarg,TU+ E ==:eclarao de um ponteiro para objetos da classe C!rraG C!rraG SpF ==Criao de um objeto da classe C!rraG p O neV C!rraG)AP+F ==passa o taman/o do arraG na ati,ao do mtodo construtor ==*#emplo de uso dos mtodos de C!rraG p.N(nserir)P&APP+F ==c/amada do mtodo (nserir)#& G+ p.N(nserir)A&LPP+F ==c/amada do mtodo (nserir)#& G+ coutMMBO ,alor inserido na posicao P 'B MM p.NQer)P+F ==c/amada do mtodo Qer)#+ coutMMBWn O ,alor inserido na posicao A 'B MM p.NQer)A+F ==c/amada do mtodo Qer)#+ sGstem)BP!8S*B+F return *J(RXS8CC*SSF I

1 Deri/ao de Classes 2ia 3erana


>amos criar uma classe CPontoColorido a partir da classe CPonto& de modo a obedecer o diagrama 86Q abai#o'

Y.A

:efinio da Classe

Criar o arqui,o de B/eaderB c/amado pontoColorido./& que de,er conter a definio da classe. Cifndef pontoColoridoD Cdefine pontoColoridoD Cinclude Bponto./B ==incluso do arqui,o de definio da classe base ==..................................................... ==:efinio da Classe CPontoColorido ==..................................................... class CPontoColorido ' public CPonto E pri,ate' ==Cores do ponto int rF int gF int bF public' CPontoColorido)int& int& int& int& int+F ==6todo construtor da classe HCPontoColorido)+E IF ==6todo destruidor da classe ,oid SetR)int+F ,oid Set9)int+F ,oid SetB)int+F int 9etR)+F int 9et9)+F int 9etB)+F IF Cendif Y.L (mplementao da Classe Criar o arqui,o c/amado pontoColorido.cpp& que de,er conter a implementao da classe. Cinclude Mcstdlib./N ==incluso dos arqui,os ./ necess rios Cinclude BpontoColorido./B ==incluso do arqui,o de definio da classe ==..................................................... ==(mplementao da Classe CPontoColorido ==........................................................ CPontoColororido''CPontoColorido) int corR& int cor9& int cor B& int J& int K+ ' CPonto)J& K+ E

I ==........................................................ ,oid CPontoColorido''SetR)int R+ E r O RF I ==........................................................ ,oid CPontoColorido''Set9)int 9+ E r O 9F I ==........................................................ ,oid CPontoColorido''SetB)int B+ E r O BF I ==........................................................ int CPontoColorido''9etR)+ E return rF I ==........................................................ int CPontoColorido''9et9)+ E return gF I ==........................................................ int CPontoColorido''9etB)+ E return bF I

r O corRF g O cor9F b O corBF

-.erccio a/aliado 20 construa uma classe CPil/a para representar uma estrutura de
dados do tipo pil/a. ! classe CPil/a de,er ser implementada& por /erana& a partir da classe C!rraG. :e,er usar os mtodos de C!rraG na implementao de seus mtodos Pus/)+& Pop)+ e :efineStatus)+. *#emplo' bool CPil/a''Pus/)int #+ E if)9etPro#>aga)+ ZO .A+ E (nserir)#+F :efineStatus)+F return trueF I else ==pil/a c/eia return falseF I

==9etPro#>aga)+ de,e ser p5blica em C!rraG ==(nserir)+ de,e ser p5blica em C!rraG ==6todo pri,ado de CPil/a ==Sucesso na insero

==[al/a na insero

O mtodo Pus/)#+& se a pil/a no esti,er c/eia& insere B#B na posio apontada por topo& incrementa o ,alor de topo e c/ama o mtodo :efineStatus)+ para atuali0ar o status da pil/a.

O mtodo Pop)+& se a pil/a no esti,er ,a0ia& retira da pil/a o ,alor que est na posio apontada por topo.A& decrementa o ,alor de topo e c/ama o mtodo :efineStatus)+ para atuali0ar o status da pil/a. *#emplo de uso dos mtodos' p.NPus/)AP+F == p um ponteiro para um objeto CPil/a # O p.NPop)+F == # uma ,ari ,el do mesmo tipo == dos ,alores inseridos na pil/a

14 A&re&ao de classes
>amos criar uma classe CReta formada por , rios pontos )CPonto+& de modo a obedecer o diagrama da 86Q abai#o'

AP.A

:efinio da Classe

Criar o arqui,o de B/eaderB c/amado reta./& que de,er conter a definio da classe. Cifndef retaD Cdefine retaD CincludeMcstdlibN CincludeMcmat/./N CincludeMmapN Cinclude Bponto./B ==incluso do arqui,o de definio da classe que ser agregada ==..................................................... ==:efinio da Classe CReta ==..................................................... class CReta E pri,ate' ==Coordenadas do ponto inicial da reta int #iF int GiF int 0iF ==Coordenadas do ponto final da reta int #fF int GfF int 0fF

float d#F float dGF mapMint& CPonto S Npontos:aReta ,oid CriarPontos)+F

==incremento em # ==incremento em G ==coleo de pontos da reta ==usada na pr$pria classe

IF Cendif

public' CReta)int& int& int& int&+F ==6todo construtor da classe HCReta)+E IF ==6todo destruidor da classe ,oid :esen/ar)+F

AP.L (mplementao da Classe Criar o arqui,o c/amado reta.cpp& que de,er conter a implementao da classe. Cinclude Mcstdlib./N ==incluso dos arqui,os ./ necess rios Cinclude Breta./B ==incluso do arqui,o de definio da classe ==..................................................... ==(mplementao da Classe CReta ==........................................................ CReta''CReta)int Ji& int Ki& int Jf& int Kf+F E float deltaJ& deltaKF #i O JiF Gi O KiF #f O JfF Gf O KfF CriarPontos)+F I ==.......................................................... ,oid CReta''CriarPontos)+ E int #& G& qtdPontosF ...... for)i O AF i M qtdPontosF i+++ E # O int)# + d#+F G O int)G + d#+F pontos:aRetaTiU O neV CPonto) #& G+F ==agregao de objetos da classe CPonto I ...... I

*#erc"cio' !lterar as classes anteriores para atender ao diagrama 86Q abai#o.

Anda mungkin juga menyukai