Programa - PowerPoint PPT Presentation

About This Presentation
Title:

Programa

Description:

Title: POO - Criando Classes Author: Isabel Cafezeiro Last modified by: isabel Created Date: 6/12/2004 11:32:25 PM Document presentation format: Apresenta o na tela – PowerPoint PPT presentation

Number of Views:89
Avg rating:3.0/5.0
Slides: 23
Provided by: IsabelCa5
Category:
Tags: aula | programa | virtual

less

Transcript and Presenter's Notes

Title: Programa


1
ProgramaçãoOrientada a Objetos
  • Criando Classes em Java
  • Prof. Isabel Cafezeiro
  • isabel_at_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 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\POOgtc\j2sdk1.4.2_03\bin\javac Vazia
  • javac invalid flag Vazia
  • Usage javac ltoptionsgt ltsource filesgt
  • where possible options include
  • -g Generate all
    debugging info
  • ...
  • f\AULAS\POOgtc\j2sdk1.4.2_03\bin\javac
    Vazia.java
  • Vazia.java7 'class' or 'interface' expected
  • Class Vazia // esta Ú a declaraþÒo da classe!
  • 1 error
  • f\AULAS\POOgtc\j2sdk1.4.2_03\bin\javac
    Vazia.java
  • f\AULAS\POOgtjava Vazia
  • Exception in thread "main" java.lang.NoSuchMethodE
    rror main
  • f\AULAS\POOgt

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) -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 tipo Operações do tipo
  • boolean , , !
  • byte
  • short
  • int ,- (unário e binário),
  • long ,/,
  • char (resto ),
  • float lt,gt,lt,gt,,!
  • 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 32767 convertida para tipo
short. Erro de compilação valor fora do
intervalo.
C\gtjavac testedata.java testedata.java6
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 32767 onde é
esperado tipo short
C\gtjavac testedata.java testedata.java7
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

lista de parâmetros
tipo (classe) de retorno
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
  • / 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.
Write a Comment
User Comments (0)
About PowerShow.com