User Tools

Site Tools


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
cpp:acccess_modifiers [2018/05/02 08:06]
gthanos [Παράδειγμα χρήσης προσδιοριστών πρόσβασης]
cpp:acccess_modifiers [2021/05/18 06:37]
Line 1: Line 1:
-====== Προσδιοριστές Πρόσβασης ====== 
- 
-Οι προσδιοριστές πρόσβασης επιτρέπουν την απόκρυψη της πληροφορίας που είναι από τις βασικές αρχές του αντικειμενοστραφή προγραμματισμού. Με την έννοια //"απόκρυψη πληροφορίας"// εννοούμε την απόκρυψη της εσωτερικής υλοποίησης της κλάσης. 
- 
-Σε μία κλάση μπορούν να οριστούν οι προσδιοριστές πρόσβασης //public//, //protected// και //private//. Οι προσδιοριστές πρόσβασης αφορούν τόσο τα πεδία (μεταβλητές) όσο και τις συναρτήσεις (μεθόδους) της κλάσης. Η λειτουργικότητα τους συνοψίζεται στα εξής: 
-  - **public:** Ένα μέλος της κλάσης που δηλώνεται ως //public// είναι προσβάσιμο από οποιαδήποτε άλλη κλάση ή συνάρτηση που δεν ανήκει σε κλάση. 
-  - **protected:** Ένα μέλος της κλάσης που δηλώνεται ως //protected// είναι προσβάσιμο από την κλάση στην οποια δηλώνεται και από τις υποκλάσεις αυτής, καθώς και από τις φιλικές συναρτήσεις (//friend functions//) της κλάσης. 
-  - **private:** Ένα μέλος της κλάσης που δηλώνεται ως //private// είναι προσβάσιμο μόνο από την κλάση στην οποία δηλώνεται και από τις φιλικές συναρτήσεις (//friend functions//) της κλάσης. 
- 
-===== Παράδειγμα χρήσης προσδιοριστών πρόσβασης ===== 
- 
-Δείτε το παρακάτω παράδειγμα χρήσης των προσδιοριστών πρόσβασης μέσω των κλάσεων //Cuboid// (κυβοειδές) και //Cube// (κύβος) που κληρονομεί την κλάση //Cuboid//. 
- 
-<code cpp Cuboid.cpp> 
-#include <iostream> 
-using namespace std; 
- 
-class Cuboid { 
-  private: 
-    int width, height, length; 
-  protected: 
-    int color; 
-  public: 
-    Cuboid(int w, int h, int l); 
-    void setWidth(int w); 
-    void setHeight(int h); 
-    void setLength(int l); 
-    int getWidth(); 
-    int getHeight(); 
-    int getLength(); 
-}; 
- 
-Cuboid::Cuboid(int w, int h, int l) { 
-  width = w; height = h; length = l; 
-  color = 0xffffff; 
-} 
- 
-void Cuboid::setWidth(int w) { width = w; } 
-void Cuboid::setHeight(int h) { height = h; } 
-void Cuboid::setLength(int l) { length = l; } 
-int Cuboid::getWidth() { return width; } 
-int Cuboid::getHeight() { return height; } 
-int Cuboid::getLength() { return length; } 
-</code> 
- 
-<code cpp Cube.cpp> 
-#include <iostream> 
-using namespace std; 
-#include "Cuboid.cpp" 
- 
-class Cube:Cuboid {  // Cube extends Cuboid   
-  public: 
-    Cube(int s, int updatecolor); 
-    void setSize(int s); 
-}; 
- 
-Cube::Cube(int s, int updatecolor) : Cuboid(s,s,s) { 
-  color = updatecolor; 
-} 
- 
-void Cube::setSize(int s) { 
-  setWidth(s); 
-  setHeight(s); 
-  setLength(s); 
-} 
-</code> 
- 
-<code cpp CubeUsage.cpp> 
-#include "Cube.cpp" 
- 
-int main() { 
-  Cuboid cuboid(1,2,3); 
-  Cube cube(1, 0xcccccc); 
-  cuboid.setWidth(5); 
-} 
-</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)