Você está na página 1de 19

Esse artigo foi originalmente postado na Revista Easy Java Magazine Edio n 1 e sua reproduo nesta pgina foi

autorizada pela Editora Devmedia.

De que se trata o artigo: Java uma linguagem orientada a objetos. Neste artigo, entenderemos o que isso significa, o que so objetos e por que isso to importante para a linguagem Java. Para que serve: Programas grandes so difceis de manter por isso, um bom hbito separ-los em unidades mais ou menos isoladas. Em Java, isso feito utilizando objetos, que so compostos por atributos e mtodos definidos a partir de classes, que por sua vez so organizadas em pacotes. Esses conceitos so to centrais em Java que no se pode programar na linguagem sem utilizlos. Em que situao o tema til: Todo programa em Java usa classes e objetos, e compreender esses conceitos fundamental para compreender a prpria linguagem. Na prtica, sistemas de software reais so grandes e precisam ser fatorados em partes relativamente independentes para serem viveis. Como em Java isso feito com classes e objetos, compreend-los imprescindvel para escrever qualquer programa significativo.

Antigamente, os programas de computador eram escritos como uma srie de instrues, como receitas culinrias: dados os ingredientes (arquivos no disco, interfaces de rede, memria, ciclos do processador etc.), uma srie de passos era seguida. A semelhana era to notvel que vrias linguagens de programao exigiam que os ingredientes do programa (variveis, arquivos etc.) fossem reservados antes de se escrever o modo de preparo. Esta abordagem era ineficiente para grandes programas, com muitas de funcionalidades. Para tentar solucionar isso, uma maneira diferente de programar foi proposta: os softwares no seriam mais vistos apenas como instrues alterando recursos, mas sim como vrios pedaos, pequenos softwares trabalhando em conjunto para alcanar o objetivo. Os programas no seriam mais pensados como receitas, mas sim como carros e empresas: vrias peas, relativamente independentes e fceis de trocar, exerceriam tarefas complicadas isoladamente, sendo coordenadas de modo que o resultado final fosse uma mquina fcil de dirigir, ou uma organizao eficiente. Assim como o operrio que pe o motor na carroceria no precisa compreender seu funcionamento interno, e a secretria no precisa saber dos detalhes do setor de marketing, o programador poderia se concentrar em uma parte do programa, sabendo que as outras partes poderiam ser escritas depois, ser feitas por outros programadores ou at mesmo compradas. O programa como uma receita ainda estaria nessas partes (assim como o motor do carro segue uma srie de passos, e o funcionrio uma

srie de procedimentos), mas essas receitas seriam menores, mais fceis de entender, alterar e substituir, podendo haver em uma s parte vrios modos de preparo. O primeiro mtodo chamado programao estruturada e ainda hoje usado. Entretanto, o segundo modo se tornou popular e preferido de vrios programadores e organizaes. chamado programao orientada a objetos e desse modo que se programa em Java. Objetos e classes Em Java os programas so escritos em pequenos pedaos separados, chamados de objetos. Objetos so pequenos programas que guardam dentro de si os dados em suma, as variveis que precisam para executar suas tarefas. Os objetos tambm trazem em si, como subrotinas, as instrues para processar esses dados. As variveis que um objeto guarda so chamadas de atributos, e as suas sub-rotinas so chamadas de mtodos. Guarde bem esses nomes, pois voc os ver ainda muitas vezes. Em Java, objetos so criados a partir de modelos que os descrevem. Esses modelos so chamados de classes. dentro dessas classes que definimos que atributos os objetos contero e que mtodos os objetos fornecero. Java e Eclipse Agora que j sabemos um pouco sobre como se programa em Java, vejamos o que Java. Java uma linguagem de programao orientada a objetos esttica e fortemente tipada. Programas escritos em Java so compilados, como em C e Pascal, mas o resultado da compilao so arquivos que no podem ser executados diretamente pelo computador ou sistema operacional, de modo que precisam tambm ser interpretados, como em BASIC e Python. Java compilada porque isso permite encontrar erros antes de executar o programa e facilita executar os programas mais eficientemente, e interpretada porque isso permite que o mesmo arquivo compilado possa ser executado em qualquer computador ou sistema operacional que tenha um interpretador Java o que, atualmente, equivale a quase qualquer computador, de smartphones a mainframes. O interpretador Java, alm de interpretar as instrues compiladas, tambm responsvel por retirar da memria objetos que no so mais utilizados. O algoritmo que executa essa tarefa de limpeza chamado de coletor de lixo, e um dos grandes atrativos do Java: em linguagens mais tradicionais, como C e C++, o programador responsvel por limpar a memria na mo, o que uma tarefa tediosa e at perigosa. Apesar de tudo, Java uma linguagem relativamente complicada e verborrgica. Exige-se que se digite muito, facilitando que se erre. preciso compilar os programas para depois rod-los. As classes que criaro os objetos dos programas devem ficar em hierarquias de diretrios precisamente definidas, tanto na hora da compilao quanto durante a execuo. Cuidar de todos esses detalhes cansativo e facilita o erro. Por isso, para programar a srio em Java, o uso de um ambiente integrado de desenvolvimento ou como so mais conhecidos, IDEs praticamente indispensvel.

Figura 1. IDE Eclipse. Neste artigo, trabalharemos com a IDE Eclipse. O Eclipse um software popular, poderoso e gratuito. Assumimos que o Eclipse, assim como o ambiente Java, j esto devidamente instalados. A Figura 1 apresenta um screenshot do Eclipse.

Figura 2. Primeira tela do Eclipse, para escolha do workspace. Para chegar a essa tela da Figura 1, abra o Eclipse. Primeiro, ele perguntar que workspace voc querer usar, como pode ser visto na Figura 2. Workspace o diretrio onde se cria e trabalha em projetos. Se voc no tem nenhuma razo para mudar o padro, apenas clique em Ok. Feito isso, aparecer a tela da Figura 3. Esta tela aparece todas as vezes que se abre um workspace novo; para ir ao ambiente de trabalho, clique no cone do canto superior direito, com o rtulo Workbench.

Figura 3. Tela inicial de um workspace novo do Eclipse. possvel usar vrios workspaces com uma mesma instalao do Eclipse. Muitos programadores costumam manter vrios workspaces, com projetos relacionados em cada um. Por exemplo, se o desenvolvedor trabalha como freelancer para vrias empresas, pode ter um projeto para cada uma; se o desenvolvedor tambm estudante, pode manter um

projeto para o trabalho e outro para o curso; e assim por diante. Classes e pacotes no Eclipse Para criar um programa em Java usando o Eclipse, precisamos primeiro criar um projeto do Eclipse. Um projeto uma unidade de trabalho genrica, mas podemos assumir nesse tutorial que um projeto um programa. Para cri-lo quando o Eclipse j estiver apresentando a tela da Figura 1, pressione Control + N. Feito isso voc ver a janela da Figura 4.

Figura 4. Caixa de dilogo para criao de novos elementos. Nela, selecione a opo Java Project e clique em Next. Na tela que pode ser vista na Figura 5, podemos configurar vrios detalhes do projeto. Por ora, vamos apenas dar um nome para o projeto. Poderamos clicar em Next e mudar outras configuraes, mas no precisamos disso agora, ento clique apenas em Finish. O projeto aparecer no compartimento do lado esquerdo, na aba Project Explorer.

Figura 5. Criando um novo projeto. Criado o projeto, podemos criar as classes. Pressione novamente Control + N, escolha a opo Class e clique em Next. A janela da Figura 6 aparecer com vrias opes para definio da

classe. No campo rotulado Name, digite PrimeiraClasse. Um alerta aparecer dizendo que recomendvel declarar um pacote (package) tambm; para declar-lo, digite artigoinicial.primeironome no campo rotulado Package. Depois clique em Finish. Pacotes so agrupamentos que podem conter classes e outros pacotes. Cada um um diretrio, e os arquivos de cdigo-fonte das classes assim como os arquivos compilados que pertencem a um pacote devem vir dentro do diretrio correspondente. Em artigoinicial.primeironome, por exemplo, h dois pacotes: um chamado artigoinicial e outro chamado primeironome, que est dentro do primeiro. Os pacotes so importantes para organizar o cdigo, pois programas podem ter literalmente milhares de classes. Pacotes tambm evitam conflitos. possvel usar classes produzidas por outras pessoas e organizaes, e alguns nomes so bem comuns, como File, User, List etc. Em Java, toda classe compilada para um arquivo que tem o mesmo nome e no seria possvel ter dois arquivos com o mesmo nome no mesmo diretrio. Porm, se ponho minha classe File no pacote br.com.minhaempresa.nomedoprojeto e voc puser a sua em br.org.suaong.projeto, possvel usar ambas as classes em um mesmo programa.

