Projeto de Software Usando UML

Embed Size (px)

Citation preview

CEFET-PR Pg.: 1 Centro Federal de Educao Tecnolgica do Paran Departamento Acadmico de Informtica Projeto de Software usando a UML Verso 2002 Prof. Paulo Czar Stadzisz CEFET-PR Pg.: 2 Sumrio Captulo I : Casos de Uso .....................................................................................................3 1. Modelo de Casos de Uso ............................................................................................ 3 2. Diagramas de Casos de Uso ......................................................................................3 3. Exemplo ...................................................................................................................... 9 4. Concluso ...................................................................................................................13 Captulo II : Levantamento de Classes ................................................................................15 1. Conceito de Classe e Objeto ........................................................................................ 15 2. Notao UML para Classes e Objetos ..........................................................................20 3. Levantamento das Classes ...........................................................................................24 4. Exemplo de Levantamento de Classes ......................................................................... 26 5. Concluso ......................................................................................................................28 Capitulo III : Estudo das Interaes entre Objetos .............................................................29 1. Diagrama de Seqncia ................................................................................................29 2. Diagrama de Colaborao .............................................................................................40 3. Exemplos de Diagramas de Seqncia e Colaborao .................................................42 Captulo IV : Relacionamentos entre Classes ..................................................................... 45 1. Associao entre Classes ............................................................................................. 45 2. Agregao entre Classes ..............................................................................................48 3. Generalizao/Especializao entre Classes ............................................................... 51 4. Concluso ......................................................................................................................54 Captulo V : Especificao do Comportamento de Objetos .............................................. 55 1. Diagrama de Estados ....................................................................................................55 2. Diagrama de Atividades .................................................................................................65 3. Concluso ......................................................................................................................69 CEFET-PR Pg.: 3 1Modelo de Casos de Uso OmodelodeCasosdeUsofoipropostoporI.Jacobsoncomouminstrumentopara descrio das intenes ou requisitos para um sistema computacional. A construo do Modelo de Casos de Uso corresponde a uma das fases iniciais de um projeto de software pois envolve adeterminaodosusosqueosistemater,ouseja,doqueeledeverfornecercomo servios. OmodelodeCasosdeUsodiferentedavisofuncionalutilizadanopassadonas abordagensdeprojetoestrututado.Aoinvsdefocalizarasfunes(atribuiestcnicas) do sistema, o modelo de Casos de Uso captura os usos ou aplicaes completas do sistema. Este modelobuscaresponderaquesto:Queusososistemater?ouParaqueaplicaeso sistema ser empregado? Os modelos de Casos de Uso so descritos atravs de Diagramas de Casos de Uso na UML. De uma forma geral, cada projeto desoftware conter um Diagrama de Casos de Uso. Parasistemasmaisextensos,possveldecomporodiagramaemumconjuntode subdiagramas. UmavezconstrudoomodelodeCasosdeUso,orestantedoprojetopodeserguiado baseando-senestemodelo.Ditodeoutraforma,apartirdomodelodeCasosdeUso,o restante do projeto ir se preocupar com a forma de realizao dos casos de uso (que classes e objetos so necessrios, como e quando cada um atuar, etc). OmodelodeCasosdeUsouminstrumentoeficienteparadeterminaoe documentaodosserviosaseremdesempenhadospelosistema.Eletambmumbom meio para comunicao com os clientes no processo de definio dos requisitos do sistema. 2Diagramas de Casos de Uso Os casos de uso de um projeto desoftware so descritos na linguagemUML atravs de Diagramas de Casos de Uso. Estes diagramas utilizam como primitivas Atores, Casos de Uso eRelacionamentos.Comoocorretambmcomoutrosdiagramas,pode-seaindautilizaras primitivasPacoteeNotanosdiagramasdecasosdeuso.Assubseesaseguirdescrevem estas primitivas. 2.1 Atores Atoressorepresentaesdeentidadesexternasmasqueinteragemcomosistema durantesuaexecuo.Basicamente,ainteraodeatorescomosistemasedatravsde comunicaes(trocademensagens).Asentidadesexternasrepresentadaspelosatores podem ser :Pessoas: usurio, secretria, aluno, professor, administrador,etc. Dispositivos: impressora, mquina ou outro equipamentos externo. Hardwares: placa de modem, placa de controle, etc. Software: sistema de banco de dados, aplicativos, etc. Capt ulo I:Casos de Uso CEFET-PR Pg.: 4 importante observar que atores representam, na verdade, papis desempenhados por pessoas,dispositivosououtrossoftwaresquandoestivereminteragindocomosistema.Por exemplo, um ator cujo identificador seja Aluno no representa um aluno especfico mas sim um alunoqualquer,ouseja,umapessoaqualquerqueestejainteragindocomosistemana qualidadedealuno.Destaforma,umatorpoderepresentarumentrevriosindivduos, equipamentosousoftwares.Deformaanloga,umaentidadeexternapodeserrepresentada naformadevriosatores.Istoocorrequandoaentidadetemmaisdeumpapel(tipode participaoouinterao)nosistema.Porexemplo,oindivduoJoodaSilvapoderiaser representado em um sistema na forma do ator Usurio, pois ele interage com o sistema nesta qualidade, e tambm na forma do ator Administrador, pois ele tambm interage com o sistema para este outro fim que a administrao do software. Atores so representados atravs de retngulos (notao genrica para classe) usando a simbologiapadrodaUMLouatravsdeconeshumanos.Asduasnotaesso sintaticamenteequivalentes,pormasegundaseguramentemaisintuitiva.Adesvantagem dousodeconeshumanosocorrequandooatorrepresentaequipamentos,dispositivosde hardwareououtrossoftwares.Nestecaso,afigurahumananocoincidecomanaturezado ator. possvel, entretanto, atravs de mecanismos de extenso, criar grafismos especiais ou especializados na UML para indicar tipos de atores. UsurioAdministrador

