projeto de software orientado a objeto · estágios do ciclo de vida de produto de software rup xp...

29
Prof. Gilberto B. Oliveira Prof. Gilberto B. Oliveira Projeto de Software Projeto de Software Orientado a Objeto Orientado 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ção uma solução

Upload: hoangkhanh

Post on 11-Nov-2018

218 views

Category:

Documents


0 download

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

Modelagem de ClassesModelagem de Classes

Modelagem de ClassesModelagem de Classes

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!