Revisão: Linguagem Java

LPOO 2 - Java


Prof. Rodrigo Noll @ IFRS Canoas



Versão para impressão

Classes e Objetos

Classes e Objetos

Em Java, a declaração de novas classes é feita através da construção class.


Estrutura Geral de Classe Java

Estrutura Geral de Classe Java


[package pacote;]
[import bibliotecas;]

[modificador] class NomeClasse {
	[modificador] [tipo] nomeAtributo;

	[modificador] [tipoRetorno] nomeMetodo ( [parametros] ) {
		// corpo do metodo
	}
}
                                

Estrutura Geral de Classe Java

A palavra-chave “package”:


package pacote;
public class Classe{
    ...
}
                        

Estrutura Geral de Classe Java

A palavra-chave “import”:


import java.util.ArrayList;
public class Classe{
		ArrayList lista;
		...
}
                        

Atributos

  • Java é uma linguagem fortemente tipada, isto é, toda a variável possui um tipo que não pode ser alterado
  • Variáveis são sempre declaradas dentro de blocos
  • Podem ser declaradas em qualquer ponto do programa

Atributos

São exemplos de atributos válidos:

  • AvgTemp count a4 $test this_is_ok

São exemplos de atributos inválidos:

  • 2cont high-temp not/ok

Métodos

Um método em Java é equivalente a uma função, subrotina ou procedimento em outras linguagens de programação. Não existe em Java o conceito de métodos globais, portanto todos os métodos pertencem a uma classe.


[modificador] [tipoRetorno] nomeMetodo ( [parametros] ) {
    // corpo do metodo
}
                        

Comentários

Palavras Reservadas

Java Keywords

Tamanhos dos Tipos

Tipo Precisão (bit)
boolean 1
byte 8
int 32
short 16
long 64
float 32
double 64
char 16

Operadores Aritméticos

Operador Resultado
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Módulo

Resultado de Operações Aritméticas

Operadores Resultado
Pelo menos um operando é long e nenhum é float ou double long
Nenhum operando é float, double ou long int
Pelo menos um operando é double double
Pelo menos um operando é float, nenhum é double float

Operadores Unários

Operador Resultado
++ Incremento
-- Decremento
+ Indica que o valor é positivo
- Indica que o valor é negativo
! Inverte o valor de um boleano
~ Inverte um padrão de bits
() Organiza a precedência em uma operação

Operadores Relacionais

Operador Resultado
== Igual a
!= Diferente de
> Maior que
< Menor que
>= Maior que ou igual a
<= Menor que ou igual a
instanceof instância de

Operadores Lógicos

Operador Resultado
&& AND
|| OR
& Bitwise AND
| Bitwise OR

Comando de atribuição


                            identificador = valor
                        

Exemplo:


                            x = 10;
                            x = y = 15;
                        

Operação com atribuição

Operador Resultado Exemplo Operação Equivalente
+= Adição com atribuição x += y x = x + y
-= Subtração com atribuição x -= y x = x - y
*= Multiplicação com atribuição x *= y x = x * y
/= Divisão com atribuição x /= y x = x / y
%= Módulo com atribuição x %= y x = x % y

Operador Ternário


                            expr1 ? expr2 :  expr3
                        

Exemplo:


                            razao = denom == 0 ? 0 : num / denom;
                        

O operador “?” não é propriamente um comando, mas um operador que realiza avaliação seletiva de seus operandos mediante o valor de uma expressão booleana semelhante a do comando if-else. Se esta expressão for true, então um primeiro operando é avaliado; se for false, então o segundo operando é avaliado.

Precedência de Operadores

Comandos de Controle de Fluxo

  • Comandos de Seleção
    • if-else
    • switch
  • Comandos de Repetição
    • while
    • do-while
    • for
  • Comandos de Desvio
    • break
    • continue

EXERCÍCIO

Exercícios sobre a linguagem Java

Orientação a Objetos

Orientação a Objetos (OO)

Orientação a objetos é uma maneira de programar que ajuda na organização e resolve muitos problemas enfrentados pela programação procedural, como a distribuição e/ou replicação da lógica em diversos pontos do código fonte.

A OO busca uma solução ideal para concentrar todas características e responsabilidades em um único lugar (classe) e não espalhadas no código.

Orientação a Objetos (OO)

    Orientação a objetos vai ajudar em:
  • Se organizar e escrever menos
  • Concentrar as responsabilidades nos pontos certos
  • Flexibilizar sua aplicação, encapsulando a lógica de negócios.


  • Outra enorme vantagem é o polimorfismo das referências, que veremos posteriormente.

Criando um tipo

Pode-se considerar a entidade Conta como importante dentro de um sistema bancário.

    Para esse sistema, é importante:
  • número da conta,
  • tipo de conta,
  • nome do cliente,
  • saldo,
  • limite

Mas dessa especificação, não se pode acessar saldo de ninguém, é preciso primeiro criar uma conta específica para depois solicitar algo dela.

Criando um Tipo

