Análise e Projeto de Sistemas

Slides:



Advertisements
Apresentações semelhantes
Orientação a objetos identidade abstração classificação encapsulamento
Advertisements

Análise e Projeto Orientado a Objetos
Análise e Projeto Orientado a Objetos
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Engenharia de Software
UML Modelando um sistema.
Projeto 1.
Diagrama de Classes.
Diagrama de Classes continuação.
Engenharia de Software
UML – MODELAÇÃO DA ESTRUTURA Professor Sandro Carvalho.
Análise Orientada a Objetos
Linguagens de Modelagem para SMA
UML Diagrama de Classes elementos básicos. Contexto Os diagramas de classes fazem parte do da visão estática da UML. Os elemento desta visão são conceitos.
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Introdução ao paradigma de programação: Orientado a Objetos
Introdução a diagrama de classes e UML
Análise e Projetos de Sistemas UML-Linguagem de Modelagem Unificada Modelo de Dados com UML Diagrama de Classes Professor: Armando Hage.
O.O.H.D.M. Modelagem Conceitual
TÉCNICAS DE PROGRAMAÇÃO II
DIAGRAMA DE COMPONENTES
Diagrama de Classes e Diagrama de Objetos
Análise de Sistemas Análise e Projeto Prof. Jeime Nunes Site:
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Diagrama de Classes e Colaboração
DIAGRAMA DE CASO DE USO Prof. Fabíola Gonçalves C. Ribeiro.
DIAGRAMA DE CLASSE Modelagem de Software
Profa Simone Sawasaki Tanaka
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Diagrama de Classes George Gomes Cabral.
Orientação a Objetos Parte I
Marcio de Carvalho Victorino
Análise e Projeto de Sistemas
SISTEMAS DISTRIBUIDOS Aula 4
© Ricardo Pereira e Silva
Projeto Orientado aos Objetos Prof. Wolley W. Silva
Análise Orientado aos Objetos Prof. Wolley W. Silva
Programação Orientada à Objetos
Modelagem de Entidade/Objetos de Domínio com Diagrama de Classes
POO Aula 03 Projeto OO com UML Eduardo Figueiredo 11 de Março de 2010.
Generalização e herança Agregação e composição
Análise e Projeto de Sistemas
Orientação a Objetos com UML
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.
Introdução a Orientação a Objetos
Copyright © 2006 Qualiti. Todos os direitos reservados. Projetar Classes.
Orientação a Objetos com UML. Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes Análise e Projeto OO com UML e Padrões|
A linguagem unificada de modelagem
20/04/2017 Orientação a Objetos 1 1.
Projeto de Banco de Dados
Módulo II Capítulo 1: Orientação a Objetos
Engenharia de Software Orientada a Objetos
CIn-UFPE1 UML Uma linguagem unificada de modelagem Visão Geral.
Visão Geral de Orientação a Objetos com UML Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.
Visão Geral e Conceitos. Copyright © 2006 Qualiti. Todos os direitos reservados. Qualiti Software Processes Análise e Projeto OO com UML e Padrões| 2.
Diagrama de Classes Herança Dependências.
Projeto de Arquitetura de Software
Análise do Sistema Alexandre Mota
1 Especificação de Sistemas de Software e a UML. 2 Modelagem de sistema A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema.
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
Análise e Design de Software Site:
Visão Geral de Orientação a Objetos com UML Copyright © 2002 Qualiti. Todos os direitos reservados. Qualiti Software Processes OO e UML | 2 Objetivos.
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1 Análise e Projeto de Sistemas Modelagem de Requisitos com Casos de Uso.
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/41 Análise e Projeto de Sistemas Arquitetura de Software.
Engenharia de Software Orientada a Objetos Professor: Guilherme Timóteo Aula 3: – Modelagem de Classes (parte 2)
Análise Orientada a Objetos Por Patrícia Braga Centro Universitário Jorge Amado.
Análise e Projeto de Sistemas Análise & modelagem conceitual Prof. Edjandir Corrêa Costa
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Análise e Projeto de Sistemas Introdução ao Projeto Orientado a Objeto com UML CIn-UFPE

Revisar os princípios do paradigma de orientação a objetos Objetivos Revisar os princípios do paradigma de orientação a objetos Apresentar os conceitos de orientação a objetos com a notação UML correspondente Foco em aspectos estruturais: diagramas de classes CIn-UFPE

