JavaLógica de Programação

Orientação a objetos em Java

Orientação a objetos em Java, é perceptível a função do Java para estruturas que se orientam a objetos. Veremos um pouco mais sobre neste artigo. Java é consideravelmente linguagem multiparadigma, afinal é perceptível a funcionalidade para estruturar e orientar objetos. O paradigma orientado a objetos traz boas vantagens, como a reutilização de código, a legibilidade e manutenibilidade do código, a natural modularização e a produção de código mais acessível, já que as estruturas criadas geralmente representam aspectos também existentes no mundo real.

Quando lidamos com o paradigma orientado a objetos, acabamos criando diversas unidades de software através de estruturas chamadas classes. A partir destas classes, podemos criar estruturas chamadas objetos, estruturas estas que interagem entre si. O paradigma é chamado de “orientação a objetos”: As interações necessárias para que o software funcione, acontecem por mensagens e comandos entre objetos.

Classe

Quando falamos sobre orientação a objetos, as classes são uma das estruturas essenciais.

Uma classe funciona como um “molde” para definição de outras estruturas. Use as classes compostas pelo agrupamento de atributos ou características, métodos ou ações. Uma classe define agrupamentos de atributos e métodos que tem correlação e reaproveitamento.

Um exemplo, imagine que você precisa criar uma aplicação para fazer a gestão de uma frota de veículos. Nessa aplicação, com certeza será necessário manipular informações de carros. E todos os carros geralmente possuem um “molde” padrão com características e ações que são comuns a todos os carros.

Os carros, possuem características como:

• Modelo; • Marca; • Fabricante; • Chassi.

E possuem ações em comum, como:

• Ligar; • Acelerar; • Frear; • Desligar.

Você pode criar uma estrutura de código que representasse esse formato padrão para todos os veículos, agrupando justamente estas características e ações. E é exatamente essa estrutura que é uma classe. Nesse caso, poderíamos ter uma classe Carro, que define as características e ações que são comuns para todos os carros.

Declarando classes

Uma outra maneira de usar a orientação a objetos em Java é utilizarmos as classes.

No Java, podemos declarar uma classe da seguinte maneira:

package br.com.cafecodificado;

public class Carro {

    // Atributos ou Características de um carro
    public String modelo;
    public String marca;
    public String chassi;
    public String fabricante;
    
    // Métodos ou ações de um carro
    public void ligar() {
        System.out.println("Carro ligado!");
    }
    
    public void desligar() {
        System.out.println("Carro desligado!");
    }
    
    public void acelerar() {
        System.out.println("Carro acelerando...");
    }
    
    public void frear() {
        System.out.println("Carro freando...");
    }

}

O exemplo acima, são classes que geralmente possuem duas sessões distintas: primeira parte, onde são declaradas as características (que são chamadas de atributos); e uma segunda parte onde são declaradas as ações previstas por aquela classe (que tecnicamente são chamadas de métodos).

Uma classe não é obrigada a ter as duas sessões: podemos ter classes que possuem somente atributos, podemos ter classes que possuem somente métodos e podemos ter classes que possuem ambas as sessões. Tudo vai depender da necessidade.

Objetos

Classes existem para definirmos os nossos moldes, ou seja, para definirmos o formato de estruturas que nosso código irá manipular. Mas, elas servem somente para ser moldes. Se quisermos as utilizar, precisamos colocar algo e criar uma estrutura que seja semelhante a esse molde. E é nesse momento que entram em cena os objetos.

Os objetos são estruturas que vão a partir das classes. Um objeto, quando criado a partir de uma determinada classe, assume que irá possuir os mesmos atributos e os mesmos métodos definidos pela classe. Uma classe pode dar origem a vários objetos distintos entre si que compartilham o mesmo molde.

Declarando objetos

Java, objetos declarados:

package br.com.cafecodificado;

public class Aplicacao {

    public static void main(String args[]) {
      Carro corsa = new Carro();
      corsa.modelo = "Corsa";
      corsa.marca = "Chevrolet";
      corsa.chassi = "ABC123";
      corsa.fabricante = "Chevrolet";
      corsa.ligar();
      corsa.acelerar();
      corsa.frear();
      corsa.desligar();
      System.out.println("Nome do carro: " + corsa.modelo);
      
      Carro gol = new Carro();
      gol.modelo = "Gol";
      gol.marca = "Volkswagen";
      gol.chassi = "DEF456";
      gol.fabricante = "Volkswagen";
      gol.ligar();
      gol.acelerar();
      gol.frear();
      gol.desligar();
      System.out.println("Nome do carro: " + gol.modelo);
    }
}

Neste exemplo, usamos a nossa classe Carro para criar dois objetos a partir dela: os objetos gol e corsa.

No exemplo acima, ainda podemos afirmar que temos duas variáveis do tipo Carro: gol e corsa; embora, em termos técnicos, o correto é dizer que temos duas instâncias da classe Carro: gol e corsa, objetos também são chamados de instâncias de uma classe. Porém, em termos práticos, não há problema em dizer que temos uma variável do tipo de uma classe.

Objetos são importantes por algumas razões, logo aqui, podemos ver algumas características importantes:

• Objetos definem instâncias de classes, o que nos permite usufruir do molde de atributos e métodos definidos por uma classe; • Objetos guardam estado de maneira segregada: veja que o objeto corsa tem suas características definidas de maneira própria, como modelo, marca, chassi e fabricante. O objeto gol também tem exatamente as mesmas características, mas definidas de acordo com o objeto gol. Embora ambos os objetos venham da mesma classe, eles têm seus próprios valores de atributos, valores estes atrelados a cada instância (no caso, as instâncias gol e corsa).

Métodos

Uma outra maneira de usar a orientação a objetos em Java é utilizarmos os métodos.

Partindo do mesmo código acima, temos os métodos. Os métodos são comportamentos e ações que os objetos podem ter.

Assim como no código acima, os objetos gol e corsa, por virem do “molde” Carro, adquirem os atributos e métodos definidos pela classe Carro e, por isso, passam a ter as características com modelo, marca e chassi; e ganham as ações definidas pela classe Carro, como ligar, desligar e acelerar.

    public void ligar() {
        System.out.println("Carro ligado!");
    }

Contudo quando temos objetos, seus atributos (ou características) e métodos (ou ações) são acessados através do “.”. Por exemplo: se eu tenho um Carro chamado corsa e quero acessar seu atributo modelo, devo escrever um código como corsa.modelo. Afinal a mesma coisa vale para métodos: se eu quiser acessar o método ligar do objeto corsa, devo escrever o código corsa.ligar().

Leia também nosso artigo Guia de Linguagem Java