Історія мов програмування


Скачати 2.03 Mb.
Назва Історія мов програмування
Сторінка 9/17
Дата 05.04.2013
Розмір 2.03 Mb.
Тип Документи
bibl.com.ua > Інформатика > Документи
1   ...   5   6   7   8   9   10   11   12   ...   17

2. Статичні методи-члени класу.


Метод класу, визначений із модифікатором static, також є доступним на рівні самого класу, а не його екземплярів. Тобто для виклику такого методу непотрібний жодний екземпляр класу. Прикладом статичного методу є метод Main(), який викликається операційною системою. Зрозуміло, що в момент цього виклику жодного екземпляру жодного класу просто не може існувати. Іншим прикладом статичних методів, які ми неодноразово використовували у прикладах, є методи класу Math або Console – для звертання до них нам не було необхідності створювати відповідний об’єкт. Використання деяких стандартних статичних методів проілюструємо наступним прикладом.

using System;

namespace Static_Method_1

{

class Program

{

static void Main()

{

double d = Math.Exp(-2); // Статичний метод - Exp()

Console.WriteLine(d); // Статичний метод - WriteLine()

// Статичний метод - ToString()

string s = Convert.ToString(129, 2);

Console.WriteLine(s); //s - зображення двійкового числа

Console.WriteLine(Environment.OSVersion);

Console.WriteLine(Environment.UserName);

Console.WriteLine(Environment.ProcessorCount);

Console.WriteLine(Environment.SystemDirectory);

Console.WriteLine(Environment.UserDomainName);

Console.WriteLine(Environment.GetFolderPath(

Environment.SpecialFolder.Desktop));

}

}

}

Зауваження. Зверніть увагу на корисні відомості, які містяться у статичних методах та властивостях класу Environment.

При використанні статичних методів слід пам’ятати про ряд обмежень, а саме:

1. Статичний метод може використовувати лише статичні дані-члени класу, адже статичний метод діє на рівні класу, не маючи доступу до екземплярів , а отже і до змінних екземплярів класу.

2. Статичний метод не може використовувати посилання this.

3. Статичний метод може викликати лише інші статичні методи класу. Щоб звернутись до нестатичного методу, потрібне посилання на екземпляр.

Проілюструємо роботу статичних методів наступними прикладами. В першому з них клас StudyingStatics містить звичайну цілу змінну val та статичну цілу змінну stval із модифікатором private, отже, потрібний метод класу public static int get_(), що повертає її значення. Крім того, конструктор ініціалізує змінну val, а ще один метод public void add1() додає до значення статичної змінної stval значення val.

using System;

namespace Static_Method_2

{

class Program

{

class StudyingStatics

{

public int val;

private static int stval = 10; // статичний член класу

public StudyingStatics(int val_)

{ val = val_; }

// статичний метод повертає значення статичного члену класу

public static int get_()

{ return stval; }

// нестатичний метод використовує як статичні так і

// нестатичні члени класу

public void add1()

{ stval += val; }

}

static void Main()

{

StudyingStatics s = new StudyingStatics(100);

Console.WriteLine("Статична змiнна = {0}",

StudyingStatics.get_());

s.add1(); // метод звертається до статичного члену класу

Console.WriteLine("Статична змiнна = {0}",

StudyingStatics.get_());

}

}

}

Приклад успішно спрацьовує, на екрані з’являються повідомлення:

Статична змiнна = 10

Статична змiнна = 110

Проте спроба включити в клас наступний метод (він відрізняється від add1() лише модифікатором static)

// статичний метод не може звернутись до нестатичного члену

// класу

public static void add2 ()

{ stval += val; }

приводить до синтаксичної помилки – статичний метод звертається до нестатичного члену класу.

У наступному прикладі використаємо той самий клас StudyingStatics, проте включимо у нього два статичних методи – перший інкрементує stval, а другий збільшує stval на значення нестатичного члену класу val екземпляру класу StudyingStatics s, що передається цьому методу. В цьому прикладі жодних проблем не виникає.

using System;

namespace Static_Method_3

{

class StudyingStatics

{

public int val;

private static int stval = 10; // статичний член класу

public StudyingStatics(int val_)

{ val = val_; }

// статичний метод повертає значення статичного члену класу

public static int get_()

{ return stval; }

// статичний метод змінює статичний член класу

public static void incr()

{ stval++; }

// статичний метод звертається до нестатичного члену класу

// через екземпляр

public static void change(StudyingStatics s)

{ stval += s.val; }

}

class Program

{

static void Main()

{

Console.WriteLine(

"stval = {0}", StudyingStatics.get_());

StudyingStatics.incr();

Console.WriteLine(

"stval пiсля incr = {0}", StudyingStatics.get_());

StudyingStatics s = new StudyingStatics(111);

StudyingStatics.change(s);

Console.WriteLine(

"stval пiсля change = {0}", StudyingStatics.get_());

}

}

}

Результатом цього прикладу будуть наступні повідомлення на екрані:

stval = 10

stval пiсля incr = 11

stval пiсля change = 122
1   ...   5   6   7   8   9   10   11   12   ...   17

Схожі:

Програма курсу програмування на мов і С++
Курс націлений на отримання знань і практичних навиків програмування на мовах C і C + + в рамках процедурно-орієнтованого програмування....
Основні методології (стилі, парадигми) програмування. Поняття програми....
Дів розробки програм Граді Буча “О’єктно-орієнтоване програмування (ООП) – це методологія програмування, яка заснована на представленні...
Курс програмування на С #
Зусилля, які ви витратите на вивчення С #, будуть винагороджені, так як Сі Шарп був розроблений в якості основної мови програмування,...
27. Процедурні мови програмування
Процедурні мови програмування. Характеристика процедурних мов програмування. Алфавіт. Основні поняття мови: числа, рядки, ідентифікатори,...
27. Методика навчання обєктно-орієнтованого програмування. Об'єктно́-орієнтоване́...
Не зважаючи на те, що ця парадигма з'явилась в 1960-тих роках, вона не мала широкого застосування до 1990-тих. На сьогодні багато...
29. Опис та використання підпрограм
Реалізація базових алгоритмічних структур процедурною мовою програмування. Опис процедур та функцій процедурною мовою програмування....
2. Дробово-лінійне програмування Постановка задачі дробово-лінійного...
Дослідження операцій”, “Економетрія”, “Моделювання економіки”, “Економічна кібернетика” а також дисциплін циклу загальноекономічної...
Методичні рекомендації щодо вивчення інформатики у 2012-2013 навчальному році
Особливо гостро стоїть питання поглибленого вивчення інформатики та сучасних мов програмування
ПОРЯДОК проведення відкритої Всеукраїнської студентської олімпіади з програмування
Першості світу) з програмування АСМ-ICPC (Association for Computing Machinery International Collegiate Programming Contest), яка...
1. Українська мова належить до: а східнослов’янської підгрупи мов;...
Яке з поданих слів має значення „спрямований вперед; який рухається у висхідному напрямі”
Додайте кнопку на своєму сайті:
Портал навчання


При копіюванні матеріалу обов'язкове зазначення активного посилання © 2013
звернутися до адміністрації
bibl.com.ua
Головна сторінка