2.2 Τα πακέτα (package) στην Java

Στη γλώσσα προγραμματισμού Java, τα πακέτα χρησιμοποιούνται για να ομαδοποιήσουν σχετικές κλάσεις μαζί. Μπορείς να τα σκεφτείτε ως φακέλους στο σύστημα αρχείων που περιέχουν συναφείς κλάσεις. Ο χρήστης χρησιμοποιεί πακέτα για να αποφύγει συγκρούσεις ονομάτων μεταξύ κλάσεων και για να δημιουργήσει πιο οργανωμένο και ευανάγνωστο κώδικα. Υπάρχουν δύο κατηγορίες πακέτων:

  1. Ενσωματωμένα πακέτα: Περιέχουν κλάσεις που παρέχονται από το Java API (Application Programming Interface) και μπορούν να χρησιμοποιηθούν από τους προγραμματιστές. Αυτά τα πακέτα παρέχουν έτοιμες λειτουργίες και εργαλεία για να αναπτύξεις εφαρμογές.
  2. Πακέτα που ορίζει ο χρήστης: Οι προγραμματιστές μπορούν να δημιουργήσουν τα δικά τους πακέτα για να οργανώσουν τις κλάσεις τους σε λογικές ομάδες. Αυτό βοηθά στη διατήρηση του κώδικα και την επαναχρησιμοποίηση των κλάσεων σε άλλα προγράμματα.

Για να δημιουργήσετε ένα πακέτο στη Java, προσθέστε τη δήλωση package στην αρχή του αρχείου της κλάσης. Με αυτόν τον τρόπο, μπορείτε να ομαδοποιήσετε τις κλάσεις σας σε ένα πακέτο και να τις χρησιμοποιήσετε είτε μέσα στον ίδιο κώδικά σας είτε σε άλλα προγράμματα.

Η δήλωση package αναφέρεται στην οργάνωση των κλάσεων σε ένα ιεραρχικό σύστημα. Το όνομα του πακέτου πρέπει να είναι μοναδικό και να αντιπροσωπεύει τον φάκελο στον οποίο οι κλάσεις ανήκουν. Για παράδειγμα, αν θέλετε να δημιουργήσετε ένα πακέτο με όνομα “com.example”, θα προσθέσετε την εξής δήλωση στην αρχή του αρχείου:

package com.example;

Όταν ομαδοποιείτε τις κλάσεις σε ένα πακέτο, μπορείτε να χρησιμοποιήσετε τις κλάσεις αυτές είτε μέσα στον ίδιο κώδικά σας είτε σε άλλα προγράμματα. Εάν θέλετε να χρησιμοποιήσετε ένα πακέτο από ένα άλλο αρχείο κώδικα, πρέπει να κάνετε την αντίστοιχη δήλωση import στην αρχή του αρχείου.

Η χρήση πακέτων σας επιτρέπει

να οργανώσετε και να διαχειριστείτε καλύτερα τον κώδικά σας, καθώς παρέχει μια ιεραρχική δομή και αποφεύγει τυχόν συγκρούσεις ονομάτων κλάσεων σε διαφορετικά προγράμματα.

Το Java API παρέχει μια εκτενή συλλογή από πακέτα που περιλαμβάνουν συναρτήσεις για διάφορες λειτουργίες. Ορισμένα από τα πιο συνηθισμένα πακέτα περιλαμβάνουν:

  • Το πακέτο java.lang: Περιέχει βασικές κλάσεις και αντικείμενα που χρησιμοποιούνται συχνά στην Java, όπως οι κλάσεις String και System.
  • Το πακέτο java.util: Περιέχει πολλές χρήσιμες κλάσεις και εργαλεία για τη διαχείριση δομών δεδομένων, όπως λίστες, στοίβες, ουρές, ημερολόγια και άλλα.
  • Το πακέτο java.io: Περιέχει κλάσεις για τη διαχείριση των ροών εισόδου/εξόδου, όπως οι κλάσεις FileInputStream και PrintWriter.
  • Το πακέτο java.net: Περιέχει κλάσεις για τη δικτυακή επικοινωνία και το πρωτόκολλο HTTP, όπως οι κλάσεις URL και HttpURLConnection.

