. Μεθοδολογία Προγραμματισμού. Εισαγωγή στη Java. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Σχετικά έγγραφα
Αντικειμενοστρεφής Προγραμματισμός

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Αντικειµενοστρεφής Προγραµµατισµός

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Βασικά Στοιχεία της Java

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Βασικά Στοιχεία της Java

05β Η ιδεατή μηχανή της Java

Κλάσεις και Αντικείµενα

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

Οντοκεντρικός Προγραμματισμός

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

2.1 Αντικειµενοστρεφής προγραµµατισµός

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version

Java sessions. Part 1 - Βασικά έννοιες - μέθοδοι

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Γενικά (για τις γραπτές εξετάσεις)

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστρεφής Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στον Προγραμματισμό

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Ειδικά Θέματα Προγραμματισμού

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Τύποι δεδομένων, τελεστές, μεταβλητές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Αντικειµενοστραφής Προγραµµατισµός

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Μεθοδολογία Προγραμματισμού

B. Ενσωμάτωση Ιθαγενών Μεθόδων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

Εισαγωγή στον Προγραμματισμό

Δομημένος Προγραμματισμός

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

03 Η ιδεατή μηχανή της Java

Βασικά της γλώσσας JAVA

Η γλώσσα προγραμματισμού C

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Διδάσκων: Παναγιώτης Ανδρέου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

Αντικειμενοστρεφής Προγραμματισμός

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 1: Εισαγωγικές έννοιες

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

Εισαγωγή στον Προγ/μό Η/Υ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

Πληροφορική 2. Γλώσσες Προγραμματισμού

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

. Μεθοδολογία Προγραμματισμού. Μοτίβα σχεδίασης (Design Patterns) Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω.

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

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

ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Εισαγωγή στον Προγραμματισμό

Προγραμματισμός Υπολογιστών με C++

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Η ιδεατή μηχανή της Java

Transcript:

.. Μεθοδολογία Προγραμματισμού Εισαγωγή στη Java Νικόλαος Πεταλίδης Τμήμα Μηχανικών Η/Υ ΤΕΙ Κεντρικής Μακεδονίας Εισαγωγή Εαρινό Εξάμηνο 2014 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 1 / 77

