[Música] Olá sejam bem-vindos ao canal engenharia de software com ênfase uml Eu sou professor J Denis getes e eu já atuo na área de monitoragem de software há vários anos eu tenho quatro vos publicados sobre o assunto e eu já ministrei diversas palestras e cursos técnicos sobre modelagem de software com a linguagem uml na aula de hoje eu vou iniciar a falar sobre o diagrama de sequência Esse é um conteúdo bastante extenso e que vai demandar várias aulas nesta primeira aula eu vou dar uma introdução sobre os componentes básicos que são utilizados nesse diagrama o
diagrama de sequência ele é bastante útil para detalhar um processo em termos de quais objetos estão envolvidos nesse processo e que métodos estão disparados entre eles normalmente o diagrama de sequência ele é utilizado para modelar um processo representado por um caso de uso primário e ele serve além de documentar um caso de uso para validar o diagr de classes uma vez que as classes ou ainda os objetos que participam do processo estão detalhados no diagrama de classes então além de validar esse diagrama ele também permite enriquecê-lo no momento em que se descobrem quais métodos devem
ser utilizados no processo em questão Então se transforma um modelo conceitual e um modelo de domínio a partir do detalhamento da modelagem diagrama de sequência Mas vamos dar início a nossa aula então como eu falei essa vai ser a primeira parte sobre o diagrama de sequência ela é uma introdução eu vou apresentar os conceitos básicos desse diagrama bom eu gosto sempre de fazer uma pequena propaganda eu já publiquei quatro livros sobre o ML que é linguagem de modelarem unificada o primeiro livro foi o m uma abordagem prática que na época tratava sobre a umr 1.5
mas já abordava a uml2 que está surgindo na época depois eu lancei o livro ml2 guia de consulta rápida que era exclusivo sobre ml2 Poucos Anos depois eu aumentei esse livro transformando ele no o MR2 Bia prático e finalmente eu lancei o meu livro mais importante que é o MR2 uma abordagem prática que se encontra na terceira Edição Mas eu estou trabalhando na quarta Edição que eu pretendo lançar ainda esse ano Mas vamos ao conteúdo Então vamos falar sobre o diagrama de sequência como o nome já diz o diagrama de sequência ele tenta estabelecer a
sequência de eventos que ocorrem em um processo ele vai identificar quais mensagens devem ser disparadas entre os elementos que fazem parte desse processo e em que ordem como eu falei o diagrama de sequência ele costuma se basear no diagrama de caso de uso normalmente há um diagrama de sequência para cada caso de uso primário casos de usos primários já foram explicados nos vídeos sobre o diagrama de caso de uso mas essencialmente um caso de uso primário representa um processo importante para o software que agrega valor ao software e que representa um processo com algum grau
de complexidade e diferente de casos de usos secundários que basicamente são cadastros simples ório Simples então um diagrama de sequência é uma forma de detalhar validar e documentar um caso de uso específico o diagrama de sequência ele também depende do diagrama de classes já que o diagrama de sequência ele costuma conter diversas instâncias de objetos participam do processo que ele está modelando e as instâncias desses objetos eh são instâncias de classes obviamente E essas classes estão contidas em diagramas de classe então é necessário haver um diagrama de classes normalmente para se produzir um diagrama de
sequência mas o diagrama de sequência ele é uma forma de validar os diagramas de classe muitas vezes ao modelar um diagrama de sequência se se percebem falhas ou alterações que devem ser eh realizadas no diagrama de classes Além disso o diagrama de sequência é uma forma muito boa para transformar um modelo conceitual eem um modelo de domínio uma vez que um diagrama de sequência ele auxilia na descoberta de quais métodos devem ser disparados em quais objetos de quais classes Lembrando que o modelo conceitual é um diagrama de classes produzido durante a fase de engenharia de
requisitos e ele não contém métodos uma vez que os métodos fazem parte da solução enquanto que Eng Quito se preocupa em identificar somente o problema é na fase de projeto que vai se identificar Quais são os métodos uma forma de transformar o modelo conceitual em um modelo de domínio o modelo de domínio também é um diagrama de classes mas dessa vez enfocando a solução enfocando entre outras informações métodos uma forma de transformar o modelo conceitual no modelo de domínio é por meio da modelagem de diagrama de sequência para cada caso de uso se cria um
diagrama de sequência se instanci os objetos das classes que estão envolvidos naquele processo e se descobre quais métodos são necessários disparar entre esses objetos pega-se esses métodos e enriquece o diagrama de classes relativo às classes queos objetos fazem parte do diagrama de sequência então assim vai se transformando o modelo conceitual e o modelo de domínio Essa é uma das formas bom então vamos começar a falar sobre os elementos do diagrama de sequência o elemento mais básico é o ator na verdade ele não é obrigatório mas é muito útil faça parte do diagrama de sequência um
ator na um ator no diagrama de sequência ele é uma Instância dos atores que foram modelados no diagrama de caso de uso então o símbolo de ator do diagrama de sequência é muito semelhante ao do símbolo do utilizado no diagrama de caso de uso exceto por exceto porque o o ator do diagrama de sequência ele contém uma linha de vida uma linha de vida basicamente é essa linha vertical tracejada abaixo do ator Aqui nós temos o ator cliente e ele tem uma linha de vida uma linha de vida Demonstra o tempo em que um elemento
do processo existe dentro daquele processo a linha de vida pode eventualmente ser interrompida vamos ver exemplos disso Bom vamos falar sobre lifelines lifelines São Outro elemento básico do diagrama de sequência uma lifeline é essencialmente um objeto eh mas é um objeto que participa do processo durante um determinado tempo ela pode ser criada ao longo do processo e ela pode ser destruída ao longo do processo vamos ver exemplos disso em geral uma lifeline ela se refere a uma Instância de uma classe mas pode eventualmente ser uma Instância de um ator a anotação para representar lifelines é
a mesma do diagrama de objetos exceto porque as lifelines possuem como o nome já diz uma linha de vida já vamos apresentar um exemplo disso então uma lifeline ela representa o tempo em que a o objeto existe durante a interação então Aqui nós temos um exemplo de lifeline que é essencialmente um objeto da classe pessoa física chamado pom vocês vão notar que é o mesmo símbolo utilizado no diagrama de objetos para aqueles que assistiram o vídeo sobre diagrama de objetos A única diferença é que esse objeto ele possui uma linha de vida que é essa
linha vertical tracejada como eu falei a linha de vida Demonstra o tempo em que o objeto existe durante o processo bom continuando vamos falar sobre mensagens mensagens são muito importantes no diagrama de sequência elas demonstram que um evento ocorreu e esses eventos normalmente forçam o disparo de um método em algum dos objetos em algumas das lifelines que participam do processo eventualmente uma mensagem ela pode representar a comunicação entre dois atores então nessas situações não há disparo de métodos eh Isso é opcional é apenas ilustrativo para deixar o processo mais claro mas pode ser bastante útil
eh normalmente o diagrama de sequência e é iniciado por um evento externo em geral causado por um ator e que normalmente força o disparo de um método em um dos objetos em uma das lifelines envolvidas no processo bom as mensagens ou estímulos elas podem ser disparadas entre um ator e outro ator nesse caso não há disparo de método é apenas um detalhamento de um processo para facilitar a compreensão em situações em que há dois atores envolvidos no processo quando existe um ator primário um ator secundário por exemplo um ator e uma lifeline quando um ator
ele causa um evento que vai disparar um método e uma lifeline uma lifeline e outra lifeline o que é o mais comum é quando uma lifeline solicita execução de um método para outra lifeline e existem também situações em que uma lifeline ela pode enviar uma mensagem a si mesmo isso é isso é conhecido como Auto chamado vamos ver exemplos disso e existe também a situação em que uma lifeline pode disparar uma mensagem para um ator em geral essa é uma mensagem de retorno contendo o resultado da execução de um método que foi causado por um
evento por um ator Ah bom vamos falar sobre mensagem entre atores como eu falei esse tipo de mensagem ele é opcional mas pode ser bastante útil para facilitar a compreensão do processo ã essencialmente ela uma mensagem ela é representada como uma linha contendo uma seta aqui nos casos então nós temos dois atores o ator cliente à esquerda e o ator funcionário à direita o ator cliente ele dispara uma mensagem no ator funcionário solicitando a abertura de uma conta então essa aqui é uma mensagem descrevendo um evento ela é opcional mas pode ser útil para ilustrar
o processo deixar o processo mais claro bom como eu falei essa linha tracejada é a linha de vida dos dos atores no caso poderiam ser lifelines e quando o a lifeline ela se torna mais grossa isto aqui passa a se chamar foco de controle ele identifica o momento no processo em que o ator a lifeline está participando ativamente D desse processo Ahã um outro exemplo de mensagens são as mensagens entre lifelines que como eu falei são o tipo de mensagem mais comum onde há troca de eh mensagens entre duas lifelines normalmente solicitando o disparo de
um método ah Aqui nós temos o exemplo de eh mensagem disparada entre lifelines aqui eu tenho um objeto ou uma lifeline da classe controle abertura conta e aqui eu tenho objeto da classe pessoa física vocês vão notar pelo estereótipo gráfico aplicado a esse objeto que esse objeto se refere a uma classe do tipo controle estereótipos já foram explicados no diagrama de classes e basicamente eles servem para atribuir características especiais a um elemento do modelo então isso aqui é uma Instância de uma Class de controle que também já foi explicado anteriormente basicamente uma classe de controle
eh ou ainda suas instâncias elas interpretam eventos que ocorrem sobre a visão e se acharem necessário Solicito a execução de métodos por parte das classes de entidade o objeto da classe pessoa física objeto pum na verdade ele é um objeto de entidade a classe pessoa física é uma entidade eu poderia ter aplicado estereótipo entity nessa classe mas não fiz isso nesse momento para manter a coerência com o primeiro exemplo de lifeline que eu apresentei Mas esta é uma classe de entidade ou seja uma classe que está relacionada diretamente ao domínio do problema contém a lógica
do negócio e os seus objetos provavelmente serão persistentes bom aqui nesse exemplo o objeto da classe contro abertura conta dispara uma mensagem no objeto da classe pessoa física objeto P solicitando a do método consultar CPF passando com parâmetro long que é o CPF propriamente dito bom Ah aqui nós percebemos que há um foco de controle na lifeline da da classe controle de abertura e conta e um foco de controle na na lifeline da da classe pessoa física Isso significa que esses dois objetos eles estão ativos do processo outra informação há um texto antes da do
do método do disparado que aqui no caso é consultar cliente dois pontos esse texto ele é opcional é meramente ilustrativo ele serve para esclarecer Porque o método foi disparado pode-se utilizar ou não eem algumas situações pode ser útil nós temos também mensagem de retorno basicamente uma mensagem de retorno é uma mensagem disparada por uma ah lifeline em resposta a uma mensagem que foi disparado anteriormente por uma lifeline um ator ela vai conter o resultado do método executado ou simplesmente um valor determinando se o método foi executado com sucesso ou não então Aqui nós temos uma
complementação do exemplo anterior contendo uma mensagem de retorno que é essa seta tracejada embaixo da mensagem anterior que solicitava a execução do método consult tá CPF então aqui está sendo retornado os dados do cliente a resultantes da execução do método consultar CPF aqui cabe um comentário eh pessoas acostumadas à programação orientada objetos podem estar se questionando mas não deveria haver um get para cada atributo da da classe pessoa física bom na uml não se costuma a representar métodos get e métodos set por quê Porque eles ocupam muito espaço e Normalmente eles acrescentam muito pouca informação
eles não são úteis representar no modelo então eu poderia criar um get para cada atributo da classe pessoa física Mas isso seria contraproducente o diagrama I ficar muito grande e a informação eh retornada por essa abordagem não não seria muito útil então Eh se costumam criar métodos genéricos então Aqui nós temos o método considerar CPF e aqui se é necessário nós representamos uma forma genérica ó tá retornando os dados do cliente nada impede que eu crie um método get ou vários metodos Gets para cada tributo da da classe em questão apenas normalmente isso não é
ã utilizado Não é aplicado por causa do espaço que isso demanda bom notem que o foco de controle da linha de vida das lifelines controle de abertura de conta e dasel e da e da lifeline pessoa física se tornaram maiores porque o período de participação no processo desses objetos foi maior bom então o foco de controle ocupou um espaço maior bom nós temos também mensagens construtoras uma mensagem Construtora é uma mensagem que cria o objeto ao longo do processo então diferente das mensagens normais que atingem a lifeline do a linha de vida do objeto ah
mensagens construtoras atingem o próprio objeto e ele passa a existir somente a partir daquele momento no diagrama então Aqui nós temos o exemplo de mensagem Construtora onde eu tenho uma lifeline da classe controle abertura conta e uma lifeline da classe conta comum que eu chamei de comum um então ah a lifeline controle abertura conta dispara o método Abrir conta passando como parâmetro inteiro em um objeto da classe conta comum então ele passa existir a partir desse momento ele foi criado a partir desse momento de novo o texto Abrir conta antes dos dois pontos é meramente
explicativo não era obrigatório só o método propriamente dito deveria estar aqui ah alguém pode pensar assim tá mas na minha linguagem de programação não é assim que funciona tá por exemplo se for em Java eu teria que criar um método com o mesmo nome da classe bom nós também não representamos métodos construtores no nos diagramas de classe nos diagramas de sequência Nós criamos métodos mais genéricos então por exemplo o método Abrir conta ele representa a criação de uma conta que internamente irá disparar o mé Construtor na hora que for ser implementado de acordo com a
linguagem que for ser utilizada se faz uma pequena adaptação bom ah essa construção então o objeto como um passa a existir a partir desse momento nota que ele não está à mesma altura do da da lifeline da classe controle de abertura de conta ele existe a partir desse momento e aqui eu tenho uma mensagem de retorno representando o resultado do disparo do método Abrir conta então é retornado o número da conta do tipo long na verdade somente o long seria necessário né o número da conta antes dos dois pontos é apenas ilustrativo um outro comentário
que deve ser falado é que mensagens de retorno elas não são obrigatórias elas devem ser utilizadas mais em situações em que elas acrescentam informação ao processo em situações em que o retorno do método não é realmente muito útil talvez não seja necessário representá nós temos também mensagem destrutores que são mensagens que como o nome já diz destróem um objeto elas interrompem a linha de vida do objeto com um x Aqui nós temos um exemplo então Aqui nós temos uma situação de um sistema de vendas na internet por exemplo de venda de livros ou qualquer outro
produto Onde existe um carrinho cada usuário tem um carrinho e ele vai acrescentando itens esse carrinho então aqui eu tenho duas lifelines uma lifeline da classe carrinho eu chamei de car um e uma lifeline da classe item carrinho eu chamei de item um então o carrinho pode ter muitos itens do carrinho eventualmente o cliente pode ter desistido de comprar um item e resolve excluí-lo Então aqui é disparado o método excluir item carrinho notem que a linha de vida do objeto item carrinho é interrompido com x significa que aquele objeto deixou de existir a partir desse
momento e nós temos as mensagens denominadas Auto chamadas que são mensagens em que uma lifeline eh dispara um método em si mesmo então a mensagem parte da linha de vida e atinge a linha de vida do próprio objeto Aqui nós temos o exemplo aqui nós temos um objeto da classe pessoa física que disparou o método deem si mesmo disparou o método validar CPF então ISO aqui é um exemplo de auto chamada ou autodelegação então nós terminamos o conteúdo da primeira aula sobre o diagrama de sequência eu espero que vocês tenham achado esse vídeo útil se
vocês consideraram esse vídeo útil se acrescentou algo para vocês eu peço que vocês curtam compartilhem se inscrevam no canal eu agradeço a atenção de todos nós nos vemos em outros vídeos obrigado pela atenção Y