Реалізація кімнатних угруповань програми управління освітленням в Visual C # (Sharp)

Кімнатні угруповання – це колекції кімнат з певною організацією Метою застосування кімнатних угруповань є отримання можливості волнять групові операції, що не сортуючи кімнати перед цим Наприклад, у випадку з музеєм, при виконанні кожної глобальної операції нам не потрібно буде Віслян, чи є кімната загальної або приватної

Колекція організована таким чином, що кілька кімнатних угруповань можуть бути повязані між собою, а кожна окрема угруповання містить взаосвязанние кімнати Структура повязаного списку має два рівні і виглядає таким чином (код знаходиться в Проекті LibLightingSystem):

class RoomGrouping г BaseLinkedList {public Room Rooms

public string Description

}

class Room : BaseLinkedList { public IRoom ObjRoom

}

Оголошення класу Room представляє окрему кімнату Але зверніть увагу на те, яким чином він походить від класу BaseLinkedList, що начебто поазумевает, що клас Room представляє множинні кімнати Це є частиною реалізації звязаного списку, який подібний ланцюжку, що складається з оельних ланок

Клас RoomGrouping має два члена даних: Rooms, який представляє список кімнат в угрупованні, і Description, що представляє зрозумілий опис груіровкі А клас Room має всього лише один член даних: посилання на екземпляр інтерфейсу IRoom Цей член даних не знає про колекції і управляється іншим обєктом, який містить посилання на окремі екземпляри IRoom, подібно масиву примірників IRoom

Для управління кімнатними угрупованнями застосовується клас LightingController

Первісна реалізація даного класу виглядає таким чином:

public class LightingController {

private BaseLinkedList _roomGroupings = new RoomGrouping()

}

При роботі зі звязаними списками виникає проблема визначення першого ЕЛЕНТ списку При використанні масивів пустий список масивів є масивом без посилань, але є явний обєкт масиву При використанні ж повязаних списків, порожній повязаний список-це неіснуючий список Тім чином, для створення списку вимагається кімната Першим елементом класу LightingController є екземпляр класу RoomGrouping, яка не соді ніяких кімнатних угруповань, а всього лише служить як заповнювач Нову кімнатну угруповання можна додати за допомогою наступного коду:

_roomGroupingsInsert(newRoomGroup)

А якби у нас не було заповнювача для кімнатних угруповань, то щоб добити елемент у список кімнатних угруповань, довелося б використовувати слующій код:

if (_roomGroupings == null) {

_roomGroupings = newRoomGroup

}

else {

  roomGroupingsInsert(newRoomGroup)

}

Як можна бачити, використання заповнювача спрощує код і зменшує його обм але при цьому також потрібно не виконує ніяких операцій порожній еемпляр класу RoomGrouping Я віддаю перевагу останній підхід, т к я вирішив, що кімнатна угруповання без ідентифікатора буде угрупованням за замовчуванням

Джерело: Гросс К С # 2008: Пер з англ – СПб: БХВ-Петербург, 2009 – 576 е: ил – (Самовчитель)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*