Características do projeto OO A funcionalidade do sistema é expressa em termos de serviços de objetos (agrupados em classes) Áreas de dados compartilhadas são eliminadas. Objetos se comunicam através de passagem de mensagens Pela própria natureza, objetos podem ser distribuídos Potencialmente, embutem características como abstração, encapsulamento, information hiding, modularidade e extensibilidade CIn-UFPE

Desenvolvimento orientado a objeto Análise, projeto e programação orientados a objeto são relacionados, mas são distintos Análise orientada a objeto trata do desenvolvimento de um modelo orientado a objeto do domínio da aplicação (independente da implementação) Projeto orientado a objeto trata do desenvolvimento de um modelo orientado a objeto voltado para a implementação dos requisitos Programação orientada a objeto trata da realização de um projeto orientado a objeto usando uma linguagem de programação OO, como Java ou C++ CIn-UFPE

Modelo de um objeto real Possui comportamento, estado e identidade entidade física, conceitual ou de software Possui comportamento, estado e identidade Exemplo: conta, funcionario, livro, ponto de venda, ... donut Um objeto representa uma entidade física, conceitual ou de software. Um objeto é uma manifestação concreta de uma abstração; uma entidade que encapsula estado e comportamento; uma instância de uma classe. O estado de um objeto é uma das possíveis condições que o objeto pode existir e normalmente muda com o passar do tempo; é um conjunto de propriedades que o objeto possui. Comportamento determina como um objeto age e reage a pedidos (para realização de operações) de outros métodos. É representado pelo conjunto de mensagens que o objeto é capaz de responder. Cada objeto possui também um identidade única no sistema, tornando assim possível que dois objetos mesmo com estados iguais possam ser identificados como diferentes. Um objeto é qualquer pessoa, lugar, evento, coisa, tela, relatório, ou conceito aplicável ao sistema. Um objeto pode ser qualquer coisa que faça parte do seu sistema. Os donuts são uma representação gráfica usada pela IBM para objetos. CIn-UFPE

Objetos em UML : Conta contaSaque contaSaque : Conta Apenas o nome da classe Nome da classe e do objeto Apenas o nome do objeto Os exemplos acima mostram as diferentes formas em que um objeto pode ser modelado em UML. CIn-UFPE

Classe Descrições de objetos com propriedades e comportamento comuns Abstração que enfatiza o que é relevante suprime o que não interessa Classes são fábricas de objetos Objetos são agrupados em classes Uma classe é uma descrição de um conjunto de objetos que compartilham os mesmos atributos, operações, relacionamentos e semântica (esses conceitos serão vistos mais adiante). A identificação das características relevantes (uso do princípio de abstração) e comuns a um conjunto de objetos e definição de classes ajuda a tratar a complexidade de sistemas. CIn-UFPE

Quantas classes temos aqui? Classes de Objetos Quantas classes temos aqui? Fonte: Rational CIn-UFPE

Classe em UML Conta estrutura comportamento Nome da Classe numero Atributos Operações numero saldo credito() debito() getSaldo() getNumero() estrutura comportamento O exemplo acima mostra como modelar uma classe em UML, identificando o seu nome, atributos e operações. A representação dos atributos e operações é opcional. CIn-UFPE

Classes: mais exemplos Indivíduo código : long sexo : char nome : String incluir() atualizar() CIn-UFPE

Classes: atributos Um atributo representa alguma propriedade que é compartilhada por todos os objetos da classe Os atributos descrevem os dados contidos nas instâncias de uma classe Em um dado momento, um objeto de uma classe conterá valores para todos os atributos descritos na sua classe CIn-UFPE

Atributos: notação Conta Atributos podem ser identificados apenas com nomes Conta numero: integer Saldo: real Atributos podem ter seus tipos (ou classes) especificados e terem valores padrão definidos Parede altura : real largura : real espessura : real viga : boolean = false CIn-UFPE

Objetos com atributos valorados : Conta numero = 21.342-7 saldo = 875,32 Valor do Atributo Conta numero saldo : Conta numero = 23.025-1 saldo = 500,00 O exemplo acima ilustra objetos com diferentes valores de atributos. CIn-UFPE

