Baixe o app para aproveitar ainda mais
Prévia do material em texto
UML - Diagrama de Classes 2 Diagrama de Classes • Mostra um conjunto de classes e seus relacionamentos. • É o diagrama central da modelagem orientada a objetos. Aluno nome: Texto matrícula: Inteiro definirNome(nome) obterNome() definirMatricula(matricula) obterMatricula Turma código: Texto sala: Texto horario: Horario estaAberta() definirProfessor(professor) incluirAluno(aluno) está-matriculado-em Professor nome: Texto titulação: Texto definirNome(nome) obterNome() definirTitulacao(titulo) obterTitulacao é-ministrada-por 3 Classes • Graficamente, as classes são representadas por retângulos incluindo seu nome, atributos e métodos. • Devem receber nomes de acordo com o vocabulário do domínio do problema. • É comum adotar-se padrões para nomeá-las. – Por exemplo, todos os nomes de classes são substantivos singulares com a primeira letra maiúscula. Nome_da_classe atributo1 atributo2 ... metodo1 metodo2 metodo3 ... 4 Classes: atributos • Atributos – Representam o estado (conjunto de características) que a classe modela – Visibilidade: • + público: visível em qualquer classe de qualquer pacote • # protegido: vísivel para classes do mesmo pacote • - privado: visível somente dentro da classe – Exemplo: • + rua : String 5 Classes: métodos • Métodos – Representam o comportamento (conjunto de operações) que a classe fornece – Visibilidade: • + público: visível em qualquer classe de qualquer pacote • # protegido: vísivel para classes do mesmo pacote • - privado: visível somente dentro da classe – Exemplo: • + setEndereco(rua: String, numero: int, bairro: String): void 6 Relacionamentos • Relacionamentos – nome: descrição dada ao relacionamento (faz, tem, possui,...) – sentido de leitura do relacionamento – navegabilidade: indicada por uma seta no fim do relacionamento – navegabilidade ≠ sentido de leitura – multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7 – tipos de relacionamentos: associação (agregação, composição), generalização e dependência • Papéis – Desempenhados por classes em um relacionamento 7 Relacionamentos: Associação • Uma associação é um relacionamento estrutural que indica que os objetos de uma classe estão vinculados a objetos de outra classe. • Uma associação é representada por uma linha sólida conectando duas classes. Pessoa Empresa associação 8 Relacionamentos: Associação • Uma associação pode ter um nome. – Torna mais clara a natureza do relacionamento. • Se necessário podemos incluir um triângulo para indicar a direção de leitura do nome. – Evita ambigüidades Empresa Pessoa trabalha para associação direção do nome nome 9 Relacionamentos: Associação • Quando uma classe participa de uma associação, ela desempenha um papel nesse relacionamento. – Evidencia a finalidade ou função de cada classe da associação. – Uma mesma classe pode desempenhar vários papéis em diversas associações. Pessoa Empresaempregado nome do papel associação empregador 10 Relacionamentos: Associação • Multiplicidade é o número de instâncias de uma classe que se relacionam com uma instância de outra classe. Pessoa Empresa1..* associação multiplicidade *trabalha para 11 Relacionamentos: Associação • Indicadores de multiplicidade mais comuns: – 1 Exatamente um – 1..* Um ou mais – 0..* Zero ou mais (muitos) – * Zero ou mais (muitos) – 0..1 Zero ou um – m..n Faixa de valores (por exemplo: 4..7) Pessoa Empresa1..* associação multiplicidade *trabalha para 12 Relacionamentos: Associação • Um Estudante pode ser um aluno de uma Disciplina e um jogador da Equipe de Futebol • Cada Disciplina deve ser cursada por no mínimo 1 aluno • Um aluno pode cursar de 0 até 8 disciplinas 13 • Em geral, associações são bidirecionais. – Pode ser desejável limitar sua ”navegação” em uma única direção. – A navegabilidade é indicada por uma seta em uma das extremidades da associação. • Um cliente sabe quais são os seus endereços, mas o endereço não sabe qual é o seu cliente. Relacionamentos: Associação EndereçoCliente reside 1 * navegabilidade 14 Relacionamentos: Agregação • Uma agregação é um tipo especial de associação utilizada para indicar um relacionamento ”todo-parte”. • Uma agregação é representada por uma linha sólida com um losango vazado na extremidade referente ao todo. • O significado da agregação é inteiramente conceitual, o losango simplesmente diferencia o todo da parte. • Um objeto “parte” pode fazer parte de vários objetos “todo”. ItemPedido 1 1..* agregação todo parte 15 Relacionamentos: Composição • Em uma composição, os objetos “parte” só podem pertencer a um único objeto “todo” e têm seu tempo de vida coincidente com o dele. – É uma variante semanticamente mais ”forte” da agregação – É representada por uma linha contínua com um losango cheio na extremidade referente ao todo. TecladoNotebook FrameWindow todo parte 1 1 1 0..* 1..* 0..* errado – Quando o todo “morre” todas as suas partes também “morrem” – Apenas o todo pode criar e destruir as partes 16 Relacionamentos: Composição Janela Scroll Título Corpo 1 0..12 1 Empresa Departamento Escritório 1 1..*1..* 0..1 * 17 Agregação x Composição 18 Relacionamentos: Dependência • Uma dependência é um relacionamento de utilização entre dois itens, no qual a alteração de um (o item independente) pode afetar o outro (o item dependente). – É representada por uma linha tracejada com uma seta apontando para o item independente. • A classe cliente não declara nos seus atributos um objeto do tipo fornecedor. cliente fornecedor 19 Relacionamentos: Dependência Import java.awt.Graphics; class HelloWorld extends java.applet.Applet { public void paint (Graphics g) g.drawString(“Hello, world!”, 10, 10); } HelloWorld Graphics paint(Graphics g) Applet 20 Relacionamentos: Generalização • Uma generalização é um relacionamento entre itens gerais (superclasse) e itens mais específicos (subclasses). – É representada por uma linha sólida com um triângulo vazado apontando para o item mais geral. “é um” “é um tipo de” superclasse subclasse Veículo Terrestre Automóvel Caminhão 21 O Blog (exemplo) • Um blog tem um título e uma data de criação e além disso é um conjunto de conteúdos. • Estes conteúdos podem ser notas ou comentários sobre as notas. Tanto notas quanto comentários têm características comuns como o texto e a data de sua criação. • Todo usuário possui: – E-mail (deve ser único, ou seja, não há mais de um usuário com o mesmo e-mail) 22 Blog: o sistema deve... • Permitir a criação de blogs • Permitir a utilização de blogs – Qualquer usuário pode ler conteúdos – Somente o dono do blog pode criar notas – Qualquer usuário pode criar comentários. Para criar um comentário o usuários precisa ler as notas. – Somente o dono do blog pode remover conteúdos. Para remover um conteúdo ele precisará ler o conteúdo. Caso ele remova um comentário, o autor do comentário deve ser notificado por e-mail. 23 Blog: Diagrama de Classes 0..* 1 autor 0..* 0..* 1 dono 0..* 1 usuario 0..* usaUsuarioBlog -email:String +notificarExclusao:void Conteudo -dtCriacao:Date -texto:String -autor:UsuarioBlog +Conteudo +exibirConteudo:void Blog -dtCriacao:Date -titulo:String -dono:UsuarioBlog -conteudos:Vector +criarNota:void +exibirConteudo:void +comentar:void +lerComentarios:Vector +removerConteudo:void +lerNotas:Vector +Blog Nota -comentarios:Vector-attribute1:int +comentar:void +lerComentarios:Vector +finalize:void Comentario +finalize:void 24 Sistema de Matrícula (exemplo) • A Universidade XYZ deseja informatizar seu sistema de matrículas: • A universidade oferece vários cursos. • O Coordenador de um curso define as disciplinas que serão oferecidas pelo seu curso num dado semestre. • Várias disciplinas são oferecidas em um curso. • Várias turmas podem ser abertas para uma mesma disciplina. • Estudantes selecionam 4 disciplinas preferenciais e 2 alternativas. • Quando um estudante matricula-se para um semestre, o Sistema de Registro Acadêmico (SRA) é notificado. • Após a matrícula, os estudantes podem, por um certo prazo, utilizar o sistema para adicionar ou remover disciplinas. • Professores usam o sistema para obter a lista de alunos matriculados em suas disciplinas. • Todos os usuários do sistema devem ser validados. 25 “Matricular em Disciplina” • Esse cenário se inicia quando o Estudante de Curso inicia uma sessão no sistema e apresenta suas credenciais. • O sistema verifica se a credencial é válida. • O sistema solicita que o estudante realize sua matrícula, selecionando 4 disciplinas preferenciais e 2 alternativas. • O estudante preenche um formulário eletrônico de matrícula e o submete para uma análise de consistência. • O sistema analisa as informações contidas no formulário. • Se as informações são consistentes, o estudante é incluído em turmas abertas de 4 disciplinas, iniciando pelas preferenciais. • Se as informações não são consistentes, o sistema informa o motivo da inconsistência e solicita que o formulário seja alterado. 26 Diagrama de Classe Professor Coordenador Estudante TurmaUniversidade Disciplina FormularioMatricula Curso AnalisadorMatricula SistemaRegistroAcademico ListaAlunos 27 Diagrama de Classe Professor Coordenador Estudante Turma Disciplina FormularioMatricula AnalisadorMatricula é-preenchido-por está-matriculado-em é-processado-por é-ministrada-por é-definida-por aluno gerencia 1 1 10..* 1 0..* 11..* 1 1..* 10..33..10 4 28 Diagrama de Classe • Atributos podem ser encontrados examinando-se as descrições dos casos de uso e também pelo conhecimento do domínio do problema. • Cada turma oferecida possui um código, uma sala e um horário. Turma código sala horário 29 Diagrama de Classe Coordenador FormularioMatricula AnalisadorMatricula é-preenchido-por está-matriculado-em é-processado-por é-ministrada-por é-definida-por aluno gerencia 1 1 10..* 1 0..* 11..* 1 1..* 10..33..10 4 Turma código sala horário Professor nome titulação Estudante nome matricula Disciplina nome numCréditos 30 Diagrama de Seqüência • Detalhes e elementos descobertos durante a criação dos diagramas de interação são acrescentados ao diagrama de classe. : SIM : AnalisadorMatricula 2: adicionar(a,d ) 1: submeterFormulario(f) SIM submeterFormulario(formulario) AnalisadorMatricula adicionar(aluno, disciplina) 31 Diagrama de Classe public class Turma { private Estudante alunos[]; public Turma() { } } public class Estudante { // Turma não aparece como atributo! public Estudante() { } } TurmaEstudante 3..10 4 está-matriculado-em 3..10 4 • Acrescentando navegabilidade 32 Diagrama de Classe • Acrescentando dependências. • Existe um relacionamento de dependência entre duas classes quando: – uma classe utiliza outra somente como parâmetro de entrada na assinatura de ao menos uma de suas operações. – uma classe utiliza outra somente como variável local de ao menos um de seus métodos. Estudante nome : Texto matricula : Inteiro definirNome(nome) obterNome() definirMatricula(matricula) obterMatricula() Disciplina nome : Texto numCreditos : Inteiro estaCompleta() adicionar(aluno : Estudante) 33 Modelo de Classes de Projeto • Acrescentando generalizações. • Atributos, operações e/ou relacionamentos comuns podem ser movidos para uma classe mais geral. Estudante matricula : Inteiro definirMatricula(matricula) obterMatricula() Usuario nome : Texto definirNome(nome) obterNome() Professor titulacao : Texto definirTitulacao(titulacao) obterTitulacao() 34 Diagrama de Classe SIM Usuario nome : Texto definirNome(nome) obterNome() FormularioMatricula obterEstudante() : Estudante obterNomeDIsciplina(i : Inteiro) : Texto Estudante matricula : Inteiro definirMatricula(matricula) obterMatricula() 1 1 é-preenchido-por 1 1-aluno Professor titulacao : Texto definirTitulacao(titulacao) obterTitulacao() AnalisadorMatricula adicionar(aluno, disciplina) 1 11 1 usa 10..* 10..* é-processado-por Disciplina nome : Texto numCreditos : Inteiro estaCompleta() adicionar(aluno : Estudante) 0..* 1 0..* 1 gerencia Turma codigo : Texto sala : Texto horario : Horario numAlunos : Inteiro completa : Booleano estaCompleta() : Booleano 3..10 4 3..10 4 está-matriculado-em 0..3 10..3 1 responsável-por 1..* 11 1..* Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34
Compartilhar