2017-07-22 9 views
0


J'ai été curieux au sujet des modificateurs d'accès.
Quel est le but de public, protection, privé sur le diagramme de classe? Des exemples?

publique signifie que l'article est disponible à toute personne qui a accès à l'objet,

protégés signifie qu'il est à la disposition de l'objet lui-même et des sous-classes, et

privé signifie qu'il ne peut être consulté que dans la classe elle-même.

Mais, je ne connais pas l'exemple des cas publics, protégés et privés.
Je veux dire, est-ce que quelqu'un pourrait m'expliquer les cas de modificateurs d'accès public, privé et protégé sur le diagramme de classe?
Juste pour m'assurer que je les comprends bien.

Merci!

+0

Qu'est-ce que ces (Java) types d'accès doivent faire avec MySQL ou des bases de données? –

+0

bases de données @TimBiegeleisen – r0707637

Répondre

1

Exactement il n'y a pas seulement 3 types d'accès, dans différentes langues il y en a plus.
Par exemple:

  1. publique - classe ou ses membres définis avec ce modificateur d'accès seront accessibles au public de partout, même de l'extérieur du cadre de la classe.
  2. privé - les membres de ce classe avec ce mot-clé seront accessibles dans la classe elle-même. Il protège les membres de l'accès en dehors de la classe avec la référence de l'instance de classe.
  3. protected - identique à private, sauf en permettant aux sous-classes d'accéder aux membres de superclasse protégés.
  4. abstract - Ce mot-clé ne peut être utilisé que pour les classes PHP et ses fonctions. Pour contenir des fonctions abstraites, une classe PHP devrait être une classe abstraite.
  5. final - Cela empêche les sous-classes de surcharger les membres de super classe définis avec le mot-clé final.
  6. interne - peut accéder au sein du programme qui contient ses déclarations et accéder également au sein du même niveau d'assemblage mais pas à partir d'un autre assembly.
  7. protected internal - mêmes niveaux d'accès à la fois protégé et interne. Il peut accéder n'importe où dans le même assemblage et dans la même classe aussi les classes héritées de la même classe

Certaines d'entre elles sont applicables aux classes, certaines aux fonctions et d'autres aux variables aussi.
Ainsi, dans la plupart des langues, tous les membres de classe sont déclarés avec public type d'accès (sauf Java, par exemple).

Retour à la question principale.
L'application de tous ces modificateurs d'accès a pour but de faciliter l'encapsulation des composants.

Exemple simple d'utilisation de ces modificateurs d'accès en C++ (taken from here):

#include <iostream> 
#include<conio.h> 
using std::cout; 
using std::endl; 

struct B { // default access modifier inside struct is public 
    void set_n(int v) { n = v; } 
    void f()   { cout << "B::f" << endl; } 
    protected: 
    int m, n; // B::m, B::n are protected 
    private: 
    int x; 
}; 

struct D : B { 
    using B::m;    // D::m is public 
    int get_n() { return n; } // B::n is accessible here, but not outside 
// int get_x() { return x; } // ERROR, B::x is inaccessible here 
private: 
    using B::f;    // D::f is private 
}; 

int main() { 
    D d; 

// d.x = 2; // ERROR, private 
// d.n = 2; // ERROR, protected 
    d.m = 2; // protected B::m is accessible as D::m 

    d.set_n(2); // calls B::set_n(int) 
    cout << d.get_n() << endl; // output: 2 

// d.f(); // ERROR, B::f is inaccessible as D::f 


    B& b = d; // b references d and "views" it as being type B 

// b.x = 3; // ERROR, private 
// b.n = 3; // ERROR, protected 
// b.m = 3; // ERROR, B::m is protected 

    b.set_n(3); // calls B::set_n(int) 
// cout << b.get_n(); // ERROR, 'struct B' has no member named 'get_n' 

    b.f(); // calls B::f() 
    return 0; 
} 

Ainsi, pour comprendre le but de ce modificateurs, tout d'abord, vous devez comprendre les principes de base de la programmation orientée objet, et en particulier le paradigme d'encapsulation.
Ce n'est pas quelque chose qui peut être facilement expliqué avec le code d'exemple de paix.
Modificateurs est très petite partie de l'énorme monde OOP.

+0

J'ai envoyé une demande d'édition et changé les balises. –

1

Fondamentalement, vous utilisez le public, les modificateurs d'accès privé, protégé et autres mots-clés pour contrôler l'accès aux membres de la classe. Par exemple, vous voulez une variable ou une méthode à utiliser à des fins internes à l'intérieur de la classe, mais ce membre ne doivent jamais été vus en dehors de la classe, alors vous devez le déclarer avec mot-clé modificateur d'accès « privé ». D'autre part, "Public" est utilisé pour déclarer les membres qui devraient être accessibles depuis l'extérieur de la classe, les constructeurs sont un exemple clair de la raison pour laquelle vous devez les déclarer avec le mot-clé "Public". D'autres membres tels que les méthodes qui effectuent des tâches utiles comme (.ToString, .Substring) sont également d'excellents exemples de membres qui doivent être déclarés comme public, bref, ils peuvent être utilisés à l'extérieur de la classe et accomplissent des tâches utiles à tous ceux qui utilisent votre classe .

Considérez ceci:

class employee 
{ 
private int instanceCount = 0; 
private string empName; 

public employee(string fname, string lname) 
{ 
//Provide some code for the constructor. 
empname = fname + " " + lname; 
instanceCount ++;} 
} 

Il est clair que le constructeur devrait être variable publique et « instanceCount » qui est utilisé pour compter le nombre de cas est privé.

Pour la protection, tout ce qui s'applique à privé applique également à la protection, avec une petite différence, protégée peut être utilisée en héritant des classes, et non privée.