Projeto de Software Orientado a Objeto Ciclo de Vida de Produto de Software (PLC) Analisando um problema e modelando uma solução Prof. Gilberto B. Oliveira
Estágios do Ciclo de Vida de Produto de Software RUP XP TDD (Design Orientado a Teste) PLC Análise Design Desenvolvimento Teste Implementação Manutenção Fim de linha (EOL)
Análise Investigação de um problema que se deseja resolver com um produto de software: Definir de maneira clara o problema a ser resolvido O O nicho de mercado a ser atendido O O Sistema a ser criado O O limite de um problema também é conhecido como o escopo de um projeto Identificação dos sub-componentes chaves para compor o produto de software como um todo
Design, Desenvolvimento e Teste Design Criar o modelo a partir dos requisitos encontrados na etapa de analise Desenvolvimento Criar os componentes a partir dos modelos gerados na etapa de design Teste Verifica se os componentes atendem aos requisitos funcionais e não funcionais modelados na etapa de design Teste de Unidade Teste de Integração
Implementação, manutenção e EOL Implementação Tornar o programa disponível ao usuário através de um release (distribuição); FCS (Primeira Aquisição do Cliente) Manutenção Corrigir problemas do produto; Distribuir o produto como uma nova versão. End-of-Life (EOL) Fim de linha Indica aos usuário do produto que não existirá mais atualização; Indica aos usuários que outro produto, melhorado, já está sendo distribuído.
Por que seguir uma metodologia? Garante que o produto será criado e entregue Reduzindo o tempo de desenvolvimento Aumentando a qualidade do produto de software Aumentando o retorno sobre o investimento (ROI) Não seguir uma metodologia pode acarretar: Auto custo de manutenção Revisão: Ciclo de Vida de Produto de Software
Análise orientada a objeto Estudo de Caso Identificando o domínio problema e os objetos envolvidos Identificando atributos e operações de objetos Modelando e executando classes Java Prof. Gilberto B. Oliveira
Estudo de caso Aplicação para controlar a venda de camisas de uma loja de roupas Cada camisa tem um código de identificação, uma ou mais cores (identificadas por código) um ou mais tamanhos, uma descrição do produto e um preço. A A loja aceita cheques e os principais cartões de crédito Os consumidores podem fazer seus pedidos por telefone através do Serviço de Atendimento ao Cliente ou através de um formulário enviado por e-mail ou por fax A A loja gostaria de automatizar os pedidos a partir de um catálogo criado para a Internet
Estudo de caso Assim que os pedidos fossem feitos no sistema seriam feitas as verificações das quantidades dos itens pedidos. Se um ou mais itens não estiverem disponíveis então o pedido é suspenso até o reabastecimento do estoque. Após todos os itens serem disponibilizados o pagamento é verificado e o pedido é submetido ao estoque para ser empacotado e enviado ao endereço do cliente. Se o pedido for feito por telefone é emitido um número de pedido ao cliente para que ele possa acompanhar o processo.
Análise do sistema Identificando o domínio do problema Identificando os objetos Coisas relevantes para o domínio do problema Está contido no domínio do problema? É É necessário para que o sistema funcione? É É útil para a iteração entre o usuário e o sistema? Existência independente de outros objetos ATENÇÃO aos atributos que possuem outros atributos ATENÇÃO aos objetos que não possuem atributos
Análise do sistema Identificando atributos e operações dos objetos Atributos Descrevem o estado do objeto Podem ser dados (Descrição, Cor, etc) Podem ser outros objetos (Pedido, Produto, etc) Operações Comportamentos que modificam o estado dos objetos Atributos que referenciam outros objetos Obs: Crie nomes que definem de maneira clara os atributos e objetos representados
Classe Grupo cujos membros têm certos atributos em comum. Cada objeto é uma instância de uma classe Tem os mesmos atributos e executa as mesmas operações que outros objetos da mesma classe Pode ter atributos com valores diferentes em relação a outros objetos
Modelagem de Classes
Modelagem de Classes
Desenvolvimento Classes Primeira letra maiúscula e as demais minúsculas Palavras compostas: As primeiras letras de cada palavra maiúsculas Sem cedilha, sem espaço, sem acento! Normalmente é um substantivo. Exemplo: Veiculo, FormaPagamento, etc. Evite usar Anacrônico (siglas) exceto em caso de siglas usuais DVD, CPF, URL, etc.
Desenvolvimento Atributos Substantivos Definem as características de um objeto Primeiras letras minúsculas Sem espaço, sem cedilha e sem acento Palavras compostas com as primeiras letras minúsculas e a primeira letra da segunda palavra maiúscula. Exemplo: nome, idade, datanascimento, etc.
Desenvolvimento Métodos Verbos Ações que os objetos das classes podem executar. Nomes dos métodos seguidos de parênteses Primeiras letras minúsculas Sem espaço, sem cedilha e sem acento Palavras compostas com as primeiras letras minúsculas e a primeira letra da segunda palavra maiúscula. Exemplo: subir( ), calcular( ), exibirdetalhes( ), etc.
Estrutura de Classes Declaração da classe Declaração e inicialização de atributos variáveis (opcional) Métodos (opcional) Comentários (opcional) Obs: Uma classe não precisa obrigatoriamente 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); }
Restrições: Desenvolvimento de Classes Uso de arquivos de texto para a criação de classes: Cada arquivo de texto deve ter uma única classe. A A classe deve ter o mesmo nome do arquivo O O nome do arquivo deverá ter a extensão.java definida Exemplo: A A classe Camisa deverá estar contida em um arquivo chamado Camisa.java Exemplo: Desenvolvimento da classe Camisa
Método: Desenvolvimento de Classes Exemplo de implementação: Classe Camisa [modificador] tipo_retorno nomemetodo([argumentos]){ //comentário de linha /* comentário de bloco */ comando1;.. }. comandon;
Modificador: Métodos Modo como o método será acessado (public( public, private, protected ou package) Tipo_retorno: Tipos de dado que o método retorna (int( int, double,, ou void para nulo, etc) Nome do método: Qualquer nome que não seja uma palavra reservada Java. Argumentos: Variáveis cujos valores são passados para o método Comando: Sequência de comandos que o método executa.
Objetivo: Classe de Teste Criar e instanciar objetos da classe a ser testada. Criar e usar um método main Método main: Toda classe a ser diretamente executada precisa ter um método main Tem os modificadores public static O tipo de retorno do método main é void O nome do método main não pode ser diferente de main O método main deve ter um ou mais objetos do tipo String em um vetor de comprimento indeterminado (String args[ ]) args nome do vetor indeterminado do tipo String pode ser mudado. Outros métodos main podem ser criados na mesma classe (sobrecarga de método) Exemplo de classe de teste é a classe TesteCamisa.
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 c1 c1 = new Camisa(); Camisa c2 = new Camisa(); c1.tamanho = 'G'; c1.mostrarcamisa(); }
Compilando e executando classes Java Crie arquivos.java com o mesmo nome da classe Salve-os Compile o arquivo Execute a classe de teste
Testando classes Java Acesse a ferramenta Crie o projeto e o pacote que acondicionarão as classes Crie os arquivos que representam as classes Compile e execute o arquivo de teste (o outro arquivo será automaticamente compilado). Se houver algum erro: Abra o(s) arquivo(s) de texto (.java) com as classes e corrija o(s) erro(s) apontado(s) pelo compilador. Senão Observe a saída no console da ferramenta.
Desenvolvendo classes Java Atenção ao escrever o código: O O Java é case sensitive difere entre maiúsculas e minúsculas Classes devem ter a primeira letra maiúscula Atributos e métodos: Primeira letra minúscula e a primeira letra do segundo nome maiúscula Métodos têm parênteses junto ao nome. Tanto na sua implementação quanto ao serem invocados.
Testando classes Java Se certifique de que o nome da classe é o mesmo nome do arquivo salvo: Inclusive em relação às letras: maiúsculas e minúsculas. Verifique se o arquivo foi salvo com a extensão.java Atenção ao escolher o diretório onde o arquivo será salvo. Ao compilar o arquivo de teste outras classes com objetos criados e instanciados nessa classe serão compiladas também Leia as mensagens de erro que o compilador gerar. São gerados arquivos.class (bytecodes) ao compilar arquivos.java
Dicas para resolver erros em código Java Observe o número da linha informado na mensagem de erro gerada pelo compilador: O O erro pode estar: uma linha antes, na linha indicada ou uma linha depois. Verifique se todas as linhas de comando têm ponto e virgula no final. Revise a abertura e fechamento de chaves Comente o código sempre que necessário IMPORTANTE: Sempre idente o código!