Με τη χρήση της εντολής import, μπορείτε να εισάγετε κλάσεις από τα πακέτα του Java API στο πρόγραμμά σας, χωρίς να χρειάζεται να τις δηλώσετε. Αυτό σας επιτρέπει να χρησιμοποιήσετε τις λειτουργίες και τις δυνατότητες που παρέχουν οι εν λόγω κλάσεις, χωρίς να προσθέτετε περιττό κώδικα στο πρόγραμμά σας.

Για παράδειγμα, αν θέλετε να χρησιμοποιήσετε την κλάση ArrayList από το πακέτο java.util, μπορείτε να εισάγετε την κλάση ως εξής:

import java.util.ArrayList;

Μετά την εισαγωγή αυτής της εντολής, μπορείτε να χρησιμοποιήσετε την κλάση ArrayList κανονικά στο πρόγραμμά σας, χωρίς να απαιτείται η δήλωση της κλάσης.

Παράδειγμα:

import java.util.ArrayList;
import java.util.Collections;

public class MyProgram {
  public static void main(String[] args) {
    // Δημιουργία μιας νέας ArrayList με στοιχεία τύπου String
    ArrayList<String> names = new ArrayList<String>();

    // Προσθήκη ονομάτων στην ArrayList
    names.add("Alice");
    names.add("Bob");
    names.add("Charlie");

    // Ταξινόμηση των ονομάτων σε αλφαβητική σειρά
    Collections.sort(names);

    // Εκτύπωση των ονομάτων στην οθόνη
    System.out.println(names);
  }
}

Ο παραπάνω κώδικας πραγματοποιεί τις εξής ενέργειες:

  1. Εισάγει τις απαραίτητες κλάσεις ArrayList και Collections από το πακέτο java.util.
  2. Δημιουργεί μια νέα ArrayList με στοιχεία τύπου String με τη χρήση της δήλωσης ArrayList<String> names = new ArrayList<String>();.
  3. Προσθέτει τρία ονόματα (“Alice”, “Bob”, “Charlie”) στη λίστα με τη χρήση της μεθόδου add της κλάσης ArrayList.
  4. Χρησιμοποιεί τη μέθοδο sort της κλάσης Collections για να ταξινομήσει τα ονόματα σε αλφαβητική σειρά.
  5. Εκτυπώνει τα ονόματα που βρίσκονται στη λίστα με τη χρήση της μεθόδου println της κλάσης System.out.

Συνολικά, ο κώδικας δημιουργεί μια λίστα ονομάτων, ταξινομεί τα ονόματα και τα εκτυπώνει στην οθόνη σε αλφαβητική σειρά.

Εάν εκτελέσετε τον παραπάνω κώδικα, το αποτέλεσμα που θα εμφανιστεί στην οθόνη θα είναι:

[Alice, Bob, Charlie]

Αυτό συμβαίνει επειδή ο κώδικας προσθέτει τα ονόματα “Alice”, “Bob” και “Charlie” στη λίστα, και στη συνέχεια τα ταξινομεί σε αλφαβητική σειρά. Όταν τα ονόματα εκτυπώνονται με τη χρήση της System.out.println, εμφανίζονται ως μια λίστα στο παραπάνω φορμάτ.

[adinserter block=”2″]

Μπορείτε να δημιουργήσετε τα δικά σας πακέτα στη Java για να οργανώσετε τον κώδικά σας και να αποφύγετε τυχόν συγκρούσεις ονομάτων μεταξύ διαφορετικών κλάσεων. Για παράδειγμα, μπορείτε να δημιουργήσετε ένα πακέτο με το όνομα “students” για να διαχειριστείτε τις κλάσεις που σχετίζονται με τους μαθητές. Αυτό μπορεί να επιτευχθεί δημιουργώντας έναν φάκελο με το όνομα “students” και τοποθετώντας μέσα τις σχετικές κλάσεις. Στη συνέχεια, κάθε κλάση που ανήκει στο πακέτο “students” πρέπει να δηλώσει το πακέτο στην αρχή της κλάσης, χρησιμοποιώντας τη δήλωση package students;.

