User Tools

Site Tools


java:packages:intro

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:packages:intro [2022/02/24 13:51] gthanosjava:packages:intro [2022/02/24 13:59] (current) – external edit 127.0.0.1
Line 13: Line 13:
  
 Καθώς όλες οι παραπάνω κλάσεις αφορούν τύπους ποδηλάτου θα μπορούσαν να ομαδοποιηθούν σε ένα πακέτο (package). Συνιστάται η ομαδοποίηση κλάσεων σε πακέτα για τους εξής λόγους: Καθώς όλες οι παραπάνω κλάσεις αφορούν τύπους ποδηλάτου θα μπορούσαν να ομαδοποιηθούν σε ένα πακέτο (package). Συνιστάται η ομαδοποίηση κλάσεων σε πακέτα για τους εξής λόγους:
-  Κλάσεις με συγγενές αντικείμενο ομαδοποιούνται σε ένα πακέτο, ώστε οι προγραμματιστές να αναγνωρίζουν ότι οι κλάσεις αυτές αφορούν συγκεκριμένες λειτουργίες του λογισμικού. +  Κλάσεις με συγγενές αντικείμενο ομαδοποιούνται σε ένα πακέτο, ώστε οι προγραμματιστές να αναγνωρίζουν ότι οι κλάσεις αυτές αφορούν συγκεκριμένες λειτουργίες του λογισμικού. 
-  Όπως θα δούμε στη συνέχεια, για οποιαδήποτε κλάση ανήκει σε συγκεκριμένο πακέτο μπορούμε με χρήση κατάλληλων προσδιοριστών πρόσβασης να επιτρέψουμε διαφορετικά επίπεδα πρόσβασης στα πεδία και τις μεθόδους της κλάσης αυτής.+  Όπως θα δούμε στη συνέχεια, για οποιαδήποτε κλάση ανήκει σε συγκεκριμένο πακέτο μπορούμε με χρήση κατάλληλων προσδιοριστών πρόσβασης να επιτρέψουμε διαφορετικά επίπεδα πρόσβασης στα πεδία και τις μεθόδους της κλάσης αυτής.
  
 ==== Δημιουργία πακέτου ==== ==== Δημιουργία πακέτου ====
  
-Για το παραπάνω απόσπασμα κώδικα η δημιουργία ενός πακέτου που να περιέχει όλες τις παραπάνω κλάσεις θα μπορούσε να δοθεί ως εξής.+Για το παραπάνω απόσπασμα κώδικα η δημιουργία ενός πακέτου που να περιέχει όλες τις παραπάνω κλάσεις θα μπορούσε να τοποθετώντας τη λέξη package ακολουθούμενη από το όνομα του πακέτου στην πρώτη γραμμή του αρχείου .java κάθε κλάσης που ανήκει στο πακέτο αυτό. Για το παραπάνω παράδειγμα μπορούμε να έχουμε τα εξής:
  
 <code java Bicycle.java> <code java Bicycle.java>
Line 48: Line 48:
 </code> </code>
  
-Εάν δεν δημιουργήσετε ένα πακέτο για μία κλάση αυτή θα τοποθετηθεί στο ανώνυμο //default// πακέτο. Κατά κανόνα, ο μη ορισμός πακέτων μπορεί να λειτουργήσει μόνο σε μικρής έκτασης προγράμματα. Μεγαλύτερα προγράμματα συνιστάται να είναι χωρισμένα σε πακέτα.  +Κατά σύμβαση στη Java, όλα τα αρχεία **.java** των κλάσεων που ανήκουν στο πακέτο ''bicycles'' θα πρέπει να περιέχονται μέσα σε ένα κατάλογο με το όνομα ''bicycles''. Αυτό μας οδηγεί σε μία ιεραρχία καταλόγων αι αρχείων όπως παρακάτω:
- +
-Κατά σύμβαση στη Java, όλα τα αρχεία **.java** των κλάσεων που ανήκουν στο πακέτο ''bicycles'' θα πρέπει να περιέχονται μέσα σε ένα κατάλογο με το όνομα ''bicycles''όπως παρακάτω:+
  
 <code> <code>
Line 60: Line 58:
 </code> </code>
  
-Η δήλωση δηλαδή ενός ή περισσότερων πακέτων προϋποθέτει την ύπαρξη μία ιεραρχίας καταλόγων για τα αρχεία **.java** που περιέχονται στα πακέτα αυτά.+<WRAP tip 80% center round> 
 +Εάν δεν δημιουργήσετε ένα πακέτο για μία κλάση αυτή θα τοποθετηθεί στο ανώνυμο //default// πακέτο. Κατά κανόνα, ο μη ορισμός πακέτων μπορεί να λειτουργήσει μόνο σε μικρής έκτασης προγράμματα. Μεγαλύτερα προγράμματα συνιστάται να είναι χωρισμένα σε πακέτα. 
 +</WRAP>
  
 ==== Συγκρούσεις ονομάτων ==== ==== Συγκρούσεις ονομάτων ====
  
-Επιπλέον, τα πακέτα χρησιμοποιούνται ώστε να αποφεύγονται συγκρούσεις ονοματοδοσίας σε κλάσεις που έχουν το ίδιο όνομα. Αν δύο κλάσεις έχουν το ίδιο όνομα, υπάρχει το πρόβλημα της διάκρισης μεταξύ τους, όταν χρησιμοποιούνται στο ίδιο πρόγραμμα. Η απάντηση στο πρόβλημα αυτό είναι ότι κλάσεις με το ίδιο όνομα μπορεί να βρίσκονται σε διαφορετικά πακέτα. Όταν μία κλάση ανήκει σε ένα πακέτο το πλήρες όνομα της κλάσης προκύπτει από την συνένωση του ονόματος του πακέτου με το όνομα της κλάσης. Το πακέτο δηλαδή λειτουργεί ως χώρος ονομάτων (//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, το μόνο που έχετε να κάνετε είναι να τη βάλετε σε ένα νέο πακέτο της επιλογής σας. Για παράδειγμα, η κλάση [[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%>  <WRAP important center round 80%> 
-O compiler της Java απαγορεύει την ύπαρξη δύο κλάσεων που έχουν το ίδιο όνομα και ανήκουν στο ίδιο πακέτο.+O compiler της Java απαγορεύει τη χρήση στο ίδιο πρόγραμμα δύο κλάσεων που έχουν το ίδιο όνομα και ανήκουν στο ίδιο πακέτο.
 </WRAP> </WRAP>
  
 |Προηγούμενο: [[:java:toString | Η μέθοδος toString ]] |[[:toc | Περιεχόμενα ]] | Επόμενο: [[ :java:packages:naming | Ονοματοδοσία πακέτων ]]| |Προηγούμενο: [[:java:toString | Η μέθοδος toString ]] |[[:toc | Περιεχόμενα ]] | Επόμενο: [[ :java:packages:naming | Ονοματοδοσία πακέτων ]]|
java/packages/intro.1645710672.txt.gz · Last modified: 2022/02/24 13:51 by gthanos