Classes: operações Uma operação é uma abstração de algum serviço que se pode requisitar a um objeto e que é compartilhado por todos os objetos da classe Um classe pode ter qualquer número de operações, inclusive nenhuma CIn-UFPE

Operações: notação Como para os atributos, pode-se especificar uma operação apenas com seu nome Conta Especificação das operações credito() debito() getSaldo() getNumero() Pode-se também especificar a assinatura da operação: seus parâmetros, o tipo desses parâmetros e o tipo de retorno CIn-UFPE

Classes: visibilidade Marcações de acesso podem ser usadas para especificar o tipo de acesso permitido aos atributos e operações + público: todos os objetos do sistema podem usar # protegido: qualquer descendente da classe pode usar - privado: somente a própria classe pode usar CIn-UFPE

Visibilidade no Rose público privado protegido CIn-UFPE

Comunicação entre objetos Conceitualmente, objetos se comunicam através da troca de mensagens. Componentes de uma mensagem Nome do serviço requisitado pelo objeto que está fazendo a chamada. Informação requerida para executar o serviço e o nome de um proprietário para o resultado do serviço. Na prática, mensagens são normalmente implementadas através de chamadas de procedimentos (operações) Nome = nome do procedimento. Informação = lista de parâmetros para o procedimento. CIn-UFPE

Exemplos de mensagem // Chama um método associado a um objeto buffer que // retorna o próximo valor no buffer v = circularBuffer.Get () ; // Chama o método associado ao objeto termostato // que define a temperatura a ser mantida thermostat.setTemp (20) ; CIn-UFPE

Componente Parte não trivial, quase independente, substituível de um sistema, que provê a realização de (uma/um conjunto de) interface(s) Exemplos um código fonte um componente executáve tabelas de bancos de dados Um componente é uma parte do sistema que provê a realização física de um conjunto de interfaces. Desenvolvimento baseado em componentes é a criação e implantação de software composto por componentes. CIn-UFPE

Componentes em UML <<EXE>> Arquivo executável Arquivo fonte <<EXE>> Arquivo executável Acima alguns exemplos de componentes são ilustrados em UML. CIn-UFPE

Pacote Mecanismo para organizar elementos em grupos Facilita entendimento do sistema Favorece modularidade e reuso em larga escala Essencial para estruturar sistemas complexos nome do pacote Um pacote representa um grupo de classes relacionadas, e possivelmente outros pacotes, de acordo com algum ponto de vista ou critério. O uso de pacotes para encapsular classes relacionadas favorece modularidade e consequentemente reuso em larga escala e manutenção, sendo assim essencial para estruturar sistemas orientados a objetos complexos. Quando o número de classes do seu sistema é muito alto, você deve organizá-las em pacotes para facilitar o seu entendimento CIn-UFPE

Subsistema União de pacote (agrupa outros elementos) classe (comportamento) Subsistema é um elemento que possui a semântica de um pacote, pois contém outros elementos, e uma classe, porque possui comportamento. O comportamento de um subsistema é provido pelas classes e subsistemas que ele contém. Um subsistema realiza uma ou mais interfaces, que definem o seu comportamento. CIn-UFPE

Subsistema em UML <<subsystem>> Nome do subsistema Subsistemas são representados em UML com um elemento de pacote com o estereótipo <<subsystem>>. CIn-UFPE

Relacionamentos Objetos e classes de objetos participam de relacionamentos com outros objetos e classes de objetos Tipos de relacionamento Associação simples agregação composição Dependência Generalização Realização CIn-UFPE

Navegabilidade de um relacionamento Em geral a navegação entre as classes de um relacionamento é bi-direcional Porém é possível limitá-la a apenas uma direção CIn-UFPE

Multiplicidade de um relacionamento Define quantos objetos participam do relacionamento O número de instâncias de uma classe relacionada a uma instância de outra classe Especificado em cada uma das pontas do relacionamento Multiplicidade indica, numa associação, quantos objetos de uma classe podem estar associados com uma instância da outra classe participante da associação. CIn-UFPE

Tipos de multiplicidade Não especificada Exatamente um Zero ou mais Muitos (mesmo que 0..*) Um ou mais Zero ou um Intervalo determinado Valores múltiplos 1 0..* * 1..* 0..1 2..4 2, 4..6 CIn-UFPE

