Mostrando postagens com marcador cliente. Mostrar todas as postagens
Mostrando postagens com marcador cliente. Mostrar todas as postagens

segunda-feira, 30 de dezembro de 2013

Tutorial Java - Parte 3 - Criando Classes e Atributos na Prática

CRIANDO CLASSES E ATRIBUTOS NA PRÁTICA

Na parte 2 exploramos um pouco sobre o conceito de classes e atributos. Na verdade existem vários outros conceitos na orientação a objetos que são muito importantes como herança e polimorfismo. Mas passá-los de uma vez só serve para gerar mais confusão A ideia é evoluir aos poucos para que possamos aprender de verdade sem atropelar conceitos.
O objetivo deste blog é construir uma aplicação simples, mas que servirá de base para criar outros sistemas mais complexos. Em um primeiro momento será dividido nas seguintes etapas: classes de negócio, classes de persistência e banco de dados e classes de serviço. Com estas etapas já iremos conseguir incluir, alterar, consultar e excluir mesmo sem ter uma tela. Este isolamento será muito útil, pois poderemos melhorar as telas sem mudar nada da parte básica do sistema.
Em um segunda etapa iremos trabalhar com a construção das telas web executando os serviços construídos na etapa anterior.
Vamos para o que interessa e que todo programa almeja, programar.

Seguem as etapas passo a passo:

1) Vamos reabrir o eclipse instalado executando o arquivo c:\eclipse\eclipse.exe.

2) Aparecerá a tela Workspace Launcher, basta clicar em OK.

3) Vá no Menu -> File -> Java Project

4) Na tela New Java Project preencha o campo "Project Name" com "sistemavideolocadora" sem as aspas.

5) Aparecerá no canto esquerdo na aba Package Explorer uma pasta chama sistemavideolocadora. Clique na seta que a antecede.

6) Clique com o botão direito em cima da pasta src e selecione new -> class.

7) Na tela New Java Class altere o campo "Package" para "br.com.videolocadora.model" sem as aspas.

8) No campo "Name" digite "Cliente" sem as aspas e clique no botão Finish.

9) Aparecerá uma tela com o seguinte texto:

package br.com.videolocadora.model;

public class Cliente {

}

10) O pacote serve para organizar seu programa. Um padrão que eu adoto é br de Brasil, depois com de comercial, depois o nome do sistema e por último o pacote indicando que se trata de classes de negócio. Abaixo temos a declaração da classe Cliente que é pública. Mas a frente explicarei sobre a visibilidade/escopo dentro do JAVA.

11) Vamos criar os atributos da classe Cliente, como explicado na parte 2 são as informações importantes do cliente para uma vídeo locadora, não interessa o tamanho do calçado.

12) Vamos começar com o atributo nome. No padrão adotado no JAVA as classes possuem a primeira letra de cada palavra em maiúsculo, mas os atributos tem a primeira letra de todas em minúsculo. Isto ficará claro na exemplificação. Digite o que está em negrito no texto abaixo:

package br.com.videolocadora.model;

public class Cliente {

private String nome;

}

13) A declaração tem o seguinte formato [ESCOPO] [TIPO] [NOME DO ATRIBUTO];. O escopo das propriedades são na maioria dos casos privados. Isto serve para garantir que a classe cliente tenha total domínio de suas informações. Tem um exemplo clássico que é o seguinte: Para alguém buscar sua informação ela não pega direto a sua carteira, normalmente ela pergunta e você que decide se dará ou não a informação, a mesma ideia acontece na orientação a objetos. O tipo String é um dos mais usados, ela indica que este atributo é alfanumérico ou para facilitar um texto, com acentos, espaços em branco, etc.

14) Vamos criar mais uma informação importante para a vídeo locadora em relação ao cliente, os telefones para encontrar o cliente caso o mesmo se esqueça de devolver o DVD. Para isto digite o que está em negrito no texto abaixo.

package br.com.videolocadora.model;

public class Cliente {
private String nome;
private String telefoneCelular;
private String telefoneResidencial;
private String telefoneComercial;

}

15) Precisamos também de saber o endereço do mesmo, caso o cliente não atenda nenhum dos telefones.

package br.com.videolocadora.model;

public class Cliente {

private String nome;
private String telefoneCelular;
private String telefoneResidencial;
private String telefoneComercial;

private String enderecoResidencial;
private String enderecoComercial;
}

16) Quem conhece Orientação a Objetos deve estar questionando, mas telefone não deveria ser uma outra classe e o endereço também. A resposta é depende do tamanho do seu sistema e objetivo dele. Mas de qualquer forma queremos simplicidade neste primeiro momento, iremos evoluir ao longo do tutorial.

17) Vamos criar agora apenas um identificador do cliente e sua data de nascimento, para que possamos enviar sugestões de filme de acordo com a idade do cliente.

package br.com.videolocadora.model;

public class Cliente {

private Long id;
private String nome;
private String telefoneCelular;
private String telefoneResidencial;
private String telefoneComercial;

private String enderecoResidencial;
private String enderecoComercial;

private Date dataNascimento;
}

19) Salve todas as suas alterações com as teclas Ctrl + S.

19) Observe que o eclipse gera um sublinhado em vermelho do campo Date. Isto ocorre porque no java precisamos identificar a origem dos pacotes das classes que estamos utilizando. No mundo estruturado também isto era uma prática, precisávamos indicar os arquivos de utilitários que eram utilizados. Mas o eclipse como uma ferramente incrível tem um facilitador. Este atalho é Ctrl + Shift + O, ele irá fazer a importação necessária para usarmos classes auxiliares.


