Deixe-nos saber primeiro o que é uma classe e um pacote em Java. A classe em java é um modelo para a criação de objetos. Isso significa que as propriedades e ações dos objetos são escritas em classe. As propriedades são representadas por variáveis ​​e as ações dos objetos são representadas por métodos. Portanto, uma classe contém variáveis ​​e métodos. As mesmas variáveis ​​também estão disponíveis nos objetos porque são criadas a partir da classe. Essas variáveis ​​também são chamadas de 'variáveis ​​de instância' porque são criadas dentro do objeto (instância).

Ilustração:

class Human
{
   // Properties --> Instance variables
   String name;
   int age;

   // Actions --> methods
   void speak()
   {

       System.out.println("Hey there! I am " + name);
       System.out.println("My age is " + age);
   }
}

Saída: 

Hey there! I am Vasanth Kumar
My age is 20

Nota: aqui, a palavra-chave class é usada para declarar uma classe. Depois disso, devemos escrever um nome de classe. Na classe, escrevemos variáveis ​​e métodos de instância.

Pacotes em Java

Em Java, os pacotes são uma coleção de classes, subpacotes e interfaces. ou seja, um pacote representa um dicionário que contém um grupo relacionado de classes e interfaces. Sempre que escrevemos uma instrução, seja como mostrado abaixo, estamos importando todas as classes do pacote java.io. *. Aqui, java é um nome de diretório e io é outro subdiretório dentro dele. E o * representa todas as classes e interfaces desse subdiretório io. 

import java.io.*; 

Temos muitos desses pacotes, por exemplo, java.lang, java.util , e existem muitos mais dentro dos quais estão as classes dentro do pacote. Para usar isso, vamos pegar os pacotes usados ​​com mais frequência que são pacotes 'lang' para design java e pacote 'io' para operações de entrada-saída.

Vamos discutir as vantagens dos pacotes em java que são os seguintes:

  1. Os pacotes são úteis para organizar classes relacionadas a interfaces em um grupo. Isso reúne todas as classes e interfaces que executam a mesma tarefa no pacote. Por exemplo, em Java, todas as classes e interfaces que realizam operações de entrada e saída são armazenadas no pacote java.io.
  2. Os pacotes ocultam as classes e interfaces em um subdiretório separado.
  3. As classes e interfaces de um pacote são isoladas das classes e interfaces de outro pacote.

Existem dois tipos de pacotes em java, conforme listado:

  • Tipo 1: pacotes integrados
  • Tipo 2: pacotes definidos pelo usuário

Tipo 1: Pacotes integrados

Esses são os pacotes que já estão disponíveis na linguagem Java. Esses pacotes fornecem quase todas as classes, interfaces e métodos necessários para que o programador execute qualquer tarefa. Eles são os seguintes:

java.lang
java.util
java.io
java.awt
java.net
java.applet
java.text
java.sql

javax.swing

Tipo 2: Pacotes definidos pelo usuário

Assim como os pacotes integrados mostrados anteriormente, o usuário da linguagem java também pode criar seus próprios pacotes. Eles são chamados de Pacotes Definidos pelo Usuário. Esses pacotes também podem ser importados para outras classes e usados ​​exatamente da mesma maneira que os pacotes integrados. 

Sintaxe : Criando um pacote, a palavra-chave do pacote é usada

2.1.1 Para criar um pacote

package package_name ;  

2.1.2 Para criar um subpacote dentro de um pacote

package package_name.subpackagename ;

2.2 Compilar

C:\> javac -d . classname.java

2.3 Para executar o programa

C:\> java packagename.classname

A sintaxe acima é válida apenas para windows CMD shell, fo rlinux e mac zsh shell referem-se à mídia abaixo, pois a percebem da mesma forma fornecida abaixo

Implementação:

Agora vamos dividir a classe em pacotes

Etapa 1: Defina uma classe StudentData que contenha as seguintes informações de um aluno:

  • ID: É uma string que armazena a ID única de cada aluno
  • Nome: É uma string que indica o nome do aluno.

Observe que esses campos devem ser declarados privados.

Etapa 2: Crie outra classe StudentDataExtended com um atributo privado chamado local. É basicamente uma string que armazena a localização do aluno.

Etapa 3: Agora nesta aula, defina um método addDetails() método que armazena os detalhes dos alunos; e um método printDetails() que exibe os detalhes dos alunos na ordem de classificação de seus id.

Nota : Ambas as classes devem estar em pacotes diferentes 

Ilustração:

Enter the number of students : 2

Enter the details of Student 1 (id, name, location):
B200 Ajay Hyderabad

Enter the details of Student 2 (id, name, location):
B100 Ramesh Hyderabad

Saída:

The Student Details are:
B100 Ramesh Hyderabad
B200 Ajay Hyderabad

Implementação:

Agora vamos apresentar exemplos reais executáveis ​​para implementar o que discutimos e ilustramos acima:

Exemplo 1-A:

// Java Program Illustrating Dividion of Classes into
// Packages where Class StudentData
// which creates first package i.e pack1
  
// Importing package
package pack1;
  
// Main class
public class StudentData {
  
    private String id;
    private String name;
  
    // Method 1
    public void addStudentData(String id, String name)
    {
        // This keyword refers to current instance itself
        this.id = id;
        this.name = name;
    }
  
    // Getter setters Methods
  
    // Use getter methods so that we can
    // access private members for other packages
    public String getId() { return id; }
    public String getName() { return name; }
}

Exemplo 1-B:

// Java Program Illustrating Dividion of Classes into
// Packages where Class StudentDataExtended creates
// Second package- pack2 and uses the first package
  
// Importing packages
package pack2;
// Importing required classes
// from pre-defined packages
import java.io.*;
import java.lang.*;
import java.util.*;
import pack1.*;
  
// Main class
class StudentDataExtended extends StudentData {
  
    private String location;
    public void addDetails(String id, String name,
                           String location)
    {
        addStudentData(id, name);
  
        // This keyword refers to current object itself
        this.location = location;
    }
  
    // Method 1
    public static void
    printDetails(TreeMap<String, StudentDataExtended> map)
    {
  
        // Iterating via for each loop
        for (String a : map.keySet()) {
  
            StudentDataExtended student = map.get(a);
  
            // Print ID and name of student
            System.out.println(student.getId() + " "
                               + student.getName() + " "
                               + student.location);
        }
    }
  
    // Method 2
    // Main driver method
    public static void main(String[] args)
    {
  
        // Display a message for asking input from the user
        System.out.print("Enter the number of students : ");
  
        // Scanner class to read user input
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
  
        String buffer = sc.nextLine();
  
        int count = 1;
        // Creating a TreeMap
        TreeMap<String, StudentDataExtended> map
            = new TreeMap<>();
  
        while (n != 0) {
  
            System.out.println(
                "Enter the details of Student " + count
                + " (id, name, location):");
  
            count++;
  
            String details = sc.nextLine();
            String studentInfo[] = details.split(" ");
  
            StudentDataExtended student
                = new StudentDataExtended();
  
            student.addDetails(studentInfo[0],
                               studentInfo[1],
                               studentInfo[2]);
            map.put(studentInfo[0], student);
            n--;
        }
  
        // Display message
        System.out.println("\nThe Student Details are:");
  
        // Calling above method 1 to
        // print details of the students
        printDetails(map);
    }
}

SAÍDA: