terça-feira, 7 de janeiro de 2014

Tutorial Java - Parte 5 - Criação da Classe Locação

CRIANDO CLASSES E ATRIBUTOS NA PRÁTICA
Complementando a quarta parte onde construímos a classe MídiaDigital, para completarmos nosso mini sistema de locadora, precisamos da prestação do serviço, precisamos unir o nosso cliente ao nosso produto, através do nosso serviço de locação. No mundo Orientado a Objetos, a ligação entre as classes, ou melhor entre os objetos se chama relacionamento. O nosso cliente pode locar um ou mais mídias digitais (DVD/BLU-RAY) e devolvê-las em um determinada data pagando um determinado valor.  Para guardar estas informações necessitamos criar a classe Locação. Vamos a prática então:

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) Clique com o botão direito em cima da pasta src e selecione new -> class.

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

5) No campo "Name" digite "Locacao" sem as aspas e sem acento e clique no botão Finish.

6) Aparecerá uma tela com o seguinte texto:

package br.com.videolocadora.model;

public class Locacao {

}

7) Vamos criar os atributos da classe Locacao.

8) Vamos começar com o atributo dataLocacao. 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 Locacao {

private Date dataLocacao;

}

9) Observe que usamos o tipo Date utilizados para datas em java. Observe que Date ficou com um sublinhado em vermelho. Esta indicação mostra que o tipo Date ainda não foi importado para esta classe. Uma dica legal é utilizar as teclas Ctrl+Shift+0 (é a letra O e não o numeral 0). Esta tecla cria automaticamente os imports. O import é a indicação de todas as outras classes que são reaproveitadas neste código, no caso estou importando com Date todas as funcionalidades para este campo.

package br.com.videolocadora.model;

import java.util.Date;

public class Locacao {
private String dataLocacao;

}

10) Para que uma locação ocorra precisamos ter a figura do cliente e a mídia que ele está locando. Desta forma iremos colocá-las como atributos da Locacao, conforme em destaque abaixo:
package br.com.videolocadora.model;

import java.util.Date;

public class Locacao {
private Date dataLocacao;
private Cliente cliente;
private MidiaDigital midiaDigital;

}

11) Precisamos guardar também o preço e a data de prevista de entrega. O preço ou valores com casas decimais são bem representadas com o tipo Double em java, como é mostrado abaixo:
package br.com.videolocadora.model;

import java.util.Date;

public class Locacao {
private Date dataLocacao;
private Cliente cliente;
private MidiaDigital midiaDigital;
 private Double preco;
 private Date dataPrevistaEntrega;
}


12) Agora precisamos guardar o retorno. O que é necessário quando o cliente devolve o DVD/BLU-RAY? Precisamos saber a data da entrega efetiva e em casos de atrasos precisamos saber o valor da multa. Logo, vamos a luta novamente.


package br.com.videolocadora.model;

import java.util.Date;

public class Locacao {
private Date dataLocacao;
private Cliente cliente;
private MidiaDigital midiaDigital;
 private Double preco;
 private Date dataPrevistaEntrega;

 private Date dataEfetivaEntrega;
 private Double multaPorAtraso;
}

13) Vamos criar agora apenas um identificador da Locacao.

package br.com.videolocadora.model;

public class Locacao {

private Integer idLocacao;
private Date dataLocacao;
private Cliente cliente;
private MidiaDigital midiaDigital;
 private Double preco;
 private Date dataPrevistaEntrega;

 private Date dataEfetivaEntrega;
 private Double multaPorAtraso;
}

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

15) 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...;

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

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

import java.util.Date;

public class Locacao {

private Integer idLocacao;
private Date dataLocacao;
private Cliente cliente;
private MidiaDigital midiaDigital;
private Double preco;
private Date dataPrevistaEntrega;

private Date dataEfetivaEntrega;
private Double multaPorAtraso;

public Integer getIdLocacao() {
return idLocacao;
}

public void setIdLocacao(Integer idLocacao) {
this.idLocacao = idLocacao;
}

public Date getDataLocacao() {
return dataLocacao;
}

public void setDataLocacao(Date dataLocacao) {
this.dataLocacao = dataLocacao;
}

public Cliente getCliente() {
return cliente;
}

public void setCliente(Cliente cliente) {
this.cliente = cliente;
}

public MidiaDigital getMidiaDigital() {
return midiaDigital;
}

public void setMidiaDigital(MidiaDigital midiaDigital) {
this.midiaDigital = midiaDigital;
}

public Double getPreco() {
return preco;
}

public void setPreco(Double preco) {
this.preco = preco;
}

public Date getDataPrevistaEntrega() {
return dataPrevistaEntrega;
}

public void setDataPrevistaEntrega(Date dataPrevistaEntrega) {
this.dataPrevistaEntrega = dataPrevistaEntrega;
}

public Date getDataEfetivaEntrega() {
return dataEfetivaEntrega;
}

public void setDataEfetivaEntrega(Date dataEfetivaEntrega) {
this.dataEfetivaEntrega = dataEfetivaEntrega;
}

public Double getMultaPorAtraso() {
return multaPorAtraso;
}

public void setMultaPorAtraso(Double multaPorAtraso) {
this.multaPorAtraso = multaPorAtraso;
}

}


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

Grato


sábado, 4 de janeiro de 2014

Tutorial Java - Parte 4 - Criação da Classe Mídia Digital

CRIANDO CLASSES E ATRIBUTOS NA PRÁTICA
Complementando a terceira parte onde construímos a classe Cliente para completarmos nosso mini sistema de locadora, precisamos da mercadoria chave de toda a locadora, o DVD ou o Blu-ray. Na orientação a objetos estes elementos possuem várias características em comum. A diferença entre eles é a qualidade e o tamanho do vídeo. Mas para o sistema estas diferenças não são importantes, basta saber se ele é um DVD ou Blu-ray, pois tem preços diferentes.

Sem enrolações vamos continuar a nossa programação.
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) Clique com o botão direito em cima da pasta src e selecione new -> class.

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

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

6) Aparecerá uma tela com o seguinte texto:

package br.com.videolocadora.model;

public class MidiaDigital {

}

7) Vamos criar os atributos da classe MidiaDigital, como explicado na parte 2 são as informações importantes do DVD/Blu-ray não interessa o tamanho do calçado.

8) Vamos começar com o atributo título. 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 MidiaDigital {

private String titulo;

}

9) Outro atributo importante é o preço e o tipo da mídia indicando se o mesmo é um DVD ou um Blu-ray atual da mídia para locação. Para indicarmos se o tipo da mídia é DVD ou um BLU-RAY vamos usar um recurso típico de programação, que é o seguinte: quando for DVD vamos colocar no atributo tipo o valor 1 e quando for BLU-RAY vamos colocar o valor 2. Para colocar comentários no código existem três formas, vou apresentar abaixo o comentário de apenas uma linha representado pelo //.

package br.com.videolocadora.model;

public class MidiaDigital {
private String titulo;
private Integer tipo; // 1 - DVD e 2 - BLU-RAY
private Double precoAtual;

}


10) Vamos criar agora apenas um identificador para MidiaDigital.

package br.com.videolocadora.model;

public class MidiaDigital {

private Long id;
private String titulo;
private Integer tipo; // 1 - DVD e 2 - BLU-RAY
private Double precoAtual;
}

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

12) 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...;

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

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

public class MidiaDigital {

private Long id;
private String titulo;
private Integer tipo; // 1 - DVD e 2 - BLU-RAY
private Double precoAtual;

public Long getId() {
return id;
}

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

public String getTitulo() {
return titulo;
}

public void setTitulo(String titulo) {
this.titulo = titulo;
}

public Integer getTipo() {
return tipo;
}

public void setTipo(Integer tipo) {
this.tipo = tipo;
}

public Double getPrecoAtual() {
return precoAtual;
}

public void setPrecoAtual(Double precoAtual) {
this.precoAtual = precoAtual;
}

}

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

