quarta-feira, 21 de julho de 2010

SCJP - 5 Cap- 4 -Operadores

Vocês devem estar estranhando o porque de ta sendo postado o capitulo 4 se o 3 ainda não foi postado? explico: e porque o capitulo 3 e muito extenso e estou meio sem tempo para postar sobre ele, mas tentarei posta-lo antes de escrever sobre o cap-5.
Bem vamos a alguns pontos importantes do capitulo 4 que fala sobre operadores.

Operadores de atribuição compostos

No exame só caem 4 tipos de operadores de atribuição compostos que são +=,-=,*= e /= .e a ordem de precedência de um operador composto e que a expressão do lado direito do = sempre será avaliada primeiro. 
Ex= x *=5+5
(primeiro avalia o que esta ao lado direito do = ) então a expressão fica assim  x = x*(5+5)

Operadores de comparação

Java tem 4 operadores de comparação são eles >=,>,<=,<, eles podem ser usados para comparações com inteiros, ponto flutuante e caractere, no caso de caractere ele baseia-se pela tabela Unicode, e retornam um booleano. As variáveis de referencia podem ser testadas com o operador = = para sabermos se elas referenciam ao mesmo objeto.(verifica se os bits são idênticos) o operador = =  não testa se os objetos são significamente equivalentes , para isso usa-se o equals(). Quando se trata de constantes , exemplo o Enum, nos podemos usar tanto o operador = = como o equals() para saber se referem a mesma constante.

Operador de comparação instanceof

E usado somente com variáveis de referencia e pode-se usa-lo para verificar se o objeto e de um tipo especifico, ou seja se ele passa no teste do E-UM.
Ex: cachorro.instanceof(animal).
Esse resultado retorna um true, pois o cachorro e um animal.


Operador de concatenação de Strings

O sinal de “+” pode ser usado para concatenar duas strings, quando a concatenação combina números inteiros com strings ele transforma o inteiro em string e concatena com a String propriamente dita.
Ex: int a = “teste”; int b = 23; int c =3;
System.out.println(a+b+c);
os valores ints viram caracteres e são adicionados á String , produzindo o resultado “teste233”;

Acréscimo e decréscimo

O Java possui 2 operadores que fazem o papel de acréscimo (++) e decréscimo (--) em uma unidade a variável , a diferença e que se o operador vier na frente da variável ex: ++x o X será incrementado e antes de seu valor ser usado na expressão, já quando o operador vem após variável ex: x++ o incremento só ocorre após a variável usada na expressão.

Operador condicional ternário

Usado para substituir um bloco if  na avaliação de expressões booleanas, ele ao invés de executar um bloco de código se o resultado do teste for true atribui um valor a uma variável. Sua estrutura e a seguinte
X=(expressão booleana) ? valor a atribuir se true : valor a atribuir se for false;
Ex: int x =5;
String status = (x>5) ? ”maior que cinco” : ”menor que cinco”;
Que daria o mesmo que:
if(x>5){
Status = “maior que cinco”;
}else{
Status = “menor que cinco”;
}
Ele e um pouco menos legível, mas economiza linha de código.

sábado, 15 de maio de 2010

SCJP - 5 Cap- 2 -Orientação a Objetos

