Prévia do material em texto
Disciplina ANÁLISE ORIENTADA A OBJETOS clientes. Um cliente pode se cadastrar via web ou aplicativo. Cada cliente deve ser gerenciado pela sua situação (ativo, preferencial, inadimplente ou encerrado). RF3 Cadastro de empresa O sistema deve prover um cadastro das empresas conveniadas com a locadora de veículos. RF4 Cadastro de grupo de carro O sistema deve prover um cadastro de grupos de carros para categorizar os carros por características. RF5 Cadastro de carro O sistema deve prover um cadastro dos carros disponíveis para o aluguel. Cada carro deve ser gerenciado pela sua situação (disponível, alugado, manutenção interna, manutenção externa ou encerrado). RF6 Controle de reserva de carro O sistema deve prover um controle de reserva de carros para clientes da locadora. Uma reserva pode ser realizada por telefone, web ou aplicativo. Cada reserva deve ser gerenciada pela situação (agendada, cancelada, realizada, aprovado ou reprovado). Toda reserva efetivada deve enviar um Disciplina ANÁLISE ORIENTADA A OBJETOS comprovante da reserva para o cliente via e-mail e/ou SMS. RF7 Controle de aluguel de carro O sistema deve prover um controle de aluguel de carros para clientes da locadora. RF8 Emissão de contrato de aluguel O sistema deve emitir cópias do contrato de aluguel. RF9 Controle de devolução de carro O sistema deve prover um controle de devolução de carros. Uma devolução refere- se à baixa de um aluguel. O controle de devolução estará integrado com o módulo de pagamento. RF10 Emissão de nota �scal de aluguel O sistema deve emitir a nota �scal de serviço, referente ao aluguel de um carro. A nota �scal pode ser impressa ou enviada por e-mail para o cliente. Quadro 1 | Listagem dos requisitos funcionais. Fonte: Catarino (2020, p.). Atividade análise e projeto Na segunda atividade do modelo processo uni�cado – análise e projeto, a atividade de análise foca em identi�car e de�nir as funções do sistema de software a partir de uma perspectiva lógica do negócio, enquanto a atividade de projeto visa determinar como o software será desenvolvido, alinhado às tecnologias, linguagens de programação e bancos de dados escolhidos para a implementação do software. Em um processo de desenvolvimento iterativo, embora a análise geralmente preceda o projeto, ambas as atividades podem ocorrer simultaneamente. Segundo Bezerra (2007, p. 176), “os modelos especi�cados na análise esclarecem o problema a ser resolvido. No entanto, as Disciplina ANÁLISE ORIENTADA A OBJETOS perspectivas do sistema fornecidas por esses modelos não são su�cientes para se ter uma visão completa do sistema para que a implementação comece”. Durante a atividade de análise, inicia-se a modelagem de�nindo os casos de uso baseados nos requisitos funcionais identi�cados anteriormente, elaborando o modelo de casos de uso. Uma vez que o modelo de casos de uso esteja pronto, a próxima etapa envolve analisar cada caso de uso para iniciar a identi�cação das classes de objetos, determinando quais classes estão envolvidas na realização de cada caso de uso e como o sistema será estruturado internamente. Especi�ca-se, então, o modelo de classes, geralmente em várias perspectivas de visão. Com a primeira versão do modelo de classes de�nida, é possível aprimorar a modelagem dos casos de uso com descrições detalhadas, já que os objetos que colaboram e participam da execução de cada caso de uso são claramente identi�cados nesta fase. Modelo de casos de uso e diagrama de classes A partir da de�nição dos requisitos funcionais analisamos os requisitos identi�cados e abstraímos as regras de negócio do sistema, e assim foi decidido estruturar os casos de uso em dois pacotes. Na UML, os agrupamentos que organizam um modelo (conjunto de diagramas) são chamados de pacotes. Antes de começar a especi�cação dos casos de uso, é crucial catalogar todos os casos de uso identi�cados para decidir se devem ser agrupados por categoria ou tema. Isso permite a criação do diagrama de pacotes e dos diagramas de casos de uso para cada pacote, formando assim o modelo de casos de uso. A Figura 4 demonstra o diagrama de pacotes para os casos de uso. Foram estabelecidos dois pacotes principais – “mdL_duc_Negocio” e “mdL_duc_ConsultaRelatorio”, ambos parte do módulo de locação, e o pacote “md_Pagamento_duc”, vinculado ao módulo de pagamento, que foi integrado ao módulo de locação em especi�cação. Portanto, os pacotes são apresentados com suas respectivas dependências, organizando os casos de uso por temas para estruturar o modelo de casos de uso. Figura 4 | Diagrama de pacotes – modelo de casos de uso. Fonte: Catarino (2020, p.). A Figura 5 mostra o diagrama de casos de uso do pacote "mdL_duc_Negocio", destacando os casos de uso relacionados aos requisitos funcionais e outros identi�cados pela análise desses Disciplina ANÁLISE ORIENTADA A OBJETOS requisitos, considerando também o contexto do domínio do sistema. Os atores principais, como "Funcionário Adm", "Cliente", "Empresa" e "Gerente", interagem com os casos de uso, desempenhando um papel crucial na execução desses casos de uso. É essencial analisar cada requisito funcional de�nido previamente para estabelecer os casos de uso e suas inter-relações, já que um requisito pode ser representado por múltiplos casos de uso. Além disso, deve-se considerar a usabilidade do sistema para os usuários ao de�nir o propósito de cada caso de uso. A Figura 5 também inclui a representação básica de casos de uso e suas interações, como o caso de "Reservar Carro". Nele, uma reserva efetuada pelo cliente gera automaticamente um comprovante enviado por e-mail, ilustrado pelo relacionamento de inclusão >. Se o cliente desejar, pode imprimir esse comprovante após con�rmar a reserva, mostrado no diagrama pelo relacionamento de extensão >. Lembre-se que os relacionamentos > e > são tipos especí�cos de dependências entre casos de uso, indicando sequências de interações e execuções obrigatórias, respectivamente. Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 5 | Diagrama de casos de uso – pacote mdL_duc_Negocio. Fonte: Catarino (2020, p.). A Figura 6 representa o diagrama de casos de uso correspondente ao pacote “mdL_duc_ConsultaRelatorio”, que concentra os casos de uso de�nidos para as funcionalidades das consultas e relatórios operacionais do sistema. Perceba que alguns casos de uso estão associados ao ator genérico “Colaborador”, o qual indica que os atores especializados “Funcionário Adm” e “Gerente” têm acesso a todos os casos de uso associados ao ator genérico. Figura 6 | Diagrama de casos de uso – pacote mdL_duc_ConsultaRelatorio. Fonte: Catarino (2020, p.). Após a abstração dos casos de uso, inicia-se a identi�cação das classes de objetos e a elaboração do diagrama de classes, utilizando essa técnica como a principal abordagem de modelagem estrutural da UML para representar a parte estática do sistema. Esse diagrama exibe classes, seus atributos, operações e relações. Dentre as várias técnicas de identi�cação de classes — como análise textual de Abbott, análise dos casos de uso, cartões CRC (Classes, Responsabilidades e Colaboradores), e taxonomia de conceitos — escolhemos a análise dos casos de uso. Por exemplo, no caso de uso “Manter Disciplina ANÁLISE ORIENTADA A OBJETOS Cliente”, é necessário de�nir uma classe para clientes que permite operações de inclusão, alteração, exclusão e pesquisa, adequadas ao contexto do domínio do sistema. Siga em Frente... Após identi�car as classes e atributos, é crucial veri�car a consistência entre eles e os casos de uso já estabelecidos, ajustando para incorporar novas classes ou remover redundâncias. A primeira versão do diagrama de classes é, então, re�nada e detalhada conforme as tecnologias de implementação escolhidas. No contexto do sistema de “Locação de Veículos”, as classes foram organizadas no pacote “md_Locacao_dc”, que possui uma dependência com o pacote “md_Pagamento_dc”, referente ao módulo de pagamentos,com apenas a chave primária composta, conforme mostra a Figura 5. Figura 5 | Recorte do diagrama de classes com associação binária (muitos-para-muitos). Fonte: Catarino (2020, p.). Mapeamento: Reserva (reservaId, dataReserva, dataRetirada, horaRetirada, dataPrevDevolucao, situacao, observacao, demaisFK). ItemAdicional (itemAdicionalId, nome, descricao, valor). ReservaItemAdicional (reservaId, itemAdicionalId). Disciplina ANÁLISE ORIENTADA A OBJETOS Siga em Frente... Mapeamento de agregação, mapeamento de composição e mapeamento de generalização Mapeamento de agregação: para classes relacionadas com associação do tipo agregação, mapeia-se a classe “Todo” e “Parte” para tabelas individuais. O identi�cador da classe “Todo” é indicado como chave estrangeira na tabela que representa a classe “Parte”, conforme é mostrado na Figura 6, ou seja, mesma forma de mapear classes com associação binária. Figura 6 | Recorte do diagrama de classes com agregação. Fonte: Catarino (2020, p.). Mapeamento: Pais (paisId, nome, código, continente, idioma). Estado (estadoId, nome, sigla, paisId). Municipio (municipioId, nome, regiao, estadoId). FilialLoja (�lialLojaId, nome, cnpj, logradouro, complemento, bairro, cep, telefone, celular, contatoResponsavel, municipioId). Mapeamento de composição: no mapeamento de composição, em que classes estão relacionadas por uma associação de composição (um tipo especí�co de agregação), as classes "Todo" e "Parte" são mapeadas para tabelas separadas. O identi�cador da classe "Todo" é incorporado como parte da chave primária na tabela que representa a classe "Parte", como ilustrado no exemplo na Figura 7. Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 7 | Recorte do diagrama de classes com composição. Fonte: Catarino (2020, p.). Mapeamento: CreditoParcelado (creditoParceladoId, dataLancamento, qtdadeParcelas, valorTotal, situacao, demaisFK). ParcelaCreditoParcelado (creditoParceladoId, parcelaCreditoParceladoId, dataVencimento, valorParcela, dataPagamento, juro, multa, outrosAcrescimos, desconto). Mapeamento de generalização: há três abordagens principais para o mapeamento desse tipo de relacionamento em tabelas. Comumente, a superclasse e suas subclasses são mapeadas cada uma em sua própria tabela, utilizando um "Id" compartilhado. Além disso, um atributo tipo é adicionado à tabela que representa a superclasse para identi�car os tipos de objetos que as subclasses representam, conforme mostrado no exemplo da Figura 8. Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 8 | Recorte do diagrama de classes com generalização. Fonte: Catarino (2020, p.) Mapeamento – Alternativa 1: Pessoa (pessoaId, nome, logradouro, numeroLogradouro, bairro, cidade, estado, cep, telefone, celular, situacao, enderecoEletronicoLogin, senhaAlfanumerica, tipoPessoa [PF/PJ], demaisFK). Disciplina ANÁLISE ORIENTADA A OBJETOS PessoaFisica (pessoaId, cpf, dataNascimento, sexo, telefoneComercial, pessoaIdJ, demaisFK). PessoaJuridica (pessoaId, cnpj, inscricaoEstadual, razaoSocial, dataAberturaEmpresa, contato, desconto, demaisFK). A segunda e a terceira abordagens são consideradas alternativas de mapeamento de generalização. Segundo Rumbaugh (1997, p. 506), “ […] elas são motivadas pelo desejo de eliminar a navegação de superclasse para subclasse, melhorando o desempenho”. A segunda abordagem de�ne a eliminação da tabela correspondente à superclasse e mapeia-se uma tabela correspondente a cada subclasse, reproduzindo todos os atributos da superclasse em cada tabela da superclasse. Mapeamento – Alternativa 2: PessoaFisica (pessoaIdF, nome, logradouro, numeroLogradouro, bairro, cidade, estado, cep, telefone, celular, situacao, enderecoEletronicoLogin, senhaAlfanumerica, cpf, dataNascimento, sexo, telefoneComercial, pessoaIdJ, demaisFK). PessoaJuridica (pessoaIdJ, nome, logradouro, numeroLogradouro, bairro, cidade, estado, cep, telefone, celular, situação, enderecoEletronicoLogin, senhaAlfanumerica, cnpj, inscricaoEstadual, razaoSocial, dataAberturaEmpresa, contato, desconto, demaisFK). A terceira abordagem de�ne a criação de uma única tabela correspondente à superclasse, unindo todos os atributos das subclasses ao nível da superclasse. Mapeamento – Alternativa 3: Pessoa (pessoaId, nome, logradouro, numeroLogradouro, bairro, cidade, estado, cep, telefone, celular, situacao, enderecoEletronicoLogin, senhaAlfanumerica, tipoPessoa [PF/PJ], cpf, dataNascimento, sexo, telefoneComercial, pessoaIdJ, cnpj, inscricaoEstadual, razaoSocial, dataAberturaEmpresa, contato, desconto, demaisFK). Para garantir a consistência da modelagem de análise e projeto de um software, bem como a evolução da modelagem, é importante utilizar todos os recursos das ferramentas CASE de modelagem e o recurso de gerenciamento de versões ou visões dos modelos especi�cados, para, assim, facilitar a leitura e interpretação do conjunto de diagramas estáticos e dinâmicos que compõem a documentação de um sistema de software (Catarino, 2020). Vamos Exercitar? Considerando as alternativas de mapeamento de classes para tabelas de banco de dados relacional, segue o esquema do banco de dados correspondente ao sistema “Locação de Veículos”. Disciplina ANÁLISE ORIENTADA A OBJETOS Uma sugestão para elaborar o mapeamento é iniciar o mapeamento das tabelas que não têm chave estrangeira, posteriormente as demais tabelas e, ao �nalizar o mapeamento, classi�car as tabelas e listá-las em ordem alfabética. Esquema do módulo md_Locacao_dc: AluguelDevolucao(aluguelDevolucaoId, dataAluguel, dataPrevDevolucao, valorKm, valorDiaria, numeroContrato, dataDevolucao, kmRodada, observacao, formaPagto, reservaId, carroId, pessoaId, �lialIdR, �lialIdD, tipoPagamentoId) AluguelDevolucaoItemAdicional (aluguelDevolucaoId, itemAdicionalId) Carro (carroId, placa, anoFabricacao, anoModelo, renavam, chassi, km, imagem, observacao, situacao, combustivel, grupoCarroId) GrupoCarro (grupoCarroId, nome, descricao, valorDiaria, precoKm, marcaId) ItemAdicional (itemAdicionalId, nome, descricao, valor) Marca (marcaId, nome) Pais (paisId, nome, código, nacionalidade, idioma, continente, sigla) Pessoa (pessoaId, nome, logradouro, numeroLogradouro, bairro, cidade, estado, cep, telefone, celular, situacao, enderecoEletronicoLogin, senhaAlfanumerica, tipoPessoa [PF/PJ], paisId) PessoaFisica (pessoaId, cpf, dataNascimento, sexo, telefoneComercial, pessoaIdJ, pro�ssaoId) PessoaJuridica (pessoaId, cnpj, inscricaoEstadual, razaoSocial, dataAberturaEmpresa, contato, desconto, ramoId) Pro�ssao (pro�ssaoId, cbo, nome) RamoAtividade (ramoId, cnae, nome) Reserva (reservaId, dataReserva, dataRetirada, horaRetirada, dataPrevDevolucao, situacao, observacao, grupoCarroId, pessoaId, �lialIdR, �lialIdD) ReservaItemAdicional (reservaId, itemAdicionalId) Saiba mais Quer entender mais sobre o mapeamento objeto-relacional? Leia o artigo Mapeamento objeto- relacional: como funciona e técnicas. Para entender mais sobre o SGBD, leia SGBD: o que é, como funciona e principais vantagens. E para compreender ainda melhor os diagramas de classes, Acesse o livro UML Essencial e leia o Capítulo 3. Referências CATARINO, I. C. S. Análise orientada a objetos. Londrina: Editora e Distribuidora Educacional S.A., 2020. GUEDES, G. T. A. UML: uma abordagem prática. 3. ed. São Paulo: Novatec, 2018. https://blog.geekhunter.com.br/mapeamento-objeto-relacional/ https://blog.geekhunter.com.br/mapeamento-objeto-relacional/ https://www.fiveacts.com.br/sgbd https://integrada.minhabiblioteca.com.br/reader/books/9788560031382/epubcfi/6/2%5Bidloc_000.xhtml-itemref%5D!/4%5Beid1%5D/2%5Beid2%5D%4050:3 Disciplina ANÁLISE ORIENTADA A OBJETOS RUMBAUGH, J. et al. Modelagem e projetos baseados em objetos. Rio de Janeiro: Campus, 1997. Aula 5 Encerramento da Unidade Videoaula de Encerramento Este conteúdo é um vídeo! Para assistir este conteúdo é necessário que você acesse o AVA pelo computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo para assistir mesmo sem conexão à internet.Dica para você Aproveite o acesso para baixar os slides do vídeo, isso pode deixar sua aprendizagem ainda mais completa. Bem-vindo à nossa videoaula! Exploraremos a evolução dos diagramas da UML com o Processo Uni�cado (PU) e o mapeamento de elementos do diagrama de classes para um Sistema Gerenciador de Banco de Dados (SGBD). Esses conhecimentos são essenciais para criar projetos de software robustos e e�cientes, fundamentais para a prática pro�ssional em desenvolvimento de sistemas. Não perca esta oportunidade de aprimorar suas habilidades! Ponto de Chegada Olá, estudante! Para desenvolver a competência desta Unidade, que é aplicar técnicas, conceitos e ferramentas indispensáveis para lidar com as potencialidades e fragilidades da UML no contexto de projetos de software, você deverá primeiramente conhecer os conceitos fundamentais sobre o processo de desenvolvimento de software. O Processo Uni�cado (PU), pode ser utilizado para essa �nalidade e o interessante é que ele enfatiza a importância da modelagem visual, utilizando a Uni�ed Modeling Language (UML) para criar diagramas que representam os diferentes aspectos do sistema. Isso facilita a comunicação entre os membros da equipe e garante uma compreensão clara e compartilhada do projeto. Além disso, o PU é adaptável e pode ser customizado para atender às necessidades especí�cas de diferentes projetos. Ele não é um processo rígido e prescritivo, mas sim um framework que pode ser ajustado para diferentes contextos e ambientes de desenvolvimento. Disciplina ANÁLISE ORIENTADA A OBJETOS O PU é baseado em uma série de iterações, cada uma resultando em uma versão incrementada do software em desenvolvimento. Essa abordagem permite que problemas sejam identi�cados e corrigidos nas fases iniciais do ciclo de desenvolvimento, reduzindo riscos e melhorando a qualidade �nal do produto. As iterações são divididas em quatro fases principais: Iniciação, Elaboração, Construção e Transição (Bezerra, 2014). Na fase de Iniciação, o objetivo é de�nir o escopo do projeto, identi�car os principais requisitos e estabelecer uma base sólida para o desenvolvimento. Isso inclui a criação de um modelo de negócios e a realização de uma análise de viabilidade para garantir que o projeto seja economicamente viável e tecnicamente exequível. A fase de Elaboração foca em detalhar os requisitos e a arquitetura do sistema. Aqui, os desenvolvedores trabalham em estreita colaboração com os stakeholders para re�nar os requisitos e criar um protótipo arquitetônico que sirva como base para o desenvolvimento subsequente. Essa fase é crucial para identi�car e mitigar riscos técnicos e de negócios. A fase de Construção envolve a implementação e a veri�cação do sistema. Nessa etapa, o foco é construir o software de acordo com os requisitos e a arquitetura de�nidos nas fases anteriores. O desenvolvimento é feito em iterações curtas e frequentes, permitindo a incorporação contínua de feedback e garantindo que o sistema atenda às expectativas dos usuários. Finalmente, a fase de Transição é dedicada a preparar o software para ser entregue aos usuários �nais. Isso inclui atividades como testes �nais, correção de defeitos, documentação e treinamento de usuários. O objetivo é garantir que o sistema esteja pronto para ser colocado em produção e que os usuários estejam preparados para utilizá-lo de forma e�caz. No Processo Uni�cado (PU), a Uni�ed Modeling Language (UML) é utilizada extensivamente para representar visualmente os diferentes aspectos do sistema em desenvolvimento. Os diagramas da UML desempenham um papel fundamental em todas as fases do PU, evoluindo à medida que o projeto avança e se torna mais detalhado. Aqui está uma visão de como o PU aborda os diagramas da UML em cada fase e como eles evoluem ao longo do tempo (Bezerra, 2014). Fase de Iniciação Na fase de Iniciação, o foco está em compreender o escopo do projeto e identi�car os requisitos principais. Os diagramas da UML utilizados nesta fase incluem: Diagrama de casos de uso: este diagrama ajuda a capturar os principais requisitos funcionais do sistema, identi�cando os atores (usuários ou outros sistemas) e suas interações com o sistema. Ele fornece uma visão geral das funcionalidades esperadas. Diagrama de atividades: utilizado para modelar o �uxo de atividades do sistema, mostrando como os casos de uso se relacionam e como as atividades se desenrolam. Fase de Elaboração Disciplina ANÁLISE ORIENTADA A OBJETOS Durante a fase de Elaboração, os requisitos são re�nados e a arquitetura do sistema é de�nida. Nessa fase, os diagramas da UML tornam-se mais detalhados e especí�cos: Diagrama de classes: esse diagrama começa a ser esboçado para representar a estrutura estática do sistema, mostrando as classes, atributos, métodos e os relacionamentos entre elas. É crucial para a de�nição da arquitetura do sistema. Diagrama de objetos: um diagrama de objetos pode ser usado para ilustrar exemplos de objetos reais e suas relações, fornecendo uma visão mais concreta dos modelos de classes. Diagrama de sequência: utilizado para detalhar como os objetos interagem em uma sequência temporal, mostrando as mensagens trocadas entre os objetos para realizar uma função especí�ca. Isso ajuda a esclarecer a dinâmica das interações. Diagrama de colaboração: semelhante ao diagrama de sequência, mas focado nas colaborações entre objetos. Mostra como os objetos colaboram para realizar operações. Diagrama de componentes: esse diagrama começa a ser desenvolvido para mostrar a organização e dependências dos componentes do sistema, auxiliando na de�nição da arquitetura técnica. Fase de Construção Na fase de Construção, os diagramas da UML continuam a evoluir e se detalham conforme o sistema é implementado: Diagrama de classes: continua a ser re�nado com a adição de detalhes como métodos especí�cos, visibilidade e tipos de dados. O diagrama re�ete a implementação real do sistema. Diagrama de sequência e colaboração: são utilizados extensivamente para detalhar as interações entre objetos durante a implementação de funcionalidades especí�cas. Eles ajudam a garantir que o comportamento do sistema esteja alinhado com os requisitos. Diagrama de máquina de estados: utilizado para modelar o comportamento dinâmico de objetos individuais, especialmente aqueles com estados complexos. Mostra como um objeto muda de estado em resposta a eventos. Diagrama de implantação: começa a ser desenvolvido para mostrar a con�guração física do sistema, incluindo nós de hardware e a distribuição de componentes de software. Este diagrama é crucial para a preparação do sistema para a produção. Fase de Transição Na fase de Transição, os diagramas da UML ajudam a garantir que o sistema esteja pronto para ser entregue e utilizado: Diagrama de implantação: é �nalizado para re�etir a con�guração real do sistema no ambiente de produção, incluindo detalhes sobre hardware, redes e componentes de software implantados. Disciplina ANÁLISE ORIENTADA A OBJETOS Diagrama de componentes: atualizado para re�etir a versão �nal do sistema, mostrando todos os componentes implementados e suas dependências. Diagrama de pacotes: pode ser utilizado para organizar e modularizar o sistema, mostrando a organização dos pacotes de software e suas relações. Ao longo de todo o ciclo de vida do desenvolvimento, os diagramas da UML no PU evoluem de representações abstratas e conceituais para modelos detalhados e especí�cos que orientam a implementação e a implantação do sistema. Essa evolução contínua garante que todos os aspectos do sistema sejam bem compreendidos e documentados, facilitando a comunicação entre os membros da equipe e assegurando a qualidade do produto �nal (Medeiros, 2004). Vale ressaltar que o PU utiliza a UML de forma �exível e adaptável, permitindo que as empresas escolham os diagramas mais relevantes para cada projeto. Em vez de exigir uma abordagem rígida e exata, o PU oferece uma estrutura que pode ser personalizada de acordo com as necessidades especí�cas de cadaprojeto. Isso permite que a equipe de desenvolvimento selecione os diagramas que proporcionam maior valor em termos de comunicação, compreensão e documentação, adaptando-se à complexidade e aos requisitos do sistema. Durante o desenvolvimento, a equipe pode focar nos diagramas que são mais críticos para o entendimento e a implementação do sistema. Por exemplo, em projetos com uma estrutura estática complexa, pode haver um foco maior nos diagramas de classes e componentes, enquanto projetos com comportamento dinâmico complexo podem enfatizar os diagramas de estados e de sequência. Essa abordagem iterativa e incremental permite que os diagramas evoluam e sejam re�nados à medida que o projeto avança, re�etindo mudanças nos requisitos e nas descobertas técnicas. A �exibilidade do PU também se estende à integração com outras metodologias. Empresas podem combinar o PU com práticas ágeis ou híbridas, utilizando apenas os elementos da UML que se alinham com seu �uxo de trabalho e objetivos. Ferramentas de modelagem que suportam a geração e atualização automatizada de diagramas facilitam a manutenção de modelos atualizados, reduzindo o esforço manual e permitindo que a equipe se concentre em aspectos mais críticos do desenvolvimento. Além disso, o envolvimento dos stakeholders e as considerações de tempo e recursos in�uenciam a escolha dos diagramas. Diagramas que ajudam a comunicar melhor as funcionalidades e o comportamento do sistema aos stakeholders podem ser priorizados. Em projetos com prazos apertados, a equipe pode optar por criar apenas os diagramas essenciais. A abordagem �exível do PU permite melhorias contínuas, ajustando quais diagramas são mais e�cazes e relevantes, garantindo assim o sucesso do projeto. Outro ponto importante é compreender a abstração que pode ser feita entre os diagramas de classes e os sistemas gerenciadores de banco de dados relacional. Os princípios básicos do paradigma orientado a objetos e do modelo relacional são distintos. Enquanto as tecnologias orientadas a objetos se baseiam no encapsulamento, abstraindo o comportamento através de objetos, o modelo relacional organiza dados em formato tabular utilizando sistemas gerenciadores de banco de dados relacional (SGBDR). Na modelagem de projeto, o mecanismo Disciplina ANÁLISE ORIENTADA A OBJETOS de armazenamento persistente de dados é crucial, envolvendo o mapeamento de classes de objetos para o modelo relacional (Catarino, 2020). Para especi�car esse mapeamento, são adotadas técnicas de modelagem de dados ou frameworks de mapeamento objeto-relacional como estratégia de armazenamento persistente. A documentação do projeto de banco de dados deve incluir a construção do esquema do banco, detalhando como as classes são traduzidas para tabelas no modelo relacional. Isso envolve mapear atributos de objetos das classes persistentes para as tabelas do banco de dados relacional, seguindo o modelo de classes. Ferramentas CASE de modelagem orientada a objetos frequentemente oferecem mapeamento automático para gerar esquemas relacionais a partir do modelo de classes e da de�nição do SGBDR. No entanto, é essencial conhecer e revisar os procedimentos de mapeamento para garantir precisão. O processo inclui identi�car objetos transientes e persistentes, mapear atributos de classes persistentes para colunas de tabelas e analisar relacionamentos entre classes, aplicando as regras de mapeamento adequadas (Catarino, 2020). Essas regras ajudam a criar um esquema de banco de dados relacional e�ciente, representando cada tabela com colunas correspondentes aos atributos das classes mapeadas. Atenção deve ser dada aos atributos derivados, chaves primárias e estrangeiras, e a notação dos identi�cadores (Ids), que de�nem a identidade independente dos objetos conforme os princípios da orientação a objetos. Com esses conhecimentos, é possível perceber que a UML é uma poderosa ferramenta para o desenvolvimento de software. A evolução dos diagramas contribui para a formulação de projetos mais bem estruturados e concisos. A utilização do diagrama de classes para de�nir o esquema do banco de dados ilustra a versatilidade da UML, mostrando que essa linguagem pode ser aplicada em uma ampla variedade de projetos. É Hora de Praticar! Este conteúdo é um vídeo! Para assistir este conteúdo é necessário que você acesse o AVA pelo computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo para assistir mesmo sem conexão à internet. Considere que você é o projetista de banco de dados, integrante da equipe de desenvolvedores responsável pelo sistema “Locação de Veículos”, e como parte da documentação referente a modelagem de dados você precisa apresentar o mapeamento das classes para tabelas do Banco de Dados Relacional (BDR) correspondente ao modelo de classes a seguir: Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 1 | Diagrama de classes (Análise) – md_Pagamento_dc. Fonte: Catarino (2020, p.). Para especi�cação das tabelas, adote a notação “Nome da Tabela (coluna 1, coluna 2, coluna 3, coluna 4, coluna n)”, representando, assim, o esquema completo do banco de dados. Na de�nição dos relacionamentos do diagrama de classes, existe uma regra ou padrão para de�nir a multiplicidade do relacionamento do tipo associação? Das diferentes técnicas de modelagem comportamentais da UML, o diagrama de sequência é a técnica recomendada para especi�car as interações entre os objetos que realizam os casos de uso. Assim, obrigatoriamente é necessário elaborar um diagrama de sequência para cada caso de uso? O relacionamento do tipo generalização estabelecido entre classes do diagrama de classes indica o princípio de herança entre classes genéricas e classes especializadas, o qual representa a propriedade pela qual uma classe pode herdar atributos e operações de uma classe que generaliza as características e comportamentos comuns de um grupo de objetos. Assim, no diagrama de classes re�nado para a atividade de projeto é obrigatório estabelecer o relacionamento de generalização entre classes? Considerando as alternativas de mapeamento de classes para tabelas de banco de dados relacional, segue o esquema do banco de dados correspondente ao sistema “Locação de Disciplina ANÁLISE ORIENTADA A OBJETOS Veículos”. Uma sugestão para elaborar o mapeamento é iniciar o mapeamento das tabelas que não têm chave estrangeira, posteriormente as demais tabelas e, ao �nalizar o mapeamento, classi�car as tabelas e listá-las em ordem alfabética. Caixa (caixaId, data, horaAbertura, horaFechamento, saldoEntrada, saldoMovimentacao, saldoFechamento, situcao, aluguelDevolucaoId) CreditoParcelado (creditoParceladoId, dataLancamento, qtdadeParcelas, valorTotal, situacao, aluguelDevolucaoId) ParcelaCreditoParcelado (creditoParceladoId, parcelaCreditoParceladoId, dataVencimento, valorParcela, dataPagamento, juro, multa, outrosAcrescimos, desconto) TipoPagamento (tipoPagamentoId, nome) Assimile Toda documentação da atividade de projeto do sistema deve ser estabelecida de acordo com as de�nições da metodologia da empresa de desenvolvimento, atendendo às características e particularidades do domínio do sistema de software. O infográ�co a seguir sintetiza as seguintes características da evolução da documentação de análise para projeto. Disciplina ANÁLISE ORIENTADA A OBJETOS BEZERRA, E. Princípios de análise e projeto de sistemas com UML. 3. ed. Rio de Janeiro: Elsevier, 2014. CATARINO, Iolanda Cláudia Sanches. Análise orientada a objetos. Londrina: Editora e Distribuidora Educacional S.A., 2020. MEDEIROS, E. S. Desenvolvendo software com UML 2.0: de�nitivo. São Paulo: Pearson, 2004.como mostrado no diagrama de pacotes da Figura 7. Figura 7 | Diagrama de pacotes. Fonte: Catarino (2020, p.). A Figura 8 exibe o diagrama de classes de análise para o pacote "md_Locacao_dc", seguindo as normas básicas de modelagem e as regras de negócio do sistema. No diagrama, são apresentadas as classes e seus relacionamentos, que facilitam a troca de informações entre os objetos durante a execução do sistema. Notavelmente, o diagrama inclui um relacionamento de generalização entre a superclasse "Pessoa" e as subclasses "PessoaFisica" e "PessoaJuridica". Todos os outros relacionamentos são de associação binária. A classe "FilialLoja" é destacada em uma cor diferente e não tem atributos ou operações listados, pois embora exista no sistema, seus objetos são gerenciados diretamente no banco de dados pelo administrador do sistema. Contudo, é essencial representar essa classe para de�nir sua associação com as classes "Reserva" e "AluguelDevolucao". Disciplina ANÁLISE ORIENTADA A OBJETOS Fonte 8 | Diagrama de classes (análise) – md_Locacao_dc. Fonte: Catarino (2020, p.). Ao de�nir a nomenclatura para o nome das classes, atributos e operações em um modelo de classes, é essencial seguir convenções especí�cas para manter a clareza e a consistência. Aqui estão as recomendações: 1. Nome da classe: deve ser um substantivo ou uma expressão breve, único dentro do modelo. Por convenção, o nome é sempre no singular e, em caso de palavras compostas, elas devem ser concatenadas com a primeira letra de cada palavra em maiúscula, como "ClienteFidelizado". 2. Atributos: representam propriedades do objeto e são nomeados por substantivos ou expressões que indicam uma propriedade da classe, geralmente escritos em letra minúscula. Para palavras compostas, a segunda palavra e subsequentes começam com letra maiúscula, como "dataNascimento" e "endereçoEletrônico". 3. Operações: correspondem às ações dos objetos e são nomeadas por um verbo ou uma locução verbal breve. Seguem a mesma convenção dos atributos, usando letras minúsculas e maiúsculas conforme necessário, por exemplo, "criarCliente", "alterarCliente", "validarDataNascimento" e "calcularIdade". Um aspecto crucial é a de�nição e listagem de atributos em uma classe. É importante que cada atributo seja atômico, ou seja, indivisível. Não se deve dividir um atributo em subcampos, como é o caso de "CPF" ou "estadoCivil". Atributos compostos, como "�liação" (nome da mãe e nome do Disciplina ANÁLISE ORIENTADA A OBJETOS pai) ou "endereço" (incluindo logradouro, número, complemento, bairro, cidade, estado e CEP), não devem ser listados como um único atributo, pois cada componente pode ser considerado separadamente. A Figura 9 ilustraria um erro ao listar um atributo composto, demonstrando a importância de manter cada atributo simples e claro. Figura 9 | Classes com atributo composto e atributo simples. Fonte: Catarino (2020, p.). Alguns atributos compostos podem ser representados como atributos simples em uma classe, como no caso do atributo "nome" de uma pessoa. É importante considerar o contexto do domínio do sistema. Em alguns casos, o atributo "nome" pode ser tratado como um único atributo que inclui tanto o nome quanto o sobrenome da pessoa. Em outros contextos, pode ser necessário separar o atributo "nome" do atributo "sobrenome" para uma representação mais detalhada. Agora que temos a primeira versão do diagrama de classes, a documentação de cada caso de uso torna-se mais fácil. A UML não de�ne um formato especí�co para a documentação dos casos de uso, permitindo �exibilidade na escolha do formato. A documentação pode ser feita de diversas maneiras, incluindo o uso de pseudocódigo, código de programação ou prototipação de interface grá�ca para facilitar a compreensão da execução do caso de uso. O formato sugerido para a documentação dos casos de uso é o formato numerado de descrição dos cenários – principal e alternativos. O cenário principal descreve uma tarefa em um mundo perfeito, sem exceções, enquanto os cenários alternativos relatam quaisquer situações que representam exceções ou condições do cenário principal. Posteriormente, deve-se continuar a modelagem comportamental e de interação do sistema, a partir do detalhamento do funcionamento dos casos de uso, adotando o diagrama de atividades, diagrama de sequência ou o diagrama de visão geral de interação, bem como especi�car os estados e suas transições dos objetos das classes que apresentam estados relevantes, como é o caso das classes “Reserva”, “Carro” e “Pessoa”. Vamos Exercitar? Considerando as regras de negócio de�nidas no complemento da descrição do estudo de caso, para o módulo “Pagamento” segue o diagrama de classes como proposta de uma solução Disciplina ANÁLISE ORIENTADA A OBJETOS possível. Figura 10 | Diagrama de classes (análise) – md_Pagamento_dc. Fonte: Catarino (2020, P.). Observa na �gura a classe “AluguelDevolucao”, que faz parte do módulo “Locação de Veículos”, e as classes “Caixa”, “CreditoParcelado”, “ParcelaCreditoParcelado” e “TipoPagamento”, que são as classes especi�cadas para o módulo “Pagamento”. A classe “CreditoParcelado” foi representada com uma associação do tipo composição, indicando objetos todo-parte, sendo que os objetos da “ParcelaCreditoParcelado” representam as partes com a obrigação de, no mínimo, ter uma parcela. Foi estabelecido também um relacionamento do tipo dependência entre a classe “CreditoParcelado” com o pacote “GatewayPagamento”, que indica que, para as compras lançadas como crédito a receber (contas a receber), a partir do pagamento efetuado com cartão de débito ou crédito, é reutilizado um gateway de pagamento (um serviço destinado a pagamentos virtuais por cartão, mantido por uma operadora �nanceira que autoriza pagamentos de transações feitas on-line em websites de empresas) para efetuar esses pagamentos. Saiba mais O Processo Uni�cado (PU), também conhecido como Rational Uni�ed Process (RUP), é uma metodologia de desenvolvimento de software criada pela Rational Software Corporation e posteriormente adquirida pela IBM. Ele é baseado em uma abordagem orientada a objetos e é projetado para ser iterativo e incremental, signi�cando que o software é desenvolvido em Disciplina ANÁLISE ORIENTADA A OBJETOS pequenos ciclos, com funcionalidades adicionadas em cada iteração . Para ler mais sobre o processo uni�cado, leia o artigo: O Processo Uni�cado. Para poder modelar todos os diagramas vistos nesta aula, você pode utilizar a ferramenta online Visual Paradigma Online. O livro Utilizando UML e Padrões apresenta como essa linguagem é aplicada durante um projeto. Referências BEZERRA, E. Princípios de análise e projeto de sistemas com UML. 3. ed. Rio de Janeiro: Elsevier, 2014. CATARINO, I. C. S. Análise orientada a objetos. Londrina: Editora e Distribuidora Educacional S.A., 2020. MEDEIROS, E. S. Desenvolvendo software com UML 2.0: de�nitivo. São Paulo: Pearson, 2004. SOMMERVILLE, I. Engenharia de software. 10. ed. São Paulo: Pearson Education do Brasil, 2018. Aula 2 Modelagem complementar Modelagem complementar Este conteúdo é um vídeo! Para assistir este conteúdo é necessário que você acesse o AVA pelo computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo para assistir mesmo sem conexão à internet. Dica para você Aproveite o acesso para baixar os slides do vídeo, isso pode deixar sua aprendizagem ainda mais completa. Nesta videoaula, exploraremos a essencialidade da modelagem a partir do diagrama de estrutura composta, enfocando nas colaborações fundamentais do sistema. Além disso, abordaremos a modelagem comportamental e de interação, com ênfase em diagramas de atividades, máquina https://medium.com/contexto-delimitado/o-processo-unificado-d102b1fc9d00 https://online.visual-paradigm.com/pt/diagrams/features/uml-tool/ https://integrada.minhabiblioteca.com.br/reader/books/9788577800476/pageid/0 Disciplina ANÁLISE ORIENTADA A OBJETOS de estados e sequência. Esses conteúdos são cruciais paraaprimorar sua prática pro�ssional, oferecendo ferramentas robustas para o desenvolvimento e compreensão de sistemas complexos. Não perca essa oportunidade de aprofundar seus conhecimentos! Assista agora e fortaleça suas habilidades. Ponto de Partida Caro aluno, bem-vindo à aula dedicada à modelagem complementar na análise e projeto do caso de estudo proposto! Prosseguimos com a modelagem estrutural do sistema de "Locação de Veículos" iniciando pelo diagrama de estrutura composta. Em seguida, focamos na modelagem dinâmica, utilizando o diagrama de máquina de estados para detalhar os estados e transições dos objetos das classes previamente identi�cadas no diagrama de classes. Concluímos com o diagrama de atividades e o diagrama de sequência para documentar os principais casos de uso do sistema. O diagrama de estrutura composta, parte da UML 2.0, ilustra as colaborações entre elementos que executam funções especí�cas, essenciais para a realização dos casos de uso. Por exemplo, para os casos de uso "Reservar Carro", "Alugar Carro" e "Devolver Carro" do sistema "Locação de Veículos", esse diagrama detalha a interação entre objetos. O diagrama de máquina de estados revela o comportamento dos objetos por meio de estados e transições, elaborado para classes como “Reserva”, “Pessoa”, “Carro” e “AluguelDevolução”. O diagrama de atividades descreve o �uxo de controle das atividades, essencial para representar processos de negócios completos ou funcionalidades especí�cas, aplicado, por exemplo, aos casos de uso "Reservar Carro" e "Acessar Conta Cliente". O diagrama de sequência, outro componente vital da UML, ordena as interações temporais entre objetos em um processo ou caso de uso, sendo utilizado para os casos de uso “Alugar Carro” e “Devolver Carro”. Na aula 4.1, iniciamos a modelagem estrutural do módulo "Pagamento", integrado ao sistema de "Locação de Veículos". Agora, como analista de sistemas desse módulo, você deverá avançar na modelagem comportamental. No desenvolvimento do diagrama de classes, identi�camos um atributo de situação para a classe “Caixa” (Figura 1). Consideramos, então, os estados "Aberto", "Liberado" e "Fechado" para essa classe, com regras especí�cas para a transição entre esses estados. Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 1 | Classe caixa – módulo pagamento. Fonte: Catarino (2020, p.). Para os objetos da classe “Caixa”, os estados de�nidos são: Aberto, Liberado e Fechado. As regras de�nidas são as seguintes: Todo Caixa, ao ser cadastrado, deve assumir automaticamente a situação de Aberto. Todo Caixa Aberto deve assumir a situação de Liberado a partir das 8h ou sob a autorização de um gerente. Todo Caixa Liberado deve assumir a situação de Fechado a partir das 18h ou sob a autorização de um gerente. Todo Caixa Fechado deve assumir a situação de Aberto a partir das 6h do próximo dia. 1. Considerando as regras de�nidas para a classe “Caixa”, elabore o diagrama de máquina de estados. 2. Considerando os diagramas comportamentais apresentados nesta seção e os fragmentos de interação apresentados nos diagramas, elabore o diagrama de visão geral de interação Disciplina ANÁLISE ORIENTADA A OBJETOS (com quadros de ocorrência de interação do diagrama de sequência) correspondente ao processo de locar um carro, envolvendo o cadastro de um cliente, a reserva de um carro, o aluguel de um carro e o processo que envolve a devolução do carro. Esse trabalho reforça seu aprendizado na modelagem de projetos. Bons Estudos! Vamos Começar! Diagrama de estrutura composta Tendo �nalizado o diagrama de casos de uso e o diagrama de classes na fase de análise, prosseguimos com a modelagem do sistema "Locação de Veículos", focando agora na modelagem comportamental das suas funcionalidades. Nesta fase, empregaremos as principais técnicas de modelagem comportamental da UML para ilustrar o comportamento e a interação entre os elementos do sistema, documentando, assim, a dinâmica do sistema. Dentro das técnicas de modelagem da UML, divididas em estruturais e comportamentais, a perspectiva de interação é um subgrupo dos diagramas comportamentais. Esses diagramas detalham como os objetos dentro do sistema se comunicam e colaboram para executar as funcionalidades de�nidas pelos casos de uso. Para aprimorar a compreensão das interações entre os objetos envolvidos nos casos de uso chave - reserva, aluguel e devolução - do domínio do sistema, iniciaremos com a representação do diagrama de estrutura composta. O diagrama de estrutura composta é uma ferramenta estrutural da UML projetada para identi�car a arquitetura de elementos que interagem durante a execução de um sistema. Esse diagrama destaca a colaboração entre elementos que se comunicam, mas não detalha o comportamento dessa colaboração, que é explorado nos diagramas comportamentais da UML. De acordo com Guedes (2018), o diagrama de estrutura composta detalha a estrutura interna de um componente, classe ou uma colaboração entre um conjunto de instâncias que cooperam para realizar uma tarefa especí�ca, descrevendo as partes componentes e suas comunicações, representando uma composição de elementos interligados por conexões de comunicação que colaboram para alcançar um objetivo comum. Portanto, foi escolhido o diagrama de estrutura composta para representar a colaboração nos casos de uso "Reservar Carro", "Alugar Carro" e "Devolver Carro". A Figura 2 mostra o diagrama de estrutura composta para a colaboração "Reservar Carro", abrangendo o caso de uso "Reservar Carro" e seus relacionamentos, como "Imprimir Comprovante de Reserva" e "Enviar E-mail do Comprovante da Reserva". O diagrama ilustra a colaboração durante a execução dos casos de uso envolvidos, no qual cada reserva é instanciada na classe Reserva. Cada reserva estabelece um vínculo que demonstra a comunicação entre os objetos envolvidos para concretizar a reserva. Esse processo envolve a referência aos seguintes objetos: Disciplina ANÁLISE ORIENTADA A OBJETOS O objeto cliente (PessoaFisica), indicando quem realiza a reserva. O objeto loja (FilialLoja), especi�cando a loja para retirada do carro. Outro objeto loja (FilialLoja), para a devolução do carro. O objeto grupo de carro (GrupoCarro), escolhendo o modelo de carro a ser alugado. O objeto item adicional (ItemAdicional), para selecionar itens extras que complementem o aluguel do carro, se necessário. Vale ressaltar que, embora um diagrama de estrutura composta possa corresponder à colaboração de casos de uso, o nome da colaboração pode coincidir com o de um caso de uso quando representa exatamente um ou mais casos de uso relacionados. Figura 2 | Diagrama de estrutura composta – Reservar Carro. Fonte: Catarino (2020, p.). A Figura 3 mostra o diagrama de estrutura composta para a colaboração chamada "Alugar Carro", que inclui o caso de uso "Alugar Carro" junto com seus relacionamentos, como "Reservar Carro", "Emitir Contrato de Aluguel" e "Enviar E-mail do Comprovante do Aluguel". O diagrama ilustra a colaboração considerando a execução dos casos de uso envolvidos, em que cada processo de aluguel é instanciado na classe Aluguel. Para cada aluguel, estabelece-se uma conexão que re�ete a comunicação entre os objetos envolvidos para efetivar o aluguel. Assim, entende-se que cada aluguel pode estar associado aos seguintes objetos: Disciplina ANÁLISE ORIENTADA A OBJETOS O objeto reserva (Reserva), que determina se o aluguel será baseado em uma reserva pré- existente. O objeto cliente (PessoaFisica), indicando quem está realizando o aluguel. O objeto loja (FilialLoja), especi�cando a loja de onde o carro foi retirado. Outro objeto loja (FilialLoja), que de�ne a loja onde o carro será devolvido. O objeto carro (Carro), especi�cando o carro escolhido para o aluguel e, com a con�rmação do aluguel, a situação do carro deve ser atualizada para "Alugado". O objeto item adicional (ItemAdicional), se necessário, para complementar o carro alugado com itens adicionais. Esse diagrama serve para visualizar não apenas aestrutura, mas também as dinâmicas de interação necessárias para concretizar o serviço de aluguel de carros. Figura 3 | Diagrama de estrutura composta – Alugar Carro. Fonte: Catarino (2020, p.). A Figura 4 apresenta o diagrama de estrutura composta para a colaboração "Devolver Carro", que inclui o caso de uso "Devolver Carro" e suas interações relacionadas, como "Efetuar Pagamento" e "Emitir Nota Fiscal de Serviço". Esse diagrama destaca a integração de seus componentes na conclusão do processo de um aluguel, onde cada devolução envolve: Disciplina ANÁLISE ORIENTADA A OBJETOS A recuperação do objeto aluguel (AluguelDevolucao), a partir do qual a devolução será processada. A interação com o módulo de pagamento (Pagamento), indicando uma integração funcional com outro segmento do sistema. O objeto carro (Carro), que precisa ter seu status atualizado para "Manutenção Interna" assim que a devolução do carro for con�rmada. Figura 4 | Diagrama de estrutura composta – Devolver Carro. Fonte: Catarino (2020, p.). Esse diagrama de estrutura composta é fundamental para apoiar a modelagem comportamental do sistema, ajudando a solidi�car a compreensão de como cada caso de uso opera durante a execução do sistema e melhorando a percepção do contexto operacional do sistema. Diagrama de máquina de estados Em seguida, iniciaremos a modelagem dos estados para objetos cujos estados são cruciais. Considerando o contexto e as regras de negócio já estabelecidas no estudo de caso, as classes "Reserva", "Carro", e "Pessoa" foram identi�cadas no diagrama de classes como possuidoras de estados relevantes. Adicionalmente, a classe "AluguelDevolucao" também foi de�nida com estados importantes para melhorar o controle e a e�ciência das consultas e relatórios. Conforme Booch, Jacobson e Rumbaugh (2006, p. 285), o diagrama de máquina de estados é descrito como um modelo que "especi�ca as sequências de estados pelos quais um objeto passa ao longo de sua vida, em resposta a eventos, e suas reações a esses eventos". Ao desenvolver o diagrama de máquina de estados, é essencial identi�car as regras de negócio que se aplicam aos objetos com estados relevantes, de�nindo de maneira clara os estados e suas transições, que são os componentes fundamentais do diagrama. Disciplina ANÁLISE ORIENTADA A OBJETOS A seguir, estão detalhadas as regras de negócio que governam as transições de estados para cada classe e o respectivo diagrama de máquina de estados. Para os objetos da classe "Pessoa", que podem ser uma pessoa física atuando como cliente ou uma pessoa jurídica representando uma empresa, os estados de�nidos são: Ativa, Preferencial, Inadimplente e Encerrada. As regras especí�cas são: Ao ser cadastrada, toda pessoa deve automaticamente ser classi�cada como Ativa. Uma pessoa Ativa torna-se Preferencial após realizar o décimo aluguel. Uma pessoa Ativa pode tornar-se Inadimplente caso falhe no pagamento de um aluguel. Uma pessoa Ativa pode ser classi�cada como Encerrada se a gerência determinar por um motivo especí�co. Uma pessoa Preferencial pode tornar-se Inadimplente se um aluguel não for pago dentro de 30 dias. Uma Pessoa Inadimplente pode retornar ao estado Ativa, caso o pagamento em atraso seja efetuado. Uma pessoa Encerrada não pode transitar para outro estado. O diagrama de máquina de estados, apresentado na Figura 5, ilustra os estados de�nidos para a classe "Pessoa" e suas transições de estado, que são marcadas com condições de guarda conforme as regras de negócio estabelecidas. Figura 5 | Diagrama de máquina de estados – Classe Pessoa. Fonte: Catarino (2020, p.). Para os objetos da classe "Reserva", os estados de�nidos são: Realizada, Con�rmada e Cancelada. As regras estabelecidas para essas transições de estado são: Ao ser cadastrada, toda reserva deve automaticamente entrar no estado Realizada. Disciplina ANÁLISE ORIENTADA A OBJETOS Uma reserva no estado Realizada deve mudar para Con�rmada uma vez que o aluguel associado seja efetuado. Uma reserva Realizada pode ser alterada para Cancelada, caso o cliente ou o gerente decida pelo cancelamento. Reservas nos estados Con�rmada ou Cancelada não devem transitar para outros estados. O diagrama de máquina de estados, mostrado na Figura 6, destaca os estados de�nidos para a classe "Reserva". As transições entre esses estados são claramente marcadas com condições de guarda, re�etindo as regras de negócio descritas. Figura 6 | Diagrama de máquina de estados – Classe Reserva. Fonte: Catarino (2020, p.). Para os objetos da classe "Carro", os estados de�nidos são: Disponível, Alugado, Manutenção Interna, Manutenção Externa e Inativo. Seguem as regras especí�cas para essas transições de estado: Um carro, ao ser cadastrado, entra automaticamente no estado Disponível. Um carro Disponível muda para Alugado assim que um aluguel é efetuado. Um carro Alugado deve ser colocado em Manutenção Interna após sua devolução. Um carro em Manutenção Interna retorna ao estado Disponível após a conclusão da vistoria técnica e lavagem. Um carro em Manutenção Interna pode mudar para Manutenção Externa se o gerente determinar, devido a problemas técnicos que não possam ser resolvidos internamente. Um carro Disponível pode ser colocado em Manutenção Interna por decisão gerencial devido a razões pontuais. Um carro em Manutenção Externa deve voltar para Manutenção Interna para uma inspeção geral após os reparos externos. Um carro em Manutenção Interna pode ser classi�cado como Inativo por decisão da gerência. Um carro no estado Inativo não transita para outro estado. O diagrama de máquina de estados, apresentado na Figura 7, ilustra os estados de�nidos para a classe "Carro", e as transições entre esses estados são claramente indicadas com condições de guarda, re�etindo as regras de negócio estipuladas. Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 7 | Diagrama de máquina de estados – Classe Carro. Fonte: Catarino (2020, p.). Para os objetos da classe “AluguelDevolução”, de�nimos estados especí�cos para a fase de aluguel e devolução do veículo. Para o lançamento de um aluguel, os estados são: Realizado, Registrado e Cancelado. As regras aplicáveis são: Um aluguel, ao ser lançado, entra automaticamente no estado Realizado. Um aluguel Realizado transita para o estado Registrado uma vez que o aluguel seja con�rmado. Um aluguel Realizado pode ser alterado para Cancelado se o aluguel não for con�rmado por algum motivo. Para a fase de devolução dos carros alugados, os estados de�nidos são: Recuperado, Atualizado e Cancelado. As regras para estas transições são: Ao ser lançada, toda devolução de carro assume automaticamente o estado Recuperado. Do estado Recuperado, a devolução passa para Atualizado quando a devolução do carro é con�rmada. Do estado Recuperado, a devolução pode passar para Cancelado se a devolução do carro não for con�rmada por algum motivo. Disciplina ANÁLISE ORIENTADA A OBJETOS O diagrama de máquina de estados, apresentado na Figura 8, ilustra os estados de�nidos para a classe “AluguelDevolução”, com transições de estados claramente indicadas por condições de guarda, re�etindo as regras de negócio estabelecidas. O diagrama destaca dois estados compostos: um para a ocorrência do aluguel e outro para a devolução do carro, evidenciando que ambos ocorrem em períodos distintos, com a devolução funcionando como uma atualização ou "baixa" do aluguel inicial. Figura 8 | Diagrama de máquina de estados – Classe AluguelDevolucao. Fonte: Catarino (2020, p.). No diagrama, é possível observar que, em ambos os estados compostos, uma ação de saída (cláusula “Exit”) é indicada, associando a operação `atualizarSituacaoCarro` aos subestados “Registrando” e “Atualizando” dentro dos estados “Alugando” e “Devolvendo”, respectivamente. Conforme o processo avança, após o registro de um aluguel, a situação do carro é atualizada para “Alugado”. Em seguida, quando a devolução do carro é efetivada, a situação deve ser alterada para “Manutenção Interna”. Durante a fase de implementaçãodo processo de desenvolvimento do sistema, a especi�cação detalhada no diagrama de máquina de estados será crucial para apoiar a implementação das classes de forma consistente com as regras de negócio estabelecidas para os estados dos objetos no sistema. Essa abordagem assegura que as transições de estado e as ações Disciplina ANÁLISE ORIENTADA A OBJETOS associadas sejam corretamente incorporadas e funcionem conforme o planejado, re�etindo os requisitos e �uxos de trabalho de�nidos. Diagrama de atividades e diagrama de sequência Considerando que os casos de uso estão de�nidos, é crucial avançar na modelagem comportamental do sistema para uma compreensão mais profunda da lógica operacional de cada caso de uso. A UML não prescreve uma técnica especí�ca para modelagem comportamental ou de interação, deixando essa escolha para o analista de sistemas ou para a metodologia de desenvolvimento da empresa. É responsabilidade do analista determinar a técnica mais adequada de modelagem comportamental da UML com base nas características e na aplicabilidade de cada caso de uso. Nesse contexto, optamos pela técnica de diagrama de atividades para detalhar o caso de uso “Reservar Carro”. Segundo Bezerra (2014, p. 307), o diagrama de atividades pode ser visto como uma extensão dos �uxogramas. Além de possuir toda a semântica existente em um �uxograma, o diagrama de atividade possui notação para representar ações concorrentes, juntamente com a sua sincronização. Conforme descrito no cenário principal do caso de uso "Reservar Carro", descrito no Quadro 1, a Figura 9 apresenta o diagrama de atividades, organizado em �uxos de controle sequencial. Seguindo as diretrizes da UML, os nomes dos elementos básicos do diagrama, como Atividade ou Nó de Ação, devem iniciar com um verbo no in�nitivo, re�etindo a perspectiva de execução do sistema. Por exemplo, se o cliente fornece os dados, o sistema é representado como recebendo ou aceitando esses dados. Uma Atividade, nesse contexto, é uma sequência de tarefas dentro de um �uxo de trabalho que de�ne o comportamento de um processo e consiste em várias ações. Documentação do caso de uso – Reservar Carro: Nome do caso de uso: Reservar Carro. Descrição: Cliente solicita reservar um carro. Ator principal: Cliente. Cenário principal: 1. Cliente solicita reserva de carro. 2. Cliente informa dados (loja/�lial, data e hora) da retirada do veículo. 3. Sistema recupera lojas cadastradas para retirada. 4. Cliente escolha loja para retirada. 5. Cliente informa dados (loja/�lial, data e hora) da devolução do veículo. �. Sistema recupera lojas cadastradas para devolução. 7. Cliente seleciona loja para devolução. �. Sistema recupera grupos de carros disponíveis no período indicado. 9. Cliente seleciona o grupo de carro desejado. 10. Sistema recupera itens opcionais do carro. Disciplina ANÁLISE ORIENTADA A OBJETOS 11. Cliente informa itens opcionais do carro desejado. 12. Cliente acessa sua conta pessoal. 13. Sistema recupera dados do cliente. 14. Sistema calcula valor total da reserva. 15. Cliente con�rma reserva. 1�. Sistema registra reserva. 17. Sistema disponibiliza opção de imprimir comprovante da reserva. 1�. Sistema envia por e-mail comprovante da reserva. 19. Sistema envia SMS comprovante da reserva. Quadro 1 | Documentação do caso de uso – Reservar Carro. Fonte: Catarino (2020,p.). No diagrama de atividades mostrado na Figura 9, observa-se que alguns nós de ação, como "Recuperar lojas/�liais para retirada", interagem com o nó de objeto "FilialLoja", e "Recuperar grupos de carros disponíveis para reserva" interage com "GrupoCarro", entre outros. No diagrama, os elementos representados por retângulos pequenos com bordas arredondadas e um nome centralizado em cinza são nós de ação. Exceção feita ao elemento "Manter cliente", que é branco e representa uma atividade ligada ao caso de uso de cadastrar um novo cliente. Por convenção da ferramenta CASE Visual Paradigm, o nome da Atividade também é centralizado, mas posicionado na parte superior do retângulo. Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 9 | Diagrama de atividades – Reservar Carro. Fonte: Catarino (2020, p.). Siga em Frente... Para �nalizar a modelagem comportamental dos principais casos de uso, na sequência apresentamos os diagramas de sequência correspondentes aos casos de uso “Alugar Carro” e “Devolver Carro”. Disciplina ANÁLISE ORIENTADA A OBJETOS Na modelagem da atividade de análise, recomenda-se utilizar o diagrama de sequência para descrever a realização dos casos de uso, representando os objetos que colaboram entre si a partir da troca de mensagens entre eles. Segundo Bezerra (2014, p. 193), “[…] o objetivo do diagrama de sequência é apresentar as interações entre objetos na ordem temporal em que elas acontecem”. Os principais elementos que compõem o diagrama de sequência são: Linha de Vida, Ator, Objeto, Foco de Controle e as Mensagens do tipo – síncrona, assíncrona, de retorno e de autochamada. A Figura 10 ilustra o diagrama de sequência correspondente ao caso de uso “Alugar Carro”. O diagrama ilustra a interação entre os elementos ator Cliente; a Linha de Vida “Form_Alugar Carro” que representa a interface grá�ca correspondente ao caso de uso, sendo que, a partir dela, o ator interage com o sistema; e as linhas de vida “Aluguel:AluguelDevolucao”, “reserva:Reserva”,”pessoaFisica:PessoaFisica”, “�lialLoja:FilialLoja”, “carro:Carro” e “itemAdicional:ItemAdicional”, que representam os objetos que trocam as mensagens durante a realização do caso de uso. As mensagens 7 e 7.1 fazem parte de um fragmento combinado do tipo loop, indicando que vários itens adicionais podem ser selecionados para o carro alugado, enquanto o cliente indicar. Finalizando o processo do aluguel, ao registrar o aluguel do carro é indicado um fragmento de interação que é disparado para chamar o caso de uso de “Emitir Contrato de Aluguel”. Lembre-se de que a representação dos fragmentos combinados ou dos fragmentos de interação possibilita o alinhamento de interações, sendo que cada fragmento representa uma interação independente e o mesmo fragmento de interação pode ser utilizado em vários diagramas de sequência. A Figura 11 ilustra o diagrama de sequência correspondente ao caso de uso “Devolver Carro”. O diagrama ilustra a interação entre os elementos ator Cliente; a linha de vida “Form_Devolver Carro” que representa a interface grá�ca correspondente ao caso de uso, sendo que, a partir dela, o ator interage com o sistema; e as linhas de vida “Aluguel:AluguelDevolucao” e “carro:Carro”, que representam os objetos que trocam as mensagens durante a realização do caso de uso. Após o cliente informar os dados do pagamento do aluguel, é indicado o fragmento de interação que é disparado para chamar o caso de uso “Efetuar Pagamento”. Por �m, outro fragmento de interação que chama o caso de uso é “Emitir Nota Fiscal de Serviço”. Assim como as demais técnicas de modelagem da UML que podem ser apresentadas em diferentes níveis de detalhamento, o mesmo diagrama de sequência pode ser re�nado em conformidade com padrões de implementação e compor a modelagem da atividade de projeto. Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 10 | Diagrama de sequência – Alugar Carro. Fonte: Catarino (2020, p.). Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 11 | Diagrama de comunicação – Devolver Carro. Fonte: Catarino (2020, p.). Vamos Exercitar? Considerando as regras de�nidas para as transições entre os estados dos objetos da classe “Caixa”, segue o diagrama de máquina de estados, como proposta de uma solução. Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 12 | Diagrama de máquina de estado – Classe Caixa. Fonte: Catarino (2020, p.). A Figura 13 mostra o diagrama de visão geral de interação, que ilustra o processo completo de locação de um carro, englobando todos os casos de uso associados, como o cadastramento de um cliente, a reserva de um carro, o aluguel de um carro e a devolução do carro: Este diagrama é uma adaptaçãodo diagrama de atividades, combinando diferentes tipos de diagramas de interação para mostrar um processo geral. No diagrama, são empregados dois tipos de quadros: 1. Quadros de interação: incluem a representação completa de qualquer tipo de diagrama de interação. 2. Quadros de ocorrência de interação: fazem referência a um diagrama de interação existente, mas sem mostrar todos os detalhes. Cada quadro de ocorrência de interação no diagrama da Figura 13 destaca os diagramas de sequência para cada caso de uso envolvido no processo de locação de um carro. Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 13 | Diagrama de visão geral de interação – Locar Carro. Fonte: Catarino (2020, p.). Disciplina ANÁLISE ORIENTADA A OBJETOS Saiba mais O livro UML e C++ é um guia autoexplicativo para analistas e desenvolvedores de software. Ele ensina como, realmente, praticar modelagem orientada a objeto usando a notação da UML e implementar o modelo com C++. Quer ler mais sobre os diagramas de estrutura composta? Acesse o livro UML Essencial e leia o Capítulo 13. O livro Utilizando UML e Padrões apresenta como essa linguagem é aplicada durante um projeto. Referências BEZERRA, E. Princípios de análise e projeto de sistemas com UML. 3. ed. Rio de Janeiro: Elsevier, 2014. BOOCH, G.; RUMBAUGH, J.; JACOBSON, I. UML: guia do usuário. 2. ed. Rio de Janeiro: Campus, 2006. CATARINO, I. C. S. Análise orientada a objetos. Londrina: Editora e Distribuidora Educacional S.A., 2020. GUEDES, G. T. A. UML: uma abordagem prática. 3. ed. São Paulo: Novatec, 2018. MEDEIROS, E. S. Desenvolvendo software com UML 2.0: de�nitivo. São Paulo: Pearson, 2004. Aula 3 Transição de análise para projeto Transição de análise para projeto Este conteúdo é um vídeo! Para assistir este conteúdo é necessário que você acesse o AVA pelo computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo para assistir mesmo sem conexão à internet. Dica para você https://plataforma.bvirtual.com.br/Leitor/Publicacao/40/pdf/0 https://integrada.minhabiblioteca.com.br/reader/books/9788560031382/epubcfi/6/2%5Bidloc_000.xhtml-itemref%5D!/4%5Beid1%5D/2%5Beid2%5D%4050:3 https://integrada.minhabiblioteca.com.br/reader/books/9788577800476/pageid/0 Disciplina ANÁLISE ORIENTADA A OBJETOS Aproveite o acesso para baixar os slides do vídeo, isso pode deixar sua aprendizagem ainda mais completa. Bem-vindo à nossa videoaula focada em modelagem de projeto, modelagem de classe de projeto e re�namento dos aspectos comportamentais. Ao longo desta aula, você aprenderá a estruturar projetos e�cientemente, criar classes de projeto claras e re�nar comportamentos essenciais, habilidades cruciais para o sucesso na sua carreira de desenvolvedor. Esses conceitos não só aprimoram sua capacidade técnica, mas também elevam sua visão estratégica em projetos complexos. Não perca a oportunidade de aprofundar seu conhecimento. Ponto de Partida Caro aluno, nesta aula, apresentaremos a transição da análise para o projeto no desenvolvimento de sistemas orientados a objetos, considerando a adoção da Linguagem de Modelagem Uni�cada (UML – Uni�ed Modeling Language) e os princípios do Processo Uni�cado (PU – Uni�ed Process), que surgiu para apoiar a UML. O PU enfatiza o desenvolvimento orientado a casos de uso, de forma iterativa e incremental, fornecendo uma maneira sistemática e evolutiva de modelar sistemas sob diferentes aspectos de análise e detalhamento. Lembre-se de que a UML não distingue a modelagem das atividades de análise e projeto em um processo de desenvolvimento de software. A atividade de projeto é uma extensão re�nada dos diagramas elaborados na análise, com detalhes aplicados à implementação, e a análise e o projeto podem ocorrer simultaneamente. A decisão de trabalhar com modelagem simultânea ou de apresentar uma única modelagem para as atividades de análise e projeto com diferentes perspectivas de visão é de�nida pela metodologia de desenvolvimento do sistema, conforme a preferência de cada equipe de desenvolvedores ou empresa. Nas aulas anteriores, abordamos todas as características das técnicas de modelagem da UML. Além disso, você compreendeu que a UML descreve um sistema em três principais perspectivas: estrutural, que enfatiza a visão estática do sistema; funcional, que representa as funcionalidades do sistema; e dinâmica, que representa o comportamento do sistema em tempo de execução. Assim, dentre as técnicas de modelagem propostas pela UML – estruturais, comportamentais e de interação –, o importante é saber de�nir quais técnicas são ideais para a modelagem de análise e de projeto, conforme o tipo e domínio do sistema. Nesta aula, você compreenderá os pontos essenciais do detalhamento dos aspectos estruturais do diagrama de classes. Veremos como apresentar o diagrama de classes da atividade de projeto, de�nir o tipo de dados de cada atributo, listar todas as operações identi�cadas na modelagem dos diagramas comportamentais e de interação, e revisar os relacionamentos. Para você exercitar o que aprendeu, escreva com suas palavras como deve ser o re�namento dos diagramas elaborados na análise, com detalhes aplicados à implementação. Além disso, apresente a importância deste re�namento e a utilização de estereótipos de classes. Disciplina ANÁLISE ORIENTADA A OBJETOS Bons estudos! Vamos Começar! Modelagem de projeto Dependendo do domínio e da complexidade dos sistemas de software, é essencial fornecer diversas perspectivas da modelagem orientada a objetos, abrangendo diferentes aspectos de análise e detalhamento. Isso pode ser feito por meio de uma única modelagem de análise e projeto ou por meio de modelagens distintas para essas atividades. Conforme o Processo Uni�cado de desenvolvimento de software, que enfatiza a iteração, a análise e o projeto são atividades integradas que ocorrem ao longo das fases de Concepção, Elaboração, Construção e Transição (Pressman, 2016). No entanto, ao utilizar a UML para a modelagem de sistemas orientados a objetos, não há uma regra especí�ca sobre quais técnicas de modelagem estrutural ou comportamental devem ser adotadas e em que momento aplicá-las. Essa decisão cabe ao analista de sistemas, de acordo com a metodologia da empresa de desenvolvimento. É crucial compreender que a UML oferece uma maneira sistemática e evolutiva de modelar sistemas orientados a objetos em diversas perspectivas estáticas e dinâmicas, utilizando suas técnicas de modelagem estrutural, comportamental e de interação. Na atividade de análise, a modelagem especi�cada na análise de requisitos é desenvolvida, concentrando-se na solução do problema por meio da abstração, identi�cação, de�nição e documentação do que o sistema deve fazer, considerando a visão lógica do negócio, independentemente das tecnologias utilizadas na implementação do sistema. Posteriormente, essa análise especi�cada é transformada em projeto, com novos detalhes e re�namentos que de�nem os aspectos físicos do sistema e as tecnologias a serem adotadas na implementação. Segundo Bezerra (2014), no desenvolvimento de sistemas orientados a objetos, as mesmas técnicas de modelagem são utilizadas tanto na análise quanto no projeto, caracterizando uma uniformidade na modelagem do sistema durante o desenvolvimento. No entanto, essa uniformidade pode obscurecer a distinção entre o que é especi�cado na análise e o que é feito no projeto. Assim, pode-se dizer que a modelagem da análise transforma-se na modelagem de projeto à medida que o desenvolvimento do sistema avança. Como re�namento dos aspectos estáticos e estruturais das técnicas de modelagem da UML na atividade de projeto, o foco principal está na técnica de modelagem estrutural, o diagrama de classes. As recomendações são: 1. Re�namento de classes: de�nir as classes de projeto ou criar novas classes. Uma classe de análise pode resultar em várias classes de projeto. 2. De�nição de estereótipos: classi�car as classes em estereótipos de fronteira (>), controle (>) ou entidade(>). Disciplina ANÁLISE ORIENTADA A OBJETOS 3. Tipo de dados: estabelecer o tipo de dados de cada atributo de acordo com a linguagem de programação que será utilizada na implementação. 4. Detalhamento de operações: listar todas as operações identi�cadas nos diagramas comportamentais e de interação. 5. Revisão de visibilidade: de�nir a visibilidade das classes e operações, estabelecendo o nível de acessibilidade de atributos ou operações por outros objetos, que pode ser privada, pública, protegida ou de pacote. 6. Revisão de relacionamentos: revisar os tipos de relacionamentos entre as classes, como associação (incluindo associação re�exiva, binária, ternária, classe associativa e agregação), generalização, dependência ou realização, além de indicar a navegabilidade de cada associação. 7. De�nição de classes abstratas e interfaces: especi�car classes abstratas, interfaces, padrões de projeto (design patterns), componentes de software reutilizáveis, frameworks e demais detalhes pertinentes às tecnologias de desenvolvimento a serem utilizadas durante a implementação, de�nindo assim a arquitetura de um sistema orientado a objetos. Modelagem de classe de projeto As boas práticas da engenharia de software enfatizam a redução dos esforços e custos de produção por meio da reutilização de software. Isso pode ser alcançado utilizando recursos como componentes de software e frameworks usuais para desenvolvimento web e de aplicações móveis, aplicados às diferentes tecnologias de desenvolvimento de software. Assim, ao adotar esses recursos que agilizam o desenvolvimento de software, eles devem ser integrados à modelagem de projeto, estabelecendo a arquitetura do software (Rumbaugh, 1997). Na representação do diagrama de classes na atividade de projeto, é importante revisar os relacionamentos estabelecidos entre as classes de objetos. Os relacionamentos usuais no diagrama de classes de análise são do tipo associação e generalização. No entanto, na versão do diagrama de projeto, é comum incluir componentes de software e aplicar design patterns, o que pode introduzir relacionamentos do tipo realização e dependência. Vamos revisar os conceitos referentes a esses tipos de classes: Realização: relacionamento que modela a conexão entre uma interface e uma classe ou componente, na qual um dos elementos especi�ca um contrato de uso com o outro. A representação grá�ca é uma linha tracejada com uma grande seta vazia, apontando para o elemento que especi�ca o contrato. Dependência: relacionamento de utilização entre classes, indicando que uma alteração na especi�cação de um elemento pode afetar outro que o utiliza. A representação grá�ca é uma linha tracejada, apontando para o item do qual o outro depende. Ainda na de�nição das classes de projeto, é necessário de�nir o estereótipo das classes. Um estereótipo representa uma classi�cação do elemento. Alguns estereótipos de classe adotados Disciplina ANÁLISE ORIENTADA A OBJETOS no diagrama de classes de projeto são (Bezerra, 2014): De fronteira (>): identi�ca uma classe que serve de comunicação entre os atores externos e o sistema, geralmente associada à interface do sistema. É importante em sistemas que requerem a de�nição de uma interface especí�ca. De controle (>): identi�ca classes que intermediariam as classes de fronteira e as outras classes do sistema. Os objetos de controle interpretam eventos sobre os objetos de fronteira e os retransmitem para os objetos das classes de entidade. De entidade (>): também chamadas de classes do negócio, representam os conceitos do domínio do sistema, contendo informações recebidas ou geradas pelo sistema. Baseando-se nessas classes, de�ne-se quais objetos devem ser persistentes, geralmente armazenados em um sistema de gerenciamento de banco de dados. A Figura 1 ilustra um recorte do diagrama de classes de projeto do sistema “Locação de Veículos”, focando na classe “Reserva”, correspondente ao caso de uso “Reservar Carro”. Apresenta parte do re�namento da classe com os aspectos sugeridos anteriormente. Por simpli�cação, apenas o re�namento de uma classe foi exempli�cado. Em uma situação real, todas as classes de análise devem ser consideradas. Figura 1 | Recorte do diagrama de classes (Projeto) – md_Locacao_dc. Fonte: Catarino (2020, p.). O diagrama de classes na atividade de projeto complementa os elementos do diagrama, permitindo enriquecer os detalhes físicos, obtendo um modelo su�cientemente completo e Disciplina ANÁLISE ORIENTADA A OBJETOS aproximando-o da implementação real. A Figura 2 ilustra uma visão do diagrama de classes de projeto do pacote "md_Locacao_dc", re�nado com a de�nição do tipo de dados dos atributos correspondentes à linguagem de programação Java; a indicação do estereótipo das classes do tipo entidade (>); e a representação das classes de�nidas com o estereótipo enumeração (>), correspondentes aos valores do atributo situação das classes "Reserva", "Carro" e "Pessoa" (Catarino, 2020). Foi estabelecido o relacionamento do tipo dependência entre as classes enumeradas e as classes que as referenciam. No entanto, não é obrigatório estabelecer esses relacionamentos de dependência entre essas classes. Além disso, a indicação da navegabilidade nas associações binárias de�ne a referência entre os objetos, sendo que a ausência da indicação de navegabilidade representa a referência bidirecional entre os objetos associados. Figura 2 | Diagrama de classes (Projeto) – md_Locacao_dc. Fonte: Catarino (2020, p.). No diagrama também foi indicada a restrição, também conhecida como classi�cador do relacionamento de generalização. Os classi�cadores de generalização são usados para de�nir melhor a semântica das classes especializadas derivadas da classe genérica. Eles são escritos entre chaves, próximos à seta de generalização, e os tipos prede�nidos para classes especializadas incluem (Rumbaugh, 1997): Completo: indica que qualquer instância da superclasse (abstrata) será uma instância de uma das subclasses especializadas. Disciplina ANÁLISE ORIENTADA A OBJETOS Incompleto: indica que pode existir um conjunto de objetos de novas subclasses não representadas, e uma instância do tipo pode existir apenas da própria superclasse (concreta). Disjunção: indica que qualquer instância da superclasse pode ser uma instância de apenas uma das subclasses, ou seja, exclusiva de uma subclasse. Sobreposição: indica que uma instância da superclasse pode pertencer a mais de uma subclasse. Na UML 2.0 até a versão 2.4.1, o classi�cador de generalização padrão era “{incompleta, disjunção}”. Na UML 2.5, o padrão foi alterado para “{incompleta, sobreposição}”. Portanto, se o contexto do domínio do sistema for diferente desse padrão, deve-se representar o classi�cador da generalização; caso contrário, ele pode ser suprimido. A especi�cação UML não determina como essa equivalência semântica será implementada nem como a integridade entre os objetos será mantida a partir da indicação do classi�cador de generalização. Siga em Frente... Re�namento dos aspectos comportamentais A modelagem de projeto pode ser complementada com diagramas comportamentais e de interação adicionais da UML que não foram especi�cados na análise, ou os diagramas de análise podem ser re�nados com detalhes para aplicação na implementação. Segundo Bezerra (2014, p. 177), “[…] embora o estudo dos aspectos dinâmicos do sistema já comece na etapa de análise, é na fase de projeto que esse estudo se concretiza e onde se realiza o detalhamento das colaborações nas quais cada classe participa”. Na modelagem comportamental de projeto com a UML, é recomendável evoluir o modelo de casos de uso detalhando todos os relacionamentos de inclusão (>) e extensão (>) entre os casos de uso. É necessário também garantir a consistência das operações listadas nas classes de objetos com as mensagens que executam operações indicadas nos diagramas de sequência e com as ações de�nidas nosdiagramas de atividades. Além disso, é importante revisar as ações de estados representadas pelas cláusulas prede�nidas “entry, exit e do” em cada estado nos diagramas de máquina de estados, em que cada ação de estado deve indicar uma operação nas respectivas classes de objetos. A modelagem comportamental deve começar na atividade de análise para representar os aspectos dinâmicos do sistema e ser posteriormente detalhada na modelagem de projeto. A modelagem de projeto também inclui a de�nição de algoritmos para implementação das funcionalidades do sistema, utilizando o diagrama de atividades da UML para especi�car os algoritmos. Além disso, pode-se elaborar o projeto das interfaces grá�cas (por exemplo, formulários/telas e relatórios) correspondentes aos casos de uso que requerem uma interface amigável, com alta usabilidade e facilidade de operação, seguindo os princípios básicos da Interação Humano-Computador (IHC). Disciplina ANÁLISE ORIENTADA A OBJETOS De forma geral, Bezerra (2014) sintetiza as seguintes características da evolução da documentação de análise para projeto: Re�namento dos aspectos estáticos e estruturais da modelagem do sistema. Detalhamento dos aspectos dinâmicos da modelagem do sistema. Detalhamento da arquitetura do sistema, com base na decomposição lógica e física do sistema. De�nição dos mecanismos de armazenamento dos dados manipulados pelo sistema. De�nição dos algoritmos a serem utilizados na implementação do sistema. Elaboração do projeto da interface grá�ca das funcionalidades do sistema. Finalmente, toda a documentação da atividade de projeto do sistema deve ser estabelecida de acordo com a metodologia da empresa de desenvolvimento, atendendo às características e particularidades do domínio do sistema de software. Vamos Exercitar? O re�namento dos diagramas da UML elaborados na fase de análise para a implementação é um processo essencial para garantir que os modelos estejam prontos para serem transformados em código executável. Inicialmente, é crucial revisar os requisitos funcionais e não funcionais do sistema para assegurar que todos os aspectos importantes estejam contemplados. Em seguida, as classes identi�cadas durante a análise devem ser detalhadas com precisão. Isso envolve a de�nição de atributos e métodos especí�cos, especi�cando tipos de dados e visibilidade (público, privado, protegido), além de detalhar as responsabilidades de cada classe. As relações entre as classes, como associações, heranças e agregações, também precisam ser claramente especi�cadas, incluindo a cardinalidade e a direção das associações, para garantir uma compreensão completa das interações entre os diferentes componentes do sistema. Durante o re�namento, é importante aplicar os estereótipos de classes da UML, como >, > e >, para categorizar as classes com base em suas responsabilidades. As classes > representam objetos de negócio e dados persistentes, como clientes ou produtos. As classes > servem como interfaces entre o sistema e os atores externos, facilitando a comunicação com o usuário ou outros sistemas. Já as classes > são responsáveis pela lógica de negócios e pelo controle do �uxo de atividades no sistema. A utilização adequada desses estereótipos ajuda a organizar o sistema de maneira mais estruturada, facilitando a manutenção e a escalabilidade. O re�namento dos diagramas também envolve a revisão dos diagramas de sequência e de colaboração para assegurar que o comportamento dinâmico do sistema esteja corretamente modelado. Isso inclui a validação do �uxo de mensagens entre os objetos e a con�rmação de que todas as interações necessárias são suportadas pela estrutura de classes de�nida. Além disso, é necessário atualizar os diagramas de estados e atividades, se aplicável, para re�etir com precisão os estados e as transições do sistema durante a execução. Disciplina ANÁLISE ORIENTADA A OBJETOS A importância desse re�namento reside na garantia de que o modelo está su�cientemente detalhado e livre de ambiguidades, permitindo que os desenvolvedores implementem o sistema com con�ança. Um modelo bem re�nado reduz os riscos de retrabalho e de erros durante a codi�cação, melhora a comunicação entre os membros da equipe e facilita a veri�cação e validação do sistema contra os requisitos iniciais. Em última análise, o re�namento cuidadoso dos diagramas da UML é um passo crucial para assegurar que o produto �nal atenda às expectativas dos stakeholders e funcione conforme planejado. Saiba mais A ferramenta online Miro pode ser utilizada para modelar diagramas de classes. Acesse o site MIRO e teste essa ferramenta para criar e re�nar os diagramas de classes. Para ler mais sobre o diagrama de classes, acesse o site e saiba mais sobre os componentes deste diagrama: Diagrama de Classes. O Model-Driven Development (MDD) é uma abordagem de engenharia de software que enfatiza a criação e utilização de modelos abstratos para guiar o desenvolvimento de sistemas. Nesse método, os modelos não são apenas documentação, mas artefatos ativos que direcionam a geração de código e a con�guração de sistemas. O MDD promove uma maior abstração no processo de design, permitindo que os desenvolvedores se concentrem na lógica de negócios e nas funcionalidades, ao invés de detalhes de implementação especí�cos da plataforma. Isso é alcançado por meio do uso de linguagens de modelagem, como UML (Uni�ed Modeling Language) e ferramentas especí�cas que podem transformar esses modelos em código executável. A abordagem MDD pode aumentar a produtividade, melhorar a portabilidade entre diferentes plataformas e facilitar a manutenção do software, visto que mudanças nos requisitos podem ser implementadas no nível do modelo e automaticamente re�etidas no código gerado. Para ler mais sobre esse assunto, acesse o artigo: Model-Driven Development. Referências BEZERRA, E. Princípios de análise e projeto de sistemas com UML. 3. ed. Rio de Janeiro: Elsevier, 2014. CATARINO, I. C. S. Análise orientada a objetos. Londrina: Editora e Distribuidora Educacional S.A., 2020. PRESSMAN, R.; MAXIM, B. Engenharia de software. 8. ed. Porto Alegre: AMGH, 2016. RUMBAUGH, J. et al. Modelagem e projetos baseados em objetos. Rio de Janeiro: Campus, 1997. https://miro.com/pt/diagrama/diagrama-classes-uml/ https://www.ibm.com/docs/pt-br/rational-soft-arch/9.6.1?topic=diagrams-class https://www.inf.ed.ac.uk/teaching/courses/seoc/2006_2007/resources/Mod_MDD1.pdf Disciplina ANÁLISE ORIENTADA A OBJETOS Aula 4 Aspectos de qualiade no desenvolvimento Aspectos de qualidade no desenvolvimento Este conteúdo é um vídeo! Para assistir este conteúdo é necessário que você acesse o AVA pelo computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo para assistir mesmo sem conexão à internet. Dica para você Aproveite o acesso para baixar os slides do vídeo, isso pode deixar sua aprendizagem ainda mais completa. Nesta aula, você explorará conceitos fundamentais de persistência de objetos para o modelo relacional, incluindo o mapeamento de associação binária, classe associativa, agregação, composição e generalização. Esses conteúdos são essenciais para a prática pro�ssional, pois garantem a e�ciência e a integridade dos dados em sistemas de banco de dados relacionais. Prepare-se para aprimorar suas habilidades e fortalecer seu conhecimento. Ponto de Partida Esta aula aborda o mapeamento de elementos do diagrama de classes para sistemas gerenciadores de bancos de dados relacionais (SGBDR), e tem como objetivo explorar a intersecção entre o desenvolvimento orientado a objetos e o armazenamento de dados em estruturas relacionais, um desa�o comum na engenharia de software. Ao desenvolver aplicações que utilizam bancos de dados, frequentemente precisamos traduzir nossos modelos de classes, tipicamente organizados em um diagrama de classes UML, para tabelas em um banco de dados relacional. Esse processo é crucial para a persistência de dados de forma e�cientee organizada. O diagrama de classes, uma das ferramentas mais utilizadas no design orientado a objetos, serve como um mapa que detalha os tipos de objetos a serem utilizados no sistema, suas inter- relações e outros atributos. Quando se trata de mapeá-los para um SGBDR, precisamos converter cada classe, atributo e relação em elementos equivalentes dentro de uma estrutura de banco de dados relacional, como tabelas, colunas e chaves estrangeiras. Esse mapeamento não é apenas uma tradução direta, mas também uma reinterpretação dos requisitos e comportamentos dos objetos em um novo contexto, o que pode incluir a normalização de dados e a implementação de restrições de integridade. Disciplina ANÁLISE ORIENTADA A OBJETOS Durante esta aula, vamos discutir técnicas e estratégias para realizar esse mapeamento de maneira e�caz. Abordaremos como os conceitos de herança, associação e agregação em um diagrama de classes podem ser representados em um banco de dados relacional. Com esses conhecimentos, você estará melhor preparados para projetar e implementar sistemas robustos que integrem e�cazmente o desenvolvimento orientado a objetos com a persistência relacional. Considere que você é o projetista de banco de dados, integrante da equipe de desenvolvedores responsável pelo sistema “Locação de Veículos”, e como parte da documentação referente a modelagem de dados você precisa apresentar o mapeamento das classes para tabelas do Banco de Dados Relacional (BDR) correspondente ao modelo de classes a seguir: Figura 1 Para especi�cação das tabelas, adote a notação “Nome da Tabela (coluna 1, coluna 2, coluna 3, coluna 4, coluna n)”, representando, assim, o esquema completo do banco de dados. Bom trabalho e ótimo estudo! Vamos Começar! Persistência de objetos para o modelo relacional Os princípios básicos do paradigma orientado a objetos e do modelo relacional são distintos. As tecnologias orientadas a objetos se baseiam no princípio do encapsulamento, em que os objetos Disciplina ANÁLISE ORIENTADA A OBJETOS são abstrações de comportamento (Guedes, 2018). No modelo relacional, os elementos correspondem a dados em formato tabular, utilizando um Sistema Gerenciador de Banco de Dados Relacional (SGBDR). Portanto, um aspecto importante na modelagem de projeto é o mecanismo de armazenamento persistente de dados, que corresponde ao mapeamento de classes de objetos para o modelo relacional. Para especi�car o mapeamento de classes para tabelas do modelo de dados relacional, é comum adotar técnicas de modelagem de dados e/ou de�nir o uso de frameworks de mapeamento objeto-relacional como estratégia de armazenamento persistente. Assim, como parte da documentação do projeto de banco de dados, deve-se apresentar pelo menos a construção do esquema do banco de dados. Considerando que foi de�nido o uso de SGBDR como mecanismo de armazenamento dos objetos, é necessário mapear os valores de atributos de objetos das classes persistentes para as tabelas de banco de dados relacional, com base no modelo de classes. A maioria das ferramentas CASE de modelagem orientada a objetos fornece a funcionalidade de mapeamento automático para geração de um esquema relacional a partir do modelo de classes e da de�nição do SGBDR a ser utilizado. No entanto, é importante que você conheça os procedimentos existentes para a conferência ou elaboração do mapeamento. Vamos conhecer algumas regras fundamentais para fazer o mapeamento de objetos para o modelo relacional. Primeiramente, deve-se identi�car se os objetos das classes são transientes ou persistentes. Normalmente, os objetos de entidade são persistentes e devem ser armazenados em meio físico durante a execução do sistema para serem manipulados. Os objetos transientes existem somente durante uma sessão de uso do sistema e geralmente são objetos de fronteira e de controle. Em seguida, as classes persistentes e seus relacionamentos são analisados, e as alternativas de mapeamento são aplicadas conforme indicado, mantendo uma padronização na representação das tabelas para constituir o esquema do Banco de Dados Relacional (BDR): 1. Identi�cação de objetos: determine se os objetos das classes são transientes (existem apenas durante uma sessão) ou persistentes (armazenados �sicamente). 2. Mapeamento de atributos: mapear os valores dos atributos das classes persistentes para as colunas das tabelas no banco de dados relacional. 3. Análise de relacionamentos: analise os relacionamentos entre as classes persistentes e aplique as regras de mapeamento para re�etir esses relacionamentos nas tabelas do banco de dados. 4. Uso de ferramentas CASE: utilize ferramentas CASE para automatizar a geração do esquema relacional, mas revise manualmente o mapeamento para garantir a precisão. Disciplina ANÁLISE ORIENTADA A OBJETOS Essas regras ajudam a criar um esquema de banco de dados relacional e�ciente e bem estruturado a partir do modelo de classes, facilitando a implementação e manutenção do sistema. Nome da tabela (coluna 1, coluna 2, coluna 3, coluna 4,… coluna n) Cada coluna representa um atributo da classe mapeada, no entanto, atenção aos atributos derivados, pois eles não são mapeados para uma coluna. Destaca-se a coluna que representa a chave primária com sublinhado simples e as colunas que representam chaves estrangeiras com sublinhado tracejado. Representa-se em cada tabela derivada de classe, no geral, uma coluna que indica o identi�cador (Id) para a chave primária. Essa estratégia de notação dos “Ids” de�ne a identidade independente dos objetos, conforme os princípios da orientação a objetos. Mapeamento de associação binária e mapeamento de classe associativa Mapeamento de associação binária: para as classes relacionadas à associação binária, com multiplicidade um-para-muitos, mapeia-se cada classe em uma tabela, conforme exemplo ilustrado na Figura 1. Figura 2 | Recorte do diagrama de classes com associação binária (um-para-muitos). Fonte: Catarino (2020, p.). Mapeamento: Marca (marcaId, nome). GrupoCarro (grupoCarroId, nome, descricao, valorDiaria, precoKm, marcaId). Carro (carroId, anoFabricacao, placa, anoModelo, renavam, chassi, km, imagem, observacao, situacao, combustivel, grupoCarroId). Em uma associação binária de multiplicidade um-para-um, é possível mapear as classes em tabelas separadas ou combinar os atributos de ambas em uma única tabela. A escolha entre Disciplina ANÁLISE ORIENTADA A OBJETOS essas opções geralmente depende das preferências do designer de banco de dados, considerando aspectos como extensibilidade, quantidade de tabelas e desempenho. A Figura 3 demonstra o mapeamento realizado em tabelas distintas. No exemplo apresentado, não são mostradas as outras classes que se associam a ambas as classes, as quais incluiriam outras chaves estrangeiras. Por isso, ao �nal de cada tabela que corresponde às classes, foi adicionada a sigla “demaisFK”. Esse formato também é utilizado em outros exemplos subsequentes. Figura 3 | Recorte do diagrama de classes com associação binária (um-para-um). Fonte: Catarino (2020, p.). Mapeamento: Reserva (reservaId, dataReserva, dataRetirada, horaRetirada, dataPrevDevolucao, situacao, observacao, demaisFK). AluguelDevolucao(aluguelDevolucaoId, dataAluguel, dataPrevDevolucao, valorKm, valorDiaria, numeroContrato, dataDevolucao, kmRodada, observacao, formaPagto, reservaId, demaisFK). Mapeamento de classe associativa: para as classes relacionadas com associação de classe associativa, mapeia-se cada classe em uma tabela, conforme exemplo ilustrado na Figura 3. Disciplina ANÁLISE ORIENTADA A OBJETOS Figura 4 | Recorte do diagrama de classes com classe associativa. Fonte: Catarino (2020, p.). Mapeamento: Carro (carroId, anoFabricacao, placa, anoModelo, renavam, chassi, km, imagem, observacao, situacao, combustivel, grupoCarroId). Opcionais (OpcionaisId, nome, descricao). CarroOpcionais (carroId, OpcionaisId, original). Para classes relacionadas com multiplicidade muitos-para-muitos, cria-se a terceira tabela