Associação simples Relação estrutural entre classes Companhia Empregado 1..* * contrata 1 0..* CIn-UFPE

Associação unária Quando há um relacionamento de uma classe consigo própria CIn-UFPE

Relacionamentos e papéis Nome de papéis são úteis para distinguir relacionamentos entre o mesmo par de classes CIn-UFPE

Relacionamentos com atributos Modela as propriedades associadas com um relacionamento Para indicar os atributos de um relacionamento, usamos uma linha tracejada para unir o relacionamento às suas propriedades As propriedades devem ser representadas por uma classe CIn-UFPE

Exemplo de relacionamento com atributo CIn-UFPE

Agregação Uma forma especial de associação entre o todo e suas partes, no qual o todo é composto das partes Departamento Empresa Todo Parte Agregação CIn-UFPE

Composição Uma forma mais forte de agregação Há uma coincidência da vida das partes Uma vez criada a parte ela irá viver e morrer com o todo O “Todo” é responsável pelo gerenciamento da criação e destruição das partes CIn-UFPE

Exemplo de Composição CIn-UFPE Pedido -codigo: Integer +confirmar() +cancelar() -calcularTotal():Currency gerarNovoCodigo: String -codigo: Integer -dataRecebido -total: Currency Pedido -quantidade: Integer -preco: Currency Item de Pedido Produto * CIn-UFPE

Exemplo de diagrama de classe: Escola CIn-UFPE

Associação x Agregação x Composição Composição ou agregação? Na dúvida, use agregação! Agregação ou associação? Na dúvida, use associação! CIn-UFPE

Dependência Dependências são relações de uso mais fraco que associação Uma dependência indica que mudanças em um elemento (o “servidor”) podem afetar outro elemento (o “cliente”) Uma dependência entre classes indica que os objetos de uma classe usam serviços dos objetos de outra classe CIn-UFPE

Dependência Pode existir relacionamento de dependência entre vários elementos de UML Classe Cliente Fornecedor Componente Cliente Fornecedor Pacote PacoteCliente PacoteFornecedor Dependência Fonte: Rational CIn-UFPE

Generalização (ou herança) Uma generalização (também conhecida como herança) é um relacionamento entre um elemento mais geral (chamado de superclasse ou pai) e um mais específico (chamado de subclasse ou filho) Classes são organizadas numa hierarquia onde uma super classe é uma generalização de uma ou mais sub classes Uma sub classe herda os atributos e operações de sua super classe e pode adicionar seus próprios métodos ou atributos CIn-UFPE

Herança simples Classes herdando de apenas uma outra classe Figura Círculo raio centro desenhar() Retângulo vertices diagonal() Figura cor largura da linha girar(graus) selecionar() Subclasses Superclasse (pai) Quadrado Relacionamento de Generalização CIn-UFPE

Herança múltipla Classes herdando de mais de uma classe Herança Mamífero AnimalVoador Herança múltipla Cachorro Morcego Passarinho Gaviao Gato CIn-UFPE

Vantagens da herança É um mecanismo de abstração que pode ser usado para classificar entidades É um mecanismo de reuso tanto em nível de projeto como em nível de programação CIn-UFPE

Problemas com a herança Classes de objeto não são auto-contidas. Elas não podem ser entendidas sem a referência a suas super classes Herança introduz complexidade e isso é indesejável, especialmente em sistemas críticos Herança múltipla: conflito de nomes CIn-UFPE

Realização e Interfaces Realização é uma relação pela qual um elemento especifica o contrato que outro elemento deve implementar A realização é um relacionamento entre uma especificação de interface e sua implementação CIn-UFPE

Interface Interfaces definem um tipo especificando apenas a assinatura de seus métodos Interfaces não possuem atributos e seus métodos não têm corpo Diferentemente das classes, as interfaces não especificam nenhuma estrutura Classes implementam interfaces provêem implementação para os métodos especificados em uma interface Uma interface define um tipo especificando apenas a assinatura (parâmetros de entrada e saída) dos métodos pertencentes a este tipo. São definidos então o nome, tipos de argumento e resultado dos métodos de uma classe mas não o código para a implementação destes métodos. Classes implementam interfaces, isto é, classes provêem implementação para os métodos especificados em uma interface. Ao implementar uma interface, uma classe deve prover implementação para todos os métodos definidos na interface, a não ser que esta classe seja abstrata. Quando uma classe implementa uma interface, provendo implementação para todos os métodos da interface, dizemos que esta classe é do tipo da interface. Pense assim: quando uma classe é do tipo de uma interface, esta classe pode ser usada em qualquer lugar que estiver sendo esperado um objeto do tipo desta interface. Dois elementos são polimórficos se eles implementam a mesma interface. CIn-UFPE

