1.2 Κλασσεις και αντικείμενα στην Java

Στη γλώσσα προγραμματισμού Java, μπορούμε να δημιουργήσουμε μια κλάση χρησιμοποιώντας τη λέξη-κλειδί “class”. Η κλάση αυτή καθορίζει τα χαρακτηριστικά και τις μεθόδους που περιγράφουν τα αντικείμενα που προκύπτουν από αυτήν.

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

public class Person {
    String name; // Μεταβλητή για το όνομα του ατόμου
    int age; // Μεταβλητή για την ηλικία του ατόμου

    public void sayHello() {
        System.out.println("Hello, my name is " + name + " and I am " + age + " years old."); // Εκτύπωση μηνύματος καλωσορίσματος με το όνομα και την ηλικία
    }
}

Ο παραπάνω κώδικας αναπαριστά μια κλάση με το όνομα “Person” (Άτομο). Η κλάση αυτή έχει δύο μεταβλητές, τη μεταβλητή “name” (όνομα) τύπου String και τη μεταβλητή “age” (ηλικία) τύπου int.

Επίσης, η κλάση διαθέτει μια μέθοδο με το όνομα “sayHello” (πες Γεια) η οποία εκτυπώνει ένα μήνυμα καλωσορίσματος. Το μήνυμα περιλαμβάνει το όνομα του ατόμου (αναφερόμενο στη μεταβλητή “name”) και την ηλικία του (αναφερόμενο στη μεταβλητή “age”). Η εμφάνιση του μηνύματος γίνεται με τη χρήση της μεθόδου “System.out.println()” που εκτυπώνει το περιεχόμενο στην κονσόλα.

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

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

[adinserter block=”2″]

Person person1 = new Person();

Αφού δημιουργήσουμε ένα αντικείμενο από μια κλάση, μπορούμε να ορίσουμε τιμές στα χαρακτηριστικά του αντικειμένου με τη χρήση του τελεστή “.” (dot operator):

person1.name = "John";
person1.age = 30;

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

person1.sayHello();

Παρακάτω βλέπουμε πώς μπορούμε να δημιουργήσουμε περισσότερα αντικείμενα της κλάσης “Person” και να ορίσουμε τιμές για τα χαρακτηριστικά τους:

Person person2 = new Person();
person2.name = "Mary";
person2.age = 25;

Person person3 = new Person();
person3.name = "Bob";
person3.age = 40;

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

person1.sayHello();
person2.sayHello();
person3.sayHello();

Παραπάνω εκτυπώνουμε το μήνυμα υποδοχής για τα αντικείμενα “person1”, “person2” και “person3” που αντιστοιχούν στους ανθρώπους “John”, “Mary” και “Bob” αντίστοιχα, με τις αντίστοιχες ηλικίες.

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

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

Η κλάση “Person” δημιουργεί ένα πρότυπο για ένα άτομο με δύο ιδιότητες, το όνομα (“name”) τύπου String και την ηλικία (“age”) τύπου int.

Η κλάση “Main” περιέχει τη μέθοδο “main”, η οποία είναι η εκκίνηση του προγράμματος. Μέσα στη μέθοδο “main” δημιουργείται ένα αντικείμενο της κλάσης “Person” με το όνομα “person1”. Στη συνέχεια, ορίζονται οι τιμές των ιδιοτήτων του αντικειμένου, δηλαδή το όνομα “John” και η ηλικία 20.

Τέλος, μέσω της μεθόδου “println()” της κλάσης “System”, εκτυπώνονται οι τιμές των ιδιοτήτων του αντικειμένου “person1” στην οθόνη. Ειδικότερα, εκτυπώνεται το μήνυμα “Name: ” ακολουθούμενο από την τιμή της ιδιότητας “name” του αντικειμένου και το μήνυμα “Age: ” ακολουθούμενο από την τιμή της ιδιότητας “age” του αντικειμένου.

Person.java:

public class Person {
    // Δημιουργία μεταβλητής "name" τύπου String για το όνομα του ατόμου
    String name;
    
    // Δημιουργία μεταβλητής "age" τύπου int για την ηλικία του ατόμου
    int age;
}

Main.java:

public class Main {
    public static void main(String[] args) {
        // Δημιουργία αντικειμένου Person με τη χρήση του προκαθορισμένου κατασκευαστή
        Person person1 = new Person();

        // Ορισμός των ιδιοτήτων του αντικειμένου person1
        person1.name = "John";
        person1.age = 20;

        // Εκτύπωση του ονόματος του ατόμου
        System.out.println("Name: " + person1.name);

        // Εκτύπωση της ηλικίας του ατόμου
        System.out.println("Age: " + person1.age);
    }
}

[adinserter block=”3″]