Secretria Impressora Figura I.1 Exemplos de Atores Observequeanotaousandoretngulosexigeainserodeumclassificadorpara indicaranaturezadaquiloqueseestrepresentando.Nocasodeatores,deve-seincluiro classificador(ouesteretipo)antesdonomedoator.Quandoseutilizaocone humano, basta indicar o nome do ator abaixo do cone. O levantamento dos atores que interagem com um certo sistema depende de um trabalho deestudoqueenvolvediscussescomosclientes.Procura-senesteestudolevantaras pessoasqueserobeneficiadasequeusaroosistema.Almdisso,deve-selevantaros dispositivosesoftwarescomosquaisosistemadeversecomunicar.Paramuitosprojetos, podeno ser fcil levantar corretamente o conjunto de atores na primeira tentativa.O estudo dos casos de uso e dos relacionamentos com atores pode permitir refinar o conjunto de atores definidos. O estudo das classes do sistema, a ser feito na prxima fase, tambm ir contribuir para o refinamento do levantamento de atores. EmboraaUMLnoimponharestries,costuma-seconsiderardeterminadosatores como atores implcitos. Desta forma estes atores no aparecem no diagrama de casos de uso emboraelesestejampresenteseparticipemdaexecuodoscasosdeuso.Osatores implcitos representam essencialmente dispositivos e softwares que so sempre usados e que no impem protocolos especiais de comunicao. Desta forma, a supresso deste atores no traz nenhum efeito significativos sobre os modelos e simplifica as representaes. Os exemplos mais comuns de atores que se pode considerar como impl citos so : monitor de vdeo, teclado, mouse, auto-falante, microfone, unidade de disco e sistema operacional. Estas entidades sero atoreslegtimosmascujainclusonomodelodecasosdeusonotrazcontribuioparaa modelagem. CEFET-PR Pg.: 5 2.2Casos de Uso A descrio dos servios a serem oferecidos pelo sistema feita na UML discriminando-se os Casos de Usos do sistema. Cada Caso de Uso descreve uma aplicao ou uso completo do software. O conceito de caso de uso no deve ser confundido com o de mdulo j que um casodeusonoumcomponentedosistemamassimumdeseusempregospossveis. Tambmnosedeveconfundiroconceitodecasodeusocomodefunoquepossuium escopomuitomaislimitado,traduzindofreqentementeapenasumrecursoouutilidadedo sistema.Umcasodeusomuitomaisabrangente,envolvendotodoumconjuntode transaes que juntas constituem um servio completo oferecido pelo sistema. Aespecificaodasfuncionalidadesdeumsistemanaformadecasosdeusopermite umavisomaisabrangentedasaplicaesdosistemafavorizandoumlevantamentomais completo e preciso de suas atribuies. 2.3Relacionamentos entre Atores e Casos de Uso Os relacionamentos em um diagrama de casos de uso podem envolver dois atores, dois casos de uso ou um ator e um caso de uso, conforme descrito nas subsees seguintes.2.3.1Relacionamentos entre Atores Comoosatoressoentidadesexternas,osrelacionamentosentreelesserorelaes externas ao sistema. Embora estas relaes possam ser desprezadas, pois no fazem parte do sistema e nem so de conhecimento do sistema, possvel inclu-las no modelo de casos de uso. De certa forma, estas relaes descrevem parte do modelo de negcios da empresa. Asduasrelaesmaiscomunsentreatoressoacomunicao(ouassociao)ea especializao(ougeneralizao).Umrelacionamentodecomunicaoindicaqueosdois atores,deformaunioubidirecional,realizamumacomunicao(trocadeinformaooude mensagem) que possui um significado formal para o sistema modelado. No exemplo da figura I.2, o ator Aluno comunica-se com o ator Secretaria no sentido que transmitir uma Solicitao de Histrico Escolar. Trata-se de uma comunicao explcita cuja ocorrncia deve ter alguma repercussoousignificadoparaosistema.Umrelacionamentodegeneralizao,poroutro lado, representa uma relao conceitual entre atores indicando que um ator um caso especial deoutroatormaisgenrico.Estarelaoindicaqueoatorespecializadoincluitodosos atributosdoatorgenricoeincluiaindaatributosadicionais.ComoilustraafiguraI.2,oator Administrador um ator especializado do ator Usurio. Isto significa que o Administrador um Usurio com atributos ou caractersticas extras. De certa forma, o ator especializado estende o ator genrico. Aluno SecretariaSolicita HistoricoUsurio Administrador Figura I.2 Exemplos de Relaces entre Atores CEFET-PR Pg.: 6 2.3.2Relacionamentos entre Atores e Casos de Uso Orelacionamentoentreum atoreumcasodeusoexpressasempreumacomunicao entreeles,poisoatorsendoumaentidadeexternanopoderiapossuirqualquer relacionamentoestruturalcomosistemacomputacional.AnotaoUMLparaestetipode relacionamento um segmento de reta ligando ator e caso de uso, como ilustrado na figura I.3. Em diagramas mais complexos pode-se utilizar cadeias de segmentos de retas para se evitar cruzamentos. Comoatorespodemtervriospropsitos,noquedizrespeitoasuasinteraescomo sistema, podem existir mais de um relacionamento de um ator com diferentes casos de usos. De forma anloga, um mesmo caso de uso pode envolver a participao de mais de um ator. A figura I.3 ilustra estas situaes. O caso de uso Emitir Histrico Escolar envolve a participao dedoisatores:SecretariaeImpressora.OatorSecretariaparticipaemdoiscasosdeuso: Emitir Histrico e Registrar Novo Aluno. SecretariaRegistrar Novo AlunoEmitir Histrico EscolarImpressora Figura I.3 Exemplos de Relaces entre Atores e Casos de Uso Autilizaodesetasnasrelaesentreatoresecasosdeusopodeterduas interpretaesdistintas.Naprimeira,utilizam-sesetasparaindicarqualatorativaocasode uso.Ativaonestecasosignifica,quemlanaouiniciaaexecuodocasodeuso.Para sistemas interativos, freqentemente o ator Usurio quem ativa o caso de uso. Na situao mais comum, cada caso de uso s teria um ator contendo uma seta em seu relacionamento de comunicao. possvel, entretanto, haver mais de um ator ativador para um mesmo caso de usosignificandoqueumdelesativariaestecasodeuso.OexemplonafiguraI.3aplicaesta interpretaodassetas.Asegundainterpretaoparaassetasaindicaodosentidodo fluxo de dados nas comunicaes. Neste caso todas as relaes entre atores e casos de uso teriam setas em uma ou nas duas extremidades descrevendo o sentido da comunicao com cadaator.Asduasinterpretaessopossveismasdeve-seoptarporumadelasemcada projeto e indicar explicitamente a interpretao adotada. 2.3.3Relacionamentos entre Casos de Uso Ao contrrio do relacionamento entre ator e caso de uso, as relaes entre casos de uso nunca sero do tipo comunicao. Isto ocorre porque casos de uso so aplicaes completas dosistemae,porconseqncia,noexistesentidoemfazer-secomunicardoisusosdo sistema.Todas as relaes entre casos de uso sero sempre estruturais. Existem trs tipos derelaesentrecasosdeuso(incluso,extensoegeneralizao)conformedescritosa seguir. Relacionamento de Incluso Um relacionamento de incluso uma relao estrutural atravs da qual um caso de uso insereemseuinteriorumoutrocasodeuso.Ocasodeusoincludo(subcasodeuso)no CEFET-PR Pg.: 7 representa um servio completo do sistema mas uma poro de um servio. Isoladamente, um subcaso de uso no teria sentido. Ele ser sempre um integrante de um caso de uso maior e completo. O relacionamento de incluso se aplica a duas situaes principais. A primeira aplicao da Incluso para o detalhamento de casos de uso atravs de decomposio. Nesta situao, extraem-separtessignificativasdeumcasodeusocriando-sesubcasosdeusoligadosao casodeusomaioratravsderelaesdeincluso.Emborararo,possivelaindadecompor subcasosdeusoemoutrossubcasosde uso.Umasegundaaplicaodorelacionamento de inclusoadecolocaremevidnciapartescomunsadoisoumaiscasosdeuso.Nesta situaoosubcasodeusoincludopormaisdeumcasodeusomaior.AfiguraI.4ilustra estas duas situaes. SecretariaImpressoraAcessar DadosMontar FormulrioEmitir HistricoEscolarRegistrar Novo AlunoEfetuar Loginincluiincluiincluiinclui Figura I.4 Exemplo de Relacionamento de Inclusao entre Casos de Uso Relacionamento de Extenso Um relacionamento de extenso uma relao estrututal entre dois casos de uso atravs da qual um caso de uso maior estendido por um caso de uso menor. A extenso significa que o caso de uso que estende inclui servios especiais em um caso de uso maior. A definio de umrelacionamentodeextensoincluiaespecificaodeumacondiodeextenso.Esta condio habilita a extenso, ou seja, indica quando aplicar o relacionamento. A notao para o relacionamento de extenso ilustrada na figura I.5. Imprimir Dados deConcluso de CursoSecretariaEmitir HistricoEscolarse Situao=Formado