Εισαγωγή στη Java Εισαγωγή στη Java H γλώσσα Java Είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού Βασικό της χαρακτηριστικό είναι η φιλοσοφία του Write once, run anywhere Είναι από τις πιο δημοφιλείς γλώσσες προγραμματισμού με περίπου 9 εκ. προγραμματιστές ανά τον κόσμο Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 2 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Ιστορικό Παρουσιάστηκε το 1995 από την εταιρία Sun Microsystems (έχει συγχωνευθεί με την Oracle) Δημιουργήθηκε από τον James Gosling Βρίσκεται στην έκδοση 7 (1.7) και αναμένεται η έκδοση 8 Compilers για τη Java εκδίδονται από την Oracle αλλά υπάρχουν και compilers ελεύθερου λογισμικού Από το Μάιο του 2007 το μεγαλύτερο μέρος της τεχνολογίας της Java είναι διαθέσιμο με άδεια ανοιχτού λογισμικού (GNU General Public Licence) Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 3 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Χαρακτηριστικά της Java Αντικειμενοστραφής Εφαρμόζονται οι κλασικές έννοιες αντικειμενοστραφούς προγραμματισμού Κατανεμημένη Δυνατότητα καταμερισμού της εκτέλεσης του κώδικα σε διαφορετικούς υπολογιστές Πολυνηματική Ταυτόχρονη εκτέλεση πολλών νημάτων (threads) Μεταφέρσιμη Ο ίδιος κώδικας μπορεί να εκτελεστεί ανεξαρτήτως λειτουργικού. Ασφαλής Αποτρέπεται η μη εξουσιοδοτημένη πρόσβαση στους σταθμούς πελατών που εκτελούν κώδικα σε Java μέσω δικτύου Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 4 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Γιατί Java Είναι μια πολύ διαδεδομένη γλώσσα που αποκτά συνεχώς νέους οπαδούς Υπάρχει τεράστια συλλογή από βιβλιοθήκες που μειώνουν πολύ τον απαιτούμενο χρόνο ανάπτυξης Δεν είναι C++ Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 5 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Write once run everywhere Ένα πρόγραμμα σε Java μπορεί να τρέχει σε μια πλειάδα συστημάτων χωρίς να γίνεται recompile Αυτό είναι δυνατό γιατί το εκτελέσιμο της Java δεν είναι σε γλώσσα μηχανής, αλλά σε μια ενδιάμεση αναπαράσταση γνωστή ως Java bytecode μιας ιδεατής μηχανής, της Java Virtual Machine Η μετατροπή του bytecode σε πραγματικό κώδικα μηχανής γίνεται από το περιβάλλον της Java (Java Runtime Environment) Αυτή τη στιγμή υπάρχει η δυνατότητα για όλα τα μεγάλα (και μικρά) λειτουργικά συστήματα η μετατροπή από bytecode σε πραγματική γλώσσα μηχανής. Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 6 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Μεταγλώττιση και εκτέλεση Java Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 7 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Οι φάσεις μεταγλώττισης πιο αναλυτικά Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 8 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Οι φάσεις εκτέλεσης πιο αναλυτικά Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 9 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Η πλατφόρμα της Java Αποτελείται από 2 μέρη: Java Virtual Machine Java APIs (οι ''βιβλιοθήκες'') Έρχεται σε τρεις βασικές εκδόσεις Java 2 Standard Edition (SE): APIs ικανά για ανάπτυξη desktop και δικτυακών εφαρμογών Java 2 Enterprise Edition (EE): APIs ικανά για ανάπτυξη web εφαρμογών Java 2 Micro Edition (ME): Για ανάπτυξη εφαρμογών για κινητά Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 10 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Java Virtual Machine «Εκτελεί» μεταγλωττισμένα Java προγράμματα που ονομάζονται bytecode αρχεία. Τα bytecode αρχεία είναι ανεξάρτητα πλατφόρμας και μπορούν να εκτελεστούν από οποιονδήποτε υπολογιστή διαθέτει μία JVM. Η JVM φορτώνει τις κλάσεις που χρειάζονται για να εκτελεστεί το Java πρόγραμμα (class loader). Η JVM «επικυρώνει» (verifies) την εγκυρότητα των bytecode αρχείων πριν τα εκτελέσει (bytecode verifier). Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 11 / 77