Grato

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









Tutorial Java - Parte 1 - Construindo seu primeiro programa em JAVA - Olá Mundo!

JAVA Tutorial Java - Parte 1 - Construindo seu primeiro programa em JAVA - Olá Mundo!

Existem milhares de tecnologias e frameworks para se trabalhar com Java. Tantas escolhas e possibilidades acabam assustando quem está começando ou está tentando aprender esta tecnologia tão difundida no mundo.
Não ter escolha é ruim, mas ter tantas possibilidades também assusta. O melhor é começar pelo mais básico, usar tecnologias mais "primitivas" do JAVA vai facilitar e muito a adoção de frameworks mais avançados em um momento futuro. Sem mais delongas, vamos começar com a instalação e elaboração do famoso "Olá Mundo!".

1) Faça download do SDK (Standard Development Kit) clicando no seguinte endereço http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html?ssSourceSiteId=otnpt. Caso não seja mais este endereço, entre no site da Oracle e procure por JAVA SDK (Standard Development Kit). Escolha de acordo com o seu sistema operacional. Se você tem dúvida de qual é o seu Windows, basta clicar no botão Iniciar no canto inferior esquerdo, depois clique com o botão direito em Computador e finalmente clique em Propriedades. Em Sistema verifique se o tipo do seu S.O. (Sistema Operacional) é 32 ou 64 Bits. O meu computador é windows 64, neste caso vou escolher o link Windows x64.

2) Após o download siga os passos padrão de instalação.

3) Outra ferramenta muito interessante é o Eclipse que oferece uma série de facilidades para implementação Java, como auto completar, geração de alguns códigos, até mesmo refatoramento. Para fazer o download desta ferramente incrível basta ir neste endereço http://www.eclipse.org/downloads/.

4) Como mais para frente vou explicar sobre tecnologias Web, vou pedir para já fazer download do Eclipse IDE for Java EE Developers de acordo com o seu Windows que pode ser 32 ou 64 bits. Para descobrir qual é basta rever a dica do passo 1).

5) Descompacte o eclipse baixado em C:\eclipse ou em outra pasta de sua preferência.

6) Verifique se ficou com a seguinte estrutura de diretórios.

7) Clique no arquivo eclipse.exe.

8) Na tela Workspace Launcher clique em OK.

9) Feche a janela Welcome

10) Vamos criar um projeto no Eclipse. Para isto vá no menu File -> New --> Project... .

11) Na tela New Project escolha Java Project e clique em Next.

12) Na tela New Java Project preencha o campo Project name com "olamundo" sem as aspas e clique em Finish.

13) Na tela Open Associated Perspective? clique na opção Yes.

14) Clique na Seta ao lado de olamundo no Package Explorer.

15) Aparecerá duas pastas: src e JRE System Library, como na imagem abaixo:

16) Clique com o botão direito na pasta src e escolha New -> Class.

17) No campo Name: digite OlaMundo (Por padrão, todas as classes em Java tem a primeira Letra de cada palavra em Maiúscula) e clique em Finish.

18) Aparecerá o seguinte código.
package olamundo;

public class OlaMundo {

}


19) Um classe java executa seu código a partir de um método chamado main. Digite o seguinte código para criar seu primeiro programa java após OlaMundo {

public static void main(String[] args)
{
  System.out.println("Olá Mundo!");
}

20) O código final ficará assim:
package olamundo;

public class OlaMundo {

public static void main(String[] args)
{
  System.out.println("Olá Mundo!");
}

}


21) Pressione as teclas Ctrl + S. Esta é uma boa dica, estas duas teclas juntas salvam seu programa.

22) Pressione o botão direito do mouse em cima do programa e selecione Run As -> Java Application.

23) Na parte abaixo da tela na aba Console irá aparecer "Olá Mundo!".

Não fique muito desapontado com todo este trabalho, como diz o ditado chinês: "Longa viagem começa por um passo.".

Quaisquer dúvidas entre em contato.
Pablo