Aula01 Diagrama Classes

39
UML: Diagrama de Classes Projeto de Sistemas de Software

Transcript of Aula01 Diagrama Classes

UML: Diagrama de Classes

Projeto de Sistemas de Software

UML Diagrama de Classes Introduo Diagrama de classes Elementos do diagrama de classes Exemplo: Sistema de matrcula

LES/PUC-Rio

Introduo - Diagrama de Classes Mostra um conjunto de classes e seus relacionamentos. o diagrama central da modelagem orientada a objetos.

Turma est-matriculado-em cdigo: Texto sala: Texto horario: Horario -ministrada-por

Aluno nome: Texto matrcula: Inteiro definirNome(nome) obterNome() definirMatricula(matricula) obterMatricula

estaAberta() definirProfessor(professor) incluirAluno(aluno)

Professor nome: Texto titulao: Texto definirNome(nome) obterNome() definirTitulacao(titulo) obterTitulacao

LES/PUC-Rio

Elementos Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associao Agregao Composio

Generalizao Dependncia

LES/PUC-Rio

Elementos Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associao Agregao Composio

Generalizao Dependncia

LES/PUC-Rio

Elementos Diagrama de ClassesClasses Graficamente, as classes so representadas por retngulos incluindo nome, atributos e mtodos.Nome_da_classe atributo1 atributo2 ... metodo1 metodo2 metodo3 ...

Devem receber nomes de acordo com o vocabulrio do domnio do problema. comum adotar um padro para nome-las Ex: todos os nomes de classes sero substantivos singulares com a primeira letra maiscula LES/PUC-Rio

Elementos Diagrama de ClassesClasses Atributos Representam o conjunto de caractersticas (estado) dos objetos daquela classe Visibilidade:

+ pblico: visvel em qualquer classe de qualquer pacote # protegido: visvel para classes do mesmo pacote - privado: visvel somente para classe Exemplo: + nome : String

LES/PUC-Rio

Elementos Diagrama de ClassesClasses Mtodos Representam o conjunto de operaes (comportamento) que a classe fornece Visibilidade:

+ pblico: visvel em qualquer classe de qualquer pacote # protegido: visvel para classes do mesmo pacote - privado: visvel somente para classe Exemplo: - getNome() : String

LES/PUC-Rio

Elementos Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associao Agregao Composio

Generalizao Dependncia

LES/PUC-Rio

Elementos Diagrama de ClassesRelacionamentos Os relacionamentos possuem: Nome: descrio dada ao relacionamento (faz, tem, possui,...) Sentido de leitura Navegabilidade: indicada por uma seta no fim do relacionamento Multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7 Tipo: associao (agregao, composio), generalizao e dependncia Papis: desempenhados por classes em um relacionamento

LES/PUC-Rio

Elementos Diagrama de Classes Relacionamentos

nome multiplicidade sentido de leitura

Pessoa

1..*

trabalha para

*

empregado

empregador

Empresa

Tipo: associao

papis

E a navegabilidade?

LES/PUC-Rio

Elementos Diagrama de Classes Relacionamentos

navegabilidade

Cliente

reside

1

*

Endereo

O cliente sabe quais so seus endereos, mas o endereo no sabe a quais clientes pertence

LES/PUC-Rio

Elementos Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associao Agregao Composio

Generalizao Dependncia

LES/PUC-Rio

Elementos Diagrama de ClassesRelacionamentos: Associao Uma associao um relacionamento estrutural que indica que os objetos de uma classe esto vinculados a objetos de outra classe. Uma associao representada por uma linha slida conectando duas classes.

Pessoaassociao

Empresa

LES/PUC-Rio

Elementos Diagrama de ClassesRelacionamentos: Associao Indicadores de multiplicidade: 1 1..* 0..* * 0..1 m..n Exatamente um Um ou mais Zero ou mais (muitos) Zero ou mais (muitos) Zero ou um Faixa de valores (por exemplo: 4..7)multiplicidade

Pessoa

1..*

trabalha para

*

Empresa

associao LES/PUC-Rio

Relacionamentos: AssociaoRelacionamentos: Associao Exemplo: Um Estudante pode ser um aluno de uma Disciplina e um jogador da Equipe de Futebol Cada Disciplina deve ser cursada por no mnimo 1 aluno Um aluno pode cursar de 0 at 8 disciplinas

