Escolar Documentos
Profissional Documentos
Cultura Documentos
O Diagrama de classes uma das tcnicas mais utilizadas no desenvolvimento orientado a objetos. Ele descreve a estrutura dos objetos de um sistema
e para cada objeto, descreve a sua identidade, os seus relacionamentos com os outros objetos, os seus atributos e as suas operaes. Por ser um
diagrama de grande utilidade, esse artigo mostra o conceito dos elementos mais importantes e um estudo de caso detalhado, criado no Astah
Professional. Esse artigo rene as caractersticas mais importantes e utilizadas da notao de UML 2.0 do Diagrama de Classes e se torna til para
estudantes, analistas de requisitos, analistas de sistemas e desenvolvedores, que utilizam diagramas de classes como apoio no desenvolvimento de
softwares.
O diagrama de classes um dos diagramas mais utilizados da UML. Ele permite a visualizao das classes que iro compor o sistema com
seus respectivos atributos e mtodos. Ele visa demonstrar como as classes do diagrama se relacionam e transmitem informaes entre si. Ele
composto por suas classes e associaes entre elas.
O diagrama de classes um modelo esttico e pode ser organizado em pacotes. Representa termos do domnio do negcio, ideias, coisas e
conceitos no mundo real. Descreve o problema representado pelo sistema a ser desenvolvido, sem considerar caractersticas da soluo a ser
utilizada.
Este artigo apresenta os elementos bsicos do diagrama de classes e um estudo de caso detalhado. Os exemplos foram criados no Astah
Professional com as notaes baseadas na UML 2.0.
Atributos e mtodos
As classes costumam ter atributos e mtodos. Uma classe representada como um retngulo com at trs divises, conforme pode ser visto
na Figura 1. A primeira diviso contm a descrio da classe, que no exemplo Automvel. A segunda diviso armazena os atributos e seus
tipos de dados. A terceira diviso contm a lista de mtodos, que no exemplo contm o mtodo ConsAutomovel() que permite consultar o
automvel.
Figura 1. Exemplo de Classe
Os smbolos menos (-) e mais (+) na frente dos atributos e mtodos representam a visibilidade dos mesmos. A visibilidade utilizada para
indicar o nvel de acessibilidade de um determinado atributo ou mtodo, sendo representada esquerda destes. A Tabela 1 mostra os quatro
modos de visibilidade existentes: pblico, protegido, privado e pacote.
A classe no precisa conter obrigatoriamente trs divises. Ela pode no conter atributos ou mtodos. O nome da classe obrigatrio, e pode
acontecer que nem os mtodos nem os atributos precisem ser representados no diagrama. A classe apresentada na Figura 1 mostra uma
classe sem parmetros. Eles tambm no so obrigatrios. Em um diagrama de classes com muitas classes possvel que sejam apresentados
apenas o nome dos mtodos das classes, sem especificar os parmetros que eles iro receber.
Associaes
As associaes so os relacionamentos entre as classes, que permitem que elas compartilhem informaes entre si. Uma associao
representada por uma linha slida conectando duas classes.
Uma associao unria ocorre quando existe um relacionamento de um objeto de uma classe com objetos da mesma classe. A Figura 2
mostra uma classe com o nome Funcionrio. A linha intitulada Supervisiona atinge a prpria classe. Isso ocorre porque um supervisor pode
supervisionar vrios funcionrios e por sua vez ele tambm funcionrio da empresa, portanto, constitui uma instncia da classe
Funcionrio.
Figura 2. Exemplo de associao unria
A multiplicidade representada pelo valor 0..*. Esse exemplo mostra que um funcionrio pode ou no supervisionar outros funcionrios,
mas um funcionrio tem um e apenas um funcionrio como supervisor imediato. A Tabela 2 mostra os exemplos de multiplicidade.
Multiplicidade Significado
0..1 No mnimo zero e no mximo um.
1..1 Um e somente um.
0..* No mnimo zero e no mximo muitos
* Muitos
1..* No mnimo um e no mximo muitos
m..n Faixa de valores (por exemplo: 4..7)
Associaes binrias ocorrem quando so identificados relacionamentos entre objetos de duas classes distintas. A Figura 3 mostra um objeto
da classe Funcionrio que pode relacionar-se ou no com instncias da classe Dependente, conforme pode ser visto na multiplicidade 0..*.
Uma instncia da classe Funcionrio possui, no mnimo, nenhuma instncia e no mximo, muitas instncias da classe Dependente e uma
instncia da classe Dependente possuda por uma e somente uma instncia da classe Funcionrio.
J associaes ternrias ou N-rias so associaes que conectam objetos de mais de duas classes. So representadas por um losango para
onde convergem todas as ligaes da associao. No Astah o smbolo dessa associao um crculo conforme mostrado na Figura 4.
Figura 4. Exemplo de associao ternria
Veja que um professor leciona para, no mnimo, uma turma e, no mximo, para muitas. Uma turma tem, no mnimo, um professor e no
mximo, muitos. Um professor, ao lecionar para uma determinada turma, utiliza no mnimo uma sala de aula e no mximo muitas. As
associaes ternrias so teis para demonstrar associaes complexas. No entanto, evite utiliz-las, pois sua leitura , por vezes, difcil de
ser interpretada.
Agregao
um tipo especial de associao, onde se tenta demonstrar que as informaes de um objeto (chamado objetos todo) precisam ser
complementadas pelas informaes contidas em um ou mais objetos de outra classe (chamados objetos parte). Uma relao todo-parte entre
dois objetos indica que um dos objetos est contido no outro. Podemos tambm dizer que um objeto contm o outro.
O exemplo na Figura 5 mostra que uma pessoa pode possuir muitas contas e uma conta pode ser possuda por muitas pessoas, como no caso
de uma conta conjunta. Ou seja, os objetos-parte podem ser compartilhados por mais de um objeto todo.
A associao de agregao pode em alguns casos ser substituda por uma associao binria simples. A funo principal da associao de
uma agregao identificar a obrigatoriedade de uma complementao das informaes de um objeto-todo por seus objetos-parte, quando
este for consultado. J na associao binria essa obrigatoriedade no est explcita.
Composio
Na composio, os objetos-parte tm de estar associados a um nico objeto-todo. Os objetos parte s podem pertencer a um nico objeto
todo e tm o seu tempo de vida coincidente com o dele.
O exemplo da Figura 6 mostra que um objeto da classe Revista refere-se no mnimo, um objeto da classe Edio, podendo se referir a
muitos objetos dessa classe, e que cada instncia da classe Edicao relaciona-se nica e exclusivamente, a uma instncia especfica da classe
Revista, no podendo se relacionar com outra. O exemplo tambm mostra que um objeto da classe Edicao deve se relacionar a no mnimo
sete objetos da classe Artigo, podendo se relacionar at 10 objetos da j citada classe.
Figura 6. Exemplo de composio
Generalizao e Especializao
O objetivo dessa associao representar a herana entre as classes, identificando as super classes, que so as gerais, e as subclasses, que so
as especializadas. Para reaproveitar cdigo, cria-se uma classe geral em que so declarados os atributos e mtodos comuns a todas as classes
envolvidas no processo, ento, declara-se as classes especializadas, ligadas a classe geral, que herdam todas as suas caractersticas. Veja o
exemplo na Figura 7. O exemplo mostra uma classe comum tornando-se uma classe geral e a partir dela, duas classes especializadas: Conta-
Especial e Conta-Poupana que herdam suas caractersticas.
Classe associativa
utilizada quando ocorrem associaes que possuem multiplicidade muitos para muitos em todas as suas extremidades. A Figura 8 mostra
que um fornecedor fornece muitos produtos e muitos produtos podem ser fornecidos por muitos fornecedores. Nesse caso, surge uma nova
classe ProdutoFornecedor com os atributos correlacionados.
Dependncia
Demonstra certo grau de dependncia de uma classe a outra. Quando ocorrer mudana em uma classe, essa mudana dever refletir na outra.
A Figura 9 mostra que o item de carrinho depende da classe CarrinhodeCompras.
Figura 9. Exemplo de dependncia
Realizao
um tipo de relacionamento que mistura caractersticas dos relacionamentos de generalizao e dependncia. usada para identificar
classes responsveis por executar funes para classes que representam interfaces. Este tipo de relacionamento herda o comportamento de
uma classe e no sua estrutura. representado por uma seta tracejada, vazia, que aponta para a classe que tem um ou mais funes que
devem ser realizadas por outra, e na outra extremidade a classe que realiza (implementa) tais funes, assim como mostra a Figura 10.
Restrio
So informaes extras que definem condies a serem validadas durante a implementao dos mtodos de uma classe, das associaes entre
as classes ou mesmo de seus atributos. A Figura 11 mostra que o cliente poder realizar uma nova locao apenas se no tiver nenhuma
pendncia, ou seja, se no tiver nenhuma outra locao pendente.
Interfaces
As interfaces descrevem os servios disponveis de classes especficas. Elas podem ser de dois tipos: fornecidas ou requeridas. As interfaces
fornecidas so representadas por um crculo fechado ligado a classe por uma linha slida. O conjunto de interfaces implementadas por uma
classe forma suas interfaces fornecidas. Ela representa o conjunto de servios que a classe oferece a seus clientes. Por exemplo, a interface
iTeclado, apresentada na Figura 12 representa a interface fsica entre a placa me e um teclado, onde a placa me responsvel por
interpretar as teclas pressionadas no teclado.
As interfaces requeridas so representadas por um semicrculo ligado a uma classe por uma linha slida. Elas descrevem os servios que
outras classes devem fornecer a uma determinada classe, que no precisa ter conhecimento de quais classes implementaro esses servios.
No exemplo da Figura 13, mostra a interface requerida iMonitor, que representa a interface fsica entre uma placa-me e um monitor, onde o
monitor deve apresentar no vdeo as imagens e os smbolos solicitados pelo processador. Em ambos os tipos de interfaces necessrio
definir uma porta de comunicao entre a interface e a classe.
Esteretipos
Esteretipos so teis quando precisamos definir um novo significado a um elemento existente da UML. Podemos definir diferentes tipos de
esteretipos. Alguns exemplos so:
Entity: A classe uma entidade. A classe possui informaes recebidas e armazenadas pelo sistema ou geradas por meio deste. As
informaes podem ser conservadas em memria ou podem ser persistentes. A Figura 14 mostra uma classe com o esteretipo de
persistente.
Boundary: A classe boundary uma classe de fronteira, geralmente interfaces grficas. Muitas vezes ela precisa interagir com outra classe
do tipo Control. Ver Figura 15.
Control: A classe control identifica classes que servem de intermdio entre as classes > e as demais classes do sistema. Os objetos Control
so responsveis por interpretar os eventos ocorridos sobre os objetos. Ver Figura 15.
Figura 15. Exemplo de interface boundary e control
Veja que a classe Interface_Agencia representa a interface do sistema e seus objetos so basicamente textos, botes, caixas de edio, alm
do prprio formulrio. Os eventos que ocorrem sobre tais objetos so repassados para um objeto Controlador_Agencia que interpretar esses
eventos e se necessrio, ir repassar para outros objetos do sistema.
O modelo conceitual do diagrama de classes deve se preocupar em representar as informaes que o software necessita, em termos de classes
e seus atributos, bem como as associaes que as classes podero conter nessa etapa. Somente na fase de projeto produzido o modelo de
domnio, que j enfoca a soluo do problema. Todos os mtodos necessrios s classes so descobertos a partir da modelagem dos
diagramas de iterao, como o diagrama de sequncia. O estudo de caso a seguir, apresenta o diagrama de classes referente ao problema
proposto. Nesse exemplo, foram apontados alguns mtodos que foram possivelmente identificados. Para evitar o excesso de elementos no
diagrama, nenhum mtodo foi parametrizado.
Estudo de caso
Uma empresa de informtica tem a necessidade de lanar suas despesas por setor de trabalho, por meio do qual um usurio dever lanar as
despesas pela intranet. Os seguintes requisitos devero ser levados em considerao:
1. O sistema dever conter as opes para incluir, alterar e excluir as despesas, o tipo de despesa, a unidade de medida, o setor de trabalho,
usurio, endereo e realizar o lanamento das despesas;
2. A tela para cadastrar o tipo de despesa dever conter apenas descrio do tipo da despesa. A tela para cadastrar a unidade de medida
dever conter a descrio e a sigla da unidade de medida. A tela para cadastrar as despesas dever conter o tipo da despesa, a sigla da unidade
de medida e a descrio da despesa. A despesa dever ter uma data incio e fim de ativao do item;
3. Para lanar uma despesa, o usurio dever selecionar o tipo da despesa, a despesa e informar a quantidade do item lanado;
4. Ao lanar uma despesa, o sistema dever armazenar o setor responsvel pela despesa e o usurio da empresa que realizou o lanamento.
Este aquele que estiver logado no sistema;
5. Um lanamento dever ser composto de, no mnimo, um item, podendo conter muitos itens de despesa. Cada item relativo ao lanche,
almoo, papel, lpis e outros, independentemente da quantidade;
7. O sistema dever calcular o valor total da despesa por lanamento e apresentar o total na tela de lanamento;
8. Durante o lanamento das despesas, itens podero ser excludos e includos novamente;
9. Ao incluir um registro de lanamento da despesa o sistema dever salvar todos os itens do lanamento da despesa;
10. Um usurio poder realizar muitos lanamentos, mas, um lanamento poder ser realizado por apenas um usurio;
11. Cada lanamento deve ser feito por setor e a empresa precisar saber qual setor consome mais despesas por ms e o consumo mdio
anual de cada setor.
Diagrama de Classes
A Figura 16 mostra a definio das classes que compe o diagrama, juntamente com as associaes, mtodos e atributos. Essa modelagem
bem simples contemplando o principal objetivo do sistema: o lanamento das despesas. Ser realizada uma descrio do diagrama de classes,
detalhando cada classe individualmente.
Classe Interface_Lanamento_Despesas
Essa classe representa a pgina eletrnica por meio da qual o usurio ir realizar o lanamento da despesa. Ela representa a comunicao
entre o usurio e o sistema de lanamento, conforme demonstra o esteretipo >. Ela controlada pela classe Controlador_Lanamento, que
apresentada a seguir.
Classe Controlador_Lancamento
Essa classe apresentada pelo esteretipo > uma classe de controle, responsvel por interpretar as solicitaes realizadas na pgina pelo
usurio e repassar essas solicitaes para as classes de entidade que compem o sistema. Durante as operaes do sistema ela ir relacionar-
se com diversas outras classes, por isso ela est associada a todas elas.
Classe Usurio
Essa classe tem como funo armazenar as informaes relativas aos usurios do sistema, inclusive aquele que ser responsvel pelo
lanamento das despesas. Os atributos necessrios nessa classe so: Identificao do tipo long, login, senha, nome, endereo, telefone e e-
mail, todos estes do tipo String. Essa classe se relaciona com as classes Endereco e Lancamento_Despesa. Esses relacionamentos indicam
que um usurio possui apenas um endereo e um endereo possudo por apenas um usurio. Um lanamento de despesa realizado por
apenas um usurio, mas um usurio pode realizar vrios lanamentos. A Tabela 3 mostra os mtodos da classe Usurio.
Classe Setor
Essa classe armazena as informaes referentes aos setores de trabalho (Escritrio de Informtica, Vendas e outros) da empresa. Essa classe
se relaciona com a classe Lancamento_Despesa. Esse relacionamento indica que um lanamento de despesa possui apenas um setor, mas,
um setor pode possuir vrios lanamentos. Seu nico atributo a descrio do setor e os seus mtodos so apresentados na Tabela 4.
Classe Endereo
Essa classe tem como funo armazenar as informaes relativas aos endereos dos usurios e ela se relaciona com as classes Cliente,
Tipo_Logradouro e Tipo_ Complemento. Os relacionamentos indicam que um cliente possui apenas um endereo e um endereo pertence
apenas a um cliente. Um endereo possui apenas um tipo de logradouro, porm, um tipo de logradouro pertence a vrios endereos. Um
endereo possui apenas um tipo de complemento, porm, um tipo de complemento pertence a vrios endereos. A associao de agregao
foi inserida, mas, no se torna obrigatria.
Seus atributos so: CEP, Logradouro, Complemento, Nmero, Bairro, Cidade, Estado e UF. Seus mtodos so apresentados na Tabela 5.
Classe Tipo_Logradouro
Essa classe tem como funo armazenar as informaes referentes aos tipos de logradouros (Av, Rua, Praa, etc.) e ela se relaciona com a
classe Endereco. Seu nico atributo a Descrio do tipo String. Seus mtodos so apresentados na Tabela 6.
Classe Tipo_Complemento
Essa classe tem como funo armazenar as informaes referentes aos tipos de complementos (Loja, Apt, etc.) e ela se relaciona com a classe
Endereco. Seu nico atributo a Descrio do tipo String. Seus mtodos so apresentados na Tabela 7.
Classe Tipo_Despesa
Essa classe armazena os tipos de despesas a serem lanadas (alimentao, material de limpeza, material de escritrio, dentre outros). Essa
classe se relaciona com a classe Despesa. O relacionamento indica que uma despesa possui apenas um tipo de despesa, mas um tipo de
despesa pertence a vrias despesas. Seu nico atributo a Descrio do tipo String. Seus mtodos so apresentados na Tabela 8.
ConsultarTipo() Permite consultar um tipo de despesa e retorna uma string com seus
dados.
IncluirTipo() Permite incluir um novo tipo de despesa. Recebe como parmetro
todos os atributos definidos na classe Tipo_Despesa e retorna
verdadeiro se o tipo de despesa foi registrado com sucesso, caso
contrrio retornar falso.
AlterarTipo() Permite alterar um tipo de despesa. Recebe como parmetro todos
os atributos definidos na classe Tipo_Despesa e retorna verdadeiro
se a operao pode ser realizada, e retornar falso, caso contrrio.
ExcluirTipo() Permite excluir um tipo de despesa. O mtodo retorna verdadeiro se
foi finalizado com sucesso, ou falso caso contrrio.
Classe Unidade_Medida
Essa classe armazena as unidades de medida (caixa, unidade, Litro e outros). Essa classe se relaciona com a classe Despesa. O
relacionamento indica que uma despesa possui uma unidade de medida, mas uma unidade de medida pertence a vrias despesas. Seus
atributos so a Descrio e a Sigla, ambos do tipo String. Seus mtodos so apresentados na Tabela 9.
Classe Despesa
Essa classe armazena todas as despesas que devero ser lanadas. Como mostrado anteriormente, essa classe est associada s classes
Tipo_Despesa e Unidade_Medida. Os atributos dessa classe so a Descrio do tipo String, Data_Inicio e Data_Fim de ativao da
despesa. A classe Despesa poderia conter outros campos como, por exemplo, para controle de estoque ou outros, mas isso foge dos requisitos
que esto sendo apresentados nesse exemplo. Seus mtodos so apresentados na Tabela 10.
Classe Lancamento_Despesa
Essa classe armazena as informaes do lanamento da despesa. Note que essa classe se relaciona s classes Usuario, Setor e
Item_Lanamento. Como apresentado anteriormente, um lanamento realizado por um usurio, mas um usurio pode realizar vrios
lanamentos. Da mesma forma um lanamento possui apenas um setor, entretanto um setor possudo por vrios lanamentos. Por fim, um
lanamento contm vrios itens de lanamento, mas um item de lanamento pertence apenas a um lanamento de despesa.
Os atributos dessa classe so: Data_lanamento do tipo Date, Valor_total do tipo Double. Seus mtodos so apresentados na Tabela 11.
Classe Item_Lancamento
Essa uma classe intermediria que contm as informaes de cada item do lanamento. Essa classe se relaciona com as classes
Lancamento_Despesa e Despesas. A classe Item_lancamento armazena o atributo Quantidade do tipo Double, que estabelece a quantidade
da despesa lanada. Seus mtodos so apresentados na Tabela 12.
Com base no que foi apresentado, possvel perceber que os diagramas de classes so muito teis para o desenvolvimento de software e
essenciais no desenvolvimento orientado a objetos, pois eles definem todas as classes que o sistema precisa ter e a base para a construo
de outros diagramas. Eles definem os recursos do sistema atravs de seus atributos e mtodos, alm de representar o domnio do negcio.
Referncia
Guedes, Gilleanes T. A. UML2: uma abordagem prtica. Ed. So Paulo: Novatec. 2009.
Fernanda Fernandes Matos
Especializada em Anlise de Sistemas pela UFMG, ps graduada em Gesto de Projetos pelo IETEC e bacharel em Cincia da
Computao pela UNIVALE. Possui grande experincia na rea de TI, com destaque na Anlise de Requisitos e coo [...]
Publicado em 2015