Figura 6. Caixa de dilogo para criao de nova classe. A classe aparecer no painel do lado direito, como visto na Figura 7, e um editor abrir no centro da tela. Nele, estar o seguinte cdigo:

1. public class PrimeiraClasse { 2. 3. }

Esse cdigo define uma classe vazia. Na primeira linha, o pacote da classe declarado. A palavra public significa que a classe pblica, quaisquer outras classes podem usar servios que ela proveja. J a palavra class define que o que ser declarado agora uma classe; o nome da classe, PrimeiraClasse, deve vir logo aps a palavra class. As chaves que se seguem ({ }) definem o corpo da classe: entre elas que os atributos e mtodos devem ser descritos. Por fim, visvel naFigura 7 que o nome do arquivo em que o cdigo-fonte est PrimeiraClasse.java. Em Java, obrigatrio que o arquivo tenha o nome da classe principal que ele contm seguido da extenso .java. Felizmente, todos esses detalhes j foram resolvidos pelo Eclipse.

Figura 7. Nova classe vista no painel. Mtodo main() Todo programa em Java precisa de uma classe que crie os primeiros objetos e lhes passe as tarefas iniciais. Quem faz isso um mtodo especial, chamado main(). A forma desse mtodo a seguinte: 1. public static void main(String[] args) { 2. }

A palavra public, aqui, significa que qualquer outra classe pode utilizar esse mtodo. main o nome do mtodo, e antes do nome deve vir o tipo do valor que ele retornar; como o mtodo main no retorna nada, diz-se que ele retorna void. J a palavra static tem um sentido bem especial: significa que o mtodo pode ser invocado mesmo sem ser criado nenhum objeto da classe. Na maioria das vezes, os mtodos de uma classe s podem ser chamados por seus objetos, mas um mtodo static escapa dessa restrio. Note que o programa iniciado por um mtodo chamado main(), no por uma funo, como em C ou C++. Em Java, no existem funes livres, apenas mtodos. Aps o nome do mtodo deve vir a lista de parmetros. main() recebe apenas um parmetro: um vetor (tambm chamado array) de objetos da classe String, que representa sequncias de caracteres. A declarao do parmetro o seu tipo seguido do seu nome (no caso, foi chamado de args, mas poderia ser qualquer identificador no reservado). Note que h um par