Ένα παράδειγμα με δύο διαφορετικές κλάσεις μπορεί να είναι η δημιουργία μιας κλάσης “Person” και μιας κλάσης “Address” που αντιπροσωπεύει τη διεύθυνση μιας προσώπου.

Person.java:

public class Person {
    private String name; // Το όνομα του ατόμου
    private int age; // Η ηλικία του ατόμου
    private Address address; // Η διεύθυνση του ατόμου

    public Person(String name, int age, Address address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

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

    public int getAge() {
        return age; // Επιστρέφει την ηλικία του ατόμου
    }

    public Address getAddress() {
        return address; // Επιστρέφει τη διεύθυνση του ατόμου
    }
}

Ο κώδικας αντιπροσωπεύει την κλάση Person, η οποία αναπαριστά ένα άτομο. Η κλάση έχει τρία ιδιωτικά πεδία: name (όνομα του ατόμου), age (ηλικία του ατόμου) και address (διεύθυνση του ατόμου), καθώς και έναν δημιουργό (constructor) που δέχεται αυτά τα τρία πεδία ως παραμέτρους και τα αντιστοιχεί στις αντίστοιχες μεταβλητές.

Επίσης, η κλάση Person παρέχει τρεις δημόσιες μεθόδους (public methods):

  • Η μέθοδος getName() επιστρέφει το όνομα του ατόμου ως αποτέλεσμα.
  • Η μέθοδος getAge() επιστρέφει την ηλικία του ατόμου ως αποτέλεσμα.
  • Η μέθοδος getAddress() επιστρέφει τη διεύθυνση του ατόμου ως αποτέλεσμα.

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

Address.java:

public class Address {
    private String street; // Το όνομα της οδού
    private int number; // Ο αριθμός της διεύθυνσης
    private String city; // Η πόλη

    public Address(String street, int number, String city) {
        this.street = street;
        this.number = number;
        this.city = city;
    }

    public String getStreet() {
        return street; // Επιστρέφει το όνομα της οδού
    }

    public int getNumber() {
        return number; // Επιστρέφει τον αριθμό της διεύθυνσης
    }

    public String getCity() {
        return city; // Επιστρέφει την πόλη
    }
}

Ο παραπάνω κώδικας περιγράφει την κλάση Address, η οποία αναπαριστά μια διεύθυνση. Η κλάση έχει τρεις ιδιωτικές μεταβλητές: street (το όνομα της οδού), number (ο αριθμός της διεύθυνσης) και city (η πόλη).

Υπάρχει ένας δημόσιος κατασκευαστής Address που δέχεται τις τρεις παραμέτρους street, number και city και αρχικοποιεί τις αντίστοιχες μεταβλητές.

Επίσης, η κλάση παρέχει τρεις δημόσιες μεθόδους getStreet(), getNumber() και getCity() που επιστρέφουν τις τιμές των αντίστοιχων μεταβλητών. Αυτές οι μεθόδοι επιτρέπουν την πρόσβαση στις τιμές των μεταβλητών από άλλες κλάσεις.

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

Ένα παράδειγμα χρήσης των κλάσεων Person και Address μπορεί να είναι η δημιουργία ενός αντικειμένου Person με συγκεκριμένα στοιχεία και διεύθυνση. Ας δούμε ένα παράδειγμα κώδικα:

public class Main {
    public static void main(String[] args) {
        // Δημιουργία αντικειμένου Address
        Address address = new Address("Main Street", 123, "City");

        // Δημιουργία αντικειμένου Person με τα στοιχεία και τη διεύθυνση
        Person person = new Person("John Doe", 30, address);

        // Εκτύπωση στοιχείων του αντικειμένου Person
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());

        // Ανάκτηση και εκτύπωση των στοιχείων της διεύθυνσης από το αντικείμενο Address
        Address personAddress = person.getAddress();
        System.out.println("Street: " + personAddress.getStreet());
        System.out.println("Number: " + personAddress.getNumber());
        System.out.println("City: " + personAddress.getCity());
    }
}

Σε αυτό το παράδειγμα, δημιουργούμε ένα αντικείμενο Address με τις τιμές “Main Street”, 123 και “City”. Στη συνέχεια, δημιουργούμε ένα αντικείμενο Person με το όνομα “John Doe”, ηλικία 30 και τη διεύθυνση που δημιουργήσαμε προηγουμένως.

Έπειτα, εκτυπώνουμε τα στοιχεία του αντικειμένου Person, προσπελαύνοντας τις κατάλληλες μεθόδους. Επίσης, ανακτούμε το αντικείμενο Address από το αντικείμενο Person και εκτ

υπώνουμε τις λεπτομέρειες της διεύθυνσης.

Το αποτέλεσμα της εκτέλεσης του παραπάνω κώδικα θα είναι:

Name: John Doe
Age: 30
Street: Main Street
Number: 123
City: City

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

13 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων