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

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

Programação Orientada a Objetos*

Apresentações semelhantes


Apresentação em tema: "Programação Orientada a Objetos*"— 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)

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: Recomenda-se:
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 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 Javadoc Maiúscula?

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>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 tipo Operaçõ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: Recomenda-se:
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 lista de parâmetros tipo (classe) de retorno sem vírgula no final do método

16 Métodos em Java objeto passado como parâmetro
/** 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 /** 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*"

Apresentações semelhantes


Anúncios Google