de colchetes ([]) logo frente da palavra String; os colchetes significam que o parmetro args no uma String, mas sim um array de String. Por ora, esse parmetro pode ser ignorado. Em C e C++, declara-se que uma varivel um vetor colocando o par de colchetes aps o nome da varivel, como em char array[]. possvel fazer isso tambm em Java, mas geralmente recomendado colocar o par de colchetes aps o tipo, pois isso deixaria claro que o tipo da varivel no String, mas sim um vetor. O parmetro que o mtodo main() recebe um array com todos os argumentos que foram passados, pela linha de comando, para o programa Java, de modo semelhante aos parmetros argc e argv da funo main() de C. Ol, mundo! Agora que j foi visto como criar uma classe e declarar o mtodo main(), pode-se adicionar o mtodo classe j criada. Vejamos, por exemplo, como criar o to famoso Hello, World. Para isto, basta acrescentar, dentro do mtodo main() a seguinte linha: System.out.println("Ol, mundo!"); A classe resultante pode ser vista na Listagem 1. Para execut-la, basta clicar no boto Run do Eclipse ( ). Aparecer uma aba na parte inferior da janela, chamada Console, e nela haver uma parte em branco em que estar escrito Ol, Mundo!, como pode ser visto na Figura 8. Enfim, acabamos de criar nosso primeiro programa em Java. No comeo do artigo foi dito que os programas em Java so compostos por vrios objetos; at agora, porm, pode-se ter a impresso de que no s nenhum objeto foi utilizado como apenas uma classe foi usada. Seria um engano: no nosso programa vrias classes e objetos foram utilizados. Listagem 1. Exemplo de classe simples com o mtodo main(). 1. public class PrimeiraClasse { 2. 3. 4. 5. 6. 7. } } public static void main(String[] args) { System.out.println("Ol, mundo!");

Figura 8. O que o programa imprime no terminal sai na aba Console. Para comear, o texto Ol, Mundo! foi representado por uma instncia de String. (Instncia de X sinnimo de objeto da classe X.) Este objeto String foi passado como parmetro para

o mtodo println() de um objeto apontado pela varivel out. A varivel out aponta para um objeto da classe PrintStream, que capaz de imprimir o que for necessrio no terminal. A varivel out um atributo esttico (isto , no est dentro de um objeto comum, mas est dentro de uma classe) da classe System, que contm vrias ferramentas teis para o programador. A expresso "Ol, Mundo!" no representa na verdade um objeto da classe String, mas um objeto vetor de caracteres. Entretanto, Java converte automaticamente vetores de caracteres para objetos da classe String. O programa da Listagem 1, simples como , usou pelo menos dois objetos e quatro classes. Alm destes, possvel que outros objetos e classes tenham sido usados pelos objetos explicitamente mostrados no cdigo. a que est a mgica da programao orientada a objetos: todos os detalhes dessa execuo foram escondidos, cada objeto cuida dos seus problemas. Com cada objeto resolvendo um pedao da tarefa maior, nem nos damos conta de quantos objetos o programa usa! Criando objetos O programa da Listagem 1 utiliza vrias classes e objetos, mas o programador s criou uma classe. Programas mais sofisticados, mesmo que s um pouco, precisam de mais classes. Considere um programa que leia os nomes de pessoas e imprima o nome completo e as iniciais. Este seria um programa simples que poderia ser escrito com apenas uma classe, mas provavelmente ficaria mais elegante com mais de uma. Por exemplo, uma classe que guardasse os vrios nomes da pessoa poderia ser criada. Esta classe precisaria ter atributos para guardar os pedaos do nome: 1. public class Pessoa { 2. 3. 4. 5. } private String primeiroNome; private String ultimoNome; private String nomesDoMeio;

No cdigo acima, uma classe chamada Pessoa definida com trs atributos para apontar para os trs trechos do nome. Essa classe um modelo, uma frma para criar objetos, e cada objeto vai ter seus prprios atributos. Vamos examinar uma das declaraes: private String primeiroNome;. A palavra-chave private serve para declarar o atributo como privado: apenas mtodos definidos na prpria classe Pessoa podem alterar ou ler esses atributos. String, como j vimos antes, o nome de uma classe que representa uma sequncia de caracteres; nessa declarao, significa que o atributo apontar para um objeto criado a partir da classe String ou, como se costuma dizer, do tipo String. Por fim, aparece o nome do atributo, primeiroNome. O ponto-e-vrgula que se segue exigido, em Java, aps qualquer declarao de varivel (o que inclui atributos) e depois de qualquer comando. Se voc quiser testar esses cdigos voc mesmo, sugerimos que crie um novo projeto e nele crie as novas classes, como foi explicado anteriormente. Isto , inclusive, um bom exerccio!

Experimente! Um objeto desta classe no deve apenas armazenar dados, mas tambm process-los: alm dos ingredientes, tem de ter tambm as receitas. No caso, o processamento deve ser feito por mtodos. Um mtodo necessrio aquele que retorne o nome inteiro a partir dos nomes armazenados no objeto. Esse mtodo poderia ser assim: 1. public String getNomeCompleto() { 2. 3. 4. } String nomeCompleto = primeiroNome + " " + nomesDoMeio + " " + ultimoNome; return nomeCompleto;

A primeira linha, public String getNomeCompleto(), especifica o mtodo. Primeiro, declara-se, atravs da palavra-chave public, que o mtodo pblico isto , qualquer mtodo, de qualquer classe, pode invoc-lo. O mtodo retorna objetos do tipo String e se chama getNomeCompleto. O par de parnteses vazio significa que ele no recebe parmetro algum. O contedo do mtodo vem entre um par de chaves. Dentro do mtodo, declara-se uma nova varivel, do tipo String, chamada nomeCompleto. Ao contrrio de variveis como primeiroNome, nomeCompleto no um atributo, mas sim uma varivel local. primeiroNome existir desde a criao do objeto at sua retirada da memria, mas nomeCompleto s existir enquanto o mtodo getNomeCompleto() estiver sendo executado, e para cada chamada do mtodo uma nova varivel ser criada. A varivel nomeCompleto recebe o resultado da concatenao de String. O sinal de atribuio =, e a concatenao de String feita atravs do operador +. Ao final, um ponto-e-vrgula sinaliza o fim deste comando. Abaixo, temos o comando return. Quando ele invocado, o mtodo termina e o valor que est sua frente (no caso, o valor referenciado pela varivel nomeCompleto) retornado. Como todo programa em Java precisa de uma classe com o mtodo main(), criamos uma nova classe, denominada ProgramaNome, que tenha esse mtodo: 1. public class ProgramaNome { 2. 3. 4. 5. } } public static void main(String[] args) {

At agora, no vimos como criar objetos. Para isso, Java prov uma ferramenta especial chamada construtor, que so definidos de forma semelhante a mtodos (embora no sejam mtodos). Ns no definimos nenhum construtor em Pessoa, mas isso no necessrio para

criar objetos: toda classe sem construtor definido tem, por padro, um construtor simples. Os construtores tm o mesmo nome de suas classes e so invocados pelo comando new. A linha abaixo chama o construtor padro de Pessoa; esse construtor cria um novo objeto, e o objeto armazenado na varivel pessoa: Pessoa pessoa = new Pessoa(); Em Java, no possvel dar o mesmo nome a uma classe e a um objeto, mas podemos criar uma classe chamada Pessoa e uma varivel chamada pessoa porque Java distingue entre maisculas e minsculas. Assim, Pessoa, pessoa, PESSOA e pEsSoA so nomes diferentes. Para criar uma pessoa que se chamasse, por exemplo, Joo Paulo Silva, poderamos tentar criar a seguinte classe: 1. public class ProgramaNome { 2. 3. 4. 5. 6. 7. 8. 9. } } public static void main(String[] args) { Pessoa pessoa = new Pessoa(); pessoa.primeiroNome = Joo; pessoa.nomeDoMeio = Paulo; pessoa.ultimoNome = Silva; System.out.println(pessoa.getNomeCompleto());

No entanto, isto no possvel porque os atributos so privados. Apenas os mtodos da classe Pessoa podem acess-los. Isso pode ser solucionado de vrias maneiras, e uma das mais elegantes criando o nosso prprio construtor, como abaixo: 1. public Pessoa(String primeiro, String meio, String ultimo) { 2. 3. 4. 5. } primeiroNome = primeiro; ultimoNome = ultimo; nomesDoMeio = meio;

A declarao do construtor sempre o nome da classe seguido pela lista de parmetros. A palavra public indica que o construtor pblico, de modo que pode ser invocado por qualquer classe. Um ponto importante sobre construtores que eles no criam nem retornam objetos;

quem faz isso a palavra reservada new. O construtor apenas executa algum procedimento sobre o objeto criado pelo comando new. Este construtor, no caso, recebe os nomes como parmetros e os atribui aos atributos. Agora, podemos trocar as quatro primeiras linhas do mtodo main() invlido por apenas a seguinte: Pessoa pessoa = new Pessoa("Joo", "Paulo", "Silva"); A classe Pessoa completa pode ser vista na Listagem 2. A classe ProgramaNome, por sua vez, encontra-se na Listagem 3. Ao executar o programa, obtm-se no console a seguinte sada: Joo Paulo Silva Mostramos como fazer um programa que imprima o nome completo da pessoa. Agora, propomos um exerccio: altere esse programa para que imprima tambm as iniciais. Crie um mtodo chamado getIniciais() na classe Pessoa. Uma dica: estude o mtodo charAt() da classe String. Boa sorte! Listagem 2. Classe Pessoa, que gera o nome completo a partir das partes. 1. public class Pessoa { 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. } 12. 13. 14. public String getNomeCompleto() { 15. 16. String nomeCompleto = primeiroNome + " " + nomesDoMeio + " " + ultimoNome; return nomeCompleto; public Pessoa(String primeiro, String meio, String ultimo) { primeiroNome = primeiro; ultimoNome = ultimo; nomesDoMeio = meio; private String primeiroNome; private String ultimoNome; private String nomesDoMeio;

17. } 18. 19. }

Listagem 3. Classe ProgramaNome, que utiliza a classe Pessoa para gerar um nome completo a partir das partes. 1. public class ProgramaNome { 2. 3. 4. 5. 6. 7. 8. } } public static void main(String[] args) { Pessoa pessoa = new Pessoa("Joo", "Paulo", "Silva"); System.out.println(pessoa.getNomeCompleto());

Herana Em Java, os tipos dos objetos so classes. Entretanto, ao contrrio dos tipos primitivos, que no so classes (veja o quadro Tipos primitivos), um objeto pode ter vrios tipos desde que esses tipos estejam hierarquicamente relacionados. Esses relacionamentos so como taxonomias biolgicas. Por exemplo, todo mamfero um animal, e todo cachorro mamfero. H uma hierarquia entre esses conceitos, que vai do mais geral (animal) ao mais especfico (cachorro). Por exemplo, poderamos ter uma classe Animal que representasse animais em geral e as atividades que todos eles executam. Uma dessas atividades comer, e nossa classe poderia ser como a abaixo. (Se for test-la, crie um novo projeto e chame-o de Animais.) 1. public class Animal { 2. 3. 4. 5. } } public void comer(String alimento) { System.out.println("Eu estou comendo "+alimento);

Uma classe de mamferos estenderia a classe de animais, porque mamferos podem fazer coisas que outros animais no podem por exemplo, gerar leite. Uma classe Mamifero estenderia a classe Animal usando a palavra reservada extends em sua declarao: 1. public class Mamifero extends Animal { 2. 3. } 4. 5. Um novo mtodo, lactar(), tambm poderia ser adicionado: 6. 7. public String lactar() { 8. 9. } return "leite";

O resultado pode ser visto na Listagem 4. Como mamferos so animais, tambm precisam do mtodo comer(), e a entra uma das vantagens da herana: como a classe Mamifero estende a classe Animal, ela herda todos os mtodos de Animal, ento no preciso reescrev-los. O programa da Listagem 5 representa bem isso: note como o mtodo comer() invocado, mesmo sem ser declarado em Mamifero. Esse programa imprimir: Eu estou comendo plantas Eu estou comendo queijo O produto da lactao leite Listagem 4. Classe Mamifero. 1. public class Mamifero extends Animal { 2. 3. 4. 5. 6. } public String lactar() { return "leite";

7. }

Listagem 5. Superclasse e subclasse em uso. 1. public class AnimaisAgindo { 2. 3. 4. 5. 6. 7. 8. 9. 10. } 11. 12. } public static void main(String[] args) { Animal animal = new Animal(); Mamifero mamifero = new Mamifero(); animal.comer("plantas"); mamifero.comer("queijo"); String produto = mamifero.lactar(); System.out.println("O produto da lactao " + produto);

Tipos primitivos Quase todos os tipos de Java so classes, e quase todos os valores so objetos, incluindo strings e vetores. Entretanto, alguns tipos em Java no so classes, e seus valores no so objetos Esses tipos so chamados tipos primitivos e representam, basicamente, valores numricos:

Int - Representa nmeros inteiros, de -2147483648 a 2147483647 Byte - Representa nmeros inteiros, de -128 a 127 Short - Representa nmeros inteiros, de -32768 a 32767 Long - Representa nmeros inteiros, de -9223372036854775808 a 9223372036854775807 Char - Valores numricos que vo de 0 a 0xFFFF. Entretanto, no so usados em operaes matemticas; representam caracteres, de acordo com o encoding UTF-16.

Float - Nmeros com fraes usando representao de ponto flutuante. Vai de valores to pequenos quanto 1,4 10-45 at 3,4 1038. Representa uma grande faixa de nmeros, mas perde em eficincia comparado com tipos inteiros. Double - Nmeros com fraes usando representao de ponto flutuante. Abrange uma faixa ainda maior que a do tipo float (de 4,9 10-324 at 1,7 10308), com preciso ainda maior, mas so ainda mais lentos e ocupam mais memria. Para completar este artigo, veja o vdeo que ensina mais alguns recursos importantes do Java ao darmos os primeiros passos com a linguagem. Concluso Programao estruturada, a maneira tradicional de se programar, bastante simples e clara. Entretanto, essa simplicidade no escala: medida que programas crescem, mais difcil mant-los. A orientao a objetos , provavelmente, a soluo mais popular para esse problema, e Java a linguagem de referncia para esse paradigma de programao. Nesse artigo vimos que, em Java, programas so compostos por unidades chamadas objetos. Os objetos possuem mtodos (cdigo) e atributos (dados). Para declarar mtodos e atributos, escrevem-se classes, que so modelos a partir dos quais os objetos so criados. Vimos tambm que possvel criar classes novas a partir de outras, usando herana, e que classes podem ser agrupadas, para melhor compreenso, em pacotes. Orientao a objetos no se restringe a esses conceitos. Para se programar competentemente de maneira orientada a objetos, saber como organizar estes componentes crucial. Entretanto, para isso preciso conhecer estes componentes, e esse artigo explica o que so, a importncia e o papel de cada um.