Com isso, definimos a classe (especificação):
A qual pode criar objetos reais (contas de verdade) que podem de armazenar valores:

Definição de Classe

    Vem da taxonomia da biologia
    • Representa que todas as entidades de uma mesma classe compartilham uma série de atributos e comportamentos
    • Nem todas as entidades de uma classe são iguais, podem variar os valores de atributos e como realizam os comportamentos
    Exemplo:
    • Não se pode fazer com que um Carro ande, é preciso primeiro construir um carro específico (instanciar) para depois da construção solicitar que ele ande.
    • Uma receita de bolo não é comestível, é uma especificação. O que se come é o quando essa receita é executada criando o bolo a partir das instruções.


Pergunta: A planta de uma casa é uma classe ou um objeto? Por quê?

Um classe em Java

Revendo a conta anterior:

                            class Conta {
                            int numero;
                            String nome;
                            double saldo;
                            double limite;

                            // ..
                            }
                            

Criação de Objetos como Atributos de Classe

Criação e Uso de Objetos

  • Digamos que uma classe chamada Programa.java deve utilizar a conta criada
  • Para usar, é necessário criar (construir, instanciar) e, para isso, basta usar a palavra chave new com os parênteses (mais tarde falaremos disso)

        class Programa {
            public static void main(String[] args) {
                new Conta();
            }
        }

                                
  • Esse código cria a conta, mas não é possível a acessar depois disso, portanto precisamos de um objeto para a referenciar:

Métodos

Métodos

Métodos são utilizados para definir os comportamentos (funções) de uma classe – o que ela faz! Exemplo: como é realizado o saque?

class Conta {
	int numero;
	String nome;
	double saldo;
	double limite;

	void saca(double quantidade) {
	    double novoSaldo =
               this.saldo - quantidade;
	    this.saldo = novoSaldo;
	}
}
                        

Métodos

Exemplo: como é realizado o depósito?

class Conta {
	int numero;
	String nome;
	double saldo;
	double limite;

	void saca(double quantidade) {
	    double novoSaldo =
               this.saldo - quantidade;
	    this.saldo = novoSaldo;
	}
	void deposita(double quantidade) {
	    this.saldo += quantidade;
	}
}

                            

Métodos

Para mandar uma mensagem ao objeto e pedir que ele execute um método, usamos o ponto (invocação do método):

class SacaEDepositaTest {
    public static void main(String[] args) {
      // criando a conta
      Conta minhaConta;
      minhaConta = new Conta();

      // alterando os valores de minhaConta
      minhaConta.nome = "Rodrigo";
      minhaConta.saldo = 1000;
      minhaConta.saca(200); // saca 200 reais
      minhaConta.deposita(500); //deposita 500 reais
      System.out.println(minhaConta.saldo);
    }
}
                            
Qual é o resultado da execução do código acima?
1300.0

Métodos

Um método sempre tem que retornar alguma coisa, nem que essa coisa seja nada (void). Observe o retorno dos métodos

class SacaEDeposita {
    public static void main(String[] args) {
      // criando a conta
      Conta minhaConta = new Conta();
      minhaConta.saldo = 1000;
      System.out.println(minhaConta.saca(2000));
    }
}
                            

Objetos e Referências

Objetos e Referências

Quando declaramos uma variável para associar a um objeto, na verdade, essa variável não guarda o objeto, e sim uma maneira de acessá-lo, chamada de referência. É por esse motivo que, diferente dos tipos primitivos como int e long, precisamos dar new depois de declarada a variável:

É correto dizer que minhaConta se refere a um objeto e não que é um objeto.

Lembre-se, uma variável nunca é um objeto

Objetos e Referências

Objetos e Referências

Objetos e Referências

Método transfere()

  • Como realizar uma trasferência?
    • Criando um método transfere(Conta conta1, Conta conta2, double valor)?
    • Essa é uma solução procedural. Ao chamar o método transfere, já existe um objeto do tipo Conta (o this), portanto o método recebe apenas um parâmetro do tipo Conta, a Conta destino (além do valor)

Método transfere()

Para realizar a transferência:

class Programa {
  public static void main(String[] args) {
    // criando a conta
    Conta minhaConta;
    minhaConta = new Conta();
    minhaConta.nome="Rodrigo";
    minhaConta.saldo=1000;

    Conta outraConta = new Conta();
    outraConta.nome="Rodrigo";
    outraConta.saldo=1000;

    //minhaConta transfere para outraConta 100 reais
    minhaConta.transfere(outraConta, 100);
    System.out.println("Saldo da Minha Conta = "+minhaConta.saldo);
    System.out.println("Saldo da Outra Conta = "+outraConta.saldo);
  }
}
//Saldo da Minha Conta = 900.0
//Saldo da Outra Conta = 1100.0

                            

Exercício

Exercício

Exercícios sobre Orientação a Objetos

Linguagem Java e Orientação a Objetos

Exercícios sobre a linguagem Java

Exercícios sobre Orientação a Objetos


LPOO 2 - Java