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



Σχετικά έγγραφα
Συνοπτική Παρουσίαση. Ελλάδα

ΚΩΔΙΚΑΣ ΔΕΟΝΤΟΛΟΓΙΑΣ

Ατομικό ιστορικό νηπίου

Οι ιοί και οι ιογενείς λοιμώξεις του αναπνευστικού συστήματος στα παιδιά

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

ΠΑΡΟΥΣΙΑΣΗ ΤΩΝ ΓΕΝΙΚΩΝ ΚΑΙ ΕΙΔΙΚΩΝ ΟΡΩΝ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ «ΑΣΦΑΛΩΣ ΚΑΤΟΙΚΕΙΝ» ΚΟΙΝΟΧΡΗΣΤΟΙ ΧΩΡΟΙ

Η ΔΙΑΘΕΜΑΤΙΚΗ ΤΗΣ ΔΙΑΘΕΜΑΤΙΚΗΣ

ΚΕΦ. 1 Η ΛΟΓΙΣΤΙΚΗ ΚΑΙ Η ΣΗΜΑΣΙΑ ΤΗΣ ΣΤΙΣ ΕΠΙΧΕΙΡΗΣΕΙΣ

Σχολικός εκφοβισµός και γονείς

1. Εισαγωγή. 2. Καταπολέμηση της φοροδιαφυγής

ΚΩ ΙΚΑΣ ΕΟΝΤΟΛΟΓΙΑΣ ΤΗΣ ΕΤΑΙΡΕΙΑΣ ΜΕ ΤΗΝ ΕΠΩΝΥΜΙΑ «ΠΑΠΟΥΤΣΑΝΗΣ ΑΝΩΝΥΜΗ ΒΙΟΜΗΧΑΝΙΚΗ ΚΑΙ ΕΜΠΟΡΙΚΗ ΕΤΑΙΡΕΙΑ ΚΑΤΑΝΑΛΩΤΙΚΩΝ ΑΓΑΘΩΝ»

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

11. Προϋπολογισμός Προϋπολογισμός και αποδοτικότητα δημοσίων υπηρεσιών: υφιστάμενη κατάσταση

Πρακτικό εργαλείο. για την ταυτοποίηση πρώτου επιπέδου των θυμάτων παράνομης διακίνησης και εμπορίας. τη σεξουαλική εκμετάλλευση

αρχαιολόγος- μουσειολόγος- ξεναγός, ΜΑ

Κατερίνα Παναγοπούλου: Δημιουργώντας κοινωνικό κεφάλαιο την εποχή της κρίσης

Συνωμοσία Πυρήνων της Φωτιάς - Πυρήνας Αντάρτικου Πόλης

ΠΑΙΔΑΓΩΓΙΚΗ ΣΧΟΛΗ (ΦΛΩΡΙΝΑ) ΤΜΗΜΑ ΝΗΠΙΑΓΩΓΩΝ ΕΡΓΑΣΤΗΡΙΟ ΔΙΔΑΚΤΙΚΗΣ ΦΥΣΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΠΑΡΑΓΩΓΗΣ ΔΙΔΑΚΤΙΚΟΥ ΥΛΙΚΟΥ

Πρόγραμμα Σπουδών για το "Νέο Σχολείο"

ΑΣΦΑΛΙΣΗ ΑΥΤΟΚΙΝΗΤΟΥ

Τοποθέτηση Δημάρχου Γ. Πατούλη. για τεχνικό πρόγραμμα 2010

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

ΕΝΗΜΕΡΩΤΙΚΟ ΈΓΓΡΑΦΟ Σ.Ε.Ε.Δ.Δ.Ε. ΟΙ ΕΠΙΒΑΡΥΝΣΕΙΣ ΤΟΥ ΝΕΟΥ ΦΟΡΟΛΟΓΙΚΟΥ

ΔΕΛΤΙΟ ΤΥΠΟΥ. Ελλείψεις στο φορολογικό νομοσχέδιο. Σοβαρές ελλείψεις στη νέα μορφή του φορολογικού νομοσχεδίου

Σοφία Γιουρούκου, Ψυχολόγος Συνθετική Ψυχοθεραπεύτρια

Χρηματοδότηση των Συλλόγων στην εποχή της κρίσης

Όμιλος Λογοτεχνίας. Δράκογλου Αναστασία, Κιννά Πασχαλίνα

Ασυντήρητες και επικίνδυνες οικοδομές

Ευρετήριο πινάκων. Ασκήσεις και υπομνήματα

Μαρία-Στεφανία-Γιάννης 1 ο Πρότυπο Πειραματικό Δημοτικό Σχολείο Θεσσαλονίκης Ε2 Π.Τ.Δ.Ε.-Α.Π.Θ

