terça-feira, 18 de janeiro de 2011

2 Tópico da Prova - Estruturas de Fluxo de Dados

Boa noite galera, um pouco de estruturas de fluxo de dados começando pela estrutura mais básica de todas o IF ( Se )

e para que serve o if ? o if serve principalmente para verificar se uma condição é verdadeira ou não, existem muitas pegadinhas na prova que utilizam o IF vamos começar do começo (first things first)








estrutura básica do if

if ( condição ) {

}

bem simples não acham?
lembrando que :
a condição sempre SEMPRE SEMPRE ! tem que ser um valor booleano, no Java existem operadores de comparações que retornam booleano e que podem ser usados em estruturas de IF's










operadores de condições:

== (igual, igual) compara se uma condição é igual a outra
!= (diferente, igual) compara se uma condição é diferente da outra
> (maior) compara se uma condição é maior que a outra (numeros somente)
< (menor) compara se uma condição é menor que a outra (numeros somente)
<= (menor, igual) compara se uma condição é menor ou igual a outra (numeros somente)
>= (maior, igual) compara se uma condição é maior ou igual a outra (numeros somente)

você pode utilizar quaisquer desses operadores na sua condição IF
escreva algum código Java na sua IDE favorita para fazer testes com if, é vital lembrar dessas informações

pegadinhas:








Se vocês repararem vão ver a linha do IF Grifada em vermelho, cuidado com os operadores de comparação e operadores de atribuição ou seja o = (igual) é um operador de atribuição na verdade o que você está falando na condição é idade igual a 10












E por quê esse código não tem problema nenhum???????
dessa vez reparem que estou utilizando uma variavel do tipo boolean que é true ou false
isso funciona, uma vez que condição é um boolean, tanto faz se você utilizar o operador de atribuição porém o resultado sempre será um boolean (valido para um if) ou seja o nosso if ira realizar o "//do something"

se ficou alguma dúvida por favor deixem comentarios, se errei por favor comentem também
obrigado a todos.

Escopo de visibilidade de código

Boa noite galera estou aqui hoje para falar um pouco sobre visibilidade de código

o que vocês acham desse código ?







bom a variavel idade está marcada em vermelho pois o java não consegue visualizar a variavel idade.

"MAIS COMO ISSO???? TÁ LA NA LINHA 4 INICIALIZEI!"

Em qualquer linguagem que eu conheça é claro kkk
utiliza escopo de variaveis, alguem conheçe aquele ditado : "O que acontece em quatro paredes fica em quatro paredes" ?.
então no Java é bem parecido toda variavel que é inicializada dentro de um laço uma estrutura de condição etc.. fica dentro da mesma

exemplo:

variaveis que são inicializadas dentro de IF's e Elses são somente visiveis dentro das mesmas
variaveis que são inicializadas dentro de Fors, Whiles, For Eachs, Do Whiles, Switch's etc.. são somente visiveis dentro das mesmas

isso também é pegadinha da prova, então cuidado sempre estude.!

como sempre eu reforço, sou um programador humano como todos os meus leitores, caso eu tenha escrito algo errado ou tenha faltado alguma coisa em algum de meus artigos, por favor deixem comentarios.
Obrigado a todos.

quinta-feira, 13 de janeiro de 2011

Post pequeno de quinta feira pós pastel

Bom dia pessoal,
uma pequena dica para aqueles que almejam a OCJP
Estudem muito ! e usufruam de simulados, ai vai um para aqueles que estão começando

O Java Ranch.com (em inglês)

O Java ranch tem um forum muito util, e um simulado muito amigavel
Simulado
e outra dica é acompanhe o GUJ grupo de usuários Java www.guj.com.br
muito util para tirar dúvidas.

quarta-feira, 12 de janeiro de 2011

Um pouco sobre inicialização de variaveis

Um pequeno post sobre inicialização de variaveis

deve-se tomar cuidado com inicializações pois devemos dizer ao Java de algum jeito que iremos utilizar aquela variavel ou seja

caso você crie o seguinte método:



O Java ira acusar um erro pois a variavel idade não foi inicializada, e o Java encherga isso em tempo de compilação. Existem dois jeitos corretos de se fazer isso

1 - carregando a variavel com um valor default (de sua preferencia) -1 por exemplo




