Você está na página 1de 21

Linguagem Java

Java OO

Apostila

www.3way.com.br

Linguagem Linguagem de de Programao Programao Java Java

Carro carro1 = new Carro(); 3 1 Introduo Linguagem Java 6 carro1.ano = "2001"; 3 1.1 O que a Tecnologia Java ? 6 carro1.modelo= "fusca"; 3 1.1.1 JSE Java Standard Edition 6 carro1.cor = "prata"; 3 1.1.2 JEE - Java Enterprise Edition 6 3 1.1.3 JME - Java Micro Edition 6 4 1.1.4 Java Card 7 4 1.2 Quanto tempo necessrio para aprender Java ? 7 5 1.3 O curso 8 5 1.3.1 Convenes de Cdigo 8 1.3.2 Sobre os exerccios 8 5 1.4 Fazer Laboratrio 0 8 5 2 Bases da Programao em Java 9 7 2.1 Classes 9 7 2.1.1 Declarando Membros: Variveis e Mtodos 10 8 2.2 Objetos 10 8 Figura 2.4 Layout Memria aps inicializao 2.2.1 Instncia de Classes 10 8 2.2.2 Referncia de novo Objetos 11 9 //criando alias 2.3 Membros de Instncia 12 Carro carro2 = carro1; 11 2.3.1 Invocao de Mtodos 12 11 2.3.1.1 Chamando Mtodos de Objeto 13 12 2.3.2 Envio de Argumentos para Mtodos 13 12 2.3.2.1 Passagem de Parmetros por valor 13 12 2.3.2.2 Passagem de Parmetros por referncia 14 13 2.4 Membros Estticos 15 14 2.5 Herana - Relacionamentos do tipo "-um" 16 2.6 Agregao - Relacionamentos do tipo "tem-um" 17 2.7 Princpios de Programao Com Java 18 2.8 Estrutura de Arquivos Fontes em Java 18 18 2.9 O mtodo main() 19 19 2.10 Fazer Laboratrio 1 19 19 2.11 Exerccios 19 19 3 Identificadores, Palavras-chave e Tipos 19 *Apostilha referente somente ao primeiro mdulo do curso Formao Java Web 3Way Networks. Figura 2.5 Layout Memria duas variveis referncia para o mesmo objeto 3.1 Comentrios 19 3.2 Ponto-e-Vrgula, Blocos e Espao 20 3.3 Identificadores 20 3.4 Palavras Reservadas 20 2.3 Membros de Instncia 3.5 Variveis, Declaraes e Atribuio 21 Cada objeto criado dever ter sua prpria instncia de variveis Os valores das variveis21 3.5.1 Declarando e inicializando Variveis (atributos) definidas pela classe. Os mtodos definem o comportamento de um em um objeto constituem 3.5.2 Exibindo o valor de uma Varivel 22 objeto. Isto importante, pois e denota que um mtodo pertence a cada objeto da o seu estado. 3.5.3 Variveis de Referncia de Valor 22 classe. Porm no devemos 3.6 Tipos Bsicos em Javaconfundir isto com a implementao do mtodo, que 23 Dois objetos distintos tm compartilhada por todas as instncias da classe. 3.6.1 Literais Java 23 o mesmo estado se suas 3.6.2 Tipos Dados Primitivos 23 variveis membro tm os 3.6.2.1 Lgico boolean 23 2.3.1 Invocao de Mtodos mesmos valores. 3.6.2.2 Textual char and String 23 Objetos se comunicam pela troca de mensagens, isto significa que um 3.6.2.3 Inteiro byte, short, int e long 24 objeto pode ter que mostrar um comportamento particular invocando uma 3.6.2.4 Ponto Flutuante float e double 24 operao apropriada que foi definida no objeto. Em Java, isto feito pela 3.6.2.5 Exemplos de declaraes e atribuies 25 chamada de um mtodo em um objeto usando o operador binrio "." (ponto), 3.7 Converses 26 devendo especificar a mensagem completa: o objeto que o recebedor da 3.7.1 Casting de Tipos Primitivos 26 mensagem, o mtodo a ser invocado Numrica e os argumentos para o mtodo (se houver). 3.7.2 Literais numricos e Promoo 26 O mtodo invocado no (Empacotadoras) recebedor pode tambm enviar informaes de volta ao 3.8 Classes Wrapper 27 objeto chamador atravs de um valor de retorno. O mtodo chamado deve ser 3.8.1 Construtores Wrapper 28 um que esteja definido 3.8.2 Mtodo valueOfpelo objeto. 28 3.8.3 Converses 28
Seja Seja um um Profissional Profissional Aprendendo Aprendendo com com Profissionais Profissionais www.3way.com.br www.3way.com.br
Todos os direitos reservados a 3Way Networks

Sumrio//atribuindo valor a varivel referncia

1 12 2

Linguagem Linguagem de de Programao Programao Java Java

De forma bastante simplificada podemos dizer que a tecnologia Java composta por uma gama de produtos pensados para utilizar o melhor das redes de computadores e capaz de serem executados (rodar) em diferentes mquinas, sistemas operacionais e dispositivos. Por diferentes dispositivos entendemos: PCs, servidores, notebooks, handhelds, PDAs (Palm), celulares, TV, geladeiras e tudo que for possvel instalar e executar uma JVM. Os programas feitos em Java rodam em diferentes ambientes graas a um componente da plataforma chamado JVM (Java Virtual Machine) que um tipo de tradutor de cdigo Java para instrues especficas de cada sistema operacional e/ou dispositivo. A tecnologia Java foi lanada em 1995 e desde ento tem crescido Figura 2.4 Layout Memria aps inicializao em popularidade e se tornado uma plataforma muito estvel e madura. //criando novo alias A Plataforma Java pode ser subdividida nos seguintes grupos:
Carro carro2 = carro1;

valor a varivel referncia 1.1 //atribuindo O que a Tecnologia Java? Carro carro1 = new Carro(); Talvez no seja a primeira vez que voc ouve falar em Java, Java 5, Java 6, JRE, Mquina Virtual, J2SE, carro1.ano = "2001"; J2EE, JSP, EJB e etc. Bom, a resposta carro1.modelo= "fusca"; muito longa e pouco proveitosa neste momento. Voc no vai encontrar carro1.cor = "prata"; neste material todas as explicaes para tantas siglas e nomes que esto relacionados com a tecnologia Java.

Introduo Linguagem Java

Os programas feitos em Java rodam em diferentes ambientes graas a JVM (Java Virtual Machine).

- JSE (Java Standard Edition) - JEE (Java Enterprise Edition) - JME (Java Micro Edition) - Java Card 1.1.1 JSE - Java Standard Edition A JSE uma rica plataforma que oferece um completo ambiente para o desenvolvimento de aplicaes para clientes e servidores. A JSE tambm a base da tecnologia JEE e est dividida em dois grupos conceituais: Core Java e Desktop Java. Empresas como Sun, IBM, BEA, entre outras, distribuem a JSE na forma de um SDK (Software Development Kit), em conjunto com uma JRE (Java Runtime Environment). O pacote do SDK da JSE vem com ferramentas para: compilao, debugging, gerao de documentao Figura 2.5 Layout Memria duas,variveis referncia o mesmo objeto (javadoc), empacotador de componentes (jar) e a JRE que contm apara JVM e outros componentes necessrios para rodar aplicaes Java. O JDK (SDK Java) usado para compilar e depurar programas, sendo utilizados pelos desenvolvedores de 2.3 Membros de Instncia sistemas. A JRE o ambiente dedever execuo, qualquer que deseje executar umdas programa que Cada objeto criado tersendo sua utilizado prpria por instncia de um variveis Os valores variveis tenha sido compilado como byte code Java. definem o comportamento de um (atributos) definidas pela classe. Os mtodos em um objeto constituem objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da o seu estado. 1.1.2 Porm JEE - Java Edition isto com a implementao do mtodo, que classe. noEnterprise devemos confundir Dois objetos distintos tm A tecnologia JEE no um produto, mas sim uma especificao definida por grandes empresas, atravs do compartilhada por todas as instncias da classe. o mesmo estado se suas JCP (Java Community Process). Simplifica o desenvolvimento de aplicaes empresariais e multi-camadas. variveis membro tm um os baseado nos componentes padronizados, modulares e reusveis, como os EJB (Enterprise JavaBeans ). Oferece 2.3.1 Invocao de Mtodos mesmos valores. conjuntoObjetos completo servios para Define muitos comportamentos da aplicao. Voc no se de comunicam pela estes trocacomponentes. de mensagens, isto significa que um precisa reaprender a programar pois voc vai utilizar os mesmo recursos do Java SE . Necessita de servidores de objeto pode ter que mostrar um comportamento particular invocando uma aplicaesapropriada JEE. A tecnologia JEE definida no est no deste operao que foi noescopo objeto. Em curso. Java, isto feito pela chamada de um mtodo em um objeto usando o operador binrio "." (ponto), 1.1.3 JME - Java Micro Edition completa: o objeto que o recebedor da devendo especificar a mensagem A tecnologia JME voltada para aplicaes que rodam em pequenos dispositivos como celulares, PDAs, mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). smart cards e etc. Ela umapode API bastante para o desenvolvimento O mtodo invocado no possui recebedor tambm completa enviar informaes de volta ao de aplicaes de dispositivos mveis. A tecnologia J2MEde no est no escopo deste curso. objeto chamador atravs um valor de retorno .O mtodo chamado deve ser um que esteja definido pelo objeto.
os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br

12 3

Linguagem Linguagemde deProgramao ProgramaoJava Java


1.1.4 Java Card Java Card umavalor tecnologia que permite pequenos aplicativos (applets) //atribuindo a varivel referncia Carro carro1 Java = new Carro(); baseados em plataforma sejam executados com segurana em smart cards e carro1.ano "2001";de processamento e armazenamento, como dispositivos similares com=limitaes carro1.modelo= "fusca"; o Java Ring. muito utilizado em cartes SIM (usados em celulares GSM) e em carro1.cor = "prata"; caixas eletrnicos. Os produtos Java Card so baseados nas especificaes da plataforma Java Card desenvolvida pela Sun Microsystems, e suas principais caractersticas so portabilidade e segurana.

Podemos dizer que muito tempo, basicamente o que ser apresentado neste material. Como j dissemos e voc vai perceber, Java muito mais que uma linguagem de programao, um conjunto de ferramentas e bibliotecas de apoio ao desenvolvimento de sistemas em diversas reas de tecnologia de software. Porm, mais importante que aprender a linguagem aprender a programar no Figura 2.4 Layout Memria aps inicializao paradigma de orientao a objetos. //criando novo alias O texto abaixo uma traduo do artigo de autoria de Peter Norvig Carro carro2 = carro1; (http://norvig.com/21-days.html, para ver original ou busque na internet "Aprenda a programar em dez anos"), os conselhos apresentados servem para todos os que desejam ou necessitam aprender programar. Abaixo est a receita de Peter Norvig para sucesso na programao:

1.2

Quanto tempo necessrio para aprender Java?

No se preocupe com o quanto tempo, mas com o que devo aprender para programar em Java. Mais importante que aprender a linguagem Java aprender a programar no paradigma de orientao a objetos.

Aprenda ingls. Leia o texto original. Essa traduo s est aqui para exercitar o meu ingls, no o seu. (Nota do tradutor)  Se interesse por programao e programe porque voc acha legal. Tenha certeza que isso continue a ser legal para voc dedicar dez anos nisso.  Converse com outros programadores; leia outros programas. Isso mais importante do que qualquer livro ou curso de treinamento.  Programe. O melhor tipo de aprendizado aprender fazendo. Colocando de uma forma mais tcnica, "o nvel mximo de performance individual em um domnio no alcanado automaticamente em Figura 2.5 Layout Memria duas variveis referncia para o mesmo objeto funo de uma experincia estendida, mas sim aumentado, mesmo por indivduos extremamente experientes, por um esforo deliberativo de melhorar." (p. 366) e "o aprendizado mais efetivo requer uma tarefa bem definida com uma dificuldade apropriada para o indivduo em particular, dado que 2.3 Membros de Instncia exista um retorno sobre a experincia e oportunidades de repetio e correes de erros." (p. 20-21) Cada objeto criado dever ter sua prpria instncia de variveis valores das variveis do livro Cognition in Practice: Mind, Mathematics, and Culture in Everyday Os Life , que uma referncia (atributos) definidas pela classe. Os mtodos definem o comportamento de um em um objeto constituem interessante deste ponto de vista. objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da o seu estado . dar  Se voc quiser, gaste quatro anos em uma universidade (ou mais em uma ps-graduao). Isso lhe classe. Porm no devemos confundir isto com a implementao do mtodo, que Dois objetos distintos tm acesso a alguns empregos que requerem alguma formao e um grande entendimento do campo de compartilhada por todas as instncias da classe. trabalho, mas se voc no gosta muito de ir para escola, voc pode (com alguma dedicao) conseguir o mesmo estado se suas alguma experincia similar sobre esse tipo de trabalho. Em qualquer caso, apenas ler livros no ser variveis membro tm os 2.3.1 Invocao de Mtodos suficiente. "Educao em cincias da computao no faz de ningum um gnio em programao mesmos valores. Objetos se comunicam pela troca de mensagens, isto significa que um tanto quanto estudar pincis e pigmentos no fazem um bom pintor." diz Eric Raymond, autor de objeto pode ter que mostrar um comportamento particular invocando uma The New Hackers Dictionary. Um dos melhores programadores que eu j contratei tinha apenas o operao apropriada que foi definida no objeto. Em Java, isto feito pela segundo grau, e ele produziu vrios softwares incrveis, tem seu prprio grupo de discusso, e fez chamada de um mtodo em um objeto usando o operador binrio "." (ponto), dinheiro suficiente em aes para comprar seu prprio clube noturno. devendo especificar a mensagem completa: o objeto que o recebedor da  Trabalhe em projetos com outros programadores. Seja o melhor programador em alguns projetos, seja mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). o pior em outros. Quando voc o melhor voc testa suas habilidades para liderar um projeto e para O mtodo invocado no outros recebedor enviar voc informaes deaprender volta ao o que os mestres ensinam e o inspirar os com pode a sua tambm viso. Quando for o pior objeto chamador atravs de um valor de retorno . O mtodo chamado deve ser que eles no gostam de fazer (porque eles fazem voc fazer por eles). um que esteja definido pelo objeto.  Trabalhe em projetos aps outros programadores. Esteja envolvido em entender um programa escrito

Todos os direitos reservados a 3Way Networks Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br

12 4

Linguagem de Programao Java

//atribuindo valor a varivel referncia Carro carro1 = new Carro(); carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 Layout Memria aps inicializao

//criando novo alias Carro carro2 = carro1;

Figura 2.5 Layout Memria duas variveis referncia para o mesmo objeto

Cada objeto criado dever ter sua prpria instncia de variveis (atributos) definidas pela classe. Os mtodos definem o comportamento de um objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da classe. Porm no devemos confundir isto com a implementao do mtodo, que compartilhada por todas as instncias da classe. 2.3.1 Invocao de Mtodos Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operao apropriada que foi definida no objeto. Em Java, isto feito pela chamada de um mtodo em um objeto usando o operador binrio "." (ponto), devendo especificar a mensagem completa: o objeto que o recebedor da mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). O mtodo invocado no recebedor pode tambm enviar informaes de volta ao objeto chamador atravs de um valor de retorno. O mtodo chamado deve ser um que esteja definido pelo objeto.
Todos os direitos reservados a 3Way Networks

2.3

Membros de Instncia