Figura I.5 Exemplo de Relacionamento de Extensao entre Casos de Uso Adiferenaprincipalentreosrelacionamentosdeinclusoeextensoocarterde excepcionalidadedaextenso.Extensessousadasparamodelarcasosespeciaisede exceo que ocorrem somente em certas situaes (dado pela condio). Desta forma, para a maioria das ocorrncias do caso de uso estendido, a extenso no se aplicar. CEFET-PR Pg.: 8 Relacionamento de Generalizao Um relacionamento de generalizao uma relao estrutural entre um caso de uso mais geral e um caso de uso mais especfico. O caso de uso mais geral representa o caso genrico cujo servio se aplica a vrias situaes. O caso de uso mais especfico representa a aplicao docasousomaisgeralemumasituaoparticularincluindoelementosadicionaisou estendendo este caso. Visto no outro sentido, o caso de uso mais geral uma generalizao (abstrao)dooudoscasosdeusomaisespecficos.Nestesentido,ocasodeusogeral, representa as partes comuns de casos de uso especializados. A notao UML para a generalizao envolve a ligao dos dois casos de uso atravs de um segmento de reta e a colocao de um tringulo na extremidade do caso de uso mais geral. A figura I.6 apresenta um exemplo de relacionamento de generalizao. Emitir HistricoEscolar de ConclusoSecretariaEmitir HistricoEscolar Figura I.6 Exemplo de Relacionamento de Generalizacao entre Casos de Uso NoexemplodafiguraI.6,tem-seumcasodeusomaisgeral,chamadoEmitirHistrico Escolar,quepermiteasecretariaimprimirhistricosdealunos.Quandooalunoconcluina totalidade o curso, ele pode solicitar um histrico de concluso. Este histrico semelhante ao histrico normal mas mais detalhado incluindo informaes adicionais. O caso de uso Emitir Histrico Escolar de Concluso portanto semelhante ao caso de uso Emitir Histrico Escolar mascomalgunselementosadicionais.Pode-se,comofeitonoexemplo,estabeleceruma relao de especializao entre os dois casos de uso. Arelaoestruturaldefinidaporumrelacionamentodegeneralizaoimplicaa incorporao(herana)dentrodocasodeusoespecializadodetodooservi oespecificado pelo caso de uso geral, incluindo, adaptando ou excluindo alguns servios oferecidos pelo caso de uso geral. Orelacionamentodegeneralizaonopodeserconfundidocomosdeinclusoe extensopoisageneralizaoseaplica,namaiorpartedoscasos,acompartilhamentosde maiordimenso.Ainclusoeextensoenvolvempartesmenoresdecasosdeusos.A naturezadageneralizaotambmdistintapoistrata-sedeespecificarmodelos(casosde uso)genricosaplicveisadiferentessituaes.Ainclusoeaextensoapenaspemem evidncia partes de casos de uso maiores. 2.4Decomposio de Diagramas de Casos de Uso Umprojetodesoftware,normalmente,conterumnicoDiagramadeCasosdeUso descrevendooconjuntodeserviosoferecidospelosistema.Parasistemas maiores ou mais complexos,entretanto,possvelaconstruodevriosdiagramasdecasosdeuso elaborados a partir da decomposio de um diagrama principal. AdecomposiodeumdiagramadecasosdeusopodeserfeitaemUMLutilizandoo conceito de Pacote (package). Um pacote um encapsulador que no possui uma semntica especfica dentro dos projetos. Ele usado essencialmente para separar ou agrupar elementos do projeto sem criar necessariamente com isso algum vnculo entre os elementos. Utilizandopacotespode-secriarumprimeirodiagramacontendotodosospacotes maiores do sistema e, a seguir, tomar cada pacote e expand-lo em um novo diagrama. Pode- CEFET-PR Pg.: 9 seconstruirumahierarquiacomvriosnveisdedecomposioconformeadimensodo sistema e o nmero de casos de uso e atores. Oselementos(casosdeusoeatores) dentro de um pacote podem ter relacionamentos comelementosdeoutrospacotes.Nestecasoexisteumadependnciaentrepacotes.As dependnciasdevemserexplicitamentedefinidasutilizandocomonotaoumsegmentode reta tracejado com uma seta no sentido do pacote que depende para o pacote que contm as dependncias. A figura I.7 ilustra a notao utilizada para pacotes e dependncias. Casos de UsoAdministrativosCasos de UsoAcadmicosCasos de UsoGerais Figura I.7 Exemplo de Pacotes e Dependencias No existe uma norma para separao dos casos de uso e atores em pacotes. Pode-se, por exemplo, agrupar dentro de um pacote casos de uso de naturezas semelhantes (casos de uso de cadastro, casos de uso de emisso de relatrios, etc) ou casos de uso envolvendo os mesmos atores. De forma geral, procura-se reunir casos de uso que possuem relacionamentos em um mesmo pacote. Quandoumatoroucasodeusotiverqueapareceremmais deum pacote, define-se este ator ou caso de uso em um pacote e copia-se o ator ou caso de uso nos demais pacotes. Neste caso, deve-se indicar nos demais pacotes qual o pacote de origem daquele ator ou caso de uso. 3Exemplo Parailustraraaplicaodoconceitodecasodeuso,desenvolve-senestaseoum exemplo de modelagem para um sistema de controle acadmico. Embora, o desenvolvimento completo de um modelo de casos de uso possa envolver vrias iteraes de refinamento, para fins didticos o exemplo deste seo apresentar a modelagem atravs de 4 fases. Fase 1 : Levantamento dos Atores O sistema de controle acadmico considerado neste exemplo ser utilizado na secretaria deumdeterminadocurso.Noquedizrespeitoaosindivduosenvolvidos,somenteopessoal dasecretariateracessoaosistema.Entreaspessoasqueatuamnasecretariaepoderiam utilizarosistemaestoochefedasecretaria,asecretria,algunsprofessoresealguns estagirios.Naverdade,apesardesetrataremdeindivduosdiferentes,quandoestiverem utilizando o sistema todos assumiro o mesmo papel, ou seja, todos atuaro na forma de um ator abstrato que pode ser denominado Secretaria. CEFET-PR Pg.: 10 Preliminarmente, supe-se que alguns documentos devero ser impressos pelo sistema, o que sugere a criao de um ator denominado Impresora com o qual o sistema ir interagir para a impresso de documentos (histrico escolar, dirio de classe, etc). O ator impressora poderia serconsideradoumatorimplcitomaspodeserilustrativofaz-loaparecerexplicitamenteno modelo. Comoovolumedeinformaes(alunos,professores,disciplinas,etc)podesergrande optou-se pelo uso de um Sistema Gerenciador de Banco de Dados para armazenamento dos dadosacadmicos.Comosetratadeumsistemacomputacionalindependentecomoqualo sistema de controle acadmico ir interagir, ele deve ser considerado tambm como um ator. Neste exemplo, este ator ser denominado SGBD. Portanto, os atores que foram inicialmente levantados so: Secretaria Impressora SGBD Figura I.8 Atores do sistema de controle academico. Na prtica, nem sempre possvel determinar todos os atores e defin-los corretamente na primeira tentativa. Se for considerada uma abordagem de projeto por refinamentos sucessivos, a lista de atores poderia ser melhorada, assim como a definio deste atores, a medida que o projeto avance quando mais informaes estiverem disponveis. Fase 2 : Levantamento dos Casos de Uso Principais Nesta fase busca-se definir a lista dos grandes servios que o sistema dever oferecer. O levantamentodoscasosdeusocorrespondeaumaanlisederequisitosedeveser desenvolvidoapartirdeinformaescoletadasdosclientes.Atravsdequestionriose reunies com os clientes procura-se definir quais so as aplicaes ou usos desejados para o sistema a ser desenvolvido. Para o sistema de controle acadmico considera-se que os clientes (usurios, professores e administrao da escola) desejam que o sistema oferea os seguintes servios : possibilidade de cadastramento de todos os alunos matriculados no curso. Isto implica umserviopara inclusodenovosalunos e para manuteno da base de dados dos alunos. Este uso do sistema ser representado pelo caso de uso Cadastrar Aluno. possibilidadedecadastramentodetodososprofessoresqueministramdisciplinasno curso. Isto implica um servio para incluso de novos professores e para manuteno da base de dados de professores. Este uso do sistema ser representado pelo caso de uso Cadastrar Professor. possibilidadederegistrodasdisciplinasoferecidasnocursoincluindooregistrode novas disciplinas e a manuteno da base de dados de disciplinas. Este servio ou uso do sistema ser representado pelo caso de uso Cadastrar Disciplina. possibilidade de registro da matrcula de alunos em disciplinas a cada semestre. Este servio ser representado pelo caso de uso Registrar Matrcula. possibilidade de emisso da confirmao de matrcula para cada aluno contendo a lista dedisciplinasnasquaisumalunosematriculouparaaquelesemestre.Esteservio ser representado pelo caso de uso Emitir Confirmao de Matrcula. CEFET-PR Pg.: 11 possibilidadedeemissododiriodeclasseparacadadisciplinacontendoalistade alunosmatriculadosnaquelesemestre.Esteservioserrepresentadopelocasode uso Emitir Dirio de Classe. possibilidade de lanamento das notas obtidas pelos alunos em cada disciplina ao final de cada semestre. Este servio ser representado pelo caso de uso Registrar Nota. possibilidadedeemissodohistricoescolarparacadaalunocontendoalistade disciplinas cursadas e respectivas notas. Este servio ser representado pelo caso de uso Emitir Histrico Escolar. Oconjuntodecasosdeusolevantadosrepresentaosserviosouusosesperadopelos clientesqueutilizaro o sistema. Assim como para os atores, nem sempre possvel efetuar um levantamento completo e definitivo dos casos de uso em uma primeira tentativa. Ao longo doprocessoderefinamento,novoscasosdeusopoderiamaparecerououtrossofrerem alteraes. A figura I.9 ilustra os casos de uso definidos para o sistema acadmico. Cadastrar Aluno Cadastrar Professor Cadastrar Disciplina Registrar MatrculaEmitir Confirmaode MatrculaEmitir Diriode ClasseRegistrar Nota Emitir Histrico Escolar Figura I.9 Casos de Uso do sistema de controle academico. Fase 3 : Definio dos Relacionamentos Nestafasesoestabelecidososrelacionamentosdecomunicaoentreosatoreseos casos de uso indicando quais atores participam (se comunicam) com quais casos de uso. Para o exemplo em estudo, o resultado seria aquele apresentado na figura I.10. Neste diagrama de casos de uso, adotou-se o uso de setas nas relaes para indicar qual ator responsvel pela ativao dos casos de uso. Fase 4 : Detalhamento dos Casos de Uso Nestafasefeitoumdetalhamentodoscasosdeusoatravsdedecomposiesou especializaces.Ograudedetalhamentonecessrioumaspectosubjetivo.Cabeao projetista julgar qual o bom nvel de detalhamento para cada projeto. No se deve exagerar nas decomposiessoboriscodeseestarinfluenciandooudirecionandooprocessodeprojeto. Deve-se lembrar que os diagramas de casos de uso so especificaes do que o sistema deve fazer e no de como ele dever realizar os servios. Como abordagem geral para esta fase existem as seguintes sugestes: Procure estimar a dimenso de cada caso de uso. Para casos de uso muito extensos, crie subcasos de uso que identifiquem partes do processo envolvido naquele caso de CEFET-PR Pg.: 12 uso.Relacioneossubcasosdeusocomcasodeusomaioratravsderelaesde incluso. Paraosistemadecontroleacadmico,considerou-sequeostrscasosdeusopara cadastramento(aluno,professoresedisciplinas)tmumadimensomaioreincluem servios internos (incluso, consulta, alterao e excluso) que podem ser destacados. Assim, optou-se por decompor cada um destes casos de uso em quatro subcasos de uso. Compareparaparoscasosdeusotentandoidentificarpartescomunsnosservi os associados a cada caso de uso. Quando dois ou mais casos de uso possuem parte em comumdedimensosignificativa,estaparteemcomumpodesercolocadaem evidncia atravs de um subcaso de uso. Para o sistema de controle acadmico, foi decidido que o usurio dever se identificar atravs de nome e senha para ter acesso aos servios de cadastramento e registro de matrculaenotas.Assim,todososcasosdeusoassociadosteriamumafaseinicial idnticaemseusprocessosquecorresponderiaarealizaodelogin.Estaparte comum pode ser indicada atravs de um subcaso de uso comum. Quando dois ou mais casos de uso tiverem grande parte de seus servios semelhante, verifiqueapossibilidadededefiniodeumcasodeusogeralquecubraaparte comumdestecasos de uso. Especifique, ento, um relacionamento de generalizao entre o caso de uso geral e os casos de uso especializados. SecretariaCadastrar AlunoCadastrar ProfessorCadastrar DisciplinaRegistrar MatrculaRegistrar NotaSGBDEmitir Confirmaode MatrculaEmitir Dirio de ClasseEmitir Histrico EscolarImpressora Figura I.10 Relacionamentos entre Atores e Casos de Uso. CEFET-PR Pg.: 13 AfiguraI.11apresentaodiagramadecasosdeusofinalparaosistemadecontrole acadmico.Naverdade,estediagramapoderiasermelhoradoedetalhadoapartirdas primeirasiteraesdoprojeto.medidaqueoprojetoavanceeaformaderealizaodos casosdeusosejadefinida,pode-severificaranecessidadedealteraoouadaptaodo diagrama de casos de uso. Cadastrar AlunoCadastrar ProfessorCadastrar DisciplinaRegistrar MatrculaEmitir Dirio de ClasseEmitir Histrico EscolarIncluir AlunoAlterar Aluno Excluir AlunoIncluir Professor Excluir Professor Alterar ProfessorIncluir DisciplinaExcluir DisciplinaAlterar DisciplinaSecretariaSGBDRegistrar NotaEmitir Confirmaode MatrculaImpressoraRealizar Login Figura I.10 Diagrama de casos de uso finalpara o sistema de controle academico. 4Concluso O modelo de casos de uso uma ferramenta til na descrio dos requisitos funcionais de um sistema computacional. Ele permite especificar o conjunto de funcionalidades ou servios que umsoftwaredeveoferecereasrelaesdosistemacomentidadesexterna(atores) necessrias para a realizao destes servios. A notao UML para diagramas de casos de uso em grande parte intuitiva permitindo que os modelos gerados possam ser apresentados aos clientes para discusses e revises. CEFET-PR Pg.: 14 Deve-sesempreobservarqueomodelodecasosdeusodiferentedavisofuncionalno sentidoqueelenoapresentaencadeamentosdefunes(porconseqncia,nodescreve processos) e se limita a uma viso macroscpica dos servios do sistema sem induzir a forma derealizao(projeto)dosoftware.Omodelodecasosdeusoofereceumavisomais abstratadasfuncionalidadesdosistemafavorizandoumtrabalhodeespecificaomais abrangente. Por fim, o modelo de casos de uso pode tambm ser til como ferramenta para planejamento do desenvolvimento de sistemas computacionais (estimativas por caso de uso) e como base para o desenvolvimento de projetos de software (projeto baseado em casos de uso). CEFET-PR Pg.: 15 1Conceito de Classe e Objeto Asclasseseobjetossoasprincipaisprimitivasouelementosdecomposiodesoftwares orientadosaobjetos.Naverdade,umsistemaorientadoaobjetoscompostoporclassese por um conjunto de objetos que colaboram ou interagem para execuo dos servios (casos de uso) oferecidos pelo sistema. As sees seguintes apresentam resumidamente os conceitos de objeto e de classe. 1.1Objetos Um objeto pode ser visto ou entendido segundo uma viso conceitual e segundo uma viso de implementao. Estas duas vises no so antagnicas, na realidade, elas se complementam apresentando duas formas de interpretao dos objetos. Viso conceitual A viso conceitual uma forma mais abstrata de se observar um objeto. Nesta viso um objeto um elemento componente de um sistema computacional que representa, dentro do sistema, alguma entidade ou coisa do mundo real ou que define uma poro do sistema com limites e atribuies bem definidos. Uma das intenes da orientao a objetos tentar aproximar as representaes internas de umsistemacomputacionaldaformacomoasentidadesexistemeserelacionamnomundo real,sejamelasmateriaisouabstratas.Considerando-seumsistemade controle acadmico, porexemplo,existemnosistemadecontroleacadmiconomundorealentidadesmateriais (secretria, professores, alunos, dirios de classe, etc) e entidades abstratas (disciplina, notas, freqncia, etc) envolvidas. Quando se desenvolve um sistema orientado a objetos procura-se criarnointeriordosoftwarerepresentaesdasentidadesexternasnaformadeobjetos. Assim,poderiamsercriadosobjetoscomoaluno,diriodeclasseedisciplinapara representarementidadesexternasdentrodosistema.Aintenodestaaproximaoentre entidadesexternaserepresentaointernafacilitarainterpretaodaestruturadosistema computacional e agrupar informaes que juntas tm um significado comum. Objetosnorepresentamapenasinformaesemumsistemacomputacional.Elespodem tambmrepresentar,eimplementar,processos(ouseja,algoritmosouprocedimentos). Considerando novamente o sistema de controle acadmico, o trabalho manual de composio deumdiriodeclassepoderiaserrepresentadonosistemacomputacionalporumobjeto responsvel por este processamento. Almdasresponsabilidadesindividuais,as entidadesnomundorealpraticamentesempre se relacionam de forma a juntas cooperarem para a execuo de tarefas. Por exemplo, os dados dosalunos(entidades)soutilizadospelasecretaria(entidade)paracompor(processo)o diriodeclasse(entidade)paraumadisciplina(entidade).Deformaanloga,osobjetosque representamestasentidadesiroserelacionarparajuntoscooperaremnaexecuode servios (casos de uso). Um exemplo de relacionamento a comunicao, atravs da qual um objeto pode trocar informaes ou comandar outro objeto. Capt ulo I I:Levant ament o de Cl asses CEFET-PR Pg.: 16 Um objeto possui trs caractersticas : Identidade : cada objeto possui um nome ou identificador que o distingue dos demais objetos e que permite que os outros objetos o reconheam e o enderecem. Atributos : cada objeto pode possuir informaes que so registradas na forma de um conjunto de atributos. Comportamento:cadaobjetopodepossuirumconjuntodehabilidadesde processamento que juntas descrevem seu comportamento. Comoexemploconsidereumobjetoquerepresenteumadisciplinadematemtica.A identidadedesteobjetopoderiaserClculoNumrico.SeusatributospoderiamserCarga Horria,Pr-requisitos,Ementa,AlunosMatriculadoseNotas.Seucomportamento poderiaincluiracapacidadedeCalcularaMdiadaTurma,InscreverumNovoAlunoe Registrar Notas dos Alunos. Viso de Implementao Emtermosdeimplementao,umobjetopodeserentendidocomoumpequenomdulode software.Nestesentido,umobjetopodeserexecutadocomoqualquermdulodesoftware, pode receber dados de entrada e pode produzir resultados. Na orientao a objetos, procura-seconstruirestesmdulosdesoftware(objetos)deformaqueelestenhamumaltograude modularidade(pequenadependnciaentreummduloeoutro)equecadamdulopossua atribuies ou responsabilidades prprias que o caracterize. EnquantonaslinguagensdeprogramaoproceduraiscomoPascaleC,osprogramasso construdoscomoconjuntosdefunesouprocedimentosevariveis,naslinguagens orientadas a objetos os programas so construdos pensando-se em agrupamentos de funes evariveisformandoobjetos.Pode-seconsiderarquenaorientaoaobjetosfoiintroduzido um novo nvel de estruturao nos programas conforme discutido na prxima seo. Em termos de implementao, um objeto pode interagir com outros objetos. Por exemplo, um objetopoderiasecomunicarcomoutro.Estacomunicao,comoservistaemdetalhesna seo 3, poderia ser realizada atravs de chamada de funo ou procedimento do objeto para algum outro ou atravs de um mecanismo de envio de mensagem suportado pela maioria dos sistema operacionais. Desta forma, a execuo de um software orientado a objetos seria feita atravsdaexecuoemcadeiaouemconcorrnciadoconjuntodeseusobjetosque permanentemente estariam se comunicando para trocar informaes ou comandar a execuo defunes.Pode-sedizer,ento,queaexecuodeumsoftwareorientadoaobjetossed pela colaborao de um conjunto de objetos. Astrscaractersticasdeumobjeto(identidade,atributosecomportamento)setraduzemda seguinte forma na implementao : Aidentidadedoobjetoserdeterminadaporumnomeouidentificadorinventadopelo programadorparacadaobjeto.Por exemplo,umobjetoquerepresentaumadisciplinade matemticapoderiasernomeadoobjMatematica.Qualquernomepodeserutilizado, desdequeserespeiteasnormasparacriaodeidentificadoresdalinguagemde programao utilizada. Os atributos de um objeto so traduzidos na forma de variveis internas do objeto. Pode-se definir variveis de qualquer tipo para composio dos atributos dos objetos. Por exemplo, umobjetorepresentandoumalunopoderiaterosatributosnome(textocom30 caracteres),sexo(umcaracter,MouF),coeficientederendimento(valorreal),entre CEFET-PR Pg.: 17 outros. No se deve confundir aqui atributo com valor do atributo. Neste exemplo, nome um atributo cujo valor pode ser Marcia ou Carlos. O comportamento do objeto descrito por uma ou mais funes ou procedimentos. Estas funesdescrevemosprocedimentosouhabilidadesdoobjeto.Porexemplo,oobjeto objMatematicapoderiaterumafunoparaclculodamdiadasnotasdosalunos matriculados. 1.2Classes Asclassessoelementosfundamentaisnacomposiodesoftwaresorientadosaobjetos. Elas so empregadas tanto na composio do projeto dos sistemas computacionais quanto em suaimplementao.Entretanto,aocontrriodosobjetos,asclassesnosetraduzemem elementosexecutoresnocdigodeimplementao.Oentendimentodoconceitodeclasse podeserfeitotambmsegundoumpontodevistaconceitualeumpontodevistade implementao. Viso conceitual Em um ponto de vista conceitual, as classes podem ser entendidas como descries genricas oucoletivasde entidades do mundo real. Mantm-se aqui a inteno de aproximar entidades externasderepresentaesinternas.Destaforma,adefiniodasclassesdeumsistema dever procurar inspirao nas entidades do mundo real. Aocontrriodosobjetos,querepresentamentidadesindividualizadas,asclassesso representaesgenricas.Elassoabstraesdeumcoletivodeentidadesdomundoreal. Istosignificaqueelasrepresentamummodelocomumparaumconjuntodeentidades semelhantes. Imaginando, por exemplo, os alunos envolvidos em um sistema acadmico, cada aluno(Marcia,Vinicius,Cludia,etc)umaentidadeindividualizadaquepoderiaser representada por um objeto. Observando-se estes objetos e comparando-os, pode-se constatar queoconjuntodeseusatributos(nome,sexo,idade)eseuscomportamentossoanlogos, embora obviamente os valores dos atributos sejam diferentes. Apartirdaobservaodeatributosecomportamentocomumaumconjuntodeentidades similares,possvelestabelecerummodelogenricoparaestecoletivodeentidades.Este modeloconteriaosatributosecomportamentocomunsaestecoletivo.Destaforma,seria possveldefinirummodelogenricoparatodososalunosnoexemploanterior.Estemodelo genrico,emconseqncia,umaabstraodosalunosquedenomina-seClassena orientao a objetos. Considera-se uma classe um modelo genrico porque ela estabelece um formato padro para a representao, na forma de objetos, de todas as entidades externas associadas. A definio dasclassesdeumsistemapassanecessariamentepelaobservaodasentidadesexternas buscando-sedeterminarcoletivosdeentidadessemelhantesquepossamserabstradasem uma representao genrica. Viso de Implementao Aimplementaodeclassessefazatravsdacriaodetipos,demaneirasemelhanteaos tipos de dados. As linguagens de programao, de uma forma geral, oferecem um conjunto de tiposdedadospadres,comointeiro,real,caracter,booleanoecadeiadecaracteres,e permitemqueoprogramadorcrienovostiposcomoenumeraes,estruturas,uniese registros. A partir de um tipo de dado possvel, ento, criar-se instncias que so as variveis dosprogramas.AfiguraII.1mostraexemplosdevariveiscriadasapartirdevrios tiposde dados da linguagem C e a definio de um novo tipo chamado Aluno. CEFET-PR Pg.: 18 /* definicao de um novo tipo de dado */ struct Aluno { int codigo; char nome[30]; float coeficiente; char sexo; }; /* definicao de variveis */ int valor; float resultado; chartexto[10]; Aluno al; Figura II.1 Exemplo de definio de variveis na linguagem C. Emborapossamcontermaisdoqueapenasvariveis,asclassessotambmtipose,por conseqncia,nosoporelasprpriaselementosexecutveisouquepossamarmazenar dados dentro de um programa. As classes, assim como os tipos de dados, so modelos para a criao de variveis. Desta forma, a partir da criao de uma classe possvel criar instncias ouvariveisdestaclasse.Asvariveiscriadasapartirdeumaclassesodenominadas objetos. Isto coincide com a viso conceitual vista anteriormente onde definiu-se que classes eram modelos para objetos semelhantes. Em termos de implementao, uma classe , de fato, um modelo (ou tipo) usado para criao de objetos. Na orientao a objetos, impe-se que todo objeto seja criado a partir de uma classe. Assim, a declaraodasclassesdeumsistemadeveocorrerantesdadefiniodosobjetos.Afigura II.2apresentaumtrechodeprogramanalinguagemC++,ilustrandoadeclaraodeuma classe(CAluno)eadefiniodedoisobjetos(aleestudante)destaclasse.Observequea classeCAlunopossuiquatroatributos(nome,coeficiente,sexoecodigo)eumafuno (definir).NasintaxedalinguagemC++,adefiniodocorpodasfunesfeitaforada declarao da classe. Desta forma, a funo definir aparece declarada dentro da classe mas sua definio completa s aparece a seguir. Aps a declarao da classe, objetos podem ser criados livremente, como o caso dos objetos al e estudante. /* definicao de uma classe */ class CAluno { char nome[30]; float coeficiente; char sexo; public: int codigo; void definir(char *n, float c, char s, int i); }; void Caluno::definir(char *n, float c, char s, int cod) { strcpy(nome, n); coeficiente = c; sexo = s; codigo = cod; } /* definicao de objetos */ CAluno al; CAluno estudante; Figura II.2 Exemplo de definio de uma classe e de objetos na linguagem C++. CEFET-PR Pg.: 19 Emtermosdeimplementaopode-seconsiderarqueaorientaoaobjetosintroduziuum nvel adicional de estruturao nos programas. Na programao procedural os programas so organizadosessencialmenteemtrsnveisdeestruturao:instrues,funes(ou procedimentos) e arquivos. Assim, o cdigo fonte de uma programa distribudo primeiramente emarquivos(.c,.h,.pas,etc),queporsuavez contm conjuntosde funes, que finalmente so descritas por um conjunto de instrues, conforme ilustrado na figura II.3. Na orientao a objetos os programas so organizados em arquivos, que contm classes, que incluem funes que so descritas por conjuntos de instrues, conforme ilustra a figura II.4. Programa em C/*Declaraes Globais */#include stdio.hint valor;/* Definio de Funo */int Calcular(int v1, int v2){ return(v1+v2);}/* Definio de Funo */void Mostrar(int val){ printf(Valor=%d\n, val);}/*Declaraes Globais */#include stdio.hint res;/* Definio de Funo */int Verificar(int senha){int res; return(res);}/* Definio de Funo */void main(l){res=Calcular(10+20); Mostrar(res);}Arquivo : p1.c Arquivo : p2.c... Figura II.3 Exemplo de estruturao de um programa em linguagem C. Programa em C++ /*Declaraes Globais */ #include stdio.h int valor; /*Declaraes Globais */ #include stdio.h int res; Arquivo : p1.c Class CValor { }; Arquivo : p2.c ... /* Definio de Funo */ int Calcular(int v1, int v2) { return(v1+v2); } /* Definio de Funo */ void Mostrar(int val) { printf(Valor=%d\n, val); } Class CVerificador { }; /* Definio de Funo */ int Verificar(int senha) {int res; return(res); } /* Definio de Funo */ void main(l) {Cvalor obValor; res=obValor.Calcular(10+20); obValor.Mostrar(res); } Figura II.4 Exemplo de estruturao de um programa em linguagem C++. CEFET-PR Pg.: 20 2Notao UML para Classes e Objetos 2.1Notao para Classes A notao para classes em UML um retngulo com trs compartimentos conforme ilustrado na figura II.5. Quando no se desejar mostrar detalhes da classe em um certo diagrama, pode-se suprimir a apresentao dos atributos e mtodos, conforme ilustrado na classe da direita na figura II.5. Identificao da ClasseAtributosMtodos

