1 / 22

Programação Orientada a Objetos*

Programação Orientada a Objetos*. Criando Classes em Java Prof. Isabel Cafezeiro isabel@dcc.ic.uff.br http://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. O ambiente de programação.

hue
Download Presentation

Programação Orientada a Objetos*

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ProgramaçãoOrientada a Objetos* Criando Classes em Java Prof. Isabel Cafezeiro isabel@dcc.ic.uff.br http://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

  2. O ambiente de programação JDK (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/, wordpad)

  3. 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 ) ...

  4. O processo de compilação/execução Javac Java 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 aclasse

  6. Classes em Java Javadoc Maiúscula? /** * 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

  7. Classes em Java f:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vazia javac: invalid flag: Vazia Usage: javac <options> <source files> 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 tipoValores 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)

  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 Literal inteira 32767 convertida para tipo short. Erro de compilação: valor fora do intervalo. 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; 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 Erro de compilação: Literal inteira 32767 onde é esperado tipo short 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); 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 lista de parâmetros tipo (classe) de retorno /** 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

  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 objeto passado como parâmetro acesso aos campos do objeto método com retorno deve conter a palavra return no corpo

  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 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 . /** 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

  19. Escopo igualdade12, resultado e igualdade23 só são visíveis neste método 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 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 campos privados: a classe deve implementar métodos (públicos) para modificá-los /** 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

  22. Modificadores de Acesso Outra instância da mesma classe: seus campos e métodos (mesmo os privados) podem ser manipulados diretamente. ... 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

More Related