·
Cursos Gerais ·
Linguagens de Programação
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
58
Modelagem de Sistemas: Modelo de Casos de Uso
Linguagens de Programação
UENP
1
Aplicações da Programação Funcional: Conceitos e Exemplos Práticos
Linguagens de Programação
UENP
33
Introdução ao Planejamento de Projetos - UFF
Linguagens de Programação
UENP
32
Principais habilidades e conceitos em Java: Classe Vehicle
Linguagens de Programação
UENP
2
Especificação do Trabalho de Programação II - Desenvolvimento de Software com Java FX e PostgreSQL
Linguagens de Programação
UENP
1
Avaliação 5 - Programação Concorrente e Paralela
Linguagens de Programação
UENP
2
Especificação do Trabalho: Desenvolvimento de Programa Orientado a Objetos em Java FX
Linguagens de Programação
UENP
1
Diagrama de Classes da Locadora
Linguagens de Programação
UENP
1
Certificado de Conclusão - Criando Robôs com Python
Linguagens de Programação
UENP
Texto de pré-visualização
Modelagem de Classes Diagrama de Classes de Análise Prof Maurício M Arimoto mauriciouenpedubr Fevereiro2022 Modelagem de Classes Os casos de uso fornecem uma perspectiva do sistema de um ponto de vista externo do ator Internamente os objetos colaboram para atender às funcionalidades do sistema O Diagrama de classes modela a colaboração das classes de um sistema seus atributos e operações e como elas se relacionam Modelagem de Classes O diagrama de classes é o principal artefato de um projeto OO Descreve todas as classes envolvidas no projeto Pode ser comparado a uma planta baixa em projeto de uma casa Mostra toda a estrutura do projeto Transformar os requisitos descritos ex casos de uso ou user stories em classes que são à base do sistema Contextualizando Paradigma OO O processo ser informatizado é visto como um conjunto de objetos que interagem para realizar as funções Objetos análogos aos objetos do mundo real Objetos e Classes Os Objetos são instâncias de classes exemplares É através deles que praticamente todo o processamento ocorre em sistemas OO Todo objeto é uma instância de uma classe Objetos e Classes Objetos com características similares são agrupados em classes Uma classe é uma estrutura que possui dados atributos e comportamento métodos a fim de fornecer um modelo do qual podese criar vários objetos Cada objeto de uma classe diferenciase do outro por meio do valor de seus atributos Objetos e Classes Figura Classes e Objetos Princípios Básicos Abstração Encapsulmanto Polimorfismo Herança Diagrama de Classes Representa os tipos de classes de objetos de um sistema Propriedades Funcionalidades providas Relacionamentos Pode ser mapeado diretamente para uma linguagem OO Atributos de uma Classe Representam um conjunto de informações ou seja elementos de dados que caracterizam um objeto Representam o conjunto de características estado dos objetos daquela classe Cada objeto possui seu próprio conjunto de atributos Atributos de uma Classe Notação da UML para atributos visibilidade nome tipo valorinicial Exemplos nome string idade int Métodos de uma classe Realizar algumas açõesoperações com os objetos Definem as funcionalidades de uma classe Manipulam os atributos do objeto alteração do estado do objeto Métodos de uma Classe Notação UML para métodos visibilidade nomeparâmetros tiporetorno proriedades Exemplos definirNomenomeString String exibirNome void Inclusão de Métodos nas Classes Devese evitar incluir Métodos enviados à coleções dependem da implementação Método criar linguagem OO provê o criador Métodos de acesso a atributos assumese que cada atributo tem necessariamente esses métodos Visibilidade de Atributos e Métodos A propriedade de visibilidade serve para implementar o encapsulamento da estrutura interna da classe Visibilidade Símbolo Significado Público Atributos ou métodos públicos podem ser acessados por qualquer outra classe Protegido Atributos ou métodos podem ser acessados apenas por classes da mesma hierarquia ou do mesmo pacote Privado Atributos ou métodos privados só podem ser acessados dentro da classe Perspectivas do Diagrama de Classes O diagrama de classes evolui com o sistema e pode ter diferentes perspectivas Na análise identificamos classes no domínio do problema No projeto pensamos em classes para a solução Níveis de Abstração Figura Notação para uma classe na UML Figura Níveis de abstração na notação de classe Identificando as classes Ponto de partida Tomando por base os requisitos iniciais do usuário O Modelo de casos de uso ou User Stories Identificando as classes Identificando as classes Alguns especialistas sugerem como estratégia ler documentos procurando por substantivos Exemplo Seja o seguinte exemplo de uma descrição de um domínio de locação de automóveis Clientes locam carros Potenciais classes Cliente e Carro E locação É um evento de negócio importante que precisa ser lembrado Identificando as classes Elementos que devem ser considerados como candidatos a classes Agentes entidades do domínio do problema que têm a capacidade de agir com intenção de atingir uma meta físicos tipicamente pessoas e sociais organizações unidades organizacionais sociedades etc Identificando as classes Elementos que devem ser considerados como candidatos a classes Objetos entidades sem a capacidade de agir mas que fazem parte do domínio de informação do problema físicos pex carros livros imóveis sociais pex cursos disciplinas leis objetos de caráter descritivo pex modelos de carro Identificando as classes Elementos que devem ser considerados como candidatos a classes Eventos a ocorrência de ações no domínio do problema que precisam ser registradas e lembradas pelo sistema Exemplo Em um sistema de locação de automóveis são potenciais classes de eventos Locação Devolução e Reserva Por outro lado a ocorrência de eventos cadastrais cadastros de clientes e carros não precisa ser lembrada Identificando as classes Checklist Objetos físicos ou tangíveis Livro Leitor Carro Especificação de Projetos ou descrição de coisas Categoria de Livro Especificação de Produto Lugares Biblioteca Sala de Aula Transações Emprestimo Reserva Locação Linha de Itens de Transações Item de Emprestimo Item de Venda Papéis desempenhados por pessoas Atendente Chefe de Biblioteca Contêineres de outras coisas Estante Armário Coisas em um contêiner Cópia de Livro Revista Catálogos Catálogo de Livros de Revistas etc Relacionamento entre Classes Relacionamentos básicos Associação GeneralizaçãoEspecialização AgregaçãoComposição Outros relacionamentos dependência Relacionamento entre Classes Associação Associação é um relacionamento entre classes que precisa ser lembrado pelo sistema durante seu funcionamento Exemplo existe uma associação entre Empréstimo e Leitor que precisa ser lembrada pelo sistema pois quando o Empréstimo termina o Leitor deve ter sua situação regularizada Relacionamento entre Classes Como Identificar associações Algumas regras básicas Regra 1 Uma classe que fisicamente ou logicamente faz parte de outro Exemplo um Exemplar logicamente faz parte do Empréstimo Relacionamento entre Classes Como Identificar associações Regra 2 Uma classe que serve para descrever ou qualificar outro conceito Exemplo um Livro pode ser classificado em diversas Categorias ou por Autor Relacionamento entre Classes Como Identificar associações Regra 3 Uma classe que é responsável por registrar ou manter informações sobre outra Exemplo O Atendente é quem registra e atende o Leitor A Bibliotecária é responsável pelos Livros Relacionamento entre Classes Como Identificar associações Associações na UML Relacionamento entre Classes Como Identificar associações Associações na UML Associações na UML Multiplicidade Multiplicidade Significado 1 Exatamente uma 0 Zero ou mais 1 Um ou mais 01 Zero ou uma 247 Faixa específica 2 4 ou 7 Associações na UML Navegabilidade Uma associação bidirecional indica que há um conhecimento mútuo entre objetos associados Figura Associação bidirecional Associações na UML Navegabilidade Uma associação unidirecional indica que os objetos de uma classe C conhecem os objetos de uma classe D O contrário não é válido Figura Associação unidirecional Associações na UML Associações Nárias Associações Nárias também são possíveis Associações na UML Associação Reflexiva Associações na UML Classe Associativa Quando uma relação associativa possui atributos próprios pode ser transformada em Classe Associações na UML Uma operação transação não deve ser modelada como associação GeneralizaçãoEspecialização Herança Permite que características comuns a diversos tipos sejam colocadas em um tipo base supertipo Cada subtipo apresenta as características do supertipo e acrescenta a ele novas características Dizemos que um subtipo herda todas as propriedades do supertipo e acrescenta suas características próprias e exclusivas As propriedades do supertipo não precisam ser repetidas em cada subtipo GeneralizaçãoEspecialização Herança GeneralizaçãoEspecialização Herança Figura Exemplo de herança GeneralizaçãoEspecialização Herança Múltipla Figura Exemplo de herança Agregação Mecanismo pelo qual um objeto inclui atributos e comportamento de outros objetos a ele agregados Indica a existência de um todo composto por partes AgregaçãoAgregação Simples É uma associação com a semântica de contém Serve como uma relação todoparte fraca O todo existe sem as partes e viceversa A parte pode ser agregada por vários todos AgregaçãoAgregação Simples É uma associação com a semântica de contém Serve como uma relação todoparte fraca O todo existe sem as partes e viceversa A parte pode ser agregada por vários todos Agregação Composta ou Composição É uma associação com a semântica de é composto de Serve como uma relação todoparte forte O todo não existe sem as partes As partes pertencem a somente um todo A remoção do todo implica na remoção das partes Agregação Composta ou Composição É uma associação com a semântica de é composto de Serve como uma relação todoparte forte O todo não existe sem as partes As partes pertencem a somente um todo A remoção do todo implica na remoção das partes Agregação simples X Composição Agregação versus Composição na UML Agregação simples X Composição Considerações No exemplo anterior poderia ser usado associações comuns No entanto ao especificar que universidade é um todo e que aluno é uma de suas partes fica claro qual deles é organizacionalmente superior ao outro Assim as universidades são definidas de alguma forma pelos seus alunos De forma semelhante os alunos não existem fora da universidade a que pertencem Agregação simples X Composição Diferenças importantes Na composição não é necessário definir a multiplicidade no lado do todo pois a parte está apenas no objeto específico do todo por isso a multiplicidade é sempre 1 um Na agregação nem sempre a parte coincide com o tempo de vida do todo Além disso podese existir multiplicidade maiores que 1 no lado do todo Se o todo é destruído não necessariamente a parte é destruída Agregação simples X Composição Considerações Muitas vezes pode ser difícil perceber a diferença entre uma agregaçãocomposição e uma associação comum Quando houver essa dúvida é melhor representar a situação usando uma associação comum tendo em vista que ela impõe menos restrições Outros Tipos de Relacionamentos Dependência Indica que existe uma dependência entre dois elementos em um modelo Podem ser aplicados em outros modelos além das classes ex extends e include que são específicos de casos de uso import que é um relacionamento de dependência entre pacotes Dependência Relacionamento de dependência entre classes indica que entre duas classes uma é cliente e outra fornecedora ou seja a cliente usa informações eou serviços da fornecedora as classes não precisam necessariamente estar associadas para existir dependência Dependência Figura Relacionamento de dependência Dependência Figura Relacionamento de dependência Porque ControleCliente depende de Cliente Em todos os métodos da classe ControleCliente podemos perceber que os parâmetros ou retorno são do tipo Cliente Porque Cliente não depende de ControleCliente A classe Cliente não utiliza a classe ControleCliente como atributo ou como parâmetro de métodos Dependência Figura Relacionamento de dependência Porque ControleCliente depende de Cliente Em todos os métodos da classe ControleCliente podemos perceber que os parâmetros ou retorno são do tipo Cliente Porque Cliente não depende de ControleCliente A classe Cliente não utiliza a classe ControleCliente como atributo ou como parâmetro de métodos Dependência Figura Relacionamento de dependência Porque ControleCliente depende de Cliente Em todos os métodos da classe ControleCliente podemos perceber que os parâmetros ou retorno são do tipo Cliente Porque Cliente não depende de ControleCliente A classe Cliente não utiliza a classe ControleCliente como atributo ou como parâmetro de métodos Dependência Figura Relacionamento de dependência Porque ControleCliente depende de Cliente Em todos os métodos da classe ControleCliente podemos perceber que os parâmetros ou retorno são do tipo Cliente Porque Cliente não depende de ControleCliente A classe Cliente não utiliza a classe ControleCliente como atributo ou como parâmetro de métodos Exemplo Sistema de Venda de Ingressos Exercício
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
58
Modelagem de Sistemas: Modelo de Casos de Uso
Linguagens de Programação
UENP
1
Aplicações da Programação Funcional: Conceitos e Exemplos Práticos
Linguagens de Programação
UENP
33
Introdução ao Planejamento de Projetos - UFF
Linguagens de Programação
UENP
32
Principais habilidades e conceitos em Java: Classe Vehicle
Linguagens de Programação
UENP
2
Especificação do Trabalho de Programação II - Desenvolvimento de Software com Java FX e PostgreSQL
Linguagens de Programação
UENP
1
Avaliação 5 - Programação Concorrente e Paralela
Linguagens de Programação
UENP
2
Especificação do Trabalho: Desenvolvimento de Programa Orientado a Objetos em Java FX
Linguagens de Programação
UENP
1
Diagrama de Classes da Locadora
Linguagens de Programação
UENP
1
Certificado de Conclusão - Criando Robôs com Python
Linguagens de Programação
UENP
Texto de pré-visualização
Modelagem de Classes Diagrama de Classes de Análise Prof Maurício M Arimoto mauriciouenpedubr Fevereiro2022 Modelagem de Classes Os casos de uso fornecem uma perspectiva do sistema de um ponto de vista externo do ator Internamente os objetos colaboram para atender às funcionalidades do sistema O Diagrama de classes modela a colaboração das classes de um sistema seus atributos e operações e como elas se relacionam Modelagem de Classes O diagrama de classes é o principal artefato de um projeto OO Descreve todas as classes envolvidas no projeto Pode ser comparado a uma planta baixa em projeto de uma casa Mostra toda a estrutura do projeto Transformar os requisitos descritos ex casos de uso ou user stories em classes que são à base do sistema Contextualizando Paradigma OO O processo ser informatizado é visto como um conjunto de objetos que interagem para realizar as funções Objetos análogos aos objetos do mundo real Objetos e Classes Os Objetos são instâncias de classes exemplares É através deles que praticamente todo o processamento ocorre em sistemas OO Todo objeto é uma instância de uma classe Objetos e Classes Objetos com características similares são agrupados em classes Uma classe é uma estrutura que possui dados atributos e comportamento métodos a fim de fornecer um modelo do qual podese criar vários objetos Cada objeto de uma classe diferenciase do outro por meio do valor de seus atributos Objetos e Classes Figura Classes e Objetos Princípios Básicos Abstração Encapsulmanto Polimorfismo Herança Diagrama de Classes Representa os tipos de classes de objetos de um sistema Propriedades Funcionalidades providas Relacionamentos Pode ser mapeado diretamente para uma linguagem OO Atributos de uma Classe Representam um conjunto de informações ou seja elementos de dados que caracterizam um objeto Representam o conjunto de características estado dos objetos daquela classe Cada objeto possui seu próprio conjunto de atributos Atributos de uma Classe Notação da UML para atributos visibilidade nome tipo valorinicial Exemplos nome string idade int Métodos de uma classe Realizar algumas açõesoperações com os objetos Definem as funcionalidades de uma classe Manipulam os atributos do objeto alteração do estado do objeto Métodos de uma Classe Notação UML para métodos visibilidade nomeparâmetros tiporetorno proriedades Exemplos definirNomenomeString String exibirNome void Inclusão de Métodos nas Classes Devese evitar incluir Métodos enviados à coleções dependem da implementação Método criar linguagem OO provê o criador Métodos de acesso a atributos assumese que cada atributo tem necessariamente esses métodos Visibilidade de Atributos e Métodos A propriedade de visibilidade serve para implementar o encapsulamento da estrutura interna da classe Visibilidade Símbolo Significado Público Atributos ou métodos públicos podem ser acessados por qualquer outra classe Protegido Atributos ou métodos podem ser acessados apenas por classes da mesma hierarquia ou do mesmo pacote Privado Atributos ou métodos privados só podem ser acessados dentro da classe Perspectivas do Diagrama de Classes O diagrama de classes evolui com o sistema e pode ter diferentes perspectivas Na análise identificamos classes no domínio do problema No projeto pensamos em classes para a solução Níveis de Abstração Figura Notação para uma classe na UML Figura Níveis de abstração na notação de classe Identificando as classes Ponto de partida Tomando por base os requisitos iniciais do usuário O Modelo de casos de uso ou User Stories Identificando as classes Identificando as classes Alguns especialistas sugerem como estratégia ler documentos procurando por substantivos Exemplo Seja o seguinte exemplo de uma descrição de um domínio de locação de automóveis Clientes locam carros Potenciais classes Cliente e Carro E locação É um evento de negócio importante que precisa ser lembrado Identificando as classes Elementos que devem ser considerados como candidatos a classes Agentes entidades do domínio do problema que têm a capacidade de agir com intenção de atingir uma meta físicos tipicamente pessoas e sociais organizações unidades organizacionais sociedades etc Identificando as classes Elementos que devem ser considerados como candidatos a classes Objetos entidades sem a capacidade de agir mas que fazem parte do domínio de informação do problema físicos pex carros livros imóveis sociais pex cursos disciplinas leis objetos de caráter descritivo pex modelos de carro Identificando as classes Elementos que devem ser considerados como candidatos a classes Eventos a ocorrência de ações no domínio do problema que precisam ser registradas e lembradas pelo sistema Exemplo Em um sistema de locação de automóveis são potenciais classes de eventos Locação Devolução e Reserva Por outro lado a ocorrência de eventos cadastrais cadastros de clientes e carros não precisa ser lembrada Identificando as classes Checklist Objetos físicos ou tangíveis Livro Leitor Carro Especificação de Projetos ou descrição de coisas Categoria de Livro Especificação de Produto Lugares Biblioteca Sala de Aula Transações Emprestimo Reserva Locação Linha de Itens de Transações Item de Emprestimo Item de Venda Papéis desempenhados por pessoas Atendente Chefe de Biblioteca Contêineres de outras coisas Estante Armário Coisas em um contêiner Cópia de Livro Revista Catálogos Catálogo de Livros de Revistas etc Relacionamento entre Classes Relacionamentos básicos Associação GeneralizaçãoEspecialização AgregaçãoComposição Outros relacionamentos dependência Relacionamento entre Classes Associação Associação é um relacionamento entre classes que precisa ser lembrado pelo sistema durante seu funcionamento Exemplo existe uma associação entre Empréstimo e Leitor que precisa ser lembrada pelo sistema pois quando o Empréstimo termina o Leitor deve ter sua situação regularizada Relacionamento entre Classes Como Identificar associações Algumas regras básicas Regra 1 Uma classe que fisicamente ou logicamente faz parte de outro Exemplo um Exemplar logicamente faz parte do Empréstimo Relacionamento entre Classes Como Identificar associações Regra 2 Uma classe que serve para descrever ou qualificar outro conceito Exemplo um Livro pode ser classificado em diversas Categorias ou por Autor Relacionamento entre Classes Como Identificar associações Regra 3 Uma classe que é responsável por registrar ou manter informações sobre outra Exemplo O Atendente é quem registra e atende o Leitor A Bibliotecária é responsável pelos Livros Relacionamento entre Classes Como Identificar associações Associações na UML Relacionamento entre Classes Como Identificar associações Associações na UML Associações na UML Multiplicidade Multiplicidade Significado 1 Exatamente uma 0 Zero ou mais 1 Um ou mais 01 Zero ou uma 247 Faixa específica 2 4 ou 7 Associações na UML Navegabilidade Uma associação bidirecional indica que há um conhecimento mútuo entre objetos associados Figura Associação bidirecional Associações na UML Navegabilidade Uma associação unidirecional indica que os objetos de uma classe C conhecem os objetos de uma classe D O contrário não é válido Figura Associação unidirecional Associações na UML Associações Nárias Associações Nárias também são possíveis Associações na UML Associação Reflexiva Associações na UML Classe Associativa Quando uma relação associativa possui atributos próprios pode ser transformada em Classe Associações na UML Uma operação transação não deve ser modelada como associação GeneralizaçãoEspecialização Herança Permite que características comuns a diversos tipos sejam colocadas em um tipo base supertipo Cada subtipo apresenta as características do supertipo e acrescenta a ele novas características Dizemos que um subtipo herda todas as propriedades do supertipo e acrescenta suas características próprias e exclusivas As propriedades do supertipo não precisam ser repetidas em cada subtipo GeneralizaçãoEspecialização Herança GeneralizaçãoEspecialização Herança Figura Exemplo de herança GeneralizaçãoEspecialização Herança Múltipla Figura Exemplo de herança Agregação Mecanismo pelo qual um objeto inclui atributos e comportamento de outros objetos a ele agregados Indica a existência de um todo composto por partes AgregaçãoAgregação Simples É uma associação com a semântica de contém Serve como uma relação todoparte fraca O todo existe sem as partes e viceversa A parte pode ser agregada por vários todos AgregaçãoAgregação Simples É uma associação com a semântica de contém Serve como uma relação todoparte fraca O todo existe sem as partes e viceversa A parte pode ser agregada por vários todos Agregação Composta ou Composição É uma associação com a semântica de é composto de Serve como uma relação todoparte forte O todo não existe sem as partes As partes pertencem a somente um todo A remoção do todo implica na remoção das partes Agregação Composta ou Composição É uma associação com a semântica de é composto de Serve como uma relação todoparte forte O todo não existe sem as partes As partes pertencem a somente um todo A remoção do todo implica na remoção das partes Agregação simples X Composição Agregação versus Composição na UML Agregação simples X Composição Considerações No exemplo anterior poderia ser usado associações comuns No entanto ao especificar que universidade é um todo e que aluno é uma de suas partes fica claro qual deles é organizacionalmente superior ao outro Assim as universidades são definidas de alguma forma pelos seus alunos De forma semelhante os alunos não existem fora da universidade a que pertencem Agregação simples X Composição Diferenças importantes Na composição não é necessário definir a multiplicidade no lado do todo pois a parte está apenas no objeto específico do todo por isso a multiplicidade é sempre 1 um Na agregação nem sempre a parte coincide com o tempo de vida do todo Além disso podese existir multiplicidade maiores que 1 no lado do todo Se o todo é destruído não necessariamente a parte é destruída Agregação simples X Composição Considerações Muitas vezes pode ser difícil perceber a diferença entre uma agregaçãocomposição e uma associação comum Quando houver essa dúvida é melhor representar a situação usando uma associação comum tendo em vista que ela impõe menos restrições Outros Tipos de Relacionamentos Dependência Indica que existe uma dependência entre dois elementos em um modelo Podem ser aplicados em outros modelos além das classes ex extends e include que são específicos de casos de uso import que é um relacionamento de dependência entre pacotes Dependência Relacionamento de dependência entre classes indica que entre duas classes uma é cliente e outra fornecedora ou seja a cliente usa informações eou serviços da fornecedora as classes não precisam necessariamente estar associadas para existir dependência Dependência Figura Relacionamento de dependência Dependência Figura Relacionamento de dependência Porque ControleCliente depende de Cliente Em todos os métodos da classe ControleCliente podemos perceber que os parâmetros ou retorno são do tipo Cliente Porque Cliente não depende de ControleCliente A classe Cliente não utiliza a classe ControleCliente como atributo ou como parâmetro de métodos Dependência Figura Relacionamento de dependência Porque ControleCliente depende de Cliente Em todos os métodos da classe ControleCliente podemos perceber que os parâmetros ou retorno são do tipo Cliente Porque Cliente não depende de ControleCliente A classe Cliente não utiliza a classe ControleCliente como atributo ou como parâmetro de métodos Dependência Figura Relacionamento de dependência Porque ControleCliente depende de Cliente Em todos os métodos da classe ControleCliente podemos perceber que os parâmetros ou retorno são do tipo Cliente Porque Cliente não depende de ControleCliente A classe Cliente não utiliza a classe ControleCliente como atributo ou como parâmetro de métodos Dependência Figura Relacionamento de dependência Porque ControleCliente depende de Cliente Em todos os métodos da classe ControleCliente podemos perceber que os parâmetros ou retorno são do tipo Cliente Porque Cliente não depende de ControleCliente A classe Cliente não utiliza a classe ControleCliente como atributo ou como parâmetro de métodos Exemplo Sistema de Venda de Ingressos Exercício