User Tools

Site Tools


java:packages:intro

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

java:packages:intro [2022/02/24 13:52]
gthanos [Πακέτα στη γλώσσα προγραμματισμού Java]
java:packages:intro [2022/02/24 13:59]
Line 1: Line 1:
-======  Πακέτα στη γλώσσα προγραμματισμού Java ====== 
  
-Σε αυτό το κεφάλαιο θα δούμε πως μπορούμε να ομαδοποιήσουμε κλάσεις σε **πακέτα** (**packages**). Τα πακέτα μπορούν να περιέχουν τόσο κλάσεις όσο και διεπαφές (interfaces). Επειδή προς το παρόν δεν έχουμε μιλήσει για διεπαφές θεωρήστε ότι τα πακέτα σας διαθέτουν μόνο κλάσεις. Για τις διεπαφές ισχύει ότι ισχύει και για τις κλάσεις. 
- 
-Προκειμένου να είναι ευκολότερη η ομαδοποίηση και η αναζήτηση κλάσεων που έχουν κοινά χαρακτηριστικά προτείνεται από τη Java η ομαδοποίηση τους σε πακέτα. Φανταστείτε ένα εικονικό "πακέτο" ή "κουτί" που περιέχει κλάσεις. 
- 
-Ας υποθέσουμε ότι έχουμε μία σειρά κλάσεων που περιγράφουν διάφορα είδη ποδηλάτου. 
- 
-  * Bicycle 
-  * MountainBike 
-  * BicycleForTwo 
-  * MotorBike 
- 
-Καθώς όλες οι παραπάνω κλάσεις αφορούν τύπους ποδηλάτου θα μπορούσαν να ομαδοποιηθούν σε ένα πακέτο (package). Συνιστάται η ομαδοποίηση κλάσεων σε πακέτα για τους εξής λόγους: 
-  * Κλάσεις με συγγενές αντικείμενο ομαδοποιούνται σε ένα πακέτο, ώστε οι προγραμματιστές να αναγνωρίζουν ότι οι κλάσεις αυτές αφορούν συγκεκριμένες λειτουργίες του λογισμικού. 
-  * Όπως θα δούμε στη συνέχεια, για οποιαδήποτε κλάση ανήκει σε συγκεκριμένο πακέτο μπορούμε με χρήση κατάλληλων προσδιοριστών πρόσβασης να επιτρέψουμε διαφορετικά επίπεδα πρόσβασης στα πεδία και τις μεθόδους της κλάσης αυτής. 
- 
-==== Δημιουργία πακέτου ==== 
- 
-Για το παραπάνω απόσπασμα κώδικα η δημιουργία ενός πακέτου που να περιέχει όλες τις παραπάνω κλάσεις θα μπορούσε να δοθεί ως εξής. 
- 
-<code java Bicycle.java> 
-package bicycles; 
-public class Bicycle { 
-   .... 
-} 
-</code> 
- 
-<code java MountainBike.java> 
-package bicycles; 
-public class MountainBike { 
-   .... 
-} 
-</code> 
- 
-<code java BicycleForTwo.java> 
-package bicycles; 
-public class BicycleForTwo { 
-   .... 
-} 
-</code> 
- 
-<code java MotorBike.java> 
-package bicycles; 
-public class MotorBike { 
-   .... 
-} 
-</code> 
- 
-Εάν δεν δημιουργήσετε ένα πακέτο για μία κλάση αυτή θα τοποθετηθεί στο ανώνυμο //default// πακέτο. Κατά κανόνα, ο μη ορισμός πακέτων μπορεί να λειτουργήσει μόνο σε μικρής έκτασης προγράμματα. Μεγαλύτερα προγράμματα συνιστάται να είναι χωρισμένα σε πακέτα.  
- 
-Κατά σύμβαση στη Java, όλα τα αρχεία **.java** των κλάσεων που ανήκουν στο πακέτο ''bicycles'' θα πρέπει να περιέχονται μέσα σε ένα κατάλογο με το όνομα ''bicycles'', όπως παρακάτω: 
- 
-<code> 
-bicycles/ 
-bicycles/Bicycle.java 
-bicycles/MountainBike.java 
-bicycles/BicycleForTwo.java 
-bicycles/MotorBike.java 
-</code> 
- 
-Η δήλωση δηλαδή ενός ή περισσότερων πακέτων προϋποθέτει την ύπαρξη μία ιεραρχίας καταλόγων για τα αρχεία **.java** που περιέχονται στα πακέτα αυτά. 
- 
-==== Συγκρούσεις ονομάτων ==== 
- 
-Επιπλέον, τα πακέτα χρησιμοποιούνται ώστε να αποφεύγονται συγκρούσεις ονοματοδοσίας σε κλάσεις που έχουν το ίδιο όνομα. Αν δύο κλάσεις έχουν το ίδιο όνομα, υπάρχει το πρόβλημα της διάκρισης μεταξύ τους, όταν χρησιμοποιούνται στο ίδιο πρόγραμμα. Η απάντηση στο πρόβλημα αυτό είναι ότι κλάσεις με το ίδιο όνομα μπορεί να βρίσκονται σε διαφορετικά πακέτα. Όταν μία κλάση ανήκει σε ένα πακέτο το πλήρες όνομα της κλάσης προκύπτει από την συνένωση του ονόματος του πακέτου με το όνομα της κλάσης. Το πακέτο δηλαδή λειτουργεί ως χώρος ονομάτων (//namespace//). 
- 
-Για παράδειγμα, η κλάση [[http://docs.oracle.com/javase/7/docs/api/java/io/File.html|File]] βρίσκεται στο πακέτο **java.io**. Το πλήρες όνομα της κλάσης είναι [[http://docs.oracle.com/javase/7/docs/api/java/io/File.html|java.io.File]]. Σε περίπτωση που θέλετε να φτιάξετε την δική σας κλάση File, το μόνο που έχετε να κάνετε είναι να τη βάλετε σε ένα νέο πακέτο της επιλογής σας. 
- 
-<WRAP important center round 80%>  
-O compiler της Java απαγορεύει την ύπαρξη δύο κλάσεων που έχουν το ίδιο όνομα και ανήκουν στο ίδιο πακέτο. 
-</WRAP> 
- 
-|Προηγούμενο: [[:java:toString | Η μέθοδος toString ]] |[[:toc | Περιεχόμενα ]] | Επόμενο: [[ :java:packages:naming | Ονοματοδοσία πακέτων ]]| 
java/packages/intro.txt · Last modified: 2022/02/24 13:59 (external edit)