1 / 14

Anotando Diagramas de Classe com o Rose

Anotando Diagramas de Classe com o Rose. Engenharia de Software e Sistemas. Roteiro. UML anotado com Z Elementos da notação Inserindo anotações em diagramas Usando a ferramenta Exemplo Exercícios. UML anotado com Z. UML é a linguagem padrão para projetos OO

taurus
Download Presentation

Anotando Diagramas de Classe com o Rose

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Anotando Diagramas de Classe com o Rose Engenharia de Software e Sistemas

  2. Roteiro • UML anotado com Z • Elementos da notação • Inserindo anotações em diagramas • Usando a ferramenta • Exemplo • Exercícios

  3. UML anotado com Z • UML é a linguagem padrão para projetos OO • Porém UML não possui semântica bem definida... • Anotações em linguagem formal nos ajudam a resolver essa carência mantendo os diagramas UML

  4. Elementos da notação (1) • Operadores lógicos • Implicação - \implies • Negação - \lnot • And - \land • Or - \lor • Quantificadores • \forall • \exists

  5. Elementos da notação (2) • Conjuntos • Pertence - \in • Contido - \subset • União - \cup • Intersecção - \cap • Tipos • Naturais - \nat • Inteiros - \num • Booleanos - Bool

  6. Elementos da Notação (3) • Seqüências - \seq • Conjunto potência - \power • Given sets (conjuntos genéricos) • Produto Cartesiano - T1 \cross T2 • Relações - \rel • Funções - \pfun

  7. Inserindo anotações no diagrama • Pré e pós condições • Selecione a classe -> open specification • Aba operations • Clicar duas vezes no método desejado • Insira as pré e pós condições nas respectivas abas • As expressões devem ser escritas usando a notação Z/latex (\rel, \exists, etc.)

  8. Inserindo anotações no diagrama • Invariantes de classe • Open specification -> documentation • Escreva a invariante na área reservada para a documentação da classe

  9. Exemplo: Banco cadastrar remover creditar debitar getSaldo transferir clientes contas 0..n 0..n Conta numero: NUM saldo: \nat getNum getSaldo creditar debitar Cliente id: ID nome: NOME getId getNome dono 1 0..n Poupança renderJuros

  10. getId() pré: pós: result! = id setId(id: ID) pré: pós: id’ = id? getNome() pré: pós: result! = nome setNome(nome: NOME) pré: pós: nome’ = nome? Exercícios: Cliente - id: ID - nome: NOME getId setId getNome setNome

  11. getNum() pré: pós: result! = num setNum(num: Z) pré: pós: num’ = num? getSaldo() pré: pós: result! = saldo setSaldo(saldo: IN) pré: pós: saldo’ = saldo? Exercícios Conta - num: NUM - saldo: \nat getNum() setNum() getSaldo() setSaldo() creditar() debitar()

  12. creditar(val: IN) pré: pós: saldo’ = saldo + val? debitar(val: IN) pré: saldo  val? pós: saldo’ = saldo - val? Exercícios Conta - num: NUM - saldo: \nat ... creditar() debitar()

  13. Exercícios • cl: clientes  cl  null • cc: contas  cc  null • c1,c2: contas | c1  c2  c1.getNum()  c2.getNum() • cl1,cl2: clientes | cl1  cl2  cl1.getId()  cl2.getId()

  14. cadastrar(conta: Conta) pré: conta?  null  cc:contas  cc.getNum()  conta? pós: contas´ = contas  {conta?} remover(conta: Conta) pré: conta?  null  cc:contas  cc.getNum() = conta? pós: contas´ = contas \ {conta?} Exercícios ATENÇÃO: Esta classe possui dois atributos implícitos nomeados de contas: IP Conta e clientes: IP Cliente, respectivamente Banco cadastrar() remover() creditar() debitar() transferir()

More Related