• Nenhum resultado encontrado

ES1 09 Codificacao

N/A
N/A
Protected

Academic year: 2021

Share "ES1 09 Codificacao"

Copied!
55
0
0

Texto

(1)

Campus Arapiraca

Engenharia de Software 1

09 - Codifica¸c˜ao

Alexandre de Andrade Barbosa

(2)

Codifica¸c˜ao

Objetivos

Objetivos

Descrever a rela¸c˜ao entre os diagramas criados nas fases anteriores e o c´odigo que deve ser obtido na codifica¸c˜ao

(3)

Codifica¸c˜

ao

Introdu¸c˜ao

A fase de codifica¸c˜ao corresponde a execu¸c˜ao do planejamento criado nas fases anteriores

Diagramas criados s˜ao transformados em c´odigo execut´avel Algumas metodologias defendem que o projeto deve ser criado, e refinado, nesta etapa

(4)

Codifica¸c˜ao

Codifica¸c˜

ao

Reuso

N˜ao ´e necess´ario desenvolver tudo internamente, algumas alternativas:

componentes; frameworks;

ferramentas de gera¸c˜ao de c´odigo

(5)

De UML para c´

odigo

Os diagramas UML podem auxiliar na cria¸c˜ao de partes de um c´odigo execut´avel

Diagrama de caso de uso ... guiam o desenvolvimento Diagrama de classes ... estrutura do sistema

Diagramas de intera¸c˜ao ... m´etodos necess´arios para realizar as funcionalidades

...

Ferramentas podem executar tradu¸c˜ao autom´atica (algumas com qualidade duvidosa)

(6)

Codifica¸c˜ao

De UML para c´

odigo

Classe: Nome

public class Conta { public class ContaCorrente {

} }

(7)

De UML para c´

odigo

Classe: Nome

