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

Κατά την διαδικασία του προγραμματισμού, προσπαθούμε μέσα από ολοκληρωμένες modules να υλοποιήσουμε τα ζητούμενα. Αυτές οι modules είναι και η δύναμη μας. Για παράδειγμα αν φτιάξουμε μια μέθοδο αναζήτησης ενός στοιχείου σε ένα πίνακα με τέτοιο τρόπο ώστε να έχει μια "γενική" και ολοκληρωμένη μορφή (πχ. μια void μέθοδο) τότε μπορούμε να την επαναχρησιμοποιήσουμε  σε μια άλλη εφαρμογή που μας ζητά κάτι το αντίστοιχο. Φυσικά με τις διάφορες και απαραίτητες ρυθμίσεις για την προσαρμογή στα ζητούμενα.

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

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

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

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

Η main σεντόνι, και μόνο ένα μέρος αυτής. 

Συνεχίζεται σε άλλες τρεις σελίδες... 


Η main ενός αντικειμενοστρεφή προγραμματισμού.

παρακάτω εμφανίζονται με έντονα οι βασικές εντολές της main class
 public static void main(String[] args) {
     
        Company com = new Company("HA-HA");
        EntityManager em = com.getEm();
        CompanyWorkPermitAdmin CWPA = new CompanyWorkPermitAdmin(em);
        com.clearDB();

       // System.out.println("Δημιουργία DATA Βάσης Δεδομένων \n");
        com.CreateDBdata();

      // System.out.println("Στοιχεία του εργαζομένου ΑΝΑΣΤΑΣΙΟΥ");
        com.ShowEmployee();

       // System.out.println("\n Δικαιούμενους τύπους άδειας της ΠΑΠΑΔΗΜΗΤΡΙΟΥ");
        com.ShowPermitType();

        //System.out.println("\n Στοιχεία των κανονικών αδειών και των τριών εργαζομένων");
        com.ShowPermitDataEmployes();

         CWPA.ExportMyList();
    }

}

Τα συμπεράσματα δικά σας. Καλή συνέχεια στην μελέτη σας και καλή χρονιά σε όλους.