2 - ou tendo um atributo de classe (ou uma variavel membro de classe se preferir)


Eu posso fazer isso pois variaveis de classe são instanciadas automáticamente

Essa regra não se aplica a parametros já que todos os parametros passados precisam obrigatoriamente ser criados.

lembrando mais uma vez, caso algum de meus posts tenha algum defeito gostaria que meus leitores me deixassem um comentario para que possa concertar meus posts.

terça-feira, 11 de janeiro de 2011

Definições Pascal Case e Camel Case

Vou explicar o que é Pascal Case e o que é Camel Case
é bem simples

o padrão Pascal Case é muito utilizado para nomear metodos em C# e em Delphi
e utiliza esse padrão de nomenclatura

palavras iniciadas com letra maiuscula

Ir();

caso seja um metodo composto por mais palavras seria

IrParaCasa();

sempre respeitando que as palavras seguintes a primeira começam com maiusculo e são unidas com a primeira palavra

Camel Case

O camel case é muito utilizado no Java,
variaveis e metodos devem ser nomeados com o seguinte padrão

ir();

para duas palavras utilizar:

irParaCasa();

eu como programador Java gosto muito de utilizar o camel case, mais vai de cada programador ou do padrão de cada empresa

isso significa manter um padrão de nomenclaturas que facilita a leitura do código para outros programadores que vão realizar manutenção do seu código



Happy Coding XD

Fundamentos de um programador Java certificado

A coisa mais básica para se aprender no estudo da certificação é como declarar corretamente variaveis, respeitando as regras de nomenclatura do Java, e o que seriam as regras de nomenclatura de variaveis do Java ? antes de aprendermos devemos ter em mente quais são as palavras reservadas do Java 1.6 para não cometer nenhum erro na codificação.

palavras chave do Java (lembrando que todas começam com letra minuscula)

while, switch, synchronized, this, throw, throws, transient, try, void, volatile, new, package, private, public, protected, return, short, static, strictfp, super, for, goto, if, implements, import, instanceof, int, interface, long, native, continue, default, do, double, else, enum, extends, final, finally, float, abstract, assert, boolean, break, byte, case, catch, char, class, const

a regra diz que :

nomes de variaveis podem começar com caracteres especiais: $ e _
nomes de variaveis podem ser camelCase ou PascalCase (definição) ou até AnyCase (int NuMeRoDeCaSa) além de não recomendar a ninguem kkkkk. mais funciona.
nomes de variaveis não podem começar com numeros 123 ex: 1_cliente;
nomes de variaveis não podem ser iguais as palavras chaves comentadas acima

tome cuidado porém existem pegadinhas na prova que incluem variaveis escritas de um jeito diferente que podem te confundir na hora da prova por ex: int N34_NomenHEjdhs;
sim isso é valido. por tanto pratique na sua IDE favorita

seguindo essas regras será possivel garantir que seu código compile corretamente
lembre-se na hora de programar você pode ter uma IDE que te ajude Eclipse, NetBeans, etc.. porém na hora da prova o código vai ser exibido em um bloco de texto sem cores para distinguir nomenclaturas de texto, então cuidado pratique sempre que puder.

Tópicos da SCJP - OCP

Olá pessoal, neste post vou explicar um pouco dos tópicos da SCJP versão 6.0
que estão descritos neste site
aqui


E ao longo do tempo vou criando posts descrevendo cada tópico e vou colocando um link para cada um aqui neste mesmo post.

Tópicos cobrados na prova:

1-  Declarações, Inicializações e Escopo de código
      - Declarações de variaveis, escopo de visibilidade ou seja onde as variaveis são visiveis dentro de um código e inicializações obrigatorias para compilar seu código.

2 - Controle de fluxo de dados
      - Controle de decisões lógicas utilização de blocos, IF, ELSE, SWITCH, etc..

3 - Conceitos de API
      - Utilização de Wrapping, Boxing e Unboxing, diferenças entre Strings mutaveis e não mutaveis, ler e escrever arquivos, classes de funcionalidade para Parsear datas, numeros, e o uso correto do Locale do Java, e por fim como utilizar o pacote Regex (meu favorito e mto dificil) para verificar expressões regulares

