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
Estágios do Ciclo de Vida
Estágios do Ciclo de Vida
de Produto de Software
de Produto de Software
RUPRUPXPXP
TDD (Design Orientado a Teste)TDD (Design Orientado a Teste)
PLCPLC AnáliseAnálise DesignDesign DesenvolvimentoDesenvolvimento TesteTeste ImplementaçãoImplementação ManutençãoManutenção
Análise
Aná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 resolvido
resolvido
O nicho de mercado a ser atendidoO nicho de mercado a ser atendido O Sistema a ser criadoO Sistema a ser criado
O limite de um problema também é conhecido como o O limite de um problema também é conhecido como o escopo de um projeto
escopo de um projeto
Identificação dos sub-componentes chaves para Identificação dos sub-componentes chaves para compor o produto de software como um todo
Design, Desenvolvimento e
Design, Desenvolvimento e
Teste
Teste
DesignDesignCriar o modelo a partir dos requisitos encontrados na etapa Criar o modelo a partir dos requisitos encontrados na etapa de analise
de analise
DesenvolvimentoDesenvolvimento
Criar os componentes a partir dos modelos gerados na Criar os componentes a partir dos modelos gerados na etapa de design
etapa de design
TesteTeste
Verifica se os componentes atendem aos requisitos Verifica se os componentes atendem aos requisitos
funcionais e não funcionais modelados na etapa de design funcionais e não funcionais modelados na etapa de design
Teste de UnidadeTeste de Unidade
Implementação, manutenção
Implementação, manutenção
e EOL
e 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ção
Corrigir 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 linha
Indica 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.
Por que seguir uma
Por que seguir uma
metodologia?
metodologia?
Garante que o produto será criado e entregue
Garante que o produto será criado e entregue
Reduzindo o tempo de desenvolvimentoReduzindo o tempo de desenvolvimento
Aumentando a qualidade do produto de softwareAumentando a qualidade do produto de software Aumentando 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
Prof. Gilberto B. Oliveira Prof. Gilberto B. Oliveira
Análise orientada a
Análise orientada a
objeto
objeto
Estudo de Caso Estudo de CasoIdentificando o domínio problema e os objetos Identificando o domínio problema e os objetos
envolvidos envolvidos
Identificando atributos e operações de objetos Identificando atributos e operações de objetos
Modelando e executando classes Java Modelando e executando classes Java
Estudo de caso
Estudo 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 roupas
roupas
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édito Os 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 fax um 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 Internet
Estudo de caso
Estudo 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 sistema
Análise do sistema
Identificando o domínio do problema
Identificando o domínio do problema
Identificando os objetos
Identificando os objetos
““Coisas” relevantes para o domínio do problemaCoisas” relevantes para o domínio do problema
Está 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 objetos
ATENÇÃO aos atributos que possuem outros atributosATENÇÃO aos atributos que possuem outros atributos ATENÇÃO aos objetos que não possuem atributosATENÇÃO aos objetos que não possuem atributos
Análise do sistema
Análise do sistema
Identificando atributos e operações dos
Identificando atributos e operações dos
objetos
objetos
AtributosAtributos
Descrevem o estado do objetoDescrevem o estado do objeto
Podem 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ções
Comportamentos que modificam o estado dos objetosComportamentos que modificam o estado dos objetos
Atributos que referenciam outros objetosAtributos que referenciam outros objetos
Obs: Crie nomes que definem de maneira
Obs: Crie nomes que definem de maneira
clara os atributos e objetos representados
clara os atributos e objetos representados
Classe
Classe
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 classe
Cada objeto é uma instância de uma classe
Tem os mesmos Tem os mesmos atributosatributos e executa as mesmas e executa as mesmas
operações
operações que outros objetos da mesma classe que outros objetos da mesma classe
Pode ter Pode ter atributosatributos com valores diferentes em com valores diferentes em
relação a outros objetos relação a outros objetos
Modelagem de Classes
Modelagem de Classes
Modelagem de Classes
Modelagem de Classes
Desenvolvimento
Desenvolvimento
Classes
Classes
Primeira letra maiúscula e as demais minúsculasPrimeira letra maiúscula e as demais minúsculas Palavras compostas: As primeiras letras de cada Palavras compostas: As primeiras letras de cada
palavra maiúsculas palavra maiúsculas
Sem 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.
Desenvolvimento
Desenvolvimento
Atributos
Atributos
SubstantivosSubstantivos
Definem as características de um objetoDefinem as características de um objeto
Primeiras letras minúsculasPrimeiras letras minúsculas
Sem espaço, sem cedilha e sem acentoSem espaço, sem cedilha e sem acento
Palavras 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:
Desenvolvimento
Desenvolvimento
Métodos
Métodos
VerbosVerbos
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ênteses
Primeiras letras minúsculasPrimeiras letras minúsculas
Sem espaço, sem cedilha e sem acentoSem espaço, sem cedilha e sem acento
Palavras 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:
Estrutura de Classes
Estrutura de Classes
Declaração da classe
Declaração da classe
Declaraçã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
obrigatoriamente
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
Classes
Classes
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 arquivo
O 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 Camisa
chamado Camisa.java.java
Desenvolvimento de
Desenvolvimento de
Classes
Classes
Método:
Método:
Exemplo de implementação: Classe CamisaExemplo de implementação: Classe 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étodos
Métodos
Modificador:Modificador:Modo como o método será acessado (Modo como o método será acessado (publicpublic, , privateprivate, ,
protected
protected 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 Teste
Classe 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 main
Tem os Tem os modificadoresmodificadores public staticpublic static
O tipo de retorno do método main é O tipo de retorno do método main é voidvoid
O nome do método main O nome do método main nãonão pode ser diferente de pode ser diferente de mainmain
O 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)
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
Compilando e executando
classes Java
classes Java
Crie arquivos
Crie arquivos
.java
.java
com o mesmo nome da
com o mesmo nome da
classe
classe
Salve-os
Salve-os
Compile o arquivo
Compile o arquivo
Testando classes Java
Testando 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 classes
classes
Crie os arquivos que representam as classesCrie os arquivos que representam as classes
Compile 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ão
Desenvolvendo classes
Desenvolvendo classes
Java
Java
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úsculas
minúsculas
ClassesClasses devem ter a devem ter a primeira letra maiúsculaprimeira letra maiúscula AtributosAtributos 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úscula
segundo 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 invocados
Testando classes Java
Testando classes Java
Se certifique de que o Se certifique de que o nome da classenome da classe é o mesmo é o mesmonome do arquivo
nome 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.java
Atençã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ém compiladas 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
Dicas para resolver erros
Dicas para resolver erros
em código Java
em 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 ou
uma 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 chaves
Comente o código sempre que necessárioComente o código sempre que necessário