public class Conta { public class ContaCorrente {

(8)

Codifica¸c˜ao

De UML para c´

odigo

Classe: Atributo

public class Conta { private String codigo; private float saldo; }

(9)

De UML para c´

odigo

Classe: Atributo

public class Conta { private String codigo; private float saldo; }

(10)

Codifica¸c˜ao

De UML para c´

odigo

Classe: Opera¸c˜ao

(11)

De UML para c´

odigo

Classe: Opera¸c˜ao

public class Conta { private String codigo; private float saldo; public boolean saque() { //...

}

public boolean deposito() { //...

}

public float saldo(Date data) { //...

} }

(12)

Codifica¸c˜ao

De UML para c´

odigo

Classe abstrata

public abstract class Conta { public abstract void atualizar() { //...

} }

(13)

De UML para c´

odigo

Interface

public interface RepositorioDeContas { }

(14)

Codifica¸c˜ao

De UML para c´

odigo

Relacionamentos: Heran¸ca

(15)

De UML para c´

odigo

Relacionamentos: Heran¸ca

public class Conta { // ...

}

public class ContaCorrente extends Conta { // ...

}

public class ContaPoupanca extends Conta { // ...

(16)

Codifica¸c˜ao

De UML para c´

odigo

Relacionamentos: Realiza¸c˜ao

(17)

De UML para c´

odigo

Relacionamentos: Realiza¸c˜ao

public interface RepositorioContas { // ...

}

public class RepositorioContasBDR implements RepositorioContas { // ...

}

public class RepositorioContasOO implements RepositorioContas { // ...

(18)

Codifica¸c˜ao

De UML para c´

odigo

Relacionamentos: Associa¸c˜ao

public class Cliente { private Agencia agencia; // ...

}

public class Agencia { private Cliente cliente; // ...

}

(19)

De UML para c´

odigo

Relacionamentos: Associa¸c˜ao

public class Cliente { private Agencia agencia; // ...

}

public class Agencia { private Cliente cliente; // ...

(20)

Codifica¸c˜ao

De UML para c´

odigo

Relacionamento: Agrega¸c˜ao

public class Agencia { private Conta conta; // ...

}

public class Conta { private Agencia agencia; // ...

} Distintos somente pelo significado associado.

(21)

Codifica¸c˜ao

De UML para c´

odigo

Relacionamento: Agrega¸c˜ao

public class Agencia { private Conta conta; // ...

}

public class Conta { private Agencia agencia; // ...

(22)

Codifica¸c˜ao

De UML para c´

odigo

Relacionamento: Agrega¸c˜ao

public class Agencia { private Conta conta; // ...

}

public class Conta { private Agencia agencia; // ...

} Distintos somente pelo significado associado.

(23)

De UML para c´

odigo

Relacionamento: Composi¸c˜ao

public class Conta {

private Historico historico; // ...

public void destroy() { historico.destroy(); // ...

} }

public class Historico { private Conta conta;

(24)

Codifica¸c˜ao

De UML para c´

odigo

Relacionamentos: Dependˆencia

public class LeitoraDeCartao {

public boolean lerCartao(Cartao cartao) { String senha = // ... if (senha.equals(cartao.getSenha())) { // ... } } }

public class Cartao { private String senha; // ...

}

(25)

De UML para c´

odigo

(26)

Codifica¸c˜ao

De UML para c´

odigo

Relacionamento: Visibilidade

public class Conta { private String codigo; private float saldo; protected Date data; public boolean saque() { // ...

}

public boolean deposito() { // ...

}

public boolean saldo(Date data) { // ...

} }

(27)

Codifica¸c˜ao

De UML para c´

odigo

Classe: Multiplicidade

// ... }

public class Conta { private Cliente cliente; // ...

(28)

Codifica¸c˜ao

De UML para c´

odigo

Classe: Multiplicidade

public class Cliente {

private Vector<Conta> contas; // ...

}

public class Conta { private Cliente cliente; // ...

}

(29)

Codifica¸c˜ao

De UML para c´

odigo

Classe: Multiplicidade

public Time() {

jogadores = new Jogador[11]; }

// ... }

public class Jogador { private Time time; // ...

(30)

Codifica¸c˜ao

De UML para c´

odigo

Classe: Multiplicidade

public class Time {

private Jogador[] jogadores; public Time() {

jogadores = new Jogador[11]; }

// ... }

public class Jogador { private Time time; // ...

}

(31)

Codifica¸c˜ao

De UML para c´

odigo

Classe: Navegabilidade

}

public class Agencia { private Cliente cliente; // ...

(32)

Codifica¸c˜ao

De UML para c´

odigo

Classe: Navegabilidade

public class Cliente { // ...

}

public class Agencia { private Cliente cliente; // ...

}

(33)

Codifica¸c˜ao

De UML para c´

odigo

Classe: P´apeis

// ... }

public class Empregado { private Empregado supervisor; private Empregado supervisionado; // ...

(34)

Codifica¸c˜ao

De UML para c´

odigo

Classe: P´apeis

public class Pessoa { private Pessoa pessoa; // ...

}

public class Empregado { private Empregado supervisor; private Empregado supervisionado; // ...

}

(35)

De UML para c´

odigo

(36)

Codifica¸c˜ao

De UML para c´

odigo

Diagrama de objetos

(37)

De UML para c´

odigo

Diagrama de objetos

// ...

Conta ccc = new ContaCorrente(); ccc.setSaldo(810.55);

ccc.setCodigo("4566-2"); Cliente c = new Cliente(); c.setNome("Pedro");

c.setConta(ccc); // ...

(38)

Codifica¸c˜ao

De UML para c´

odigo

Diagrama de estados

(39)

De UML para c´

odigo

Diagrama de estados

public class Elevador { private byte andar; public Elevador() { andar = 0;

}

public void selecionaAndar() { // ... if ( //... ) { sobe(andar); } else { desce(andar); } }

(40)

Codifica¸c˜ao

De UML para c´

odigo

Diagrama de estados

// ...

public void sobe(byte andar) { // ...

if ( // ... ) { parar();

} }

public void desce(byte andar) { // ... if ( // ... ) { parar() } } }

(41)

De UML para c´

odigo

(42)

Codifica¸c˜ao

De UML para c´

odigo

Diagrama de comunica¸c˜ao

(43)

De UML para c´

odigo

Diagrama de comunica¸c˜ao ou seq¨uˆencia

public class Agencia { // ...

public Conta selecionaConta(String codigo) { // ...

Conta c = buscaConta(codigo);

... cliente.solicitaIdentificacao() ... }

public boolean doLogin() { // ...

... checaUsuario() ... }

public boolean checaUsuario() { // ...

(44)

Codifica¸c˜ao

De UML para c´

odigo

Diagrama de comunica¸c˜ao ou sequˆencia

public class Cliente {

public void solicitaIdentificacao() { // ...

agencia.doLogin(login, senha); }

}

public class Conta {

public boolean saque(float valor) { // ...

... verificaSaldo() ... }

public void verificaSaldo() { // ...

} }

(45)

Codifica¸c˜

ao

(46)

Codifica¸c˜ao

Codifica¸c˜

ao

Prioriza¸c˜ao e acompanhamento de atividades

1 Sempre ´e interessante manter um status do andamento das

atividades

(47)

Codifica¸c˜

ao

Prioriza¸c˜ao e acompanhamento de atividades

Status do andamento das atividades Finalizada

Em andamento

(48)

Codifica¸c˜ao

Codifica¸c˜

ao

Boas pr´aticas

Alguns cuidados:

padr˜ao de codifica¸c˜ao (ex. forma de identa¸c˜ao); sistema de controle de vers˜oes;

documenta¸c˜ao aliada ao c´odigo (obs. alguns dizem que um bom c´odigo n˜ao precisaria de coment´arios)

(49)

Exerc´ıcio

Exerc´ıcio

1 Crie um site do projeto, este site deve conter o planejamento das atividades de codifica¸c˜ao

Quem vai executar

Qual o andamento da atividade (conclu´ıda, em andamento, n˜ao iniciada)

...

(50)

Codifica¸c˜ao

Resumo

A cria¸c˜ao de diagramas do sistema deve ser guiado por informa¸c˜oes relacionadas ao sistema

Um tipo de diagrama pode ser utilizado para criar ou refinar outro tipo de diagrama S˜ao exemplos de t´ecnicas para identificar classes:

An´alise textual de Abbott; An´alise dos casos de uso;

An´alise de robustez (categoriza¸c˜ao BCE)

(51)

Resumo

Intera¸c˜oes ocorrem entre objetos para executar as funcionalidades descritas em um caso de uso

Mensagens correspondem a execu¸c˜ao de opera¸c˜oes de um objeto

Na UML dois tipos de diagramas isomorfos s˜ao utilizados para descrever intera¸c˜oes: Diagrama de sequˆencia

(52)

Codifica¸c˜ao

Resumo

Diagramas de estado exibem os estados poss´ıveis que um objeto pode ter Diagramas de estado cont´em: estados e transi¸c˜oes

Estado de um objeto pode ser determinado pelo valor de seus atributos ou atrav´es de seus v´ınculos

Uma transi¸c˜ao cont´em: evento e a¸c˜ao (ou atividade)

Diagramas de atividade exibem os estados poss´ıveis de uma atividade

(53)

Leituras recomendadas

Gilleanes T. A. Guedes

UML - Uma abordagem pr´atica, 2a ed. Cap´ıtulo 4 - Diagrama de Classes Cap´ıtulo 5 - Diagrama de Seq¨uˆencia Cap´ıtulo 6 - Diagrama de Colabora¸c˜ao Cap´ıtulo 7 - Diagrama de Gr´afico de Estados Cap´ıtulo 8 - Diagrama de Atividade

(54)

Codifica¸c˜ao

Leituras recomendadas

Eduardo Bezerra

Princ´ıpios de an´alise e projeto de sistema com UML. Campus, 2a edi¸c˜ao, 2007.

Cap´ıtulo 5 - Modelagem de classes de an´alise Cap´ıtulo 6 - Passando da an´alise ao projeto Cap´ıtulo 7 - Modelagem de intera¸c˜oes Cap´ıtulo 9 - Modelagem de estados Cap´ıtulo 10 - Modelagem de atividades

(55)

Perguntas?

Alexandre de Andrade Barbosa [email protected]

Referências

Documentos relacionados

Ajuste do Zero: ajuste o sinal de entrada para 4 mA, corrente necessária para manter a válvula 100% fechada.. Ajuste do Span: alimente o posicionador com 20 mA, corrente

Based on the theory that the muscle strength of elderly in- dividuals responds differently to an activity program, ac- cording to the presence or absence of a medical diagnosis

Ato contínuo, após manifestação expressa dos proponentes e a desistência de recursos por todos os proponentes, foi realizada a abertura dos envelopes contendo as propostas

milesi no período de 28 dias, em porcentagem...41 Tabela X: Siparuna guianensis: Capacidade dos Grupos (G) obtidos do fracionamento da fase hexânica do extrato etanólico da folha

Convencionam as partes que, exclusivamente para os empregados que mantêm contrato de trabalho com a mesma empresa ou, empresa do mesmo grupo econômico há mais de 10 (dez) anos e

• uma entidade adquirida possui uma patente de tecnologia. Ela tem licença de uso exclusivo fora dos Estados Unidos, em troca deste uso a entidade recebe um percentual

O LAVI vem sendo montado gradativamente, com recursos provenientes do FDA (Fundo de Desenvolvimento Acadêmico) e LABGRAD (Programa de Apoio aos Laboratórios de

A jurisprudência do Supremo Tribunal Federal entende que, quando há deliberação de PEC que seja contrária a uma das chamadas “cláusulas pétreas” da Constituição Federal