[Música] olá bem-vindos ao canal engenharia de software com ênfase uml Eu sou professor julianes Guedes e eu já atuo na área de moderem de software há vários anos eu tenho quatro livas publicado na área e já ministrei diversas palestras de cursos técnicos so modelagem de software com a da linguag um na aula de hoje eu pretendo começar a falar sobre diagrama de classes na verdade a aula de hoje será uma breve introdução ao diagrama de classes e uma pequena revisão sobre orientação objetos utilizando a anotação ml para exemplificar Na verdade o conteúdo do diagrama de
classe ele é bastante extenso portanto eu pretendo dividir esses essa aula esse conteúdo em diversos vídeos Então vamos dar início a nossa aula nossa primeira aula sobre o diagrama de classes então eu costumo sempre fazer uma pequena propaganda eu já publiquei como eu falei quatro livros sobre o ML o meu primeiro livro foi o ML uma abordagem prática que tratava sobre a omr 1.5 mas já abordava o conteúdo da omr 2 que começara a surgir na época depois eu lancei o ml2 b de consulta rápida do anos depois eu lancei o dois guia prático e
finalmente eu lancei o meu livro que eu considero mais importante mais completo que é o m2 uma abordagem prática que se encontra na terceira Edição Mas eu estou trabalhando na quarta Edição eu espero lançar quarta Edição em 2024 Mas vamos deixar aí propagando e vamos ao conteúdo então falando brevemente sobre o diagrama de classes o diagrama de classes ele é provavelmente o mais importante e o mais utilizado da uml ele como o nome diz ele permite visualizar as classes que vão compor um software serão utilizadas por um software com seus respectivos atributos e métodos e
também demonstra como as classes se relacionam complementam e transmitem informações entre si Ah o diagrama de classe ele estático ele não se preocupa eh em detalhar como os valores dos objetos serão modificados ou como seus métodos serão executados ele é ele apenas se preocupa em estabelecer a estrutura lógica dessas classes mas ele serve como base para construção da maioria dos outros diagramas da umr como nós vamos ver nos próximos vídeos ah na verdade eu falei que o diagrama de classe demonstra demonstra classes com atributos e métodos na verdade existe até outras informações que pode estar
cono uma classe mas isso a gente vai falar mais adiante eh mas na verdade existem eu posso produzir muitos diagramas de classe em eh funções diferentes em alguns deles por exemplo eu não vou representar métodos como meu caso dos modelos conceituais ã então esses modelos de classes diagramas de classes eles são modelados dependendo da fase do processo de desenvolvimento e dependendo dos objetivos que eh se pretende alcançar com esses diagramas então alguns dos dos modelos de classe que podem ser construídos são os modelos conceituais e os modelos de domínio os modelos conceituais eles são produzidos
durante a fase de engenheira requisitos e o objetivo de um modelo conceitual é eh identificar classes de entidade as classes de entidade são classes relacionadas diretamente ao domínio do problema e procura solucionar então eh essas classes de entidade elas são muito semelhantes às entidades representadas nos modelos de entidade de relacionamento usado para modelar banco de dados relacionais na verdade o diagrama de classe foi Originalmente projetado para ser uma super evolução do modelo entidade de relacionamento então classe de entidade basicamente elas se referem a classes relacionadas ao domínio do problema exemplos eh em um sistema de
controle bancário classica entidade seriam clientes que possuiriam contas no Banco as contas propriamente dito e os movimentos realizados sobre essas contas por exemplo um sistema de biblioteca classe entidade poderiam ser exemplares livros sócios empréstimos por exemplo então é esse tipo de classe que é representado por modelo conceitual não ele não se preocupa com detalhes de maior maiores detalhes de programação e não representa métodos por quê Porque o diagrama de classes ele é produzido durante a fase de engenheiria de requisitos e a fase de engenheiria de requisitos ela se preocupa apenas de identificar o problema e
os métodos já fazem parte da solução eh os métodos eles vão ser representados no modelo domínio é o Model que é um diagrama de classes que é produzido durante a fase de projeto de software e essas classes elas vão conter maiores informações do que no modelo conceitual incluindo os métodos que são necessários para aquelas classes por quê Porque no projeto nós já definimos como o problema vai ser solucionado e as e os métodos fazem parte da solução eh na verdade os métodos eles são são descobertos eh por meio da produção de eh diagramas de interação
como diagram de sequência mas isso a gente vai estudar mais para frente mas basicamente que produz um diagrama de sequência para cada caso de uso primário casos primários já foram estudados doos anteriores e a partir desse diagrama de sequência se descobre quais métodos devem ser disparados entre quais classes e esses métodos enriquecem o modelo conceitual e transformam ele no modelo domínio claro que o modelo domínio pode conter mais informações relacionadas à solução do problema mas isso a gente vai ver mais para frente ã eu vou fazer uma breve introdução à orientação objetos como eu falei
depois nós vamos voltar em outros vídeos Ao diagrama de classes vamos detalhar melhor seus componentes e Como utilizar esse diagrama de classe como eu já falei também vai ser necessário vários vídeos para apresentar esse conteúdo mas eu vou dar uma breve revisão sobre orientação objetos basicamente a orientação a objetos ela trabalha com conceitos de classificação abstração e instanciação então classificar é agrupar elementos com características semelhantes em grupos na verdade ã os o ser humano Ele trabalha muito com classificação há quem diga que ele pensa orientado objetos no momento que ah mu das muitas das formas
de aprendizagem do ser humano se assemelham à orientação objetos no momento em que nós classificamos Praticamente tudo nós classificamos pessoas nós classificamos objetos nós classificamos conceitos diversos hã Então sempre que nós fazendo uma analogia com uma criança sempre como uma criança vê uma um um elemento tentendo cabeça tronco e membros e se locomove de um lugar pro outro e perguntar o que é aquilo ele vai receber como resposta aquilo uma pessoa e ele vai ver um outro elemento com essas mesmas características cabeça PR e membro e vai receber com resposta que também é outra pessoa
então ela vai se dar conta que pessoa não é um elemento individual mas sim um grupo de elementos is uma forma de classificação da mesma forma se eu uma crianç pergunta como se chama um elemento que tem um determinado número de portas quatro rodas locomóvel de um lugar para outro vai receb como resposta aqui um Car E vai um outro elemento que também tem um determinado hipótese locom de um lugar para outro mas tem um modelo de um modelo um pouco diferente uma cor um pouco diferente e vai perguntar o que é aquilo vai receber
como resposta também é um carro então ela vai se dar conta que carro é um grupo uma classe de elementos então Ah nós estruturamos a nossa forma de pensar pelo menos Originalmente de forma orientada a objetos claro que existem outros métodos de de de pensar e estruturar conhecimento lógico ã bom abstração então é a definição do conceito basicamente quando nós eh identificamos uma classe e percebemos Quais são as características os elementos dessa classe nós estamos abstraindo um conceito novo tá então por exemplo se nós elaborarmos a planta de uma classe ao elaborar a planta de
uma casa não de uma classe a planta de uma casa eh nós estamos abstraindo um conceito novo ah e sempre que nós criarmos um um exemplo daquela casa daquela planta de uma casa sempre que nós construímos uma casa nós estaremos instanciando um elemento a partir de um conceito então hã a instanciação basicamente a construção de um objeto a partir das das definições de uma classe como por exemplo construir a casa a partir construir uma casa a partir de uma planta bom eh a classe na orientação objetos ela é representado por um retângulo contendo pelo menos
uma divisão e eh apresenta o nome dessa classe eh Na verdade uma classe pode até ter ter até cinco divisões Mas nós vamos nesse vídeo falar somente das primeiras três as outras últimas duas são um pouco mais avançadas e nós vamos abordar esse tema um pouco mais adiante ã então uma classe ela pode ter atributos também chamado de propriedades são as características de um objeto então por exemplo uma pessoa ela vai ter altura vai ter peso vai ter idade vai ter nome vai ter CPF esse tipo de coisa e uma classe ela pode ter também
métodos ou comportamentos ou operações como são mais conhecidos na uml então métodos ou comportamentos são as ações que o objeto pode executar então qualquer eh elemento de um grupo de pessoas ele é capaz de pensar então Aqui nós temos um exemplo de classes com de uma classe com atributos que é a classe pessoa então a primeira divisão contém o nome da pessoa da classe e a segunda divisão contém os seus atributos no caso CPF nome idade altura peso poderiam ter outros e Aqui nós temos o exemplo de classe com operação ou métodos que ficam na
terceira divisão então no caso toda pessoa ela é capaz de pensar bom agora nós vamos estudar o conceito de visibilidade visibilidade determina o quão acessível um atributo ou método é existem quatro tipos de visibilidade na uml público protegido privado e pacote a visibilidade pública determina que o método ou atributo pode ser acessado por qualquer objeto de qualquer classe a visibilidade protegida diz que somente objetos da Classe instanciados A partir daquela classe ou instanciados a partir de classes derivadas daquela classe podem ter acesso aos atributos ou métodos privado significa que somente objetos daquela classe específica podem
ter acesso aos atributos ou métodos e pacote significa que somente os objetos de um pacote ou todos os objetos de um pacote mas não de outros podem ter acesso àqueles atributos ou métodos em geral eh atributos eles costumam ser privados ou protegidos no quando se trata de uma classe derivada uma classe especializada e os métodos costumam ser públicos os atributos eles costumam ser privados para preservar a o encapsulamento de uma classe Ah então na uml a visibilidade representada por símbolos que ficam eh posicionados à esquerda dos atributos então Aqui nós temos os atributos eh da
classe pessoa PPF aqui eu já acrescentei os tipos desses dess atributos então por exemplo a CPF é do tipo long nome do tipo string idade do tipo inteiro altura e peso são do tipo flor Mas aqui tem um tracinho do lado desses atributos e significa que esse atributo ele é do tipo eh privado quer dizer que somente objetos dessa classe podem ter acesso a esses atributos já o método pensar ele possui um símbolo de mais à sua esquerda ISO significa ele é um método público significa qualquer qualquer objeto pode eh ter acesso a esse método
eh atributos protegidos são representados por um símbolo de sustenido e atributos e pacote são representados por un eu vou falar um pouquinho sobre hierarquia e herança e polimorfismo hierarquia e herança são eh recursos muito poderosos da orientação objetos basicamente herança ela determina que ao derivar ao especializar uma classe A partir de uma classe anterior a nova Classe A classe especializada ela herda todos os atributos métodos e associações da classe original Então o que significa Herdade significa que ela passa a ter também aqueles atributos e métodos sem que ser necessário e declará-los ser necessário eh declarar
novamente aqueles atributos e e métodos na nova classe criada hierarquia basicamente determina a ordem em que as classes eh Gerais classes mães classes originais e as classes filhas ou especializadas estão eh organizadas eh no modelo então as classes que se encontram na parte superior da hierarquia de classes são as classes mais antigas as classes mais Gerais enquanto que cada camada inferior representa classes especializadas eh cada vez mais especializadas no caso então eu posso ter várias camadas de classes nessa hierarquia certo então uma classe ela pode ser uma classe especializada em relação a uma classe superior
a uma classe geral mas ela pode ter classes especializadas a parte dela então ela pode se considerar uma classe geral em relação a outras classes inferiores na hierarquia mais especializadas por assim dizer e vou falar um pqu so polimorfismo também uma das características do polimorfismo e basicamente a capacidade que se tem de redeclarar métodos que já de uma classe especializada que já existiam numa classe geral mas que necessitam ser redeclarar por ter por exemplo um comportamento um pouco diferente mas preservam o nome do método vamos ver exemplos disso então como eu falei herança é uma
das características mais poderosas e importante da orientação objetos ela permite reaproveitar atributos e métodos no momento que eh uma classe especializada a partir de outra ela erda recebe todos os atributos e métodos da classe anterior sem precisar declarar eles novamente então a herança ela otimiza o tempo de desenvolvimento ela diminui a quantidade de linhas de código e facilita futuras manutenções Ahã Aqui nós temos o exemplo de herança a herança na uml é representada por uma seta com mais grossa como pode ser visto aqui então Aqui nós temos uma classe animal que é a classe geral
a seta mais grossa ela aponta sempre da classe especializada paraa classe geral paraa classe mãe Ahã então tem uma classe animal que tem o método locomover e a partir dela eu especializei duas classes as classe mamífero e aves então a classe mamífera ela tem o atributo pelos e o método mamar e a classe ave tem o atributo b e o método por ovos e tanto os objetos da classe mamí como os objetos da classe avve também podem se locomover embora elas não TM esse método declarado nelas mesmas Elas têm esse método por herança recebem esse
método por herança Então não é necessário redeclarar o método como V em nenhuma delas Ah e Aqui nós temos exemplo de herança múltipla que é quando uma classe herda atributos e ou métodos de outras de duas ou mais classes então aqui eu tenho a partir da das classes mamífer e Ave eu criei uma classe que eu chamei de em torrinco e é um animal ã peculiar da Austrália que possui características tanto mamíferos como das aves ele possui pelos e mama e ele tem bico e põe ovos um animal que ficou numa parte intermediária da evolução
segundo alguns especialistas então o torinco ele herda todas as características de mamífero e todas as características de ave Então dessa forma ele possui os atributos pelos e bico e possui os métodos locomover mamar e por ovos então ele tá numa terceira camada da hierarquia e ele herda todos os atributos das classes a partir das quais ele foi especializado tanto de animal como de mamífero como de arte observem que os ah atributos pelos e bico eles têm uma cerquilha do lado de seus atributos is significa que eles são atributos do tipo protegido certo dessa maneira os
objetos da classe onin podem ter acesso a esses atributos também se fossem privados não poderia e agora eu vou falar mais um pouquinho sobre polimorfismo então conceito de polimorfismo El está bastante associado a herança como eu falei uma das características do polimorfismo É permitir a redeclara e reescrita de métodos que foram herdados de uma classe isso pode ser necessário quando esse nessas novas classes esse essa operação esse método possui um comportamento um pouco diferente mas eh permite o polimorfismo permite eh preservar o mesmo nome utilizar o mesmo nome do do método então eh não é
necessário eh criar um método diferente então Isso facilita na no momento de codificação ah polimorfismo basicamente quer dizer eh muitos formatos poderia se Traduzir por isso aqui nós temos exemplo do polimorfismo onde eu tenho uma classe conta comum ela possui o atributo sald do tipo Double e é a visibilidade protegido e ela tem o método operação Sat e ela foi especializada em duas classes conta especial e conta poupança Então conta especial e conta poupança elas é do atributo saldo e é do método saque Ah então Além disso conta especial ela tem o atributo limite e
conta poupança Tem o atributo aniversário agora conta especial também tem o método sar ST foi redlar na classe conta especial porque é necessário considerar o limite da conta quando fosse realizado algum tipo de saque enquanto que contra poupança não contra poupança não redeclarar esse método saque então e h eu disparar um método saque em um objeto a classe contra poupança como esse método não existe na classe contra poupança vai se verificar essa classe é uma classe especializada Sim esse método existe na classe geral a partir da cola fo especializada sim então você exulta esse método
agora se eu disparar o objeto saque em uma classe um objeto da se eu disparar o método saque um objeto da classe contte especial vai se verificar o método saque existe na conta especial sim então você executa o método que está aqui Está na classe cont especial Essa é mais uma função da hierarquia de classe Então é isso nós terminamos a nossa pequena introdução ao diagrama de classe nossa pequena revisão da orientação objetos nas próximas aulas nos próximos vídeos eu irei me aprofundar no diagrama de classes ao longo de vários vídeos espero que vocês tenham
gostado da aula espero que ela tenha sido útil se vocês gostaram eu peço que vocês curtam compartilhem esse vídeo comentem fou possível se inscrever no canal eu agradeceria obrigado pela atenção nos vos na próximo nos próximos vídeos