Conceitos de Orientação a Objetos



Documentos relacionados
3.1 Definições Uma classe é a descrição de um tipo de objeto.

Uma visão mais clara da UML Sumário

Análise e Projeto de Sistemas. O que é modelagem. O que é modelagem. Tripé de apoio ao desenvolvimento. Notação: UML. Ferramenta: Rational Rose.

UML & Padrões Aula 3. UML e Padrões - Profª Kelly Christine C. Silva

Capítulo 8. Introdução UML

UML & Padrões. Aula 1 Apresentação. Profª Kelly Christine C. Silva

UML Itens Estruturais - Interface

Engenharia de Software Engenharia de Requisitos. Análise Orientada a Objetos Prof. Edison A M Morais prof@edison.eti.

Modelagem de Processos. Prof.: Fernando Ascani

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 16 PROFª BRUNO CALEGARO

Análise e Projeto de Sistemas

UML: Diagrama de Casos de Uso, Diagrama de Classes

Análise e Projeto Orientados por Objetos

Micro Mídia Informática Fevereiro/2009

Modelagem com UML. Fabio Perez Marzullo. IEEE Body of Knowledge on Services Computing Committee on Services Computing, IEEE Computer Society

Resolução da lista de exercícios de casos de uso

Introdução a UML. Introdução a UML (Unified Modeling Language)

2 Diagrama de Caso de Uso

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

04/07/2015 UML. Prof. Esp. Fabiano Taguchi DEFINIÇÃO DE REQUSIITOS

Guia para elaboração do Modelo de Domínio Metodologia Celepar

Casos de uso Objetivo:

Diagrama de Casos de Uso

UML Unified Modeling Language. Professor: André Gustavo Bastos Lima

Diagramas de Casos de Uso

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Itens estruturais/caso de uso. Itens estruturais/classe ativa. Itens estruturais/componente. Itens estruturais/artefatos. Itens comportamentais

DESENVOLVENDO O SISTEMA

Modelos de Sistemas Casos de Uso

Guia de utilização da notação BPMN

UML Aspectos de projetos em Diagramas de classes

FMR Faculdade Marechal Rondon Gestão de Sistemas de Informação Prof. Ms. Elvio Gilberto da Silva

REQUISITOS DE SISTEMAS

Modelando com UML Unified Modeling Language

O Processo Unificado: Captura de requisitos

Análise e Projeto Orientados por Objetos

MODELAGEM DE SISTEMAS

A Linguagem de Modelagem Unificada (UML)

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

Franklin Ramalho Universidade Federal de Campina Grande - UFCG

Engenharia de Software III

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Unified Modeling Language UML - Notações

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Mapa Mental de Engenharia de Software - Diagramas UML

Gerenciamento de Requisitos Gerenciamento de Requisitos

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

ANÁLISE E PROJETO ORIENTADO A OBJETOS. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

4.1. UML Diagramas de casos de uso

Orientação a Objetos com Java

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Felipe Denis M. de Oliveira. Fonte: Alice e Carlos Rodrigo (Internet)

Aula 5 UML: Casos de Uso

Utilizando os Diagramas da UML (Linguagem Unificada de Modelagem) para desenvolver aplicação em JSF

Modelagem Dinâmica com UML

4.4. UML Diagramas de interacção

Modelagem de Sistemas

Engenharia de Requisitos Estudo de Caso

2 Engenharia de Software

Desenvolvimento estruturado versus orientado a objetos.

Computação II Orientação a Objetos

Diretrizes de Qualidade de Projetos

Engenharia de Software

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

Diagrama de classes. Ricardo Roberto de Lima UNIPÊ APS-I

Metodologia de Desenvolvimento de Software. Prof. M.Sc. Sílvio Bacalá Jr

Análise e Projeto de Software

UML (Unified Modeling Language) Linguagem de Modelagem Unificada

UML Diagramas. UML Diagramas. UML Diagrama Diagrama de Classes. UML Diagrama Diagrama de Classes

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Engenharia de Software I

Unidade II MODELAGEM DE PROCESSOS

O Processo de Engenharia de Requisitos

Modelagem de Software Prof. Flávio de Oliveira Silva, Ph.D.

Fundamentos de Banco de Dados e Modelagem de Dados

Modelagem de Casos de Uso (Parte 1)

Análise e Projeto Orientado a Objetos

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO

Modelagem de dados usando o modelo BANCO DE DADOS 1º TRIMESTRE PROF. PATRÍCIA LUCAS

Implementando uma Classe e Criando Objetos a partir dela

Uma visão mais clara da UML Sumário

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação Orientada a Objeto

ITIL v3 - Operação de Serviço - Parte 1

Desenvolvimento de uma Etapa

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Sumário. Uma visão mais clara da UML

Engenharia Informática

QUESTÕES PARA ESTUDO DIAGRAMA DE CLASSE

Manual do Usuário do Produto EmiteNF-e. Manual do Usuário

UML - Unified Modeling Language

Transcrição:

Conceitos de Orientação a Objetos Curso de Linguagem Java José Antonio F. de Macêdo jmacedo@inf.puc-rio.br O Mundo é composto de Objetos! Jose Antonio F. Macedo Linguagem Java 2 O que é um Objeto? Definições: Alguma coisa que faz sentido no domínio da aplicação, Uma abstração Utilidade: facilita a compreensão oferece base real para implementação no computador Jose Antonio F. Macedo Linguagem Java 3 Linguagem Java 1

