Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Лабораторна робота 1. Повторення принципів ООП. Зв’язки між класами.

Читайте также:
  1. БУДОВА ТА РОБОТА ФРИКЦІЙНИХ МУФТ ЗЧЕПЛЕННЯ
  2. Девиз «биоробота» - «Живи, как все» или «Делай, что должно, и будь, что будет».
  3. Дипломна робота
  4. Значення принципів законності в процесі дотримання правопорядку
  5. Класифікація та зміст принципів управління персоналом.
  6. Класифікація та зміст принципів управління персоналом.
  7. КЛИНИЧЕСКАЯ ЛАБОРАТОРНАЯ ДИАГНОСТИКА

 

Завдання 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

mybiblioteka.su - 2015-2024 год. (0.012 сек.)