A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação Orientada a Objetos* Criando Classes em Java Prof. Isabel Cafezeiro *Baseado no livro.

Apresentações semelhantes


Apresentação em tema: "Programação Orientada a Objetos* Criando Classes em Java Prof. Isabel Cafezeiro *Baseado no livro."— Transcrição da apresentação:

1 Programação Orientada a Objetos* Criando Classes em Java Prof. Isabel Cafezeiro *Baseado no livro Introdução à Programação Orientada a Objetos usando JAVA – Rafael Santos – Editora Campus – Série SBC

2 O ambiente de programação JDK (Java Development Kit) Linux, Windows e outros Edição, Compilação e Execução de classes Editor de textos, Javac e Java (Jcreator: wordpad)http://www.jcreator.com/

3 O ambiente de programação JDK (Java Development Kit) zjavac ( compilador ) zjava ( interpretador ) zappletviewer ( visualizador de applets ) zjavadoc ( gerador de documentação ) zjar ( programa de compactação ) zjavap ( disassembler ) z...

4 O processo de compilação/execução JavacJava A 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)

5 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

6 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 Vazia Vazia.java Javadoc Maiúscula?

7 Classes em Java f:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vazia javac: invalid flag: Vazia Usage: javac where possible options include: -g Generate all debugging info... f:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vazia.java Vazia.java:7: 'class' or 'interface' expected Class Vazia // esta Ú a declaraþÒo da classe! ^ 1 error f:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vazia.java f:\AULAS\POO>java Vazia Exception in thread "main" java.lang.NoSuchMethodError: main f:\AULAS\POO>

8 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)[ , ] long (oito bytes) char (dois bytes, Unicode [0,65535],operados como inteiros) 'a','b',... float (ponto flutuante, 4bytes) double (ponto flutuante, 8bytes)

9 Campos de classes em Java Tipos Nativos: Nome do tipoOperações do tipo boolean&&, ||, ! byte short int +,- (unário e binário), long *,/, char % (resto ), float, =,==,!= double

10 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 convertida para tipo short. Erro de compilação: valor fora do intervalo. C:\>javac testedata.java testedata.java:6: possible loss of precision found : int required: short umDia = 22; umMês = 13; umAno = 32768; ^ 1 error

11 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 onde é esperado tipo short C:\>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

12 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

13 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

14 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 )

15 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

16 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

17 Escopo Regras de Escopo: Determinam a visibilidade dos nomes campos da classe são visíveis em toda classe desconsidera-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

18 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.

19 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

20 Modificadores de Acesso Encapsulamento: 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

21 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

22 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.


Carregar ppt "Programação Orientada a Objetos* Criando Classes em Java Prof. Isabel Cafezeiro *Baseado no livro."

Apresentações semelhantes


Anúncios Google