Читайте также:
|
|
Завдання 1. Створити консольний додаток, описати в ньому 2 класи, які знаходяться у відношенні вкладеності.
Розглянемо два класи Provider та Clіent, які пов’язані між собою відношенням вкладеності. Обидва класи застосовуються для демонстрації ідей і тому розроблені просто, не маючи особливого смислового значення. Нехай клас постачальник Provider має три поля, одне з котрих статичне, два конструктора, два метода — статичний та динамічний. Ось його текст:
/// <summary>
/// Клас постачальник надає клієнтам
/// статичний та екземплярний методи,
/// закриваючи поля класу
/// </summary>
class Provider
{
//fields
string fieldP1;
int fieldP2;
static int fieldPS;
// Конструктори класу
/// <summary>
/// Конструктор з аргументами
/// </summary>
/// <param name="p1"> аргумент, що ініціалізує поле класу </param>
/// <param name="p2"> аргумент, що ініціалізує поле класу </param>
public Provider(string p1, int p2)
{
fieldP1 = p1.ToUpper(); fieldP2 = p2*2;
fieldPS = 0;
}
public Provider()
{
fieldP1 = ""; fieldP2 = 0; fieldPS = 0;
}
// Динамічний (екземплярний) метод
public string MethodPD()
{
fieldPS++;
string res = "Об’єкт класу Provider" + "\n\r";
res += string.Format("Мої поля: поле1 = {0}, поле2 = {1}",
fieldP1, fieldP2);
return res;
}
// Статичний (Модульний) метод
public static string MethodPS()
{
string res = "Модуль класу Provider" + "\n\r";
res += string.Format("Кількість викликів методу MethodPD = {0}",
fieldPS.ToString());
return res;
}
Поля класу є закритими для клієнтів. У класу є конструктор без аргументів, який ініціалізує поля класу відповідними константами, та конструктор з аргументами, який перетворить передані йому значення, перед тим як записати їх до полів класу. Методи класу дозволяють отримати інформацію, яка зберігається у полях. Динамічний (екземплярний) метод MethodPD, якому доступні поля класу, що зберігаються екземплярами класу, повертає рядок з інформацією про зберігаємі значення полів. Одночасно цей метод збільшує значення, що зберігається у статичному полі, яке можна розглядати як лічильник загальної кількості викликів динамічного методу усіма об’єктами даного класу. Статичний метод MethodPS, якому доступне тільки статичне поле, у якості результату повертає рядок з інформацією про кількість викликів динамічного методу.
Тепер побудуємо клас Client — клієнта для класу Provider. Клас буде влаштований схожим чином. Суттєве доповнення складається в тому, що одним з полів є об’єкт provider класу Provider:
/// <summary>
/// Клієнт класу Provider
/// </summary>
class Client
{
//fields
Provider provider;
string fieldC1;
int fieldC2;
const string NEWLINE = "\n\r";
// Конструктори класу
public Client(string p1, int p2, string c1, int c2)
{
fieldC1 = c1.ToLower(); fieldC2 = c2-2;
provider = new Provider(p1,p2);
}
public Client()
{
fieldC1 = ""; fieldC2 = 0;
provider = new Provider();
}
/// <summary>
/// Метод, використовуючий поле класу provider
/// для работи з методами класу Provider
/// </summary>
/// <returns> композиція рядків постачальника та клієнта </returns>
public string MethodClient1()
{
string res = provider.MethodPD() + NEWLINE;
res += "Объект класса Client" + NEWLINE;
res += string.Format("Мої поля: поле1 = {0}, поле2 = {1}",
fieldC1, fieldC2);
return res;
}
}
Зверніть увагу: конструктори клієнта (класу Client) створюють об’єкт постачальника (класу Provider), викликаючи конструктор постачальника. Для створення об’єктів постачальника можуть бути необхідними аргументи, тому вони передаються конструктору клієнта, так як це зроблено у нашому прикладі.
Створюючи об’єкт класу Client, конструктори цього класу створюють і об’єкт класу Provider, пов’язуючи його посиланням з полем provider. Всі динамічні методи клієнтського класу можуть використовувати цей об’єкт, викликаючи доступні клієнтові методи та поля класу постачальника. Метод класу Client — MethodClient1 починає свою роботу з виклику provider.MethodPD(), викликаючи сервіс, що надається методом класу Provider.
Підводячи перші підсумки, можна помітити, що клієнт класу може створювати об’єкти класу постачальника, а потім, використовуючи створені об’єкти, отримувати доступ до сервісів, наданих класом постачальника своїм клієнтам. Звичайно, постачальник маж закриту частину класу, яка є недоступною для його клієнтів. Як правило, для клієнтів закриваються поля класу. Клієнти класу отримують доступ до методів класу постачальника — сукупність цих методів визначає інтерфейс класу постачальника та ті сервіси, які постачальник надає своїм клієнтам.
Завдання 2. Створити Windows-додаток, реалізувати в ньому 2 класи, пов’язані відношення наслідування. Продемонструвати перевантаження, приховування та перевизначення батьківських методів.
Дата добавления: 2015-08-18; просмотров: 80 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
На основі даних про результати маркетингових досліджень охарактеризуйте вибірку: визначте одиницю вибірки, обсяг вибірки і структуру вибірки. | | | Створення батьківського класу Found |