Παράδειγμα:

package students;

public class Student {
  private String name; // Ιδιωτική μεταβλητή για το όνομα του φοιτητή
  private int age; // Ιδιωτική μεταβλητή για την ηλικία του φοιτητή

  public Student(String name, int age) {
    this.name = name; // Ορισμός του ονόματος κατά την δημιουργία του αντικειμένου
    this.age = age; // Ορισμός της ηλικίας κατά την δημιουργία του αντικειμένου
  }

  public String getName() {
    return name; // Επιστροφή του ονόματος του φοιτητή
  }

  public void setName(String name) {
    this.name = name; // Ορισμός του ονόματος του φοιτητή
  }

  public int getAge() {
    return age; // Επιστροφή της ηλικίας του φοιτητή
  }

  public void setAge(int age) {
    this.age = age; // Ορισμός της ηλικίας του φοιτητή
  }
}

Στο παραπάνω παράδειγμα, η κλάση Student ανήκει στο πακέτο “students”, και για να το δηλώσουμε στην κλάση χρησιμοποιούμε τη διακεκριμένη σύνταξη package students; στην αρχή του αρχείου. Όταν θέλουμε να χρησιμοποιήσουμε την κλάση Student σε άλλο αρχείο, μπορούμε να τη δηλώσουμε με το όνομά της και το όνομα του πακέτου που ανήκει:

import students.Student; // Εισαγωγή της κλάσης Student από το πακέτο students

public class Main {
  public static void main(String[] args) {
    Student myStudent = new Student("John", 20); // Δημιουργία ενός αντικειμένου Student με το όνομα "John" και την ηλικία 20
    System.out.println("Name: " + myStudent.getName()); // Εμφάνιση του ονόματος του φοιτητή
    System.out.println("Age: " + myStudent.getAge()); // Εμφάνιση της ηλικίας του φοιτητή
  }
}

Ο πρώτος κώδικας δημιουργεί μια κλάση με όνομα “Person” που περιλαμβάνει μια ιδιωτική μεταβλητή “name” και δύο μεθόδους, τη μέθοδο “getName()” που επιστρέφει την τιμή της μεταβλητής “name” και τη μέθοδο “setName()” που ορίζει την τιμή της μεταβλητής “name”.

Ο δεύτερος κώδικας περιλαμβάνει δύο κλάσεις. Η πρώτη κλάση είναι η “Student” που περιλαμβάνει δύο ιδιωτικές μεταβλητές “name” και “age” και μεθόδους για την ανάκτηση (getter) και την ανάθεση (setter) των τιμών αυτών των μεταβλητών. Η δεύτερη κλάση με όνομα “Main” περιέχει την μέθοδο “main” όπου δημιουργεί ένα αντικείμενο της κλάσης “Student” με τις παραμέτρους “John” και 20, και εμφανίζει το όνομα και την ηλικία του φοιτητή στην οθόνη μέσω της χρήσης των μεθόδων “getName()” και “getAge()”.

Συνολικά, οι δύο κώδικες δημιουργούν κλάσεις που περιγράφουν ένα άτομο (Person) και ένα φοιτητή (Student) αντίστοιχα, και χρησιμοποιούν τις μεθόδους για να ανακτήσουν και να ορίσουν τιμές των μεταβλητών που αντιπροσωπεύουν το όνομα και την ηλικία του ατόμου ή του φοιτητή.

Το αποτέλεσμα στην οθόνη, με βάση τον δεύτερο κώδικα, θα είναι:

Name: John
Age: 20

Αυτό συμβαίνει επειδή δημιουργείται ένα αντικείμενο της κλάσης “Student” με τιμές “John” και 20 για το όνομα και την ηλικία αντίστοιχα. Στη συνέχεια, με τη χρήση των μεθόδων “getName()” και “getAge()” αντίστοιχα, εμφανίζονται στην οθόνη το όνομα “John” και η ηλικία 20.