LES/PUC-Rio

Elementos Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associao Agregao Composio

Generalizao Dependncia

LES/PUC-Rio

Elementos Diagrama de Classes Relacionamento: Agregao um tipo especial de associao Utilizada para indicar todo-parte

todo

parte

Pedidoagregao

1

1..*

Item

um objeto parte pode fazer parte de vrios objetos todo

LES/PUC-Rio

Elementos Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associao Agregao Composio

Generalizao Dependncia

LES/PUC-Rio

Elementos Diagrama de Classes Relacionamento: Composio uma variante semanticamente mais forte da agregao Os objetos parte s podem pertencer a um nico objeto todo e tm o seu tempo de vida coincidente com o dele

Notebook Window1..*

1 1

1 0..* 0..*

Teclado Frameerrado

Quando o todo morre todas as suas partes tambm morrem

LES/PUC-Rio

Elementos Diagrama de Classes Relacionamento: Composio Ex:Empresa 1 0..1 1..* Departamento * Janela 1 2 Scroll 0..1 Ttulo 1 Corpo 1..* Escritrio

LES/PUC-Rio

Elementos Diagrama de Classes Agregao X Composio

Sala1 ..n 1

Mesa

Andar

1 ..n

Edifcio

LES/PUC-Rio

Elementos Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associao Agregao Composio

Generalizao Dependncia

LES/PUC-Rio

Elementos Diagrama de Classes Relacionamento: Generalizao um relacionamento entre itens gerais (superclasses) e itens mais especficos (subclasses)

superclasse um um tipo de subclasse

Veculo

Terrestre

Areo

LES/PUC-Rio

Elementos Diagrama de Classes Elementos de um diagrama de classes Classes Relacionamentos Associao Agregao Composio

Generalizao Dependncia

LES/PUC-Rio

Elementos Diagrama de Classes Relacionamento: Dependncia Representa que a alterao de um objeto (o objeto indepedendente) pode afetar outro objeto (o objeto dependente)

Ex:

cliente

fornecedor

Obs: A classe cliente depende de algum servio da classe fornecedor A mudana de estado do fornecedor afeta o objeto cliente A classe cliente no declara nos seus atributos um objeto do tipo fornecedor Fornecedor recebido por parmetro de mtodo LES/PUC-Rio

Exemplo: Sistema de MatrculaDescrioA Universidade XYZ deseja informatizar seu sistema de matrculas: A universidade oferece vrios cursos. O Coordenador de um curso define as disciplinas que sero oferecidas pelo seu curso num dado semestre. Vrias disciplinas so oferecidas em um curso. Vrias turmas podem ser abertas para uma mesma disciplina, porm o nmero de estudantes inscritos deve ser entre 3 e 10. Estudantes selecionam 4 disciplinas. Quando um estudante matricula-se para um semestre, o Sistema de Registro Acadmico (SRA) notificado. Aps a matrcula, 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 usurios do sistema devem ser validados. LES/PUC-Rio

Exemplo: Sistema de MatrculaDiagrama de Casos de Uso

LES/PUC-Rio

Exemplo: Sistema de MatrculaDescrio do Caso de Uso Matricular em Disciplina Esse caso de uso se inicia quando o Estudante de Curso inicia uma sesso no sistema e apresenta suas credenciais. O sistema verifica se a credencial vlida. O sistema solicita que o estudante realize sua matrcula, selecionando 4 disciplinas. O estudante preenche um formulrio eletrnico de matrcula e o submete para uma anlise de consistncia. O sistema analisa as informaes contidas no formulrio. Se as informaes so consistentes, o estudante includo em turmas abertas de 4 disciplinas, iniciando pelas preferenciais. Se as informaes no so consistentes, o sistema informa o motivo da inconsistncia e solicita que o formulrio seja alterado.

LES/PUC-Rio

Exemplo: Sistema de MatrculaDiagrama de Classes: identificando as classes

Professor

Coordenador

Estudante

Universidade

Disciplina

Turma

Curso

FormularioMatricula

AnalisadorMatricula

SistemaRegistroAcademico

ListaAlunos

LES/PUC-Rio