ΚΕΦΑΛΑΙΟ 3 ο ΤΟ ΜΕΛΛΟΝ ΤΗΣ ΕΥΡΩΠΑΪΚΗΣ ΕΝΩΣΗΣ. 3.1 Εισαγωγή

ΘΕΣΕΙΣ ΠΡΟΤΑΣΕΙΣ ΠΡΟΤΕΡΑΙΟΤΗΤΕΣ

Ο αθλητισμός εμπνέεται από την ειρήνη. Η ειρήνη εμπνέεται από τον αθλητισμό.

ΟΡΓΑΝΩΣΗ ΕΝΟΤΗΤΩΝ Α ΤΑΞΗΣ ΕΝΟΤΗΤΑ 3

Δρ.ΠΟΛΥΚΑΡΠΟΣ ΕΥΡΙΠΙΔΟΥ

ΜΗ ΤΥΠΙΚΟΤΗΤΑ ΚΑΙ ΜΗ ΠΡΑΓΜΑΤΙΚΟΤΗΤΑ ΣΤΙΣ ΑΓΟΡΕΣ

Ασφάλεια στις εργασίες κοπής μετάλλων

Το ολοκαύτωμα της Κάσου

289 ον Σύστημα Αεροπροσκόπων Αγίας Φύλας ΟΜΑΔΑ ΠΡΟΣΚΟΠΩΝ ΕΓΧΕΙΡΙΔΙΟ ΧΑΛΚΙΝΟΥ ΤΡΙΦΥΛΛΟΥ

Τίτλος Ειδικού Θεματικού Προγράμματος: «Διοίκηση, Οργάνωση και Πληροφορική για Μικρο-μεσαίες Επιχειρήσεις»

ΣΥΝΤΟΝΙΣΤΕΣ ΟΜΑΔΑΣ PROJECT ΑΝΘΡΩΠΙΣΤΙΚΕΣ ΕΠΙΣΤΗΜΕΣ: ΟΜΑΔΑ PROJECT ΑΝΘΡΩΠΙΣΤΙΚΕΣ ΕΠΙΣΤΗΜΕΣ:

ΤΙΤΛΟΣ ΒΙΒΛΙΟΥ: Συνδικαλιστική εκπαίδευση, Συλλογικές συμβάσεις, Συλλογικές διαπραγματεύσεις.

ενεργοί πολίτες για τη Μήλο οι θέσεις μας Υποψηφιότητα Αντώνη Καβαλιέρου δημοτικές εκλογές

ΠΑΓΚΥΠΡΙΑ ΟΡΓΑΝΩΣΗ ΕΛΛΗΝΩΝ ΔΑΣΚΑΛΩΝ (ΠΟΕΔ) ΤΑΚΤΙΚΗ ΠΑΓΚΥΠΡΙΑ ΣΥΝΔΙΑΣΚΕΨΗ ΓΕΝΙΚΩΝ ΑΝΤΙΠΡΟΣΩΠΩΝ ΛΟΓΟΔΟΣΙΑ ΤΟΥ Δ.Σ. ΓΙΑ ΣΧΟΛΙΚΟ ΕΤΟΣ

γραμματισμό των νηπίων

Πρακτικό 6/2012 της συνεδρίασης της Επιτροπής Ποιότητας Ζωής, του Δήμου Λήμνου, της 4ης Μαΐου 2012.

ΔΙΑΔΟΣΗ ΘΕΡΜΟΤΗΤΑΣ Φυσική Β' Γυμνασίου. Επιμέλεια: Ιωάννης Γιαμνιαδάκης

ΜΕ ΤΗ ΔΙΚΗ ΜΟΥ ΒΟΗΘΕΙΑ, ΤΟΥ ΑΥΤΟΚΡΑΤΟΡΙΚΟΥ ΚΗΠΟΥΡΟΥ ΔΗΛΑΔΗ, ΘΑ ΤΑ ΚΑΛΛΙΕΡΓΗΣΕΤΕ...

ΑΝΑΚΥΚΛΩΣΗ ΤΗΓΑΝΕΛΑΙΟΥ ΓΙΑΤΙ - ΠΩΣ - ΠΟΤΕ

ΚΕΦΑΛΑΙΟ 8 ΣΥΜΠΕΡΑΣΜΑΤΑ

Το συνέδριο σας πραγματοποιείται σε μια εξαιρετικά δύσκολη συγκυρία για τον τόπο, την οικονομία της χώρας, την κοινωνία και τον κόσμο της εργασίας.

ΠΡΟΕΤΟΙΜΑΣΙΑ ΓΙΑ ΣΥΝΕΝΤΕΥΞΗ. Βασικές συμβουλές

Το σύμπαν μέσα στο οποίο αναδύεστε

Φλωρεντία, 10 Δεκεμβρίου 1513 Προς τον: ΦΡΑΓΚΙΣΚΟ ΒΕΤΤΟΡΙ, Πρέσβη της Φλωρεντίας στην Αγία Παπική Έδρα, Ρώμη. Εξοχώτατε Πρέσβη,

