Alura > Cursos de Inovação & Gestão > Cursos de Gestão Corporativa > Conteúdos de Gestão Corporativa > Primeiras aulas do curso UML: modelagem de soluções

UML: modelagem de soluções

Visão inicial UML - Entendimento inicial da UML

Oi, pessoal. Meu nome é Maurício e eu vou ser o seu professor nesse curso de UML. Só que eu queria te contar uma coisa já desde o começo, porque diferente daquelas aulas mais tradicionais de UML que você vê na faculdade ou por aí na internet, onde o professor fica detalhando aquela vírgula da UML e etc, aqui vou mostrar um lado mais prático dela, como eu uso a UML no meu dia a dia e o que é importante dela.

UML no final das contas é uma linguagem de comunicação, e o objetivo de qualquer língua é comunicar, é passar informação entre uma pessoa e outra, entre um desenvolvedor e outro, entre um desenvolvedor e um analista de negócios, um desenvolvedor e usuário final, e assim por diante.

A UML quando bem usada é uma excelente ferramenta de comunicação, porque é muito fácil representar um requisito com UML, um estado, uma atividade, uma classe e assim por diante. Entra comigo nesse curso e espero que você goste de ver como eu uso UML na prática.

Ao longo deste curso vamos ter um domínio para trabalhar, para facilitar os exemplos, e o domínio nosso vai ser exatamente o domínio da Alura. Então faça de conta que você foi contratado para desenvolver um e-learning, um sistema de ensino à distância, igual a Alura, onde o aluno entra, ele vê os cursos na página de vendas, ele opta por comprar alguns deles, lá dentro ele assiste um vídeo, ele responde exercícios, o professor dá feedback para ele, ele pode abrir dúvida em um fórum, enfim.

O mesmo sistema que você está lidando aqui, assistindo as minhas aulas, esse vai ser o nosso domínio. Te vejo no próximo capítulo, onde nós vamos começar a pensar nesse sistema usando UML. Até lá.

Diagramas de casos de uso - Visão Diagrama casos de uso

Oi, pessoal. O primeiro diagrama que eu vou mostrar para vocês é aquele que nós chamamos de caso de uso. Mas por que começar por ele? Quando você começa um software, a primeira coisa que você faz é pensar sobre os requisitos, é entender o que seu usuário quer e como isso vai ser representado no sistema.

Então esse é um excelente diagrama para essa fase do projeto, onde está tudo começando, onde você não sabe direito o que quer, você ainda está aprendendo com o seu cliente. O caso de uso em particular vai te ajudar a discutir com ele, porque o objetivo é justamente esse, deixar claro o que vai ter no sistema e quais são os usuários que vão interagir com essas funcionalidades.

Ao longo do curso eu vou sempre dar exemplos de um sistema parecido com a Alura, ou seja, um e-learning, um sistema de ensino à distância, onde o aluno faz uma aula, ele tem que comprar um curso, ele revisa um exercício, e assim por diante.

Em um sistema de e-learning como a Alura, uma coisa importantíssima é comprar um curso. É o primeiro passo. O aluno não acessa um curso se ele não comprar. Como eu represento isso no caso de uso? Fácil, eu escrevo a funcionalidade, geralmente em alto nível mesmo, simplificado, apertado, e coloco isso dentro de um círculo ou uma elipse.

Isso é um caso de uso. Só que ele não está sozinho, alguém usa essa funcionalidade. Então descrevo isso também. O aluno, que é quem compra um curso. Na UML, nós chamamos o aluno ou o papel que usa a funcionalidade de ator. Isso é um ator. E o comprar curso meu caso de uso.

Eu puxo também uma seta para deixar claro que o aluno compra um curso. O aluno faz várias outras coisas também. Por exemplo, um aluno assiste um vídeo, o aluno responde exercícios. Todos eles é o aluno que faz, então costumamos puxar a seta.

Ficou claro. Olha que simples de entender. Até uma pessoa não técnica entende isso. Um aluno compra um curso, vê um vídeo, responde exercício e assim por diante. Eu posso ter também outros atores. Por exemplo, em um sistema de e-learning outro ator importante é o professor.

Veja que o boneco é importante, ele deixa claro que o professor é um ator, e o professor revisa um exercício, por exemplo. Puxo uma seta para indicar. Tenho vários papéis diferentes no meu sistema que interagem com várias funcionalidades diferentes. Essa é a ideia do caso de uso.

De novo, deixar claro o que está acontecendo e quais são as funcionalidades do meu sistema. Agora, um detalhe interessante, é que as pessoas quando pegam UML querem desenhar o caso de uso para toda pequena funcionalidade que ela tem, para cada vírgula do sistema. Eu quero mostrar para vocês que na prática você não tem que fazer isso. Você tem que usar o caso de uso para aquelas funcionalidades importantes, aquelas que merecem ser discutidas, como é o caso do processo de compra, de como ele vê um vídeo, como ele responde exercícios, como o professor revisa um exercício, e assim por diante.