Os valores das variveis em um objeto constituem o seu estado. Dois objetos distintos tm o mesmo estado se suas variveis membro tm os mesmos valores.

Seja um Profissional Aprendendo com Profissionais www.3way.com.br

12 5

Linguagem Linguagemde deProgramao ProgramaoJava Java


por outro. Veja o que preciso para entender e consertar quando o programador original no est por

perto. Pense valor em como programas para que seja fcil mant-los, se no for voc. //atribuindo a desenvolver varivel seus referncia Carro carro1 = menos new Carro();  Aprenda pelo meia dzia de linguagens de programao. Inclua na lista uma linguagem carro1.ano = "2001"; orientada a objetos (como Java ou C++), uma que seja de abstrao funcional (como Lisp ou ML), carro1.modelo= "fusca"; uma que suporte abstrao sinttica (como Lisp), uma que suporte especificao declarativa (como carro1.cor = "prata"; Prolog ou C++ com templates), uma que suporte co-rotinas (como Icon ou Scheme), e uma que suporte paralelismo (como Sisal).  Lembre-se que h um "computador" em "cincia da computao". Saiba quanto tempo leva para o seu computador computar uma instruo, carregar uma palavra at a memria (com e sem cache), ler palavras consecutivas do disco rgido, procurar por uma nova posio no disco.  Se envolva no esforo de padronizao de uma linguagem. Pode ser o comit ANSI C++, ou na padronizao de programao na sua empresa, se utilizaram edentao com 2 ou 4 espaos. Em qualquer caso, voc aprende o que outras pessoas gostam em uma linguagem, o quanto elas gostam e talvez um pouco do porque elas gostam.  Tenha o bom senso de cair fora desse processo de padronizao to rpido quanto possvel.
Figura 2.4 Layout Memria aps inicializao

Voc tem um material com a teoria necessria e um conjunto de atividades prticas, denominadas laboratrios. Todo o contedo corresponde ao que j definimos como JSE. O material no e no deve ser adotado como sua nica referncia para estudos da linguagem, a aquisio de livros ou leitura do tutorial oficial da Sun recomendado. Seu material est ordenado numa seqncia didtica que consideramos a mais adequada para o seu aprendizado. A cada exemplo ou exerccio apresentado em um captulo tentamos no utilizar recursos da linguagem que ainda no tenham sido apresentados no captulo corrente ou anterior. No entanto, sempre que possvel ns introduzimos vrios destes recursos em exemplos de cdigos com o objetivo de apresent-lo deliberadamente para voc ou simplesmente para simplificar o cdigo exemplo. Assim vamos apresentado algumas bibliotecas da linguagem, sem entrar em detalhes, para que voc v se familiarizando com uso das mesmas. 1.3.1 Convenes de Cdigo Os cdigos e exemplos apresentados neste material seguem as convenes de cdigo-fonte Java, sempre Figura 2.5 Layout Memria duas variveis referncia para o mesmo objeto que possvel, mas podem sofrer adaptaes para melhorar a impresso. Voc deve se familiarizar com essa conveno veja em http://www.oracle.com/technetwork/java/codeconv-138413.html

//criando alias Este curso novo abordado de forma bastante prtica, ou seja, construindo programas com a linguagem de Carro carro2 = carro1; programao o mximo possvel durante o treinamento.

1.3

O curso

Cada objeto criado dever ter sua prpria instncia de variveis Os valores das variveis 1.3.2 Sobre os exerccios (atributos) definidas pela classe. Os mtodos definem o comportamento de um em um objeto constituem No curso Java e Orientao a Objetos, recomendado estudar em casa aquilo que foi visto durante a aula, objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da o seu estado . fazendo os exerccios que no foram feitos ou refazendo os que j foram feitos em sala. classe. Porm no devemos confundir isto com a implementao do mtodo, que Dois objetos tm Os laboratrios devero ser resolvidos durante o treinamento com objetivo de exercitar a distintos linguagem de compartilhada por todas as instncias da classe. programao e no a sua capacidade de programar. Contudo eles apresentam uma pequena aplicao ser o mesmo estado que se suas completada ao final de todos os laboratrios. variveis membro tm os 2.3.1 Invocao de Mtodos Durante a execuo de um laboratrio o mesmo pode necessitar de listagem demesmos cdigos que j foram valores. Objetos se comunicam pela troca de mensagens, isto significa que um construdos nos laboratrios anteriores, portanto no deixe de fazer o exerccio do laboratrio, especialmente as objeto que pode ter que mostrar comportamento particular invocando uma estimada e o instrutor dever tarefas forem indicadas paraum voc fazer. Os laboratrios possuem uma durao operao apropriada que foi definida no objeto. Em Java, isto feito pela do curso, se sentir dificuldade segui-la a fim de concluir os laboratrios com sucesso. No atrase o andamento chamada de um mtodo em um objeto usando o operador binrio "." (ponto) , chame o instrutor. devendo especificar a mensagem completa: o objeto que o recebedor da mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). 1.4 Fazer Laboratrio 0 O mtodo invocado no recebedor pode enviar informaes dede volta ao Siga instrues do Laboratrio 0tambm e tome cuidado com o tempo execuo, sempre recorra ao instrutor objeto chamador atravs de um valor de retorno . O mtodo chamado deve ser em caso de dvida, nunca deixe uma dvida sem reposta. um que esteja definido pelo objeto.
os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br

2.3

Membros de Instncia

12 6

Linguagem Linguagem de deProgramao ProgramaoJava Java

//atribuindo valor nossa a varivel Antes de comearmos jornada referncia no mundo da programao em Carro carro1 = new Carro(); Java, importante compreendermos a terminologia bsica e os conceitos em carro1.ano = "2001"; programao orientada a objetos. Neste captulo veremos os princpios bsicos carro1.modelo= "fusca"; da programao em Java aprofundamento dos temas, que sero revistos carro1.cor = sem "prata";

Bases da Programao em Java

com maior profundidade nos captulos subseqentes.

Abstraes so o fundamento utilizado por ns, seres humanos, a fim de lidar com a complexidade. Uma abstrao demonstra o comportamento e propriedades essenciais de um objeto, que o diferencia de outro objeto qualquer. Por exemplo, ao utilizar um carro, voc no pensa nele como um conjunto de dezenas de milhares de peas individuais. Pensamos em um carro como um nico objeto sobre qual podemos realizar um determinado conjunto de operaes. Essa abstrao permite que as pessoas utilizem um carro sem nenhum conhecimento sobre mecnica de automveis. Podemos ignorar os detalhes do motor como: Figura 2.4 Layout Memria aps inicializao sistema de injeo de combustveis, transmisso, sistema de freios funcionam //criando novo alias individualmente ou em conjunto. Ao invs disso, utilizamos o objeto automvel como um elemento nico. Carro carro2 = carro1; A essncia da Programao Orientada a Objetos (POO) consiste modelar as abstraes usando Classes e Objetos. A parte difcil deste trabalho encontrar a abstrao mais correta. Uma Classe modela uma abstrao pela definio das Um Objeto qualquer propriedades e comportamentos dos objetos representados pela abstrao. Uma coisa criada a partir dessa Classe, ento, especifica a categoria dos Objetos e funciona como uma "planta Classe, algo contendo as baixa" na criao desses objetos. Um Objeto qualquer coisa criada a partir dessa propriedades e Classe, algo contendo as propriedades e comportamentos definidos na Classe. comportamentos Voltando ao exemplo do carro, um grupo de engenheiros mecnicos criam o definidos na Classe. projeto de um carro (a Classe) e a partir deste projeto so reproduzidos milhares de automveis (os Objetos), praticamente idnticos entre si. Propriedades de um Objeto da Classe so chamados de atributos e so definidos usando variveis em Java, tambm denominado Campos da Classe. O comportamento de um Objeto, tambm conhecido por operaes, so definidos usando-se mtodos em Java. referncia Variveis eo mtodos utilizados na definio da classe Figura 2.5 Layout Memria duas variveis para mesmo objeto so, juntos, denominados de Membros da Classe. Usando notao de Classe da UML (Unified Modeling Language), podemos descrever graficamente o exemplo de uma classe Carro, ver Figura 2.1. 2.3 Membros de Instncia Ambos ter atributos (variveis) e mtodos so mostrados na forma expandida na Cada objeto criado dever sua prpria instncia de variveis Os valores das variveis Figura 2.1 . (atributos) definidas pela classe. Os mtodos definem o comportamento de um