Exemplo: Sistema de MatrculaDiagrama de Classes: identificando os relacionamentos Exemplos de candidatos a relacionamentos: A parte fsica ou lgica de B. A est contido fisicamente ou logicamente em B. A uma descrio de B. A membro de B. A subunidade organizacional de B. A usa ou gerencia B. A se comunica/interage com B. A est relacionado com uma transao B. A possudo por B. A um tipo de B.

LES/PUC-Rio

Exemplo: Sistema de MatrculaDiagrama de Classes: identificando os relacionamentos

O formulrio de matrcula processado por um analisador de matrculaFormularioMatricula-processado-por 0..* 1

AnalisadorMatricula

O analisador de matrcula gerencia a disciplinaFormularioMatricula-processado-por 0..* 1

AnalisadorMatricula1

0..*

Disciplina

LES/PUC-Rio

Exemplo: Sistema de MatrculaDiagrama de Classes

FormularioMatricula1

-processado-por 0..* 1

AnalisadorMatricula1 gerencia 0..*

-preenchido-por

Disciplina1

-definida-por 1..* 1

Coordenador

aluno

1 est-matriculado-em 3..10 4

1..*

Estudante

Turma

-ministrada-por 0..3 1

Professor

LES/PUC-Rio

Exemplo: Sistema de MatrculaDiagrama de Classes: identificando os atributos Os atributos podem ser encontrados examinando-se as descries dos casos de uso e tambm pelo conhecimento do domnio do problema.

Cada turma oferecida possui um cdigo, uma sala e um horrio.

Turma cdigo sala horrio

LES/PUC-Rio

Exemplo: Sistema de MatrculaDiagrama de Classes

FormularioMatricula1

-processado-por 0..* 1

AnalisadorMatricula1 gerencia 0..*

Disciplina-preenchido-por

nome 1..* numCrditos1 1..*

-definida-por 1

Coordenador

aluno

1

Turmaest-matriculado-em 4

Estudante

nome 3..10 matricula

cdigo sala horrio

-ministrada-por 0..3 1

Professor nome titulao

LES/PUC-Rio

Exemplo: Sistema de MatrculaDiagrama de Classes: identificando os mtodos Somente depois de modelar os diagramas de seqncia

: SIM

: AnalisadorMatricula

AnalisadorMatriculaadicionar(aluno, disciplina)

1 submeterFormulario(f) :

1 adicionar(a,d ) :

SIMsubmeterFormulario(formulario)

LES/PUC-Rio

Exemplo: Sistema de MatrculaDiagrama de Classes:

E a navegabilidade?

Estudante

est-matriculado-em3..10 4

Turma

public class Estudante { private String nome; private String matricula; ... }

public class Turma { private String codigo; private String sala; private Estudante alunos[]; ... }

OBS: Turma no aparece como atributo de Estudante! LES/PUC-Rio

Exemplo: Sistema de MatrculaDiagrama de Classes:

Acrescentando generalizaes: Atributos, operaes e/ou relacionamentos comuns podem ser movidos para uma classe mais geral.Us uarionome : Texto definirNome(nome) obterNome()

Estudantematricula : Inteiro definirMatricula(matricula) obterMatricula()

Professortitulacao : Texto definirTitulacao(titul acao) obterTitulacao()

LES/PUC-Rio

Exemplo: Sistema de MatrculaFormularioMatriculaobterEstudante() : Estudante obterNomeDIsciplina(i : Inteiro) : Texto1 1* ..

-processado-por

AnalisadorMatricula1 adicion ar(alun o, di scipli na) 1 1

usa1

SIM

-preenchido-por -aluno1

gerencia

Estudantematricula : Inteiro definirMatricula(matricula) obterMatricula()

1 ..*

Disciplinanome : Texto numCreditos : Inteiro11 .. 1

estaCompleta() adicionar(aluno : Estudante)1

est-matriculado-em

Usuarionome : Texto definirNome(nome) obterNome()

1 ..*

Turmacodigo : Texto sala : Texto 1 horario : Horario numAlunos : Inteiro completa : Booleano1

Professortitulacao : Texto definirTitulacao(titulacao) obterTitulacao()11 ..

responsvel-por

estaCompleta() : Booleano

LES/PUC-Rio