Baixe o app para aproveitar ainda mais
Prévia do material em texto
7.8 DIAGRAMA DE CLASSES O diagrama de classes representa a estrutura do sistema, recorrendo ao conceito de classe e suas relações. O modelo de classes resulta de um processo de abstracção onde são identificados os objectos relevantes do sistema em estudo. Um objecto é uma ocorrência que tem interesse para o sistema em estudo e que se pretende descrever no seu ambiente, contendo identidade e comportamento. O comportamento de um objecto define o modo como ele age e reage a estímulos externos e a identidade de um objecto é um atributo que o distingue de todos os demais, sendo preservada quando o seu estado muda. Um objecto não é mais do que uma instância da classe. Os objectos de modelação contemplados por este diagrama são: � Classe: é a representação de um conjunto de objectos que partilham os mesmos atributos e comportamentos; � Relação: representa a ligação entre classes. A simbologia usada para representar estes dois conceitos é: Classe Relação Cada classe é descrita através do seu nome, identificação de todos os seus atributos e identificação de todas as operações que traduzem o seu comportamento. O símbolo utilizado para representar a classe, e como se representa na figura 7.23, contempla três áreas distintas, uma área para se identificar o nome da classe, outra para listar os atributos e, finalmente, a terceira, para listar as operações ou métodos, também designados, segundo alguns autores, por serviços. Serviços Atributos Nome da classe Figura 7.23 – Simbologia usada para representar uma classe 7.8.1 REGRAS DE CONSTRUÇÃO 7.8.1.1 COMO UTILIZAR OS OBJECTOS O diagrama de classes mostra como cada classe se relaciona com as outras, tendo como objectivo, a satisfação dos requisitos funcionais definidos para o sistema em estudo. Neste diagrama, uma classe só pode aparecer uma vez. 7.8.1.2 COMO ATRIBUIR NOMES AOS OBJECTOS Qualquer classe e relação devem ter um nome elucidativo e claro para que o diagrama seja facilmente entendido. As classes devem ser identificadas por um nome comum, como, por exemplo, Encomenda, Produto, Cliente, etc. Os nomes das relações devem ser traduzidas através de um verbo, como, por exemplo, efectua, contém, refere, etc. Qualquer um destes nomes deve fazer parte do vocabulário do domínio do problema em estudo. 7.8.1.3 COMO LIGAR OS OBJECTOS Depois de se terem identificado as classes e os seus atributos, há que identificar as relações que existem entre as diferentes classes, de forma a satisfazer os requisitos funcionais do sistema. A representação da ligação entre classes faz-se recorrendo a uma linha recta, como pode ser visto na figura 7.24. O símbolo com a forma de um rectângulo com um canto dobrado que aparece no diagrama da figura 7.24 é o utilizado para ilustrar notas ou restrições. Figura 7.24 – Notação usada no diagrama de classes Na figura 7.24, mostra-se como se representam as relações e chama-se a atenção para onde se coloca o nome e os atributos da classe. Nesta ilustração, foram identificadas duas classes, Encomenda e Produto, cada uma das quais com os seus atributos, e foi identificada a relação “Contém” entre as duas classes. A associação acontece quando uma classe se associa a uma ou mais classes, ou mesmo com ela própria. As classes estão associadas se: � Um objecto de uma classe envia uma mensagem a um objecto de outra classe; � Um objecto de uma classe cria um objecto de uma outra classe; � Um objecto de uma classe recebe uma mensagem com um objecto de outra classe como argumento. Existem outros tipos de relações, generalização e agregação, que são casos particulares da associação. Exemplos destes tipos de relações são mostrados na figura 7.25. A generalização é a relação que se estabelece entre uma superclasse e uma subclasse. A Classe A é uma generalização da Classe B quando A e B estão relacionados por uma relação: “B é como A”. É uma relação num sentido; se A é uma generalização de B, então B não pode ser uma generalização de A. A classe A é a classe pai ou superclasse e B é a classe filho ou subclasse. É uma associação entre classes todo-parte, conhecida como uma relação “consiste em”. Este conceito é equivalente ao conceito de herança da programação orientada a objectos, onde as subclasses, filhos, herdam da superclasse, pai, os atributos e métodos comuns. A agregação usa-se para mostrar o facto de um todo ser composto por partes. Uma forma especial de agregação é a composição, que se usa quando as partes, para a sua existência, dependem da existência do todo. Por exemplo, não faz sentido ter uma linha de encomenda se não estiver associada a uma encomenda. Gen e r a l i z a ç ã o Ag r e gaç ão Compo s i ç ã o Figura 7.25 – Generalização, agregação e composição Num diagrama de classes, e após ter-se identificado a associação entre classes, é necessário identificar a cardinalidade de uma associação, vulgarmente designada por multiplicidade. A multiplicidade é especificada no extremo da associação e sobre a linha que representa a associação. A tabela 7.11 identifica e descreve a notação usada para representar os diferentes tipos de multiplicidade. Quando há necessidade de se saber mais sobre a associação que se estabelece entre duas classes, surge o que se denomina por classes associativas. Por exemplo, se um produto pode ser comercializado por diferentes fornecedores e cada fornecedor tem um preço diferente para cada produto que comercializa, há necessidade de ter a classe Produto_Fornecedor, pois pretende-se saber qual o preço para um fornecedor específico. Esta classe associativa só existe devido à relação que se estabelece entre duas classes com multiplicidade de muitos para muitos e tem sempre atributos próprios. Multiplicidade Simbologia Z e r o o u u m ( o p c i o n a l ) 0..1 U m p a r a u m 1..1 U m p a r a m u i t o s 1..n Z e r o o u m u i t o s 0..n U m a v i n t e ( va l o r e n t r e o i n t e r v a l o e s t a b e l e c i d o ) 1..20 Tabela 7.11 – Notação usada para representar os diferentes tipos de multiplicidade A figura 7.26 mostra como se representa uma classe associativa. Figura 7.26 – Exemplo de uma classe associativa 7.8.2 ANÁLISE DE UM DIAGRAMA DE CLASSES No sistema de recepção de encomendas em estudo, pode-se identificar as seguintes classes: Cliente, Encomenda e Produto. Na figura 7.27, apresenta-se a primeira versão do diagrama de classes para o referido sistema. Figura 7.27 – Primeira versão do diagrama de classes para o sistema de recepção de encomendas Verifica-se que, neste sistema, a encomenda pode ser ou não satisfeita. Neste caso, identifica-se um caso especial, designado, no diagrama de classes, por generalização, que permite demonstrar a noção de superclasse e subclasse, herdando esta os atributos da superclasse. Neste mesmo sistema, nota-se a necessidade da classe Produto_Encomendado para se poder saber que produtos foram encomendados em cada encomenda; esta última classe só existe se existir a classe Encomenda. A figura 7.28 representa o diagrama de classes revisto, incluindo já associações de generalização e de composição. Encomenda -Num_Enc -Data_Enc Produto -Codigo_Prod -Preço_Unit -Quant_Disp 1..nFaz 1..n Pertence -Data entrega Encomenda aceite -Razão Encomenda rejeitada -Quant_enc Produto_Encomendado 1..n Contém -Num_Cliente -Nome Cliente -Tipo_Ref -Morada -Desconto Cliente Figura 7.28 – Diagrama de classes revisto para o sistema de recepção de encomendas
Compartilhar