Sobes.tech
Junior

Ի՞նչ է տեսադաշտը (scope) ծրագրավորման մեջ։

sobes.tech AI

Պատասխան AI-ից

Տեսանելիության դաշտը որոշում է փոփոխականի, մեթոդի կամ դասի հասանելիությունը ծրագրի որոշ մասում: Այն վերահսկում է, որտեղ կարելի է օգտագործել անվանված օբյեկտները և որտեղ նրանք դադարում են գոյություն ունենալ:

Java-ում հիմնական տեսանելիության դաշտերը հետևյալն են՝

  • Բլոկ: սահմանափակված {} կետերով: Բլոկի ներսում հայտարարված փոփոխականները հասանելի են միայն այդ բլոկում և դրա ներսի բլոկներում:
  • Մեթոդ: սահմանափակված մեթոդի մարմնով: Մեթոդի պարամետրերը և ներսում հայտարարված փոփոխականները հասանելի են միայն այդ մեթոդում:
  • Դաս: սահմանափակված դասի մարմնով: Դասի անդամները (մակերեսները) և մեթոդները հասանելի են ցանկացած վայրից այդ դասում: Դրանց հասանելիությունը դուրսից կախված է մոդիֆիկատորներից (public, private, protected, default):
  • Փաթեթ: կիրառվում է դասերի և դասի անդամների վրա (առանց մոդիֆիկատորի): Դասերը և անդամները հասանելի են նույն փաթեթում ցանկացած վայրից:
  • Գլոբալ: Java-ում իրական գլոբալ տեսանելիության դաշտ չկա C++-ում: Ամենամոտը public static final դաշտերն են դասերում, որոնք հասանելի են ամբողջ ծրագրում:

Բլոկի տեսանելիության օրինակ:

// 'j' փոփոխականը չի տեսանելի այս բլոկից դուրս
{
    int j = 10;
    System.out.println(j); // հասանելի
}
// System.out.println(j); // սխալ՝ նշան չի գտնվել

Մեթոդի տեսանելիության օրինակ:

public void իմՄեթոդը(int պարամետր) { // 'պարամետր' միայն այստեղ է տեսանելի
    int տեղականՓոփոխական = 5; // 'տեղականՓոփոխական' միայն այստեղ է տեսանելի
    System.out.println(պարամետր); // հասանելի
    System.out.println(տեղականՓոփոխական); // հասանելի
}
// System.out.println(տեղականՓոփոխական); // սխալ՝ նշան չի գտնվել

Տեսանելիության դաշտը օգնում է կանխել անունների բախումները, կառավարել փոփոխականի կյանքի ցիկլը և բարելավել կոդի ընթեռնելիությունը։