Bom voltei meus estudos para certificação, terminei o segundo capitulo, muito bom o livro recomendo que leiam (mesmo os que não pretendem fazer a prova). Vamos ao resumo do capítulo.
Encapsulamento- para um bom encapsulamento e necessário que se use variáveis de instancia privadas com seus métodos de acesso publico.
Herança-Relacionamento É-UM: é baseado na herança de classes ou implementação de interfaces, o conceito de É-UM e o mesmo que dizer esse item é-um tipo desse outro. e feito quando uma subclasse estende outra classe, ou seja ela assume o mesmo comportamento da classe mais acima na arvore de herança.
Herança-Relacionamento TEM-UM: são utilizados na utilização em vez de na herança, ou seja A tem-um B os relacionamentos tem-um permite que você projete classes que sigam as boas praticas de OO sem que sejam necessárias classes monolíticas que executem milhares de coisas diferentes.
Polimorfismo:embora o tipo de uma variável de referencia não possa ser modificado ele pode ser usado para se referir a um objeto cujo tipo seja um subtipo do seu próprio.
Métodos sobrescritos: quando uma subclasse herda um método da superclasse e o reimplementa para adicionar um comportamento mais especializado.No tempo de execução a jvm chama a versão da subclasse em uma instância da subclasse, e um instancia da superclasse em uma instancia da superclasse.
O método novo não deve lançar nenhuma exceção verificada nova ou mais abrangente que a declarada no método sobrescrito.
Métodos sobrecarregados: permite que se utilize o mesmo nome do metodo da superclasse só com argumentos e (opcionalmente tipos de retornos) diferentes.
O tipo de retorno pode ser de qualquer valor ou variável que possa ser implicitamente convertido no tipo do retorno declarado.
Ex: short pode ser retornado quando o tipo de retorno declarado for um int.
Construtores:Se o desenvolvedor não criar seu construtor o compilador ir criar um construtor padrão sem argumentos. Um construtor padrão nunca será gerado se você ja tiver implementado um, portanto é aconselhável se você criar um construtor com argumentos que implemente um construtor sem argumentos também.
Construtores também não são herdados
Variáveis e métodos static:Variáveis e métodos staticos pertencem a classe em vez de qualquer instancia especifica.(ou seja , você pode usá-los sem ter nenhuma instancia da classe).
Acoplamento e Coesão: Um dos pontos principais da OO e tentar manter um fraco acoplamento e uma alta coesão na hora de desenvolver suas classes.
Acoplamento e o grau em que uma classe conhece outra, Se o único conhecimento que a classe B tem sobre a classe A e o que a classe A expôs através de sua interface então diz-se que as classes A e B tem acoplamento fraco.
Coesão e o grau de especialização de uma classe, ou seja, e o quanto aquela classe e especialista em algo, isso facilita a manutenbilidade outro beneficio e que ela tende a ser mais reutilizável.

sexta-feira, 2 de abril de 2010

Mentira ou Verdade??

The Apache Software Foundation Blog

Thursday Apr 01, 2010

The Apache Software Foundation Receives Approval for Sale to Oracle Corporation

Today, the Apache Software Foundation announced it has agreed to sell all IP and assets of the foundation to Oracle. The agreement is a $1.5 billion all cash deal. The ASF board agreed to the terms after vigorous discussions last evening.

"We never considered the possibility of selling the ASF," said Jim Jagielski, Chairman of the ASF, "but Oracle made us a simply fantastic offer. Larry himself flew out last week to meet with us to address our concerns."

As part of the agreement, Oracle obtains even more of the crucial LAMP-stack software products.

"It was Oracle's admission that the Web is more than 'just' Java or databases that finalized the decision for us," said Justin Erenkrantz, Director and President of the ASF.

2009 marked the 10th Anniversary of the ASF.

We will be communicating updates about the status of our projects and our license in the near future. As a community based organization, we want to ensure the best experience for our existing committers, contributors, and users, under our new arrangement.


Noticia publicada no blog da Apache Software Foundation no dia 1 de abril.

http://blogs.apache.org/foundation/date/20100401

RUP é uma metodologia lenta?

Bem a uns dias atrás andei discutindo com um colega de faculdade a respeito de metodologias, ele mi questionou se eu achava o RUP uma metodologia lenta porque no seu trabalho estavam demorando demais a começar o desenvolvimento por conta dos artefatos que eram muitos, essa pequena discussão mi fez escrever esse post.
O RUP apesar de ser um framework da Rational que enfoca muito nos artefatos do projeto, é flexível quanto a ciclo de vida do projeto, o que a meu ver pode fazer o desenvolvimento ser um pouco mais acelerado, dependendo do ciclo que o gerente vá escolher, outro fator que pode contribuir para diminuir o gargalo nos artefatos é a proximidade com o cliente e o grau de detalhamento de informações sobre o negocio, o que facilita a vida do analista na hora de escrever os casos de uso.
Trabalhei um ano em um projeto que baseava-se no RUP , usávamos o ciclo de vida iterativo e não tivemos problemas com demora no desenvolvimento porque quando estávamos desenvolvendo uma iteração a posterior já estava sendo projetada, o que
fez que não criássemos nenhum tipo de gargalo, em fase nenhuma. Credito isso ao cliente sempre presente ajudando muito no fornecimento dos requisitos, e ao ciclo iterativo.
Acho que o RUP tem suas vantagens assim como metodologias ágeis também, cabe a equipe saber a necessidade do projeto e decidir o melhor caminho a seguir. Gosto muito de metodologias ágeis, mas vejo que uma equipe que saiba adequar o RUP ao projeto pode conseguir grandes benefícios muito vantajosos também

segunda-feira, 8 de fevereiro de 2010

Fim de um Ciclo inicio de outro