2.1

Classes

A essncia da Programao Orientada a Objetos (POO) consiste em modelar as abstraes usando Classes e Objetos.

objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da classe. Porm no devemos confundir isto com a implementao do mtodo, que compartilhada por todas as instncias da classe.

2.3.1 Invocao de Mtodos Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operao apropriada que foi definida no objeto. Em Java, isto feito pela chamada de um mtodo em um objeto usando o operador binrio "." (ponto), devendo especificar a mensagem completa: o objeto que o recebedor da mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). O mtodo invocado no recebedor pode tambm enviar informaes de volta ao Figura 2.1 Notao UML para Classe objeto chamador atravs de um valor de retorno. O mtodo chamado deve ser um que esteja definido pelo objeto.
Seja Todos um Profissional Aprendendo com Profissionais os direitos reservados a 3Way Networks www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br

em um objeto constituem o seu estado. Dois objetos distintos tm o mesmo estado se suas variveis membro tm os mesmos valores.

12 7

Linguagem Linguagem de de Programao Programao Java Java


2.1.1 Declarando Membros: Variveis e Mtodos Na Listagem 2.1 mostra implementao em Java da definio da classe mostrada na Figura 2.1. O //atribuindo valor a avarivel referncia Carro carro1 = preocupar new Carro(); exemplo, apesar de no se com a utilidade desta implementao, mostra as principais caractersticas da carro1.ano = "2001"; definio de uma classe em Java.
carro1.modelo= "fusca"; carro1.cor "prata"; public class = Carro { // nome da classe
// Variaveis private String private String private String private String cor; ano; modelo; nome;

// Constructor public Carro() { modelo = "2000"; } // Mtodos public String acelerar() Figura 2.4 { Layout Memria aps inicializao return "acelerando !"; //criando novo alias } Carro carro2 carro1; public = String frear() { return "freando !"; } public String abrirPorta() { return "abre porta !"; } }
Listagem 2.1 Elementos Bsicos da Definio de uma Classe

A classe possui quatro variveis, toda varivel em Java deve ter um tipo, neste caso todas so do tipo String (linhas 4 a 7), possui trs mtodos (linhas 13 a 15) representado as operaes disponveis aos objetos da classe e um mtodo especial (linha 10) com o mesmo nome da classe, este mtodo denominado construtor e seu propsito inicializar o objeto quando este criado a partir da classe. String uma classe em Java, ela armazena um conjunto de caracteres. Figura 2.5 Layout Memria duas variveis referncia para o mesmo objetodetalharemos a classe String Como estamos aprendendo o que uma classe, posteriormente. Um Objeto instncia de

Cada objeto criado dever ter prpria instncia variveis valores das variveisa Umsua objeto uma instncia de de uma classe. EleOs construdo usando-se (atributos) definidas pela classe.classe, Os mtodos definem o comportamento de um da mesma maneira que usamos uma "planta em baixa" construir uma um para objeto constituem objeto. Isto importante, pois denota um mtodo pertence a cadaque objeto da representa; casa, que uma entidade real da abstrao a classe usando o exemplo o seu estado . classe. Porm no devemos confundir isto com implementao do mtodo, que criado a partir do projeto dos do carro, uma ainstncia representa um veculo Dois objetos distintos tm compartilhada por todas as instncias da classe. engenheiros mecnicos. Um objeto deve ser explicitamente criadoestado a partirse de uma o mesmo suas classe antes que possa ser utilizado em um variveis membro tm os 2.3.1 Invocao de Mtodos programa. mesmos da valores. O propsito chamada Objetos se comunicam pela troca de mensagens, isto significa que um objeto ter de que mostrar um comportamento particular invocando uma ao construtor inicializar 2.2.1 pode Instncia Classes operao Em apropriada que so foi manipulados definida no atravs objeto. de Em Java, istode objetos feito pela Java, objetos referncias (ou o objeto que est sendo chamada de um mtodo em um objeto usando o operador binrio "." (ponto) , simplesmente referncia). O processo de criao de um objeto normalmente criado. devendo especificar a mensagem completa: o objeto que o recebedor da envolve os seguintes passos: mensagem, o mtodo a ser invocado os argumentos paracorresponde o mtodo (se Declarao de uma varivele de referncia: isto a houver). declarar O mtodo invocado no recebedor pode tambm para enviar informaes de volta ao uma varivel de uma classe apropriada armazenar a referncia ao objeto chamador atravs de um valor de retorno . O mtodo chamado deve ser objeto criado. um que esteja definido pelo objeto.
SejaTodos um Profissional Aprendendo com Profissionais os direitos reservados a 3Way Networks www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br

2.3

Membros de Instncia 2.2

uma Classe.

Objetos

10 12 8

Linguagem de Programao Java

//atribuindo valor a varivel referncia Carro carro1 = new Carro(); carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 Layout Memria aps inicializao

//criando novo alias Carro carro2 = carro1;

Figura 2.5 Layout Memria duas variveis referncia para o mesmo objeto

Cada objeto criado dever ter sua prpria instncia de variveis (atributos) definidas pela classe. Os mtodos definem o comportamento de um objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da classe. Porm no devemos confundir isto com a implementao do mtodo, que compartilhada por todas as instncias da classe. 2.3.1 Invocao de Mtodos Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operao apropriada que foi definida no objeto. Em Java, isto feito pela chamada de um mtodo em um objeto usando o operador binrio "." (ponto), devendo especificar a mensagem completa: o objeto que o recebedor da mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). O mtodo invocado no recebedor pode tambm enviar informaes de volta ao objeto chamador atravs de um valor de retorno. O mtodo chamado deve ser um que esteja definido pelo objeto.
Todos os direitos reservados a 3Way Networks

2.3

Membros de Instncia

Os valores das variveis em um objeto constituem o seu estado. Dois objetos distintos tm o mesmo estado se suas variveis membro tm os mesmos valores.

Seja um Profissional Aprendendo com Profissionais www.3way.com.br

12 9

Linguagem Linguagem de de Programao Programao Java Java


//declaracao de duas variaveis referncia que denota dois //objetos distintos, nomeando dois objetos carro respectivamente //atribuindo valor a varivel referncia Carro Carro carro1, carro1 =carro2; new Carro();

carro1.ano = "2001"; Criao do Objeto:"fusca"; para criar o objeto fazemos uso do operador new, juntamente com a chamada do carro1.modelo= carro1.cor = "prata"; construtor da classe, assim criamos uma instncia da classe.
//criacao de dois Objetos distintos carro1 = new Carro(); carro2 = new Carro();

O operador new retorna a referncia da nova instncia de uma classe Carro. Esta referncia pode ser atribuda a uma varivel de referncia da classe apropriada. Cada objeto tem uma identidade nica e sua prpria cpia das variveis (atributos) declarados na definio da classe, ou seja, os dois objetos carro, referenciados por carro1 e carro2 tm sua prpria cpia das variveis: cor, ano, modelo, nome. A declarao e instanciao tambm podem ser combinadas:
Figura 2.4 Layout Memria aps inicializao Carro carro1 = new Carro(), carro2 = new Carro(); //criando novo alias Carro carro2 = carro1;

Figura 2.2 Instncias da Classe em UML

