Professional Documents
Culture Documents
Java
07/12/09
Histórico
Projeto Green da Sun
Em 1991;
Software para eletrodomésticos
Baixo uso de memória
Baixo custo
Internet 1993
1995: A Sun lança o Java 1.0
07/12/09
Características
Totalmente aberta;
Independente de plataforma ou sistema operacional -
Portável;
Orientada a objetos;
Linguagem interpretada;
Multiprocessada;
Robusta e segura;
Alto desempenho (para linguagem interpretada).
07/12/09
Características
Plataformas Java (SE, EE, ME);
Java Standard Edition;
Java Enterprise Edition;
Java ME;
Ambiente de Desenvolvimento:
Java System Development Kit (JSDK);
Ambiente de Execução:
Java Runtime Environment (JRE)
07/12/09
Portabilidade
Linguagem tanto compilada quando interpretada
Código fonte
compilado para Java bytecode.
interpretado pela plataforma da Java Virtual Machine
(JVM)
07/12/09
Java Virtual Machine
Máquina imaginária implementada como
uma aplicação de software em uma
máquina real
Interpreta o bytecode gerado na
compilação de um programa Java
07/12/09
Alocação de Memória
Memória é alocada quando ocorre
Inicialização de um objeto via construtor
Atribuída uma região de memória a uma variável
(referência).
Mais de uma variável pode apontar para uma
mesma região da memória.
Liberação de memória realizada pelo
Garbage Collector
07/12/09
Tipos de variáveis
• Tipos primitivos: fazem parte da
linguagem Java. Seu nome são palavras-
reservadas em Java.
• Tipos objetos: são criadas a partir do
instanciamento de classes.
• Arrays (vetores): são objetos que contém
diversos elementos de um mesmo tipo.
07/12/09
Tipos primitivos
boolean – true ou false
byte – numérico inteiro de 8 bits: -2
- 7 a 27-1
short – numérico inteiro de 16 bits: -2
- 15 a 215 -1
int – numérico inteiro de 32 bits: -2
- 31 a 231 -1
long – numérico inteiro de 64 bits: -2
- 63 a 263 -1
float – numérico de ponto flutuante de 32 bits
double – numérico de ponto flutuante de 64 bits
char – caractere unicode representado por um inteiro de 16 bits sem sinal
07/12/09
Tipos Objetos
• São criados a partir do instanciamento de
uma classe.
• São construídos da seguinte forma:
07/12/09
Arrays
• São “vetores” que podem conter qualquer
tipo de variáveis;
07/12/09
Arrays
Forma de declaração:
07/12/09
Passando variáveis p/ métodos
Passagem é sempre por valor
Ou seja, é passada uma cópia do valor.
Para variáveis de referência (de objetos), a
referência também é passada por valor.
void montaCarro(String modelo) {
Carro meuCarro = new Carro(modelo);
mudaCor(meuCarro, “cinza”);
}
Void mudaCor(Carro c, String cor) {
c.abastece();
c = new Carro(“Gol”);
}
07/12/09
Condicionais
if-else
Uma linha
if (expressão booleana) instrução ;
Um bloco
if (expressão booleana) {
instruções;
}
Um bloco if-else
if (expressão booleana) {
instruções;
} else {
instruções
}
05/01/10 14
Condicionais
if-else:
Um bloco if-else if-else
if (expressão booleana) {
instruções;
} else if (expressão booleana){
instruções
} else {
instruções
}
Expressões booleanas:
if (temEspaco = true) ... // Será sempre verdadeiro
if (++cont > 10) ...
05/01/10
if ( (x>0) && (x<10) || isImpar(x) ) ... 15
Condicionais
switch
Simula o uso de várias instruções if.
int opcao = menu.opcaoSelecionada();
switch(opcao) {
case 1:
iniciaJogo();
break;
case 2:
abreAjuda();
break;
case 4:
salvaJogo();
case 5:
saiJogo();
break;
}
05/01/10 16
Loops
while
Adequado quando não se sabe quantas vezes o bloco
deve ser repetido.
int cont = 0;
while (x < y) {
x++;
y--
cont++;
}
05/01/10 18
Loops
for
Adequado se sabe quantas vezes o loop deverá ser
executado.
A declaração possui 3 partes principais (não
obrigatórios):
Declaração e inicialização de variáveis
Expressão booleana (teste condicional)
Expressão de iteração
int somatorio;
for (int i = 0; i <= 10; i++) {
somatorio += i;
}
05/01/10 19
Loops
break
Utilizados dentro de loops ou switch.
Exncerra a execução do loop, continuando execução após o
bloco do loop.
continue
Utilizado dentro de loops.
Encerra a iteração atual do loop e inicie a próxima iteração
caso a condição booleana seja atendida.
for (int i = 0; i < 20; i++) {
if (i%2 == 0) continue;
System.out.println(i);
}
05/01/10 20
Classes abstratas
Muitas vezes temos conceitos que se aplicam a todo um
conjunto de classes, determinando comportamentos que
gostaríamos de herdar de uma superclasse, mas não faria
sentido instanciar objetos desta superclasse
Definimos então esta superclasse como sendo abstrata, de
modo que ela possa fornecer estado e comportamento
para classes derivadas, ou utiliza-la como tipo de dados
para referências, mas não seja permitido criar instâncias
As classes que podem ser instanciadas são denominadas
classes concretas
07/12/09
Método Virtual
Métodos virtuais foram criados para que as linguagens
orientadas a objetos expressem o polimorfismo, ou seja, a
permissão de escrevermos um método em uma classe
derivada com a mesma assinatura da classe base. Em
C#, para indicar que um método poderá ser escrito com a
mesma assinatura em uma classe derivada, utilizamos a
palavra reservada virtual na classe base e a palavra
reservada override na classe derivada.
22
Interfaces
Interfaces são “esqueletos” de classes
que não definem a implementação dos
métodos, mas apenas as suas
assinaturas (nomes e argumentos)
Interfaces não podem ter atributos
Todos os métodos de uma interface são
implicitamente abstratos e públicos
Funcionam como um contrato
23
Encapsulamento
Mecanismo de controle de acesso para
atributos e métodos de uma classe(objeto
instanciado).
O conceito de encapsulamento está
intimamente ligado ao conceito de
ocultação de informação.
24
Encapsulamento - Vantagens:
proteção contra acessos indevidos de
outros objetos;
Esconder a estrutura interna do objeto,
tornando a interação simples e seguindo
um padrão, facilitando o entendimento por
outros programadores.
25
Encapsulamento - JAVA:
Ocorre nas classes;
É implementado pelos modificadores de
acesso: public, protected, private.
Membros public
Acessíveis em qualquer lugar do programa
Acessíveis pela superclasse e pela subclasse
Membros private
Acessíveis somente nos métodos da própria classe
Não são acessíveis pelas subclasses
Membros protected
Proteção intermediária entre private e public
26
São acessíveis por métodos da superclasse, das subclasses, ou classes do mesmo
pacote
Encapsulamento
27
• As linguagens orientadas a objetos devem
oferecer 3 recursos chaves:
07/12/09
Classes
• Modularização do código
07/12/09
• Envia-se uma mensagem a um objeto para
invocar um de seus métodos.
• Uma resposta a uma mensagem é um objeto
que retorna o valor da computação do
método.
• Cada objeto é uma abstração de um
computador pelo fato dele armazenar dados
e oferecer capacidades de processamento
para manipulá-los.
• Objetos podem enviar e receber mensagens.
07/12/09
Java
• Um código-fonte é criado, usando a linguagem Java.
• Ao executar, o compilador procurará por erros,
garantindo que tudo será executado corretamente.
• O compilador criará um novo documento, codificado em
bytecode Java. O bytecode é independente da
plataforma utilizada.
• A JVM (Java Virtual Machine), implementada em
software, lerá e executará o bytecode.
07/12/09
Herança
• Soluciona problemas com a reutilização de tipos
de dados abstratos.
07/12/09
Classe B Classe E
Classe C Classe D
07/12/09
• Além de herdar entidades de sua classe pai,
uma classe derivada pode acrescentar novas
entidades e modificar métodos herdados.
07/12/09
Polimorfismo e vinculação
dinâmica
• Variáveis do tipo da classe-pai referenciam
objetos de qualquer uma das sub-classes da
mesma.
07/12/09