Prévia do material em texto
Diagrama Objetivo • Representar Classes em um Diagrama • Representar Atributos e Operações • Representar Relacionamentos - Associação - Agregação - Herança Diagramas de Classes • Descrevem a ESTRUTURA do sistema • São formados por : - Classes - Atributos - Operações - Relações O que são Classes ? • São Definições Abstratas dos Objetos ; • Objetos é uma instância de uma Classe ; • Classes são “Fábricas de Objetos” • As Classes são implementadas em software • Os Objetos são criados na memória do computador em tempo de execução • Ex.: - A Classe dos AUTOMÓVEIS, o Objeto : FUSCA - A Classe dos FUSCAS, o objeto : São Paulo CXS 2345 Definição de Objeto • Todo Objeto possui : - uma IDENTIDADE ; - um ESTADO ; - um COMPORTAMENTO • Um Objeto existe, guarda informação e possui um comportamento. Onde estão as Classes ? • No sujeitos da descrição do problema : - Ex.: A fita é alugada • Nas situações, tipos : - Ex.: O aluguel da fita • Nos papéis : - Ex.: O funcionário é um gerente Exemplos de representações na UML Pessoa Definição de Atributo • Um Atributo guarda uma informação • Atributo é um dado associado a uma classe • Atributos são qualidades das classes • Os atributos possuem tipo e valor • O conjunto de valores dos atributos definem o estado da classe • Os atributos são alterados pelas operações (Preferencialmente internas às classes) Notação na UML Visibilidade Nome : Tipo = valor_inicial Ou : Nome Nome : Tipo Visibilidade Nome : Tipo Visibilidades + público pode ser visto fora do limite da classe - Privado só pode ser visto dentro do limite da classe # Protegido privado, mas é publico entre classes amigas (pacote) Estilo dos Atributos • Não usar nomes sem significado • Podem ser usados prefixos e sufixos para facilitar o entendimento • Evitar : nome1, nome2, cor1, cor2 ... • Não economizar nas teclas : Ex.: NomeDoFuncionarioPublicoAposentado Definição de Operação • Representa um comportamento da Classe • Uma operação é um comportamento assumido pela classe para o sistema • Atua sobre os atributos da classe, ou • Envia uma mensagem para outra classe Notação na UML Visibilidade Nome (Lista-de-parâmetros) : retorno {propriedades} Visibilidade + pública pode ser vista fora do limite da classe – privada só pode ser vista dentro do limite da classe # protegida privada, mas é publica entre classes amigas (pacote) Lista de Parâmetros e Retorno • Lista-de-parâmetros Contém parâmetros separados por virgulas cuja sintaxe é semelhante a dos atributos : visibilidade nome:tipo=valor_inicial • Retorno Indica o Tipo (String, Integer, ...) do valor de retorno da Operação Propriedades Valores de propriedade que se aplicam ao elemento, podendo ser: - Classificação – declara a categoria da operação : . Construtoras, Seletoras, Modificadoras, De iteração, Destrutivas - Pré-condição – declara uma condição que deve ser satisfeita para uma transformação correta. - Pós-condição – declara uma condição que assegura que a transformação aconteceu corretamente. - Concorrência – declara se a operação é uma operação seqüencial ou simultânea. - Transformação – declara a fórmula ou expressão da operação. - Estereótipo – declara o tipo descritivo da operação. Identificando as Operações • As operações são ações na descrição do sistema, • Procura-se as responsabilidades • Procurar as funções que o sistema deve realizar e quem a realiza • Operações padrões de criação e destruição da classe vão aparecer na fase de projeto Exemplos - Alugar fita - Retornar fita - Solicitar confirmação Evitar usar nomes ruins (muito genéricos) - Processar ... - Executar ... - Fazer ... Relacionamentos • Os sistemas são formados por conjuntos de classes trabalhando juntas • O processamento é realizado em conjunto • As afinidades entre as classes são expressas nos relacionamentos - Afinidades semânticas (Associação) - Posse entre classes (Agregação /Composição) - Famílias de classes (Generalização/especificação) Associação • O significado de uma classe está ligado (associado) ao significado da outra classe; • Mostra uma relação semântica entre as classes; • As classes tem uma existência própria, são independentes; Ex.: ”Um cliente pode alugar várias fitas de vídeo.” Nome e Papel da associação • O nome de uma associação mostra a afinidade, • O papel da classe é o nome que ela assume na relação • Pode-se construir uma frase com : Classe1, NomePapel1, NomePapel2, Classe2 Empresa, a fornecedora, vende produto Multiplicidade • Indica o número de cardinalidade (ocorrências) que a classe pode assumir • Notação : limite_inferior .. Limite_superior asterisco (*) indica ilimitado • Exemplos: 0..1 1 * 0..* 1,2,3 Multiplicidade - resumo 0 Zero 0..1 Zero ou Um 0..* Zero ou Muitos 1 Um 1..* Um ou Muitos 1..2 Um ou Dois 3 Exatamente 3 * Muitos Exemplo de Multiplicidade Restrições • Expressa uma condição • É colocada entre chaves ligada aos elementos Fornecedor Vende Comprador Compra * 0..* 1 * {ou} Navegabilidade • Uma associação é bidirecional; • Pode-se adotar a navegabilidade do NOME adotado • A empresa tem a responsabilidade de informar quais produtos vende, mas um produto não possui a habilidade de responder a qual empresa pertence Vende Qualificador • O Qualificador reduz a Multiplicidade • Para aquele CODIGO_PRODUTO a empresa só vende um do produto CODIGO_PRODUTO Vende 1 Agregação • É uma forma de relacionamento que indica uma ligação forte de posse entre as classes; Agregação Regular • Uma classe é composta pelas outras classes que são suas partes; Agregação de Composição • Notação : Todo’:’Parte TODO PARTE TODO PARTE Agregação Regular • É o relacionamento “parte de”. Carro Rodas 4 Tela Botão OK Campos Agregação de Composição • O objeto parte pode pertencer a somente um todo; • Qualquer REMOÇÃO do todo, tem efeito cascata nas partes; Carro Motor possui Quando usar uma agregação ? • Quando se encontra uma composição ou decomposição na descrição do sistema. • Quando há frases do tipo : - A é formado de B - B é parte de A - A possui B • Há uma dependência de existência. • B não existe sem A. Diferença entre Agregação e Associação Neste contexto : O Motor só existe em conjunto com o carro, O carro é composto pelo Motor. O Motorista pode existir sem o Carro. Carro Motor Motorista Dirige Possui Relacionamento de Herança • Mostra uma relação entre um elemento mais geral para um mais específico • O elemento mais específico agrega mais informações do que o elemento mais geral • A relação aplica-se a classes, pacotes, Casosde Usos e outros elementos Notação da Herança • Notação subtipo : supertipo Formas Polígono Elipse ... ( ... ) Indica que existem outras subclasses Herança • A classe “filha” herda os atributos, operações e relacionamentos da classe “mãe” • Não existe nome nem multiplicidade na relação Mãe Filha Quando usar a Herança ? • Pergunta : A classe filha é do tipo da mãe ? • Quando existe uma hierarquia entre as classes • Quando existe uma classificação (tipos) • Frases : A é do tipo B, B é um A. • Para reaproveitar definições e para simplificar o projeto • Para criar variações de uma classe Como ficam as novas Operações? • A classe Mãe possui as operações OP1 e OP2 • A classe filha possui as operações OP1, OP2* e OP3 • A operação OP2 (mesmo nome) é sobrescrita (override) na classe filha Mãe OP1 OP2 Filha OP3 OP2* Exemplo de Herança CONTAS Poupança Corrente Generalização/Polimorfismo • A função Print() nas classes filhas possui a mesma chamada, mas responde diferente; • Assim, quem chama esta operação não precisa se importar em como ela vai processar; • A interface das classes devem ser estáveis (iguais) Herança de Relacionamento • O gerente é um funcionário • Todo funcionário tem direito a convenio, o gerente também • Só os gerentes tem direito a celular Exemplo de Generalização Veículo À Vela Motorizado Terrestre Aquático Trator Veleiro Diferença entre Herança e Agregação Documento Um documento contém uma imagem. Se o documento deixar de existir a imagem também deixa A imagem pode ser uma Figura ou um desenho. Para a agregação elas se comportam como uma classe única Conclusão • A modelagem deve refletir o sistema real • Deve-se selecionar nomes e termos representativo • Busca-se uma estrutura estável (duradoura) para construir a solução • A UML apresenta uma notação rica que pode variar no grau de detalhes