4 - Concorrência
      - Como criar novas Threads de execução utilizando java.lang.Thread e java.lang.Runnable
      - Reconher os estados em que uma Thread pode existir e identificar meios em que cada Thread pode transitar de um estado para outro
      - Dado um cenario escrever um código que faz uso apropriado de locking de objetos para protejer blocos estaticos ou de instancia de problemas de acessos de concorrência.

 5 - Conceitos de Orientação a Objetos
       - Desenvolver um código que implementa encapsulamento, baixo acoplamento, e alta coesão em classes e descrever seus beneficios
      - Dado um cenario desenvolver código que usa polimorfismo, determinar quando casting será necessário e reconhecer erros de Compilador e erros de Runtime relacionados com Casting de referencias
     - Explicar efeitos dos modificadores de acesso nas heranças com respeito a construtores, instancias ou variaveis estáticas
    - Dado um cenario desenvolver código que declara ou invoca metodos sobreescritos ou sobrecarregados e código que declara e/ou invoca superclasses ou construtores sobrecarregados
    - Desenvoler códigos que implementam relacionamentos "is-a" ("é um") e ou "has-a" ("tem um")

6 - Coleções / Generics
      - Dado um cenario, determinar quais coleções devem ser usadas apropriadamente para implementar aquele design especifico, incluindo o uso da interface Comparable (muito importante)
      - Destinguir entre sobrescritas corretas e incorretas do método hashCode e do método equals e explicar a diferença entre == e o método equals
      - Escrever códigos que usam versões genericas da Collections API, em particular, as interfaces Set, List e Map e suas classes de implementação. Reconheçer limitações de coleções não genericas e como refatora-las em coleções genericas, e por fim escrever código que utiliza as interfaces NavigableSet e NavigableMap  (novo na versão 1.6 da prova)
      - Desenvolver códigos que fazem uso correto de tipos de paramêtros de declaração em classe/interfaces, instancia de variaveis, argumentos de métodos, e tipos de retorno, e escrever código métodos genéricos ou métodos que fazem usos de tipos "Wildcard" (tipos Coringa) e entender similaridades e diferenças entre essas duas abordagens
      - Usar as capacidades do pacote java.util para escrever código que efetua sorting em listas, criando uma busca binaria, ou convertendo uma lista para um array, usar capacidades do pacote para escrever código para fazer sorting de arrays utilizando uma busca binaria ou convertendo array para lista, usar as interfaces Comparator e Comparable para afetar sorting de listas e arrays, e mais pra frente reconhecer o efeito da ordenação natural de classes wrappers primitivas e Strings nos sortings

7 - Fundamentos
     - Dado um exemplo de código e um cenário, escrever códigos que usam apropriadamente modificadores de acesso, declaração de pacotes e imports para interagir com (atravez de acesso ou herança) o código no exemplo
     - Dado um exemplo de classe e uma linha de comando, determinar o comportamento experado de runtime
     - Determinar o efeito sobre uma referencia de objeto e valores primitivos quando são passados para metodos que fazem mudanças nos paramêtros.
     - Dado um exemplo de código reconhecer o ponto em que um objeto se torna elegivel para o GC (garbage collection) e determinar o que é e o que não é garantido pelo sistema de GC, e reconhecer os comportamentos do método Object.finalize()
     - Dado um full-qualified name de uma classe o que é compilado dentro ou fora do arquivo Jar, construção apropriada de uma estrutura de diretorio para aquela classe. Dado um exemplo de código e um classpath, determinar quando o classpath irá permitir o código compilar com sucesso.
     - Escrever um código que aplica corretamente operadores incluindo operadores de atribuição, aritiméticos, e relacionais, o operador instanceOf, operadores lógicos e o operador condicional  para produzir o resultado desejado.
     - Escrever um código que determina equalidade de dois objetos ou primitivos.

segunda-feira, 10 de janeiro de 2011

Um pouco de tudo

Meu objetivo em escrever esse blog é me aperfeiçoar nos estudos da OCJP e conseguir finalmente a minha certificação Java, não sou expecialista mais estou me esforçando para ser pretendo escrever a maioria dos tópicos importantes da OCJP e gostaria que meu blog seja de grande ajuda para todos aqueles que também desejam ser um dia programadores certificados. abraços a todos