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.
sábado, 15 de maio de 2010
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
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
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!
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.!
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.
Assinar:
Comentários (Atom)