Agora, aquela funcionalidade pequena, de talvez mostrar os termos e condições do site, que é uma coisa muito simples, não tem o que discutir, talvez nem precise aparecer em um diagrama desse. Lembre-se de que a ideia da UML é passar informação adiante. É uma linguagem de comunicação, e ela não precisa representar o seu sistema inteiro, só aquilo que precisa de verdade de um esforço maior de comunicação.

Eu posso melhorar isso aqui ainda mais, porque de novo, tem mais informação que posso passar aqui. Assistir vídeo, por exemplo, o aluno não pode fazer a qualquer momento, ele só pode fazer depois que ele comprou um curso. Tem uma relação de dependência entre essas duas. E se eu quiser deixar claro no meu diagrama, posso puxar uma seta de uma funcionalidade para outra, por que não?

A seta é legal porque além dela indicar a ligação entre duas coisas quaisquer, entre um ator, um caso de uso e outros diagramas que vamos ver, nós podemos por uma informação nessa seta, para me indicar alguma coisa, e essa informação nós chamamos de estereótipo. Nós não, o UML.

Você pode colocar a palavra depends. Eu abri e fechei dois sinais de menor com dois sinais de maior porque é meio que um padrão, mas estou dizendo que o assistir vídeo depende de comprar um curso, certo? Porque elas dependem, essa não pode acontecer sem essa.

De novo, a grande graça do UML é que ela me dá a liberdade de customizar, então se eu não gosto da palavra depends, porque é inglês, não quero usar inglês, nada me proíbe de vir aqui e escrever português. Então, assistir vídeo depende de comprar um curso, por que não? De novo, o diagrama é meu, ele serve para minha equipe. Posso fazer isso.

O que mais eu posso fazer? Revisar o exercício também depende do aluno responder, então vou colocar revisa o exercício depois do aluno responder o exercício. O que mais? Coisas comuns que vemos no UML. Tenho esse caso de comprar curso, só que comprar curso não tem fluxo único. Posso comprar curso com cartão de crédito ou com boleto, então vou representar pagamento com boleto e pagamento com cartão de crédito. E vou ligar uma na outra.

Posso deixar claro que o boleto e o cartão são continuações do comprar curso. Então, tem um estereótipo no UML que é chamado de extends para explicar que o boleto estende o comprar curso. O que mais de importante? Outro detalhe interessante, eu não me apego muito com isso, mas a direção das setas geralmente vai do menor para o maior.

O comprar curso aqui é maior do que o boleto, então a seta sempre vai em direção do maior, e o extends deixa claro que o boleto é uma funcionalidade que estende comprar curso. Em algum momento quando o aluno escolher boleto o fluxo vai mudar. Ou quando ele escolher cartão o fluxo vai mudar. Esse é o diagrama de caso de uso. Simples assim.

Atores, funcionalidades e a relação entre elas. E você pode fazer uso de estereótipos e mensagens, frases, nessas setas de ligação. De novo, isso é para passar informação para sua equipe. Não se incomode com o que está no livro da UML ou com um exemplo que você viu na internet. Isso tem que ser útil para você. E te vejo no próximo capítulo.

Diagrama de classes - Visão Diagrama de classes

Nós acabamos de levantar as funcionalidades do nosso sistema. Está na hora de começar a programar isso. Você provavelmente usa uma linguagem orientada a objetos. Então, o primeiro passo é começar a modelar as principais classes do sistema. Será que o UML consegue me ajudar com isso? Consegue, porque no UML temos o diagrama de classes. O próprio nome já diz, ela vai me ajudar a desenhar a minha classe, vai me ajudar a explicar para os meus colegas de desenvolvimento como minha classe tem que se comportar.

Como você já viu, no UML tudo são desenhos simples que dá para fazer à mão. Vou começar pela primeira classe do meu sistema. Vou até fazer um quadrado um pouco maior para conseguir escrever mais fácil. Uma classe no UML é representada por um quadrado, e a primeira informação desse quadrado é o nome da classe. Tenho minha classe Aluno.

Simples assim, isso já é uma classe no UML. Só que muitas vezes eu quero colocar mais informações. Então, atributos, por exemplo, eu sei que um aluno tem nome, eu sei que o aluno tem e-mail, eu sei que o aluno tem data de nascimento, e assim por diante. Todos atributos que eu posso representar.

Isso continua sendo um UML válido, só que às vezes eu quero passar mais informação. Por exemplo, o nome é uma string e o e-mail é uma string também. Idade é um inteiro, CPF é do tipo CPF e assim por diante. Você pode usar os dois pontos para separar o nome do atributo do tipo dele.

Veja só, modelei uma classe Aluno que tem dois atributos. Só que posso ir além na minha modelagem. Por exemplo, você sabe que atributos geralmente são privados. Eles têm o modificador de acesso privado, e você pode deixar isso claro aqui. Basta colocar o sinal de menos. Menos indica que ele é privado. O contrário, o mais, indica que ele é público.

