You are on page 1of 5

DIAGRAMA DE CLASSES

O diagrama de classes um dos mais importantes e mais utilizados da UML (Linguagem de modelagem unificada). Seu principal enfoque est em permitir a visualizao das classes que comporo o sistema com seus respectivos atributos e mtodos, bem como em demonstrar como as classes do diagrama se relacionam, complementam e transmitem informaes entre si. Basicamente, o diagrama de classes composto por suas classes e pelas associaes existentes entre elas, ou seja, os relacionamentos entre as classes. O diagrama de classes representa a estrutura do sistema, recorrendo ao conceito de classe e suas relaes. O modelo de classes resulta de um processo de abstrao onde so identificados os objetos relevantes do sistema em estudo. Um objeto uma ocorrncia que tem interesse para o sistema em estudo e que se pretende descrever no seu ambiente, contendo identidade e comportamento. O comportamento de um objeto define o modo como ele age e reage a estmulos externos e a identidade de um objeto um atributo que o distingue de todos os demais, sendo preservada quando o seu estado muda. Classe: a representao de um conjunto de objetos que partilham os mesmos atributos e comportamentos; Relao: representa a ligao entre classes.

Classe

Relao

Cada classe descrita atravs do seu nome, identificao de todos os seus atributos e identificao de todas as operaes que traduzem o seu comportamento.

Nome da classe Atributos Servios / Mtodos / Operaes

Atributos e Mtodos
Classes costumam ter atributos, que, armazenam os dados dos objetos da classe, alm de mtodos, tambm chamados de operaes, que so as funes que uma instancia da classe pode executar. Os valores dos atributos podem variar de uma instancia para outra. Graas as essas caractersticas, alias, possvel identificar cada objeto individualmente, ao passo que os mtodos so idnticos para todas as instancias de uma classe especifica. Conta_comum # nro_conta: long # dt_aberta: date # dt_encerramento: date # situacao: int # senha: int # saldo: double + abrir_conta() : int + consultar_conta() : int + validar_senha() : int + saldo_conta() : double + extrato_conta() : string + sacar_valor() : int + depositar_valor() : int + encerrar_conta() : int

Na linguagem UML as classes so representada com um retngulo com ate trs divises: A primeira contem a descrio ou nome da classe, que nesse exemplo Conta_comum; A segunda armazena os atributos e seus tipos de dados (o formato que os dados devem ter para serem armazenados em um atributo). Finalmente, a terceira diviso lista os mtodos da classe.

Os smbolos de sustenido (#) e mais (+) na frente dos atributos e mtodos representam a visibilidade dos mesmos, o que determina quais objetos de quais classes podem utilizar o atributo ou o mtodo em questo. No realmente obrigatrio que uma classe apresente as trs divises, pois pode haver classes que no tenham atributos ou que no contenham mtodos, ou pode acontecer ainda que seus atributos e mtodos no precisam ser apresentados no diagrama, j que recomendado apresentar apenas atributos relevantes ao diagrama para evitar, por exemplo, tornar o diagrama muito poludo. Mtodos podem receber valores como parmetros e retornar valores, que podem tanto ser o resultado produzido pela execuo do mtodo quanto simplesmente um valor representado se o mtodo foi realizado com sucesso ou no. No exemplo, podemos perceber que o retorno do mtodo abrir_conta um long, que conter o numero da nova conta gerada. Os mtodos foram apresentados sem o detalhamento de quais argumentos (parmetros) eles deveriam receber (a lista de argumentos de um mtodo, junto com seu valor de retorno, chamada de assinatura da operao).

Conta_comum # nro_conta: long # dt_aberta: date # dt_encerramento: date # situacao: int # senha: int # saldo: double + abrir_conta(int) : int + consultar_conta(long) : int + validar_senha(int) : int + saldo_conta() : double + extrato_conta(date) : string + sacar_valor(double) : int + depositar_valor(double) : int + encerrar_conta() : int

Os atributos de uma classe podem ainda ter caractersticas extras, entre as quais podemos citar valores iniciais, multiplicidade e se o atributo derivado, ou seja, se seus valores so produzidos por meio de algum tipo de calculo.

Conta_comum # nro_conta: long # /dt_aberta: date # /dt_encerramento: date [0..1] # situacao: int # senha: int # /saldo: double + abrir_conta(int) : int + consultar_conta(long) : int + validar_senha(int) : int + saldo_conta() : double + extrato_conta(date) : string + sacar_valor(double) : int + depositar_valor(double) : int + encerrar_conta() : int

Pode-se perceber tambm que o atributo dt_encerramento, aps a definio de seu tipo (date), contem os valores [0..1]. Isso chamado multiplicidade e, nesse contexto, significa que existir no mnimo nenhum (0) e no mximo um (1) data de encerramento para a conta, uma vez que a conta pode estar aberta ainda e, portanto, no poder ter uma data de encerramento e, se ela tiver sido encerrada, no poder ter mais do que uma. Finalmente, os atributos dt_abertura, dt_encerramento e saldo tem uma barra (/) antes de seus nomes, significando que os valores desses atributos sofrem algum tipo de calculo. No caso das datas, quando for realizada a operao de abertura de conta, o valor da data de abertura ser tomado da data do sistema, o mesmo ocorrendo com o valor da data de encerramento quando do encerramento da conta. A rigor, no necessariamente isso poderia ser considerado um clculo e sim uma simples atribuio, sendo que alguns poderiam considerar isso sendo o valor inicial dos atributos. No entanto, principalmente no caso da data de encerramento, que ser deixada indefinida at que a conta seja encerrada, isso no seria verdadeiro, e o valor desse atributo seria definido em uma operao posterior a criao do objeto. J no caso do saldo, ele precisa ser recalculado sempre que uma operao de saque ou deposito for realizada.

Relacionamentos ou Associaes
As classes costumam ter relacionamentos entre si, chamados associaes, que permitem que elas compartilhem informaes entre si e colaborarem para a execuo dos processos executados pelo sistema. Uma associao descreve um vinculo que ocorre normalmente entre os objetos de uma ou mais classes. As associaes so representadas por linhas ligando as classes envolvidas. Essas linhas podem ter nomes ou ttulos para auxiliar a compreenso do tipo de vinculo estabelecido entre os objetos das classes envolvidas nas associaes.

Associao Unria ou Reflexiva


Entre tipo de associao ocorre quando existe um relacionamento de um objeto de uma classe com objetos da mesma classe.

chefia 0.. * Funcionrio - nome: String

Podemos perceber que a nica classe do exemplo tem o nome Funcionrio, e como atributo o nome do funcionrio. A linha intitulada chefia parte da classe Funcionrio e atinge a prpria classe. Isso ocorre porque, nesse exemplo, um funcionrio pode ser chefe de outros funcionrios. O chefe de um funcionrio tambm , por sua vez, um funcionrio da empresa e, portanto, tambm se constitui em uma instancia da classe Funcionrio. Logo, a associao denominada chefia indica uma possvel relao entre uma ou mais instancias da classe Funcionrio com outras instancias da prpria classe Funcionrio, ou seja, essa associao determina se um funcionrio pode ou no chefiar outros funcionrios. Observem que existe outra informao na associao, alm de seu prprio nome, representada pelo valor 0.., essa informao conhecida como multiplicidade. A multiplicidade procura determinar o numero mnimo e mximo de objetos envolvidos em cada extremidade da associao, alm de permitir especificar o nvel de dependncias de um objeto para com os outros envolvidos na associao.

You might also like