projeto de software orientado a objeto · estágios do ciclo de vida de produto de software rup xp...
TRANSCRIPT
Prof. Gilberto B. OliveiraProf. Gilberto B. Oliveira
Projeto de Software Projeto de Software Orientado a ObjetoOrientado a Objeto
Ciclo de Vida de Produto de Software Ciclo de Vida de Produto de Software (PLC)(PLC)
Analisando um problema e modelando Analisando um problema e modelando uma soluçãouma solução
Estágios do Ciclo de Vida Estágios do Ciclo de Vida de Produto de Softwarede Produto de Software
RUPRUPXPXPTDD (Design Orientado a Teste)TDD (Design Orientado a Teste)PLCPLC
AnáliseAnáliseDesignDesignDesenvolvimentoDesenvolvimentoTesteTesteImplementaçãoImplementaçãoManutençãoManutençãoFim de linha (EOL)Fim de linha (EOL)
AnáliseAnálise
Investigação de um problema que se deseja Investigação de um problema que se deseja resolver com um produto de software:resolver com um produto de software:Definir de maneira clara o problema a ser Definir de maneira clara o problema a ser
resolvidoresolvidoO nicho de mercado a ser atendidoO nicho de mercado a ser atendidoO Sistema a ser criadoO Sistema a ser criadoO limite de um problema também é conhecido como o O limite de um problema também é conhecido como o
escopo de um projetoescopo de um projeto
Identificação dos sub-componentes chaves para Identificação dos sub-componentes chaves para compor o produto de software como um todocompor o produto de software como um todo
Design, Desenvolvimento e Design, Desenvolvimento e TesteTeste
DesignDesignCriar o modelo a partir dos requisitos encontrados na etapa Criar o modelo a partir dos requisitos encontrados na etapa
de analisede analiseDesenvolvimentoDesenvolvimento
Criar os componentes a partir dos modelos gerados na Criar os componentes a partir dos modelos gerados na etapa de designetapa de design
TesteTesteVerifica se os componentes atendem aos requisitos Verifica se os componentes atendem aos requisitos
funcionais e não funcionais modelados na etapa de designfuncionais e não funcionais modelados na etapa de designTeste de UnidadeTeste de UnidadeTeste de IntegraçãoTeste de Integração
Implementação, manutenção Implementação, manutenção e EOLe EOL
ImplementaçãoImplementaçãoTornar o programa disponível ao usuário através de um Tornar o programa disponível ao usuário através de um
release (distribuição);release (distribuição);FCS (Primeira Aquisição do Cliente)FCS (Primeira Aquisição do Cliente)
ManutençãoManutençãoCorrigir problemas do produto;Corrigir problemas do produto;Distribuir o produto como uma nova versão.Distribuir o produto como uma nova versão.
End-of-Life (EOL) Fim de linhaEnd-of-Life (EOL) Fim de linhaIndica aos usuário do produto que não existirá mais Indica aos usuário do produto que não existirá mais
atualização;atualização;Indica aos usuários que outro produto, melhorado, já está Indica aos usuários que outro produto, melhorado, já está
sendo distribuído.sendo distribuído.
Por que seguir uma Por que seguir uma metodologia?metodologia?
Garante que o produto será criado e entregueGarante que o produto será criado e entregueReduzindo o tempo de desenvolvimentoReduzindo o tempo de desenvolvimentoAumentando a qualidade do produto de softwareAumentando a qualidade do produto de softwareAumentando o retorno sobre o investimento (ROI)Aumentando o retorno sobre o investimento (ROI)
Não seguir uma metodologia pode acarretar:Não seguir uma metodologia pode acarretar:Auto custo de manutençãoAuto custo de manutenção
Revisão: Ciclo de Vida de Produto de SoftwareRevisão: Ciclo de Vida de Produto de Software
Prof. Gilberto B. OliveiraProf. Gilberto B. Oliveira
Análise orientada a Análise orientada a objetoobjeto
Estudo de CasoEstudo de CasoIdentificando o domínio problema e os objetos Identificando o domínio problema e os objetos
envolvidosenvolvidosIdentificando atributos e operações de objetos Identificando atributos e operações de objetos
Modelando e executando classes JavaModelando e executando classes Java
Estudo de casoEstudo de caso
Aplicação para controlar a venda de camisas de uma loja de Aplicação para controlar a venda de camisas de uma loja de roupasroupas
Cada camisa tem um código de identificação, uma ou mais Cada camisa tem um código de identificação, uma ou mais cores (identificadas por código) um ou mais tamanhos, uma cores (identificadas por código) um ou mais tamanhos, uma descrição do produto e um preço.descrição do produto e um preço.
A loja aceita cheques e os principais cartões de créditoA loja aceita cheques e os principais cartões de créditoOs consumidores podem fazer seus pedidos por telefone Os consumidores podem fazer seus pedidos por telefone
através do Serviço de Atendimento ao Cliente ou através de através do Serviço de Atendimento ao Cliente ou através de um formulário enviado por e-mail ou por faxum formulário enviado por e-mail ou por fax
A loja gostaria de automatizar os pedidos a partir de um A loja gostaria de automatizar os pedidos a partir de um catálogo criado para a Internetcatálogo criado para a Internet
Estudo de casoEstudo de caso
Assim que os pedidos fossem feitos no sistema Assim que os pedidos fossem feitos no sistema seriam feitas as verificações das quantidades dos itens seriam feitas as verificações das quantidades dos itens pedidos. Se um ou mais itens não estiverem pedidos. Se um ou mais itens não estiverem disponíveis então o pedido é suspenso até o disponíveis então o pedido é suspenso até o reabastecimento do estoque. Após todos os itens reabastecimento do estoque. Após todos os itens serem disponibilizados o pagamento é verificado e o serem disponibilizados o pagamento é verificado e o pedido é submetido ao estoque para ser empacotado e pedido é submetido ao estoque para ser empacotado e enviado ao endereço do cliente.enviado ao endereço do cliente.
Se o pedido for feito por telefone é emitido um Se o pedido for feito por telefone é emitido um número de pedido ao cliente para que ele possa número de pedido ao cliente para que ele possa acompanhar o processo.acompanhar o processo.
Análise do sistemaAnálise do sistema
Identificando o domínio do problemaIdentificando o domínio do problemaIdentificando os objetosIdentificando os objetos
““Coisas” relevantes para o domínio do problemaCoisas” relevantes para o domínio do problemaEstá contido no domínio do problema?Está contido no domínio do problema?É necessário para que o sistema funcione?É necessário para que o sistema funcione?É útil para a iteração entre o usuário e o sistema?É útil para a iteração entre o usuário e o sistema?
Existência independente de outros objetosExistência independente de outros objetosATENÇÃO aos atributos que possuem outros atributosATENÇÃO aos atributos que possuem outros atributosATENÇÃO aos objetos que não possuem atributosATENÇÃO aos objetos que não possuem atributos
Análise do sistemaAnálise do sistema
Identificando atributos e operações dos Identificando atributos e operações dos objetosobjetosAtributosAtributos
Descrevem o estado do objetoDescrevem o estado do objetoPodem ser dados (Descrição, Cor, etc)Podem ser dados (Descrição, Cor, etc)Podem ser outros objetos (Pedido, Produto, etc)Podem ser outros objetos (Pedido, Produto, etc)
OperaçõesOperaçõesComportamentos que modificam o estado dos objetosComportamentos que modificam o estado dos objetos
Atributos que referenciam outros objetosAtributos que referenciam outros objetosObs: Crie nomes que definem de maneira Obs: Crie nomes que definem de maneira
clara os atributos e objetos representadosclara os atributos e objetos representados
ClasseClasse
Grupo cujos membros têm certos atributos em Grupo cujos membros têm certos atributos em comum.comum.
Cada objeto é uma instância de uma classeCada objeto é uma instância de uma classeTem os mesmos Tem os mesmos atributosatributos e executa as mesmas e executa as mesmas
operaçõesoperações que outros objetos da mesma classe que outros objetos da mesma classePode ter Pode ter atributosatributos com valores diferentes em com valores diferentes em
relação a outros objetos relação a outros objetos
DesenvolvimentoDesenvolvimento
ClassesClassesPrimeira letra maiúscula e as demais minúsculasPrimeira letra maiúscula e as demais minúsculasPalavras compostas: As primeiras letras de cada Palavras compostas: As primeiras letras de cada
palavra maiúsculaspalavra maiúsculasSem cedilha, sem espaço, sem acento!Sem cedilha, sem espaço, sem acento!Normalmente é um substantivo. Exemplo:Normalmente é um substantivo. Exemplo:
Veiculo, FormaPagamento, etc.Veiculo, FormaPagamento, etc.
Evite usar Anacrônico (siglas) exceto em caso de Evite usar Anacrônico (siglas) exceto em caso de siglas usuais DVD, CPF, URL, etc. siglas usuais DVD, CPF, URL, etc.
DesenvolvimentoDesenvolvimento
AtributosAtributosSubstantivosSubstantivos
Definem as características de um objetoDefinem as características de um objeto
Primeiras letras minúsculasPrimeiras letras minúsculasSem espaço, sem cedilha e sem acentoSem espaço, sem cedilha e sem acentoPalavras compostas com as primeiras letras Palavras compostas com as primeiras letras
minúsculas e a primeira letra da segunda palavra minúsculas e a primeira letra da segunda palavra maiúscula. Exemplo:maiúscula. Exemplo:nome, idade, dataNascimento, etc.nome, idade, dataNascimento, etc.
DesenvolvimentoDesenvolvimento
MétodosMétodosVerbosVerbos
Ações que os objetos das classes podem executar.Ações que os objetos das classes podem executar.Nomes dos métodos seguidos de parêntesesNomes dos métodos seguidos de parêntesesPrimeiras letras minúsculasPrimeiras letras minúsculasSem espaço, sem cedilha e sem acentoSem espaço, sem cedilha e sem acentoPalavras compostas com as primeiras letras Palavras compostas com as primeiras letras
minúsculas e a primeira letra da segunda palavra minúsculas e a primeira letra da segunda palavra maiúscula. Exemplo:maiúscula. Exemplo:subir( ), calcular( ), exibirDetalhes( ), etc.subir( ), calcular( ), exibirDetalhes( ), etc.
Estrutura de ClassesEstrutura de Classes
Declaração da classeDeclaração da classeDeclaração e inicialização de atributos Declaração e inicialização de atributos
variáveis (opcional)variáveis (opcional)Métodos (opcional)Métodos (opcional)Comentários (opcional)Comentários (opcional)Obs: Uma classe não precisa Obs: Uma classe não precisa
obrigatoriamenteobrigatoriamente conter métodos e atributos. conter métodos e atributos.
Estrutura de Classes:
public class Camisa {
public int codCamisa = 0;
public char cor = 'B';
public String descricao = “Informe Descrição”;
public double preco = 0.00;
public char tamanho = 'M';
public void mostraCamisa() {System.out.println(“Código:” + codCamisa);..System.out.println(“Tamanho:” + tamanho);
}}
Desenvolvimento de Desenvolvimento de ClassesClasses
Restrições:Restrições:Uso de arquivos de texto para a criação de classes:Uso de arquivos de texto para a criação de classes:
Cada arquivo de texto deve ter uma única classe.Cada arquivo de texto deve ter uma única classe.A classe deve ter o mesmo nome do arquivoA classe deve ter o mesmo nome do arquivoO nome do arquivo deverá ter a extensão O nome do arquivo deverá ter a extensão .java.java definida definida
Exemplo:Exemplo:A classe A classe CamisaCamisa deverá estar contida em um arquivo deverá estar contida em um arquivo
chamado Camisachamado Camisa.java.java
Exemplo: Desenvolvimento da classe CamisaExemplo: Desenvolvimento da classe Camisa
Desenvolvimento de Desenvolvimento de ClassesClasses
Método:Método:Exemplo de implementação: Exemplo de implementação: Classe CamisaClasse Camisa
[modificador] tipo_retorno nomeMetodo([argumentos]){[modificador] tipo_retorno nomeMetodo([argumentos]){ //comentário de linha//comentário de linha /* comentário de/* comentário de bloco */bloco */ comando1;comando1; .. .. .. comandoN;comandoN;}}
MétodosMétodos
Modificador:Modificador:Modo como o método será acessado (Modo como o método será acessado (publicpublic, , privateprivate, ,
protectedprotected ou ou packagepackage))Tipo_retorno:Tipo_retorno:
Tipos de dado que o método retorna (Tipos de dado que o método retorna (intint, , doubledouble, ou , ou voidvoid para nulo, etc)para nulo, etc)
Nome do método:Nome do método:Qualquer nome que não seja uma palavra reservada Java.Qualquer nome que não seja uma palavra reservada Java.
Argumentos:Argumentos:Variáveis cujos valores são passados para o métodoVariáveis cujos valores são passados para o método
Comando: Sequência de comandos que o método Comando: Sequência de comandos que o método executa.executa.
Classe de TesteClasse de Teste
Objetivo:Objetivo:Criar e instanciar objetos da classe a ser testada.Criar e instanciar objetos da classe a ser testada.Criar e usar um método mainCriar e usar um método main
Método main:Método main:Toda classe a serToda classe a ser diretamente diretamente executadaexecutada precisa ter um método main precisa ter um método mainTem os Tem os modificadoresmodificadores public staticpublic staticO tipo de retorno do método main é O tipo de retorno do método main é voidvoidO nome do método main O nome do método main nãonão pode ser diferente de pode ser diferente de mainmainO método main deve ter um ou mais objetos do tipo String em um O método main deve ter um ou mais objetos do tipo String em um
vetor de comprimento indeterminado (String args[ ])vetor de comprimento indeterminado (String args[ ]) argsargs nome do vetor indeterminado do tipo String pode ser mudado. nome do vetor indeterminado do tipo String pode ser mudado.Outros métodos Outros métodos mainmain podem ser criados na mesma classe (sobrecarga podem ser criados na mesma classe (sobrecarga
de método)de método)Exemplo de classe de teste é a classe Exemplo de classe de teste é a classe TesteCamisaTesteCamisa..
Estrutura da Classe de Teste:
public class TesteCamisa {
/* Variável ou atributo variável global
public int i = 0;
*/
public static void main(String[] args) {//Criação, instância e manipulação de objetos
Camisa c1c1 = new Camisa();Camisa c2 = new Camisa();c1.tamanho = 'G';c1.mostrarCamisa();
}}
Compilando e executando Compilando e executando classes Javaclasses Java
Crie arquivos Crie arquivos .java.java com o mesmo nome da com o mesmo nome da classeclasse
Salve-os Salve-os Compile o arquivoCompile o arquivoExecute a classe de testeExecute a classe de teste
Testando classes JavaTestando classes Java
Acesse a ferramentaAcesse a ferramentaCrie o projeto e o pacote que acondicionarão as Crie o projeto e o pacote que acondicionarão as classesclassesCrie os arquivos que representam as classesCrie os arquivos que representam as classesCompile e execute o arquivo de teste (o outro Compile e execute o arquivo de teste (o outro arquivo será automaticamente compilado).arquivo será automaticamente compilado).Se houver algum erro:Se houver algum erro:
Abra o(s) arquivo(s) de texto (.java) com as Abra o(s) arquivo(s) de texto (.java) com as classes e corrija o(s) erro(s) apontado(s) pelo classes e corrija o(s) erro(s) apontado(s) pelo compilador.compilador.
SenãoSenãoObserve a saída no console da ferramenta.Observe a saída no console da ferramenta.
Desenvolvendo classes Desenvolvendo classes JavaJava
Atenção ao escrever o código:Atenção ao escrever o código:O Java é “case sensitive” – difere entre maiúsculas e O Java é “case sensitive” – difere entre maiúsculas e
minúsculasminúsculasClassesClasses devem ter a devem ter a primeira letra maiúsculaprimeira letra maiúsculaAtributosAtributos e e métodosmétodos::
Primeira letra minúsculaPrimeira letra minúscula e a e a primeira letra do primeira letra do segundo nome maiúsculasegundo nome maiúscula
Métodos Métodos têm têm parênteses junto ao nome.parênteses junto ao nome.Tanto Tanto na sua implementaçãona sua implementação quanto quanto ao serem ao serem
invocadosinvocados..
Testando classes JavaTestando classes Java
Se certifique de que o Se certifique de que o nome da classenome da classe é o mesmo é o mesmo nome do arquivonome do arquivo salvo: salvo:Inclusive em relação às letras: maiúsculas e minúsculas.Inclusive em relação às letras: maiúsculas e minúsculas.Verifique se o arquivo foi salvo com a extensão Verifique se o arquivo foi salvo com a extensão .java.javaAtenção ao escolher o diretório onde o arquivo será Atenção ao escolher o diretório onde o arquivo será
salvo.salvo.Ao compilar o arquivo de teste outras classes com Ao compilar o arquivo de teste outras classes com
objetos criados e instanciados nessa classe serão objetos criados e instanciados nessa classe serão compiladas tambémcompiladas também
Leia as mensagens de erro que o compilador gerar.Leia as mensagens de erro que o compilador gerar.São gerados arquivos São gerados arquivos .class.class (bytecodes) ao compilar (bytecodes) ao compilar
arquivos arquivos .java.java
Dicas para resolver erros Dicas para resolver erros em código Javaem código Java
Observe o número da linha informado na mensagem Observe o número da linha informado na mensagem de erro gerada pelo compilador:de erro gerada pelo compilador:O erro pode estar:O erro pode estar:
uma linha antes,uma linha antes,na linha indicada ouna linha indicada ouuma linha depois.uma linha depois.
Verifique se todas as linhas de comando têm ponto e Verifique se todas as linhas de comando têm ponto e virgula no final.virgula no final.
Revise a abertura e fechamento de chavesRevise a abertura e fechamento de chavesComente o código sempre que necessárioComente o código sempre que necessárioIMPORTANTE:IMPORTANTE: Sempre idente o código! Sempre idente o código!