Η χρήση πακέτων είναι ένας σημαντικός τρόπος οργάνωσης και διατήρησης του κώδικα σε μεγάλα προγράμματα.

Στην Java, το πακέτο αναπαριστά έναν φάκελο ή έναν κατάλογο που περιέχει συναφή κλάσεις και παρέχει οργάνωση και δομή στον κώδικα. Τα πακέτα μπορούν να περιέχουν άλλα πακέτα, καθώς και κλάσεις και άλλα στοιχεία του κώδικα.

Η Java API είναι μια συλλογή προγραμματιστικών κλάσεων και μεθόδων που παρέχονται από την Oracle και είναι διαθέσιμη για χρήση. Περιέχει πληθώρα στοιχείων για διάφορες λειτουργίες, όπως διαχείριση εισόδου-εξόδου, προγραμματισμό βάσεων δεδομένων και άλλα. Μπορείτε να βρείτε την πλήρη λίστα των κλάσεων και μεθόδων που περιλαμβάνει η Java API στην ιστοσελίδα της Oracle.

Ο κώδικας μπορεί να εισάγει είτε μια μεμονωμένη κλάση από ένα πακέτο, χρησιμοποιώντας τη δήλωση import, είτε ολόκληρο το πακέτο που περιλαμβάνει όλες τις κλάσεις του, χρησιμοποιώντας τη δήλωση import με wildcards (*). Αυτό δίνει τη δυνατότητα πρόσβασης στις κλάσεις και τις μεθόδους που ανήκουν στο πακέτο και τη χρήση τους στον κώδικα.

Για να χρησιμοποιήσετε μια κλάση ή ένα πακέτο από τη βιβλιοθήκη, πρέπει να χρησιμοποιήσετε τη λέξη-κλειδί import:

Σύνταξη:

import package.name.ClassName;   // Import a single class
import package.name.*;          // Import a whole package

Η εισαγωγή μιας κλάσης (Import a Class) στην Java αναφέρεται στη δήλωση ενός πακέτου και μιας κλάσης από ένα άλλο αρχείο κώδικα, προκειμένου να μπορέσει να χρησιμοποιηθεί στο τρέχον αρχείο.

Για να εισάγετε μια κλάση, χρησιμοποιείτε τη δήλωση “import” ακολουθούμενη από το πακέτο και το όνομα της κλάσης που θέλετε να εισαγάγετε. Για παράδειγμα:

import mypackage.MyClass;

Με αυτόν τον τρόπο, μπορείτε να χρησιμοποιήσετε την κλάση “MyClass” από το πακέτο “mypackage” στο τρέχον αρχείο κώδικα.

Η εισαγωγή μιας κλάσης με τη χρήση της δήλωσης “import” επιτρέπει την πρόσβαση στις μεθόδους, τα πεδία και τις ιδιότητες της κλάσης αυτής χωρίς την ανάγκη για πλήρη προσδιορισμό του πακέτου και του ονόματος της κάθε φορά που τη χρησιμοποιείτε.

Παράδειγμα:

import java.util.Scanner;

Στον παραπάνω κώδικα, η λέξη import δηλώνει ότι θέλουμε να εισαγάγουμε μια κλάση. Η σύνταξη java.util.Scanner δηλώνει την πλήρη διαδρομή της κλάσης Scanner στο πακέτο java.util.

[adinserter block=”3″]

Μετά τη δήλωση εισαγωγής της κλάσης, μπορείτε να δημιουργήσετε ένα νέο αντικείμενο της κλάσης Scanner και να χρησιμοποιήσετε τις μεθόδους της για να λάβετε εισόδους από τον χρήστη.

Παράδειγμα:

import java.util.Scanner;

