cpp:acccess_modifiers

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
cpp:acccess_modifiers [2017/04/20 14:00]
gthanos
cpp:acccess_modifiers [2018/05/02 08:12]
gthanos [Παράδειγμα χρήσης προσδιοριστών πρόσβασης]
Line 3: Line 3:
 Οι προσδιοριστές πρόσβασης επιτρέπουν την απόκρυψη της πληροφορίας που είναι από τις βασικές αρχές του αντικειμενοστραφή προγραμματισμού. Με την έννοια //"απόκρυψη πληροφορίας"// εννοούμε την απόκρυψη της εσωτερικής υλοποίησης της κλάσης. Οι προσδιοριστές πρόσβασης επιτρέπουν την απόκρυψη της πληροφορίας που είναι από τις βασικές αρχές του αντικειμενοστραφή προγραμματισμού. Με την έννοια //"απόκρυψη πληροφορίας"// εννοούμε την απόκρυψη της εσωτερικής υλοποίησης της κλάσης.
  
-Σε μία κλάση μπορούν να οριστούν οι προσδιοριστές πρόσβασης //public//, //protected// και //private//. Οι προσδιοριστές πρόσβασης αφορούν τόσο τα πεδία (μεταβλητές) όσο και τις συναρτήσεις (μεθόδους) της κλάσης. Οι λειτουργικότητα τους συνοψίζεται στα εξής:+Σε μία κλάση μπορούν να οριστούν οι προσδιοριστές πρόσβασης //public//, //protected// και //private//. Οι προσδιοριστές πρόσβασης αφορούν τόσο τα πεδία (μεταβλητές) όσο και τις συναρτήσεις (μεθόδους) της κλάσης. Η λειτουργικότητα τους συνοψίζεται στα εξής:
   - **public:** Ένα μέλος της κλάσης που δηλώνεται ως //public// είναι προσβάσιμο από οποιαδήποτε άλλη κλάση ή συνάρτηση που δεν ανήκει σε κλάση.   - **public:** Ένα μέλος της κλάσης που δηλώνεται ως //public// είναι προσβάσιμο από οποιαδήποτε άλλη κλάση ή συνάρτηση που δεν ανήκει σε κλάση.
   - **protected:** Ένα μέλος της κλάσης που δηλώνεται ως //protected// είναι προσβάσιμο από την κλάση στην οποια δηλώνεται και από τις υποκλάσεις αυτής, καθώς και από τις φιλικές συναρτήσεις (//friend functions//) της κλάσης.   - **protected:** Ένα μέλος της κλάσης που δηλώνεται ως //protected// είναι προσβάσιμο από την κλάση στην οποια δηλώνεται και από τις υποκλάσεις αυτής, καθώς και από τις φιλικές συναρτήσεις (//friend functions//) της κλάσης.
   - **private:** Ένα μέλος της κλάσης που δηλώνεται ως //private// είναι προσβάσιμο μόνο από την κλάση στην οποία δηλώνεται και από τις φιλικές συναρτήσεις (//friend functions//) της κλάσης.   - **private:** Ένα μέλος της κλάσης που δηλώνεται ως //private// είναι προσβάσιμο μόνο από την κλάση στην οποία δηλώνεται και από τις φιλικές συναρτήσεις (//friend functions//) της κλάσης.
 +
 +===== Παράδειγμα χρήσης προσδιοριστών πρόσβασης =====
  
 Δείτε το παρακάτω παράδειγμα χρήσης των προσδιοριστών πρόσβασης μέσω των κλάσεων //Cuboid// (κυβοειδές) και //Cube// (κύβος) που κληρονομεί την κλάση //Cuboid//. Δείτε το παρακάτω παράδειγμα χρήσης των προσδιοριστών πρόσβασης μέσω των κλάσεων //Cuboid// (κυβοειδές) και //Cube// (κύβος) που κληρονομεί την κλάση //Cuboid//.
Line 23: Line 25:
     void setWidth(int w);     void setWidth(int w);
     void setHeight(int h);     void setHeight(int h);
-    void setLength(int l):+    void setLength(int l);
     int getWidth();     int getWidth();
     int getHeight();     int getHeight();
Line 49: Line 51:
 class Cube:Cuboid {  // Cube extends Cuboid   class Cube:Cuboid {  // Cube extends Cuboid  
   public:   public:
-    Cube(int s);+    Cube(int s, int updatecolor); 
 +    void setSize(int s);
 }; };
  
-Cube::Cube(int s, int updatecolor) {+Cube::Cube(int s, int updatecolor) : Cuboid(s,s,s) { 
 +  color = updatecolor; 
 +
 + 
 +void Cube::setSize(int s) {
   setWidth(s);   setWidth(s);
 +  //width = s; // this does not compile
   setHeight(s);   setHeight(s);
   setLength(s);   setLength(s);
-  color = updatecolor; 
 } }
 </code> </code>
- 
  
 <code cpp CubeUsage.cpp> <code cpp CubeUsage.cpp>
-include "Cube.cpp"+#include "Cube.cpp"
  
 int main() { int main() {
   Cuboid cuboid(1,2,3);   Cuboid cuboid(1,2,3);
 +  //cuboid.color = 0xFF0000 // this does not compile
   Cube cube(1, 0xcccccc);   Cube cube(1, 0xcccccc);
 +  cuboid.setWidth(5);
 } }
 </code> </code>
 +
 +
 +<WRAP center round tip 80%>
 +Από το παραπάνω παράδειγμα παρατηρούμε τα εξής:
 +  - Τα πεδία //width//, //height// και //length// της κλάσης //Cuboid// είναι ορισμένα ως //private// και δεν είναι ορατά από τη συνάρτηση //main// ή την κλάση //Cube//
 +  - Το πεδίο //color// είναι ορισμένο ως //protected// και είναι ορατό από την υποκλάση //Cube//, όχι όμως και από τη //main//.
 +  - Η μέθοδος //setWidth// είναι ορισμένη ως //public// και είναι ορατή από τη μέθοδο //main// και από την υποκλάση //Cube//.
 +</WRAP>
  
cpp/acccess_modifiers.txt · Last modified: 2021/05/18 06:37 (external edit)