Εσωτερικοί Κανονισμοί Τοπικής Αυτοδιοίκησης

«ΑΝΩ ΛΙΟΣΙΑ: ΤΟΠΙΚΗ ΙΣΤΟΡΙΑ, ΠΕΡΙΒΑΛΛΟΝ, ΠΡΟΚΛΗΣΕΙΣ, ΠΡΟΟΠΤΙΚΕΣ»

Αυτός που δεν μπορεί να δει τα μικρά πράγματα είναι τυφλός και για τα μεγαλύτερα. (Κομφούκιος, πχ)

Η ελληνική κοινωνία απέναντι στην οικονομική κρίση

ΔΙΑΧΕΙΡΙΣΗ ΔΗΜΟΣΙΟΥ ΧΡΕΟΥΣ ΣΕ ΧΩΡΕΣ ΤΗΣ ΕΥΡΩΖΩΝΗΣ

Παιδαγωγική ή Εκπαίδευση ΙΙ

Το ρολόι που κρατάς στα χέρια σου κρύβει ένα μυστικό: το μυστικό της κόκκινης ομάδας. Αν είσαι αρκετά τολμηρός, μπορείς κι εσύ να ενημερωθείς για τα

Kεντρικός συντονισμός πολιτικών, μόνιμοι υφυπουργοί, μείωση ειδικών συμβούλων, κατάργηση αναπληρωτών.

Κεφάλαιο 4 ο Η αριστοτελική φυσική

Έργο :ΕΡΓΑΣΙΕΣ ΣΥΝΤΗΡΗΣΗΣ ΟΙΚΟΔΟΜΙΚΩΝ ΚΑΙ Η/Μ ΣΧΟΛΙΚΩΝ ΚΤΗΡΙΩΝ ΕΤΟΥΣ 2012 ΤΙΜΟΛΟΓΙΟ ΜΕΛΕΤΗΣ. Τιμαριθμική 2010Δ 1 ΓΕΝΙΚΟΙ ΟΡΟΙ

«ΤΑ ΧΕΛΙΔΟΝΙΣΜΑΤΑ»- ΤΟ ΤΡΑΓΟΥΔΙ ΤΗΣ ΧΕΛΙΔΟΝΑΣ

Ενώνουμε δυνάμεις. Δείγματα Γραφής. Δυναμικά μπροστά ΑΝΔΡΕΑΣ Ζ. ΚΥΠΡΙΑΝΟΥ. Βουλευτής

Η ποιότητα ζωής στις Σέρρες σήμερα

Παγκόσμια Ημέρα Ψυχικής Υγείας

3o ΓΕΝΙΚΟ ΛΥΚΕΙΟ ΗΡΑΚΛΕΙΟΥ σχολ. Έτος

ΕΡΓΑΛΕΙΑ ΣΥΜΒΟΥΛΕΤΙΚΗΣ

Τα Αναβολικά. Τα αναβολικά χωρίζονται στα φυσικά και στα συνθετικά.

Πρώτη διδακτική πρόταση Χρωματίζοντας ένα σκίτσο

Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών

Μια «γριά» νέα. Εύα Παπώτη

ΙΕΘΝΗΣ ΣΥΜΒΑΣΗ ΕΡΓΑΣΙΑΣ 183 «για την αναθεώρηση της (αναθεωρηµένης) σύµβασης για την προστασία της µητρότητας,»

Εργαστηριακή εξάσκηση στις διαταραχές της κίνησης και της οπτικής αντίληψης. Διδάσκων :Α.Β.Καραπέτσας

ΓΕΝΙΚΕΣ ΑΡΧΕΣ ΑΧΡΗΜΑΤΗΣ ΚΟΙΝΩΝΙΑΣ

ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΔΙΚΑΙΟΥ. Ενότητα 7: Σχέση δικαίου-ηθικής-πολιτικής. Παρούσης Μιχαήλ. Τμήμα Φιλοσοφίας

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΑΡΙΘΜΟΣ ΜΕΛΕΤΗΣ: 58/ 2014 ΝΟΜΟΣ ΘΕΣΠΡΩΤΙΑΣ ΔΗΜΟΣ ΗΓΟΥΜΕΝΙΤΣΑΣ Δ/ΝΣΗ ΤΕΧΝΙΚΩΝ ΥΠΗΡΕΣΙΩΝ ΜΕΛΕΤΗ

Περιβάλλον και Ανάπτυξη ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Γραμματικογιάννης Α. Ηλίας. Επιβλέπων: Καθηγητής Δ. Ρόκος