A Figura 2.2 mostra a notao UML para classe e objetos. A representao grfica de um objeto muito parecida com a de um classe. Figura 2.5 Layout Memria duas variveis referncia para o mesmo objeto 2.2.2 Referncia de Objetos Com j foi observado, uma referncia nos permite manipular objetos que foram criados e armazenados na 2.3 Membros de Instncia memria Cada do computador. Em Java, objetos podem ser utilizados a partir de uma referncia que est armazenada objeto criado dever terssua prpria instncia de variveis Os valores das variveis em uma varivel. Um objeto pode ter vrias referncias, tambm chamadas . O objeto pode ser (atributos) definidas pela classe. Os mtodos definem o comportamento de um de aliases em um objeto constituem manipulado por qualquer um desses aliases . objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da

classe. Porm no devemos confundir isto com a implementao do mtodo, que //declaracao compartilhada por todas as instncias da classe. Carro carro1;

2.3.1 Invocao de Mtodos Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operao apropriada que foi definida no objeto. Em Java, isto feito pela chamada de um mtodo em um objeto usando o operador binrio "." (ponto), devendo especificar a mensagem completa: o objeto que o recebedor da mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). O mtodo invocado no recebedor pode tambm enviar informaes de volta ao objeto chamador atravs de um valor de retorno. O mtodo chamado deve ser um que esteja definido pelo objeto. Figura 2.3 Layout Memria aps declarao
Seja Seja um um Profissional Profissional Aprendendo Aprendendo com com Profissionais Profissionais www.3way.com.br www.3way.com.br
Todos os direitos reservados a 3Way Networks

o seu estado. Dois objetos distintos tm o mesmo estado se suas variveis membro tm os mesmos valores.

12 10

11

Linguagem Java Linguagem de de Programao Programao Java

//atribuindo //atribuindo valor valor a a varivel varivel referncia referncia Carro Carro carro1 carro1 = = new new Carro(); Carro(); carro1.ano = carro1.ano = "2001"; "2001"; carro1.modelo= carro1.modelo= "fusca"; "fusca"; carro1.cor = carro1.cor = "prata"; "prata";

Figura Layout Figura 2.4 2.4 Layout Memria Memria aps aps inicializao inicializao

//criando //criando novo novo Carro Carro carro2 carro2 = =

alias alias carro1; carro1;

Figura Layout Figura 2.5 2.5 Layout Memria Memria duas duas variveis variveis referncia referncia para para o o mesmo mesmo objeto objeto

Cada Cada objeto objeto criado criado dever dever ter ter sua sua prpria prpria instncia instncia de de variveis variveis (atributos) definidas pela classe. Os mtodos definem o comportamento de um um (atributos) definidas pela classe. Os mtodos definem o comportamento de objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da classe. Porm Porm no no devemos devemos confundir confundir isto isto com com a a implementao implementao do do mtodo, mtodo, que que classe. compartilhada por todas as instncias da classe. compartilhada por todas as instncias da classe. 2.3.1 Invocao Invocao de de Mtodos Mtodos 2.3.1 Objetos se se comunicam comunicam pela pela troca troca de de mensagens, mensagens, isto isto significa significa que que um um Objetos objeto pode ter que mostrar um comportamento particular invocando uma objeto pode ter que mostrar um comportamento particular invocando uma operao apropriada apropriada que que foi foi definida definida no no objeto. objeto. Em Em Java, Java, isto isto feito feito pela pela operao chamada de um mtodo em um objeto usando o operador binrio "." (ponto) , chamada de um mtodo em um objeto usando o operador binrio "." (ponto), devendo especificar especificar a a mensagem mensagem completa: completa: o o objeto objeto que que o o recebedor recebedor da da devendo mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). O mtodo mtodo invocado invocado no no recebedor recebedor pode pode tambm tambm enviar enviar informaes informaes de de volta volta ao ao O objeto chamador chamador atravs atravs de de um um valor valor de de retorno retorno. .O O mtodo mtodo chamado chamado deve deve ser ser objeto um que esteja definido pelo objeto. um que esteja definido pelo objeto.
Seja Seja um um Profissional Profissional Aprendendo Aprendendo com com Profissionais Profissionais www.3way.com.br www.3way.com.br
Todos os direitos reservados a 3Way Networks

2.3 2.3

Membros de de Instncia Instncia Membros

Os Os valores valores das das variveis variveis em um objeto constituem em um objeto constituem o . o seu seu estado estado. Dois objetos objetos distintos distintos tm tm Dois o o mesmo mesmo estado estado se se suas suas variveis membro tm variveis membro tm os os mesmos valores. mesmos valores.

12 11

12

Linguagem Linguagem de de Programao Programao Java Java


//declaracao Carro carro = new Carro(); //atribuindo valor a varivel referncia Carro carro1 = new Carro(); //invocando mtodo carro1.ano = "2001"; String retorno=carro.acelerar(); carro1.modelo= "fusca"; carro1.cor = "prata"; //A sentena a baixo causa erro compilao, //mtodo no est definido no obejeto invocador carro.print();

Em Java a chamada de um mtodo feito usando o operador binrio "." (ponto).

2.3.1.1 Chamando Mtodos de Objeto Para ilustrar como chamar os mtodos, utilizaremos como exemplo a classe String. Pode-se usar a documentao da API Java para conhecer todos os atributos e mtodos disponveis na classe String. Posteriormente, iremos criar nossos prprios mtodos. Para chamar um mtodo a partir de um objeto, escrevemos o seguinte:
nomeDoObjeto.nomeDoMtodo([argumentos]); Figura 2.4 Layout Memria aps inicializao

//criando novo alias Vamos pegar dois mtodos encontrados na classe String como exemplo: Carro carro2 = carro1;

Declarao do mtodo

Definio Retorna o caractere especificado no ndice. Um ndice vai de 0 at length() - 1. O primeiro caractere da seqncia est no ndice 0, o seguinte, no ndice 1, e assim sucessivamente por todo o array. Compara o contedo de duas Strings, ignorando maisculas e minsculas. Duas strings so consideradas iguais quando elas tm o mesmo tamanho e os caracteres das duas strings so iguais, sem considerar caixa alta ou baixa.

public char charAt(int index)

public boolean equalsIgnoreCase (String outraString)

Figura 2.5 Layout Memria duas variveis referncia para o mesmo objeto Tabela 4: Exemplos de Mtodos da classe String

Usando os mtodos:
Stringcriado str1 dever = "Hello"; Cada objeto ter sua prpria instncia de variveis Os valores das variveis char x = str1.charAt(0); (atributos) definidas pela classe. Os mtodos definem o comportamento de um em um objeto constituem // retornar o caracter H e o armazenar no atributo x objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da o seu estado. String str2 = "hello"; classe. Porm no devemos confundir isto com a implementao do mtodo, que Dois objetos distintos tm retornado o valor booleano true compartilhada// poraqui todas ser as instncias da classe. boolean result = str1.equalsIgnoreCase(str2);

2.3

Membros de Instncia

2.3.1 Invocao de Mtodos 2.3.2 Envio de Argumentos para Mtodos Objetos se comunicam pela troca de mensagens, isto significa que um Em exemplos anteriores, enviamos atributos para invocando os mtodos. objeto pode ter que mostrar um comportamento particular uma Entretanto, no fizemos nenhuma distino entre os diferentes tipos operao apropriada que foi definida no objeto. Em Java, isto de atributos feito pela que podem ser enviados como argumento para os o mtodos. chamada de um mtodo em um objeto usando operador binrio "." (ponto),

H duas formas para se o mesmo estado se suas enviar argumentos paraos variveis membro tm um mtodo, o primeiro mesmos valores. envio por valor e o segundo envio por referncia.

devendo especificar a mensagem completa: o objeto que o recebedor da 2.3.2.1 Passagem deaParmetros por valor mensagem, o mtodo ser invocado e os argumentos para o mtodo (se houver). Quando ocorre uma passagem valor,enviar a chamada do mtodo faz uma O mtodo invocado no recebedor pode por tambm informaes de volta ao cpia do valor do atributo e o envia como argumento. O mtodo chamado no modifica o valor original do argumento mesmo que estes valores objeto chamador atravs de um valor de retorno. O mtodo chamado deve ser sejam modificados durante operaes de clculo implementadas pelo mtodo. um que esteja definido pelo objeto. Por exemplo:
Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br
Todos os direitos reservados a 3Way Networks