Realização: notação Realização Subsistema Classe Componente CIn-UFPE

Realização: outro exemplo Porca8mm Porca6mm Porca4mm Apertar Afrouxar <<interface>> ChaveKit Relacionamentos de realização Uma interface é uma coleção de operações, usadas para especificar um serviço de uma classe ou componente. CIn-UFPE

Realização: outro exemplo Porca8mm Porca6mm ChaveKit Porca4mm Uma interface é uma coleção de operações, usadas para especificar um serviço de uma classe ou componente. Relacionamentos de realização CIn-UFPE

Subsistemas x Componentes Ambos encapsulam um comportamento modelado por interfaces Subsistemas representam componentes no modelo de projeto Componentes são a realização física dos subsistemas Projeto <<subsystem>> Nome do subsistema Implementação Subsistemas e componentes: ambos encapsulam um conjunto de comportamentos modelado por interfaces. Um componente provê a realização física de um conjunto de interfaces. Componentes são elementos de implementação. Um componente é um subsistema implementado. Nome do componente CIn-UFPE

Classe abstrata é aquela que não possui instância Em geral, possui pelo menos um método abstrato Métodos abstratos não têm corpo subclasses não abstratas são obrigadas a fornecer uma implementação para eles Uma classe abstrata é aquela que não possui instâncias. Em geral, possui pelo menos um método abstrato, isto é, método com interface definida mas sem implementação, a ser implementado nas subclasses da classe abstrata. Toda classe que herdar de uma classe abstrata e não for abstrata deve prover implementação para todos os métodos abstratos definidos na sua superclasse. CIn-UFPE

Classes, Interfaces e Classes Abstratas Atributos Métodos Classes Abstratas Assinatura de Métodos Interfaces Assinaturas dos métodos Classes - possibilita herança de todo o código Classes abstratas - herança de parte do código Interfaces - implementação parte do zero; herança só de comportamento CIn-UFPE

Classes abstratas x Interfaces Herança de tipos x herança de código Classes descrevem propriedades fundamentais de um objeto Interfaces descrevem papéis desempenhados por um objeto em determinadas situações Interfaces são úteis para implementar herança múltipla É importante saber quando devemos usar herança de classe e implementação de interface: classes descrevem propriedades fundamentais de um objeto, enquanto que interfaces descrevem papéis desempenhados por um objeto em determinadas situações. CIn-UFPE

Mecanismos adicionais de UML Estereótipos Notas Propriedades (Tagged values) Restrições Por fim, veremos alguns dos mecanismos adicionais de UML: estereótipos, notas, rótulos e restrições. CIn-UFPE

Estereótipos Mecanismo utilizado para estender os elementos de UML Define um novo modelo de elemento em termos de outro já existente Como criando um novo ícone utilizando a notação <<novo_elemento>> CIn-UFPE

Estereótipos: exemplo Classes de fronteira: <<boundary>> ClasseFronteira ClasseFronteira Veremos este e outros estereótipos padrão de UML no decorrer do curso. CIn-UFPE

Notas Anotação utilizada para adicionar informação a diagramas Pode ser afixada a qualquer elemento de UML Pode ser ligada a um elemento com uma linha tracejada Exemplo: Esta classe é uma abstração do dispositivo de hardware que será usado para ler efetivamente as informações do cartão magnético. LeitoraCartao CIn-UFPE

Propriedades (Tagged Values) Servem para estender elementos UML, adicionando informações sobre eles Exemplos já definidos em UML: Persistence (valores: persistent, transient) Location (ex. de valores: client, server) Você pode criar suas próprias propriedades Cliente {persistence=persistent} : LeitoraCartao {location=server} CIn-UFPE

Restrições Usadas para criação de novas regras sobre elementos do modelo Ou modificação de regras existentes Pessoa Funcionário Empresa 1 1..* {subset} Diretor 3 1 CIn-UFPE