Você está na página 1de 35

Linguagem Orientada a Objeto

Java

Bruno Bastos Neves Mat:09/41000


Jussie Marques Martins Mat:09/52516
Kamila Borges Nogueira Mat:09/11348
Paulo Henrique Cabral Mat:09/47431

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:

Aluno manoel = new Aluno(“grad”);

07/12/09
Arrays
• São “vetores” que podem conter qualquer
tipo de variáveis;

• Não pode ser armazenado, em um mesmo


array, variáveis de tipos diferentes;

• Pode ser composto tanto com tipos


primitivos como com tipos objeto.

07/12/09
Arrays
Forma de declaração:

int arrayDeInts[] = new int[156];

String[] arrayDeStrings = new


String[13];

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++;
}

Dependendo do resultado da condição testada, o corpo


do loop pode não ser executado.
05/01/10 17
Loops
do-while
Adequado quando o loop precisa ser executado pelo
menos uma vez, porque a condição é testada
sempre depois do loop.
int idade;
do {
idade = perguntaIdadeUsuario();
} while(idade < 0);

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.

 Em java não é preciso uso destas palavras reservadas,


pois todos os métodos são Virtuais por defaut.

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:

Tipos de dados abstratos;


Herança;
Vinculação dinâmica;

07/12/09
Classes
• Modularização do código

• Criada com a utilização da palavra chave


class antes do nome da Classe

• Composta de métodos (comportamento) e


variáveis de instância (estado).

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.

• Um novo tipo de dados abstratos herdam os


dados e as funcionalidades de tipos existentes.

• Funcionalidade que aumenta o poder da


linguagem.

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.

• O novo método sobrepõe-se (override) à


versão herdada.

• A sobreposição fornece uma operação


específica a objetos da classe derivada.

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.

• Quando um método sobresposto é chamado


por meio da variável polimórfica, essa
chamada é vinculada dinamicamente ao
método da classe apropriada.

07/12/09