ΕΦΑΡΜΟΣΜΕΝΗ ΗΘΙΚΗ. Ενότητα 3: Το παράδειγμα της Τρέισι Λάτιμερ (συνέχεια) Παρούσης Μιχαήλ. Τμήμα Φιλοσοφίας

Γνωρίζω, Αγαπώ & Φροντίζω το Σώμα μου

«Ειρήνη» Σημειώσεις για εκπαιδευτικούς

Από το ξεκίνημά του ο ΤΙΤΑΝ εκφράζει

ΕΘΙΜΑ ΤΟΥ ΚΟΣΜΟΥ. Αγγελική Περιστέρη Α 2

ΣΥΣΤΗΜΑ ΔΙΑΓΝΩΣΗΣ ΑΝΑΓΚΩΝ ΑΓΟΡΑΣ ΕΡΓΑΣΙΑΣ ΔΙΑΓΝΩΣΗ ΑΝΑΓΚΩΝ ΣΕ ΠΕΡΙΦΕΡΕΙΑΚΟ ΕΠΙΠΕΔΟ

Οι μαθητές της ομάδας λογοτεχνίας της βιβλιοθήκης ασχολήθηκαν με το έργο πέντε γυναικών συγγραφέων: Ζωρζ Σαρή, Λότη Πέτροβιτς- Ανδρουτσοπούλου,

Διασυνοριακά νερά και διαχειριστικά σχέδια λεκανών

Το Ταξίδι Απελευθέρωσης

ΟΜΙΛΙΑ ΠΡΟΕΔΡΟΥ Ο.Κ.Ε. κ. Χ. ΠΟΛΥΖΩΓΟΠΟΥΛΟΥ

Δημήτρης Αγοραστός Ψυχολόγος

Χημεία Β Γυμνασίου Τμήμα Β3. Γρηγόρης Μαγουλάς Φανή Μανούσου Κύρος Μαλλαμίδης Ελίνα Μάλλιαρη Μάγδα Μαντά

...ακολουθώντας τη ροή... ένα ημερολόγιο εμψύχωσης

03-00: Βιομάζα για παραγωγή ενέργειας Γενικά ζητήματα εφοδιαστικών αλυσίδων

Η Αγορά Ηλεκτρικής Ενέργειας στην Κύπρο έχει οργανωθεί σε τομείς που υπόκεινται στις ακόλουθες ρυθμίσεις:

Η ΨΥΧΗ ΚΑΙ Ο ΘΑΝΑΤΟΣ ( 1 )

ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΙΚΟ ΣΗΜΕΙΩΜΑ 13 Α' ΜΕΡΟΣ ΑΠΟ ΤΟΝ ΠΟΛΕΜΟ ΤΟΥ 1897 ΣΤΟ ΓΟΥΔΙ

Τίτλος Μαθήματος Ενότητα: Διαχείριση Σχολικής Τάξης

Υποψήφιοι Σχολικοί Σύμβουλοι

ΠΕΡΙΛΗΨΗ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ

Transcript:

Διάλεξη 7: Ενθυλάκωση (encapsulation), Τροποποιητές(modifiers) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ενθυλάκωση -Τροποποιητές Πρόσβασης (Access Modifiers), public, protected, private, friendly - Στατικότητα - final, άλλοι τροποποιητές Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 1

Ενθυλάκωση (encapsulation) Class Class Name Τι βλέπει ο προγραµµατιστής Attributes Methods Τι βλέπει ο υπόλοιπος κόσµος και άλλες κλάσεις ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 2

Ενθυλάκωση (encapsulation) (συν.) H Ενθυλάκωση (encapsulation) έχει δύο έννοιες: 1. Συνδυασμός δεδομένων και μεθόδων σε ένα θύλακα (capsule) H κλάση σαν ένας τύπος δεδομένων περιλαμβάνει: Μεταβλητές ή πεδία τα οποία αντιπροσωπεύουν διάφορες ιδιότητες Μεθόδους οι οποίες χρησιμοποιούνται για να κατασκευάσουν στιγμιότυπα της κλάσης (constructors)και Μεθόδους οι οποίες χρησιμοποιούνται για να αναπαραστήσουν τις λειτουργίες της κλάσης (methods) Ανάληψη ( ) Ανάληψη ( ) Υπόλοιπο Υπόλοιπο Κατάθεση ( ) Κατάθεση ( ) Λογαριασμός Τράπεζας Λογαριασμός Τράπεζας (Κλάση) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 3

Ενθυλάκωση (encapsulation)(συν.) 2. Έλεγχος στην πρόσβαση δεδομένων (information hiding) Η κλάση εμφανίζει στους χρήστες και άλλες κλάσεις μία διαπροσωπεία (interface) η οποία παρουσιάζει τις λειτουργίες της κλάσης Με αυτό τον τρόπο, κρύβονται πληροφορίες χαμηλού επιπέδου για τον τρόπο υλοποίησης των λειτουργιών Παράδειγμα, για τον αφηρημένο τύπο δεδομένων Stack, παρουσιάζουμε Push(), Pop(), Top(), IsEmpty(), MakeEmpty() αλλά όχι την δομή δεδομένων Ανάληψη ( ) Ανάληψη ( ) Υπόλοιπο Υπόλοιπο Κατάθεση ( ) Κατάθεση ( ) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 4

