programação orientada a objetos* criando classes em java

22
Programação Orientada a Objetos* Criando Classes em Java Prof. Isabel Cafezeiro [email protected] http://www.dcc.ic.uff.br/ ~isabel *Baseado no livro Introdução à Programação Orientada a Objetos usando JAVA – Rafael Santos –

Upload: carlos-eduardo-fernades

Post on 25-Jun-2015

286 views

Category:

Documents


4 download

DESCRIPTION

Programação Orientada a Objetos*Criando Classes em JavaProf. Isabel Cafezeiro [email protected]://www.dcc.ic.uff.br/~isabel*Baseado no livro Introdução à Programação Orientada a Objetos usando JAVA ² Rafael Santos ² Editora Campus ² Série SBCO ambiente de programaçãoJDK (Java Development Kit)http://java.sun.com http://java.sun.com/docs/books/tutorial Linux, Windows e outros Edição, Compilação e Execução de classes Editor de textos, Javac e Java (Jcreator: http://www.jcreator.com/

TRANSCRIPT

Page 1: Programação Orientada a Objetos* Criando Classes em Java

ProgramaçãoOrientada a Objetos*

Criando Classes em JavaProf. Isabel [email protected]://www.dcc.ic.uff.br/~isabel*Baseado no livro Introdução à Programação Orientada a Objetos usando JAVA – Rafael Santos – Editora Campus – Série SBC

Page 2: Programação Orientada a Objetos* Criando Classes em Java

O ambiente de programação

JDK (Java Development Kit)http://java.sun.com

http://java.sun.com/docs/books/tutorialLinux, Windows e outros

Edição, Compilação e Execução de classes

Editor de textos, Javac e Java

(Jcreator: http://www.jcreator.com/, wordpad)

Page 3: Programação Orientada a Objetos* Criando Classes em Java

O ambiente de programação

JDK (Java Development Kit)

javac ( compilador ) java ( interpretador )

appletviewer ( visualizador de applets ) javadoc ( gerador de documentação )

jar ( programa de compactação ) javap ( disassembler )

...

Page 4: Programação Orientada a Objetos* Criando Classes em Java

O processo de compilação/execução

Javac JavaA classe Java em arquivo com extensão .java

A classe pré-compilada (bytecode), em arquivo com extensão .class

interpretação do bytecode pela máquina virtual Java (JVM)

Page 5: Programação Orientada a Objetos* Criando Classes em Java

Classes em Java

Nome de classes:Acentos e cedilha são desaconselhados

(o compilador usa o nome das classes pra nomear arquivos)

Números podem aparecer após letra

$ e _ são considerados letra

Maiúsculas minúsculas

Há palavras reservadas

Recomenda-se:Iniciar nomes de classes com maiúsculas

Usar maiúsculas para separar palavras

ex: CadastroDeFuncionário

Uma classe por arquivo

Usar o mesmo nome para o arquivo (com extensão .java)

e para a classe

Page 6: Programação Orientada a Objetos* Criando Classes em Java

Classes em Java

/** * A classe Vazia não possui campos nem métodos, mas * mesmo assim pode ser usada para exemplificar as regras * sintáticas básicas de Java, podendo até mesmo ser * compilada.*/Class Vazia // esta é a declaração da classe!{

/* se houvessem campos ou métodos, eles deveriam ser declarados aqui. */

} // fim da classe VaziaVazia.java

Javadoc

Maiúscula?

Page 7: Programação Orientada a Objetos* Criando Classes em Java

Classes em Java

f:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vaziajavac: invalid flag: VaziaUsage: javac <options> <source files>where possible options include: -g Generate all debugging info

...f:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vazia.javaVazia.java:7: 'class' or 'interface' expectedClass Vazia // esta Ú a declaraþÒo da classe!^1 errorf:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vazia.javaf:\AULAS\POO>java VaziaException in thread "main" java.lang.NoSuchMethodError: mainf:\AULAS\POO>

Page 8: Programação Orientada a Objetos* Criando Classes em Java

Campos de classes em Java

Tipos Nativos:Nome do tipo Valores do tipo

boolean (true, false)

byte [-128,127]

short (dois bytes) [-32768,32767]

int (quatro bytes) [-2147483648,2147483647]

long (oito bytes)

char (dois bytes, Unicode [0,65535],operados como inteiros)

'a','b',...

float (ponto flutuante, 4bytes)

double (ponto flutuante, 8bytes)

Page 9: Programação Orientada a Objetos* Criando Classes em Java

Campos de classes em Java

Tipos Nativos:Nome do tipo Operações do tipo

boolean &&, ||, !

byte

short

int +,- (unário e binário),

long *,/,

char % (resto ),

float <,>,<=,>=,==,!=

double

Page 10: Programação Orientada a Objetos* Criando Classes em Java

Campos de classes em Java

Literais ........ quando atribuídas para variáveis dos tipos

de tamanhos específicos são automaticamente convertidas, desde que estejam no intervalo esperado

short umAno;

umAno = 32767;

umAno = 32768;

Literal inteira 32767 convertida para tipo short.

Erro de compilação: valor fora do intervalo.C:\>javac testedata.javatestedata.java:6: possible loss of precisionfound : intrequired: short umDia = 22; umMês = 13; umAno = 32768; ^1 error

Page 11: Programação Orientada a Objetos* Criando Classes em Java

Campos de classes em Java

Literais ....

.... quando passadas como argumentos devem ser explicitamente convertidas (operação cast)

n.inicializaData(umDia,umMês,32767);

n.inicializaData(umDia,umMês, (short) 32767);

Erro de compilação: Literal inteira 32767 onde é esperado tipo shortC:\>javac testedata.java

