ΜΙΑ ΓΕΥΣΗ ΑΠΟ … JAVA 1
1 ΠΡΟΛΟΓΟΣ 7
1.1 ΣΚΟΠΟΣ ΚΑΙ ΡΟΛΟΣ ΤΟΥ ΒΙΒΛΙΟΥ 7
1.2 ΤΟ ΙΣΤΟΡΙΚΟ ΚΑΙ ΤΟ ΜΕΛΛΟΝ ΤΟΥ ΒΙΒΛΙΟΥ 7
1.3 ΕΥΧΑΡΙΣΤΙΕΣ 8
1.4 ΛΙΓΑ ΛΟΓΙΑ ΓΙΑ ΤΟΝ ΣΥΓΓΡΑΦΕΑ 8
2 ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ 9
3 ΣΥΓΓΡΑΦΗ, ΜΕΤΑΓΛΩΤΤΙΣΗ ΚΑΙ ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΩΝ 9
3.1 H ΒΙΒΛΙΟΘΗΚΗ ΤΗΣ JAVA (JAVA API) 10
3.2 ΤΟ IDE ECLIPSE 11
3.2.1 ΤΟ ΠΕΡΙΒΑΛΛΟΝ 11
3.2.2 ΝΕΟ ΕΡΓΟ 12
3.2.3 ΝΕΑ ΚΛΑΣΗ 13
3.2.4 ΠΡΟΓΡΑΜΜΑΤΙΖΟΝΤΑΣ 14
3.2.5 ΕΚΤΕΛΕΣΗ ΕΦΑΡΜΟΓΗΣ 16
3.2.6 ΕΙΣΑΓΩΓΗ ΕΡΓΟΥ 16
3.2.7 ΠΛΗΡΟΦΟΡΙΕΣ 17
4 ΤΑ ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΤΗΣ JAVA 17
4.1 ΣΧΟΛΙΑ 17
4.2 ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ 18
4.3 ΔΗΛΩΣΗ ΜΕΤΑΒΛΗΤΩΝ 18
4.4 ΔΗΛΩΣΗ ΣΤΑΘΕΡΩΝ 19
4.5 ΠΙΝΑΚΕΣ 19
4.6 ΤΕΛΕΣΤΕΣ 19
5 ΡΟΗ ΠΡΟΓΡΑΜΜΑΤΟΣ 20
5.1 ΔΟΜΕΣ ΕΛΕΓΧΟΥ 20
5.1.1 IF ELSE 20
5.1.2 SWITCH 21
5.2 ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ 22
5.2.1 WHILE 22
5.2.2 DO WHILE 22
5.2.3 FOR 22 4
6 ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΤΙΚΕΙΜΕΝΑ 23
6.1 ΜΕΘΟΔΟΙ 24
6.2 ΚΛΗΣΗ ΜΕΘΟΔΩΝ ΚΑΙ ΠΕΡΑΣΜΑ ΠΑΡΑΜΕΤΡΩΝ 27
7 ΟΡΓΑΝΩΣΗ ΚΛΑΣΕΩΝ 29
7.1 ΠΑΚΕΤΑ 29
7.2 ΠΕΡΙΟΡΙΣΜΟΙ ΠΡΟΣΠΕΛΑΣΗΣ 30
7.3 ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ (INHERITANCE) 32
7.4 ΔΙΕΠΑΦΕΣ (INTERFACES) 36
7.5 ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ 39
7.6 ΠΟΛΥΜΟΡΦΙΣΜΟΣ (POLYMORPHISM) 40
7.6.1 ΥΠΕΡΦΟΡΤΩΣΗ (OVERLOADING) 40
7.6.2 ΥΠΟΣΚΕΛΙΣΜΟΣ (OVERRIDING) 41
7.6.3 ΥΠΟΣΚΕΛΙΣΜΟΣ (OVERRIDING) ΚΑΙ ΕΠΙΣΚΙΑΣΗ (SHADOWING) 42
7.7 ΕΝΘΥΛΑΚΩΣΗ (ENCAPSULATION) 43
7.8 ΕΡΩΤΗΜΑΤΑ ΚΑΤΑΝΟΗΣΗΣ 44
8 ΣΥΜΒΟΛΟΣΕΙΡΕΣ (STRINGS) 45
9 ΕΞΑΙΡΕΣΕΙΣ (EXCEPTIONS) 46
10 ADTS (ABSTRACT DATA TYPES) 50
10.1 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΒΑΣΙΣΜΕΝΟΣ ΣΕ ΣΥΜΒΟΛΑΙΑ (CONTRACT-BASED PROGRAMMING) 51
10.2 ΣΥΜΒΟΛΑΙΑ ΚΑΙ ΕΞΕΙΔΙΚΕΥΣΗ 52
11 ΔΙΑΧΕΙΡΙΣΗ ΣΥΛΛΟΓΩΝ ΜΕ ΤΟ JAVA COLLECTION FRAMEWORK 54
11.1 ΣΥΓΚΡΙΣΗ ΚΑΙ ΤΑΞΙΝΟΜΗΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ 57
12 ΑΡΧΕΙΑ (FILE) 59
13 ΠΑΡΑΜΕΤΡΙΚΟΙ ΤΥΠΟΙ (GENERICS) 60
14 ΕΜΦΩΛΕΥΜΕΝΕΣ Η ΕΣΩΤΕΡΙΚΕΣ ΚΛΑΣΕΙΣ (INNER CLASSES) 61
15 ΣΤΟΧΑΣΜΟΣ (REFLECTION) 63
16 ΓΡΑΦΙΚΕΣ ΔΙΕΠΑΦΕΣ ΧΡΗΣΤΗ ΜΕ ΤΟ SWING 64
16.1 Η ΚΛΑΣΗ COMPONENT 65
16.2 ΥΠΟΔΟΧΕΙΣ-ΠΛΑΙΣΙΑ (JFRAMES) 66
16.3 ΣΥΣΤΑΤΙΚΑ (COMPONENTS) 67
16.4 ΔΙΑΤΑΞΗ ΣΥΣΤΑΤΙΚΩΝ (LAYOUTS) 69 5
16.5 ΤΑΜΠΛΟ/ΤΟΜΕΙΣ (JPANEL) 72
16.6 ΑΚΡΟΑΤΕΣ ΣΥΜΒΑΝΤΩΝ (ACTION LISTENERS) 72
16.7 ΜΙΚΡΟΕΦΑΡΜΟΓΕΣ (APPLETS) ΤΗΣ JAVA 73
17 ΠΟΛΥΝΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 75
18 ΤΑ ΝΕΑ ΣΤΟΙΧΕΙΑ ΤΗΣ JAVA 8 77
18.1 ΔΙΕΠΑΦΕΣ 77
18.2 ΣΥΝΑΡΤΗΣΙΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 79
18.3 ΛΑΜΔΑ ΕΚΦΡΑΣΕΙΣ: ΕΙΣΑΓΩΓΗ 79
18.4 DEFAULT ΜΕΘΟΔΟΙ ΤΗΣ ΒΙΒΛΙΟΘΗΚΗΣ 81
18.4.1 ΤΑΞΙΝΟΜΗΣΗ 82
18.4.2 ΑΚΡΟΑΤΕΣ ΣΥΜΒΑΝΤΩΝ 82
18.5 ΑΝΑΦΟΡΕΣ ΣΥΝΑΡΤΗΣΕΩΝ 82
18.6 ΠΡΟΚΑΘΟΡΙΣΜΕΝΕΣ ΣΥΝΑΡΤΗΣΙΑΚΕΣ ΔΙΕΠΑΦΕΣ ΤΟΥ JAVA.UTIL.FUNCTIONS 83
18.7 ΡΟΕΣ (STREAMS) 83
18.7.1 ΠΑΡΑΛΛΗΛΙΑ 87
18.7.2 ΕΠΙΛΟΓΟΣ ΓΙΑ ΡΟΕΣ 88
19 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ANDROID 88
19.1 ΕΙΣΑΓΩΓΗ 88
19.2 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ 89
19.3 Η ΤΕΛΙΚΗ ΦΥΣΙΚΗ ΥΠΟΣΤΑΣΗ ΜΙΑΣ ΕΦΑΡΜΟΓΗΣ 91
19.4 Η ΛΟΓΙΚΗ ΔΟΜΗ ΜΙΑΣ ΕΦΑΡΜΟΓΗΣ 92
19.5 ΤΡΕΧΟΝ ΠΑΡΑΔΕΙΓΜΑ 93
19.6 ΤΟ ΑΡΧΕΙΟ ANDROIDMANIFEST.XML 94
19.7 Ο ΦΑΚΕΛΟΣ /JAVA 94
19.8 Ο ΦΑΚΕΛΟΣ /RES 95
19.9 ΤΟ ΑΡΧΕΙΟ /RES/VALUES/STRINGS.XML 96
19.10 ΤΟ ΑΡΧΕΙΟ /RES/VALUES/STYLES.XML 96
19.11 Ο ΦΑΚΕΛΟΣ /RES/DRAWABLE 97
19.12 Ο ΦΑΚΕΛΟΣ /RES/LAYOUT 98
19.13 ΤΑ ΑΡΧΕΙΑ /JAVA/*ACTIVITY.JAVA 100
20 ΑΝΤΙΚΕΙΜΕΝΟΣΤΕΦΗΣ ΑΝΑΛΥΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ 105
20.1 ΣΚΟΠΟΣ 105
20.2 ΔΙΑΔΙΚΑΣΙΑ ΑΝΑΛΥΣΗΣ ΚΑΙ ΣΧΕΔΙΑΣΜΟΥ 105
20.3 ΔΙΑΓΡΑΜΜΑΤΙΚΗ ΓΛΩΣΣΑ ΜΟΝΤΕΛΟΠΟΙΗΣΗΣ 105
20.4 ΣΥΓΚΕΚΡΙΜΕΝΟ ΠΑΡΑΔΕΙΓΜΑ 106
20.4.1 (Ι) ΣΤΟΧΟΙ ΚΑΙ ΠΡΟΣΔΟΚΙΕΣ ΠΕΛΑΤΗ 106
20.4.2 (ΙΙ) ΔΙΑΓΡΑΜΜΑ ΠΕΡΙΠΤΩΣΕΩΝ ΧΡΗΣΗΣ (USE CASE DIAGRAM) 106
20.4.3 (ΙΙΙ) ΜΑΚΕΤΑ ΓΡΑΦΙΚΗΣ ΔΙΕΠΑΦΗΣ ΧΡΗΣΗΣ 107
20.4.4 (IV) ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΥΣΤΗΜΑΤΟΣ 108
20.4.5 (V) ΔΙΑΓΡΑΜΜΑ ΚΛΑΣΕΩΝ 108
20.4.6 (VI) ΑΚΟΛΟΥΘΙΑΚΑ ΔΙΑΓΡΑΜΜΑΤΑ ΚΑΙ ΔΙΑΓΡΑΜΜΑΤΑ ΚΑΤΑΣΤΑΣΕΩΝ 110
20.4.7 ΤΙ ΔΕΝ ΠΕΡΙΓΡΑΨΑΜΕ 112 6
21 ΘΕΜΑΤΑ ΜΗΧΑΝΟΛΟΓΙΑΣ ΤΗΣ JAVA 112
21.1 ΕΠΙΣΗΜΕΙΩΣΕΙΣ (JAVA ANNOTATIONS) 112
21.2 ΔΟΚΙΜΕΣ (TESTING) 113
21.3 ΈΝΕΣΗ ΕΞΑΡΤΗΣΕΩΝ (DEPENDENCY INJECTION) 115
21.4 ΟΙΚΟΔΟΜΗΣΗ ΛΟΓΙΣΜΙΚΟΥ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΤΩΝ ΣΧΕΤΙΚΩΝ ΕΞΑΡΤΗΣΕΩΝ (MAVEN, GRADLE) 116
21.5 ΣΥΣΤΗΜΑΤΑ ΓΙΑ ΣΥΝΕΡΓΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ, ΕΚΔΟΣΕΙΣ ΛΟΓΙΣΜΙΚΟΥ 118
22 ΕΠΙΛΟΓΟΣ 118
23 ΤΙ ΕΙΠΑΝ ΑΛΛΟΙ ΓΙΑ ΤΟ … ΒΙΒΛΙΟ 118