Εισαγωγή στη Java Εισαγωγή στη Java JDΚ και JRE JDK είναι το Java Development Kit. Παρέχει τον compiler και άλλα χρήσιμα εργαλεία για την ανάπτυξη της Java, τις βιβλιοθήκες και το JVM JRE είναι το Java Runtime Environment. Υποσύνολο του JDK που περιέχει τα απαραίτητα αρχεία για να μπορούμε να εκτελούμε προγράμματα Java. Τι να κατεβάσουμε;. Αν θέλετε να κάνετε ανάπτυξη κώδικα και να τρέχετε προγράμματα Java χρειάζεστε το JDK. Αν απλώς θέλετε να τρέχετε προγράμματα Java. χρειάζεστε μόνο το JRE Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 12 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Τα αρχεία της Java.java πηγαίος κώδικας (source file).class bytecode αρχείο (παράγεται από compiler).jar Ένα συμπιεσμένο αρχείο που περιέχει πολλές.class αρχεία Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 13 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Παράδειγμα ενός προγράμματος / / T h i s a p p l i c a t i o n program p r i n t s Welcome p a c k a g e e x a m p l e s ; p u b l i c c l a s s Welcome { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { S y s t e m. o u t. p r i n t l n ( " Welcome t o J a v a! " ) ; } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 14 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Μεταγλώττιση και εκτέλεση του κώδικα Μεταγλώττιση κώδικα javac Welcome.java Εκτέλεση κώδικα java Welcome. Προσέξτε!. Το αρχείο που θα σώσετε τον κώδικα πρέπει να έχει το ίδιο όνομα όπως η (public) κλάση (Welcome.java). Συνηθίστε να έχετε μια κλάση ανά αρχείο Η μεταγλώττιση θα παράγει ένα αρχείο με το όνομα Welcome.class Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 15 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Η συνάρτηση main Πρέπει να υπάρχει μία συνάρτηση main προκειμένου να εκτελεστεί το πρόγραμμά μας Η main πρέπει να δηλωθεί ως public Η main πρέπει να δηλωθεί ως static Η main πρέπει να έχει ως παράμετρο ένα διάνυσμα από String Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 16 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Βασικοί τύποι δεδομένων στη Java Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 17 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Διαφορές από τη C/C++ Οι τύποι δεδομένων στη Java έχουν πάντα το ίδιο μέγεθος ανεξάρτητο από την πλατφόρμα στην οποία τρέχει το πρόγραμμα Υπάρχει χωριστός τύπος boolean ο οποίος είναι true ή false και όχι 0 και!0 Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 18 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Άλλοι τύποι δεδομένων Όλοι οι άλλοι τύποι δεδομένων στην Java είναι κλάσεις που κληρονομούν από τη βασική κλάση java.lang.object Για να χρησιμοποιήσουμε ένα μη-βασικό τύπο δεδομένων πρέπει πρώτα να δεσμεύσουμε χώρο στη μνήμη χρησιμοποιώντας την εντολή new S t r i n g p a s s w o r d = new S t r i n g ( " f i n d me " ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 19 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Τελεστές Μεταξύ των βασικών τύπων μπορούν να χρησιμοποιηθούν όλοι οι βασικοί τελεστές που γνωρίζουμε από τη C/C++. +,-,*,/ κ.τ.λ. Ο τελεστής + μπορεί να χρησιμοποιηθεί για τη συνένωση String / / " H e l l o Java " S t r i n g h e l l o J a v a = " H e l l o " + " J a v a " ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 20 / 77

Εισαγωγή στη Java Εισαγωγή στη Java final Η λέξη κλειδί final χρησιμοποιείται για να ορίσει ότι κάτι δε μπορεί να μεταβληθεί αργότερα. final int x: απαγόρευση αλλαγής τιμής εντός εμβέλειας της μεταβλητής x final int somemethod(): Η μέθοδος δε μπορεί να γίνει override από υποκλάσεις final public class Person: Η κλάση δε μπορεί να κληρονομηθεί Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 21 / 77

Εισαγωγή στη Java Εισαγωγή στη Java static Η λέξη κλειδί static χρησιμοποιείται για να ορίσει ότι μια ιδιότητα ή μέθοδος ανήκει σε όλη την κλάση και όχι σε κάποιο συγκεκριμένο αντικείμενο static int x ; : Για όλα τα αντικείμενα το x έχει την ίδια τιμή static int somemethod(): Για όλα τα αντικείμενα η μέθοδος επιστρέφει την ίδια τιμή Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 22 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Import Είναι η αντίστοιχη (αλλά όχι ίδια) εντολή με την #include στη C Δίνει εντολή στον compiler να καταστήσει μια κλάση ή ένα σύνολο κλάσεων (πακέτο) προσβάσιμη από τον κώδικά μας. Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 23 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Διαφορές #include και import #include Δίνει εντολή στον προ-επεξεργαστή της C/C++ να αντιγράψει πλήρως τα περιεχόμενα ενός αρχείου σε ένα άλλο import Απλώς δίνει εντολή στον compiler για το που μπορεί να βρει κατά τη διάρκεια της εκτέλεσης του προγράμματος την επιθυμητή κλάση. Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 24 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Η μεταβλητή classpath Η μεταβλητή CLASSPATH στο σύστημά σας (ή σε παραμέτρους που δίνεται στο πρόγραμμα) λέει στην Java που να ψάξει για κλάσεις που έχετε ορίσει στις δηλώσεις import Αν δε δηλωθεί η Java ψάχνει μόνο στον τρέχοντα φάκελλο. Παραδείγματα. Ψάξε στο./jardir1 κτλ. java -cp./jardir1/*;./jardir2/* class_with_main Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 25 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Java packages Παρόμοια (αλλά όχι ίδια) με το namespace της C++ Οι κλάσεις μπορούν να ομαδοποιηθούν σε ένα package Μια κλάση μπορεί να ανήκει σε ένα μόνο package Όταν οι κλάσεις μεταγλωττιστούν θα ομαδοποιηθούν σε ένα φάκελλο ανά package Οι κλάσεις μπορούν να ορίσουν ότι ορισμένες ιδιότητες είναι ορατές σε κλάσεις που ανήκουν στο ίδιο package. Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 26 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Συνηθίζεται να έχουμε την ίδια δομή τόσο στο πηγαίο κώδικα όσο και στον παραγόμενο εκτελέσιμο. Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 27 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Συμβάσεις για τα πακέτα Συνηθίζεται η ονομασία των πακέτων να αρχίζει με το αντίστροφο του domain μιας εταιρίας Αν η εταιρία σας έχει το domain mycompany.gr τα πακέτα στα προγράμματα της εταιρίας έχουν ονομασίες της μορφής gr.mycompany. Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 28 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Περιορισμός πρόσβασης Modifier Ίδια κλάση Ίδιο πακέτο private (άδειο) protected public Υποκλάση Σύμπαν Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 29 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Διαχείριση μνήμης Γίνεται αυτόματα μέσω ενός νήματος: του garbage collector. Ένα κομμάτι μνήμης απελευθερώνεται runtime όταν πλέον δεν υπάρχει άλλη αναφορά προς αυτό μέσα στο πρόγραμμα. Ο χρήστης δεν ασχολείται (και δεν μπορεί άμεσα να το κάνει) με την απελευθέρωση μνήμης Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 30 / 77

. Καλό παράδειγμα. Εισαγωγή στη Java Εισαγωγή στη Java S o m e C l a s s s o m e C l a s s = new S o m e C l a s s ( ) ; / / Use s o m e C l a s s h e r e c = n u l l ; / / S t o p u s i n g i t. / / Now i t can be garbage c o l l e c t e d.. Κακό παράδειγμα. S o m e C l a s s [ ] s o m e C l a s s = new i n t [ 1 0 ] ; s o m e C l a s s [ 0 ] = new S o m e C l a s s ( ) ; s o m e C l a s s [ 1 ] = new S o m e C l a s s ( ) ; i n t l a s t I n d e x = 1 ; / / k e e p s t r a c k o f t h e l a s t e l e m e n t. / / do s t u f f h e r e t h a t change t h e l a s t i n d e x l a s t I n d e x = 0 ; / / S o m e C l a s s [ 1 ] was n e v e r n u l l i f i e d. / / I t. wont be garbage c o l l e c t e d Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 31 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Δομές ελέγχου στη Java Παρόμοια με C++ Δομές Επιλογής if-else switch-case Δομές Επανάληψης for while do while break, continue, return Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 32 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Χρήσιμες συντομεύσεις Αντί για αυτό f o r ( I t e r a t o r < S t r i n g > i = s o m e L i s t. i t e r a t o r ( ) ; i. h a s N e x t ( ) ; ) { S t r i n g i t e m = i. n e x t ( ) ; S y s t e m. o u t. p r i n t l n ( i t e m ) ; } Δοκιμάστε αυτό f o r ( S t r i n g i t e m : s o m e L i s t ) { S y s t e m. o u t. p r i n t l n ( i t e m ) ; } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 33 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Διαφορές από τη C/C++ Η Java δεν υποστηρίζει πολλαπλή κληρονομικότητα Η Java δεν υποστηρίζει δείκτες Όλες οι συναρτήσεις της Java είναι virtual (methods) Δε μπορείς να έχεις συναρτήσεις εκτός κλάσεων στη Java Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 34 / 77

Εισαγωγή στη Java Εισαγωγή στη Java Ασκησούλα Γράψτε ένα πρόγραμμα που αφαιρεί τα HTML tags από ένα αρχείο HTML Ποιος ο ρόλος της συνάρτησης equals() και hash() Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 35 / 77

Κατευθυντήριες γραμμές προγραμματισμού Για να γράφετε σωστά κώδικα Καλό είναι να ακολουθείτε κάποια πρότυπα και διαδικασίες προγραμματισμού Να μάθετε να τεκμηριώνετε τον κώδικά σας Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 36 / 77

Κατευθυντήριες γραμμές προγραμματισμού Πρότυπα και διαδικασίες προγραμματισμού Η πλειονότητα του λογισμικού αναπτύσσεται από ομάδες Τα πρότυπα σας υποχρεώνουν να οργανωθείτε Τα πρότυπα βοηθούν την ομάδα σας να καταλάβει τι γράψατε γιατί το γράψατε τι σχέση έχει με το υπόλοιπο έργο Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 37 / 77

Κατευθυντήριες γραμμές προγραμματισμού Τα πρότυπα Ορίζουν υποχρεωτική συμμόρφωση όπως παρακάτω Χρησιμοποιείτε {} σε όλες τις δομές που αυτά είναι προαιρετικά Τα ονόματα των μεταβλητών έχουν πάντα τη μορφή firstsecondthird Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 38 / 77

Κατευθυντήριες γραμμές προγραμματισμού Τα πρότυπα Ορίζουν ένα στυλ σχολίων / * S t a t e m e n t o f f u n c t i o n : * Component name : * Programmer : * V e r s i o n : * P r o c e d u r e I n v o c a t i o n : * I n p u t P a r a m e t e r s : * O u t p u t P a r a m e t e r s : * / Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 39 / 77

Κατευθυντήριες γραμμές προγραμματισμού Κατευθυντήριες γραμμές προγραμματισμού Ανεξάρτητα από τη γλώσσα προγραμματισμού κάθε συστατικό προγράμματος περιλαμβάνει τουλάχιστον Δομές ελέγχου Αλγορίθμους Δομές δεδομένων Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 40 / 77

Κατευθυντήριες γραμμές προγραμματισμού Δομές ελέγχου Διατηρήστε τις δομές που έχουν ορισθεί στη σχεδίαση Φροντίστε τη ροή του προγράμματος Δομήστε σωστά το πρόγραμμα Μην κάνετε ειδικές λύσεις Ελαχιστοποιείτε τις εξαρτήσεις Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 41 / 77

Κατευθυντήριες γραμμές προγραμματισμού Παράδειγμα: Γράψτε πρόγραμμα Για τα πρώτα 10.000 εισοδήματος, ο φόρος είναι 10% Για τα επόμενα 10.000 είναι 12% Για τα επόμενα 10,000 πάνω από τις 20.000 ο φόρος είναι 15% Για τα επόμενα 10,000 πάνω από τις 30.000 ο φόρος είναι 18% Για οποιοδήποτε εισόδημα πάνω από τις 40.000 ο φόρος είναι 20% Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 42 / 77

Κατευθυντήριες γραμμές προγραμματισμού Λύση 1 { t a x = 0 ; i f ( t a x a b l e _ i n c o m e < 10000) { t a x = t a x +.10* t a x a b l e _ i n c o m e ; } e l s e i f ( t a x a b l e _ i n c o m e < 20000) { t a x = t a x +. 1 2 * ( t a x a b l e _ i n c o m e 10000) + 1000; } e l s e i f ( t a x a b l e _ i n c o m e < 30000) { t a x = t a x +. 1 5 * ( t a x a b l e _ i n c o m e 20000) + 2200; } e l s e i f ( t a x a b l e _ i n c o m e < 40000) { t a x = t a x +. 1 8 * ( t a x a b l e _ i n c o m e 30000) + 3700; } e l s e { t a x = t a x +. 2 * ( t a x a b l e _ i n c o m e 40000) + 5500; } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 43 / 77

Κατευθυντήριες γραμμές προγραμματισμού Λύση 2 f o r ( i n t i =2; l e v e l =1; i <= 5 ; i ++) i f ( t a x a b l e _ i n c o m e > b r a c k e t [ i ] ) { l e v e l = l e v e l + 1 ; t a x = b a s e [ l e v e l ]+ p e r c e n t [ l e v e l ] * ( t a x a b l e _ i n c o m e b r a c k e t [ l e v e l ] ) ; } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 44 / 77

Κατευθυντήριες γραμμές προγραμματισμού Τεκμηρίωση Η τεκμηρίωση ενός προγράμματος εξηγεί τι κάνει το πρόγραμμα και πως το κάνει Ως εσωτερική τεκμηρίωση αναφέρεται όλο το περιγραφικό υλικό που γράφεται κατευθείαν στον κώδικα, δηλ. τα σχόλια Η εξωτερική τεκμηρίωση είναι το περιγραφικό υλικό που δεν βρίσκεται μαζί με τον κώδικα Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 45 / 77

Κατευθυντήριες γραμμές προγραμματισμού Εξωτερική τεκμηρίωση Αφορά κυρίως τυχόν διαγράμματα που αναπτύσσονται Περιγραφές αλγορίθμων ή πρωτοκόλλων Θα δούμε περισσότερα στις επόμενες διαλέξεις Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 46 / 77

Κατευθυντήριες γραμμές προγραμματισμού Εσωτερική Τεκμηρίωση Περιγράψτε τα συστατικά Προσέξτε τα σχόλια σας! / / Εδώ αυξάνουμετο i 3 i 3 = i 3 + 1 ; Το παραπάνω σχόλιο δε μας δίνει καμιά πληροφορία Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 47 / 77

Κατευθυντήριες γραμμές προγραμματισμού Σχόλια Φροντίστε τα σχόλια σας να συμφωνούν με τον κώδικα / / g e t r i d o f t r a i l i n g n e w l i n e c h a r a c t e r i = 0 ; w h i l e ( d a t e [ i ] >= ) i ++; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 48 / 77

Κατευθυντήριες γραμμές προγραμματισμού Σχολιάστε τα λάθη σας Σημειώστε σημεία στον κώδικα που θέλουν βελτίωση: / / TODO : u s e a f a s t e r a l g o r i t h m Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 49 / 77

Κατευθυντήριες γραμμές προγραμματισμού Επιλέξτε σωστά ονόματα! Τι κάνει ο παρακάτω κώδικας; z = ( a * b ) + ( 0. 5 ) * ( a ) * ( b 4 0 ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 50 / 77

Κατευθυντήριες γραμμές προγραμματισμού Δείτε τη διαφορά weekwage = ( h o u r R a t e * h o u r s ) + ( 0. 5 ) * ( h o u r R a t e ) * ( h o u r s 4 0 ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 51 / 77

Κατευθυντήριες γραμμές προγραμματισμού Προσθέστε μεταβλητές Δείτε αυτό i f l i n e. s p l i t ( ' : ' ) [ 0 ]. s t r i p ( ) == " r o o t " Και αυτό u s e r n a m e = l i n e. s p l i t ( ' : ' ) [ 0 ]. s t r i p ( ) i f u s e r n a m e == " r o o t " Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 52 / 77

Κατευθυντήριες γραμμές προγραμματισμού Άλλα άσχημα παραδείγματα f i n a l i n t ONE=1; f i n a l i n t TWENTY=20; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 53 / 77

Κατευθυντήριες γραμμές προγραμματισμού Ονόματα συναρτήσεων Επιλέξτε ονόματα που δείχνουν ενέργεια, π.χ. gettime() αντί για time() Προσέξτε τις συναρτήσεις που επιστρέφουν λογικές τιμές (FALSE,TRUE) if (checkoctal( c ) ) vs if (isoctal( c ) ) Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 54 / 77

Κατευθυντήριες γραμμές προγραμματισμού Μορφοποίηση Η σωστή μορφοποίηση μπορεί να σας βοηθήσει ή να μη σας βοηθήσει να καταλάβετε τον κώδικα f o r ( I =0; I <10; I + + ) ; p r i n t f (% d, I ) ; Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 55 / 77

Κατευθυντήριες γραμμές προγραμματισμού Χρησιμοποιήστε τις βιβλιοθήκες Αντί για i f ( c >=65 && c <=90) ή i f ( c >= A && c <= Z ) δώστε i f ( C h a r a c t e r. i s U p p e r C a s e ( c ) ) Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 56 / 77

Κατευθυντήριες γραμμές προγραμματισμού Προσοχή στους τύπους δεδομένων Τι τυπώνει το παρακάτω πρόγραμμα: i n t main ( i n t a r g c, c o n s t c h a r * a r g v [ ] ) { f l o a t f 1 =0.999; f l o a t f 2 = 1. 0 0 1 ; f l o a t f 3 = f 2 f 1 ; s t d : : c o u t << f 3 ; r e t u r n 0 ; } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 57 / 77

Κατευθυντήριες γραμμές προγραμματισμού Προγραμματίστε αμυντικά Μη θεωρείτε ότι οι συναρτήσεις σας θα κληθούν μόνο με σωστές παραμέτρους Μην επιτρέπετε σε κανέναν να αλλάξει πράγματα που δε θα έπρεπε Αρχικοποιείτε πάντα τις μεταβλητές σας Ελέγξτε τις επιστρεφόμενες τιμές Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 58 / 77

Κατευθυντήριες γραμμές προγραμματισμού Ένα κακό παράδειγμα d o u b l e a v g ( d o u b l e a [ ], i n t n ) { i n t I ; d o u b l e sum ; sum =0.0; f o r ( I =0; I < n ; I ++) sum += a [ I ] ; r e t u r n sum / n ; } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 59 / 77

Κατευθυντήριες γραμμές προγραμματισμού Δημιουργήστε εξαιρέσεις για εξαιρετικές περιστάσεις v o i d g r a d e S t u d e n t ( ) t h r o w s I n v a l i d A r g u m e n t E x c e p t i o n { i f ( s t a t e== ' I n a c t i v e ' ) { t h r o w new I n v a l i d A r g u m e n t E x c e p t i o n ( ) ; }... } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 60 / 77

Κανόνες τεκμηρίωσης Κανόνες τεκμηρίωσης Στη γλώσσα Java υπάρχουν εργαλεία τα οποία κατά το δυνατόν αυτοματοποιούν την παραγωγή τεκμηρίωσης για ένα πρόγραμμα. Είναι ενδιαφέρον να δούμε πως δουλεύουν Ακόμα και αν δε δουλεύετε σε Java μπορείτε να διδαχθείτε από τα παραδείγματα που ακολουθούν Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 61 / 77

Κανόνες τεκμηρίωσης Javadoc Ένα ειδικό εργαλείο, το javadoc, δέχεται ως είσοδο ένα πρόγραμμα σε Java και παράγει τεκμηρίωση σε HTML Για να δουλέψει σωστά, τα σχόλια στο πρόγραμμα πρέπει να γράφονται με συγκεκριμένο τρόπο Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 62 / 77

Κανόνες τεκμηρίωσης Προδιαγραφές Οι προδιαγραφές του κώδικα ορίζονται με σχόλια / * * * T h i s i s t h e t y p i c a l f o r m a t o f a s i m p l e * d o c u m e n t a t i o n comment t h a t s p a n s two l i n e s. * / / * * T h i s comment t a k e s up o n l y one l i n e. * / Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 63 / 77

Κανόνες τεκμηρίωσης Που μπαίνουν τα σχόλια Όλα τα σχόλια μπαίνουν ΑΜΕΣΩΣ ΠΡΙΝ από το ορισμό της κλάσης, του constructor, destructor, μεθόδων κτλ. Ανάμεσα στα σχόλια και τον ορισμό δεν επιτρέπεται τίποτα άλλο / * * * T h i s i s t h e c l a s s comment f o r t h e c l a s s * W h a t e v e r. * / i m p o r t com. s u n ; / / MISTAKE p u b l i c c l a s s W h a t e v e r { } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 64 / 77

Κανόνες τεκμηρίωσης Ορισμοί με πολλαπλά πεδία Αν θέλετε σχόλια σε ορισμούς αυτού του τύπου: int x, y; // Comments Καλύτερα γράψτε το ως i n t x ; / / Comments f o r x i n t y ; / / Comments f o r y Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 65 / 77

Κανόνες τεκμηρίωσης Δομή μιας προδιαγραφής Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 66 / 77

Κανόνες τεκμηρίωσης Τα σχόλια γράφονται σε HTML / * * * T h i s i s a <b > doc < / b > comment. * @see j a v a. l a n g. O b j e c t * / Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 67 / 77

Κανόνες τεκμηρίωσης Η πρώτη πρόταση Η πρώτη πρόταση στην περιγραφή μιας κλάσης, μεθόδου κτλ Πρέπει να είναι μια περίληψη ακριβής και συνοπτική. Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 68 / 77

Κανόνες τεκμηρίωσης Κύρια περιγραφή Η κύρια περιγραφή έρχεται μετά από την περίληψη. Περιγράφει συνοπτικά τη λειτουργία της κλάσης, μεθόδου κτλ Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 69 / 77

Κανόνες τεκμηρίωσης Tags (ετικέτες) Αυτές ακολουθούν μετά την κύρια περιγραφή. Περιγράφουν σημαντικά στοιχεία της κλάσης, μεθόδου κτλ. Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 70 / 77

Κανόνες τεκμηρίωσης @param Για κάθε μία παράμετρο, ορίζεται και ένα σχόλιο για το ρόλο της / * * * T e s t s a c h a r a c t e r and n o t i f i e s an o b s e r v e r * a c c o r d i n g t o t h e v a l u e o f t h e c h a r a c t e r * @param c h t h e c h a r a c t e r t o be t e s t e d * @param o b s t h e o b s e r v e r t o be n o t i f i e d * / p u b l i c v o i d t e s t C h a r ( c h a r ch, O b s e r v e r o b s ) Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 71 / 77

Κανόνες τεκμηρίωσης @return Ορίζει μια περιγραφή της τιμής που επιστρέφεται / * * * T e s t s a c h a r a c t e r and n o t i f i e s an o b s e r v e r * a c c o r d i n g t o t h e v a l u e o f t h e c h a r a c t e r * @param c h t h e c h a r a c t e r t o be t e s t e d * @param o b s t h e o b s e r v e r t o be n o t i f i e d * @ r e t u r n r e s u l t o f t h e a c t i o n p e r f o r m e d by t h e * o b s e r v e r on t h e c h a r a c t e r * / p u b l i c i n t t e s t C h a r a c t e r ( c h a r ch, O b s e r v e r o b s ) Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 72 / 77

Κανόνες τεκμηρίωσης @throws/@exception class-name description Περιγράφει αν η συγκεκριμένη μέθοδος μπορεί να καταλήξει σε μια εξαίρεση (exception) και πότε συμβαίνει αυτό Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 73 / 77

Κανόνες τεκμηρίωσης Παράδειγμα / * * * Draws t h e s h a p e o f t h e o b j e c t on t h e s c r e e n * i n s t a n c e g i v e n i n t h e p a r a m e t e r. * @throws N u l l P o i n t e r E x c e p t i o n I f t h e s c r e e n * o b j e c t i s n u l l. * @throws S c r e e n S i z e E x c e p t i o n I f t h e o b j e c t d o e s * n o t f i t on t h e s c r e e n. * / p u b l i c b o o l e a n d r a w S h a p e ( S c r e e n s c r e e n ) t h r o w s N u l l P o i n t e r E x c e p t i o n, S c r e e n S i z e E x c e p t i o n {... } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 74 / 77

Κανόνες τεκμηρίωσης Αποτέλεσμα Το javadoc τελικά παίρνει ένα σχόλιο που μοιάζει έτσι: / * * * C r e a t e s a new i n s t a n c e o f E p p C h e c k * @param n s The namespace t h i s < I > c h e c k < / I > comma * @param p a r e n t The p a r e n t o f t h i s e l e m e n t, u s u a l * / p u b l i c EppCheck ( Namespace ns, E p p E l e m e n t p a r e n t ) { s u p e r ( ns, p a r e n t ) ; c h e c k O b j e c t s = new V e c t o r ( ) ;... } Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 75 / 77

Κανόνες τεκμηρίωσης Και παράγει Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 76 / 77

Κανόνες τεκμηρίωσης Περισσότερες πληροφορίες H Java είναι μια γλώσσα με τεράστιο και καλογραμμένο σύστημα πληροφοριών http://docs.oracle.com/javase/7/docs/api/ Brian W. Kernighan and Rob Pike, The Practice of Programming, Addison-Wesley, Inc., 1999 (Γενικό για προγραμματισμό) Steve McConnel, Code Complete, A Practical Handbook of Software Construction, Second Edition, Microsoft Pres (Γενικό για προγραμματισμό) Ν. Πεταλίδης (ΤΕΙ Κεντρικής Μακεδονίας) Μεθοδολογία Προγραμματισμού 77 / 77