Vamos colocar alguma coisa pública aqui. Geralmente no sistema os métodos são públicos. Como vou representar o método aqui? fácil, vou colocar uma outra faixa para separar atributos de métodos. E vou colocar um método qualquer aqui, como por exemplo conta a quantidade de pontos que ele já fez no meu sistema, porque suponha que cada vez que o aluno responde o exercício ele ganha um ponto, igual é na Alura.

Isso é um comportamento, certo? Então eu abro e fecho parênteses. E o tipo de retorno dele é inteiro. Isso obviamente dentro da caixa, é que na lousa é difícil de redimensionar. Ele é público, então coloco o sinal de mais.

Se eu tiver outro comportamento, o que vou fazer? Vou colocar outro comportamento, mais e outro método. Mas posso explicar as coisas que ele recebe, que o método recebe? Posso. Posso passar lista de parâmetros aqui, mas de novo, lembra daquela nossa discussão, você tem que representar o que é necessário, as informações importantes, e não qualquer coisa, porque senão esse diagrama vai ficar infinito. Imagine todas as classes do seu sistema representadas neste diagrama, você vai ter que imprimir em uma folha A1, não vai caber.

Use o diagrama de classe para aquela coisa que é importante, para a classe que seu sistema não vive sem. Vou dar outro exemplo aqui, uma coisa bastante importante também no sistema é o contrato. Eu desenho mais uma classe, sem segredo, mais um quadrado, nome contrato.

Vou por os atributos dele, então o contrato tem uma data, e tem o curso que foi liberado para ele, por exemplo. A data é um calendário e o curso é um curso. Aqui não vou colocar nenhum método, não preciso, porque vamos supor que o contrato não tenha nenhum método realmente importante que valha a pena aparecer no meu diagrama.

Tenho contrato, tenho aluno e preciso mostrar uma relação entre eles, porque um aluno pode ter vários contratos, não pode? Mas como eu poderia representar isso? Eu poderia colocar list de contrato, como se fosse um atributo, mas isso não é fácil de ser visto. De novo, eu quero que meu diagrama qualquer um bata o olho e entenda as principais relações.

Tem uma relação importante entre aluno e contrato. Como vou fazer isso? Vou puxar uma seta entre eles. Só que essa é uma seta diferente. Como nós estamos no diagrama de classes, posso por um diamante aqui do lado do aluno. O diamante significa composição. Vou até pintar o diamante, você vai ver ele pintado e não pintado.

Pintado é composição. Ou seja, um aluno contém contratos. E posso até deixar claro a quantidade disso, como é essa relação. Vou colocar um aluno, ele tem “n” contratos. Ficou claro agora. Quer dizer que ele pode ter mais de um contrato. E se ele só tivesse um contrato na vida? Não tem problema, 1 e 1, você deixa claro essa relação.

E você pode evoluir esse diagrama para representar outras coisas importantes. Por exemplo, vamos supor que eu tenha tipos de contratos diferentes. Eu tenho contrato de pessoa jurídica e tenho contrato de pessoa física. E eu vou usar um pouco de herança aqui. Nada me impede de puxar uma seta.

A seta simplesmente assim indica herança. Então a pessoa jurídica é filho de contrato. Pessoa física é filho de contrato. Eu vou até escrever herança para lembrarmos.

E estereótipo, será que existe? Existe, certo? Porque eu tenho informações para passar na classe também. Vamos supor que contrato não seja uma classe. Ela seja uma interface. Então vou apagar atributo, porque interface não tem atributo. Como deixo claro que é uma interface? Usando estereótipo. Para interface em particular nós escrevemos a palavra interface.

Esquema de representação com duas tabelas "PJ" e "PF" que apontam com setas para a interface "Contrato", o qual se liga por "n" e "1" a tabela de "Aluno" contendo as linhas de "-nome: string" e "-email:string" seguido de "+contaPontos(): int".

E temos o costume de colocar em cima do quadrado. Agora, o contrato é uma interface e ele tem duas implementações. Agora não é mais herança aqui, mas o sinal, o desenho é o mesmo. E veja a direção da seta. Ela sempre vai para o grande. Certo? Contrato é o grande, o maior, a seta vai na direção dele.

Então, composição, herança, interface, veja que é simples. A UML quando bem usada é simples. É seta para lá, seta para cá, e você representa aquilo que tem de mais importante no seu sistema, e esse é o diagrama de classes. Agora você sabe interpretar ele. Até mostrei sinais, o menos, o mais, tipo de retorno, mas isso é opcional. A parte legal da coisa é entender as principais classes e as relações entre elas. Te vejo no próximo capítulo então.

Sobre o curso UML: modelagem de soluções

O curso UML: modelagem de soluções possui 40 minutos de vídeos, em um total de 37 atividades. Gostou? Conheça nossos outros cursos de Gestão Corporativa em Inovação & Gestão, ou leia nossos artigos de Inovação & Gestão.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Gestão Corporativa acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas