Kodificando

Aprendendo do básico sobre a linguagem de programação JAVA.

Estruturas de Controle Nativas (SEMPRE USAREMOS)

E aê galera!
Hoje vou falar um pouco sobre algumas funções nativas do JAVA.
Preparei um vídeo e aqui vai ele. Mas se você preferir ter informações mais rápidas, segue o post! xD
Falaremos um pouco sobre as funções if, else, switch, while, do while, for e foreach

IF ELSE: A função if é bem simples. Sua utilização é da seguinte forma:
if (condição) {...} else {...}
Onde vemos que o parâmetro 'condição' é a comparação que faremos para que o bloco {...} seja executado ou não. Como assim?! Bem, é melhor mostrar um exemplo.

int numero = 12;
if (numero == 5) {
    System.out.println("O número é igual a 5");
} else if (numero == 78) {
    System.out.println("O número é igual a 78");
} else if (numero == 12) {
    System.out.println("O número é igual a 12");
} else {
    System.out.println("O número é diferente de 5, 78 e 12");
}
SWITCH: O switch é uma função para tratar simultaneamente vários valores enumerados. Ou seja, posso tomar um valor e compará-lo com vários outros valores tomando uma decisão diferente para cada valor.
Sua utilização se dá assim:
                                                      switch(valor) {
                                                             case talValor:
                                                                   façaAlgumaCoisa();
                                                                   break;

                                                             case outroValor:
                                                                   façaOutraCoisa();
                                                                   break;

                                                             default:
                                                                   valorDiferenteDosAnteriores();
                                                                   break;
                                                      }
Vemos que o valor será comparado várias vezes e a função chamada será aquela onde o caso (case) é igual ao valor. Vamos exemplificar?
int valor = 100;
switch(valor) {
    case 12:
        System.out.println("O valor é igual a 12");
        break;
    
    case 85:
        System.out.println("O valor é igual a 85");
        break;
    
    case 56:
        System.out.println("O valor é igual a 56");
        break;
    
    default:
        System.out.println("O valor é diferente de 12, 85 e 56");
        break;
}
A saída desse código será "O valor é diferente de 12, 85 e 56"

WHILE: O while é um laço de repetição que recebe uma só condição como parâmetro. Basicamente se passa um parâmetro de parada e um bloco a ser executado enquanto aquela condição não for satisfeita. Assim:
                                                  while(condição) {
                                                           façaAlgumaCoisa();
                                                           façaOutraCoisa();
                                                           termineUmaIteraçãoDoLaço():
                                                  }
Vemos no exemplo, que enquanto a condição for satisfeita, as três funções (métodos) dentro do bloco serão executadas. Vamos mostrar um código funcional.
int i = 50;
while (i > 0) {
    System.out.println("O número " + i + " é maior do que 50!");
    i--;
}
No exemplo acima teremos que o bloco executado rodará enquanto o inteiro i for maior que zero, decrementando o i porque do contrário criaríamos um laço infinito.

DO WHILE: Enquanto o while roda um código verificando inicialmente a condição de entrada, o do while obriga o processamento a executar seu bloco pelo menos uma vez. Sua utilização se dá da seguinte forma:
                                                  do {
                                                           façaUmaCoisa();
                                                           façaOutraCoisa();
                                                  } while (condição);
Bem, o bloco será executado pelo menos uma vez garantindo assim que os métodos façaUmaCoisa() e façaOutraCoisa() sejam chamados no mínimo uma vez. Como no exemplo:
int a = 0;
do {
    a++;
    if (a == 5) {
        a = 10;
    }
} while (a != 10);
No exemplo acima, o laço será executado enquanto o inteiro a for diferente de 10. Quando o inteiro a for igual a cinco, o próprio programa mudará seu valor para 10 e então sua execução será finalizada.

FOR: O for é um laço de repetição que realiza incrementos ou decrementos em algum 'contador'. Podemos usá-lo assim:
                                                   for (int a = 0; a < 10; a++) {
                                                           chameUmMetodo();
                                                           chameOutroMetodo():
                                                  }
Vemos que, como parâmetro, é passado um inteiro que tem seu valor incrementado. Enquanto esse inteiro satisfazer a condição de ser menor que dez, teremos o bloco do for executado.
for (int i = 0; i < 30; i++) {
    System.out.println("Oi, eu ainda sou menor que trinta!\nMeu valor é: " + i):
}
FOREACH: Como o próprio nome já diz o foreach é um laço que se repete para cada valor. Mas como utilizá-lo? Usamos o foreach em conjunto com algum vetor de dados, um array. O foreach é a estrutura mais utilizada em qualquer contexto visto que estamos sempre mexendo com vários dados em nossas aplicações. Assim:
                                                 int numeros[] = {45, 30, 21, 102, 105};
                                                 for (int numero : numeros) {
                                                           System.out.println(numero);
                                                 }
Nessa utilização o for percorrerá o vetor de números e para cada número do array, será impresso seu valor. Vamos exemplificar.
String nomes[] = {"Acesse", "o", "Blog", "Kodificando!"};
for (String nome : nomes) {
    System.out.println(nome);
}

Padrão de escrita MVC

Bom dia, boa tarde, boa noite galera!
Hoje vou falar um pouquinho sobre MVC. É de comer?! Não, mas pode garantir o seu sustento xD
No ramo da programação temos muitas normalizações que são adotadas pra facilitar a vida do programador e a manutenção no seu código. Por exemplo, quando você entra numa empresa pra trabalhar com programação, você perceberá bem rápido que um determinado padrão de codificação é adotado para facilitar o entendimento do código pela equipe. Um desses padrões é o MVC (Model, View, Controller) e esse padrão é mais amplamente adotado por todos por causa da sua simplicidade e eficácia.


Os nossos pacotes poderiam ficar organizados como na imagem. Não se preocupem com o br.com no momento, porque é apenas uma nomenclatura para quem se acostuma a desenvolver para o ambiente web xD
Como os pacotes são bem definidos e tem função específica, fica fácil achar e corrigir problemas no nosso código. Mas vamos ao que interessa. Como funciona esse padrão?

Basicamente é como na imagem, onde o usuário enxerga a visão, através de um comando ele invoca um método do controlador, o controlador manipula o modelo alterando seus valores, o modelo é atualizado e "avisa" a visão que seus dados foram alterados e por fim a visão é renderizada novamente mostrando ao usuário os dados alterados.
Simples né? No começo NÃO mas depois que se pega a prática, você consegue fazer mais nada sem adotar o padrão MVC!! Mas como isso funciona em JAVA? Se você ainda não conseguiu enxergar, se liga só que aí vai um exemplo.
Não é atoa que o padrão se chama MVC porque primeiramente vamos escrever nossa classe model em seguida a view e por último, se comunicando com ambas as classes, escreveremos a classe controller. Então mãos a obra.
Queremos fazer um cadastro de automóveis. Hã?! Tá, não queremos, mas vai ser o exemplo. Então começaremos com o modelo do nosso sistema, que é o........ Automóvel! Isso mesmo, você tá começando a entender a translação da realidade em negócio no mundo Java.
package br.com.kodificando.model;

//Classe Automóvel
public class Automovel {

String marca; // A marca do nosso Automóvel
Double preco; // O preço do nosso Automóvel

// Nosso construtor...

public Automovel() {}

/* Métodos get/set */
public String getMarca() {
return marca;
}

public void setMarca(String marca) {
this.marca = marca;
}

public double getPreco() {
return preco;
}

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

}
Se você não sabe pra que servem os métodos get/set não se preocupe. São apenas para mudar os valores dos atributos da classe e para resgatar esses valores. Qualquer dúvida, comente no post e eu responderei com urgência.
Agora vamos fazer a classe de visão do nosso sistema, que basicamente será a classe..... Tela! É isso aê, se vamos enxergar o sistema, precisa ser por uma tela né... A classe Tela vai precisar pegar um novo valor de automóvel, uma nova marca, e listar os automóveis cadastrados.
package br.com.kodificando.view;