public class MyClass {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in); // Δημιουργία αντικειμένου Scanner για λήψη εισόδου από τον χρήστη
        System.out.println("Δώστε έναν αριθμό: "); // Εμφάνιση μηνύματος προς τον χρήστη
        int num = myScanner.nextInt(); // Ανάγνωση ακέραιου αριθμού από τον χρήστη
        System.out.println("Ο αριθμός που δώσατε είναι: " + num); // Εμφάνιση του αριθμού που δώθηκε από τον χρήστη
    }
}

Ο παραπάνω κώδικας παρουσιάζει ένα πρόγραμμα που ζητά από τον χρήστη να εισάγει έναν αριθμό και στη συνέχεια τον εμφανίζει στην οθόνη. Αναλυτικότερα, το πρόγραμμα κάνει τα εξής:

  1. Αρχικά, εισάγει την κλάση Scanner από τη βιβλιοθήκη java.util για να μπορέσει να λάβει είσοδο από τον χρήστη.
  2. Δημιουργεί ένα αντικείμενο της κλάσης Scanner, με όνομα myScanner, που διαβάζει είσοδο από το πληκτρολόγιο (System.in).
  3. Εμφανίζει το μήνυμα “Δώστε έναν αριθμό: ” για να ζητήσει από τον χρήστη να εισάγει έναν αριθμό.
  4. Ο αριθμός που δίνει ο χρήστης αποθηκεύεται στη μεταβλητή num με τη χρήση της μεθόδου nextInt() του αντικειμένου myScanner.
  5. Εμφανίζει το μήνυμα “Ο αριθμός που δώσατε είναι: ” ακολουθούμενο από την τιμή της μεταβλητής num, χρησιμοποιώντας τη μέθοδο println() της κλάσης System.out.
  6. Ο κώδικας τερματίζει και το πρόγραμμα ολοκληρώνεται.

Αν υποθέσουμε ότι ο χρήστης εισάγει τον αριθμό 5, το αποτέλεσμα στην οθόνη θα είναι:

Δώστε έναν αριθμό:
5
Ο αριθμός που δώσατε είναι: 5

Δηλαδή, θα εμφανιστούν τα αντίστοιχα μηνύματα και ο αριθμός που δόθηκε θα εμφανιστεί μετά το κείμενο “Ο αριθμός που δώσατε είναι: “.

Παράδειγμα:

import java.util.Scanner;

public class UserInputExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // Δημιουργία ενός αντικειμένου Scanner για λήψη εισόδου από τον χρήστη

        System.out.print("Παρακαλώ εισάγετε το όνομά σας: "); // Εμφάνιση μηνύματος ζητώντας από τον χρήστη να εισάγει το όνομά του
        String name = scanner.nextLine(); // Ανάγνωση της εισόδου του χρήστη ως αλφαριθμητικό

        System.out.print("Παρακαλώ εισάγετε την ηλικία σας: "); // Εμφάνιση μηνύματος ζητώντας από τον χρήστη να εισάγει την ηλικία του
        int age = scanner.nextInt(); // Ανάγνωση της εισόδου του χρήστη ως ακέραιο

        System.out.println("Το όνομά σας είναι " + name + " και είστε " + age + " ετών."); // Εμφάνιση της ονομασίας και ηλικίας που δόθηκαν από τον χρήστη
    }
}

Ο κώδικας αυτός δημιουργεί ένα αντικείμενο τύπου Scanner, το οποίο χρησιμοποιείται για να λάβει είσοδο από τον χρήστη. Στη συνέχεια, ζητά από τον χρήστη να εισάγει το όνομά του και την ηλικία του. Η εισαγωγή γίνεται από το πληκτρολόγιο.

Αφού ληφθούν οι τιμές του ονόματος και της ηλικίας, ο κώδικας εμφανίζει ένα μήνυμα που περιέχει το όνομα και την ηλικία που εισήγαγε ο χρήστης.

Ουσιαστικά, ο κώδικας δίνει τη δυνατότητα στον χρήστη να εισάγει τα στοιχεία του και στη συνέχεια εμφανίζει αυτά τα στοιχεία στην οθόνη.

