O documento introduz conceitos básicos de programação orientada a objetos e Java, incluindo: (1) Java é uma linguagem obrigatoriamente orientada a objetos com classes e herança; (2) A sintaxe básica de Java como classes, atributos, métodos, construtores e tipos primitivos; (3) A criação e uso de objetos em Java.
1. 11/04/2014
1
Programação Orientada a Objetos
Fundamentos de Java
Introdução ao JAVA
• Existem diversas LP’s para POO então por que Java?
– Java é obrigatoriamente OO
• Todos os métodos e variáveis estão dentro de uma classe
– Java é simples
• Segue a organização de LP’s tradicionais como o C. Seguindo
recomendações básicas, o compilador será capaz de compilar
todas as classes necessárias para sua aplicação funcionar
2
Introdução ao JAVA
– Java é portátil
• Seu código-fonte pode ser compilado e as classes geradas
podem ser executadas em qualquer computador com
qualquer SO desde que tenha uma JVM adequada instalada
– Java e gratuita
• JVM’s estão disponíveis para serem instaladas e existe um
pacote de ferramentas do JDK com compilador para linha de
comando (javac)
3
Introdução ao JAVA
– Java é robusta
• Administração de memória e uso de ponteiros são controlados
internamente na linguagem (diferente de C, por exemplo)
• Também conta com um poderoso mecanismo de tratamento
de ecxeções viabilizando um melhor controle de erros em
tempo de execução
4
Introdução ao JAVA
• Sintaxe básica (regras)
– Uma classe é sempre declarada com a palavra-chave
class seguida do nome da classe
– O nome da classe não pode ter espaços
– Sempre iniciado por letra
– Não podem ter acentos
– Podem ter números
– Não pode ser exatamente igual a alguma palavra
reservada
5
Introdução ao JAVA
• Sintaxe básica (regras)
– Há diferenciação entre caracteres MAIÚSCULOS e
minúsculos:
• Class, CLASS, ClAsS e class são consideradas diferentes
• Apenas a última palavra é reconhecida como declarante de
uma classe
– O conteúdo de uma classe é delimitado por chaves ({ e
}), blocos de códigos também!
6
2. 11/04/2014
2
Introdução ao JAVA
• Sintaxe básica (regras)
– Não existem regras para o espaçamento vertical ou a
indexação
– A boa utilização desses espaços torna o código mais
legível
– Por convenção, nomes de classes tem a primeira letra de
cada palavra maiúscula:
• ContaBancaria, Lampada, CarroDeLuxo
7
Introdução ao JAVA
• Sintaxe básica (regras)
– O código de uma classe é criado em um arquivo texto
nomeado com o nome da classe e possui a extensão
.java
• Uma classe Lampada tem seu código no arquivo Lampada.java
– Os arquivos compilados do Java possuem a extensão
.class
– Um arquivo fonte em Java deve conter no máximo uma
classe pública, ou seja, o arquivo pode conter 0 ou 1
classe pública
– Caso exista uma classe pública, então, o nome do
arquivo deve ser igual ao nome da classe pública
8
Introdução ao JAVA
• Comentários em JAVA
– Comentários de uma linha
// linha comentada
– Comentário em bloco (necessita fechamento)
/* bloco comentado */
–Comentário para documentação
/** comentário */
• Uso com a ferramenta javadoc
9
Introdução ao JAVA
• Toda aplicação Java é composta por um conjunto de
classes declaradas em diferentes arquivos
• A classe é a unidade fundamental de um sistema
em Java
• Para que essa aplicação seja executável, uma das
classes da aplicação deve conter o método main
10
O método main
• O método main( ) é o ponto natural de entrada de
uma aplicação Java
• Para que uma aplicação seja executável, uma das classes da
aplicação deve conter o método main
• O assinatura desse método é:
public static void main(String[ ] args)
• As seguintes variações também são válidas:
static public void main(String[ ] args)
public static void main(String args[ ])
11
O método main
• A varíavel args é um array que armazena os
argumentos de entrada passados pelo usuário para
a aplicação
• O nome args é arbitrário, portanto, pode ser
susbtituído por qualquer outro identificador de
variável válido
• Exemplo:
public static void main(String[ ] x)
12
3. 11/04/2014
3
Alô mundo!
13
/* essa é uma forma de comentar
múltiplas linhas */
// esse é um comentário de uma única linha
public class AloMundo {
// o método main inicia a execução da aplicação Java
public static void main(String[] args) {
System.out.println("Alô mundo");
}// fim do método main
}// fim da classe
Declaração de Atributos
• A sintaxe básica para a declaração de um atributo é:
<modificador> <tipo> <nome_do_atributo>;
– O modificador é opcional
• Exemplos:
private int ra;
public String nome;
Conta c;
14
Inicialização de atributos
15
• Podem ser inicializados
no momento da
declaração
– public int idade = 1;
• Existem valores default
para a inicialização de
atributos caso os
mesmos não sejam
inicializados
Valores
predefinidos
de inicialização
de variáveis
em Java
Declaração de métodos
<modificador> <tipo_de_retorno> <nome_do_método>
(<lista_de_argumentos>) {
<instruções>
}
• O modificador, a lista de argumentos e as instruções
são partes opcionais
• A lista de argumentos é formada por pares,
separados por vírgula:
<tipo><nome_do_argumento>
16
Exemplo de Métodos
• Métodos:
– Exemplo:
17
public class Aluno {
int matricula;
public int obterMatricula() {
return matricula;
}
public void alterarMatricula(int matr) {
this.matricula = matr;
}
}
Método sem
argumentos,
que retorna um int
Método com
argumentos,
que não retorna nada
Atenção:
this é referência para o objeto corrente
Construtores
• Objetos são criados por meio da execução de um dos
seus construtores
• O nome do construtor deve ser idêntico ao nome da
classe
• Os construtores devem ser declarados sem nenhum
tipo de retorno
– Exemplo: public Aluno() { }
• É permitido (embora não aconselhável) que um
método tenha o mesmo nome da classe. Nesse caso, se
existir um tipo de retorno, trata-se de um método
comum e não de um construtor
18
4. 11/04/2014
4
Construtores
• Construtores podem usar qualquer modificador de
acesso, incluindo private
• Os construtores são comumente utilizados para definir
valores para os atributos da classe
• Métodos construtores definidos para uma certa classe
podem ou não possuir argumentos
• O construtor sem argumentos ou construtor vazio é
considerado o construtor default
• Se nenhum construtor for implementado na classe, o
compilador gerará automaticamente o construtor
padrão (default), que não possui argumentos
19
Construtores
• Se qualquer outro construtor (com argumentos) existir
na classe e você quiser usar um construtor sem
argumentos, você deverá criá-lo manualmente
• Sendo assim, em Java, o construtor default é criado
automaticamente pelo compilador se e somente se não
existir nenhum outro construtor definido para a classe
• Isso significa que o construtor default pode ser omitido
na declaração de uma classe caso ela não possua um
construtor com argumentos
• Se a classe possuir um construtor com argumentos, é
fortemente recomendado que o construtor default seja
declarado explicitamente
20
Declaração de construtores
• A sintaxe básica para a declaração de um construtor
é:
<modificador><nome_da_classe>(<lista_de_argumentos>)
{
<instruções>
}
– O modificador, a lista de argumentos e as instruções são
partes opcionais
– A lista de argumentos é formada por pares
<tipo><nome_do_argumento>
– Um construtor não possui tipo de retorno
21
Construtores
22
• Se não for implementado um método construtor, o compilador gera
automaticamente um construtor padrão (default) sem argumentos
• Exemplo:
public class Conta {
private double saldo;
public Conta ( ) {
}
public Conta (double saldo) {
this.saldo = saldo;
}
}
Construtor default sem
argumentos
Construtor com argumento
Atenção:
Os construtores normalmente inicializam
os atributos da classe.
Referência this
23
• A palavra-chave this é uma referência para o objeto
corrente
• this pode ser usado para:
– referenciar um atributo ou método de uma classe dentro
de um construtor ou de método da mesma;
– passar o objeto corrente como um parâmetro para outro
método ou construtor.
Criação de um objeto
• Todo objeto em um programa ou aplicação é criado
em tempo de execução, utilizado e destruído
• Em Java, a palavra-chave new é usada em conjunto
com um dos construtores da classe para criar um
novo objeto como uma instância de uma classe
específica, retornando como resultado uma
referência para o objeto criado
24
5. 11/04/2014
5
Criação de um objeto
• Sintaxe básica:
new <nome_da_classe> ([lista_de_argumentos])
• A palavra new é sucedida pela chamada do
construtor da classe
– O corpo (ou código) do método construtor determina as
ações associadas à inicialização de cada objeto criado
• Um construtor só é invocado com a criação de um
objeto
25
Exemplo de criação de um objeto
26
public class Programa {
public static void main (String[] args) {
Conta c1 = new Conta( );
c1.creditar(10.0);
System.out.println(c1.obterSaldo());
Conta c2 = new Conta(50.0);
c2.creditar(10.0);
System.out.println(c2.obterSaldo());
}
}
Chamada do construtor padrão
Chamada do construtor com um
argumento
Atenção:
c1 e c2 são objetos distintos
e independentes
Acesso aos membros de uma classe
• Os atributos e métodos também são chamados de
membros de uma classe.
• Em Java, a seguinte sintaxe é utilizada para se ter acesso
aos membros da classe:
<ref_objeto>.<membro> ou <classe>.<membro>
27
Convenções do Java
• Para aumentar a legibilidade dos códigos
desenvolvidos em Java, algumas convenções são
adotadas
• As convenções de código providas pela Sun e
amplamente seguidas podem ser encontradas em:
– http://www.oracle.com/technetwork/java/codeconv-
138413.html
– http://www.oracle.com/technetwork/java/codeconvtoc-
136057.html
28
Convenções para nomes
• Classes e Interfaces:
– Nomes de classes devem ser escritos com a primeira
letra maiúscula e as demais minúsculas – a primeira letra
de palavras subsequentes também deve ser maiúscula.
– Exemplos:
Cliente
ClienteEspecial
29
Convenções para nomes
• Variáveis e Métodos:
– Nomes de variáveis e métodos devem ser escritos com
letras minúsculas – sendo a primeira letra de palavras
subsequentes maiúscula
– Exemplos de nomes de métodos:
adicionarCliente
remover
30
6. 11/04/2014
6
Introdução ao JAVA
• Palavras reservadas da linguagem
– As palavras abaixo tem significado especial para o
compilador
31
Identificadores
• Campos são declarados dentro do corpo da classe
– Parte do código entre as chaves { e }
32
public class Pessoa {
int idade;
String nome;
...
...
}
Identificadores
• Regras para declaração de campos
– Quase todas as mesmas para declaração de nomes de
classes
• Iniciados por letra ( incluindo _ e $ ), sem espaços (ou virgulas
etc.), podendo ter números
• Podem ter acentos (CUIDADO! Case sensitive)
• Não pode ser igual a nenhuma palavra reservada
33
Identificadores
• Exemplos de identificadores válidos:
– $nome
– nome
– primeiroNome
– nome1
– _nome
• Identificadores são case sensitive, portanto,
– Nome ≠ nome
34
Identificadores
• Regras para declaração de campos
– Se campos forem do mesmo tipo, estes podem ser
declarados em uma única linha:
• boolean campo1, campo2, campo3;
– Observar a clareza do código
– Um campo que é instancia de uma classe precisa ter a
inicialização da referência através da palavra-chave new
• Aluno a = new Aluno();
– Dois campos da mesma classe não podem ter o mesmo
nome
35
Introdução ao JAVA
• Tipos primitivos em Java são dados nativos da
linguagem
• boolean: representa valores lógicos
– Assume apenas dois valores true(verdadeiro) ou false
(falso)
– São usados especialmente para representar estados
36
7. 11/04/2014
7
Introdução ao JAVA
• Existem quatro tipos numéricos para representar
valores inteiros
• byte: representa valores entre -128 e 127
– Ocupa apenas um byte de memória
• short: usado para valores entre -32768 e 32767
– Ocupa dois bytes de memória
37
Introdução ao JAVA
• int: representa valores entre -2147483648 a
2147483647
– Ocupa quatro bytes de memória
• long: usado para valores entre -9223372036854775808 e
9223372036854775807
– Ocupa oito bytes de memória
38
Introdução ao JAVA
• O tipo char
– Tipo numérico que é usado para representar caracteres
Unicode entre 0 e 65535
– Usa dois bytes para representação
– Caracteres são representados entre aspas simples
• ‘a’
– Operações matemáticas também podem ser efetuadas usando o
campo char
39
Introdução ao JAVA
• Valores numéricos de ponto flutuante
– float: para valores de precisão simples entre
1.40129846432481707e-45 e 3.40282346638528860e+38 (usa 4 bytes
de memória)
– double: para valores de precisão dupla entre
4.94065645841246544e-324 e 1.79769313486231570e+308 (usa 8
bytes)
40
Introdução ao JAVA
• A classe String (breve)
– Usada para representar cadeias de caracteres (palavras,
frases, textos etc.)
– Não é um dado nativo!
– De uso simples e intuitivo
• Por isso usamos de forma similar aos tipos primitivos
• Detalhes sobre essa classe serão dados mais a frente
41
Recomendação de leitura
• Capítulo 3 - Orientação a Objetos
– Orientação a Objetos em Java
– K19 Treinamentos
– http://www.k19.com.br/downloads/apostilas-java
• Capítulo 4 - Orientação a objetos básica
– FJ-11: Java e Orientação a Objetos.
– Caelum Ensino e Inovação.
– http://www.caelum.com.br/curso/fj-11-java-
orientacaoobjetos/
• Complete Java 2 Certification - Study Guide.
Sybex
42