import java.util.List;
import java.util.Scanner;

import br.com.kodificando.model.Automovel;

public class Tela {

String novaMarca; // Marca que será cadastrada
Double novoPreco; // Preço que será cadastrado

Scanner leitor; // Leitor de dados

/**
* Exibe uma tela de cadastro para um novo automóvel.
* O novo automóvel possui uma marca e um preço
*/
public void exibaTelaDeCadastro() {
leitor = new Scanner(System.in);
System.out.print("Marca do automóvel: "); // Exibe texto para usuário
this.novaMarca = leitor.nextLine(); // Captura a marca digitada pelo usuário
System.out.print("Preço do automóvel: "); // Exibe texto para usuário
this.novoPreco = (Double) leitor.nextDouble(); // Captura o preço do usuário
}

/**
* Exibe a lista da automóveis para o usuário
* Recebe um parâmetro {@code automoveis} que é a lista a ser exibida
* @param automoveis Lista de automóveis a ser exibida
*/
public void exibaListaDeAutomoveis(List<automovel> automoveis) {
for (Automovel automovel : automoveis) {
System.out.println("Marca: " + automovel.getMarca());
System.out.println("Preço: " + automovel.getPreco() + "\n");
}
}

/* Métodos get/set */
public String getNovaMarca() {
return novaMarca;
}

public void setNovaMarca(String novaMarca) {
this.novaMarca = novaMarca;
}

public double getNovoPreco() {
return novoPreco;
}

public void setNovoPreco(double novoPreco) {
this.novoPreco = novoPreco;
}
}

Beleza, agora podemos concluir o projeto criando nosso controlador, cujo nome é..... Controlador! É, pro controlador não precisa muita firula não, fica mais compreensível se você coloca um nome simples para que saibam que é ali que a "mágica" acontece. O controlador precisa pedir um novo cadastro ao usuário e exibir a lista de carros. Então vamos lá.

package br.com.kodificando.controller;

import java.util.ArrayList;
import java.util.List;

import br.com.kodificando.model.Automovel;
import br.com.kodificando.view.Tela;

public class Controlador {

List<Automovel> automoveis; // Lista de automóveis
Tela tela; // Tela do usuário

public Controlador() {
automoveis = new ArrayList<>(); // Inicializando a lista
tela = new Tela(); // Inicializando a tela
}

/**
* Realiza um novo cadastro
* exibindo a tela de cadastro para o usuário
*/
public void facaNovoCadastro() {
tela.exibaTelaDeCadastro();

Automovel automovel = new Automovel();
automovel.setMarca(tela.getNovaMarca());
automovel.setPreco(tela.getNovoPreco());

automoveis.add(automovel);
}

/**
* Exibe a lista de carros cadastrados para o usuário
*/
public void exibaListaDeAutomoveis() {
tela.exibaListaDeAutomoveis(automoveis);
}
}
Está tudo pronto. Pra rodar falta apenas uma coisa! O método main. Mas onde ficaria esse método? Obviamente não seria nas nossas classes. Precisamos criar um pacote e uma classe apenas para o método main e separá-lo do restante do código.
package br.com.kodificando.main;

import br.com.kodificando.controller.Controlador;

public class Main {

public static void main(String[] args) {
// Criando um controlador
Controlador controlador = new Controlador();

// Vamos cadastrar e exibir cinco carros
for (int i = 0; i < 5; i++) {
controlador.facaNovoCadastro();
controlador.exibaListaDeAutomoveis();
}
}

}


Com o método main pronto, podemos rodar nosso código e se você tiver algum problema com a compilação ou qualquer dúvida vai poder postar aqui e eu responderei o quanto antes. No próximo post vamos falar de orientação a objetos e polimorfismo. Ao final, nosso projeto estará como na imagem.





Instalando ECLIPSE IDE

