Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

NameSpace-uri in programarea .Net (I) – Introducere

Namespaces – Spatiile de nume ( I )

De ce a fost nevoie de namespaces? Practic, programele mari sunt impartite in module si sunt dezvoltate separat de mai multe persoane. Din acest motiv, exista posibilitatea de a aparea identificatori  cu acelasi nume. Solutia la aceasta problema a fost introducerea cuvantului cheie namespace, care, in teorie, se defineste ca o regiune declarativa ce ofera o modalitate de a separa un set de nume de un altul. In concluzie,  numele din cadrul unui spatiu nu va intra in conflict cu acelasi nume declarat in alt spatiu.

namespace

  Declarare  namespace. Directiva using 

      Concret, am definita o clasa cu numele Exemplu. Aceasta ar putea intra in conflict cu o alta clasa Exemplu folosita de programul nostru si care este dezvoltata de o alta persona. Folosind spatiile de nume, evitam acest tip de problema. Forma generala  pentru declararea unui spatiu de nume este :

namespace Nume
{

    //membri

} 

Nume reprezinta numele spatiului. Toate entitatile definite in interiorul spatiului fac parte din domeniul de valabilitate al acelui spatiu de nume ( se pot adauga clase, structuri, delegari, enumerari, interfete si surpriza! chiar un alt spatiu de nume ).

         Intr-un fisier sursa, se pot adauga oricat de multe spatii de nume, iar fiecare spatiu poate contine oricat de multe entitati.

namespace A 
{ 
    public class Exemplu 
	{
       //proprietate
       public string Mesaj 
         { 
            get; 
            set; 
         }
    }
}

Clasa Exemplu, care contine o proprietate numita Mesaj, este definita in domeniul de valabilitate  al spatiului de nume A.

        Atunci cand e nevoie de crearea unei instanta a clasei, numele clasei trebuie sa fie calificat cu numele spatiului. Acest mod este cunoscut ca “fully qualified name“.

A.Exemplu ex;
ex = new A.Exemplu();

      Nu mai este necesar sa calific cu numele spatiului obiectul sau pe oricare din membrii sai. In cazul nostru, proprietatea Mesaj, poate fi apelata direct.

ex.Mesaj;

      Normal, situatia va deveni dificila cand programul va include referinte mai multe catre un spatiu de nume si va trebui specificat numele de fiecare data. Solutia vine de la directiva using, care va asigura vizibilitatea spatiului de nume.

using A;

Acum, declararea se poate face asa :

Exemplu ex;
ex = new Exemplu();

Compilatorul va cauta in mod automat in spatiul de nume A si in cazul in care va gasi clasa Exemplu, o va folosi.

In cazul in care va gasi aceeasi clasa in doua spatii de nume diferite, va trebui specificata clasa si  spatiul de nume dorit.

Spatii de nume imbricate

Este posibil ca un spatiu de nume sa fie imbricat in interiorul altuia.

namespace A
   {
       namespace A1
       {
           public class ExempluA1
           {
               // 
           }
           //   
       }
       public class ExempluA
       {
           //
       }
   }

Acest lucru ajuta la divizarea in parti mai mici a codului pentru un mod de lucru mai organizat si mai eficient.

Pentru a instantia clasa ExempluA1, trebuie neaparat sa folosesc modul “fully qualified name”.

A.A1.ExempluA1 exA1 = new A.A1.ExempluA1();

        Folosirea “fully qualified name” nu pare foarte eficienta in scrierea codului , dar este recomandata pentru usurinta identificarii spatiilor de nume, mai ales in lucru in echipa.

Spatii de nume aditive

Pot exista mai multe declaratii namespace cu acelasi nume. Acest lucru permite distribuirea unui spatiu de nume in mai multe fisiere sau chiar separarea sa in cadrul aceluiasi fisier.

namespace B
 {
     public class Student
     {
         //
     }
 }
 namespace B
 {
     public class Profesor
     {
         // 
     }
 }

La compilare, continutul ambelor spatii de nume B va fi unit.

In cazul in care se redefineste o clasa, apare eroare la compilare.

         Spatiile de nume constituie un instrument pentru organizarea programelor si cresterea durabilitatii in mediile distribuite moderne.

Continuarea in: NameSpace-uri in programarea .Net (I) – Introducere

Category: Uncategorized

Your email address will not be published. Required fields are marked *

*