Baixe o app para aproveitar ainda mais
Prévia do material em texto
Diagrama de classes Parte I Nas aulas anteriores aprendemos diversos conceitos importantes: processos de software, requisitos, casos de uso, diagramas de casos de uso, tudo que foi visto até o momento nos auxiliam na montagem do diagrama de classes. Os elementos fundamentais de um diagrama de classes são as próprias classes e os relacionamentos existem entre elas. Diagrama de Classes Os digramas de classes pretendem apresentar a estrutura estática de um sistema. Lembre que para mostrar aspectos dinâmicos veremos digramas de interação. Os diagramas de classes pretendem fornecer uma visão de todas as “ estruturas” que serão manipuladas ou gerenciadas pelo sistema. O elemento fundamental deste tipo de diagrama são as classes. O diagrama de classes pode representar diferentes aspectos do sistema. Em um processo de software, você pode ter o diagrama de classes de domínio, que trata uma aplicação em nível mais alto, independente de tecnologias que possam ser utilizadas. Neste nível são consideradas apenas as classes referentes ao negócio sob estudo,ou seja, ao domínio do problema, visando auxiliar na compreensão dos elementos envolvidos e na forma como estes elementos se relacionam.Wazlawick (2004) usa o termo modelo conceitual para identificar o que, nesta aula, estamos chamando de diagrama de classes de domínio. Todos os detalhes referentes a solução do projeto ficam para a fase posterior, que é a fase de projeto, onde devem ser vistos os detalhes de interface e formas de armazenamento (banco de dados, segurança de acesso, comunicação entre outros.) (WASLAWICK, 2004). Todos estes detalhes refrentes à implementação são representados no diagrama de classes de projeto, que se torna uma extensão do diagrama de classes de domínio. Ou seja, os dois digramas não tratam de coisas diferentes. As classes definidas no nível de negócios devem ser mantidas e deve ser feita a adição de detalhes específicos, que vão depender das tecnologias escolhidas para implementação do problema.Nesta disciplina de análise I trataremos sobre o diagrama de classes de domínio. Classes Como mencionado, o elemento fundamental de um diagrama de classes é a própria classe. Juntamente com os relacionamentos possíveis, elas vão permitir que você possa construir digrama de classes tanto no nível de negócio como no nível de projeto. As classes representam entidade do mundo real que estão envolvidos no negócio analisado e que resultará no software a ser construído. Considerando o nosso sistema de controle acadêmico, podemos rapidamente algumas classes principais, como professor, disciplina e avaliação. De acordo com Wazlawick (2004), a classe representa conceitos que não podem ser descritos simplesmente por um tipo alfanumérico, ou seja, representam um conceito mais complexo. Por este motivo, Professor deve ser considerado uma classe do sistema, enquanto o nome do professor não pode ser uma classe, já que pode ser representado, simplesmente, por um campo do tipo caracter. A UML fornece notação própria para representação de classes conforme representado na figura 1, a classe é representado por um retângulo, dividido em três compartimentos: o compartimento de identificação, o compartimento de atributos e o compartimento de definição de métodos. No compartimento superior está o nome da classe. No caso do exemplo da Figura1, o nome da classe é ClasseGenerica. O sistema de controle acadêmico pode ter classes nomeadas “Professor”, “Aluno”, “Avaliação”. Vamos usar o mesmo método padrão sugerido pela UML para nomeação das classes, utilizando a primeira letra de cada palavra que compõe o seu nome em maiúsculo. Em seguida, temos o compartimento onde são definidos os atributos da classe. Os atributos são características ou propriedades que uma classe tem. De acordo com Wazlawick (2004), um atributo é uma informação alfanumérica, que está diretamente ligada ao conceito representado por uma classe. No caso da classe “Professor”, temos atributo como nome, idade e data de nascimento. Para a classe “Disciplina”, temos atributos como o código da disciplina e seu nome. A forma geral para definição de uma atributo é apresentada a seguir (PENDER, 2004). [Visibilidade] Nome-Atributo [Multiplicidade]:[Tipo]=[Valor] A visibilidade indica se o atributo está disponível para ser utilizado por outras classes. Um atributo pode ser público (representado pelo símbolo +) ou privado (-). Uma terceira opção é que o atributo seja protegido (#). Neste caso, o atributo pode ser acessado somente por classes derivadas da classe a qual o atributo pertence. Depois da visibilidade, vem o nome do atributo, que deve identificar o atributo exclusivamente dentro da classe e pode vir a ser seguido da multiplicidade, usado para caso de atributos múltiplo, como vetores. A UML sugere que a primeira palavra do nome do atributo deve ser iniciar por letra minúscula e as demais, por letra minúsculas. A seguir, vem o tipo, indicando o tipo de dado que aquele atributo pode comportar (char,real,inteiro entre outros). A cada atributo pode ser atribuído a um valor inicial assim que ele é criado, sendo que esta opção irá depender da linguagem de programação usada, que deve fornecer suporte para função. Alguns exemplos de declaração de atributos para classe “Professor” seriam: -dataNasciemto: data: indica que o atributo data de nascimento é do tipo data e deve estar protegido de acesso externo. +nome: char: Indica que o nome é do tipo caracter e pode ser acessadopor métodos de outras classes. Agora, vamos falar um pouco sobre o compartimento de identificação de métodos, onde são declaradas as ações que uma classe pode desempenhar. Os métodos seguem um estilo muito próximo dos atributos: [Visibilidade]Nome-Método(Parâmetro):[Valor-de-Retorno] A visibilidade segue os mesmos critérios dos atributos. O nome do método também deve identificá-lo de forma única dentro da classe, e a primeira palavra do nome deve iniciar com letra minúscula e as demais, com letra maiúscula. Os parâmetros irão indicar as variáveis de recebimento e retorno dos métodos e valor do retorno indica se o método retorna algum valor ao término de sua execução. Alguns exemplos de métodos estão definidos a seguir: +calcularValor(va1:int, val2:int):int: função que retorna valor inteiro, e que pode ser acessado externamente. +armazenarDados(nome:char,salário:float): Método que armazena os dados enviados como parâmetro, e que pode ser acessado externamente. Na figura2, vemos um exemplo de classe para o Sistema de Controle Acadêmico, representando as disciplinas de um determinado curso. Esta classe possui três métodos. Todos os atributos foram declarados com visibilidade privada, e os métodos com visibilidade pública. Identificando classes e atributos Conforme mencionado, nesta disciplina, estamos falando de classes de domínio, sem considerar detalhes de implementação . Você pode esta se perguntando: “Como vou fazer para descobrir quais são as classes envolvidas no sistema? Onde devo procura-las?” Como vimos na aula anterior os casos de uso são utilizados para detalhar um requisito funcional, e nele vai estar descrito quais são as entidades que o sistema sendo criado vai manipular. Obviamente, este caso de uso deve estar bem escrito e detalhado num nível adequado para que seja possível obter a informação adequado a partir dele. Como vemos no sistema de controle acadêmico, é necessário manipular informação referente a professores, alunos, avaliações, entre outros. Por este motivo, estes elementos devem ser identificados como classe. Quando você quiser encontrar as classes, faça uma leituracuidadosa dos casos de uso, identificando os conceitos que são relevantes para se tornarem classes e quais são os seus atributos. Quando você estiver fazendo isso, deve aproveitar para identificar os conceitos diferentes, que são sinônimos. Por exemplo,se você, num momento, utiliza o termo aluno e, em outro , o termo estudante, procure padronizar utilizando um termo único.Para auxiliar nesta tarefa, o glossário é uma ferramenta bastante útil. Procure sempre utilizar os termos conforme estão descritos nele. Deve-se tomar bastante cuidado, também, para não confundir classes com atributos. Um erro comum que pode ocorrer é declarar um atributo como se fosse uma classe do sistema. Lembre que ambos têm diferentes níveis de complexidade. Além de todos os pontos descritos anteriormente, quando estamos identificado as classes a partir de um caso de uso, temos que tomar cuidado para não tratar cada caso de uso como subsistema. Ou seja, as classes (e posteriormente, o diagrama de classes) devem ser válidos par sistema como um todo, sendo que antes de criar uma nova classe, sempre deve ser verificado se ela já não foi definida anteriormente para um outro caso de uso. Por exemplo, vários casos de uso utilizam a classe Aluno. Entretanto, não deve ser criada uma classe aluno para cada situação, mas deve ser criada uma classe Aluno a ser usada em todo o sistema. A cada caso de uso estudado, esta classe pode sofrer alterações, de forma que contenha todos os atributos necessários para o projeto. Normalmente, não se consegue definir todas as classes envolvidas em uma primeira tentativa. Fazer a identificação das classes e dos seus atributos é um trabalho que, normalmente, passa por sucessivas refinamentos.Quando um requisito modifica,ou mesmo um caso de uso é reestruturado, as classes devem ser revisitadas de forma que sempre reflitam as mudanças que forma especificadas. Em se tratando da identificação das classes para elaboração do diagrama de classes de projeto, outras ferramentas podem ser úteis, tais como os diagramas de interação. (próximas aulas). Levantamento de Classes – Sistema de Controle Acadêmico Para ilustrar a busca de classe, vamos usar o nosso sistema de controle acadêmico. Novamente, estamos tratando do diagrama de classes em um nível de negócio, desprezado detalhes de implementação. Na Figura 3, vamos as classes “Aluno”, “Disciplina”, “Avaliação”, “Professor”, “Curso” e “NotaAluno”. Neste diagrama, foram definidas, até o momento, somente as operações básicas que são realizados pelas classes. Futuramente, veremos com obter mais detalhes sobre os métodos que devem pertencer a uma classe. O atributo “numCreditosAutorizado” da classe “Curso” indica p número máximo de créditos que o aluno de um curso pode fazer durante um semestre, e atributo “numeroCreditos” da classe “Disciplina” indica o número de créditos da disciplina individualmente. Estes campos foram atribuídos devido às validações que definidos nos casos de uso descritos. Relacionamentos entre classes Até agora, vimos o que são classes e algumas dicas sobre como identificá-los. Entretanto, o diagrama de classes não é simplesmente composto de um conjunto de classes soltas, mas, sim, de classes relacionadas. Existem diferentes formas de se efetuar o relacionamento entre classes. As três principais formas de relacionamento entre classes são: Associação, agregação e generalização. Atividades
Compartilhar