[MÚSICA] Esse é o curso de Orientação a Objetos com Java. Meu nome é Eduardo Guerra e hoje eu estou aqui para responder uma pergunta que muitos desenvolvedores fazem. Eu preciso de diagramas? A gente vai falar aqui no curso sobre alguns tipos de diagramas, na sequência vamos falar sobre os diagramas de classe, mas antes de entrar no diagrama si eu não quero que você comece a aprender sem entender como que diagrama deve ser utilizado num projeto de software, qual é a utilidade do diagrama, como utilizar ele de forma que ele vai ser útil, certo? Então, eu vejo que muita gente se faz essa pergunta: Por que que eu preciso de diagrama? O cara pensa assim: "Eu tenho diagrama", "Eu tenho código, as vezes eu tenho código, o cógico já representa o que o software faz. Para que que eu preciso de diagrama mostrando essas mesmas coisas?" Vamos ver aqui alguns motivos pelos quais você pode querer estar utilizando diagrama. A primeira coisa é que o diagrama ele pode te ajudar a comunicar de uma forma bastante eficiente as suas ideias. Imagina por exemplo que você quer comunicar a equipe, por exemplo, explicar pouco do domÃnio do software. Imagina lá que o seu software é sobre uma escola, então você quer mostrar como que os alunos se relacionam com os cursos, os professores como eles são alocados nos cursos nas unidades, então você tem diagrama representando esse domÃnio, isso daà pode ajudar as outras pessoas, pode ser uma forma bastante eficiente de comunicação, de você passar essas informações para as pessoas de uma forma mais rápida, muito mais rápido que você ter, por exemplo, monte de classes lá no código e a pessoa ter que ir olhando uma por uma. Outro motivo para você utilizar os diagramas é para você poder pensar melhor no seu domÃnio. Muitas vezes, eu por exemplo eu tenho essa caracterÃstica de as vezes eu estou pensando, eu estou raciocinando, estou montando uma arquitetura, estou tentando pensar melhor como representar aquelas informações do domÃnio, de as vezes indo e desenhando diagrama, muitas vezes sem muitas amarras, sem muitas ferramentas, as vezes num papel ou as vezes num quadro branco, me ajuda bastante a pensar, a raciocinar, a trabalhar melhor aquele conceito antes de ir por exemplo, pro código e trabalhar naquilo ali individualmente. O diagrama ele me ajuda a pensar. Uma outra utilidade do diagrama é você poder explorar diversas soluções então muitas vezes você fala assim: " eu posso representar, por exemplo, a escola dessa forma. Eu posso ter por exemplo os cursos, eles podem fazer parte da escola, ou então eu posso ter os cursos como uma coisa independente da escola, e simplesmente serem relacionados". E ai eu posso por exemplo, na hora que eu estou pensando no meu sistema, eu posso explorar essas diversas alternativas a partir dos diagramas. "Se eu fizer assim fica desse jeito, se eu fizer desse outro vai ter essa consequência". E ai ver o que que seria o mais adequado, simular cenários, e então o diagrama também é muito interessante para ao invés de você ir direto pro código e querer já criar uma solução definitiva que muitas vezes você não sabe se é aquilo mesmo, ou você nem sabe direito o que você tá indo pro código fazer, o diagrama é uma forma de você estar explorando essas diferentes opções que muitas vezes você tem na hora de criar software. Que lugar, que lugar bonito, deixa até eu colocar aqui meu óculos aqui, maravilha, então pensa se de dentro de apartamento, se dentro da casa de alguém a pessoa consegue ter essa visão ai do Rio de Janeiro. DifÃcil né, da mesma forma, você pegando o código de uma classe você não consegue ter uma visão geral do software. Essa é uma das outras utilidades dos diagramas que é dar essa visão geral onde você pode estar visualizando o software como todo. Então da mesma forma que eu, por exemplo, se eu subir, se for de helicóptero ou subir as vezes num lugar muito alto, eu consigo ter essa visão panorâmica ai da cidade, que maravilha, eu consigo por exemplo a partir de diagrama ter essa visão do software mais como todo. Muitas vezes o diagrama ele vai focar numa questão especÃfica, por exemplo, arquitetura, as classes de domÃnio, ou como é a interação entre as classes, ou de repente como uma determinada classe muda de estados durante o seu ciclo de vida, mas o diagrama ele é interessante que muitas vezes essas informações elas estão espalhadas pelo software. Muitas vezes essas são implementadas por diversas classes e você indo lá e olhando cada uma dessas classes é diferente de você, por exemplo, ir lá e olhar tudo de cima e ver como as coisas estão organizadas e como elas se encaixam, do que indo lá baixo e visitando cada uma. Quantas vezes, as vezes você não pega caminho diferente, e ai você se surpreende você fala assim: "Olha, mas esse caminho veio parar aqui. Por que?" Porque ali no detalhe muitas vezes você não tem a visão de como as coisas estão conectadas, como as coisas se relacionam e tomando essa distancia a partir do diagrama isso pode ficar muito mais claro. Isso com certeza é uma das principais utilidades de diagrama e pode ser essencial na comunicação dentro da equipe para que todos entendam as soluções e tenham esse panorama de como que o software funciona, de como as classes colaboram para se chegar num resultado final. Uma outra experiencia que eu posso falar, talvez seja o principal uso de diagramas pelo menos para mim, ser uma excelente ferramenta para você discutir o design e as soluções com outras pessoas. Eu tive uma experiência recente que eu tava discutindo a arquitetura uma nova arquitetura para software existente junto com a equipe, e a gente utilizou diagramas num quadro branco, eu fui e fui desenhando a solução toda a equipe foi interagindo dando opinião, quando alguém não entendia falava: "Mas que bloco e aquele? Que que aquilo faz? Olha, onde que está tal parte da solução? Quem vai ser responsável por fazer aquilo?" Então a partir daquele diagrama a gente foi criando dentro da equipe ali, toda uma visão de como que aquela arquitetura iria funcionar. Então os diagramas eles são uma excelente ferramenta para o design colaborativo, para se trabalhar junto com outra pessoa numa solução, principalmente por exemplo na frente de quadro branco. Falei várias formas de usar o diagrama, agora a principal forma de não utilizar. Você não deve utilizar diagrama só porque alguém falou que você precisava fazer aquele diagrama, é a pior forma. Pode até ser que a pessoa tenha razão pedir para você fazer aquele diagrama, só que se você não souber para que que aquele diagrama serve, quem vai ler aquele diagrama, você não vai fazer o diagrama adequado. Então, não siga como se fosse esses cavalos que usam, que se chama antolho que tampa a visão e faz ele ver somente retinho, sem saber o que está acontecendo do lado, ele está indo ali para a frente sem saber o que esta acontecendo, não seja assim. Crie diagrama sabendo para que aquele diagrama serve, para quem é aquele diagrama, para que você possa fazer o diagrama mais adequado de acordo com o propósito que você tem. Então a pior forma de você usar diagrama é simplesmente porque o processo, ou alguém falou que você tem que fazer e você não vê aquela utilidade. Então por mais que aquela pessoa ou aquele processo tenha razão, procure primeiro entender o motivo de fazer aquele diagrama, questione se for necessário mas evite criar diagramas de forma cega só porque alguém ou algum processo disse que era necessário e que era importante. Com isso eu espero que vocês tenham entendido como que os diagramas eles podem ser utilizados dentro de uma equipe, dentro de projeto de software para a comunicação, para a colaboração, para você pensar melhor num problema, para você poder ter uma visão geral de como as coisas estão organizadas. E não se esqueça de não seguir cegamente sem entender o porquê precisa criar diagrama. Sempre entenda o motivo e quem é o público alvo do diagrama que você está criando. Espero que tenha ficado claro para vocês. Até a próxima aula!