CJanelaDe PacoteCadastroAtributosMtodos

CJanelaDe PacoteCadastro Figura II.5 Notao UML para classes. 2.1.1Compartimento de Identificao Ocompartimentosuperiorutilizadoparaidentificaodaclasse.Neledeveraparecer, necessariamente,onomedaclassee,opcionalmente,umesteretipoeumidentificadorde pacote.Onomedaclasseumacadeiadecaracteresqueidentificaexclusivamenteesta classedentrodosistema.Comosugesto,onomedaclassedeveriautilizarapenasletrase palavrasconcatenadasmantendo-seaprimeiraletradecadapalavraemmaiscula.Muitos projetistas e programadores utilizam tambm a letra C (de classe) como prefixo para todos os nomes de classes. Exemplos de nomes de classes : CAluno CturmaEspecial CJanelaDeInterfaceComUsuario Um esteretipo pode ser includo no compartimento de identificao de uma classe conforme ilustrado na figura II.5. Esteretipos so classificadores utilizados para indicar, neste caso, tipos declasses.Pode-se,porexemplo,criarclassesdotipointerfaceoudotipocontrole.Para indicar o tipo de uma classe atravs de um esteretipo inclui-se o tipo da classe entre os sinais > acima de seu nome. No exemplo da figura II.5, a classe Cjanela foi definida como sendo do tipo . Por fim, o compartimento de identificao pode incluir tambm o encapsulamento da classe, ou seja,opacotedentrodoqualaclasseestdeclarada.Oconceitodepacote o mesmo que aquelediscutidonocaptulo2.4.Aespecificaodopacoteincludaabaixodonomeda classe e escrita em itlico na forma de nome-do-pacote. CEFET-PR Pg.: 21 2.1.2Compartimento de Definio de Atributos Nestesegundocompartimentosodefinidostodososatributosdaclasse.Atributosso variveismembrodaclassequepodemserusadasportodososseusmtodostantopara acessoquantoparaescrita.Emlinguagemdeprogramao,osatributosdaclasseso definidosapartirdostipospadresdalinguagemedetiposdefinidospeloprogramador.Na UML tem-se uma notao similar a das linguagens de programao. Notao para definio de atributos : [Visibilidade] Nome-Atributo [Multiplicidade]:[Tipo]=[Valor] [{Propriedades}] Visibilidade Avisibilidadeindicaseoatributopodeounoseracessadodoexteriordaclassepor funes que no sejam membro da classe. Existem trs especificadores de visibilidade : + : indica visibilidade pblica. Neste caso o atributo visvel no exterior da classe. Tantofunesmembrodaclassequantofunesexternaspodemacessaro atributo. :indicavisibilidadeprivada.Nestecasooatributonovisvelnoexteriorda classe. Somente funes membro da classe podem acessar o atributo. #:indicavisibilidadeprotegida.Nestecasooatributotambmprivadomas funes membro de classes derivadas tambm tm acesso ao atributo. A definio da visibilidade do atributo opcional. Entretanto, se ela no for especificada, assume-se por padro visibilidade privada. Nome-do-Atributo Onomedoatributodefinidoporumacadeiadecaracteresqueidentificam exclusivamenteoatributodentrodaclasse.Sugere-seoempregounicamentedeletras comeando-se por uma letra minscula e concatenando-se palavras mantendo a primeira letra em maisculo. Exemplo :valorDoPagamento nomeDoAluno Alguns autores utilizam o prefixo m_ (de minha) para todos os nomes de atributos. Exemplo :m_valorDoPagamento m_nome_doAluno Multiplicidade A multiplicidade uma especificao opcional na definio de um atributo. Na verdade, a multiplicidade utilizada somente quando se tratar de atributo mltiplo ou seja vetores e matrizes.Amultiplicidadeindicaportantoadimensodeatributosedescritaentre colchete. Exemplo:valores[5] vetor de 5 valores matrizDeValores[10,20] matriz de 10 linhas e 20 colunas CEFET-PR Pg.: 22 Tipo O tipo de um atributo um classificador que indica o formato (classe ou tipo de dado) dos valoresqueo atributopodearmazenar.Pode-se,aqui,utilizarostipos padres da linguagem de programao que se pretende usar. Exemplo:resultado: int salario: float sexo : char Valor Inicial O valor inicial indica o valor ou contedo do atributo imediatamente aps a sua criao. Deve-seobservarquealgumaslinguagensdeprogramao(comoC++)nosuportam esta atribuio inicial. Exemplo:resultado: int = 10 Propriedades As propriedades podem ser utilizadas para incluir comentrios ou outras indicaes sobre o atributo como por exemplo se o seu valor constante. As propriedades so indicadas entre chaves. Exemplo :

CAlunoDe PacoteCadastro- nome[30] : char- coeficiente : float- sexo : char+ codigo : intMtodos Figura II.6 Exemplo de definio de atributos de uma classe 2.1.3Compartimento de Definio de Mtodos Neste compartimento so declarados os mtodos (ou seja, as funes) que a classe possui. A sintaxedadeclaraopodeseguiraqueladalinguagemdeprogramaoquesepretende utilizar na implementao do sistema. Notao para definio de atributos : [Visibilidade] Nome-Mtodo (Parmetros):[Valor-de-Retorno] [{Propriedades}] Visibilidade Avisibilidadeindicaseomtodopodeounoserchamadodoexteriordaclassepor funes que no sejam membro da classe. Existem trs especificadores de visibilidade: CEFET-PR Pg.: 23 + indicavisibilidadepblica.Nestecasoomtodovisvelnoexteriordaclasse. Tantofunesmembrodaclassequantofunesexternaspodemacessarao mtodo. indicavisibilidadeprivada.Nestecasoomtodonovisvelnoexteriorda classe. Somente funes membro da classe podem acessar ao mtodo. #indicavisibilidadeprotegida.Nestecasoomtodotambmprivadomas funes membro de classes derivadas tambm tm acesso ao mtodo. A definio da visibilidade do mtodo opcional. Entretanto, se ela no for especificada, assume-se por padro visibilidade privada. Nome-do-Mtodo Onomedomtododefinidoporumacadeiadecaracteresqueidentificam exclusivamenteomtododentrodaclasse.Sugere-seoempregounicamentedeletras comeando-se por uma letra maiscula e concatenando-se palavras mantendo a primeira letra em maisculo. Exemplo:CalcularValor ArmazenarDados Parmetros Osparmetrossovariveisdefinidasjuntoaosmtodosequesoutilizadaspelos mtodos para recebimento de valores no momento da ativao. Os parmetros podem tambm serutilizadospararetornodevaloresapsaexecuodomtodo.Cadaparmetro especificado usando a notao : Nome-do-Parmetro:Tipo=Valor-Padro O Nome-do-Parmetro uma cadeia de caracteres que identifica o parmetro dentro do mtodo. Tipo um especificador de tipo de dado padro da linguagem de programao. Valor-Padro a especificao de uma constante cujo valor ser atribudo ao parmetro se em uma chamada ao mtodo no for especificado um valor para o parmetro. Exemplo:CalcularValor( val1:int, val2:float=10.0) ArmazenarDados( nome:char[30], salario:float=0.0) Valor-de-Retorno O Valor-de-Retorno indica se o mtodo retorna algum valor ao trmino de sua execuo e qual o tipo de dado do valor retornado. Pode-se utilizar aqui os tipos padres da linguagem de programao que se pretende utilizar ou novos tipos definidos no projeto (inclusive classes). Exemplo:CalcularValor():int // retorna um valor inteiro ArmazenarDados(nome:char[30]): bool // retorna verdadeiro ou falso 2.2Notao para Objetos A notao UML para um objeto um retngulo com a identificao do objeto em seu interior. A figuraII.7ilustraobjetosrepresentadosnaUML.Aidentificaodoobjetocompostapelo nomedoobjeto,seguidadedois-pontos(:)eaindicaodaclassedoobjeto.Esta indentificao deve ser sublinhada. Na verdade, o nome do objeto opcional. Quando o nome CEFET-PR Pg.: 24 noforindicado,entende-sequeseestfazendorefernciaaumobjetoqualquerde determinada classe. Figura II.7 Exemplo da notao UML para objetos 3Levantamento das Classes UmavezidentificadososAtoreseCasosdeUsodosistema,pode-seiniciarefetivamenteo projetodosoftware.Dopontodevistaestruturaloprojetodevedefiniroscomponentesdo sistemaeasrelaesnecessriasentreeles.Emumsistemaorientadoaobjetos,os componentes estruturais do sistema so as classes. A definio das classes necessrias para a realizao de todas as funcionalidades do sistema envolveumprocessodesntese,ouseja,decriao.Noexisteumalgoritmooutcnica precisa para o estabelecimento de classes. Cabe ao projetista, baseado em sua experincia e criatividade determinar quais classes iro compor o sistema. A definio das classes exige um estudodetalhadodosrequisitosdosistemaedaspossibilidadesdeseparaodosdadose processos em classes. Existem trs tcnicas bsicas para enfrentar a dificuldade de definio de classes: (i) definir as classes por partes, (ii) proceder por refinamentos e (iii) utilizar esteretipos. 3.1Definio das Classes por Caso de Uso Adefiniodeclassesporpartessignificaria,emumaabordagemestruturada,estudaras classesdividindo-seosistemaemmdulosousubsistema.Naorientaoaobjetos,eem particular na UML, sugere-se que o levantamento das classes do sistema seja feita por caso de uso.Destaforma,tomaria-seisoladamentecadacasodeusoparadefiniodasclasses necessrias a sua implementao. Nestaabordagem,nosedeveconsideraroscasosdeusocomosubsistemas.Embora,o levantamento das classes seja feito por caso de uso, elas no so exclusivas de certos casos de uso. Uma mesma classe pode ser empregada em mais de um caso de uso com o mesmo ou com papis diferentes. 3.2Definio das Classes por Refinamentos Parasistemasmaioresoumaiscomplexos,podesermuitodifcilfazerumlevantamento completodasclassesemumaprimeiratentativa.Pode-se,ento,empregarumatcnicapor refinamentosna qual define-se, inicialmente, grandes classes (tambm chamadas classes de anlise) e em refinamentos seguintes retorna-se para decompor estas classes em classes mais detalhadasemenores.Segue-se,nestaviso,umaabordagemtop-downpartindo-sede classes mais abstratas em direo a classes mais refinadas ou detalhadas. 3.3Esteretipos para Classes possvelutilizaroconceitodeesteretipo para auxiliar no levantamento de classes. A UML define trs esteretipos padres para classes de anlise : Estudante:CAlunoJanEntrada:CJanela:CJanela CEFET-PR Pg.: 25 entidade:identificaclassescujopapelprincipalarmazenardadosquejuntospossuem umaidentidade.Estetipodeclassefreqentementerepresentaentidadesdo mundo real como aluno, professor, disciplina, etc. controle : identifica classes cujo papel controlar a execuo de processos. Estas classes contm, normalmente, o fluxo de execuo de todo ou de parte de casos de uso e comandam outras classes na execuo de procedimentos. fronteira : identifica classes cujo papel realizar o interfaceamento com entidades externa (atores).Estetipodeclassecontmoprotocolonecessrioparacomunicao com atores como impressora, monitor, teclado, disco, porta serial, modem, etc. Existem algumas regras gerais que, se utilizadas, podem auxiliar no levantamento das classes necessrias para cada caso de uso e permitir uma boa distribuio de papis entre as classes. Regras para definio de classes para um caso de uso: Definir uma classe do tipo fronteira para cada ator que participe do caso de uso Considerandoqueatoressoentidadesexternas,necessrioqueosistema comunique-secomelesutilizandoprotocolosespecficos.Cada ator pode exigir um protocolo prprioparacomunicao. Desta forma, umbom procedimento criar uma classe especfica paratrataracomunicaocomcadaator.Assim,seriamdefinidas,porexemplo,umaclasse parainterfacecomousurio,umaclasseparainterfacecomaimpressora,umaclassepara interface com a porta serial, etc. Definir pelo menos uma classe do tipo controle para cada caso de uso Cada caso de uso implica um encadeamento de aes a serem realizadas pelo sistema. Oalgoritmoouconhecimentodoprocessoaserrealizadodeverestardefinidoemalguma partedosistema.Esteconhecimentopodeestardistribudoemvrioscomponentesdo sistema,oucentralizadoemumoupoucoscomponentes.Avantagemdecentralizaro processo em um ou poucos componentes a maior facilidade de entendimento do processo esua modificao futura. Neste sentido pode-se criar uma classe de controle para cada caso de uso de forma que ela contenha a descrio e comando do processo associado ao caso de uso. Definir classes de controle auxiliares Emcertoscasosdeusooprocessonasclassesdecontrolepodeserlongoouconter subprocessos. Nestes casos, pode-se extrair partes do processo da classe de controle principal e atribu-los a classes de controle auxiliares. Assim, o fluxo principal do processo ficaria sob a responsabilidadedaclassedecontroleprincipaleossubprocessosseriamcontroladosou executados pelas classes de controle auxiliares. Definir uma classe do tipo entidade para cada grupo de dados Gruposdedadosquejuntodefinementidadesabstratasoudomundorealdeveriamser representadosporclasses.Sugere-se,portanto,queparacadacasodeusofaa-seuma anlise dos dados manipulados e identifique-se grupos que sero representados, cada um, por uma classe. Trata-se aqui de identificar dados que so manipulados no caso de uso e que, por conseqncia,devemestaremmemria.Gruposdedadosarmazenadosemarquivosou bancos de dados no precisam possuir classes que os representem na totalidade. As classes do tipo entidade esto associadas unicamente a dados em memria. CEFET-PR Pg.: 26 4Exemplo de Levantamento de Classes Nesta seo ser considerado o sistema de controle acadmico, discutido no captulo IV, para ilustrar o processo de levantamento de classes. Ser feito o levantamento para dois dos casos de uso daquele sistema: Cadastrar Aluno e Emitir Dirio de Classe. 4.1Classes para o Caso de Uso Cadastrar Aluno ConformeilustradonafiguraII.8,arealizaodocasodeusoCadastrarAlunoenvolvea comunicaocomdoisatores:SecretariaeSGBD.Destaforma,pode-seidentificarduas classes do tipo fronteira para implementar o interfaceamento com estes dois atores. Estas duas classes poderiam se chamar : CInterfaceSecretaria e CIntefaceSGBD. Cadastrar AlunoSecretaria SGBD Figura II.8 Caso de uso Cadastrar Aluno Para descrever oprocesso do caso de uso e comandar as demais classes ser definida uma classedecontroledenominadaCControleCadastrarAluno.Comoparaestecasodeuso existemtrssubprocessos(incluso,alteraoeexcluso)poderiamsercriadastrsclasses decontroleauxiliares,umaparacadasubprocesso,quesero:CControleInclusaoCadAluno, CControleAlteracaoCadAluno e CControleExclusaoCadAluno. Porfim,analisando-seosdadosmanipuladospelocasodeuso,percebe-seaexistnciade apenasumgrupodedadosreferentessinformaesdoalunodeestsendoincludo, alteradoouexcludo.Destaforma,apenasumaclassedotipoentidadeserdefinidaeser denominada CAluno.