testedata.java:7: inicializaData(byte,byte,short) in Data cannot be applied to (byte,byte,int)n.inicializaData(umDia,umMês,32767); ^1 error

Page 12: Programação Orientada a Objetos* Criando Classes em Java

Campos de classes em Java

/** A classe DataSemMetodos contém somente alguns campos * que exemplificam as declarações de campos e tipos de dados em* Java.*/class DataSemMetodos {byte dia,mês; short ano; // o ano completo (quatro dígitos)

/* Se houvessem métodos para esta classe, eles seriam declarados aqui dentro. */

} // fim da classe DataSemMetodos

dataSemMetodos.java

Page 13: Programação Orientada a Objetos* Criando Classes em Java

Campos de classes em Java

Nomes de campos de classes:Acentos e cedilha podem ser usados sem restrição

Números podem aparecer após letra

_ e $ são considerados letra

Maiúsculas minúsculas

Há palavras reservadas

É possível declarar vários campos com o mesmo tipo (ou

classe) separando seus nomes por vírgulas

Recomenda-se:Iniciar nomes de campos de classes com minúsculas

Usar maiúsculas para separar palavras

ex: nomeDoAluno

Page 14: Programação Orientada a Objetos* Criando Classes em Java

Métodos em Java

Nomes de métodos:Mesmas regras que nomes de campos

Recomenda-se:Iniciar nomes de métodos com minúsculas

Usar maiúsculas para separar palavras

ex: mostraCampos, acende, inicializa

Forma geral da declaração:

modificador-de acesso tipo-ou-classe-de retorno nome-de-método ( lista-de-argumentos )

Page 15: Programação Orientada a Objetos* Criando Classes em Java

Métodos em Java/** Este método chama o método dataÉVálida para verificar se os * argumentos são correspondentes a uma data válida: se forem, * inicializa os campos, caso contrário zera todos os três campos. */ void inicializaDataSimples(byte d,byte m,short a) { if (dataÉVálida(d,m,a)) { dia = d; mês = m; ano = a; } else { dia = 0; mês = 0; ano = 0; } } // fim do método inicializaDataSimples

DataSimples.java

sem vírgula no final do método

tipo (classe) de retorno

lista de parâmetros

Page 16: Programação Orientada a Objetos* Criando Classes em Java

Métodos em Java/** Este método recebe uma instância da própria classe DataSimples como * argumento e verifica se a data representada pela classe e pela instância* passada é a mesma. A comparação é feita campo a campo.*/ boolean éIgual(DataSimples outraDataSimples) { if ((dia == outraDataSimples.dia) && (mês == outraDataSimples.mês) && (ano == outraDataSimples.ano)) return true; else return false; } // fim do método éIgual

DataSimples.java

método com retorno deve conter a palavra return no corpo

objeto passado como parâmetro

acesso aos campos do objeto

Page 17: Programação Orientada a Objetos* Criando Classes em Java

Escopo

Regras de Escopo: Determinam a visibilidade dos nomes

campos da classe são visíveis em toda classedesconsidera-se ordem e localização

variáveis e instâncias declaradas dentro de métodos são visíveis no próprio método

considera-se ordem e localização

argumentos de métodos são visíveis no próprio método

Page 18: Programação Orientada a Objetos* Criando Classes em Java

Escopo/** A classe Triangulo representa os três lados de um triângulo qualquer. */class Triangulo {float lado1;

boolean éEquilátero() { .... }

float calculaPerímetro() { .... }

float lado2,lado3;} // fim da classe Triangulo

triangulo.java

lado2,lado3 são visíveis em toda classe, inclusive no corpo de qualquer método com declaração precedente à declaração de lado2,lado3 .

Page 19: Programação Orientada a Objetos* Criando Classes em Java

Escopo

boolean éEquilátero() { boolean igualdade12,resultado; igualdade12 = (lado1 == lado2); boolean igualdade23; igualdade23 = (lado2 == lado3); if (igualdade12 && igualdade23) resultado = true; else resultado = false; return resultado; } // fim do método éEquilátero

triangulo.java

igualdade12, resultado e igualdade23 só são visíveis neste método

o uso de cada nome local ao método só pode ocorrer após a declaração do nome

Page 20: Programação Orientada a Objetos* Criando Classes em Java

Modificadores de AcessoEncapsulamento: Para assegurar o uso correto,

recomenda-se que os usuários de uma classe não tenham acesso aos campos da classe ou aos métodos que não implementam serviços oferecidos pela classe

modificador private: impede a manipulação pelo usuário da

classe;campos de classes, métodos que não implementam

serviços

modificador public: permite a manipulação pelo usuário da

classe; métodos que implementam serviços

Outros modificadores: protected, ausente

Page 21: Programação Orientada a Objetos* Criando Classes em Java

Modificadores de Acesso/** A classe Data contém campos e métodos que permitem a manipulação de datas.*/class Data { private byte dia,mês; private short ano;

public void inicializaData(byte d,byte m,short a) { ... } // fim do método inicializaData

public byte retornaDia() { return dia; } // fim do método retornaDia

... Data.java

campos privados: a classe deve implementar métodos (públicos) para modificá-los

Page 22: Programação Orientada a Objetos* Criando Classes em Java

Modificadores de Acesso ...

public boolean éIgual(Data outraData) { if ((dia == outraData.dia) && (mês == outraData.mês) && (ano == outraData.ano)) return true; else return false; } // fim do método éIgual

....

} // fim da classe Data

Data.java

Outra instância da mesma classe: seus campos e métodos (mesmo os privados) podem ser manipulados diretamente.