Об'єктно-орієнтоване програмування в Visual Basic

Мова Visual Basic є об'єктно-орієнтованою мовою. Це означає, що всі функціональні частини програми розглядаються як об'єкти, що містять в собі деякі властивості, здатні виконувати певні методи і генерувати події. Для початківця програміста дуже важливо розуміти відмінність між класом і об'єктом. Клас є описом об'єкта, в той час як об'єкт є конкретним представником певного класу, т. Е. Кожен об'єкт є екземпляром певного класу. Наприклад, поняття "автомобіль" описує цілий клас об'єктів, які мають чотири колеса, кермо і вміють пересуватися, в той час як кожен конкретний автомобіль є об'єктом зі своїми розмірами коліс, положенням керма і швидкістю пересування.

Основними поняттями об'єктно-орієнтованого програмування є інкапсуляція, успадкування, поліморфізм.

Інкапсуляція

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

Кожен клас повинен надавати якийсь самодостатній (по можливості) функціонал, і при цьому всі деталі реалізації повинні бути приховані.

Наприклад, якщо є клас, який надає можливість завантажити файл з Інтернету, то весь функціонал по з'єднанню з сервером, проведення обміну, закриття зв'язку, всі використовувані змінні повинні бути приховані всередині цього класу: немає ніякої необхідності користувачам класу бачити всі деталі реалізації класу. Це дуже важливий момент, оскільки в будь-якому великому проекті постійні зміни призводять до того, що в будь-який момент часу деталі реалізації класу можуть змінитися і всі розробники, які використовували дані деталі реалізації, виявлять свій код не працюючим. Відстежити це неможливо, тому треба не допускати таких ситуацій. Інкапсуляція коду всередині класу призведе до того, що ніхто не зможе написати код, здатний "зламатися" при будь-якій зміні деталей реалізації окремих класів. Якщо все-таки треба щось змінити в класі, розширити його функціонал, то в цьому допоможуть успадкування і поліморфізм.

Успадкування

Класи рідко містять в собі абсолютно весь функціонал. Зазвичай частина функціоналу переноситься з інших класів. Цей процес називається спадкуванням. У Visual Basic 2010 абсолютно всі класи прямо або побічно (через ланцюжок інших класів) успадковуються від класу System.Object. Спадкування дозволяє використовувати в дочірніх класах функціонал батьківського класу і, в разі необхідності, доповнювати його. Поряд з успадкуванням Visual Basic 2010 підтримує концепцію реалізації інтерфейсу. Інтерфейс являє собою опис набору функцій, які реалізує клас.

Слід мати на увазі, що в Visual Basic 2010 кожен клас має рівно один базовий клас, і може реалізувати кілька інтерфейсів. При спадкуванні можна не просто додавати новий функціонал, але і змінювати існуючий. Для цього існує поліморфізм.

Поліморфізм

Поліморфізм є здатність до зміни функціоналу, успадкованого від базового класу. Як приклад використання даної можливості можна привести клас Фігура, що відображається на екрані за допомогою методу Перевернути. У створених на його основі класах Коло, Квадрат, Трикутник ми можемо змінити функціонал по відображенню їх на екрані. Після цього розробник, має примірник будь-якого з цих класів, для перемальовування може просто викликати метод Показати, і об'єкт коректно перемалюють на екрані. Якби не було поліморфізму, довелося б писати код, який перевіряє тип фігури і в залежності від нього перемальовує фігуру різними способами. Поліморфізм дозволяє значно скоротити обсяг коду і підвищити його читаність.