Bom dia, boa tarde, boa noite galera!

          Hoje vou mostrar pra vocês qual IDE utilizaremos durante o desenvolvimento das aplicações no BLOG. A IDE utilizada será o ECLIPSE KEPLER e eu montei um vídeo tutorial mostrando a instalação e a função de cada parte do eclipse. Espero que gostem e espero que mandem dúvidas, sugestões ou críticas!
          No próximo post falarei um pouco sobre Orientação a Objetos. Não perca.
Até mais!!!


Configurando JAVA | JDK nos SOs Windows e Linux

Boa noite!
Como prometido, vamos configurar o JDK no Windows e no Linux. Preparei duas video-aulas pra vocês e também disponibilizarei dois arquivos explicando o passo a passo para aqueles que não tem tempo de assistir as video-aulas.
Qualquer dúvida, entrem em contato o mais rápido possível. Estarei aqui pra ajudar.

Tutorial Windows: Instalação JDK WINDOWS.pdf



Tutorial Linux: Instalação JDK LINUX.pdf



Programa básico em JAVA

Boa noite galera!
Hoje vou exibir o primeiro vídeo do Blog! Espero que gostem. Nele farei apenas um simples programa, exibindo como se compila um programa pela command line do WINDOWS e depois como executá-lo. Para isso usei o editor de texto Sublime Text 2 e seu link está na descrição do vídeo.
Por favor, enviem críticas, sugestões e dúvidas. Podem enviar pro meu e-mail mesmo. Juro que respondo o quanto antes. Um grande abraço e não percam o próximo post. Vou falar sobre a configuração do ambiente para desenvolvimento JAVA xD


Primeiros Passos

Boa noite!
Já que vamos estudar JAVA aqui então é melhor saber como a coisa realmente anda, funciona, é executada, etc... Bem, vamos entender quem são os responsáveis por pegar um texto cheio de palavras estranhas e transformá-lo em um programa que roda no seu computador!
Todo aplicativo JAVA roda sobre uma JVM (famosa Java Virtual Machine) e quem realiza esse trabalho é o JRE (Java Runtime Environment) desde que nosso texto estranho (código) tenha sido compilado pelo JDK (Java Development Kit). Então vamos entender como cada um funciona separadamente.

win-lin
JVM: A máquina virtual JAVA tem a responsabilidade de traduzir seu código em tempo de execução para o Sistema Operacional em uso. Ela literalmente pega seu código (bytecodes) em execução e chama as exatas bibliotecas de execução do Sistema Operacional para executá-lo. Como essas bibliotecas variam de S.O. para S.O., a JVM fica incumbida da correta tradução xD

JRE: O ambiente de execução JAVA cuida especificamente de rodar seu código, para tanto ele usa a JVM!!! (SIM, instalando o JRE você estará instalando a JVM automaticamente xD)Para tanto ele é composto de várias bibliotecas com várias interfaces JAVA.


JDK: O kit de desenvolvimento JAVA é responsável por ler nosso código e gerar o bytecode que será executado pelo JRE e traduzido para o PC com a JVM. É a principal ferramenta do desenvolvedor, inclusive a única necessária para fazer qualquer coisa a partir do zero, uma vez que com ele podemos compilar e executar nosso código.


Bem pessoal, por enquanto é só. No próximo post já iniciarei um programa bem básico exibindo como funciona na prática a execução de um código JAVA. Por isso não percam!!! ;D
Deixo aqui o fluxo analisado hoje em formato de diagrama, e por favor, enviem críticas, sugestões e dúvidas.

HelloKodificando

Se vamos falar de JAVA então é melhor começar com o pé direito. E todo mundo sabe que sem nosso amado tão escrito HelloWorld as coisas podem sair de controle. Quero dar as boas vindas a todos os leitores, e os mais sinceros agradecimentos.
Ao longo de cada post, terei prazer em receber críticas, sugestões e dúvidas. Por isso sempre deixarei meu contato.
package kod;

public class HelloKodificando {

public static void main(String[] args) {
System.out.println("Hello Kodificando!");
}

}