Παρακαλώ εισάγετε το όνομά σας: John Smith
Παρακαλώ εισάγετε την ηλικία σας: 30
Το όνομά σας είναι John Smith και είστε 30 ετών.

Η εισαγωγή ενός πακέτου (importing a package) στην Java επιτρέπει τη χρήση κλάσεων και άλλων στοιχείων που ανήκουν σε αυτό το πακέτο. Αυτό γίνεται με τη χρήση της δήλωσης import στην αρχή του κώδικα, πριν από τη δήλωση της κλάσης.

Όταν εισάγουμε ένα πακέτο, μπορούμε να χρησιμοποιήσουμε όλες τις διαθέσιμες κλάσεις και στοιχεία από αυτό το πακέτο χωρίς να χρειάζεται να γράψουμε το πλήρες όνομά τους κάθε φορά.

Ένα παράδειγμα εισαγωγής ενός πακέτου είναι η εξής δήλωση:

import java.util.Scanner;

Με την παραπάνω δήλωση, εισάγουμε το πακέτο java.util, το οποίο περιέχει την κλάση Scanner. Έτσι, μπορούμε να χρησιμοποιήσουμε την κλάση Scanner στον κώδικά μας χωρίς να γράψουμε το πλήρες όνομά της.

Το παρακάτω παράδειγμα θα εισάγει όλες τις κλάσεις που βρίσκονται στο πακέτο java.util:

import java.util.*;

Με τη χρήση της παραπάνω δήλωσης εισαγωγής (import statement), ο κώδικας θα έχει πρόσβαση σε όλες τις κλάσεις που ανήκουν στο πακέτο java.util, χωρίς να απαιτείται η αναφορά της πλήρους ονομασίας κάθε κλάσης κατά τη χρήση της.

Αφού εισάγετε ένα πακέτο στον κώδικά σας, μπορείτε να χρησιμοποιήσετε οποιαδήποτε κλάση περιλαμβάνεται σε αυτό το πακέτο, χωρίς να χρειάζεται να αναφέρετε το όνομ ατου πακέτου του πακέτου κάθε φορά που χρησιμοποιείτε μια κλάση από αυτό. Αυτό σας επιτρέπει να απλοποιήσετε τη σύνταξη του κώδικα σας και να καλείτε απευθείας τις κλάσεις από το πακέτο που έχετε εισάγει.

Παράδειγμα:

import java.util.*; // Εισαγωγή της Java βιβλιοθήκης java.util

public class MyClass {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in); // Δημιουργία αντικειμένου Scanner για λήψη εισόδου από το χρήστη
        Random myRandom = new Random(); // Δημιουργία αντικειμένου Random για δημιουργία τυχαίων αριθμών
        Date myDate = new Date(); // Δημιουργία αντικειμένου Date για αναπαράσταση της τρέχουσας ημερομηνίας και ώρας

        System.out.println("Παρακαλώ εισάγετε έναν αριθμό:"); // Εμφάνιση μηνύματος προς τον χρήστη
        int num = myScanner.nextInt(); // Λήψη ακέραιας τιμής από τον χρήστη και αποθήκευση στη μεταβλητή num
        System.out.println("Ο αριθμός που δώσατε είναι: " + num); // Εμφάνιση του αριθμού που δόθηκε από τον χρήστη

        int randomNum = myRandom.nextInt(101); // Παραγωγή τυχαίου αριθμού από 0 έως 100 και αποθήκευση στη μεταβλητή randomNum
        System.out.println("Τυχαίος αριθμός από 0 έως 100: " + randomNum); // Εμφάνιση του τυχαίου αριθμού που παράχθηκε

        System.out.println("Η τρέχουσα ημερομηνία και ώρα είναι: " + myDate); // Εμφάνιση της τρέχουσας ημερομηνίας και ώρας
    }
}

[adinserter block=”4″]