Descrição de um Objeto Um objeto pode ser descrito por um conjunto de atributos e comportamentos: Atributos Motor Cor Potência Rodas Comportamentos Avançar Retroceder Parar Abastecer substantivos verbos Jose Antonio F. Macedo Linguagem Java 4 Classe de Objetos Grupo de objetos com os mesmos atributos e os mesmos comportamentos pertencem a mesma classe. Jose Antonio F. Macedo Linguagem Java 5 Classe = Molde de Objetos Define Estrutura e Comportamento (notação UML) Exemplo Nome da Classe Atributo1:tipo=valo Atributo2:tipo=valor operação1(argumentos): tipo-retorno operação2(argumentos): tipo-retorno Carro Chassi: string Cor: integer Motor: Cmotor Ligar():void TemGasolina():boolean Virar(direção):void Jose Antonio F. Macedo Linguagem Java 6 Linguagem Java 2

Instanciação de um Objeto Tempo de Compilação Classe Carro Chassi: string Cor: integer Motor: Cmotor Ligar():void TemGasolina():boolean Virar(direção):void Instanciando Objetos Tempo de Execução Objeto Carro: Instância #3 Objeto Carro: Instância #1 Objeto Carro: Instância #2 Jose Antonio F. Macedo Linguagem Java 7 Características de um Objeto Um objeto tem identidade única, está em um dado estado e exibe comportamentos bem definidos. Identidade Estados (atributos) Comportamentos (métodos) Jose Antonio F. Macedo Linguagem Java 8 Características de Um Objeto (continuação) Carro #1 IDENTIDADE Carro #2 DO OBJETO Chassi = 123 Cor = Vermelho Motor = 2.0 -------------------- Ligar() TemGasolina() Virar(direção) ESTADO DO OBJETO COMPORTAMENTO DO OBJETO Chassi = 345 Cor = Preto Motor = 1.0 -------------------- Ligar() TemGasolina() Virar(direção) Jose Antonio F. Macedo Linguagem Java 9 Linguagem Java 3

Encapsulamento Carro Chassi: string Cor: integer Motor: Cmotor Ligar():void TemGasolina():boolean Virar(direção):void Abastecer(litros):void É o mecanismo que permite agregar dados e funções de um objeto em uma única unidade lógica. Não existe somente em OO: struct pessoa { char nome[30]; int idade; } float media (float x, float y) { return (x + y)/2.0; } Jose Antonio F. Macedo Linguagem Java 10 Classes Semânticas modelo de objetos (tempo de compilação) fábrica de objetos unidade de reuso Tipo de dado definido pelo usuário Jose Antonio F. Macedo Linguagem Java 11 CLASSES como Tipo Abstrato de Dados (TAD) Em linguagens não-oo: int x; if (x > 5) x = x + 2; Em linguagens OO: Carro y; if (y.temgasolina()== false){ y.abastecer(40); } Jose Antonio F. Macedo Linguagem Java 12 Linguagem Java 4

Relações entre Classes Uma margarida é um tipo de flor Uma rosa é tipo diferente de flor Rosas Vermelhas e amarelas são tipos de rosas Uma pétala é uma parte de ambos tipos de flores Joaninhas comem formigas que infestam certo tipos de flores Jose Antonio F. Macedo Linguagem Java 13 Relações entre Classes (cont) Associação Referência a outras classes (parâmetros ou variáveis de métodos) Agregação Propriedades de um tipo de classe Herança: Uma classe (subclasse) herda as propriedades e métodos de uma classe superior (superclasse) Jose Antonio F. Macedo Linguagem Java 14 Modelagem Orientada a Objetos usando UML Curso de Linguagem Java José Antonio F. de Macêdo jmacedo@inf.puc-rio.br Linguagem Java 5

O que é UML? Sigla: Unified Modeling Language. É uma linguagem para especificar, visualizar, construir e documentar artefatos de sistemas de software, bem como modelagem de negócios e outros tipos de sistemas. É uma linguagem visual de modelagem de sistemas. Jose Antonio F. Macedo Linguagem Java 16 O que é UML? A UML combina o melhor do melhor de: Conceitos de Modelagem de Dados (Diagramas Entidade-Relacionamento) Modelagem de Negócios (Fluxo de trabalhos) Modelagem de Objetos Jose Antonio F. Macedo Linguagem Java 17 Objetivos da UML Modelar sistemas (e não somente softwares) usando conceitos de orientação a objetos. Estabelecer um relacionamento explícito entre os artefatos conceituais e executáveis. Criar uma linguagem de modelagem que possa ser utilizada tanto por homens como por máquinas. Jose Antonio F. Macedo Linguagem Java 18 Linguagem Java 6

O Que é Modelagem Visual? Pedido A Modelagem captura as partes essenciais do sistema. Dr. James Rumbaugh Item envio Processos de Negócios Modelagem Visual significa modelar com a utilização de notações padrão. Sistema de Computação Jose Antonio F. Macedo Linguagem Java 19 Modelagem Visual Captura os Processos de Negócios Análise de Caso de Uso é uma técnica utilizada para capturar processos de negócios do ponto de vista do usuário Jose Antonio F. Macedo Linguagem Java 20 A Modelagem Visual é uma Ferramenta de Comunicação Use a Modelagem Visual para capturar objetos e lógica de negócios Use a Modelagem Visual para analisar e projetar sua aplicação Jose Antonio F. Macedo Linguagem Java 21 Linguagem Java 7

A Modelagem Visual Controla a Complexidade Jose Antonio F. Macedo Linguagem Java 22 A Modelagem Visual Define A Arquitetura de Software Interface de Usuário (Visual Basic, Java) Lógica de Negócios (C++, Java) Servidor de Banco de Dados (C++ & SQL) Modele seu sistema independentemente da linguagem de implementação Jose Antonio F. Macedo Linguagem Java 23 A Modelagem Visual Promove Reutilização Múltiplos Sistemas Componentes Reutilizáveis Jose Antonio F. Macedo Linguagem Java 24 Linguagem Java 8

História da UML Nov 97 UML é aprovada pelo OMG Jose Antonio F. Macedo Linguagem Java 25 A UML suporta o Desenvolvimento de Aplicações objetos de negócios objetos relacionamentos sistemas de larga escala ORDBMS Oracle classes componentes Microsoft particionamento de aplicações cenários CORBA OMG casos de uso ActiveX/COM Microsoft Processos de negócios Jose Antonio F. Macedo Linguagem Java 26 Visões do modelo UML Visão Lógica Diagramas de Classes Diagramas de Sequência Visão de Desenvolvimento Diagramas de Componentes Casos de Uso/Cenários Diagramas de casos de uso/ Diagramas de Sequência Visão de Processo Diagramas de Desenvolvimento Visão Física Diagramas de Desenvolvimento Jose Antonio F. Macedo Linguagem Java 27 Linguagem Java 9

Diagrama de Caso de Uso Os casos de uso descrevem a funcionalidade do sistema, que é percebida por atores externos. Um ator interage com o sistema, podendo ser um usuário, dispositivo ou outro sistema. Interação sistema Caso de uso Ator Jose Antonio F. Macedo Linguagem Java 28 Modelagem com a UML Notação definida pelos vários tipos de diagramas. Um diagrama é uma apresentação gráfica de uma coleção de elementos do modelo, conectado de arcos (relacionamentos) e vértices (outros elementos do modelo). Jose Antonio F. Macedo Linguagem Java 29 Diagrama de Classe Gráfico bidimensional de elementos de modelagem que pode conter tipos, pacotes, relacionamentos, instâncias, objetos e conexões; Denota a estrutura estática de um sistema, e as classes são elementos manipulados pelo sistema. Jose Antonio F. Macedo Linguagem Java 30 Linguagem Java 10

Diagrama de Classe Associação Pedido incluirpedido ( ) atenderpedido ( ) Cliente códigodocliente limitedecrédito {ou} Indivíduo Organização 1 Agregação Atributos * Multiplicidade Classe Pedido, item quantidade Operações Organização cliente Classe associativa incluiritempedido ( ) calculartotalpedido ( ) Produto Generalização Subclasse Superclasse {disjunção, incompleto} Leite Chocolate Biscoito Restrição Jose Antonio F. Macedo Linguagem Java 31 Diagrama de Interação O diagrama de interação se divide em: Diagrama de Sequência - apresenta a colaboração dinâmica entre os objetos envolvidos e a sequência de mensagens enviadas entre eles. Diagrama de Colaboração - apresenta a interação dinâmica entre um caso de uso, organizada em torno dos objetos e seus vínculos mútuos. Jose Antonio F. Macedo Linguagem Java 32 Diagrama de Sequência objeto 1: nome da classe objeto 2 objeto 3 :nome da classe nome do ator: classe do ator 1. evento Texto de script 2. operação 4. operação (lista de parâmetros) 3. operação (lista de parâmetros) 5. operação (lista de parâmetros) Jose Antonio F. Macedo Linguagem Java 33 Linguagem Java 11

Diagrama de Colaboração 3: operação (lista de parâmetros) 1: evento objeto 1: nome da classe 2: operação objeto 2 4: operação (lista de parâmetros) 5: operação (lista de parâmetros) objeto 3: nome da classe Fluxo de objeto :nome da classe Jose Antonio F. Macedo Linguagem Java 34 Diagrama de Estado Mostra as sequências de estados que um objeto ou uma interação assume em sua vida, em resposta a estímulos recebidos, juntamente com suas respostas e ações. O diagrama de estado complementa a classe e relaciona os possíveis estados que os objetos da classe podem ter e quais eventos podem causar a mudança de estado (transição). É complementado com o diagrama de atividade. Jose Antonio F. Macedo Linguagem Java 35 Diagrama de Estado Pedido enviado Alteração de pedido solicitada Cancelamento de pedido solicitado Registrando pedido Alterando pedido Cancelando pedido Pedido para análise requisitado Analisando pedido Pedido p/ aprovação Pedido será cancelado Aprovando pedido Pedido cancelado Pedido não pode ser atendido no momento Colocando pedido em pendência Pedido já pode ser atendido Pedido atendido Pedido será atendido Atendendo pedido Jose Antonio F. Macedo Linguagem Java 36 Linguagem Java 12

Diagrama de Atividade É um diagrama de estado especial, onde a maioria dos estados é estado de ação e a maioria das transações é ativada por conclusão das ações nos estados de origem. Estuda o fluxo dirigido pelo processamento interno, descrevendo as atividades desempenhadas em uma operação. Jose Antonio F. Macedo Linguagem Java 37 Diagrama de Atividade [condição 1] Atividade 1 Atividade 2 [condição 2] Atividade 3 Atividade i [condição de sincronização] Atividade n Jose Antonio F. Macedo Linguagem Java 38 Perspectiva Tipo de modelo Linguagem de modelagem Modelo Fora do sistema Dentro do sistema Caminho de execução através do sistema É uma instância de É uma instância de Caso de uso Colaboração Cenário Implementa Pode ser ilustrado por um ou mais tempo espaço trabalho tempo espaço trabalho Texto Diagrama de Sequência Diagrama de Colaboração Diagrama de Atividade Diagrama de Sequência Diagrama de Colaboração Diagrama de Atividade Descrição de caso de uso Descrição de interação Descrição de cenário Jose Antonio F. Macedo Linguagem Java 39 Linguagem Java 13

Diagrama de Implementação O diagrama de implementação se divide em: Diagrama de Componente - neste diagrama são mostradas as dependências entre componentes de software ( incluem código fonte, código binário e executáveis ). Diagrama de Implantação - apresenta os elementos de configuração de processamento run-time e os componentes de software, processos e objetos que neles se mantêm. Inclui o uso físico do sistema considerando computadores, dispositivos e suas interconexões. Jose Antonio F. Macedo Linguagem Java 40 Diagrama de Componente Componente 1 Componente 2 Jose Antonio F. Macedo Linguagem Java 41 Diagrama de Implantação PC * Entrada de pedido Server 1 Fax 1 1 recebimento PC PC 1 compra * Impres sora Jose Antonio F. Macedo Linguagem Java 42 Linguagem Java 14