CInterfaceSecretaria

CInterfaceSGBD

CControleInclusaoCadAluno

CAluno

CControleCadastrarAluno

CControleInclusaoCadAluno

CControleInclusaoCadAluno Figura II.9 Classes para o caso de uso Cadastrar Aluno CEFET-PR Pg.: 27 4.2Classes para o Caso de Uso Emitir Dirio de Classe Conforme ilustrado na figura II.10, a realizao do caso de uso Emitir Dirio de Classe envolve acomunicaocomdoisatores:SecretariaeSGBD.Destaforma,pode-seidentificarduas classes do tipo fronteira para implementar o interfaceamento com estes dois atores. Estas duas classes poderiam se chamar: CInterfaceSecretaria e CIntefaceSGBD. Nota-se que estas duas classes j foram definidas para o caso de uso Cadastrar Aluno. Neste ponto haveriam duas possibilidades: utilizar as mesmas classes de interface para os dois casos de uso ou definir novas classes para interfaceamento com os dois atores em cada caso de uso. Adecisoporumadestaduassoluesdependeria,basicamente,dadimensoque alcanariam estas classes se elas agrupassem o interfaceamento em ambos os casos de uso. Como sugesto para este tipo de situao, sugere-se comear com uma soluo unificada e na seqncia,apartirdeumconhecimentomelhordospapisdasclasses,estudara possibilidade de decompor estas classes em classes mais especializadas. Emitir Dirio de ClasseSecretaria SGBD Figura II.10 Caso de uso Cadastrar Aluno Para descrever o processo do caso de uso e comandar as demais classes ser definida uma classedecontroledenominadaCControleEmitirDiario.Noseobserva,nestemomento, subprocessosnestecasodeuso.Porconseqncianoserodefinidasclassesdecontrole auxiliares. Comrelaosclassesdotipoentidade,deve-seconsiderarquaisdadoscompemo documentoaserimpresso.Umdiriodeclassenormalmentecontmocdigoenomeda disciplina, cdigo e nome do professor, carga horria, e a lista de alunos com o nome e nmero deregistro.Vriaspossibilidadesseapresentampararepresentaoemmemriadestes dados.Poderiam,inclusive,serutilizadasaquitcnicasdenormalizaodeEntidadese Relacionamentos. Uma primeira alternativa para representao dos dados do caso de uso Emitir Dirio de Classe seria a criao de uma nica classe contendo todos os dados necessrios para a composio dodocumentoimpresso.EstaclassepoderiasechamarCDiarioClasse.Outrapossibilidade seriaextrairdestaclasseosdadossobredisciplina,professorealunos,ecoloc-losemtrs outras classes como ilustrado na figura II.11.

