Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Dominando Java: Entendendo Objetos, Classes e Conceitos Fundamentais de POO

Java é uma Linguagem Orientada a Objetos. Como uma linguagem que possui o recurso Orientado a Objetos, Java suporta os seguintes conceitos fundamentais:

Neste capítulo, veremos os conceitos - Classes e Objetos.

Objetos em Java

Vamos agora olhar profundamente no que são objetos. Se considerarmos o mundo real, podemos encontrar muitos objetos ao nosso redor, carros, cachorros, humanos, etc. Todos esses objetos têm um estado e um comportamento.

Se considerarmos um cachorro, então seu estado é - nome, raça, cor, e o comportamento é - latir, abanar o rabo, correr.

Se você comparar o objeto de software com um objeto do mundo real, eles têm características muito similares.

Objetos de software também têm um estado e um comportamento. O estado de um objeto de software é armazenado em campos e o comportamento é mostrado via métodos.

Então no desenvolvimento de software, métodos operam no estado interno de um objeto e a comunicação objeto-a-objeto é feita via métodos.

Classes em Java

Uma classe é um blueprint a partir do qual objetos individuais são criados.

Seguindo está um exemplo de uma classe.

Exemplo

public class Dog {
    String breed;
    int age;
    String color;
    void barking() { }
    void hungry() { }
    void sleeping() { }
}

Uma classe pode conter qualquer dos seguintes tipos de variáveis.

Uma classe pode ter qualquer número de métodos para acessar o valor de vários tipos de métodos. No exemplo acima, barking(), hungry() e sleeping() são métodos.

Seguem alguns dos tópicos importantes que precisam ser discutidos ao olhar para classes da Linguagem Java.

Construtores

Quando discutindo sobre classes, um dos subtópicos mais importantes seria construtores. Toda classe tem um construtor. Se não escrevermos explicitamente um construtor para uma classe, o compilador Java constrói um construtor padrão para aquela classe.

Cada vez que um novo objeto é criado, pelo menos um construtor será invocado. A regra principal de construtores é que eles devem ter o mesmo nome da classe. Uma classe pode ter mais de um construtor.

Seguindo está um exemplo de um construtor:

Exemplo

public class Puppy {
    public Puppy() { }
    public Puppy(String name) {
        // Este construtor tem um parâmetro, name.
    }
}

Java também suporta Classes Singleton onde você seria capaz de criar apenas uma instância de uma classe.

Nota − Temos dois tipos diferentes de construtores. Vamos discutir construtores em detalhes nos capítulos subsequentes.

Criando um Objeto

Como mencionado anteriormente, uma classe fornece os blueprints para objetos. Então basicamente, um objeto é criado a partir de uma classe. Em Java, a palavra-chave new é usada para criar novos objetos.

Existem três passos ao criar um objeto a partir de uma classe:

Seguindo está um exemplo de criação de um objeto:

Exemplo

Demo Ao Vivo
public class Puppy {
    public Puppy(String name) {
        // Este construtor tem um parâmetro, name.
        System.out.println("Nome Passado é :" + name );
    }
    public static void main(String []args) {
        // A seguinte instrução criaria um objeto myPuppy
        Puppy myPuppy = new Puppy( "tommy" );
    }
}

Se compilarmos e executarmos o programa acima, então ele produzirá o seguinte resultado:

Saída

Nome Passado é :tommy

Acessando Variáveis de Instância e Métodos

Variáveis de instância e métodos são acessados via objetos criados. Para acessar uma variável de instância, seguindo está o caminho totalmente qualificado:

/* Primeiro crie um objeto */
ObjectReference = new Constructor();
/* Agora chame uma variável como segue */
ObjectReference.variableName;
/* Agora você pode chamar um método de classe como segue */
ObjectReference.MethodName();

Exemplo

Este exemplo explica como acessar variáveis de instância e métodos de uma classe.

Demo Ao Vivo
public class Puppy {
    int puppyAge;
    public Puppy(String name) {
        // Este construtor tem um parâmetro, name.
        System.out.println("Nome Escolhido é :" + name );
    }
    public void setAge( int age ) {
        puppyAge = age;
    }
    public int getAge( ) {
        System.out.println("Idade do Filhote é :" + puppyAge );
        return puppyAge;
    }
    public static void main(String []args) {
        /* Criação do objeto */
        Puppy myPuppy = new Puppy( "tommy" );
        /* Chamar método da classe para definir idade do filhote */
        myPuppy.setAge( 2 );
        /* Chamar outro método da classe para obter idade do filhote */
        myPuppy.getAge( );
        /* Você pode acessar variável de instância como segue também */
        System.out.println("Valor da Variável :" + myPuppy.puppyAge );
    }
}

Se compilarmos e executarmos o programa acima, então ele produzirá o seguinte resultado:

Saída

Nome Escolhido é :tommy
Idade do Filhote é :2
Valor da Variável :2

Regras de Declaração de Arquivo Fonte

Como a última parte desta seção, vamos agora olhar para as regras de declaração de arquivo fonte. Estas regras são essenciais ao declarar classes, instruções import e package em um arquivo fonte.

Classes têm vários níveis de acesso e existem diferentes tipos de classes; classes abstratas, classes final, etc. Estaremos explicando sobre todos estes no capítulo de modificadores de acesso.

Além dos tipos de classes mencionados acima, Java também tem algumas classes especiais chamadas Classes Internas e Classes Anônimas.

Pacote Java

Em palavras simples, é uma forma de categorizar as classes e interfaces. Ao desenvolver aplicações em Java, centenas de classes e interfaces serão escritas, portanto categorizar estas classes é obrigatório assim como torna a vida muito mais fácil.

Instruções Import

Em Java, se um nome totalmente qualificado, que inclui o pacote e o nome da classe é dado, então o compilador pode facilmente localizar o código fonte ou classes. Instrução import é uma forma de dar a localização adequada para o compilador encontrar aquela classe particular.

Por exemplo, a seguinte linha pediria ao compilador para carregar todas as classes disponíveis no diretório java_installation/java/io:

import java.io.*;

Um Estudo de Caso Simples

Para nosso estudo de caso, criaremos duas classes. Elas são Employee e EmployeeTest.

Primeiro abra o bloco de notas e adicione o seguinte código. Lembre-se que esta é a classe Employee e a classe é uma classe pública. Agora, salve este arquivo fonte com o nome Employee.java.

A classe Employee tem quatro variáveis de instância - name, age, designation e salary. A classe tem um construtor explicitamente definido, que recebe um parâmetro.

Exemplo

import java.io.*;
public class Employee {
    String name;
    int age;
    String designation;
    double salary;

    // Este é o construtor da classe Employee
    public Employee(String name) {
        this.name = name;
    }

    // Atribuir a idade do Employee à variável age.
    public void empAge(int empAge) {
        age = empAge;
    }

    /* Atribuir a designação à variável designation. */
    public void empDesignation(String empDesig) {
        designation = empDesig;
    }

    /* Atribuir o salário à variável salary. */
    public void empSalary(double empSalary) {
        salary = empSalary;
    }

    /* Imprimir detalhes do Employee */
    public void printEmployee() {
        System.out.println("Nome:"+ name );
        System.out.println("Idade:" + age );
        System.out.println("Designação:" + designation );
        System.out.println("Salário:" + salary);
    }
}

Como mencionado anteriormente neste tutorial, o processamento começa a partir do método main. Portanto, para que possamos executar esta classe Employee, deve haver um método main e objetos devem ser criados. Criaremos uma classe separada para estas tarefas.

Seguindo está a classe EmployeeTest, que cria duas instâncias da classe Employee e invoca os métodos para cada objeto para atribuir valores para cada variável.

Salve o seguinte código no arquivo EmployeeTest.java.

import java.io.*;
public class EmployeeTest {
    public static void main(String args[]) {
        /* Criar dois objetos usando construtor */
        Employee empOne = new Employee("James Smith");
        Employee empTwo = new Employee("Mary Anne");

        // Invocando métodos para cada objeto criado
        empOne.empAge(26);
        empOne.empDesignation("Senior Software Engineer");
        empOne.empSalary(1000);
        empOne.printEmployee();

        empTwo.empAge(21);
        empTwo.empDesignation("Software Engineer");
        empTwo.empSalary(500);
        empTwo.printEmployee();
    }
}

Agora, compile ambas as classes e então execute EmployeeTest para ver o resultado como segue:

Saída

C:\> javac Employee.java
C:\> javac EmployeeTest.java
C:\> java EmployeeTest
Nome:James Smith
Idade:26
Designação:Senior Software Engineer
Salário:1000.0
Nome:Mary Anne
Idade:21
Designação:Software Engineer
Salário:500.0

O que Vem a Seguir?

Na próxima sessão, discutiremos os tipos de dados básicos em Java e como eles podem ser usados ao desenvolver aplicações Java.

Java

  1. Classes e Objetos em C#: Fundamentos para POO Robusta
  2. Classes e Objetos em C++: Guia Prático de Programação Orientada a Objetos
  3. Funções Amigas e Classes Amigas em C++: Dominando o Controle de Acesso
  4. Variáveis e Literais em Java: Guia Completo
  5. Classes e Objetos em Java: Guia Prático
  6. Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
  7. Operador instanceof em Java: Guia Completo
  8. Classes e Métodos Abstratos em Java: Guia Completo
  9. Dominando Classes Aninhadas e Internas em Java: Tipos, Exemplos e Boas Práticas
  10. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos