|
Εισαγωγή
Ήρθε η ώρα να περάσουμε από τα λίγα
λόγια περί Java στην πράξη. Τι θα
χρειαστούμε για
να ετοιμάσουμε το πρώτο μας φλιτζάνι Java
στα MS-Windows.
Λοιπόν έχουμε και λέμε :
·
Το Software
Development Kit της Java (SDK) . Περιλαμβάνει
τόσο τον compiler (javac) όσο
και το Runtime environment (JRE)
την εικονική μηχανή.
·
Κάποιον text editor της αρεσκείας μας (TextPad
vi, emacs)
·
Για λόγους ευκολίας ένα shortcut (συντόμευσγ) του Command prompt (DOS-Command prompt) στα MS-Windows.
Αφού
κατεβάσουμε με επιτυχία το Java Development Kit
φροντίζουμε να εγκατασταθεί σωστά. Η τελευταία του έκδοση είναι
τυλιγμένη σε
έναν αρκετά έξυπνο MS-Windows Installer
που αναλαμβάνει να κάνει της απαραίτητες ρυθμίσεις στο σύστημα μας, όσο
αναφορά
το περιβόητο path και
τα τους φακέλους εγκατάστασης (install directories).
Μα τι
είναι αυτό το CLASSPATH
και πως το ρυθμίζω σωστά;
To
περιβόητο classpath
είναι ίσως η πηγή των περισσότερων λαθών για αυτούς που αρχίζουνε την
εκμάθηση
της Java. Αυτό
που κάνει το classpath είναι να «λέει» στην εικονική μηχανή (JVM) που
μπορεί να
βρει τις απαραίτητες κλάσεις ώστε να τρέξει ένα πρόγραμμα.Ένα Java πρόγραμμα αποτελείται εξ' ολοκλήρου
από κλάσεις (class). Ο,τιδήποτε δηλώνεται, και εκτελείται βρίσκεται
μέσα σε μία
ή πολλές κλάσεις. Αυτές οι κλάσεις περιέχουνε μεταβλητές, μεθόδους και
μπορούνε
να περιέχουνε και άλλες κλάσεις (εσωτερικές κλάσεις). Όλες οι κλάσεις
φορτώνονται δυναμικώς από τον φορτωτή κλάσεων (class loader) κατά τη διάρκεια
έναρξης και εκτέλεσης του προγράμματος. Ο μοναδικός τρόπος για να βρει
ο
φορτωτής κλάσεων τις απαραίτητες κλάσεις είναι μέσω του classpath.
Το classpath δεν πρέπει να μπερδεύεται με το path. Αυτό που κάνει το path είναι να «λέει» στο
λειτουργικό σύστημα που να βρει τα διάφορα προγράμματα για να τρέξει.
Προσοχή
στη διαφορά. Το classpath
δείχνει στην εικονική μηχανή το δρόμο για τις
απαραίτητες κλάσεις (κατάληξη .class)
ενώ το path δείχνει το
δρόμο στο λειτουργικό σύστημα για τα απαραίτητα προγράμματα (συνήθως με
κατάληξη .exe). Έτσι
λοιπόν αν κάποιος θέλει να τρέξει το javac.exe
τότε ο υποκατάλογός του θα πρέπει να
μπει στο path. Αν θέλει
να τρέξει μία κλάση (ας πούμε MyClass.class)
τότε ο υποκατάλογος αυτής της
κλάσης θα μπει στο classpath.
Τo classpath
μπορεί επίσης να περιέχει JAR
(Java ARchive)
και ZIP αρχεία
εφ' όσον αυτά περιέχουνε Java κλάσεις (ή ακόμα και διάφορα άλλα
αρχεία κειμένου). Για να ρυθμιστεί το classpath το μόνο που έχει να
γίνει είναι να προσθέσουμε τις απαραίτητες κλάσεις, JAR ή ZIP
αρχεία στο τέλος του.
Θέτοντας το PATH
και το CLASSPATH
Πριν
προχωρήσουμε στο πρώτο παράδειγμα κώδικα πρέπει να βεβαιωθούμε ξανά ότι
το
περιβάλλον έχει στηθεί σωστά και ότι είμαστε σε θέση να κάνουμε compile αλλά και να τρέξουμε
εφαρμογές γραμμένες σε Java.
Ας θέσουμε πρώτα το PATH
για να μπορέσουμε να βρούμε τον compiler javac
και το java ώστε να τρέξουμε τα
αρχεία. Αυτό μπορεί να γίνει με δύο
τρόπους.Ο πρώτος είναι να το θέσουμε μέσω του My Computer>Properties>Advanced>Environment
Variables και επιλέγουμε το PATH και Edit (ή New...
αν δεν υπάρχει και
πρέπει να το δημιουργήσουμε). Αν ήδη υπάρχει πάμε στο τέλος και
γράφουμε ;<υποκατάλογος
του SDK>\bin ώστε να το
τοποθετήσουμε στο τέλος του ήδη υπάρχων path.
Για παράδειγμα αν έχουμε εγκαταστήσει το SDK
στο c:\jdk1.4
τότε το path γίνεται ;c:\jdk1.4\bin.
(χωρίς την τελεία). Αν δεν υπάρχει το path
και το δημιουργήσουμε εμείς τότε η τιμή που θα πάρει θα
είναι η ίδια αλλά χωρίς το ;
στην αρχή, δηλαδή c:\jdk1.4\bin.
(πάλι χωρίς την τελεία).
Ο
δεύτερος τρόπος είναι παρόμοιος αλλά γίνεται μέσω της γραμμής εντολών.
Ανοίγουμε ένα παράθυρο εντολών (command prompt)
και γράφουμε SET PATH=%PATH%;c:\jdk1.4\bin (ή κάτι άλλο αντί για c:\jdk1.4 αν έχει
εγκατασταθεί το SDK κάπου αλλού).
Αυτό ήτανε,
το PATH ήδη δείχνει
στον υποκατάλογο που βρίσκεται το Java Development Kit.
To classpath
μπορεί να
καθοριστεί με τους ίδιους τρόπους. Μία καλή πρακτική είναι να υπάρχει
ένας
σταθερός υποκατάλογος όπου θα συγκεντρώνονται όλες οι κλάσεις (για
παράδειγμα ο c:\java\lib).Ακολουθώντας
τα ίδια βήματα με το path
επιλέγουμε το CLASSPATH
αυτή τη φορά και τοποθετούμε τον υποκατάλογο στο
τέλος του ήδη υπάρχων CLASSPATH
(;c:\java\lib).
Ανοίγoντας ένα παράθυρο εντολών
γράφουμε :
SET CLASSPATH=%CLASSPATH%;c:\java\lib (ή
οποιοδήποτε άλλο υποκατάλογο της αρέσκειάς μας). Αυτό ήτανε. Το classpath
έχει τοποθετηθεί. Αυτό που μας μένει είναι να βάζουμε όλες τις κλάσεις
μας σε
αυτόν τον υποκατάλογο που δείχνει το classpath.
Αυτό
βέβαια δεν είναι απαραίτητο. Μπορούμε να έχουμε τις κλάσεις όπου
θέλουμε αλλά
θα πρέπει κάθε φορά να αλλάζουμε το classpath. Αν για παράδειγμα έχουμε
δύο κλάσεις A.class
και B.class, η μία
στο c:\java\lib\A.class και
η άλλη στο c:\classes\B.class τότε
μπορούμε να φορτώσουμε τη Β
αλλάζοντας το classpath
και γράφοντας SET CLASSPATH=%CLASSPATH%;c:\classes
και αυτό θα έχει ως αποτέλεσμα η εικονική μηχανή να κοιτάει και στους
δύο
υποκαταλόγους (c\:java\lib και c:\classes).
Η πρώτη μου Java κλάση
Αρχίζουμε
λοιπόν, ανοίγοντας τον editor
μας να γράψουμε την πρώτη μας κλάση που συνάμα θα είναι και το πρώτη
εφαρμογή application μας στην Java. Εδώ θα πρέπει να κατανοήσουμε
μερικά πράγματα πρώτου μπούμε σε περαιτέρω λεπτομέρειες! Όπως έχει
αναφερθεί
και στο προηγούμενο άρθρο μέσα σε ένα java source αρχείο
μπορούμε εμείς να γράψουμε όσες κλάσεις (class)
θέλουμε, αλλά με ένα
μεγάλο περιορισμό! Μόνο μια από αυτές τις κλάσεις θα χαρακτηριστεί ως
δημόσια (public) και το όνομα του
αρχείου θα πρέπει να είναι ταυτόσημο με το όνομα την κλάσης αυτό! Για
την δική
μας περίπτωση αλλά και γενικότερα συνηθίζεται κάθε source αρχείο να περιέχει μόνο μια
κλάση! Παραθέτω μερικά παραδείγματα.
Java
Source
με πολλαπλές κλάσεις γραμμένες μέσα του
Το παραπάνω
κομμάτι κώδικα
αποτελεί ένα
Java source αρχείο με
όνομα MyFirstClass.java. Μπορείτε απλώς να κάνετε copy/paste το κείμενο μέσα στο πλαίσιο και να το σώσετε μέσα σε ένα
text αρχείο με
όνομα MyFirstClass
και extension .java.
ΠΡΟΣΟΧΗ: H Java
είναι γλώσσα Case
Sensitive
αυτό σημαίνει ότι αν έχετε γράψει το όνομα της κλάσης μέσα στον κώδικα
σας ως MYFIRSTCLASS
τότε πρέπει να ονομάσετε και το αρχείο σας ακριβός με το ίδιο όνομα
αλλιώς δεν
θα μπορέσετε να κάνετε compile.
Το case sensitivity
της γλώσσας επεκτείνεται σε όλη την διαδικασία της γραφής κώδικα και
γενικά πρέπει
να είμαστε πολύ προσεκτικοί! Στην Java
το όνομα «Apοc» είναι διαφορετικό από το «apoc».
Συνοψίζοντας πρέπει πάντα να θυμόμαστε ότι σε κάθε source αρχείο java
περιέχει τουλάχιστον μια κλάση και
παίρνει το όνομα του από το όνομα της κλάσης που έχουμε ορίσει ως public!
H
κλάση (class) Apoc στο αρχείο Apoc.java
Σχόλια
μέσα στον κώδικα
Στα
παραπάνω παραδείγματα απλών κλάσεων (dummy classes), δεν
κάνουν τίποτα. Παρατηρήστε ότι περιέχονται γραμμές που αρχίζουν με " //
". Αυτά
αποτελούν έναν από τους 3 τρόπους που μπορούμε να γράψουμε σχόλια μέσα
στον
κώδικα μας. Για όσους δεν γνωρίζουν τι είναι σχόλια, πληροφοριακά θα
αναφέρω
ότι είναι κομμάτι κειμένου (που εισάγουμε εμείς) που αγνοεί ο compiler και απλά βρίσκεται μέσα στα
αρχεία του κώδικα μας για να τονίσει διάφορα σημαντικά σημεία
(αλγοριθμικά και
μη) έτσι ώστε να κάνει την ανάγνωση του αρχείου από έναν τρίτο πιο
εύκολη και
κατανοητή!
Στην Java έχουμε 3
τρόπους να γράφουμε σχόλια, μερικοί από αυτούς θα είναι είδη
γνωστοί σε
όσους έχουν παλαιότερη εμπειρία από την γλώσσα C και C++.
Παραθέτω είδη σχολίων που μπορούμε να συναντήσουμε μέσα σε
ένα αρχείο με κώδικα Java!
Παρατηρούμε
λοιπόν ότι μπορούμε να σχολιάσουμε μια γραμμή με το
να βάλουμε μπροστά τα "//".
Επίσης μπορούμε να σχολιάσουμε πολλές γραμμές με το να αρχίσουμε τα
Σχόλια μας με το "/*"
να συνεχίσουμε να γράφουμε όσο θέλουμε και στο τέλος να τελειώσουμε με "*/".
Ο
τρίτος τρόπος και συνάμα ο πιο χρήσιμος (θα δούμε το γιατί αργότερα)
είναι ο
λεγόμενος Javadoc
τρόπος που μέσα στην παρακάτω δομή μπορούμε να προσθέσουμε πολλαπλές
δομές
σχολίων .
Το πρώτο
HelloWorld
πρόγραμμα στην Java
Μετά
την μικρή ανασκόπηση για την σχόλια ήρθε η στιγμή να δούμε και πως
μοιάζει μια
μικρή Java εφαρμογή, η οποία απλώς
θα βγάζει το μήνυμα "Hello World" στην
οθόνη μας.
Μετά
από όσα διαβάσαμε παραπάνω, μερικές γραμμές από το παραπάνω κομμάτι
κώδικα που
αποτελεί και την πρώτη μας Java
εφαρμογή (application),
θα μας είναι είδη γνώριμα.Οι
πρώτες 8 σειρές του κώδικα μας αποτελούν ένα μακροσκελές Javadoc σχόλιο στο οποίο δηλώνουμε όνομα
του αρχείου μας (παράλληλα όπως ξέρουμε είναι και το όνομα της κλάσης
μας (class)), τι κάνει καθώς και 2
λέξεις που αρχίζουν με το γνωστό σε όλους μας @ οι οποίες δηλώνουν το
όνομα του
συγγραφέα αλλά και την έκδοση της εφαρμογή μας. Προς το παρόν δεν θα
ασχοληθούμε γιατί γράφτηκαν έτσι οι λέξεις αυτές, είναι μέρος του
μηχανισμού Javadoc.
Συνεχίζοντας
στη 10η σειρά έχουμε τη δήλωση (declaration)
της κλάσης μας. Δεν πρέπει να ξεχνάμε ότι η Java
είναι μια άκρως
αντικειμενοστραφή γλώσσα και τα πάντα σε αυτή δηλώνονται και
λειτουργούν μέσα
σας κλάσεις. Ο τρόπος δήλωσης μια κλάσης στην Java είναι συγκεκριμένος και πρέπει να
ακολουθεί κάποιους βασικούς κανόνες τους οποίους θα εξηγήσουμε ευθύς
αμέσως. Η
δήλωση μίας κλάσης μπορεί να αποτελείται από τουλάχιστον δύο τμήματα
και το
πολύ έξι, των οποίων η σειρά είναι συγκεκριμένη καθώς και η σημασία.
Το
πρώτο κομμάτι (λέξη) πάντα δηλώνει τη δημοσιότητα που θα έχει η κλάση
μας στον
έξω κόσμο (για όσους δεν καταλαβαίνουν τον όρο δημοσιότητα, πρέπει να
πούμε ότι
είναι όρος και μηχανισμός που σχετίζεται με τον αντικειμενοστραφή
προγραμματισμό). Μπορούμε να το παραλείψουμε και να μην το
συμπεριλάβουμε στην
δήλωση μας. Χρησιμοποιούμε τις λέξεις public
(δημόσια - μπορούνε να έχουνε πρόσβαση σε αυτή όλες οι
κλάσεις ανεξαρτήτως το που βρίσκοντε) ή private
(προσωπική - πρόσβαση σε αυτή έχει μόνο η
κλάση η
οποία είναι εξωτερική (outer)
στην προσωπική κλάση) ή protected
(προστατευμένη - πρόσβαση σε αυτή έχουνε οι
κλάσεις που βρίσκοντε μόνο μέσα στο
ίδιο πακέτο). Αν δηλώσουμε την κλάση απλώς ως class τότε η εξ' ορισμού
δημοσιότητα
είναι protected.
Το
δεύτερο κομμάτι μπορούμε επίσης να το παραλείψουμε και είναι το
κομμάτι
που θα δηλώσει κάποιο ιδιαίτερο χαρακτηριστικό της κλάσης μας όσο
αναφορά την
δυνατότητα της να παράγουμε αντικείμενα (objects)
αλλά και αν μπορεί να χρησιμοποιηθεί σαν θεμέλιος λίθος
για την παραγωγή νέων κλάσεων (inheritance).
Εδώ οι λέξεις που μπορούμε να χρησιμοποιήσουμε είναι ή abstract (αφηρημένη) ή final (τελική). Δεν είναι
του παρόντος να εξηγήσουμε εις βάθος την κάθε μια λέξη. Περιληπτικά να
πούμε
ότι κάθε κλάση που δηλώνεται ως αφηρημένη δεν μπορεί να χρησιμοποιηθεί
για να
δημιουργήσουμε αντικείμενά (object)
της, ενώ κάθε κλάση που χαρακτηρίζεται ως τελική σημαίνει ότι δεν
μπορεί να
χρησιμοποιηθεί ως βάση για άλλες κλάσεις και δεν μπορούμε να
δημιουργήσουμε
αναφορές της, απλώς τη χρησιμοποιούμε στατικώς (ένα παράδειγμα τελικής
κλάσεως
είναι η κλάση System).
Το
τρίτο κομμάτι αποτελείται πάντα από την λέξη class όπου
για ευνόητους λόγους δεν μπορεί να παραληφθεί ποτέ.
Το
τέταρτο κομμάτι είναι το όνομα που θα δώσουμε στην κλάση μας και καλό
είναι να
αρχίζει πάντα με κεφαλαίο γράμμα (θα αναφερθούμε εκτενέστερα κάποια
στιγμή για
το σύνολο των κανόνων που πρέπει να ακολουθεί ο καθένας που γράφει Java κώδικα έτσι ώστε να
είναι σύμφωνος με το λεγόμενο Java Coding Conventions)
και, όπως είπαμε και πιο πάνω, πρέπει να έχει ακριβώς το ίδιο όνομα με
το
αρχείο.
Το
πέμπτο κομμάτι (και αυτό δεν είναι υποχρεωτικό) αποτελείται από 2
λέξεις και
δηλώνει αν η κλάση μας έχει βασιστεί σε κάποια άλλη κλάση για να
δημιουργηθεί.(inheritance)
ή υποχρεούται να ακολουθήσει κάποια συγκεκριμένη μορφή που πρέπει να
έχει στην
δομή της. Το πέμπτο κομμάτι λοιπόν αποτελείται από τις λέξεις extends (επεκτείνει) ή implements (εφαρμόζει)
και το όνομα της κλάσης. Αν χρησιμοποιήσουμε τη λέξη extends τότε αυτό σημαίνει ότι η κλάση
μας κληρονομεί στοιχεία από την υπερκλάση. Αν χρησιμοποιήσουμε τη λέξη implements τότε αυτό δηλώνει
ότι η κλάση μας πρέπει να εφαρμόζει τους κανόνες της διεπαφής (interface) (ένα πρόχειρος
χαρακτηρισμός θα ήταν διεπαφή = σαν κλάση αλλά χωρίς βασικό σώμα). Η
δική μας
δήλωση αποτελείται από 3 λέξεις public class HelloWorld
.
Το
έκτο τμήμα είναι το όνομα της διεπαφής ή της κλάσης από την οποία η
δική μας
κλάση θα κληρονομήσει κανόνες και συμπεριφορά.Έχουμε
δηλώσει εμείς λοιπόν ότι η κλάση μας θα είναι διαθέσιμη και ορατή στον
έξω
κόσμο (ίσως η περιγραφή που δίνεται αυτή την στιγμή για την δημοσιότητα
της
κλάσης να μην είναι η πιο σωστή αλλά σκοπός του κειμένου αυτού δεν
είναι να
μπει σε ουσιαστικό διάλογο περί αντικειμενοστραφή προγραμματισμού), δεν
θα
μπορούσαμε να κάνουμε αλλιώς γιατί το αρχείο μας ονομάζεται HelloWorld
όποτε
είμαστε υποχρεωμένοι να έχουμε μέσα του μια δήλωση κλάσης με το ίδιο
όνομα
καθώς και με δηλωμένη την δημοσιότητα της ως public. Το δεύτερο κομμάτι είναι η λέξη class που είμαστε υποχρεωμένοι να το
φράξουμε έτσι και αλλιώς και το τρίτο το όνομα το οποίο αρχίζει με
κεφαλαίο
γράμμα (HelloWorld).
Μετά
τις 3 λέξεις που περιγράψαμε παραπάνω ακολουθεί ο χαρακτήρας «}». Ο
χαρακτήρας
αυτός (αγκύλη) αποτελεί το ένα είδος νοητού φράγματος. δηλώνει
ότι από
εδώ και πέρα θα ορίσουμε μεθόδους και μεταβλητές που ανήκουν στην κλάση
αυτή.
Μπορούμε να παρατηρήσουμε στην τελευταία γραμμή του κώδικα μας ότι
υπάρχει ένα
αντίστοιχος χαρακτήρας «}» o
οποίος δηλώνει το τέλος της γραφής της κλάσης μας. ’ρα μετά την δήλωση
μια
κλάσης πάντα ακολουθεί το άνοιγμα των «διαχωριστικών»
αγκυλών,
στην συνεχεία το λεγόμενο σώμα της κλάσης δηλαδή η δήλωση των
μεταβλητών και
των μεθόδων και στο τέλος το κλείσιμο των διαχωριστικών αγκυλών.
Περνάμε λοιπόν
στο βασικό σώμα (body)
της κλάσης μας και παρατηρούμε αμέσως ένα ακόμα σχόλιο το οποίο δηλώνει
ότι
παρακάτω θα ακολουθήσει η δήλωση μια μεθόδου της κλάσης και μάλιστα όχι
μιας
οποιαδήποτε μεθόδου αλλά της βασικής μεθόδου (main).
Δήλωση
μεθόδου μέσα σε μια κλάση.
Πρωτού
εξηγήσουμε γιατί η μέθοδος (ή συνάρτηση) με το όνομα main έχει ιδιαίτερη σημασία για την
εφαρμογή μας και γενικότερα για κάθε Java εφαρμογή θα πούμε μερικά πράγματα για τους
κανόνες που
πρέπει να ακολουθούμε στην δήλωση μιας μεθόδου.Είδαμε παραπάνω ότι η
δηλώσει
μιας κλάσης αποτελείται από 6 κομμάτια από τα οποία μπορούμε να το
παραλείψουμε
μερικά στην δήλωση μας ενώ τα αλλά δεν μπορούμε. Παράλληλοι κανόνες
ακολουθούν
και την δήλωση μιας μεθόδου η οποία μπορεί να αποτελείται από 2
έως 4
κομμάτια (λέξεις).
-
Το πρώτο κομμάτι (το οποίο μπορεί να
παραληφθεί ) είναι ίδιο με αυτό στην δήλωση της κλάσης και δηλώνει την
δημοσιότητα της μεθόδου μας μπορεί να χρησιμοποιηθεί η λέξη public και μόνο αυτή, ώστε να είναι
δημόσια και να μπορεί η εικονική μηχανή να τη βρει.
-
Το δεύτερο κομμάτι (το οποίο μπορεί
να παραληφθεί) δηλώνει ένα χαρακτηριστικό της μεθόδου όσο αναφορά την
ύπαρξή της ή τη μη ύπαρξή της σε κάθε αντικείμενο που δημιουργούμε από
την κλάση αυτή. Εδώ μπορούμε να χρησιμοποιήσουμε τη λέξη static (στατική).
Χαρακτηρίζοντας μια μέθοδο ως στατική ουσιαστικά
δηλώνουμε στον compiler ότι για όλα
τα αντικείμενα της κλάσης που θα δημιουργήσουμε, θα μοιράζονται την
ίδια οντότητα της μεθόδου αντί να έχουν και να χρησιμοποιούν το
κάθε ένα και από ένα αντίγραφο της .
-
Το τρίτο κομμάτι είναι υποχρεωτικό
στην δήλωση της μεθόδου (ή συνάρτησης) μιας και δηλώνει τον τύπο
της δηλαδή μετά την εκτέλεση της αν θα μας επιστρέψει κάποια τιμή και
τι τύπος είναι η τιμή αυτή π.χ. είναι ένας int (ακέραιος),
μια λέξη (String) ή κάτι
άλλο. Εδώ, αν η μέθοδος μας επιστρέφει κάτι, είμαστε υποχρεωμένοι να
δηλώσουμε το τύπο της τιμής που επιστρέφει αν όχι τότε είμαστε
υποχρεωμένοι να τη δηλώσουμε με την λέξη void (κενή).
-
Το
τέταρτο και τελευταίο κομμάτι αποτελεί το όνομα της μεθόδου μας
και είναι κάτι που δεν μπορούμε να το παραλείψουμε. Εδώ συνήθως
ακολουθείται ένας διαφορετικός κανόνας από τη δήλωση της κλάσης και
καλό είναι να αρχίζουμε το όνομα της με μικρό γράμμα!
Ένα
μικρός χάρτης της δήλωσης μια μεθόδου είναι ο εξής:
Μετά
τη δήλωση ακολουθούν οι παρενθέσεις όπου μέσα τους δηλώνουμε τον τύπο
και το
όνομα της μεταβλητής που θέλουμε να περάσουμε στην συνάρτηση μας ως
παράμετρο.
Αν θέλαμε να δηλώσουμε ότι σε μια μέθοδο θα περάσουμε ως παραμέτρους
έναν
ακέραιο και μια λέξη θα το κάναμε κάπως έτσι (int anΙnt, String aStr).
Παντα δηλώνουμε τον τύπο και μετά το όνομα, για πολλαπλές παραμέτρους
χρησιμοποιούμε κόμμα για να τις διαχωρίζουμε. Όπως και με την κλάση
έτσι και με
τη μέθοδο, το σώμα της πάντα βρίσκεται περικυκλωμένο από τα τις γνωστές
μας
αγκύλες.
Η
περίφημη μέθοδος main(String[] args)
Στο
παράδειγμά μας παρατηρούμε ότι η κλάση μας έχει στο βασικό σώμα της
μόνο μια
μέθοδο δηλωμένη και αυτή αποτελεί την μέθοδο main η οποία αποτελεί ιδιαίτερη μέθοδο. Ένα
απλοϊκός κανόνας που
μπορεί να μας καθοδηγήσει ιδιαίτερα στα πρώτα μας βήματα στην Java είναι ότι κάθε java εφαρμογή έχει μια μέθοδο main. Όταν βλέπουμε μια κλάση Java που έχει μέσα της
μια δήλωση μεθοδου main
τότε θα αποκαλούμε την κλάση αυτή ως εφαρμογή (application) Java.
Η
δήλωση της μεθοδου main
είναι πάντα η ίδια και δεν αλλάζει, δηλαδή πάντα έχει τη μορφή public static void main και πάντα
ακολουθείται από την δήλωση του εξής ως παράμετρο (String[] args).
Για όσους είναι γνώστες της γλώσσας C++
είναι το γνωστό argv,
argc.
Για όσους δεν
είναι γνωστές περιληπτικά θα πούμε ότι αυτό που δηλώνουμε στο κομμάτι
των
παραμέτρων είναι ένα πίνακας από String
(λέξεις) που μπορεί ο χρηστής της εφαρμογής μας να δηλώσει
κατά την εκτέλεση της έτσι ώστε να έχει κάποια ειδική συμπεριφορά.
Μπορούμε
περάσουμε μερικές παραμέτρους για να δούμε κάποια συγκεκριμένα
αποτελέσματα πχ dir-a όπου
βλέπουμε τα κρυφά αρχεία.
Αυτή ακριβός είναι και η ουσία του String[] args.
Πρέπει να τονίσουμε ότι φυσικά και
πρέπει να συμπεριλάβουμε επιπλέον κώδικα όπου θα ελέγχει αν ο χρηστής
έχει
δώσει παραμέτρους κατά την διάρκεια της εκτέλεσης. Παντός σε κάθε main μέθοδο πρέπει να
δηλώνουμε πάντα το String[]
args
ασχέτως αν η εφαρμογή μας θα
υποστηρίζει παραμέτρους η όχι.
Η δική
μας main
Στην
δική μας περίπτωση η εφαρμογή μας έχει και αυτή την γνωστή τώρα πια
μέθοδο main όπου μέσα στο σώμα της
υπάρχει η εντολή System.out.println(); η οποία βγάζει στην
οθόνη μας (DOS command prompt) ένα μήνυμα. Το πιο
σημαντικό που πρέπει να προσέξουμε εδώ είναι ότι μετά την γραφή κάθε
εντολής
μέσα σε μια μέθοδο πρέπει να ακολουθεί το ελληνικό ερωτηματικό (;).
Ο
χαρακτήρας αυτός δηλώνει στον compiler
ότι η γραφή της μεθοδου τελείωσε και ότι ακολουθεί μια νέα εντολή ή το
τέλος
της μεθοδου. Πρέπει να πούμε ότι μεταξύ των δηλώσεων μεθόδων μιας
κλάσης δεν
ακολουθεί ; παρά μόνο μεταξύ των δηλώσεων μεταβλητών. Παραθέτω
το
παρακάτω παράδειγμα.
Compile και
εκτέλεση της εφαρμογής HelloWorld
Αφού
έχουμε σιγουρευτεί για την σωστή ρύθμιση του CLASSPATH θα
προσπαθήσουμε να κάνουμε compile
το αρχείο HelloWorld.java .Υποθέτουμε ότι το HelloWorld.java βρίσκεται μέσα κάποιο φάκελο του
σκληρού μας δίσκου .έστω ότι αυτός ο φάκελος είναι ο 'C:\JavaSrc'.
Ανοίγουμε από τα windows ένα DOS command
prompt (Start ->Programs->Accessories->Command prompt) και εκτελούμε την εξής εντολή :
javac c:\JavaSrc\HelloWorld.java
Αν
όλα πάνε καλά τότε δεν θα λάβουμε κανένα μήνυμα επιτυχίας απλά ο
κέρσορας μας
θα μεταφερθεί σε ένα νέο command prompt
στην παρακάτω σειρά! (No news is good news).
Αν παρατηρήσουμε τον φάκελο c:\JavaSrc θα δούμε ότι ένα νέο αρχείο έχει δημιουργηθεί το
HelloWorld.class. Αυτό
είναι και το αρχείο που περιέχει το περίφημο bytecode το οποίο θα
αναλάβει να διαβάσει και να εκτελέσει η εικονική μηχανή. Αν έχουμε τον
φάκελο
μας (C:\JavaSrc)
στο classpath
τότε μπορούμε όπως είμαστε στο υπάρχων command prompt με την
εντολή :
java HelloWorld
θα εκτελέσουμε την εφαρμογή μας. Αν όχι
τότε μέσο του command prompt και με
την εντολή cd c:\JavaSrc
θα βρεθούμε στα περιεχόμενα του φακέλου μας. Από εκεί εκτελούμε την
ίδια εντολή
που αναφέρθηκε πιο πάνω και λογικά θα πρέπει να πάρουμε σαν αποτέλεσμα
στην
οθόνη μας το μήνυμα «Hello World».
Aποστολόπουλος
Πάρις
Κωνσταντινίδης Πάνος
|