DEV Community

Emanoel Carvalho
Emanoel Carvalho

Posted on

Propriedades e Comportamento de Objetos em Java

Em Java, um objeto possui propriedades e comportamentos que são fundamentais para o modelo de programação orientada a objetos. As propriedades de um objeto são representadas por atributos (também chamados de campos ou variáveis de instância), enquanto os comportamentos são definidos por métodos (funções que representam ações que o objeto pode realizar).

1. Propriedades (Estado do Objeto)

As propriedades de um objeto definem seu estado. O estado de um objeto é a combinação de valores que seus atributos possuem em determinado momento da execução do programa.

Exemplo de Propriedades (Estado de um Objeto):

class Carro {
    // Propriedades (atributos) do objeto
    String modelo;
    String cor;
    int ano;
    double velocidadeAtual;

    // Método para acelerar
    void acelerar() {
        velocidadeAtual += 10;
        System.out.println("Acelerando... Velocidade atual: " + velocidadeAtual + " km/h");
    }

    // Método para parar
    void parar() {
        velocidadeAtual = 0;
        System.out.println("O carro parou.");
    }
}

public class TesteCarro {
    public static void main(String[] args) {
        // Criando um objeto Carro
        Carro carro = new Carro();

        // Inicializando as propriedades do objeto
        carro.modelo = "Fusca";
        carro.cor = "Azul";
        carro.ano = 1980;
        carro.velocidadeAtual = 0;

        // Exibindo o estado inicial do objeto
        System.out.println("Modelo: " + carro.modelo);
        System.out.println("Cor: " + carro.cor);
        System.out.println("Ano: " + carro.ano);
        System.out.println("Velocidade: " + carro.velocidadeAtual + " km/h");

        // Modificando o estado do objeto através de métodos
        carro.acelerar();
        carro.acelerar();
        carro.parar();
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicação:

  • Propriedades/Estado: Os atributos modelo, cor, ano e velocidadeAtual são as propriedades que definem o estado do objeto carro. Cada instância de Carro pode ter valores diferentes para esses atributos, representando diferentes "estados" do objeto ao longo do tempo.

  • Métodos/Comportamento: Os métodos acelerar e parar alteram o estado do objeto (modificam o valor de velocidadeAtual). Esses métodos representam os comportamentos do objeto e são chamados para alterar ou interagir com seu estado.


2. Comportamento de Objetos (Métodos)

O comportamento de um objeto é definido pelos métodos que ele contém. Em Java, métodos são funções associadas a uma classe ou a um objeto e realizam ações sobre o estado do objeto ou interagem com outros objetos. Esse conceito de método em Java pode ser entendido como algo muito semelhante ao conceito de função em linguagens imperativas, como JavaScript.

Em JavaScript, temos uma função que realiza uma tarefa específica:

function somar(a, b) {
    return a + b;
}
Enter fullscreen mode Exit fullscreen mode

Em Java, essa mesma ideia é representada por um método dentro de uma classe, que pode operar sobre os atributos do objeto:

class Calculadora {
    int somar(int a, int b) {
        return a + b;
    }
}
Enter fullscreen mode Exit fullscreen mode

Embora em JavaScript as funções possam ser definidas de forma independente, em Java, métodos são sempre associados a objetos ou classes. Isso significa que os métodos em Java geralmente operam sobre os atributos (ou estado) de um objeto. Esse conceito de método está mais alinhado à ideia de orientação a objetos, onde o comportamento está diretamente vinculado ao estado do objeto.

Exemplo de Métodos e Comportamento:

class ContaBancaria {
    // Propriedades
    String titular;
    double saldo;

    // Construtor para inicializar a conta
    ContaBancaria(String titular, double saldoInicial) {
        this.titular = titular;
        this.saldo = saldoInicial;
    }

    // Método para depositar dinheiro
    void depositar(double valor) {
        if (valor > 0) {
            saldo += valor;
            System.out.println("Depósito de R$ " + valor + " realizado. Saldo atual: R$ " + saldo);
        } else {
            System.out.println("Valor de depósito inválido.");
        }
    }

    // Método para sacar dinheiro
    void sacar(double valor) {
        if (valor <= saldo) {
            saldo -= valor;
            System.out.println("Saque de R$ " + valor + " realizado. Saldo atual: R$ " + saldo);
        } else {
            System.out.println("Saldo insuficiente.");
        }
    }

    // Método para exibir saldo
    void exibirSaldo() {
        System.out.println("Saldo da conta de " + titular + ": R$ " + saldo);
    }
}

public class TesteContaBancaria {
    public static void main(String[] args) {
        // Criando uma conta bancária
        ContaBancaria conta = new ContaBancaria("João", 1000.0);

        // Exibindo o saldo inicial
        conta.exibirSaldo();

        // Depositando e sacando dinheiro, alterando o estado do objeto
        conta.depositar(500.0);
        conta.sacar(200.0);
        conta.sacar(1500.0); // Tentando sacar mais do que o saldo
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicação:

  • Propriedades/Estado: O estado da conta bancária é representado pelos atributos titular e saldo. Esses atributos armazenam informações sobre o titular da conta e o valor presente nela.

  • Comportamento/Métodos:

    • O método depositar modifica o saldo da conta, alterando o estado do objeto.
    • O método sacar também altera o saldo, mas com uma verificação de que o valor a ser sacado não pode ser superior ao saldo disponível.
    • O método exibirSaldo permite visualizar o estado atual do objeto sem modificá-lo.

3. A Relação entre Estado e Comportamento

O estado de um objeto é alterado pelos comportamentos definidos por seus métodos. Isso reflete a ideia de que os objetos possuem características (estado) que podem ser modificadas ou manipuladas por meio de ações (comportamento). O estado e o comportamento de um objeto são intimamente relacionados, já que as ações dos métodos impactam diretamente o estado dos atributos.

Por exemplo, no código da ContaBancaria, o estado da conta é modificado sempre que o método depositar ou sacar é chamado. Cada vez que esses métodos são executados, o estado do objeto conta muda, mas apenas por meio do comportamento que os métodos oferecem.


4. Encapsulamento

Em Java, é uma boa prática encapsular o estado de um objeto, ou seja, tornar os atributos privados e fornecer métodos públicos para acessá-los e modificá-los. Isso ajuda a proteger o estado interno do objeto e permite controle sobre como ele é alterado.

Exemplo de Encapsulamento:

class Carro {
    // Atributos privados (encapsulados)
    private String modelo;
    private String cor;
    private int ano;

    // Método público para acessar o modelo
    public String getModelo() {
        return modelo;
    }

    // Método público para modificar o modelo
    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    // Métodos de comportamento (acelerar, parar, etc.)
    void acelerar() {
        System.out.println("Acelerando o " + modelo);
    }
}

public class TesteCarro {
    public static void main(String[] args) {
        Carro carro = new Carro();
        carro.setModelo("Fusca"); // Usando o setter para modificar o estado
        System.out.println("Modelo do carro: " + carro.getModelo()); // Usando o getter para acessar o estado
        carro.acelerar();
    }
}
Enter fullscreen mode Exit fullscreen mode

No exemplo acima:

  • O estado do objeto carro é mantido privado, mas pode ser acessado e modificado por meio dos métodos públicos getModelo e setModelo.
  • Isso permite maior controle sobre o que pode ser alterado e garante que o objeto permaneça em um estado válido.

Conclusão

  • Propriedades (Estado): São os atributos de um objeto, que representam as características e condições do objeto em um dado momento. O estado de um objeto pode ser alterado ao longo do tempo.
  • Comportamento (Métodos): São as ações que

um objeto pode realizar. Métodos são funções associadas a uma classe ou objeto e permitem que o objeto interaja com seu estado e com outros objetos, modificando suas propriedades.

  • A relação entre estado e comportamento é fundamental na programação orientada a objetos, pois os comportamentos de um objeto geralmente alteram ou acessam o seu estado.
  • Encapsulamento é uma técnica que ajuda a controlar o acesso ao estado de um objeto, promovendo a integridade e segurança da informação.

Gostaria de enfatizar que o comportamento desses fundamentos, não se restringem somente a linguagem java, e sim a todas em que se é empregado o paradigma de orientação a objetos.

Top comments (0)