Αντικειμενοστρεφής Προσέγγιση Προγραμματισμού και Ενθυλάκωσης Java - Μέρος 5


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

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

Για παράδειγμα,

Το Machine A μπορεί να τροφοδοτείται με Debian και να έχει 8 GB μνήμης RAM, ενώ το Machine B μπορεί να έχει εγκαταστήσει το Gentoo με 4 GB μνήμης RAM. Επίσης, είναι προφανές ότι η διαχείριση του Μηχανήματος που έχει εγκαταστήσει το Gentoo απαιτεί περισσότερες γνώσεις – Μια συμπεριφορά που δρα στην κατάστασή του. Εδώ η μέθοδος χρησιμοποιεί τιμές μεταβλητών παραδείγματος.

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

Κάθε Παρουσίαση μιας κλάσης έχει την ίδια μέθοδο, αλλά είναι πιθανό όλες να συμπεριφέρονται διαφορετικά.

Η κλάση λειτουργικού συστήματος έχει 3 μεταβλητές παρουσίας, συγκεκριμένα Όνομα λειτουργικού συστήματος, Τύπος λειτουργικού συστήματος, Κατηγορία λειτουργικού συστήματος.

OS
OS_Name
OS_Type
OS_Category
Boot()
Reboot()
scan()

Η μέθοδος Boot() εκκινεί ένα λειτουργικό σύστημα το οποίο αντιπροσωπεύεται από το Όνομα ΛΣ για αυτήν την περίπτωση. Έτσι, αν κάνετε boot() σε μια παρουσία, θα εκκινήσετε στο Debian ενώ σε μια άλλη θα εκκινήσετε στο Gentoo. Ο κωδικός της μεθόδου παραμένει ο ίδιος και στις δύο περιπτώσεις.

Void Boot() 
	{
	bootloader.bootos(OS_Name);
	}

Γνωρίζετε ήδη ότι το πρόγραμμα ξεκινά να εκτελείται αμέσως μετά τη μέθοδο main(). Μπορείτε να μεταβιβάσετε τιμές στη μέθοδο σας.

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

You are already aware that the program starts to execute just after the main() method. You can pass values into you method. For example you would like to tell you OS what services to start at boot as:
OS.services(apache2);

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

OS deb = debian();
deb.reboot(600);

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

void main()
	{
	…
	…
	}

Ωστόσο, μπορείτε να ζητήσετε από τον μεταγλωττιστή σας να πάρει αυτό ακριβώς που επιθυμείτε και ο μεταγλωττιστής σας δεν θα σας επιστρέψει λάθος τύπους. Μπορείτε απλά να κάνετε όπως:

int Integer()
	{
	…
	…
	return 70;
	}

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

void numbers(int a, int b)
	{
	int c = a + b;
	System.out.print(“sum is” +c);
	}
Δήλωση και αρχικοποίηση μεταβλητών στιγμιότυπου

1. Όταν δεν γνωρίζετε την τιμή που θέλετε να αρχικοποιήσετε.

int a;
float b;
string c;

2. Όταν γνωρίζετε την τιμή που πρέπει να αρχικοποιήσετε.

int a = 12;
float b = 11.23;
string c = tecmint;

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

3. Οι μεταβλητές παρουσίας δηλώνονται μέσα σε μια κλάση σε αντίθεση με τις τοπικές μεταβλητές που δηλώνονται σε μια μέθοδο.

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

Ενθυλάκωση

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

Θα επεκτείνουμε την ενθυλάκωση με λεπτομέρειες στο σωστό σεμινάριο όταν απαιτείται. Από τώρα αρκεί να γνωρίζετε τι είναι η ενθυλάκωση; Τι κάνει? Και πώς γίνεται;

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