
- •Ключове слово this
- •Ключове слово static
- •Статичний конструктор
- •Інкапсуляція з використанням методів get і set
- •Інкапсуляція з використанням властивостей
- •Організація робіт при описі класу. Атрибут partial
- •Спадкоємство
- •Int point; // поле
- •Додавання до класу запечатаного класу
- •Вкладеність класів
- •Поліморфізм
- •Абстрактні класи
- •Приховування членів класу
- •Оператори as і is
- •Структури
Організація робіт при описі класу. Атрибут partial
При розробці, а особливо при експлуатації класу (коли він приймає участь в експлуатації якогось застосування), існують ділянки опису класу, які відносно постійні. Наприклад, такі елементи класу, як опис полів, властивості і конструктори, переважно постійні, чого не можна сказати про методи, які можуть досить часто змінюватися, особливо під час експлуатації. У цих умовах є сенс великі класи розбивати на частини, присвоюючи частинам атрибут partial (частковий). Тоді можна окремо займатися тільки тією частиною, яка вимагає модифікації, не чіпаючи решту частин. При компіляції компілятор збере всі часткові класи (так вони стануть називатися) в один загальний клас. Ось як можна створювати часткові класи: розбивають спільний (довгий) файл з розширенням cs на декілька файлів з таким ж розширенням та іменами, поміщаючи в них потрібні елементи (конструктори, методи, поля властивості). Кожному файлу додають описувач partial. Потім ці файли підключають до загального проекту (створюють проект з програмою Main()). Файли з розширенням cs формують за допомогою програми WordPad (при записі текстового файла дають йому розширення cs). Об'єднують ці файли в один зайшовши в меню середовища програмування: Project | Add | Existing Item. Відкриється діалогове вікно для пошуку файлів. Треба знайти раніше сформовані cs-файли і підключити. Приклад програми з частковими класами представлений в лістингах 8.5-8.7. Результат приведений на рис. 8.6.
Лістинг 8.5
// Перший частковий клас
partial class Employee
{
// Поля класу
private string empName; // ім'я
private int empID; // табельний номер
private float currPay; // зарплата
private int empAge; // вік
private string empSSN; // номер медичного поліса
private static string companyName; // назва компанії
// Конструктори
public Employee() { }
public Employee(string name, int age, int id, float pay, string ssn)
{
// Ініціалізація властивостей
Name = name;
Age = age;
ID = id;
Pay = pay;
SocialSecurityNumber = ssn;
}
static Employee() // Статичний конструктор
{
companyName = "Union Fenosa";
}
}
Листинг 8.6
// Другий частковий клас
partial class Employee
{
// Властивості
public static string Company
{
get { return companyName; }
set { companyName = value; }
}
public string Name
{
get { return empName; }
set
{
if (value.Length > 9)
; // Console.WriteLine("Ім'я більше 9 символів");
else
empName = value;
}
}
public int ID
{
get { return empID; }
set { empID = value; }
}
public float Pay
{
get { return currPay; }
set { currPay = value; }
}
public int Age
{
get { return empAge; }
set { empAge = value; }
}
public string SocialSecurityNumber
{
get { return empSSN; }
set { empSSN = value; }
}
} // class
Листинг 8.7
using System;
namespace app22_employee_all
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Зібрана із часткових файлів " + "програма");
Employee emp = new Employee { Name = "Іванов" };
// Ініціалізація властивості через синтаксис ініціалізації
Console.WriteLine("Cпівробітник компанії: {0}", emp.Name);
Console.Write("Press any key to continue... ");
Console.ReadKey(true);
}
}
}
Рис. 8.6. Результат роботи програми, зібраної з часткових класів