20) Uma tela Organize Imports irá aparecer, selecione a linha java.util.Date e clique em Finish.



21) Estamos quase finalizando nossa classe, o último passo é gerar os métodos que permitem acessar e alterar os atributos em cima. O Eclipse tem outro facilitador para isto: Clique com o botão direito do mouse em cima do programa Cliente e selecione a opção Source -> Generate Getters and Setters...;

22) Na tela Generate Getters and Setters clique no botão Select All e depois no botão OK.

23) O programa deve ficar como listado abaixo.
package br.com.videolocadora.model;

import java.util.Date;

public class Cliente {
private Long id;
private String nome;
private String telefoneCelular;
private String telefoneResidencial;
private String telefoneComercial;

private String enderecoResidencial;
private String enderecoComercial;
private Date dataNascimento;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

public String getTelefoneCelular() {
return telefoneCelular;
}

public void setTelefoneCelular(String telefoneCelular) {
this.telefoneCelular = telefoneCelular;
}

public String getTelefoneResidencial() {
return telefoneResidencial;
}

public void setTelefoneResidencial(String telefoneResidencial) {
this.telefoneResidencial = telefoneResidencial;
}

public String getTelefoneComercial() {
return telefoneComercial;
}

public void setTelefoneComercial(String telefoneComercial) {
this.telefoneComercial = telefoneComercial;
}

public String getEnderecoResidencial() {
return enderecoResidencial;
}

public void setEnderecoResidencial(String enderecoResidencial) {
this.enderecoResidencial = enderecoResidencial;
}

public String getEnderecoComercial() {
return enderecoComercial;
}

public void setEnderecoComercial(String enderecoComercial) {
this.enderecoComercial = enderecoComercial;
}

public Date getDataNascimento() {
return dataNascimento;
}

public void setDataNascimento(Date dataNascimento) {
this.dataNascimento = dataNascimento;
}


}

24) Finalizamos mais uma etapa importante do nosso tutorial. Até a próxima etapa.

Grato








domingo, 29 de dezembro de 2013

Tutorial Java - Parte 2 - Entendendo Classes e Objetos

INTRODUÇÃO

A principal dificuldade para muitos programadores que não migraram para o paradigma orientados a objetos é entender como trabalham as classes e seus objetos. Simplificando ao máximo o paradigma estruturado nós temos variáveis, funções e arquivos. Os programadores mais organizados no paradigma estruturado criam uma série de bibliotecas e tentam sempre que possível identificar comportamento padrão ou código comum separando-os em funções (sabemos que vai muito além disso).
No paradigma Orientado a Objetos nós temos a programação muito mais próxima da realidade, e a visão de cada classe indica para um elemento o que realmente é importante para o programa. Para deixar mais claro esta visão vamos exemplificar: no mundo OO (Orientado a Objetos) temos por exemplo a figura do cliente, que está presente em vários sistemas comerciais. A quantidade de informações que será necessária para o cliente dependerá muito do tipo de negócio. Em uma empresa que faz empréstimos para o Cliente a quantidade de informações será muito maior que para uma locadora de vídeo ou um restaurante. A classe no paradigma OO representa coletivamente objetos, coisas que possuem propriedades/informações em comum. A classe Cliente não está indicando o cliente de José especificamente, mas sim todos os clientes de um determinado negócio ou sistema. José pegou um empréstimo em uma financeira e passou uma série específicas de informações que pertencem a ele como pessoa, como CPF, endereço, telefone e contracheque. Sendo assim, José é um objeto dentro da Orientação a Objetos.
Resumindo, a classe é a descrição de um grupo de objetos com propriedades similares (atributos), comportamento comum(operações) , relacionamentos com outros objetos e semânticas idênticas  e o objeto é um conceito, abstração, ou entidade com limites bem definidos e um significado para a aplicação. (http://www.ufpa.br/cdesouza/teaching/es/3-OO-concepts.pdf)

O primeiro passo quando começa a programação Java é identificar quais elementos/coisas são importantes para o sistema que será desenvolvido, por exemplo, o elemento paciente não é importante em um sistema de locadoras, e em seguida para cada elemento é necessário descobrir quais são as propriedades/informações relevantes para o sistema em questão. Em um sistema de Vídeo Locadora temos o Cliente/Locatário, temos o DVD/Blu-ray e outros elementos. O que é importante saber do Locatário? O que é importante saber do DVD/Blu-ray? Estas são as perguntas chaves para desenvolver o sistema. Saber por exemplo qual é o número do calçado do cliente na vídeo locadora é irrelevante, mas em uma loja de sapatos não.

Estes elementos  identificados serão nossas classes e as suas propriedades e informações relevantes serão nossos atributos. Aliás, atributo é outro conceito importante no mundo OO. Os atributos são na verdade as características importantes das nossas classes. Quando preenchemos todos estes atributos para uma classe temos o nosso objeto. De forma semelhante ao citado acima, temos o Locatário que representa todos os locatários e temos o José X Y Z que mora no Local W e tem o telefone 999 que é um objeto da classe Locatário.

Espero ter ajudado a compreender um pouco sobre o paradigma OO. Sem este conceito é muito complicado programar em JAVA.

Grato
Pablo