Ο παραπάνω κώδικας πραγματοποιεί τις εξής λειτουργίες:

  1. Εισάγει τη βιβλιοθήκη java.util που περιλαμβάνει τις κλάσεις Scanner, Random και Date.
  2. Δημιουργεί ένα αντικείμενο Scanner με όνομα myScanner για τη λήψη εισόδου από τον χρήστη.
  3. Δημιουργεί ένα αντικείμενο Random με όνομα myRandom για τη δημιουργία τυχαίων αριθμών.
  4. Δημιουργεί ένα αντικείμενο Date με όνομα myDate για την αναπαράσταση της τρέχουσας ημερομηνίας και ώρας.
  5. Εμφανίζει ένα μήνυμα που ζητά από τον χρήστη να εισάγει έναν αριθμό.
  6. Λαμβάνει τον αριθμό που έδωσε ο χρήστης μέσω του αντικειμένου myScanner και τον αποθηκεύει στη μεταβλητή num.
  7. Εμφανίζει τον αριθμό που δόθηκε από τον χρήστη.
  8. Δημιουργεί έναν τυχαίο αριθμό από το 0 έως το 100 μέσω του αντικειμένου myRandom και τον αποθηκεύει στη μεταβλητή randomNum.
  9. Εμφανίζει τον τυχαίο αριθμό που δημιουργήθηκε.
  10. Εμφανίζει την τρέχουσα ημερομηνία και ώρα μέσω του αντικειμένου myDate.

Συνολικά, ο κώδικας ζητάει από τον χρήστη να εισάγει έναν αριθμό, δημιουργεί έναν τυχαίο αριθμό και εμφανίζει την τρέχουσα ημερομηνία και ώρα.

Το αποτέλεσμα που θα εμφανιστεί στην οθόνη θα εξαρτηθεί από την είσοδο που θα δώσει ο χρήστης και την τυχαιότητα του τυχαίου αριθμού. Όμως, ένα παράδειγμα πιθανού αποτελέσματος είναι:

Παρακαλώ εισάγετε έναν αριθμό:
42
Ο αριθμός που δώσατε είναι: 42
Τυχαίος αριθμός από 0 έως 100: 67
Η τρέχουσα ημερομηνία και ώρα είναι: Wed Jun 09 14:30:00 EEST 2023

Τα ακριβή αποτελέσματα μπορεί να διαφέρουν ανάλογα με την είσοδο του χρήστη και την τυχαιότητα του τυχαίου αριθμού που δημιουργείται.

Στην Java, μπορείτε να δημιουργήσετε δικά σας πακέτα (user-defined packages) για να οργανώσετε τον κώδικά σας σε λογικές μονάδες και να αποφύγετε τυχόν συγκρούσεις ονομάτων με άλλες κλάσεις.

Για να δημιουργήσετε ένα δικό σας πακέτο, ακολουθήστε τα παρακάτω βήματα:

  1. Δημιουργήστε ένα νέο φάκελο στον υπολογιστή σας με το όνομα του πακέτου. Για παράδειγμα, αν θέλετε να δημιουργήσετε ένα πακέτο με όνομα “myPackage”, δημιουργήστε έναν φάκελο με όνομα “myPackage”.
  2. Μέσα στο φάκελο του πακέτου, δημιουργήστε τα αρχεία κλάσεων σας. Για παράδειγμα, μπορείτε να δημιουργήσετε ένα αρχείο κλάσης με όνομα “MyClass.java” μέσα στον φάκελο “myPackage”.
  3. Στην αρχή του αρχείου κλάσης, προσθέστε τη δήλωση πακέτου. Για παράδειγμα, για την κλάση “MyClass” στο πακέτο “myPackage”, η δήλωση πακέτου θα είναι: package myPackage;
  4. Ορίστε τις κλάσεις και τις μεθόδους σας μέσα στο αρχείο κλάσης, σύμφωνα με τις ανάγκες σας.