12 12

13

Linguagem de Programao Java

//atribuindo valor a varivel referncia Carro carro1 = new Carro(); carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 Layout Memria aps inicializao

//criando novo alias Carro carro2 = carro1;

Figura 2.5 Layout Memria duas variveis referncia para o mesmo objeto

Cada objeto criado dever ter sua prpria instncia de variveis (atributos) definidas pela classe. Os mtodos definem o comportamento de um objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da classe. Porm no devemos confundir isto com a implementao do mtodo, que compartilhada por todas as instncias da classe. 2.3.1 Invocao de Mtodos Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operao apropriada que foi definida no objeto. Em Java, isto feito pela chamada de um mtodo em um objeto usando o operador binrio "." (ponto), devendo especificar a mensagem completa: o objeto que o recebedor da mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). O mtodo invocado no recebedor pode tambm enviar informaes de volta ao objeto chamador atravs de um valor de retorno. O mtodo chamado deve ser um que esteja definido pelo objeto.
Todos os direitos reservados a 3Way Networks

2.3

Membros de Instncia

Os valores das variveis em um objeto constituem o seu estado. Dois objetos distintos tm o mesmo estado se suas variveis membro tm os mesmos valores.

Seja um Profissional Aprendendo com Profissionais www.3way.com.br

12 13

Linguagem de Linguagem de Programao Programao Java Java

public classvalor PassagemPorValor { //atribuindo a varivel referncia Carro carro1 = new Carro(); public = static void main(String[] args) { carro1.ano "2001"; int i = 10; carro1.modelo= "fusca"; o valor de i carro1.cor // = exibe "prata"; System.out.println(i); // chama o mtodo teste // envia i para o mtodo teste teste(i);---------------------------------------+ // exibe o valor de i no modificado | +---------->System.out.println(i); | | } | | public static void teste(int j) { <------------------+ | // muda o valor do argumento +---------j = 33; } }
2.2 Passagem porinicializao valor FiguraListagem 2.4 Layout Memria aps

copiado para o atributo j do mtodo. J que j o atributo modificado no mtodo teste(), no afetar o valor do atributo i, o que significa uma cpia diferente do atributo. Como padro, todo tipo primitivo, quando enviado para um mtodo, utiliza a forma de envio por valor. Passagem de Parmetros por referncia Quando ocorre um envio por referncia, a referncia de um objeto enviada para o mtodo chamado. Isto significa que o mtodo faz uma cpia da referncia do objeto enviado. Entretanto, diferentemente do que ocorre no envio por valor, o mtodo pode modificar o objeto para o qual a referncia est apontando. Mesmo que diferentes referncias sejam usadas nos mtodos, a localizao do dado para o qual ela aponta a mesma. Veja prximo exemplo, Listagem 2.3:
public class PassagemPorReferencia {

//criando novo alias Carro carro2 = o carro1; No exemplo dado, mtodo teste() foi chamado e o valor de i foi enviado como argumento. O valor de i

2.3.2.2

Figuravoid 2.5 Layout Memria duas variveis referncia public static main(String[] args) { para o mesmo objeto // criar um array de inteiros int[] idades = { 10, 11, 12 }; exibir os valores do array 2.3 Membros de // Instncia for (int i = 0; i < idades.length; i++) { Cada objeto criado dever ter sua prpria instncia de variveis Os valores das variveis System.out.println(idades[i]); (atributos) definidas pela } classe. Os mtodos definem o comportamento de um em um objeto constituem //pois chamar o que mtodo testepertence e enviar a objeto da objeto. Isto importante, denota um mtodo a cada o seu estado. // referncia array classe. Porm no devemos confundir isto para com a o implementao do mtodo, que Dois objetos distintos tm +----------teste(idades); compartilhada por todas as instncias da classe. | // exibir os valores do array o mesmo estado se suas | for (int i = 0; i < idades.length; i++) { variveis membro tm os 2.3.1 Invocao de Mtodos | System.out.println(idades[i]);<----------------------+ mesmos valores. | | Objetos se comunicam}pela troca de mensagens, isto significa que um | } | objeto pode ter que mostrar um comportamento particular invocando uma +---->public static void teste(int[] arr) { | operao apropriada que foi definida no objeto. Em Java, isto feito pela // mudar os valores do array | chamada de um mtodo em(um usando operador binrio "." { (ponto), for intobjeto i = 0; i < o arr.length; i++) | devendo especificar a mensagem completa: objeto que o recebedor da arr[i] = i +o 50;-------------------------------+ mensagem, o mtodo a } ser invocado e os argumentos para o mtodo (se houver). } O mtodo invocado no recebedor pode tambm enviar informaes de volta ao } objeto chamador atravs de um valor de retorno. O mtodo chamado deve ser

um que esteja definido pelo objeto.

Listagem 2.3 Passagem por "referncia"


Todos os direitos reservados a 3Way Networks

Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br

12 14

14

Linguagem Linguagem de de Programao Programao Java Java


A Figura 2.3 ilustra o resultado da execuo do cdigo na Listagem 2.3:
//atribuindo valor a varivel referncia Carro carro1 = new Carro(); carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 Layout Memria aps inicializao

//criando novo alias Carro carro2 = carro1;


Figura 2.6 - Exemplo de Envio por referncia

H casos em que voc precisar que alguns atributos sejam compartilhados por todos os objetos de uma classe em particular, ou seja, esses atributos devem pertencer somente Classe e no aos objetos criados a partir dessa classe. Por exemplo, imagine que voc queira manter um controle de quantos objetos de uma classe foram criados e permitir que cada objetos consiga recuperar esta informao. Definir um contador como uma varivel de instncia na definio da classe no resolveria o problema, pois j sabemos que so criadas cpias desta varivel para cada objeto criado a partir da definio de uma classe. Ento como resolver o problema? A soluo usar variveis estticas - usar a palavra chave static antes da declarao da varivel. Uma varivel esttica inicializada quando a classe carregada em tempo de execuo. De forma similar, os mtodos tambm podem ser estticos. Figura 2.5 Layout Memria duas variveis referncia para o mesmo objeto

2.4

Membros Estticos

Cada objeto criado dever ter sua prpria instncia de variveis (atributos) definidas pela classe. Os mtodos definem o comportamento de um objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da classe. Porm no devemos confundir isto com a implementao do mtodo, que compartilhada por todas as instncias da classe.

2.3

Membros de Instncia

2.3.1 Invocao de Mtodos Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operao apropriada que foi definida no objeto. Em Java, isto feito pela chamada de um mtodo em um objeto usando o mostrando operador binrio "." (ponto) , Figura 2.7 Diagrama Classe definio de membros estticos devendo especificar a mensagem completa: o objeto que o recebedor da mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). A Figura 2.7 mostra a redefinio da classe Carro que foi acrescentado dois membros estticos, ou O mtodo invocado no recebedor pode tambm enviar informaes de volta ao membros da classe, marcado sublinhado abaixo do nome, conforme notao definida na UML. Em sua objeto chamador atravs de um valor de retorno. O mtodo chamado deve ser implementao usamos a palavra reservada static como mostrado na Listagem 2.4 abaixo: um que esteja definido pelo objeto.
os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br

Os valores das variveis em um objeto constituem o seu estado. Dois objetos distintos tm o mesmo estado se suas variveis membro tm os mesmos valores.

12 15

15

Linguagem Programao Java Linguagemde de Programao Java


public class Carro { // Variveis de Instncia //atribuindo valor a varivel referncia String modelo; Carro carro1 = new Carro(); String cor; carro1.ano = "2001"; String ano; carro1.modelo= "fusca"; // declarao varivel esttica carro1.cor = "prata"; static int contador; // 1 // construtor modificado para incrementar o contador // para cada objeto criado public Carro() { // 2 contador = contador + 1; } // Mtodos de Instncia public String acelerar() { return "acelerando !"; } public String frear() {2.4 Layout Memria aps inicializao Figura return "freando !"; //criando novo alias } Carro carro2 = carro1; public String abrirPorta() { return "abre porta !"; } // Mtodo Esttico //3 static int getContadorInstancia() { return contador; } }
Listagem 2.4 Exemplo de membros de classe

Temos acesso aos membros estticos de uma classe usando diretamente o nome da classe seguido do operador ponto (.), no precisamos de uma instncia.

A varivel esttica contador declarada em (1, linha 7), ela ser alocada e inicializada por padro com o valor 0 (zero) quando a classe for carregada. Toda vez que um objeto Carro for criado o construtor da classe em (2, linha 10) ser executado. Figura O construtor incrementa explicitamente o contador da classe. O mtodo 2.5 Layout Memria duas variveis referncia para o mesmo objeto getContadorInstancia() em (3, linha 18) esttico e um mtodo da classe, ele retorna o valor do contador quando for invocado. O cdigo seguinte invoca o mtodo getContadorInstancia() da classe Carro: 2.3 Membros de Instncia

Cada objeto criado dever ter sua prpria instncia de variveis Os valores das variveis //Nome da classe invoca mtodo estatico (atributos) definidas pela classe. Os mtodos definem o comportamento de um em um objeto constituem int retorno = Carro.getContadorInstancia(); objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da o seu estado. classe. Porm no devemos confundir isto com a implementao do mtodo, que da classe: Membros estticos tambm podem ser acessados via referncia para objetos Dois objetos distintos tm compartilhada por todas as instncias da classe. 2.3.1
//Referencia de objeto invoca mtodo estatico Carro carro1 = new Carro(); Invocao de Mtodos int retorno = carro1.getContadorInstancia(); Objetos se comunicam pela troca de mensagens, isto significa que um

o mesmo estado se suas variveis membro tm os mesmos valores.

objeto pode ter que mostrar um comportamento particular invocando uma Note que membros de classe podem acessados tantoisto pelo nome classe quanto pela referncia de operao apropriada que foi definida no ser objeto. Em Java, feitoda pela objetos da classe, porm membros de instncia s so acessveis via referncia de objetos da classe. chamada de um mtodo em um objeto usando o operador binrio "." (ponto) , devendo especificar a mensagem completa: o objeto que o recebedor da 2.5 Herana - Relacionamentos do tipo "-um" mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). Voc dispem dois mecanismos fundamentais afim de se de construir novas classes a partir de classes O mtodo invocado no de recebedor pode tambm enviar informaes volta ao existentes: herana e agregao . Faz todo construir nossa classe Carro todas as caractersticas de objeto chamador atravs de um valor desentido retorno . O mtodo chamado deveherdando ser uma classe Veculo que j exista, uma vez que um Carro um Veculo . Mas um Veculo constitudo de diversas um que esteja definido pelo objeto.
Seja um Profissional Aprendendo comNetworks Profissionais Todos os direitos reservados a 3Way www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br

16 12 16

Linguagem de Programao Java

//atribuindo valor a varivel referncia Carro carro1 = new Carro(); carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 Layout Memria aps inicializao

//criando novo alias Carro carro2 = carro1;

Figura 2.5 Layout Memria duas variveis referncia para o mesmo objeto

Cada objeto criado dever ter sua prpria instncia de variveis (atributos) definidas pela classe. Os mtodos definem o comportamento de um objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da classe. Porm no devemos confundir isto com a implementao do mtodo, que compartilhada por todas as instncias da classe. 2.3.1 Invocao de Mtodos Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operao apropriada que foi definida no objeto. Em Java, isto feito pela chamada de um mtodo em um objeto usando o operador binrio "." (ponto), devendo especificar a mensagem completa: o objeto que o recebedor da mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). O mtodo invocado no recebedor pode tambm enviar informaes de volta ao objeto chamador atravs de um valor de retorno. O mtodo chamado deve ser um que esteja definido pelo objeto.
Todos os direitos reservados a 3Way Networks

2.3

Membros de Instncia

Os valores das variveis em um objeto constituem o seu estado. Dois objetos distintos tm o mesmo estado se suas variveis membro tm os mesmos valores.

Seja um Profissional Aprendendo com Profissionais www.3way.com.br

12 17

Linguagem Linguagem de de Programao Programao Java Java


partes, ento poderamos construir nossa classe Veculo pela agregao de outros objetos que constituem um veculo, //atribuindo assim podemos dizer quea um Veculo tem um Motor, tem um Chassi e tem uma Carroceria. valor varivel referncia Carro carro1 = new Carro(); A Figura 2.7 mostra a relao entre as classes Veculo e Carro, ela mostra que um Carro -UM Veculo, a carro1.ano = "2001"; classe Veculo denominada Superclasse enquanto a classe Carro chamada de Subclasse. A classe Veculo uma carro1.modelo= "fusca"; generalizao para todo Carro (neste caso veculos motorizados), enquanto a classe Carro representa a carro1.cor = "prata"; especializao da classe Veculo, ou seja um tipo particular de veculo.

Figura 2.8 Diagrama de Classe descrevendo a relao de Herana

Em Java, essa relao representada pela palavra-chave extends. Uma subclasse s pode estender novo alias (herdar)//criando somente uma nica superclasse. A listagem 2.4 de cdigo demonstra o uso de extends para criar a Carro carro2 = carro1; subclasse Carro a partir da superclasse Veculo.
class Veiculo { // nome da classe

Figura 2.4 Layout Memria aps inicializao

// (1)Variaveis private String cor; private String ano; private String modelo; private String nome; // (2) Constructor public Veiculo() { modelo="2000" }; // (3) public public public } Mtodos String acelerar() { return "acelerando !"; } String { return "freando !"; } objeto Figurafrear() 2.5 Layout Memria duas variveis referncia para o mesmo String abrirPorta() { return "abre porta !"; }

Os valores das variveis em um objeto constituem Listagem 2.5 pertence Exemplo Herana objeto. Isto importante, pois denota que um mtodo a cada objeto da o seu estado. classe. Porm no devemos confundir isto com a implementao do mtodo, que Dois objetos distintos tm compartilhada por todasmuito as instncias da classe. No se preocupe neste momento em compreender qual relao dever ser utilizadaestado para criar suas o mesmo se suas classes, foque na terminologia e nas palavras-chave que esto sendo apresentadas. variveis membro tm os 2.3.1 Invocao de Mtodos mesmos valores. Objetos se comunicam pela troca de mensagens, isto significa que um

class Carro extends Veiculo { Membros de Instncia // declarao de Variveis e Mtodos da nova classe Cada objeto criado dever ter sua prpria instncia de variveis } (atributos) definidas pela classe. Os mtodos definem o comportamento de um

2.3

objeto pode ter que mostrar umclasses comportamento particular invocando uma Voc pode construir novas de objetos por agregao de objetos j existentes, o objeto agregado operao apropriada que foi definida no objeto. Em Java, isto feito pela constitudo de outros objetos. chamadaJava de um mtodo o em um objeto usando ode operador "." , implementa conceito de agregao objetos binrio pelo uso da(ponto) referncia. Objetos em Java no podem devendo especificar mensagem completa: o objeto que conter o recebedor da conter outros objetos a explicitamente. Objetos somente podero variveis de tipos primitivos e referncias a mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). outros objetos. O mtodo invocado tambm enviar informaes de volta ao Uma relaono derecebedor agregao pode demonstrada na Figura 2.8, este diagrama UML informa que objetos da classe objeto chamador atravs de um valor de retorno . O mtodo chamado deve ser Veculo TEM-UM objeto da classe Motor associado a ela. um que esteja definido pelo objeto.
Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br
Todos os direitos reservados a 3Way Networks

2.6

Agregao - Relacionamentos do tipo "tem-um"

12 18

17

Linguagem Linguagem de de Programao Programao Java Java

//atribuindo valor a varivel referncia Carro carro1 = new Carro(); carro1.ano = "2001"; Figura 2.9 Diagrama de Classe descrevendo Agregao carro1.modelo= "fusca"; carro1.cor = "prata";

A listagem mostra a implementao da relao TEM-UM mostrada na Figura 2.9.


class Veiculo // nome da classe { // Agregao Motor motor1 = new Motor(); }

2.7

 Tudo em Java deve ser colocado dentro de uma classe; Figura 2.4 Layout Memria aps inicializao  H dois tipos de valores em Java: valores atmicos de tipos primitivos e valores de referncia; novo alias  //criando Referncias indicam objetos que so criados a partir de uma classe; Carro carro2 =ser carro1;  Objetos s podem manipulados via referncia;  Objetos em Java no podem conter outros Objetos, ele somente tem referncias para outros objetos;  Remoo de objetos gerida pelo sistema de tempo de execuo (runtime). Este processo conhecido 

Princpios de Programao Com Java

como Garbage Collection. Java faz distino entre nomes em MAISCULAS e minsculas, ou seja, CASE SENSITIVE.

Em Java, um arquivo de cdigo-fonte tem os elementos especificados na seguinte ordem:  A definio opcional de package para especificar o nome do pacote da classe. As classes e interfaces definidas em um arquivo fonte tornam-se parte deste pacote. Se omitida, as definies pertencem ao pacote default. Veremos mais sobre pacotes posteriormente.  Zero ou mais usos da sentena import. A sentena import ser discutida em detalhes posteriormente.  Qualquer nmero de definies de classes e interfaces. Tecnicamente um arquivo de cdigo-fonte em 2.5 qualquer Layout Memria duas variveis referncia para o mesmoExperimente objeto Java no precisaFigura conter definio, mas ele seria intil. compilar um arquivo fonte sem nenhuma definio. As classes e interfaces podem ser definidas em qualquer ordem. O compilador Java impe a restrio de somente uma classe com modificador public por arquivo, sendo que sede esta existir o nome do arquivo de cdigo-fonte deve ser nomeado obrigatoriamente com o 2.3 Membros Instncia nome da classe pblica. Cada objeto criado dever ter sua prpria instncia de variveis Os valores das variveis (atributos) definidas pela classe. Os mtodos definem o comportamento de um em um objeto constituem Veja 2.10 na prxima pgina, demonstrao da estrutura um arquivo de cdigo-fonte vlido. objeto. Isto Figura importante, pois denota que um mtodo pertence a cada de objeto da o seu estado. classe. Porm no devemos confundir isto com a implementao do mtodo, que // Nome do Arquivo: Aplicacao.java Dois objetos distintos tm compartilhada por todas as instncias da classe.

2.8

Estrutura de Arquivos Fontes em Java

2.3.1

objeto pode ter que mostrar um comportamento particular invocando uma //PARTE 2: (Zero ou Mais) operao apropriada que foi definida no objeto. Em Java, isto feito pela //Pacotes usados chamada de um mtodo em um objeto usando o operador binrio "." (ponto), import java.util.*; devendo especificar a mensagem completa: o objeto que o recebedor da import javax.swing.JOptionPane; mensagem, o mtodo a ser invocado e os argumentos para o mtodo (se houver). O mtodo invocado no recebedor pode tambm enviar informaes de volta ao //PATE 3: (Zero ou Mais) objeto chamador de um valor de retorno O mtodo chamado deve ser ordem) //atravs Definies de classes e . interfaces (em qualquer um que esteja definido pelo objeto.
public class Aplicacao {}
Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br
Todos os direitos reservados a 3Way Networks

//PARTE 1: (Opcional) //Nome Pacote Invocao de Mtodos package com.nomeempresa.projeto.nomepacote; Objetos se comunicam pela troca de mensagens, isto significa que um

o mesmo estado se suas variveis membro tm os mesmos valores.

12 19

18

Linguagem de de Programao Programao Java Linguagem Java


class C1{} interface I1{} //atribuindo valor a varivel referncia Carro carro1 // ...= new Carro(); carro1.ano = "2001"; class Cn{} carro1.modelo= "fusca"; interface In{} carro1.cor = "prata"; //fim arquivo
Figura 2.10 Estrutura do arquivo de cdigo-fonte

O interpretador Java executa uma chamada ao main() na classe especificada na linha de comando. Este o meio padro pelo qual aplicaes standalone so invocadas. O mtodo main() tem a seguinte assinatura:
public static void main(String [] args)

2.9

O mtodo main()

O comando java AlgumaClasse, resulta em uma chamada para o mtodo AlgumaClasse.main(). Assim qualquer classe pode ter um mtodo main() mas somente a classe especificada ao interpretador ser executada.
Figura 2.4 Layout Memria aps inicializao

novo alias 2.10 //criando Fazer Laboratrio 1

em caso de dvida, nunca deixe uma dvida sem reposta.

Carro carro2 = carro1; Siga instrues do Laboratrio 1 e tome cuidado com o tempo de execuo, sempre recorra ao instrutor

2.11 Exerccios

Escreva, compile e execute todas as listagens de cdigo apresentadas neste captulo.

Assim como outras linguagens, a linguagem de programao Java definida por uma regra gramatical, que especifica como construes sintaticamente legais podem ser formadas usando os elementos da linguagem, e por uma definio semntica que especifica o significado das construes sintaticamente corretas.

Identificadores, Palavras-chave e Tipos

Um programa deve ser documentado com comentrios e notas em lugares relevantes. Comentrios tem Figura 2.5 Layout Memria duas variveis referncia para o mesmo objeto como propsito a documentao, eles so ignorados pelo compilador. Para fazer um comentrio em Java, voc pode usar o // para comentar uma linha simples at o final, tudo aps o // ser ignorado pelo 2.3 Membros deser Instncia Um programa deve compilador: Cada objeto documentado pelacriado dever ter sua prpria instncia de variveis Os valores das variveis //isto comenta at o fim da linha (atributos) definidas pela classe. Os mtodos definem o comportamento de um insero de comentrios. em um objeto constituem objeto. Isto importante, pois denota que um mtodo pertence a cada objeto da o seu estado. ou ento usar o /* */ do para comentar classe. Porm no devemos confundir isto com a implementao mtodo, que Dois objetos distintos tm Comentrios Javadoc so mltiplas tudo o que estiver entre eles ser compartilhada por todas as instncias dalinhas, classe. o mesmo estado se suas usados para gerar uma ignorado pelo compilador. variveis membro tm os documentao HTML 2.3.1 Invocao de Mtodos valores. em paramesmos seus programas Objetos se comunicam /* pela troca de mensagens, isto significa que um Um comentrio Java. objeto pode ter que mostrar um comportamento particular invocando uma com varias linhas operao apropriada que foi definida no objeto. Em Java, isto feito pela */ chamada de um mtodo em um objeto usando o operador binrio "." (ponto), devendo especificar a mensagem completa: o objeto que o recebedor da mensagem,Voc o mtodo ser invocado e os argumentos para o mtodo (se houver). pode a criar comentrios Javadoc comeando-os com /** e O terminando-os mtodo invocado no recebedor pode tambm enviar informaes de que volta ao ao com */, funciona como o exemplo anterior s objeto chamador atravs de um valor de retorno . O mtodo chamado deve ser adicionarmos tags apropriadas (como @tag valor) podemos colocar mais um que esteja definido objeto. Por exemplo: informao em nossospelo comentrios.
Seja um Profissional Aprendendo com Profissionais Todos os direitos reservados a 3Way Networks www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br

3.1

Comentrios

19

12 20

Siga-nos tambm no Twitter! twitter.com/3waynet