<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6196329585542376935</id><updated>2011-04-21T14:40:52.706-07:00</updated><category term='final'/><category term='abstract'/><category term='Classes'/><category term='public'/><category term='default'/><category term='Class'/><title type='text'>Diário de estudos - SCJP</title><subtitle type='html'>Este blog foi criado para ser uma espécie de "Diário de Estudos" para a certificação SCJP Java 5. Espero que gostem e aproveitem das informações que nele estiverem contidas.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://diarioscjp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6196329585542376935/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://diarioscjp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Potato</name><uri>http://www.blogger.com/profile/08805750277049290608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_dcnVWr6ghQs/S_RC0wAEL8I/AAAAAAAANk0/AAyJlfssk3A/S220/batata.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6196329585542376935.post-313247375197277840</id><published>2008-02-12T15:43:00.000-08:00</published><updated>2008-02-12T15:51:48.797-08:00</updated><title type='text'>Utilizando as Interfaces</title><content type='html'>Saudações, meus amigos.&lt;br /&gt;Aqui vou eu, seguindo com meus estudos e também com os meus posts!&lt;br /&gt;&lt;br /&gt;Agora falaremos sobre as Interfaces em Java.&lt;br /&gt;&lt;br /&gt;As interfaces são considerados "contratos" que dizem "o que" a classe pode fazer, mas não mostra "como" fazer. Esquisito, né?! :). Pois é, este é um conceito que demorei muito para entender, a princípio eu não entendia o funcionamento das mesmas. Depois, quando entendi como elas funcionavam comecei a me questionar o por que da utilização das mesmas. Hoje em dia tenho consciência de que as interfaces são muito úteis.&lt;br /&gt;&lt;br /&gt;Sendo considerada como sendo "uma classe 100% abstrata, uma interface só pode possuir métodos abstratos e públicos, sem nenhuma implementação. As interfaces podem ter modificadores de acesso public e default (ou ausência de modificador). Os métodos têm modificadores public e abstract implícitos, não sendo necessário digitá-los. Podemos ter atributos dentro de uma interface, porém, todos eles devem ser constantes (public static final, para os íntimos). Porém, não é necessário a declaração das constantes desta maneira, elas são consideradas assim por padrão. Portanto, não se pode alterar o valor de um atributo de uma interface, pois se tratarem de constantes que foram criadas na mesma, e tiveram seu valor atribuído para garantir que todas as classes que a implementarem tenham acesso ao mesmo valor.&lt;br /&gt;&lt;br /&gt;As interfaces só podem estender (herdar) outras interfaces, garantindo assim que elas somente terão métodos abstract.&lt;br /&gt;&lt;br /&gt;Abaixo alguns exemplos de utilização de interfaces:&lt;br /&gt;&lt;br /&gt;Flyable.java - Interface com o modificador de acesso default&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;package com.blogspot.diarioscjp.terceiropost;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;interface Flyable {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    int maxHeight = 200;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    void fly();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Duck.java - Classe que implementa a Interface Flyable&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;package com.blogspot.diarioscjp.terceiropost;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    public class Duck implements Flyable {//Consegue implementar pois estão no mesmo pacote.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        public void fly() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            for(int h=0; h &lt;= maxHeight; h++)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                System.out.println("Pato voando. Altura: " + h + " metros.");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Abaixo um exemplo de código de uma classe que não compilaria, se estivesse fora do mesmo pacote da interface:&lt;br /&gt;&lt;br /&gt;StrangeDuck.java&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;package com.blogspot.diarioscjp.naocompila;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    public class StrangeDuck implements Flyable {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        //se você utiliza o Eclipse como IDE, ele vai te avisar de que a Flyable&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        //não pode ser resolvido como um tipo, porque este pacote não conhece a interface.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se modificarmos a nossa interface para public, conseguiremos implementá-la:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;package com.blogspot.diarioscjp.terceiropost;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    public interface Flyable {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        int maxHeight = 200;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        void fly();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;StrangeDuck.java - Classe que implementa a interface, fora do pacote&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;package com.blogspot.diarioscjp.naocompila;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    import com.blogspot.diarioscjp.terceiropost.Flyable;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    //Reparem que a classe precisou fazer o import da interface, por não conhecer este tipo no pacote.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    public class StrangeDuck implements Flyable {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        public void fly() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            for(int h=0; h &lt;= maxHeight; h++)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                System.out.println("Pato voando. Altura não pode ser determinada");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                //Para demonstrar que as classes implementam as interfaces de maneira&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                //diferente, esta classe sabe voar, mas não sabe determinar a altura.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bom pessoal, por hoje é só!&lt;br /&gt;&lt;br /&gt;Espero que estejam gostando do meu blog, e que ele sirva de ajuda para alguém!&lt;br /&gt;&lt;br /&gt;Um abraço a todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6196329585542376935-313247375197277840?l=diarioscjp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diarioscjp.blogspot.com/feeds/313247375197277840/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6196329585542376935&amp;postID=313247375197277840' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6196329585542376935/posts/default/313247375197277840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6196329585542376935/posts/default/313247375197277840'/><link rel='alternate' type='text/html' href='http://diarioscjp.blogspot.com/2008/02/utilizando-as-interfaces.html' title='Utilizando as Interfaces'/><author><name>Potato</name><uri>http://www.blogger.com/profile/08805750277049290608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_dcnVWr6ghQs/S_RC0wAEL8I/AAAAAAAANk0/AAyJlfssk3A/S220/batata.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6196329585542376935.post-4847167095226415048</id><published>2008-02-12T11:03:00.000-08:00</published><updated>2008-02-12T11:12:04.539-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='final'/><category scheme='http://www.blogger.com/atom/ns#' term='default'/><category scheme='http://www.blogger.com/atom/ns#' term='Class'/><category scheme='http://www.blogger.com/atom/ns#' term='abstract'/><category scheme='http://www.blogger.com/atom/ns#' term='public'/><category scheme='http://www.blogger.com/atom/ns#' term='Classes'/><title type='text'>Classes e seus Modificadores</title><content type='html'>Buenas pessoal!&lt;br /&gt;&lt;br /&gt; Eu nem sei bem como começar este post, então na verdade vou dizer a verdade, nada mais que a verdade: Eu vou direto ao assunto.&lt;br /&gt;&lt;br /&gt; Meu livro  &lt;a href="http://www.temporeal.com.br/produtos.php?id=170632"&gt;Certificação Sun para Programador Java 5 - 2a Edição Revisada&lt;/a&gt; chegou e comecei a estudar.&lt;br /&gt;&lt;br /&gt; As impressões sobre o Livro não poderiam ser melhores. Cada parte é muito bem explicada, deixando bem claro aonde os autores querem chegar.&lt;br /&gt;&lt;br /&gt; O primeiro capítulo se chama "Declarações e Controle de Acesso" e trata os seguintes objetivos da certificação:&lt;br /&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;1.1 Desenvolver código que declare classes (incluindo classes abstract e todas as formas de classes aninhadas), interfaces e enums, e inclua o uso apropriado de declarações package e import (incluindo importações estáticas).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;    1.2 Desenvolver código que declare uma interface. Desenvolver código que implemente ou estenda uma ou mais interfaces. Desenvolver código que declare uma classe abstract. Desenvolver código que estenda uma classe abstract.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;    1.3 Desenvolver código que declare, inicialize e use primitivos, arrays, enums e objetos como variáveis static, de instâncias e locais. Além disso, usar identificadores legais para os nomes de variáveis.&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="font-style: italic;"&gt;1.4 Desenvolver código que declare métodos static e não-static e, se apropriado, usar nomes de métodos que obedeçam aos padrões de nomeação JavaBeans. Além disso, desenvolver código que declare e use uma lista de argumentos de extensão variável.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Bom, está longe das minhas pretensões ENSINAR JAVA para as pessoas, estou somente dando o meu testemunho e citando as coisas que eu julguei importantes durante meus estudos. Basicamente eu postarei aqui os assuntos relacionados às coisas que fiz algum tipo de anotação durante a leitura. Se fosse para falar sobre TUDO que tem no livro, seria mais fácil recomendar que todos o comprassem. E realmente eu recomendo isso!&lt;br /&gt;&lt;br /&gt; O primeiro assunto a ser tratado é justamente a declaração de classes em Java. Quantas noites perdidas criando classes e mais classes? (não muitas, ainda), mas nunca é tarde para começar! A primeira coisa que devemos saber é que somente dois modificadores de acesso podem ser atribuídos à classes: default (ou ausência de modificadores) e public. No acesso default (podemos considerar nível de pacote), somente disponibiliza a classe e seus membros para as classes e membros que estiverem no mesmo pacote da classe em questão. Quem estiver fora do pacote não tem acesso a essa classe, nem mesmo através de um import. Já quando definimos a classe como sendo public, então estamos dizendo que todas as classes de todos os pacotes do Universo Java (gostei disso, os autores falam em Java Universe). Abaixo, exemplos de declarações de classes com acesso default e public.&lt;br /&gt;&lt;br /&gt;Blog.java - Classe com acesso default&lt;br /&gt;&lt;br /&gt;package com.blogspot.diarioscjp;&lt;br /&gt;&lt;br /&gt; class Blog {//Ausência de modificador = default&lt;br /&gt;  //código importante da classe&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;OtherBlog.java - Classe com acesso public&lt;br /&gt;&lt;br /&gt;package com.blogspot.diarioscjp;&lt;br /&gt;&lt;br /&gt; public class OtherBlog {&lt;br /&gt;  //código importante da classe&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;  Até agora vimos então como se declara uma classe e quais são os modificadores de acesso pertinentes a elas. Agora veremos a seguir os outros modificadores de classes, mas estes não levam em conta os níveis de acesso. São eles: final, abstract e strictfp (embora não vamos falar sobre o último agora)&lt;br /&gt;&lt;br /&gt;  Classes final são aquelas que não podem ser estendidas, ou seja, essa classe nunca vai poder ter sub-classes. Mas qual é a vantagem disso? Acabamos com um dos maiores princípios da Orientação a Objetos, a herança. Também teremos o problema (ou não, dependendo do caso) de que nenhum dos métodos dessa classe irão poder sofrer alterações em sua implementação. Por outro lado, quando temos uma classe não-final, temos a possibilidade de estende-la e alterar seus comportamentos quando for pertinente. Mesmo quando não possuímos os fontes da classe. Isso é um ótimo recurso da Orientação a Objetos (que a partir de agora ganhou o apelido de O.O) nos meus posts.&lt;br /&gt;&lt;br /&gt;  Do outro lado temos as classes abstract. Essas sim podem ser estendidas, mas em compensação, não podem ser instanciadas. Não conseguiremos declarar uma instância de uma classe abstract e usá-la em outras classes. As classes abstract precisam ser estendidas por outras classes - mais pra frente entraremos em mais detalhes - para poderem ser instanciadas. Mais especificamente, só podemos instanciar uma classe concreta (não-abstrata). Numa classe onde temos um método abstract, existe a obrigação da mesma ser abstrata. Os métodos abstratos não possuem implementações. Eles terminam com ; na sua linha de declaração.&lt;br /&gt;&lt;br /&gt;  Vale lembrar que podemos ter algumas combinações de modificadores para uma classe, com modificadores de acesso e outros. Mas muito cuidado! Uma classe nunca pode ser abstract e final ao mesmo tempo. Pensando melhor sobre isso, não teria sentido mesmo, não é?! Se uma classe abstract exige que implementemos seu métodos nas sub-classes, seria no mínimo esquisito colocar também o modificador final, que justamente pelo contrário, preza pela preservação dos métodos e atributos da classe.&lt;br /&gt;&lt;br /&gt;  Essas foram as minhas observações sobre as Classes e seus Modificadores.&lt;br /&gt;&lt;br /&gt;  No mais, estou indo embora! Um abraço a todos e até o próximo post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6196329585542376935-4847167095226415048?l=diarioscjp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diarioscjp.blogspot.com/feeds/4847167095226415048/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6196329585542376935&amp;postID=4847167095226415048' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6196329585542376935/posts/default/4847167095226415048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6196329585542376935/posts/default/4847167095226415048'/><link rel='alternate' type='text/html' href='http://diarioscjp.blogspot.com/2008/02/classes-e-seus-modificadores.html' title='Classes e seus Modificadores'/><author><name>Potato</name><uri>http://www.blogger.com/profile/08805750277049290608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_dcnVWr6ghQs/S_RC0wAEL8I/AAAAAAAANk0/AAyJlfssk3A/S220/batata.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6196329585542376935.post-5904664595019299296</id><published>2008-01-31T04:33:00.000-08:00</published><updated>2008-01-31T05:02:44.277-08:00</updated><title type='text'>A compra do Livro...</title><content type='html'>Eis que paira no ar a notícia de que: mais um maluco vai estudar para ser um profissional certificado na linguagem &lt;a href="http://java.sun.com/"&gt;Java&lt;/a&gt;. Mais especificamente vou começar os meus estudos para obter a certificação: &lt;a href="http://www.sun.com/training/catalog/courses/CX-310-055.xml"&gt;Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (CX-310-055)&lt;/a&gt;. A partir de agora, &lt;a href="http://diarioscjp.blogspot.com/"&gt;este blog&lt;/a&gt; será a minha segunda casa e uma área onde escreverei sobre as coisas que achar interessante nos meus estudos, dicas para quem também está estudando, dúvidas, discussões sobre algum tópico em específico, etc.&lt;br /&gt;&lt;br /&gt;Conversa vai, conversa vem, e eu esqueci de me apresentar. Sou Felipe Zanardo Affonso, mais conhecido como Batata. Sou bacharel em Ciência da Computação pela &lt;a href="http://www.metodista.br/"&gt;Universidade Metodista de São Paulo&lt;/a&gt; (São Bernardo do Campo) e atualmente estou trabalhando como consultor no mesmo lugar onde me formei, com muito orgulho.&lt;br /&gt;Trabalho com Java há menos de 1 ano, mas com experiências anteriores com C# eu acabei me virando. Agora estou no caminho para fazer a prova e virar um profissional certificado pela &lt;a href="http://www.sun.com/"&gt;Sun.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para começar meus estudos, comprei ontem o livro &lt;a href="http://www.temporeal.com.br/produtos.php?id=170632"&gt;Certificação Sun para Programador Java 5 - 2a Edição Revisada &lt;/a&gt; dos autores &lt;a href="http://en.wikipedia.org/wiki/Kathy_Sierra"&gt;&lt;b&gt;Kathy Sierra&lt;/b&gt;&lt;/a&gt; e &lt;a href="http://www.oreillynet.com/pub/au/1085"&gt;&lt;b&gt;Bert Bates.&lt;/b&gt;&lt;/a&gt; Um grande amigo, Renan Rodrigues, e mais N pessoas que andei pesquisando pelo fórum do &lt;a href="http://www.guj.com.br/"&gt;GUJ&lt;/a&gt; (Grupo de Usuários de Java) recomendam este livro para ser o guia de estudos. Então vamos lá!&lt;br /&gt;&lt;br /&gt;Para o primeiro post é só! Espero que este blog seja útil para mais alguém além de mim!&lt;br /&gt;&lt;br /&gt;Um abraço a todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6196329585542376935-5904664595019299296?l=diarioscjp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diarioscjp.blogspot.com/feeds/5904664595019299296/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6196329585542376935&amp;postID=5904664595019299296' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6196329585542376935/posts/default/5904664595019299296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6196329585542376935/posts/default/5904664595019299296'/><link rel='alternate' type='text/html' href='http://diarioscjp.blogspot.com/2008/01/compra-do-livro.html' title='A compra do Livro...'/><author><name>Potato</name><uri>http://www.blogger.com/profile/08805750277049290608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_dcnVWr6ghQs/S_RC0wAEL8I/AAAAAAAANk0/AAyJlfssk3A/S220/batata.jpg'/></author><thr:total>3</thr:total></entry></feed>