Ενθυλάκωση (encapsulation)(συν.) Γιατί να χρησιμοποιήσουμε Ενθυλάκωση (encapsulation): 1. Επιτρέπει Έλεγχο Η χρήση του αντικειμένου γίνεται μόνο μέσα από της μεθόδους του Δεν επιτρέπεται η άμεση αλλαγή των δεδομένων του αντικειμένου Ανάληψη ( ) Υπόλοιπο= 100.57 Κατάθεση ( ) 2. Επιτρέπει αλλαγές Η χρήση του αντικειμένου δεν αλλάζει αν αλλάξουν τα δεδομένα (που δεν έχουν πρόσβαση, δηλ. private) Πρέπει όμως να παραμείνουν τα ίδια πρότυπα μεθόδων Ανάληψη ( ) Κατάθεση ( ) EURO = 100 cents = 57 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 5

Ενθυλάκωση (encapsulation)(συν.) Ερώτηση: Πως επιτυγχάνεται η Ενθυλάκωση; Απάντηση: Με τους τροποποιητές πρόσβασης Τυπικοί κανόνες: Τα μέλη μίας κλάσης όπως οι υψηλού επιπέδου μέθοδοι ορίζονται με publicγια να εκθέσουν τις λειτουργίες τους σε χρήστες/κλάσεις. Τα μέλη μίας κλάσης που παρέχουν λεπτομέρειες υλοποίησης ορίζονται με privateγια να κρύψουν πληροφορίες από τους χρήστες/κλάσεις. public public Ανάληψη ( ) private Υπόλοιπο= 100.57 Κατάθεση ( ) public class BankAccount { private double balance; public void withdraw( double amount) { public void deposit( double amount) { ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 6

Τροποποιητές Πρόσβασης (Access Modifiers) Μία κλάση ελέγχει την πρόσβαση στα διάφορα μέλη της (δεδομένα, μεθόδους) με τους τροποποιητές πρόσβασης Υπάρχουν 4 τροποποιητές πρόσβασης: public: Η πρόσβαση στην κλάση, δεδομένα, μεθόδους είναι ανοικτή σε όλους! private:η πρόσβαση στα δεδομένα και τις μεθόδους είναι περιορισμένη μόνο στην κλάση default(friendly):η πρόσβαση στην κλάση, δεδομένα και μεθόδους είναι περιορισμένη στο σε κλάσεις που βρίσκονται στο ίδιο πακέτο με την κλάση protected:όπως το defaultαλλά και σε κλάσεις που κληρονομούν από την ίδια κλάση (εντός πακέτου ή όχι) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 7

Τροποποιητές Πρόσβασης (Access Modifiers) (συν.) Σε περίπτωση που δεν χρησιμοποιείται προσδιοριστής πρόσβασης, έχουμε τον προκαθορισμένο (default) προσδιοριστής πρόσβασης, ο οποίος αναφέρεται σαν «φιλικός» (friendly): Ο φιλικός προσδιοριστής υποδηλώνει ότι όλες οι κλάσεις σε ένα πακέτο (βιβλιοθήκη) έχουν πρόσβαση στα «φιλικά» μέλη, τα οποία εμφανίζονται ως «ιδιωτικά» σε όλες τις κλάσεις έξω από την βιβλιοθήκη. Αφού μια μονάδα μετάφρασης (αρχείο) μπορεί να ανήκει σε μια μόνο βιβλιοθήκη, όλες οι κλάσεις μέσα σε αυτή θεωρούνται αυτομάτως φιλικές η μια προς την άλλη. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 8

Τροποποιητές Πρόσβασης (Access Modifiers) (συν.) Για να δοθεί πρόσβαση προς τα μέλη μιας κλάσης, από άλλες κλάσεις, υπάρχουν οι εξής εναλλακτικές δυνατότητες: Να καταστεί το μέλος της κλάσης που μας ενδιαφέρει δημόσιο (public). Όλοι μπορούν να έχουν. Να γίνει το μέλος της κλάσης που μας ενδιαφέρει φιλικό, οριζόμενο χωρίς κανέναν προσδιοριστή και οιυπόλοιπες κλάσεις να τοποθετηθούν στην ίδια βιβλιοθήκη. Στην περίπτωση κληρονομικότητας, με χρήση του προσδιοριστή protected. Με δήλωση μεθόδων πρόσβασης/τροποποίησης (accessor/mutator), οι οποίες διαβάζουν και γράφουν κάποιες τιμές-μέλη της κλάσης που μας αφορά. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 9

Τροποποιητές Πρόσβασης: Σύγκριση Τροποποιητής Πρόσβασης Ίδια Κλάση Ίδιο Πακέτο Υποκλάση Άλλα Πακέτα public protected (default) friendly private ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 10

Τροποποιητές Πρόσβασης: Σύγκριση (συν.) ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 11

Τροποποιητές Πρόσβασης: private public class BankAccount { private double balance; BankAccount(){ balance = 0.0; BankAccount(double balance){ this.balance = balance; public void withdraw( double amount ) { balance-=amount; public void deposit(double amount) { balance+=amount; public double getbalance() { return balance; public class TestBankAccount { public static void main(string args[]) { BankAccount ba1 = new BankAccount(); ba1.deposit(100.0); ba1.withdraw(40.0); System.out.println( ba1.getbalance() ); //compile error BankAccount.balance is private System.out.println( ba1.balance ); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 12

Τροποποιητές Πρόσβασης: default package bank; public class BankAccount { <root>/bank private double balance; BankAccount(){ balance = 0.0; //no modifier default public BankAccount(double balance){ this.balance = balance; import bank.bankaccount; public class TestBankAccount { public static void main(string args[]) { <root> BankAccount ba1 = new BankAccount(); //compile error constructor BankAccount() does not exist BankAccount ba2 = new BankAccount(100.0); //OK. BankAccount(double) exists ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 13

Τροποποιητές Πρόσβασης: protected Θα αναλυθεί περισσότερο στην διάλεξη κληρονομικότητα package bank; public class BankAccount { private double balance; protected BankAccount(){ balance = 0.0; <root>/bank package bank; public class SavingsAccount extends BankAccount{ public SavingsAccount(){ balance = 0.0; import bank.*; public class TestBankAccount { <root> public static void main(string args[]) { BankAccount ba1 = new BankAccount(); //compile error constructor BankAccount() does not exist SavingsAccount sa1 = new SavingsAccount(); //OK. SavingsAccount() exists ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 14

Τροποποιητές Πρόσβασης: Καλύτερες Πρακτικές Όταν κατασκευάζετε μια κλάση είναι σκόπιμο να δηλώσετε τα πεδία δεδομένων της σαν ιδιωτικά, για να τα προστατεύσετε από ανεπιθύμητες αλλαγές από τρίτους. Αυτό ισχύει ακόμα κι αν η κλάση σας είναι προσβάσιμη από τη βιβλιοθήκη της μόνο (όχι δημόσια). Επίσης, είναι συνήθως λογικό να δώσετε στις μεθόδους της κλάσης την ίδια προσβασιμότητα με την κλάση, δηλ. δημόσια ή φιλική. Αν θέλετε να αποκλείσετε τη χρήση μιας κλάσης από τρίτους, δηλώστε όλους τους κατασκευαστές της private. Έτσι, κανείς δεν μπορεί να δημιουργήσει αντικείμενα της κλάσης, εκτός από εσάς (μέσω από ένα στατικό μέλος της κλάσης). ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 15

Τροποποιητές Πρόσβασης για Κλάσεις Οι προσδιοριστές πρόσβασης μπορούν να χρησιμοποιηθούν και για τον καθορισμό των κλάσεων μιας βιβλιοθήκης που είναι προσβάσιμες είτε μέσα από την ίδια βιβλιοθήκη είτε από άλλες βιβλιοθήκες. Μια κλάση μπορεί να προσδιορισθεί μόνο σαν φιλική ή σαν δημόσια. public: ΟΛΟΙ έχουν πρόσβαση στην κλάση <no modifier>: Μόνο κλάσεις στο ίδιο πακέτο έχουν πρόσβαση στην κλάση Κανονικές (μη εσωτερικές) κλάσεις δεν μπορούν να συνδυαστούν με προσδιοριστές πρόσβασης privateή protected. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 16

Τροποποιητές Πρόσβασης για Κλάσεις (συν.) Το πολύ μια publicκλάση σε μια μονάδα μετάφρασης (αρχείο Java). Το όνομα της publicκλάσης πρέπει να είναι το ίδιο με το όνομα του αρχείου που την περιλαμβάνει. Είναι αποδεκτό (αλλά όχι συνηθισμένο) να έχουμε μια μονάδα μετάφρασης χωρίς δημόσια κλάση στο εσωτερικό της. Στην περίπτωση αυτή, το όνομα του αρχείου μπορεί να είναι οποιοδήποτε (καλό είναι, όμως, να μην χρησιμοποιούμαι άσχετα ονόματα). ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 17

Στατικότητα (static) Τα δεδομένα ενός αντικείμενου περιγράφουν πληροφορίες για το ίδιο το αντικείμενο Παράδειγμα: Κάθε λογαριασμός τράπεζας έχει το δικό του υπόλοιπο Ανάληψη ( ) Κατάθεση ( ) Υπόλοιπο = 100.57 Ιδιοκτήτης = Παναγιώτης BankAccount ba1 Ανάληψη ( ) Κατάθεση ( ) Υπόλοιπο = 9,000,000.00 Ιδιοκτήτης = Τζόκερ BankAccount ba2 Ερώτηση:Τι γίνεται αν κάποιες πληροφορίες/δεδομένα ισχύουν για όλους τους τραπεζικούς λογαριασμούς; Για παράδειγμα, το επιτόκιο όλως των λογαριασμών είναι 5% ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 18

Στατικότητα (static) (συν.) Ερώτηση: Θα ήταν σωστή η ακόλουθη υλοποίηση; Ανάληψη ( ) Κατάθεση ( ) Υπόλοιπο = 100.57 Ιδιοκτήτης = Παναγιώτης Ανάληψη ( ) Κατάθεση ( ) Υπόλοιπο = 9,000,000.00 Ιδιοκτήτης = Τζόκερ Επιτόκιο =5% Επιτόκιο =5% BankAccount ba1 BankAccount ba2 Απάντηση:ΌΧΙ! Με την πιο πάνω υλοποίηση επιτρέπουμε αλλαγή στο επιτόκιο κάθε λογαριασμού. Πρόβλημα αφού ΓΙΑ ΟΛΟΥΣ ΤΟΥΣ ΛΟΓΑΡΙΑΣΜΟΥΣ ΙΣΧΥΕΙ ΕΠΙΤΟΚΙΟ ΤΟΥ 5% ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 19

Στατικότητα (static) (συν.) Τα στατικά δεδομένα (static)περιγράφουν πληροφορίες που ισχύουν για όλα τα αντικείμενα της κλάσης τους Class BankAccount BankAccount ba1 Επιτόκιο =5% Τα στατικά δεδομένα ανήκουν στην κλάση BankAccount ba1 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 20

Στατικά Δεδομένα/Μεταβλητές Τα στατικά δεδομένα (static)περιγράφουν πληροφορίες που ισχύουν για όλα τα αντικείμενα της κλάσης τους Τα στατικά δεδομένα ανήκουν στην κλάση και όχι στο αντικείμενο Ονομάζονται και class data Οι στατικές μεταβλητές αρχικοποιούνται μόνο μία φορά, στην αρχή της εκτέλεσης του προγράμματος και πριν την δημιουργία οποιουδήποτε αντικείμενου της κλάσης Ένα αντίγραφο μίας στατικής μεταβλητής κατανέμεται σε όλα τα αντικείμενα (στιγμιότυπα) της κλάσης Μπορούμε να έχουμε πρόσβασησε μία στατική μεταβλητή απευθείας, δεν χρειάζεται αντικείμενο Σύνταξη: <class-name>.<variable-name> ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 21

Στατικά Δεδομένα/Μεταβλητές: Παράδειγμα 1 public class BankAccount { private double balance; public static double interest = 0.05; public class TestBankAccount { public static void main(string args[]) { BankAccount.interest = 0.06; Απευθείας Πρόσβαση Δεν χρειάζεται να δηλώσουμε αντικείμενο τύπου BankAccount ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 22

Στατικά Δεδομένα/Μεταβλητές: Παράδειγμα 2 public class BankAccount { private double balance; public static double interest = 0.05; public class TestBankAccount { public static void main(string args[]) { BankAccount ba1 = new BankAccount(); System.out.println(ba1.interest); BankAccount ba2 = new BankAccount(); System.out.println(ba2.interest); // OR ba2.interest OR BankAccount.interest ba1.interest = 0.06; 0.05 0.05 System.out.println(ba2.interest); 0.06 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 23

Στατικές Μέθοδοι Οι στατικές μέθοδοι ισχύουν για όλα τα αντικείμενα της κλάσης Ονομάζονται και class methods Οι στατικές μέθοδοι μπορούν να έχουν πρόσβαση ΜΟΝΟ σε στατικά δεδομένα. Οι στατικές μέθοδοι μπορούν να καλέσουν ΜΟΝΟ άλλες στατικές μεθόδους Μπορούμε να έχουμε πρόσβασησε μία στατική μέθοδο απευθείας, δεν χρειάζεται αντικείμενο, Σύνταξη: <class-name>.<method-name> Πιο γνωστό παράδειγμα: public static void main() ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 24

Στατικές Μέθοδοι(συν.) Οι στατικές μέθοδοι είναι λειτουργίες τις κλάσηςπου ισχύουν για όλα τα αντικείμενα της κλάσης Class BankAccount getεπιτόκιο() Επιτόκιο = 5% Πρόσβαση μόνο σε στατικά δεδομένα και μεθόδους BankAccount ba1 Οι στατικές μέθοδοι ανήκουν στην κλάση BankAccount ba1 ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 25

Στατικές Μέθοδοι: Παράδειγμα 1 public class StaticMethods { int var1; static int var2; public static void main( String args[]) { // NOT OK var2 is NOT static var1 = 5; // OK var2 is static var2 = 5; ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 26

Παράδειγμα 2: Στατικές Μέθοδοι public class StaticMethods { public void method1( ) { public static void method2( ) { public static void main(string args[]) { // NOT OK method1() is NOT static method1( ); // OK method2() is static method2( ); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 27

Στατικό Τμήμα Κώδικα (static code block) Το στατικό τμήμα κώδικα, είναι ένα τμήμα με δηλώσεις μέσα σε μία κλάση το οποίο εκτελείται αμέσως μόλις φορτωθεί η κλάση στο JVM Ερώτηση 1: Τι θα τυπωθεί στο πιο κάτω πρόγραμμα; Ερώτηση 2: Τι θα τυπωθεί αν αφαιρέσουμε όλη τη δήλωση new; public class StaticBlock { public StaticBlock() { System.out.println("Constructor"); static { System.out.println("static block"); public static void main(string args[]) { StaticBlock obj = new StaticBlock(); Static block ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 28

Στατική Εισαγωγή Βιβλιοθήκης (static import) Παράδειγμα πρόσβασης σε στατικά μέλη μιας κλάσης: double r = Math.cos(Math.PI * theta); Με τη χρήση στατικής εισαγωγής μπορούμε νακάνουμε χρήση των στατικών πεδίων μιας κλάσης,χωρίς να χρησιμοποιούμε το όνομα της κλάσηςστην οποία ανήκουν: Παράδειγμα import static java.lang.math.pi; import static java.lang.math.*; double r = cos(pi * theta); Η δήλωση στατικής εισαγωγής εισάγει τα στατικάμέλη μιας κλάσης (ή κλάσεων) στο πρόγραμμά μας. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 29

Τροποποιητής(final) Ο τροποποιητής finalχρησιμοποιείται για να καθορίσει ότι μία οντότητα (κλάση, μεταβλητή, μέθοδος) δεν μπορεί να αλλάξει σε μεταγενέστερο επίπεδο Σύνταξη: <other modifiers> final <name> Ανάθεσηστις final μεταβλητές μπορεί να γίνει μόνο μία φορά Όταν τελειώσει η ανάθεση, οι μεταβλητές δεν μπορούν να αλλαχθούν Οι κλάσεις που ορίζονται σαν final,δεν μπορούν να κληρονομηθούν ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 30

Τροποποιητής(final) Οι μέθοδοι που ορίζονται σαν final δεν μπορούν να επικαλυφθούν(κληρονομικότητα) Αντίθετα με τις μεταβλητές τύπου constant, δεν είναι ανάγκη να γνωρίζουμε την τιμή των final κατά την ώρα τις μεταγλώττισης Αν δεν γίνει ανάθεση στην μεταβλητή final τότε οι κατασκευαστές αναγκάζονται να την αρχικοποιήσουν Αν μία μεταβλητή δηλωθεί σαν static final τότε η compiled κλάση τρέχει πιο γρήγορα. Γνωστό παράδειγμα final κλάσης: java.lang.math ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 31

Παράδειγμα 1: final μεταβλητές public class FinalVariables { final int var1 = 10; final int var2 = 20; final int var3; FinalVariables(){ // NOT OK var2 already has value var2 = 10; // OK var3 was not initialized var3 = 30; public static void main(string args[]) { FinalVariables obj = new FinalVariables(); ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 32

Παράδειγμα 2: final κλάσεις public final class Math { // NOT OK Math cannot be inherited public class MyMath extends Math{ ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 33

Παράδειγμα 3: final μεθόδοι public class FinalMethods { public void method() { public final void final_method() { public class MyClass extends FinalMethods { // OK method() can be overriden public void method() { // NOT OK final_method() cannot be overriden // declared as final public void final_method() { ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 34

Άλλοι τροποποιητές abstract: δηλώνει ότι κάτι πρέπει να υπερκαλυφθεί (override) static: δηλώνει ότι μόνο ένα στιγμιότυπο μπορεί να υπάρξει final: δηλώνει ότι η οντότητα δεν μπορεί να αλλαχθεί strictfp: επιβολή ότι πρέπει να χρησιμοποιηθεί αυστηρή συμπεριφορά floating point native: δηλώνει ότι μία οντότητα είναι υλοποιημένη σε μία άλλη γλώσσα προγραμματισμού (π.χ., C, C++) synchronized/transcient/volatile: χρησιμοποιούνται από πολυνηματικές εφαρμογές <Annotations> (@): δηλώνει σχόλια ειδικής μορφής ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 35