Boa noite pessoal, hoje vamos falar um pouco sobre design patterns, e o que são design patterns ?
design patterns são padrões de projeto feitos com um único objetivo, facilitar o entendimento, o desenvolvimento e manutenção além de ser uma solução elegante.
Singleton Design Pattern:
O Singleton define que uma certa classe deve ter apenas uma instancia dela mesma, ou seja uma classe do sistema só pode ter apenas uma instancia da classe Singleton, muito usádo em classes de Logs pois classes administradora de logs geralmente precisam fazer uma tarefa apenas, e seria muito custoso para o sistema criar uma nova instancia para cada vez que usarmos o Log, vou exibir um exemplo abaixo para ilustrar melhor.
public class LogWriter {
private static LogWriter mInstance = new LogWriter(); //uma instancia estática privada encapsulada de //LogWriter
private LogWriter(){ //um construtor privado para que nenhuma outra classe possa acessar
}
public static LogWriter getInstance(){ //um método estático que retorna a única instancia que criamos
return mInstance;
}
}
Uma classe com essas caracteristicas garante uma única instancia no sistema.
Esse Pattern é considerado um anti-pattern por existirem soluções melhores, acho válido listar algumas soluções melhores no futuro, mais sempre é valido pesquisar melhor.
Caso alguma das informações esteja errada ou algum dos meus leitores veja alguma coisa que possa ser melhorada, aceito sugestões e postarei créditos ao leitor respectivo..
Uma boa noite a todos.
Javismo Profissional, Guia para estudantes de Java com foco na OCJP antiga SCJP
quarta-feira, 29 de junho de 2011
quarta-feira, 18 de maio de 2011
InfoQ: Fuja da Escravidão, antes que ela te alcance
Ultra palestra sobre desenvolvimento e empreendimentos, vale apena conferir.
InfoQ: Fuja da Escravidão, antes que ela te alcance
terça-feira, 17 de maio de 2011
Um Pouco Sobre Abstração e Finalização de Classes Final
Boa noite pessoal,
bom esse é o ultimo post da série Abstração e Finalização de Classes, você pode conferir os dois primeiros posts clicando nos links abaixo:
Pt 1.
http://javeiros.blogspot.com/2011/05/um-pouco-sobre-abstracao-e-finalizacao.html
Pt 2.
http://javeiros.blogspot.com/2011/05/um-pouco-sobre-abstracao-e-finalizacao_17.html
E nesse post vou dar uma conclusão sobre os dois assuntos.
Uma breve revisão:
Classes Abstratas:
Vulgo (Abstract Classes) são as classes que tem o comportamento pré definido porém não completamente definido, e que para ser utilizada deve ser estendida por alguma outra classe afim de especificar os métodos pré definidos na própria definição. Muito utilizada para abstrair modelos genéricos do mundo real tal como Carros pode ser abstrata para CarrosEsporte.
Classes Finalizadas:
Vulgo (Final Classes) são as classes que já tem o comportamento definido, e que não pode ser modificado de maneira nenhuma ou seja não posso estender uma classe final pois o compilador entende que a implementação da classe já foi definida e que não pode ser mudada. Muito utilizada para abstrair modelos concretos do mundo real tal como um carro da Marca Eclipse pode ser uma classe finalizada com os métodos e propriedades definidos.
Para mais detalhes sobre os dois tipos de classes visite os dois links marcados no começo do post.
Considerações Finais:
Como vimos Abstração e Finalização são duas pontas diferentes do modelo orientado a objetos, um que abstrai o modelo e um que especifica o modelo (respectivamente falando) ou seja não podemos em hipotese nenhuma utilizar os dois juntos em uma mesma classe, pois se formos ver essa restrição tem sentido por exemplo:
public abstract final class Carro{
public void acelera();
}
Se formos pensar bem, vamos ver que não tem sentido mesmo, já que a classe abstrata Carro citada no exemplo é abstrata e não pode ser instanciada e deve ser entendida, e uma classe finalizada acabaria com esse sentido pois tem a necessidade de ser instanciada e não pode ser estendida. Não sei se expliquei com as melhores palavras porém gostaria que os meus leitores fizessem um teste na IDE favorita e vejam o resultado pelos próprios olhos.
Bom espero ter ajudado a tirar algumas dúvidas, caso meus leitores vejam algum erro de sintaxe, lógica, ou de português por favor comentem, criticas construtivas são bem vindas.
Deixem o seu comentário.
bom esse é o ultimo post da série Abstração e Finalização de Classes, você pode conferir os dois primeiros posts clicando nos links abaixo:
Pt 1.
http://javeiros.blogspot.com/2011/05/um-pouco-sobre-abstracao-e-finalizacao.html
Pt 2.
http://javeiros.blogspot.com/2011/05/um-pouco-sobre-abstracao-e-finalizacao_17.html
E nesse post vou dar uma conclusão sobre os dois assuntos.
Uma breve revisão:
Classes Abstratas:
Vulgo (Abstract Classes) são as classes que tem o comportamento pré definido porém não completamente definido, e que para ser utilizada deve ser estendida por alguma outra classe afim de especificar os métodos pré definidos na própria definição. Muito utilizada para abstrair modelos genéricos do mundo real tal como Carros pode ser abstrata para CarrosEsporte.
Classes Finalizadas:
Vulgo (Final Classes) são as classes que já tem o comportamento definido, e que não pode ser modificado de maneira nenhuma ou seja não posso estender uma classe final pois o compilador entende que a implementação da classe já foi definida e que não pode ser mudada. Muito utilizada para abstrair modelos concretos do mundo real tal como um carro da Marca Eclipse pode ser uma classe finalizada com os métodos e propriedades definidos.
Para mais detalhes sobre os dois tipos de classes visite os dois links marcados no começo do post.
Considerações Finais:
Como vimos Abstração e Finalização são duas pontas diferentes do modelo orientado a objetos, um que abstrai o modelo e um que especifica o modelo (respectivamente falando) ou seja não podemos em hipotese nenhuma utilizar os dois juntos em uma mesma classe, pois se formos ver essa restrição tem sentido por exemplo:
public abstract final class Carro{
public void acelera();
}
Se formos pensar bem, vamos ver que não tem sentido mesmo, já que a classe abstrata Carro citada no exemplo é abstrata e não pode ser instanciada e deve ser entendida, e uma classe finalizada acabaria com esse sentido pois tem a necessidade de ser instanciada e não pode ser estendida. Não sei se expliquei com as melhores palavras porém gostaria que os meus leitores fizessem um teste na IDE favorita e vejam o resultado pelos próprios olhos.
Bom espero ter ajudado a tirar algumas dúvidas, caso meus leitores vejam algum erro de sintaxe, lógica, ou de português por favor comentem, criticas construtivas são bem vindas.
Deixem o seu comentário.
Um Pouco Sobre Abstração e Finalização de Classes Pt 2
Boa noite pessoal hoje vamos falar um pouco sobre finalização de classes vulgo (Final Classes).
O que são classes finalizadas? bom isso é bem simples de explicar uma classe finalizada é toda classe que não deve ser estendida ou seja quando eu declaro uma classe como finalizada estou dizendo para o meu compilador que NENHUMA CLASSE sob circunstância nenhuma deve extender essa classe (Extends) vamos apresentar um exemplo:
public final class Caneta{
private Cor corCaneta;
private TipoCaneta tipoCaneta;
public void escreveTexto(String texto){
//write something
}
}
Se eu tentar extender a classe Caneta como por exemplo:
public class CanetaExtendida extends Caneta{
//Do something
}
Na hora de compilar a nossa classe o compilador vai apresentar o seguinte erro:
"The type CanetaExtendida cannot subclass the final class Caneta" (caso da Eclipse IDE)
Conclusão:
Classes finalizadas não são usadas normalmente no dia a dia, somente em casos raros em que são realmente necessárias tal como restringir o acesso a uma arvore de classes por exemplo:
*Diagrama
Classe Carro -
|
-> Classe Carro Esporte
-> Classe Final Eclipse
|
-> Classe Carro Sedan
-> Classe Final Honda Civic
Nesse exemplo eu quis dizer que temos duas subclasses de carro que são Carro Esporte e Carro Sedan, ambas classes podem ser extendidas e ter seus comportamentos modificados pelas classes filhas, porém eu não posso extender uma classe que representa o carro Eclipse pois a mesma ja tem a sua especialização implementada com as suas próprias especificações, o mesmo vale para a classe final Honda Civic, são casos raros porém bem uteis quando quero abstrair o mundo real no mundo orientado a objetos.
A todos os meus leitores, gostaria que deixassem comentários enviando sugestões, criticas, elogios, e como sempre se algum de vocês detectarem um erro de sintaxe, de lógica, ou de português mesmo deixem nos comentários, criticas são bem vindas, obrigado e abraço a todos !.
O que são classes finalizadas? bom isso é bem simples de explicar uma classe finalizada é toda classe que não deve ser estendida ou seja quando eu declaro uma classe como finalizada estou dizendo para o meu compilador que NENHUMA CLASSE sob circunstância nenhuma deve extender essa classe (Extends) vamos apresentar um exemplo:
public final class Caneta{
private Cor corCaneta;
private TipoCaneta tipoCaneta;
public void escreveTexto(String texto){
//write something
}
}
Se eu tentar extender a classe Caneta como por exemplo:
public class CanetaExtendida extends Caneta{
//Do something
}
Na hora de compilar a nossa classe o compilador vai apresentar o seguinte erro:
"The type CanetaExtendida cannot subclass the final class Caneta" (caso da Eclipse IDE)
Conclusão:
Classes finalizadas não são usadas normalmente no dia a dia, somente em casos raros em que são realmente necessárias tal como restringir o acesso a uma arvore de classes por exemplo:
*Diagrama
Classe Carro -
|
-> Classe Carro Esporte
-> Classe Final Eclipse
|
-> Classe Carro Sedan
-> Classe Final Honda Civic
Nesse exemplo eu quis dizer que temos duas subclasses de carro que são Carro Esporte e Carro Sedan, ambas classes podem ser extendidas e ter seus comportamentos modificados pelas classes filhas, porém eu não posso extender uma classe que representa o carro Eclipse pois a mesma ja tem a sua especialização implementada com as suas próprias especificações, o mesmo vale para a classe final Honda Civic, são casos raros porém bem uteis quando quero abstrair o mundo real no mundo orientado a objetos.
A todos os meus leitores, gostaria que deixassem comentários enviando sugestões, criticas, elogios, e como sempre se algum de vocês detectarem um erro de sintaxe, de lógica, ou de português mesmo deixem nos comentários, criticas são bem vindas, obrigado e abraço a todos !.
quarta-feira, 11 de maio de 2011
Importante ! - Certificações não serão mais pela Prometric
Boa noite pessoal,
No GUJ está rolando uma discussão sobre as certificações Oracle, os centros de testes não serão mais Prometric, porém pela Person Vue.
mais informações pelo
http://www.guj.com.br/java/240618-certificacoes-da-oracle-nao-serao-mais-pela-prometric
Abraços.
No GUJ está rolando uma discussão sobre as certificações Oracle, os centros de testes não serão mais Prometric, porém pela Person Vue.
mais informações pelo
http://www.guj.com.br/java/240618-certificacoes-da-oracle-nao-serao-mais-pela-prometric
Abraços.
Café com Java 21/05
Boa noite pessoal,
como um usuário presente do GUJ (forum de usuários Java) é a minha obrigação divulgar o encontro Café com Java que ocorre Bimestralmente em SP, falamos geralmente de assuntos relacionados a TI, Java, jogamos conversa fora, fazemos network e etc.. é muito bacana para quem quer se entrosar com o pessoal do forum, organizado pelo Eduardo Bregaida, e com o auxilio do Marky Vasconcellos, o encontro se tornou reconhecido,
eu recomendo, fica o link para mais infos.
http://guj.com.br/java/240094-cafe-com-java-2105---sp
Abraços a todos.
como um usuário presente do GUJ (forum de usuários Java) é a minha obrigação divulgar o encontro Café com Java que ocorre Bimestralmente em SP, falamos geralmente de assuntos relacionados a TI, Java, jogamos conversa fora, fazemos network e etc.. é muito bacana para quem quer se entrosar com o pessoal do forum, organizado pelo Eduardo Bregaida, e com o auxilio do Marky Vasconcellos, o encontro se tornou reconhecido,
eu recomendo, fica o link para mais infos.
http://guj.com.br/java/240094-cafe-com-java-2105---sp
Abraços a todos.
Um Pouco Sobre Abstração e Finalização de Classes Pt. 1
Um Pouco Sobre Abstração e Finalização de Classes (vulgos abstract, final)
Em um contexto bem simples podemos dizer que classes abstratas tem duas principais caracteristicas:
public abstract class Carro{
protected String cor;
protected String modelo;
protected String chassi;
public void setCor(String cor);
public void setModelo(String modelo);
public void sobeRua(double velocidade);
public void acelera();
}
podemos reparar que nos temos a nossa classe carro com varios atributos: Cor, Modelo, Chassi, e com varias operações: setCor(), setModelo(), sobeRua() e acelera(), e se olharmos com mais atenção podemos ver que os metodos declarados não terminam do jeito convencional, com (Curly Braces) Chaves { },
estou dizendo que os métodos existem porém ainda não foram implementados e qualquer classe que extender da classe Carro vai ser OBRIGADA a implementar esses métodos por meio de @override (Sobrescrita), veremos mais a frente no capitulo de sobrescritas e sobreposição de comportamento. Mais outra caracteristica de uma classe abstrata é que eu posso definir métodos não abstratos, e já implementados ! segue um exemplo:
public abstract class Carro{
//outros métodos e atributos importantes
public void frearCarro(){
//rotina de frear
}
}
Conclusão:
Uma classe abstrata é uma abstração de uma classe real, ou seja uma abstração do que eu desejo levar para o mundo digital para que no futuro eu possa transformar em outro objeto que utiliza os mesmos métodos e atributos, uma classe abstrata Carro no futuro pode ter uma filha CarroBMW (que acelera mais) e implementa o próprio código para acelerar, ou um CarroFusca (que tem mais força e menos aceleração) e que do mesmo jeito implementa o próprio código para acelerar.
Isso acaba sendo muito importante para o Polimorfismo que veremos em outros posts.
E como digo sempre, caso meus leitores vejam algum erro nas minhas lógicas ou de sintaxe ou mesmo de grafia portuguesa, por favor deixem um comentario que terei o prazer de pesquisar mais sobre e acertar o que está errado ou não.
Obrigado e abraço a todos.
Em um contexto bem simples podemos dizer que classes abstratas tem duas principais caracteristicas:
- É uma classe que não pode ser instanciada
- É uma classe que DEVE ser herdada
public abstract class Carro{
protected String cor;
protected String modelo;
protected String chassi;
public void setCor(String cor);
public void setModelo(String modelo);
public void sobeRua(double velocidade);
public void acelera();
}
podemos reparar que nos temos a nossa classe carro com varios atributos: Cor, Modelo, Chassi, e com varias operações: setCor(), setModelo(), sobeRua() e acelera(), e se olharmos com mais atenção podemos ver que os metodos declarados não terminam do jeito convencional, com (Curly Braces) Chaves { },
estou dizendo que os métodos existem porém ainda não foram implementados e qualquer classe que extender da classe Carro vai ser OBRIGADA a implementar esses métodos por meio de @override (Sobrescrita), veremos mais a frente no capitulo de sobrescritas e sobreposição de comportamento. Mais outra caracteristica de uma classe abstrata é que eu posso definir métodos não abstratos, e já implementados ! segue um exemplo:
public abstract class Carro{
//outros métodos e atributos importantes
public void frearCarro(){
//rotina de frear
}
}
Conclusão:
Uma classe abstrata é uma abstração de uma classe real, ou seja uma abstração do que eu desejo levar para o mundo digital para que no futuro eu possa transformar em outro objeto que utiliza os mesmos métodos e atributos, uma classe abstrata Carro no futuro pode ter uma filha CarroBMW (que acelera mais) e implementa o próprio código para acelerar, ou um CarroFusca (que tem mais força e menos aceleração) e que do mesmo jeito implementa o próprio código para acelerar.
Isso acaba sendo muito importante para o Polimorfismo que veremos em outros posts.
E como digo sempre, caso meus leitores vejam algum erro nas minhas lógicas ou de sintaxe ou mesmo de grafia portuguesa, por favor deixem um comentario que terei o prazer de pesquisar mais sobre e acertar o que está errado ou não.
Obrigado e abraço a todos.
quarta-feira, 9 de fevereiro de 2011
Sem posts por enquanto
Olá galera, estamos sem posts por enquanto,
tentaremos trazer mais conteudo no próximo mês quando eu tirar a certificação XD
tentaremos trazer mais conteudo no próximo mês quando eu tirar a certificação XD
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.
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.
Marcadores:
Estruturas de Fluxo de Dados,
IF's,
Pegadinhas
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.
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.
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!"
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.
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)
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.
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
é 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.
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.
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
Assinar:
Postagens (Atom)