180 likes | 303 Views
Projetar Cápsulas. Aula de Laboratório. Diagrama de Estados. Revisão. Maquina de Estados. Maquinas de estados são utilizadas para: Indicar qual será o comportamento dos objetos de acordo com o seu estado. Indicar sequência de ações válidas. construtor. Maquina de Estados De um Banco.
E N D
Projetar Cápsulas Aula de Laboratório
Diagrama de Estados Revisão
Maquina de Estados • Maquinas de estados são utilizadas para: • Indicar qual será o comportamento dos objetos de acordo com o seu estado. • Indicar sequência de ações válidas. construtor Maquina de Estados De um Banco Saldo = 0 crédito debito Saldo > 0 crédito debito
Noções básicas • Estado • Pode indicar a uma possível seqüência de eventos até o momento • Variáveis são consideradas estados também • Eventos • Métodos ou mensagens solicitando serviços • notificando uma informação • Transição • Ativado por um evento • Evento[guarda] / ação
Transição Notação estado1 estado2 • O nome da transição deverá ser significativo • Explicar claramente o evento relacionado e a ação • O nome não poderá possuir caracteres especiais • Notação para explicar a transição • Evento[guarda] / ação Sem evento associado à transição e sem ação estado1 estado2 Com evento associado à transição e sem ação estado1 estado2 Com evento associado à transição e com ação
Diagramas de EstadosNotação super-estado • Principais elementos transicão de origem externa Estado história H transicão inicial sub-estado estado sub-estado transicão auto-transicão estado transicão final
Diagrama de EstadosEstados história • Permitem continuidade na execução de máquinas de estados internas a super-estados • Exemplo: • ... • t1 • estado1 • t2 • estado2 • t3 • estado3 • t6 • estado3.1 • t4 • estado3.1 • t7 • estado3.2 • t4 • estado3.2 • ... estado história H t5 t6 t1 estado1 estado3.1 estado3 t7 t2 t3 t4 estado2 estado3.2 t8
Diagrama de Estrutura Revisão
Diagrama de EstruturaNotação • Elementos • Instâncias de Cápsulas • Portas • Conexões Porta Porta Instancia_A Instancia_B conexão
Diagrama de EstruturaTipos de Portas • Conjugada • Porta em que a definição dos sinais de entrada e saída é trocada. • End Port • Porta que direciona os sinais que passam por ela diretamente para o statechart da cápsula • Relay Port • Porta que permite a comunicação de cápsulas externas diretamente com as subcápsulas. Obs.:Podem existir portas com serviços especiais (ex.: timer, log, frame). [Non-wired port]
Diagrama de EstruturaPortas Relay Port public Simboliza maq. estado End Port protected Porta conjugada Instancia_B Instancia_A Instancia_C
Exercício Produtor/Consumidor • Produzir: • Criar Diagrama de Classes • Cápsulas Produtor e Consumidor • Protocolo de Comunicação • Criar Diagrama de Estados • De cada uma das cápsulas, com seus estados e transições • Criar Diagrama de Estrutura • Com a conexão entre as cápsulas
Exemplo: Produtor-Consumidor Produtor Consumidor produz(): Q consome(q: Q) Comunicacao #/ timer +/ porta +/ porta~ incoming outgoing envia(Q ) Produtor Consumidor transicão inicial transicão inicial interrupcao/ produz(); porta.envia.send(); envio/ consome(); Produzindo Esperando
Diagrama de EstruturaExemplo: Produtor Consumidor Produtor Consumidor timer porta porta~
Diagrama de Estrutura • Crie uma cápsula Container com todo o seu projeto • Todo sistema deverá ter uma cápsula principal, por onde começa seu fluxo de execução
Gerando códigoConfigure o tipo de projeto • Crie um novo componente na visão de componentes e abra sua especificação • Na aba General mude o tipo de componente para RT Java Project • Clique no botão Apply para aplicar a nova configuração • Na aba References, adicione todos os pacotes necessários para compilação do projeto, no nosso caso, somente o pacote modem. • Na aba RT Java Project: • Selecione a opção Build Jar • Modifique as opções GenerateCommand, CompileCommand e CleanAllCommand, substituindo $defaultMake por gmake • Selecione Gnu_make na opção MakeType • Finalize clicando no botão OK
Executando o projeto • Crie um novo processador na visão de implantação e abra sua especificação • Arraste o componente criado para o campo Component Instances na aba Detail • Clique duas vezes na instancia criada para abrir sua especificação • Na aba Detail, modifique o campo Parameters acrescentando os seguintes parâmetros no começo da linha: • -java com.rational.rosert.DebugApplication Main • Clique no botão Ok das janelas abertas para confirmar e fechar • Clique com o botão direito na instancia do processo criado e selecione a opção Run • Clique na seta de Play.
Gerando códigocriando dependências e compilando • Clique duas vezes no componente Main para abrir seu diagrama • Arraste o novo componente para o diagrama aberto • Arraste o componente classes dentro do pacote rosert da visão de componentes • Crie uma associação entre o novo componente e o componente classes • Clique com o botão direito do mouse no componente criado e selecione a opção Build e Build novamente no submenu • Clique no botão OK • Retire eventuais erros de compilação do projeto