Αφού δημιουργήσετε το δικό σας πακέτο, μπορείτε να το χρησιμοποιήσετε σε άλλα αρχεία κλάσεων προσθέτοντας την δήλωση import στην αρχή των αρχείων κλάσεων που το χρησιμοποιούν. Για παράδειγμα, αν θέλετε να χρησιμοποιήσετε την κλάση “MyClass” από το πακέτο “myPackage” σε ένα άλλο αρχείο κλάσης, θα προσθέσετε τη δήλωση import myPackage.MyClass; στην αρχή του αρχείου κλάσης.

Παράδειγμα:

  1. Δημιουργήστε ένα φάκελο με το όνομα του πακέτου στον οποίο θέλετε να αποθηκεύσετε τις κλάσεις σας.
  2. Αποθηκεύστε τις κλάσεις σας στο φάκελο που δημιουργήσατε.
  3. Προσθέστε στην αρχή των αρχείων που περιέχουν τις κλάσεις σας τη δήλωση πακέτου, όπως φαίνεται παρακάτω:
package mypack;

public class MyClass {
    // κώδικας εδώ
}

Στο παραπάνω παράδειγμα, δημιουργούμε ένα νέο πακέτο με το όνομα mypack και περιλαμβάνουμε μια κλάση MyClass σε αυτό το πακέτο. Αποθηκεύουμε την κλάση MyClass στον φάκελο mypack που δημιουργήσαμε.

Για να χρησιμοποιήσετε την κλάση MyClass σε ένα άλλο αρχείο, θα πρέπει να εισαγάγετε το πακέτο mypack. Παρακάτω είναι ένα παράδειγμα:

import mypack.*; // Εισαγωγή του πακέτου mypack

public class MyOtherClass {
    public static void main(String[] args) {
        MyClass myObj = new MyClass(); // Δημιουργία νέου αντικειμένου της κλάσης MyClass
        myObj.myMethod(); // Κλήση της μεθόδου myMethod από το αντικείμενο myObj
    }
}

Στο παραπάνω παράδειγμα, χρησιμοποιούμε τη δήλωση import mypack.*; για να εισαγάγουμε όλες τις κλάσεις στο πακέτο mypack. Στη συνέχεια, δημιουργούμε ένα νέο αντικείμενο της κλάσης MyClass και καλούμε τη μέθοδο myMethod() της κλάσης αυτής.

Πρέπει να σημειωθεί ότι τα ονόματα πακέτων πρέπει να είναι μοναδικά και να ξεκινούν με ένα domain name που αντιστοιχεί στη δική σας εταιρεία ή οργανισμό, αντίστοιχα. Μπορείτε να χρησιμοποιήσετε το αντίστροφο domain name σας (reverse domain name) ως το όνομα του βασικού πακέτου σας, για παράδειγμα com.example.mypack.

Παρακάτω είναι ένα παράδειγμα με τη χρήση ενός domain name:

package com.example.mypack;

public class MyClass {
    // κώδικας εδώ
}

Στο παραπάνω παράδειγμα, χρησιμοποιούμε το domain name com.example για να δημιουργήσουμε το πακέτο mypack.

Για να μεταγλωττίσετε το πακέτο που δημιουργήσατε, πρέπει να εκτελέσετε την εντολή javac στο φάκελο που περιέχει τα αρχεία του πακέτου σας.

Υποθέτοντας ότι η κλάση MyClass είναι η μόνη κλάση στο πακέτο mypack, η εντολή θα είναι η εξής:

javac mypack/MyClass.java

Η εντολή αυτή θα μεταγλωττίσει την κλάση MyClass και θα δημιουργήσει ένα αρχείο MyClass.class στον ίδιο φάκελο.

Σημείωση: Αν η κλάση MyClass χρησιμοποιεί άλλες κλάσεις στο ίδιο πακέτο ή άλλα πακέτα, θα πρέπει να μεταγλωττίσετε επίσης όλες τις σχετικές κλάσεις. Παραδείγματος χάρη, αν η κλάση MyClass χρησιμοποιεί την κλάση MyOtherClass στο πακέτο mypack, η εντολή μεταγλώττισης θα είναι η εξής:

javac mypack/MyClass.java mypack/MyOtherClass.java
14 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων