UML para os mais pequenos: diagrama de classes





Ave, Coder! Um diagrama de classes UML ilustra a estrutura de um sistema, descrevendo classes, seus atributos, métodos e relacionamentos entre objetos.



Mesmo as crianças menores sabem que UML vem da Unified Modeling Language, se em russo, então - uma linguagem de modelagem unificada que, como diz a lenda, foi desenvolvida quando tios e tias sérios finalmente se cansaram de nadar em uma variedade de círculos, traços e nuvens.



Para aqueles que têm preguiça de ler:



O personagem principal







Primeiro, vamos nos lembrar o que é uma classe? Em suma, uma classe é um modelo para a criação de objetos que fornece valores de estado inicial: inicialização de campos variáveis ​​e implementação do comportamento de campos e métodos.



Essencialmente, uma classe descreve o que um objeto pode ser.







Uma classe representa um conceito que descreve o estado (atributos) e o comportamento (métodos). Cada atributo tem seu próprio tipo, cada método tem sua própria assinatura, mas no diagrama de classe apenas o nome da classe é a informação necessária a ser preenchida, o que é lógico - mesmo os melhores médiuns do mundo não serão capazes de entender o que é esse quadrado sem nome e a que geralmente se refere.



O nome da classe é escrito na divisão superior, depois os atributos da classe, os tipos dos quais são escritos após os dois pontos e, finalmente, na divisão inferior, existem métodos.



O tipo que um método pode retornar é escrito após os dois pontos no final da assinatura do método. Os modificadores de escopo são mostrados na frente dos atributos e métodos da classe.







Cada parâmetro em um método também pode ter uma descrição da direção do método: in, out, inout.

Nesta ilustração, o método1 usa p1 como uma entrada e o valor de p1 é de alguma forma usado pelo método, e o método não muda p1.



O método2 leva p2 como um parâmetro de E / S, o valor de p2 é de alguma forma usado pelo método e leva a saída do método, mas o próprio método também pode alterar p2.



O método3 usa p3 como parâmetro de saída, ou seja, o parâmetro serve como repositório para o valor de saída do método.



Perspectivas sobre diagramas de classes no ciclo de vida de desenvolvimento de software



Podemos usar diagramas de classes em diferentes estágios do ciclo de vida de desenvolvimento de software e, normalmente, modelar diagramas de classes de três perspectivas diferentes à medida que progredimos nos níveis de detalhe.







A perspectiva conceitual é quando os diagramas são interpretados como uma descrição de coisas no mundo real. Assim, se tomarmos uma perspectiva conceitual, desenhamos um diagrama que representa os conceitos na área de estudo. Esses conceitos estão relacionados às classes que os implementam. A perspectiva conceitual é considerada independente da linguagem.







Uma perspectiva de especificação é quando os diagramas são interpretados como uma descrição de abstrações de software ou componentes com especificações e interfaces, mas não vinculados a uma implementação específica.







Uma perspectiva de implementação é quando os diagramas são interpretados como descrevendo implementações de software em uma determinada tecnologia e linguagem.

Portanto, se você adotar uma perspectiva de implementação, estará olhando para a implementação de software.



Tipos de relacionamento



A seguir, apresentarei seis tipos principais de notação de relacionamento de classe que são mais comuns em diagramas UML.



Associação.





Como links que conectam objetos, associações ligam classes. Para que os objetos sejam conectados, deve haver uma associação entre eles.



Se assumirmos que temos duas classes que interagem entre si, uma linha de conexão contínua deve ser desenhada entre elas, indicando a associação no diagrama. Freqüentemente, também podemos ver um verbo que transmite seu significado.



Além disso, também podemos especificar a multiplicidade, ou seja, a quantidade de objetos que podem fazer parte do relacionamento. A multiplicidade é especificada como uma lista de intervalos separados por vírgulas, em que cada intervalo é representado como um mínimo-máximo.



Por exemplo, um aluno pode aprender com muitos professores.

Mas um professor pode ensinar muitos alunos.



Herança







Ou às vezes também é chamada - generalização.



Como o nome sugere, esta é uma representação esquemática da relação entre uma classe pai e seus descendentes. A seta vazia sempre aponta para a classe pai.

Um exemplo clássico de herança: as classes de quadrado, retângulo e círculo, que herdam da classe de figura pai.



Temos o direito de representar a herança separadamente para cada classe e de combiná-las.

Se a herança vier de uma classe abstrata, o nome dessa classe pai será escrito em itálico.



Implementação







Normalmente, isso significa o relacionamento entre uma interface e os objetos que implementam essa interface.



Por exemplo, a interface do Proprietário possui métodos para comprar e vender propriedade privada, e o relacionamento das classes Pessoa e Corporação que implementam essa interface será indicado no diagrama como uma linha tracejada com uma seta apontando para a interface.



Dependência Um







objeto de uma classe pode usar um objeto de outra classe em seu método.

Se o objeto não for armazenado no campo de classe, esse tipo de relacionamento entre classes é modelado como uma dependência.



A dependência é, de fato, um caso especial de associação de duas classes, neste caso, mudanças em uma classe implicarão inexoravelmente em mudanças na outra.



Por exemplo, a classe Person tem um método hasRead com o parâmetro de entrada book, que retorna true se, por exemplo, a pessoa leu um livro.



A dependência é indicada por uma linha tracejada com uma seta voltada para a classe da qual, por exemplo, os métodos de outra classe dependem.



Agregação







Um tipo especial de relacionamento entre classes onde uma classe faz parte de outra.



Por exemplo, o local de trabalho de um programador consiste em uma cadeira, uma mesa, um computador e um ventilador, mas se a classe "local de trabalho" for excluída, teremos simplesmente todas essas classes, apenas separadamente.



A agregação é mostrada como uma linha contínua com um diamante oco direcionado das classes que fazem parte de uma classe para a classe agregadora.



Composição







Na verdade, uma espécie de agregação, somente neste caso, as classes que fazem parte de outra classe são destruídas quando a classe do agregador é destruída.



Por exemplo, nosso corpo consiste de órgãos, mas por si só eles não são viáveis.



A composição é indicada de forma semelhante à agregação, mas desta vez o diamante está totalmente preenchido.



Finalchka



A UML pode ser muito útil para iniciantes que estão no estágio de compreensão “o que deve ir para onde e do que herdou”. Como dizem nossos colegas de língua inglesa: “ajuda ver como fica toda a floresta atrás dos troncos das árvores”.



Portanto, antes de iniciar seu projeto, embora pequeno, mas impressionante, não pegue o código imediatamente. Primeiro, projete a arquitetura de seu aplicativo em UML.



Ave!



All Articles