Modelagem de Software com UML - Parte 1
O artigo é a segunda parte de uma série de artigos sobre modelagem de sistemas orientados a objetos (OO) com a UML (Unified Modeling Language). Nesta parte da série, é abordado o diagrama de classes, um dos diagramas mais utilizados desta linguagem de modelagem.
Para que serve:
O diagrama de classes da UML serve para representar a parte estática de um sistema: as classes existentes e seus atributos, métodos e relacionamentos com outras classes. Tal diagrama pode ser utilizado em deferentes fases do desenvolvimento de software (análise de requisitos, projeto de software, etc.) para representar características do sistema em diferentes níveis de abstração.
Em que situação o tema é útil:
O tema é útil para qualquer desenvolvedor de software que tenha que escrever ou ler especificações de requisitos, projetos de software ou modelos de sistema em geral, desde que a UML – mais especificamente o diagrama de classes – tenha sido utilizado. A grande maioria dos modelos de sistemas construídos no paradigma OO utiliza a UML e o seu diagrama de classes.
Resumo DevMan:
A UML especifica diversos diagramas que podem ser utilizados para modelagem de sistemas OO, cada um adequado para uma ou mais situações específicas. O diagrama de classes da UML é um destes, cujo propósito é apresentar as estruturas estáticas de um sistema: classes, seus atributos, métodos e relacionamentos. Neste artigo, apresentamos o diagrama de classes da UML, explicando como modelar as diferentes características de um sistema utilizando sua sintaxe e como interpretá-los posteriormente, implementando em Java as classes que nele forem modeladas. Começamos com os fundamentos básicos (classes, atributos e métodos – Figura 1 e Listagem 1), passando em seguida a falar de associação/delegação entre classes (Figura 2, Listagens 2 a 4) e herança (Figura 3 e Listagem 5), abordando especificamente a sobrescrita de métodos (Listagem 6), a herança múltipla (Figura 4 e Listagem 7) e o polimorfismo (Listagem 8). Apresentados os conceitos de delegação e herança, discutimos quando utilizar um ou outro e finalizamos o artigo apresentando a relação de dependência entre classes (Figura 5).
Autores: Celso André Rodrigues de Souza e Vítor E. Silva Souza
A UML provê diversos diagramas para modelar sistemas de software. Cada um desses diagramas é adequado para uma determinada situação e visão de software. O livro “UML: guia do usuário” [1], aborda todos os diagramas UML de forma didática e exemplificada. Ele é uma boa referência para o leitor que deseja se aprofundar no estudo de modelagem de software.
Neste artigo o foco será o diagrama de classes da UML, que é um dos diagramas mais importantes da UML. Ele apresenta as estruturas estáticas do sistema, que são as classes, os relacionamentos, atributos e métodos de cada classe. Ele pode ser utilizado tanto na fase de análise dos requisitos (representando conceitos do mundo real relevantes ao sistema) quanto na fase de projeto (modelando artefatos de código que serão implementados em alguma linguagem de programação do modo como estão representados no diagrama).
Nas seções a seguir, apresentaremos suas características, demonstrando como modelar neste diagrama os conceitos relacionados aos sistemas que desenvolvemos e, em seguida, como implementar o que modelamos no diagrama de classes utilizando a linguagem Java.
Fundamentos: Classes, Atributos e Métodos
O elemento fundamental do diagrama de classes é, obviamente, a classe. Uma classe é representada por um retângulo dividido verticalmente em três seções que contêm, respectivamente, o nome, os atributos e os métodos dessa classe. A Figura 1 mostra como representar classes em UML.
Figura 1. Representação de classes e interfaces em UML.
No diagrama da Figura 1 foi modelada a classe Usuario, que possivelmente representa usuários do sistema em questão. Usuario é uma classe concreta, ou seja, pode ter instâncias diretas. Caso se queira representar uma classe abstrata (em Java utiliza-se as palavras-chave abstract class), deve-se colocar o nome da classe em itálico ou associá-la ao estereótipo <<abstract>>, colocando-o acima do nome da mesma. Estereótipos são utilizados também para declarar interfaces, as quais serão abordadas mais adiante.
A nova categoria pode definir
propriedades ou maneiras de utilização específicas, geralmente ligadas a um
domínio em particular, que são associadas automaticamente ao elemento que
recebe o estereótipo. Por exemplo, as extensões da UML para aplicações Web
propostas por Conallen [5] incluem estereótipos relacionados com a plataforma
Web, como <<screen>> para telas, <<input form>> para
formulários, e assim por diante. Eu sabia pouquíssimas coisas de programação antes de começar a estudar com
vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa
bagagem consegui um estágio logo no início do meu primeiro
período na faculdade. Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo. Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a
pena, pois a plataforma é bem intuitiva e muuuuito
didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito
obrigado! Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento
front-end, tinha coisas que eu ainda não tinha visto. A
didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado,
adorando demais. Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É
um passo a passo incrível. Só não aprende quem não quer.
Foi o melhor investimento da minha vida! Foi um dos melhores investimentos que já fiz na vida e tenho aprendido
bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da
programação, irei assinar meu contrato como programador
graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana,
aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem
como não aprender, estão de parabéns! Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de
seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com
React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo
muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na
área.Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!