Подання ідей за допомогою інтерфейсів С # – додаток для обчислення податків Visual C # (Sharp)

Інтерфейси С # можна розглядати як програмні конструктивні блоки, за допомогою яких можна по-швидкому записати свої ідеї У процесі нахоенія вирішення проблеми ми зазвичай записуємо одну ідею, на основі якої у нас народжується інша, з якої випливає третя і т д, поки ми не накидаємо всі ідеї

Перша ідея зазвичай є центральною У нашому додатку для обчислення податків центральною ідеєю є сам движок для обчислення податків Движок для обчислення податків застосовується для операції, відображеної в його назві, тобто для обчислення податків, і як звязуючий компонент для всіх інших ЕЛЕНТ програми Ці інші елементи являють собою якісь неопределеие поняття, необхідні для завершення додатка обчислення податків Ліо я віддаю перевагу називати ці інші компоненти залежностями (Dependencies) Залежність – це ідея, необхідна для завершення попередньої ідеї

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

Ось приклад оголошення інтерфейсу:

interface IExample { }

В оголошенні інтерфейсу ключове слово interface асоціюється з ідентіфікором IExample з точки зору синтаксису, воно використовується подібно ключовим словом class Інтерфейсу можна привласнити загальну (public) область видимості Інтерфейс містить методи і властивості, які визначають поведінку класів, що реалізують інтерфейс Розглянемо приклад інтерфейсу, що містить один мод і одна властивість:

interface IExample { void Method()

int Property { get set  }

}

Властивості і методи інтерфейсу визначаються в фігурних дужках після ідентікатора інтерфейсу Після самих методів і властивостей фігурні дужки НЕ примяти, т к ми створюємо тільки сигнатуру методу або властивості, а їх реалізація буде виконана класом Знову ж, даний процес схожий на визначення абсактного методу абстрактного базового класу

Ось простий приклад реалізації певного інтерфейсу:

class Examplelmplementation : IExample { public void Method() { }

public int Property { get { }

set { }

}

}

Тут інтерфейс IExample реалізується за допомогою механізму спадкування, побно реалізації абстрактного базового класу, розглянутого в попередньому розділі

ПРИМІТКА

Мова С # і середу CLR є моделями одиничного успадкування, в тому, що прзводний клас може мати тільки один базовий клас Але в С # клас може реалі-

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

При реалізації інтерфейсу в класі повинні бути реалізовані всі його методи і властивості В іншому випадку при компіляції вихідного коду компілятор васт повідомлення про відсутніх методах або властивостях і вважатиме реалацію незавершеною

Так як для реалізації інтерфейсу застосовується механізм успадкування, то іерфейс можна розглядати як базовий клас, який не має реалізації У слующем фрагменті коду ілюструється створення екземпляра реалізації інтеейса і присвоєння цього примірника змінної інтерфейсу:

IExample els = new Examplelmplementation() elsMethod()

У даному прикладі створюється екземпляр класу Examplelmplementation, який присвоюється змінної els типу IExample Дане створення екземпляра і його привласнення є знижуючим приведенням похідного класу до базового класу, або, більш вірно, до базового типуПонижувальний приведення відбувається, коли похідний тип в ланцюжку спадкування (наприклад, Examplelmplementation) наводиться до базового класу в ланцюжку спадкування (наприклад, до IExample) Автоматичне понижувальний приведення є можливим, тому що Examplelmplementation можна виразити, як тип IExample Це наче б ви говорите: Я створюю примірник класу Examplelmplementation і привласнюю йому тип IExample, що знаходиться в ієрархії успадкування . При виклику методу clsMethodo, викликає код насправді викликає метод ExamplelmplementationMethod (), ХОЧА ВІНІ не знає про ЦЬОМУ, Т К Він використовується базовий ТИП IExample

У той час як механіка визначення інтерфейсу і його відповідної Реалізується є досить простий, питання полягає в тому, навіщо займатися всім цим Спробуємо знайти відповідь на це питання за допомогою ще однією аналогії

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

Подумайте над сказаним небагато Ідеєю є офіціант, але її реалізацією являють чоловік Саджаючи вас за стіл, ваш офіціант може представитися, але ви коли-небудь зверталися до офіціанта по імені Більшість людей зазвичай так і звертається до нього – офіціант, т к вони бачать в ньому не людину, а когось, хто обслуговує їх Суть полягає в тому, людина – це всього лише реалізація, але нас він дійсно не цікавить як людина, а тільки як офіціант, випояющій свої функції Наприклад, хоча ви можете поспівчувати, якщо у вашого офіціанта видався поганий день, тим не менш, ви не хочете, щоб це відбилося

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

Ось це і є суть інтерфейсів і реалізацій Інтерфейс визначає роль з задами, які реалізації повинна виконувати Вас не цікавить, чи може реалація робити що-небудь інше, або якщо у неї поганий день . Все, що вас інтерест, – це тільки те, щоб реалізація робила те, що інтерфейс її зобовязує робити

Що ми тут маємо, так це розвязування ідеї від інтерфейсу, точно так само, як і в ресторані, де нам байдуже, чи звуть нашого офіціанта Петей, Васею, Сей або Галею у разі офіціантки Більше того, занадто вас хвилювало, якби замість людини вас обслуговував робот Швидше за все, що ні, т к едінствеое, що вас турбує, – це добре повечеряти Це є важливим аспектом іерфейсов і реалізацій: реалізації замінювані, і ми можемо замінити одну реалацію інший

При використанні інтерфейсів і типів, що реалізують їх, ми пишемо компонує-орієнтоване програмне забезпечення Компоненти і спадкування явлтся двома різними обєктно-орієнтованими технологіями Спадкування застосовується для реалізації інтерфейсів, а компоненти – для втілення ідей

Джерело: Гросс К С # 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>

*

*