CDiarioClasse

CDisciplina

CProfessorcodigoTurma: char[8]listaAlunoscargaHoraria:intcodigoDisciplina:char[10]nomeDisciplina:char[30]codigo:intnome:char[30]categoria:char

CAlunoregistro:intnome:char[30]curso:char Figura II.11 Classes de entidade para o caso de uso Emitir Dirio de Classe. CEFET-PR Pg.: 28 5Concluso Como discutido neste captulo, as classes e objetos so elementos de grande importncia pois sooselementosconstitutivosemsistemascomputacionaisorientadosaobjetos.Anotao UMLparaclasseseobjetossegue,basicamente,asintaxejutilizadaemoutraslinguagens orientadas a objetos. Comrelaoaoprojetodesoftwaresorientadosaobjetos,umagrandedificuldadeestna definiodequaisclassessonecessriasparaarealizaodoscasosdeuso.Existem algumasdicasgeraisquepodemserseguidasquenodiminuem,entretanto,a responsabilidade do projetista no processo inventivo associado ao estabelecimento do conjunto de classes de um sistema. CEFET-PR Pg.: 29 Em um sistema computacional orientado a objetos os servios (casos de uso) so fornecidos atravs da colaborao de grupos de objetos. Os objetos interagem atravs de comunicaes deformaquejuntos,cadaumcomsuasresponsabilidades,elesrealizemoscasosdeuso. Nestecaptulodiscute-seainteraoentreosobjetosdeumsistemacomputacionale apresentam-se duas notaes para a descrio destas interaes: os diagramas de seqncia e os diagramas de colaborao. 1Diagrama de Seqncia Odiagramadeseqnciaumaferramentaimportantenoprojetodesistemasorientadosa objetos.Emboraaelaboraodosdiagramasdeseqnciapossaconsumirumtempo considervel para sistemas maiores ou mais complexos, eles oferecem a seguir as bases para adefiniodeumaboapartedoprojetocomo:osrelacionamentosnecessriosentreas classes, mtodos e atributos das classes e comportamento dinmico dos objetos. 1.1Utilizao do Diagrama de Seqncia Umdiagramadeseqnciaumdiagramadeobjetos,ouseja,elecontmcomprimitiva principal um conjunto de objetos de diferentes classes. O objetivo dos diagramas de seqncia descreverascomunicaesnecessriasentreobjetosparaarealizaodosprocessosem um sistema computacional. Os diagramas de seqncia tm este nome porque descrevem ao longo de uma linha de tempo a seqncia de comunicaes entre objetos. Comopodemexistirmuitosprocessosemumsistemacomputacional,sugere-seprocedera construodosdiagramasdeseqnciaporcasodeuso.Assim,tomaria-seseparadamente cada caso de uso para a construo de seu ou seus diagramas de seqncia. De uma forma geral,paracadacasodeusoconstri-seumdiagramade seqncia principal descrevendo a seqncianormaldecomunicaoentreobjetosediagramascomplementaresdescrevendo seqncias alternativas e tratamento de situaes de erro. Utiliza-se tambm o termo cenrio associado com os diagramas de seqncia. Um cenrio uma forma de ocorrncia de um caso de uso. Como o processo de um caso de uso pode ser realizadodediferentesformas,paradescreverarealizaodeumcasodeusopodeser necessrioestudarvrioscenrios.Cadacenriopodeserdescritoporumdiagramade seqncia.NoexemplodocasodeusoCadastrarAlunodosistemadecontroleacadmico, pode-se considerar os cenrios de incluso, alterao e excluso de aluno. 1.2Notao UML para Diagramas de Seqncia Notao Bsica A notao UML para descrio de diagramas de seqncia envolve a indicao do conjunto de objetosenvolvidosemumcenrioeaespecificaodasmensagenstrocadasentreestes objetos ao longo de uma linha de tempo. Os objetos so colocados em linha na parte superior do diagrama. Linhas verticais tracejadas so traadas da base dos objetos at a parte inferior do diagrama representando a linha de tempo. O ponto superior destas linhas indica um instante Capt ulo I I I:Est udo das I nt er aoes ent r e Obj et os CEFET-PR Pg.: 30 inicial e, medida que se avana para baixo evolui-se o tempo. Retngulos colocados sobre as linhas de tempo dos objetos indicam os perodos de ativao do objeto. Durante um perodo de ativao,oobjetorespectivoestemexecuorealizandoalgumprocessamento.Nos perodosemqueoobjetonoestativo,eleestalocado(eleexiste)masnoest executandonenhumainstruo.AfiguraIII.1ilustraaestruturabsicadeumdiagramade seqncia para o cenrio Incluso de Aluno do caso de uso Cadastrar Aluno. :CInterfaceSecretaria :CControleCadastarAlunoSecretaria:CAluno:CInterfaceSGBDSGBDobjetoslinha detempoativacao Figura III.1 Estrutura bsica de um diagrama de sequencia. Outra primitiva importante dos diagramas de seqncia a troca de mensagem. Esta primitiva utilizada para indicar os momentos de interao ou comunicao entre os objetos. Utiliza-se como notao para trocas de mensagens segmentos de retas direcionados da linha de tempo deumobjetoorigemparaalinhadetempodeumobjetodestino.Umasetacolocadana extremidade do objeto destino. As linhas representando troca de mensagens so desenhadas na horizontal pois presume-se que a troca de uma mensagem consome um tempo desprezvel. O objeto destino de uma mensagem deve receber a mensagem e process-la. Desta forma, no recebimento de uma mensagem o objeto destino ativado para tratamento da mensagem. A figura III.2 ilustra a troca de mensagens entre objetos e entre atores e objetos. :CInterfaceSecretaria:CControleCadastarAlunoSecretaria:CAlunoMostrarJanelaJanelaDadosRegistrar(Dados)Acessar(codigo) Figura III.2 Exemplo de troca de mensagens em um diagrama de sequencia. CEFET-PR Pg.: 31 Significado das Mensagens As mensagens trocadas entre um objeto e outro ou entre um objeto e um ator podem ter trs significados: Chamada de Funo ou Procedimento Umadasinteraesmaisfreqentesentreobjetosachamadadefuno.Uma chamada de funo significa que um objeto est solicitando a execuo de uma funo (ummtodo)deumoutroobjeto.Esteconceitosegueestritamenteoprocessode chamadadefunooudeprocedimentoutilizadonaslinguagensdeprogramao. Obviamente,paraqueumobjetopossachamarummtododeoutroobjeto necessrio que o mtodo seja declarado como pblico na classe respectiva. Como ser visto a seguir, a sintaxe, no caso de mensagens que representem chamadas de funo, semelhante quela das linguagens de programao. Envio de Mensagem Objetos tambm podem comunicar-se com outros objetos atravs do envio explcito de uma mensagem. O envio de uma mensagem, ao contrrio da chamada de funo, no umainteraodiretaentredoisobjetos.Naverdade,quandoumobjetoenviauma mensagemaoutroobjeto,amensagemroteadaouencaminhadaporalgum mecanismodeentregademensagens.Normalmente,esteservioprestadopelo sistemaoperacionalatravsdemecanismoscomoMessageQueues(filasde mensagens) ou servios de notificao. Ocorrncia de Evento Existemtambmoutrasformasdeinteraoentreobjetosatravsdeeventos.Esta tambm a forma padro de interao entre objetos e atores. Basicamente, um evento algumacontecimentoexternoaosoftwaremasqueaelenotificadopoislhediz respeito. A notificao, ou seja, a indicao de que um determinado evento ocorreu, namaioriadoscasos,feitapelosistemaoperacional.Eventospodemtambmser geradospelosoftwareparaosistemaoperacional.Exemplossoassadaspara dispositivos(monitor,portaserial,disco)feitaatravsdeserviosdosistema operacional. Alguns exemplos de eventos so: EventoOrigemDestino Clique do mousemousealgum objeto Movimentao do mousemousealgum objeto Dados no buffer do tecladotecladoalgum objeto Dados no buffer da serialporta serialalgum objeto Projeo de dados no monitoralgum objetomonitor Bip do autofalantealgum objetoautofalante Colocao de dados no buffer da serialalgum objetoporta serial Interrupodispositivo de hardware algum objeto Eventos do sistema operacional (timer)sistema operacionalalgum objeto CEFET-PR Pg.: 32 Sintaxe das Mensagens A sintaxe geral para mensagens em diagramas de seqncia : Predecessor/ *[Condio] Seqncia: Retorno:= Nome_Mensagem(Argumentos) Predecessor/ Asmensagensemumdiagramadeseqnciapodemsernumeradasparaindicara ordem de ocorrncia (ver adiante). Toda mensagem para ser enviada depende de que a mensagemimediatamenteanteriortenhasidoenviadaindicando,assim,uma dependnciatemporalquedefineaordemdeenviodasmensagens.Amensagem imediatamenteanterioropredecessornaturaldecadamensagemenoprecisa ser indicada pois entende-se isto implicitamente. Algumas mensagens dependem de mais de um predecessor. Na verdade isto s ocorre emprocessosconcorrentes.Quandohouvermaisdeumobjetoativo(maisdeuma thread)emexecuoalgumasmensagenspodemdependerdeseupredecessor imediatomastambmdealgumpredecessorassociadooutroobjetoativo.Tem-se, desta forma, um conjunto de mensagens que no seguem uma seqncia. Neste caso pode-se indicar o predecessor no imediato indicando-se sua numerao de seqncia seguidadeumabarrainclinada(/).Sehouveremvriospredecessoresnoimediatos deve-se separ-los com vrgulas. Condio Pode-se,opcionalmente,incluirumacondioentrecolchetesemumamensagem. Destaforma,paraqueamensagemsejaenviadanecessrioqueacondioseja satisfeita.Umacondiodescritaporumaexpressodeigualdadeenvolvendo atributos do objeto ou outras variveis locais e constantes. Exemplos: [x