Notações Genéricas Nome do Pacote PACOTE Pessoa Conteúdo do pacote Parte Dependência de pacotes Indivíduo Organização Jose Antonio F. Macedo Linguagem Java 43 Notações Genéricas ESTEREÓTIPO NOTA << Estereótipo >> Nome da Classe Atributos Métodos Nota sobre os modelos CLASSE A << Estereótipo >> CLASSE B Jose Antonio F. Macedo Linguagem Java 44 Modelagem Estática Diagrama de Classes descreve a visão estática do sistema classes e relacionamentos descreve o fundamento para outros diagramas estados dos objetos e a colaboração existente entre eles Nome Atributos Operações Jose Antonio F. Macedo Linguagem Java 45 Linguagem Java 15

Modelagem Estática Nome - nome da classe Atributos - características da classe tipo (tipicamente tipos primitivos) visibilidade público - expresso através do símbolo + privado - expresso através do símbolo - protegido variável de classe - atributo compartilhado entre todas os objetos de certa classe Operações - métodos para manipulação dos atributos dos objetos da classe e execução de ações Jose Antonio F. Macedo Linguagem Java 46 Modelagem Estática Exemplo: FIGURA tamanho:size pos:position cont_figuras: Integer - x: Integer = 0 - y :Integer = 0 + desenhar () + escala_figura (percent: Integer = 25) + retorna_pos (): POSITION Jose Antonio F. Macedo Linguagem Java 47 Modelagem Estática Relacionamentos podem representar: associação - descreve uma conexão semântica entre as tuplas dos objetos[ Exemplo: Pessoa compra 0..* 1..* pertence Carro Jose Antonio F. Macedo Linguagem Java 48 Linguagem Java 16

Modelagem Estática associação unária Pessoa marido associação binária mulher é casado com Cliente efetua 1 0..* Pedido Jose Antonio F. Macedo Linguagem Java 49 Modelagem Estática Associação qualificada - identifica a associação múltipla Canvas id_figura associação-ou - indica que somente uma das associações é válida no tempo 1 Cia de Seguros Jose Antonio F. Macedo Linguagem Java 50 * Pessoa Figura 0..* Contrato de seguro 0..* 0..* {or} 1..* 1..* Empresa Modelagem Estática associação ordenada Contrato de Seguros 0..* {ordenado} 1..* Cliente classe de associação Fila Controle do elevador Elevador * Botão Jose Antonio F. Macedo Linguagem Java 51 Linguagem Java 17

Modelagem Estática associação ternária Companhia de Seguros 1 corretor 0..* Contrato 0..* 0..1 Política de Seguros 1..* corretor Pessoa Jose Antonio F. Macedo Linguagem Java 52 Modelagem Estática agregação - indica que um objeto parte é um atributo do objeto todo. Pedido 1 1..* Item Todo Parte Jose Antonio F. Macedo Linguagem Java 53 Modelagem Estática agregação por composição Janela Contém * * * * Texto Listbox Botão Menu Jose Antonio F. Macedo Linguagem Java 54 Linguagem Java 18

Modelagem Estática generalização normal (herança) Veículo Carro Barco Van Ônibus Caminhão Lancha Navio Veleiro Jose Antonio F. Macedo Linguagem Java 55 Modelagem Estática generalização restrita por sobreposição - subclasses derivadas de uma superclasse podem ocorrer simultaneamente para uma mesma ocorrência da superclasse disjunta - subclasses derivadas de uma superclasse podem ocorrer de modo mutuamente exclusivo para a mesma ocorrência da superclasse completa - todas as subclasses foram especificadas, se mostradas ou não. Nenhuma subclasse adicional é esperada incompleta - algumas subclasses foram especificadas, mas a lista, por não ser conhecida, está incompleta. Jose Antonio F. Macedo Linguagem Java 56 Modelagem Estática Exemplos: Animal Racional Irracional {sobreposição, incompleto} Répteis Mamíferos Peixes Baleia Jose Antonio F. Macedo Linguagem Java 57 Linguagem Java 19

Modelagem Estática relacionamento de dependência conexão semântica entre dois elementos do modelo, um elemento independente e o outro dependente. Uma mudança no elemento independente afeta o elemento dependente. uma classe toma um objeto de outra classe como parâmetro; uma classe acessa um objeto global de outra classe; uma classe chama uma operação cujo escopo pertence a outra classe Jose Antonio F. Macedo Linguagem Java 58 Modelagem Estática Exemplo: relacionamento de dependência Imagem <<friend>> Renderizador Jose Antonio F. Macedo Linguagem Java 59 Modelagem Estática refinamento usado para modelar diferentes implementações da mesma coisa Classe de Análise Classe de Projeto Jose Antonio F. Macedo Linguagem Java 60 Linguagem Java 20

Modelagem Estática Interfaces implementada ou suportada por um pacote ou uma classe descreve operações abstratas, que especificam o comportamento que um objeto pode escolher ou suportar Jose Antonio F. Macedo Linguagem Java 61 Modelagem Estática Classe A <<interface>> armazenador {abstract} Armazenador Executor <<interface>> executor {abstract} Classe B load ( ) {abstract} save( ) {abstract} run ( ) {abstract} Jose Antonio F. Macedo Linguagem Java 62 A tecnologia OO Cinco palavras básicas Linguagem OO Classe Objeto Métodos Herança Polimorfismo Linguagem Procedimental Tipo Variável Procedimento/Função Estruturas Jose Antonio F. Macedo Linguagem Java 63 Linguagem Java 21

Modelagem de Use Cases Apresentação dos diagramas de use cases (casos de uso) Exercício: Modelagem de um caso de uso de uma biblioteca Jose Antonio F. Macedo Linguagem Java 64 Modelo de Use Case Um use case é uma técnica de modelagem usada para descrever o que um novo sistema deve fazer ou o que um sistema existente faz Um use case é construído através de um processo interativo entre desenvolvedores de sistemas e clientes (usuários finais) Os use cases são utilizados para documentar os requerimentos do ponto de vista externo (usuários) Jose Antonio F. Macedo Linguagem Java 65 Modelo de Use Case O conjunto de use cases define as diferentes maneiras de executar o sistema Atores e Use Cases são os principais componentes de um modelo de use cases Interação sistema Use Case Ator Jose Antonio F. Macedo Linguagem Java 66 Linguagem Java 22

Atores Atores representam qualquer entidade que precise interagir com o sistema (pessoas, máquinas e outros sistemas) Interagir com o sistema significa enviar e receber mensagens do sistema O ator é uma classe, não uma instância Uma maneira prática de identificar os atores é levantando os papéis dos usuários e dos sistemas externos Jose Antonio F. Macedo Linguagem Java 67 Atores A identificação dos atores ajuda a delimitar a fronteira do sistema Uma pessoa pode representar diferentes atores de um sistema Um ator tem um nome que deve refletir o seu papel no sistema Um use case é sempre iniciado por um ator que envia mensagens para ele Jose Antonio F. Macedo Linguagem Java 68 Atores O seguinte questionário pode ser usado para identificar os atores do sistema: Quem usará as funções principais do sistema? Quem precisará do sistema para executar suas tarefas diárias? Quem manterá e administrará o sistema? Quais os equipamentos que o sistema controlará? Com quais outros sistemas o sistema precisará interagir? Quem tem interesse nos resultados que o sistema produz? Jose Antonio F. Macedo Linguagem Java 69 Linguagem Java 23

Atores de um Sistema de Venda Gerente Cliente Herança Vendedor Cliente Visitante Cliente Telefone Jose Antonio F. Macedo Linguagem Java 70 Use Cases Definição: Um conjunto de sequência de ações executadas por um sistema que geram resultados para um determinado ator Um use case é uma classe e não uma instância Decreve a funcionalidade como um todo, incluindo possíveis alternativas, erros e exceções que podem ocorrer durante a execução do use case Uma instanciação de um use case é chamada de cenário Jose Antonio F. Macedo Linguagem Java 71 Características dos use cases Um use case sempre é iniciado por um ator Um use case retorna uma resposta para um ator Um use case é completo, ou seja, deve ser uma descrição completa. Não devemos dividir um use case em pequenos use cases Um use case não está completo até que o valor final seja produzido Jose Antonio F. Macedo Linguagem Java 72 Linguagem Java 24

Exemplo: Vídeo Locadora Cadastrar Cliente Emprestar Fita R ec epc ionis ta Devolver Fita C liente Receber P agam ento Jose Antonio F. Macedo Linguagem Java 73 Relações entre use cases Podem existir três tipos de relacionamentos: Estende: um use case pode estender outro use case adicionando ações ao use case mais geral Usa: um use case usa um outro use case (faz parte) Agrupa:quando um conjunto de use cases possue funcionalidade similar, eles podem ser agrupados em um pacote Jose Antonio F. Macedo Linguagem Java 74 Estendendo use case O use case que estende um outro use case não precisa incluir todo comportamento do use case estendido É difícil saber quais partes serão reusadas do use case pai e quais serão adicionadas no use case filho Fazer Seguro <<estende>> Comprar Carro Jose Antonio F. Macedo Linguagem Java 75 Linguagem Java 25

Usando use case Quando vários use cases tem comportamento comum, este comportamento pode ser modelado num único use case que poderá ser usado pelos outros use cases O comportamento do use case usado deve ser usado inteiramente Cadastrar Cliente Cadastrar Client e VIP <<usa>> Jose Antonio F. Macedo Linguagem Java 76 Descrevendo use cases Textualmente um use case deve possuir uma descrição textual uma especificação simples e consistente sobre como os atores e uses cases interagem deve-se concentrar-se no comportamento externo do sistema e ignorar como as coisas são executadas dentro do sistema Jose Antonio F. Macedo Linguagem Java 77 Descrevendo use cases A descrição textual deve incluir: Objetivo do use case Como o use case é iniciado O fluxo das mensagens entre os atores e o use case fluxo alternativo, no caso de condições e exceções Como o use case termina com o valor que será retornado para o ator devem ser claras, o cliente(usuário) deverá compreendêlas Jose Antonio F. Macedo Linguagem Java 78 Linguagem Java 26

Exemplo de Texto alugar fita 1. identificar cliente 2. se tem dívida 2.1 cobrar valor devido 3. verificar título 4. se tem fita disponível 4.1 alugar fita Jose Antonio F. Macedo Linguagem Java 79 Descrevendo use cases outras formas... Diagrama de atividades um use case pode ser descrito por um diagrama de atividades um diagrama de atividades apresenta uma sequencia das atividades, e condições opcionais Cenários A descrição de um cenário ilustra um caso específico, com instâncias dos atores e use cases envolvidos Jose Antonio F. Macedo Linguagem Java 80 Diagrama de Atividades Inserir Moedas Check Valor-total Apresentar Bebida Escolher Bebida Avisar que a bebida acabou [bebida NÃO disponível] [bebida disponível] Entregar Bebida Jose Antonio F. Macedo Linguagem Java 81 Linguagem Java 27

Concretizando use cases Use cases são descrições da funcionalidade do sistema independentes de sua implementação As responsabilidades pela execução das tarefas descritas pelo use case são realizadas pela colaboração entre os objetos que implementam a sua funcionalidade Jose Antonio F. Macedo Linguagem Java 82 Concretizando use cases Os princípios da UML para concretizar os use cases são: um use case é concretizado numa colaboração uma colaboração é representada por três diagramas: colaboração, sequëncia e atividade um cenário é uma instância de um use case ou de uma colaboração Jose Antonio F. Macedo Linguagem Java 83 Perspectiva Tipo de modelo Linguagem de modelagem Modelo Fora do sistema Dentro do sistema Caminho de execução através do sistema É uma instância de É uma instância de Caso de uso Colaboração Implementa Pode ser ilustrado por um ou mais tempo espaço trabalho tempo Texto Diagrama de Sequência Diagrama de Colaboração Diagrama de Atividade Diagrama de Sequência Descrição de caso de uso Descrição de interação Diagrama de Cenário espaço Descrição de Colaboração cenário Diagrama de trabalho Linguagem Atividade Jose Antonio F. Macedo Java 84 Linguagem Java 28

Técnicas para Levantamento de Use Cases Entrevistas (estruturadas ou não) com os usuários Observação da maneira como o usuário trabalha e utiliza os sistemas existentes Estudo da especificação do problema Identificação dos diálogos utilizando uma abordagem gráfica As técnicas acima podem e devem ser usadas de forma complementar Jose Antonio F. Macedo Linguagem Java 85 Não Esquecer dos Requerimentos Não Funcionais Confiabilidade: tolerância de erros que o sistema garante Segurança: nível de proteção que o sistema garante Disponibilidade: tempo máximo que o sistema pode ficar parado Performance: tempo máximo de resposta tolerável Usabilidade: facilidade de uso do sistema Reusabilidade: grau de reuso dos produtos do desenvolvimento Extensibilidade: facilidade de incorporar novos requerimentos ao sistema Jose Antonio F. Macedo Linguagem Java 86 Requerimentos Não Funcionais Alguns são gerais e outros podem estar associados diretamente aos use cases (ex: performance) Alguns requerimentos são obtidos diretamente do sponsor do projeto (ex: reusabilidade) Os requerimentos não funcionais (bem como os funcionais) devem ser parte do plano de teste e do plano de aceitação do sistema Jose Antonio F. Macedo Linguagem Java 87 Linguagem Java 29

O Modelo de Use Cases dirige todas as atividades do desenvolvimento Levantamento de Requisitos Análise e Projeto Use-Case Model realizado por distribuido por implementado por Design Model Deployment Model Implementação validado por Implementation Model Teste Test Model Jose Antonio F. Macedo Linguagem Java 88 Modelagem Dinâmica Todo sistema tem uma estrutura estática e um comportamento dinâmico A UML provê diagramas para capturar e descrever os aspectos estáticos e dinâmicos A modelagem dinâmica serve para demonstrar como os objetos se interagem dinamicamente em diferentes momentos da execução de um sistema Jose Antonio F. Macedo Linguagem Java 89 Modelagem Dinâmica Objetos dentro de um sistema se comunicam através do envio de mensagems Uma mensagem é simplesmente um operação que um objeto invoca de outro objeto Jose Antonio F. Macedo Linguagem Java 90 Linguagem Java 30

Diagramas Usados Diagrama de Estados Diagrama de Sequências Diagrama de Colaboração Diagrama de Atividades Ciclo de Vida Descrevem as interações entre os objetos. Jose Antonio F. Macedo Linguagem Java 91 Dinâmica de um Sistema Estímulo Externo Reposta Jose Antonio F. Macedo Linguagem Java 92 Interação entre Objetos mensagem Objeto A Objeto B mensagem Objeto D Objeto C mensagem Jose Antonio F. Macedo Linguagem Java 93 Linguagem Java 31

Mensagem entre Objetos Class TipoA { void UmMetodoA(int p) { TipoC C = new TipoC(); String s = C.UmMetodoC(p); } } Jose Antonio F. Macedo Linguagem Java 94 Mensagem entre Objetos void UmMetodoA(int p) { TipoC C = new TipoC(); String S= C.UmMetodoC(p); } Objeto A C.UmMetodoC(p) String Objeto C Jose Antonio F. Macedo Linguagem Java 95 Interação entre Objetos Tipos de mensagens e notação na UML Simples Síncrona Assíncrona Síncrona com retorno imediato Jose Antonio F. Macedo Linguagem Java 96 Linguagem Java 32

Diagrama de Estados Um diagrama de transição de estados mostra O ciclo de vida de uma classe Os eventos que causam a transição de um estado para outro As ações que resultam de uma mudança de estado Diagramas de Transição de Estados são criados para objetos que tenham um comportamento dinâmico significativo Jose Antonio F. Macedo Linguagem Java 97 Diagrama de Estados Um diagrama de estados deve ser anexado a todas as classes onde pode-se identificar claramente estados e um comportamento complexo O diagrama de estados identifica quais eventos que mudarão o estado de um objeto da classe Jose Antonio F. Macedo Linguagem Java 98 Notação de um diagrama de estados Evento estado inicial fatura criada não paga estado do objeto pagar estado final paga fatura destruída Jose Antonio F. Macedo Linguagem Java 99 Linguagem Java 33

Diagrama de Estados Mostra o ciclo de vida de um objeto no sistema Um estado representa um subconjunto de valores possíveis de atributos e associações que um objeto mantém. Um objeto pode mudar de estado em decorrência de uma mensagem recebida ou do retorno de uma mensagem enviada. Não é necessário fazer o modelo de transição de estados para todos os objetos Jose Antonio F. Macedo Linguagem Java 100 Estados Todo objeto tem um estado O estado de um objeto é resultado das atividades executadas por ele, e é determinado pelos valores de seus atributos e ligações com outros objetos Uma classe poder ter um atributo específico para guardar o estado de seus objetos Jose Antonio F. Macedo Linguagem Java 101 Estados Exemplo de estados: A duplicata(objeto) foi paga (estado) O carro (objeto) está parado (estado) O motor (objeto) está funcionando (estado) João está (objeto) casado (estado) Jose Antonio F. Macedo Linguagem Java 102 Linguagem Java 34

Estados A notação de estado pode conter três compartimentos Nome Variáveis de Estado Atividades Jose Antonio F. Macedo Linguagem Java 103 Estados A mudança de estado pode ocorrer devido a duas dinâmicas: Interação com outros objetos (envio de mensagem ou ligação ou desligamento com outros objetos) Mudança interna de estado Jose Antonio F. Macedo Linguagem Java 104 Estados Sintaxe formal do compartimento de atividades nome-evento lista-de-argumentos / ação ex: fatura criada / pedir número_fatura existem três nomes padrões para eventos : entry: ações ocorridas na entrada de um estado exit: ações ocorridas na saída de um estado do: ações ocorridas na execução do estado Jose Antonio F. Macedo Linguagem Java 105 Linguagem Java 35

Transições de Estados Uma transição de estado normalmente está associada com um evento, mas não necessariamente. Se uma transição de estado não tem evento associado, o estado será alterado quando todas as ações internas tiverem sido executadas Jose Antonio F. Macedo Linguagem Java 106 Transições de Estados Boot do/run bios Iniciar S.O. do/run SO Iniciar Aplicação do/load aplic Transações de estados sem eventos associados Jose Antonio F. Macedo Linguagem Java 107 Transições de Estados Sintax da especificação de uma transição de estado: assinatura-evento [ condição-guarda ] / ação ^ claúsula-envio Sintax da assinatura-evento nome-evento ( parâmetro, ) Jose Antonio F. Macedo Linguagem Java 108 Linguagem Java 36

Transições de Estados no primeiro andar subir(andar) descer subir do/mover para andar chegou do/mover para andar descer(andar) chegou parado timer=0 do/incrementa timer subir(andar) timer = tempo_max / descer (1) Jose Antonio F. Macedo Linguagem Java 109 Assinatura de Evento Especifica o evento que disparou a transição Sintaxe : nome-evento ( parâmetro, ) Exemplos: desenhar (f: Figura, c: Cor) redesenhar( ) redesenhar imprimir (duplicata) A sintaxe dos parâmetros é: nome : tipo Jose Antonio F. Macedo Linguagem Java 110 Condição de Guarda É uma expressão booleana colocada na transição de estados, se a condição de guarda combinar com a assinatura do evento, ambos devem ocorrer para que ocorra a transição Exemplos: [ t = 15 seg] [numero de duplicatas > n] retirada (valor) [saldo >= valor] Jose Antonio F. Macedo Linguagem Java 111 Linguagem Java 37

Ação É a ação disparada quando ocorre transição é disparada. Ela pode ser escrita em termos das operações e atributos do objeto em questão ou com os parâmetros da assinatura do evento Exemplos: incremente() / n:= n+1/m:=m+1 some(n) / soma := soma + n Jose Antonio F. Macedo Linguagem Java 112 Claúsula de envio de mensagem É um caso especial de uma ação É usada para envio de mensagem durante a transição de dois estados Sintax: expressão-destino. nome-evento-destino ( argumento, ) Jose Antonio F. Macedo Linguagem Java 113 Claúsula de envio de mensagem Exemplos: [tempo = tempo_max] ^ self.descer (primeiro piso) sem_papel()^indicador.acender() botao_esquerdo_mouse(localização) / cor:=pegar_cor(localização) ^ caneta.setar(cor) Cuidado para não comprometer a compreensão do modelo Jose Antonio F. Macedo Linguagem Java 114 Linguagem Java 38

Modelo de Transição de Estados (Exemplo) associa_cópia confirma_pgmto renova_data inicial Reservado Pago confirma_devolução renova_data data_vencida Ítem de Requisição Atrasado final confirma_devolução Jose Antonio F. Macedo Linguagem Java 115 Modelo de Transição de Estados Requisitado Reservado Pago Atrasado Situação=Requisitado Relação com Título estabelecida Situação=Reservado Relação com Fita de Vídeo estabelecida Situaçao=Pago Data atual <= Data de entrega Situação=Atrasado Data atual > Data de entrega Jose Antonio F. Macedo Linguagem Java 116 Diagrama de Sequência Descreve como os objetos interagem e comunicam entre si O foco do diagrama é o tempo Mostra como uma sequência de mensagens são enviadas e recebidas por um conjunto de objetos com objetivo de executar alguma função O diagrama tem dois eixos: vertical mostra o tempo e o horizontal mostra o conjunto de objetos Jose Antonio F. Macedo Linguagem Java 117 Linguagem Java 39

Diagrama de Sequência objeto 1: nome da classe objeto 2 objeto 3 :nome da classe nome do ator: classe do ator 1. evento Texto de script 2. operação 4. operação (lista de parâmetros) 3. operação (lista de parâmetros) 5. operação (lista de parâmetros) Jose Antonio F. Macedo Linguagem Java 118 Diagrama de Seqüência Os diagramas podem ser usados de duas formas: forma de instância: descreve um cenário específico e, detalhe, não tem condições, ramificações ou loops. forma genérica: descreve todas as possibilidades de um cenário, com condições, ramificações e loops exemplo: abertura de conta Jose Antonio F. Macedo Linguagem Java 119 Exemplo Diagrama Seqüência imprimir(arq) :Computador {B-A < 5 seg} A RESTRIÇÕES Objeto B imprimir(arq) Mensagem :Servidor Impressora :Impressora :Fila Impressão [impressora livre] imprimir(arq) Guarda [impressora ocupada] Inserir_Fila(arq) Linha de Vida Jose Antonio F. Macedo Linguagem Java 120 Linguagem Java 40

Criação de Objeto NovoCliente ( Dados) :JanelaCliente Criando Objeto Cliente( Dados) :Cliente Jose Antonio F. Macedo Linguagem Java 121 Destruição de Objeto removercliente( ) :JanelaCliente Destruindo Objeto :Cliente removercliente( ) Jose Antonio F. Macedo Linguagem Java 122 Aspectos de Concorrência Ativações concorrentes Mensagens Assíncronas obj1:c1 obj2:c1 obj1:c1 obj2:c2 obj1:c3 msg msg msg Mensagens Síncronas obj1:c1 obj2:c1 msg Jose Antonio F. Macedo Linguagem Java 123 Linguagem Java 41

Diagrama de Colaboração Descreve como os objetos se interagem, da mesma forma que o diagrama de sequência O foco deste diagrama é um conjunto específico de objetos (espaço de objetos) O diagrama de sequência foca o tempo Apresenta os objetos e suas ligações, como também a forma como as mensagens são enviadas entre os objetos ligados Jose Antonio F. Macedo Linguagem Java 124 Diagrama de Colaboração Objetos Ligações 3: operação (lista de parâmetros) 1: evento objeto 1: nome da classe 2: operação objeto 2 4: operação (lista de parâmetros) 5: operação (lista de parâmetros) objeto 3: nome da classe Fluxo de objeto Mensagens :nome da classe Jose Antonio F. Macedo Linguagem Java 125 Fluxo de mensagem uma ligação pode ter uma mensagem associada a sintax da mensagem é: predecessor condição-guarda expressão-sequência valor_retornado := assinatura exemplo: 1.1 *[x=1..10]: façaalgo( ) Jose Antonio F. Macedo Linguagem Java 126 Linguagem Java 42

Fluxo de mensagem predecessor É uma expressão para sincronização de threads e caminhos, indicando que mensagens devem ser executadas antes do envio da mensagem corrente sintax: numero_sequencial, / exemplo: 1.1a, 1.1b / 1.2: continue() Jose Antonio F. Macedo Linguagem Java 127 Fluxo de mensagem expressãosequencial É uma expressão inteira ou caracter que representa a ordem de execução das mensagens sintax: [inteiro nome] [recorrencia] : exemplo: 1: mostrajanela() 1.1: criarlista() 1.2: selecionaritem() Jose Antonio F. Macedo Linguagem Java 128 Fluxo de mensagem expressãosequencial recorrência representa uma execução condicional ou interativa sintax recorrência: * [ cláusula-iteração ] ou [ cláusula-condição ] exemplo com cláusula-iteração: 1.1 *[x= 1..n]: primo = nextprimo(primo) Jose Antonio F. Macedo Linguagem Java 129 Linguagem Java 43

Fluxo de mensagem expressãosequencial Exemplo com cláusula-condição: 1.1 [saldo < 0]: bloquearsaque() 1.2 [saldo > 0]: efetuarsaque() esta cláusula deve ser usada para especificar desvios Tanto a cláusula-iteração como a cláusulacondição podem ser expressas como pseudocódigos ou com a sintax da linguagem de programação usada Jose Antonio F. Macedo Linguagem Java 130 Ligação entre Objetos Uma ligação é uma conexão entre dois objetos Os nomes dos papéis dos objetos podem ser apresentados nos términos das ligações junto com os qualificadores dos objetos Existem alguns estereótipos que podem ser anexados ao papel do objeto na ligação: global, local, parameter, self, vote e broadcast Jose Antonio F. Macedo Linguagem Java 131 Ligação entre Objetos Estereótipos ligados ao papel da ligação global: instância tem escopo global local: instância é variável local de uma operação parameter: instância é parâmetro numa operação self: um objeto pode mandar mensagens para ele mesmo Jose Antonio F. Macedo Linguagem Java 132 Linguagem Java 44

Ligação entre Objetos Estereótipos ligados à mensagem Vote: restringe uma coleção de mensagens retornadas. O valor retornado deve ser o de maior voto Broadcast: especifica que o conjunto de mensagens não são invocados numa certa ordem Jose Antonio F. Macedo Linguagem Java 133 Tempo de vida dos Objetos Objetos que são criados durante a colaboração são designados com {new}. Objetos que são destruídos durante a colaboração são designados com {destroyed} Objetos que são criados e destruídos durante a colaboração são designados com {transient} Jose Antonio F. Macedo Linguagem Java 134 Diagrama de Atividades Foca o trabalho executado na implementação de uma operação (método), e nas atividades de uma instância de um use case ou de um objeto É uma variação do diagrama de estados e tem o objetivo de capturar as ações e seus resultados em termos de mudanças do estado do objeto Jose Antonio F. Macedo Linguagem Java 135 Linguagem Java 45

Diagrama de Atividades Janela.Imprimir() Mostrar Mensagem Imprimindo Criar Arquivo de Impressão Remover Mensagem Imprimindo Enviar arquivo para impressora Jose Antonio F. Macedo Linguagem Java 136 Diagrama de Atividades Janela.Imprimir() [disco cheio] Mostrar Mensagem Disco Cheio [tem espaço em disco] Remover Mensagem Imprimindo Criar Arquivo de Impressão Mostrar Mensagem Imprimindo Jose Antonio F. Macedo Linguagem Java 137 Diagrama de Atividades Servidor.iniciar() Iniciar Serviço Esperando Clientes Gerenciando Serviços Jose Antonio F. Macedo Linguagem Java 138 Linguagem Java 46

Resumo O processo de modelagem com UML envolve três partes: Visão Funcional Diagramas de use cases Visão Estática Diagramas de classes Visão Dinâmica Diagramas de: seqüencia, colaboração, atividade e estados Jose Antonio F. Macedo Linguagem Java 139 Resumo Classes e interações implementam use cases As interações são expressas em diagramas de seqüencia, colaboração e/ou atividade - ligação entre visão funcional e visão dinâmica As classes são modeladas pelos diagramas de classes e estados - ligação entre a visão funcional e a visão estática Jose Antonio F. Macedo Linguagem Java 140 Linguagem Java 47