Hoje encerrou-se um ciclo em minha vida, meu ultimo dia na Dataprev, empresa que tenho muito respeito e que mi ajudou nos primeiros passos na carreira, foram 11 meses e 7 dias de muita aprendizagem e trabalho, deixei muitos amigos la, amanha começo uma nova etapa na minha vida ,uma nova empresa, uma nova metodologia! Usix ai vou eu!

quarta-feira, 27 de janeiro de 2010

Relacionamentos no MySQL

Sofri mais consegui!!! sempre brinquei com a linguagem DDL no banco MySQL, mas só de forma simples, criando e dropando tabelas que não possuíam dependências, nunca tive problemas com isso! Só que resolvi complicar um pouco mais meus “exercícios” e resolvi criar um banco maior com varias tabelas e seus relacionamentos, e mi deparei com um erro que mi tirou algumas horas de sossego, não conseguia criar o relacionamento , vou expor minha situação:
Eu teria três tabelas no banco uma de funcionários onde teriam que conter os dados do funcionário , nome, endereço, telefone e a primary key matricula_funcionario, teria outra tabela departamento que continha nome_departamento,numero_departamento, cod_departamento como PK, a terceira tabela seria o cargo no qual teria o nome_cargo, numero_cargo e cod_cargo, para relacionar essas três tabelas eu iria criar a tabela alocação onde iria colocar as pk das tres tabelas dentro dela como FK e teria uma PK cod_alocaçao.
Tentei criar esse relacionamento na munheca, não deu certo, tentei utilizar o MySQL
administrator não deu certo, tentei o workbench para criar o modelo de dados fazê-lo criar um script para criação das tabelas o mesmo também deu erro.
O erro gerado em todas essas situações era o error 150(#1005), bati cabeça e pesquisando na internet em muitos tópicos e posts consegui descobrir o porquê do erro, vamos a solução

Os dois campos devem ser idênticos em seus tipos. Ou seja (aqui estava meu erro) até mesmo se ele é unsigned deve ser igual. As outras condições são:
• Ambas as tabelas do tipo InnoDB;
• Na tabela que faz a referência, deve haver um índice que corresponde a chave estrangeira;
• Na tabela referenciada, deve haver um índice que corresponde a chave primária;
• Não são suportados para este tipo de relacionamento, campos text e blob;
• Os campos devem ter o mesmo tipo (em todas as características);

bom espero que esse post possa ajudar alguém com o mesmo tipo de problema que eu passei!

quarta-feira, 13 de janeiro de 2010

SCJP - 5 Cap- 1

Bem hoje terminei de ler o 1º capitulo do livro Certificação Sun para Programador Java 5 e  vou passar um pouco do que achei interessante e importante nesse capitulo.
Na verdade o primeiro capitulo  faz mais uma revisão sobre conceitos  como herança,interfaces, modificadores de acesso, palavras chaves, regras de nomeação etc. colocarei os pontos que acho principais e que deve-se ter sempre fresco na cabeça.

Identificadores legais – os identificadores devem SEMPRE começar por uma letra, caractere de conexão como o (_) underscore ou com um $ (cifrão), não podem NUNCA começar com números.

Convenções de código Java da Sun- apesar se não ser exigido no exame um programador deve tê-la  enraizada na cabeça já.

 Classes e  interfaces começam sempre com letras maiúsculas e as demais minúsculas se varias palavras forem escritas juntas deve-se usar a regra camelCase.
ex- HistoricoDados.
 Para classes o nome deve ser substantivo e para interfaces adjetivo.
 
Métodos a primeira letra deve ser minúscula e depois usa-se a regra camelCase e devem ser descritas com pares e verbo-substantivo.

Variáveis como nos métodos usam regras camelCase com a primeira letra minúscula, deve-se usar nomes curtos e significativos.
Regras de nomeação de propriedades javaBean
Se a propriedade não for booleana o prefixo do método getter deve ser get, do setter set e se for booleana deve ser is.
Ex: setNome(), getNome() , isNome()
Como os javaBeans dão suporte a eventos a convenção para nomeação dos listeners são add para “registrar um evento” e remove para “remover um evento”.
Ex-addAcaoListener, removeAcaoListener
Modificadores de acesso é um outro ponto essencial para quem desenvolve programas em Java e que  também deve estar enraizado na cabeça de qualquer programador.

O acesso public(publico) permite com que as classes, métodos ou atributos possam ser vistos por qualquer classe em qualquer pacote da aplicação.

Acesso private(privado) permite ser enxergado somente dentro da classe ( é recomendado colocar atributos privados e fornecer acesso a eles através de métodos públicos) só usa-se em métodos e variáveis

O protect (protegido) permite ser acessível somente por classes dentro do pacote ou por classes de outro pacote mas que estejam herdando da classe pai que possuí  métodos  protegidos. Só usa-se em métodos ou variáveis.

O default(quando não se coloca nada) e quase igual ao protect a diferença e que só pode ser acessível dentro do pacote. Note que a diferença  para o protegido e que mesmo fora do pacote o protegido pode ser acessado se a subclasse o tiver herdando.

Modificadores de classes
(não referentes a acesso)-  uma classe pode ser public, default , abstract ou strictfp

Publica todos já sabem que e visível em qualquer parte da aplicação, default somente no mesmo pacote, abstract trabalha como uma interface, ela garante que todas as subclasses tenham que implementar a os métodos ou variáveis da classe pai, uma classe abstrata não precisa ter métodos abstratos, mas se uma classe possuir pelo menos um método abstrato ela terá que ser abstrata.

Strictfp- e usado para garantir que qualquer código de método da classe se conformara com as regras do padrão IEEE-754 para pontos flutuantes.

Uma classe pode ser classificada também como final para garantir que nunca será Herdada(isso garante que seus métodos não serão modificados por outras classes).

Interface-  garante a assinatura de um contrato , funciona como uma classes abstrata garantindo que todos seus métodos serão implementados, a diferença e que não possui variáveis  só constantes.(public static final) e todos os métodos tem que ser obrigatoriamente abstratos .
Palavras reservadas
Static – usa-se em variáveis e métodos para fazer com que existam independente de qualquer instancia criada para a classe

Final- a diferença do uso do final em classes, métodos e variáveis e que me classes garante que a mesma não pode ser herdada, métodos garante que não vai se sobrescrito e em variáveis garante que não vai ser modificada.

Transient- usado somente em variáveis de instancias  para dizer para a JVM não serializar essa variável quando for serializar o objeto.

Diferença entre argumentos e parâmetros
Argumentos-  e oque se especifica entre parênteses quando se esta invocando um método
Ex- depositaValor(100) o numero 100 e o argumento passado.
Parâmetro- aquilo que se passa na assinatura do método , indica oque o método deve receber quando invocado.
Ex- void informaNome(String nome)

Para concluir vou falar um pouco dos Enuns- a partir do java 5  permite restringir uma variável para ter uns de poucos valores pré-definidos- em outras palavras uma lista de valores enumerados.
Os enuns podem ser declarados na sua própria classe ou em outra classe, só podem ser públicos ou default e NUNCA devem ser declarados dentro de métodos.
Cada um dos tipos enumerados de um enum  são na verdade uma instância da classe enum.


Esse foi um pequeno resumo dos principais pontos abordados no primeiro capitulo do livro , espero ter ajudado a quem quer estudar para tirar certificação como eu.!

terça-feira, 12 de janeiro de 2010

SCJP - EXAME 310-055

O titulo ja diz um dos meus objetivos para 2010 certificar-me na linguagem java, comecei em janeiro os estudos e espero dentro de 4 meses estar fazendo a prova. Postarei aqui o andamento dos meus estudos, quais dificuldades e quais facilidades estou encontrando, assim como estratégias para mi dar bem na prova.

Dataprev

Bem foi demorado mas agora estou de ferias vou postar mais aqui no blog... vou falar nesse post sobre a Dataprev -Empresa de tecnologia e informação da previdência social.
Originou-se dos centros de processamento de dados dos institutos de previdência existentes em 1974.
Denominada, primeiramente, como Empresa de Processamento de Dados da Previdência, a Dataprev é uma empresa pública instituída pela Lei nº. 6.125, de 4 de novembro de 1974.
Onde so trabalham servidores publico concursados ou estagiarios como eu, regime e CLT.
Sua administração central está localizada no Distrito Federal. Possui unidades em todos os estados da federação, atualmente distinguidas entre regionais e de atendimento. Seus computadores de grande porte estão localizados nas sedes da unidades regionais de São Paulo, Rio de Janeiro e Brasília.

Além disso, atualmente a Dataprev dispõe de quatro unidades de desenvolvimento de software: Unidade de Desenvolvimento Santa Catarina (UDSC), Unidade de Desenvolvimento Paraíba (UDPB), Unidade de Desenvolvimento Ceará (UDCE) e Unidade de Desenvolvimento Rio de Janeiro (UDRJ).

O seu grande cliente chama-se INSS, onde desenvolvemos diversos sistemas como o CNIS-Cadastro Nacional de Informações Sociais que contém mais de 195 milhões de registros, representando mais de 173 milhões de pessoas cadastradas.

Uma otima empresa para se trabalhar, esse e so um resumo do que e a dataprev