#39;єктами.
У результаті об'єктно-орієнтованого підходу до проектування програм процес розробки програми перетворюється на процес еволюційного програмування, який для внесення будь-яких змін і доповнень до програми не вимагає кардинального перегляду складових її алгоритмів. Еволюційний спосіб програмування спирається на збереження цілісності об'єктів програми, тобто внесення змін у програму не повинно зачіпати внутрішню організацію існуючих в ній об'єктів.
Важливою властивістю об'єктно-орієнтованих мов є можливість розробки на них програм, що працюють в системах зі складними паралельними обчислювальними процесами, спочатку властивими технічним засобам обчислювальної техніки. Це властивість спирається на концепцію активних і неактивних об'єктів в період функціонування програми. Одночасна активність різних об'єктів стає можливою за рахунок їх суворої типізації та закритості для змін іншими об'єктами.
Мова програмування C + + володіє всіма основними властивостями мов об'єктно-орієнтованого програмування та істотно відрізняється за своєю концепцією від базової мови C.
Існує кілька принципів, що лежать в основі мови C + +:
1. Інкапсуляція - це об'єднання похідного типу даних з набором функцій, використовуваних при роботі з цим типом, в єдиний клас. При цьому функції, включені в клас, називаються методами класу, дані - елементами даних, а конкретні представники класу - Об'єктами класу. Закриття даних і методів оперування цими даними відбувається таким чином, щоб звертатися можна було б тільки певним об'єктам (в даному випадку тільки об'єктам цих типів).
2. Спадкування - це здатність одних класів запозичувати основні властивості інших класів, в Зокрема - методи класів і елементи даних. Клас, що успадковує властивості, називають похідним, а клас, що надає свої властивості для наслідування, - Базовим. Механізм успадкування дозволяє створювати ієрархію класів, тобто багаторівневу систему класів, пов'язаних між собою ставленням успадкування.
3. Поліморфізм - це можливість визначення функції, що працює з різними за типом даних списками параметрів у межах якого-небудь одного виду алгоритмів. Такі функції називаються зазвичай віртуальними і проектуються як деяке сімейство однойменних функцій, що працюють з різними типами даних. Механізм, реалізує вибір будь-якої конкретної функції з певного сімейства, носить назву механізму пізнього зв'язування, оскільки може бути використаний в процесі виконання готової програми.
3. Класи
Центральним поняттям об'єктно-орієнтованого програмування є поняття класу. Саме він реалізує основні характеристики: инкапсуляцию, спадкування, поліморфізм.
Клас являє собою тип, визначений користувачем. Цей тип включає в себе сукупність полів даних і функцій для роботи з цими полями.
Клас оголошується:
class <ім'я класу> [: public <ім'я базового класу>]
{поля даних
специфікатор доступу
функції};
Віднесення змінної до якогось типу даних визначає пам'ять, що виділяється для цієї змінної і набір операцій і функцій, застосовуваних до таких змінних. Реалізація цих принципів для типів, визначених користувачем, здійснюється за допомогою класів.
Специфікатори доступу
Існує ряд міркувань, за якими було б доцільно обмежити доступ до елементів даних класу. До найбільш важливих з них відносяться наступні:
- обмеження доступу до даними класу рамками тих функцій, які включені програмістом в цей клас, дозволяє локалізувати програмні помилки практично до початку роботи програми;
- опис класу в цьому випадку дозволяє користувачам класів більш просто знайомитися з новими бібліотеками класів;
- при обмеженні доступу спрощується коригування програм, оскільки для їх зміни досить скорегувати опис класу і функції, які є його членами, не вносячи змін в ті місця програми, де використовуються об'єкти класса;
- функціональне розмежування класів робить можливою розробку програм, що використовують концепцію паралельних процесів.
public
Цим специфікатором позначається група даних і функцій, які доступні іншим функцій програми.
protected
позначаю захищені дані і, можливо, функції, якщо є необхідність. Ці елементи доступні тільки функціям - членам даного класу і похідних від нього класів, тобто тих класів, які оголосять себе приймачами даного.
private
Служить для завдання даних і функцій, доступних тільки функціям даного класу. Це приватні дані. p> Типово елементи вважаються приватними (private) для класу і відкритими (public) для структури (об'єднання також відносять до класів).
Класи краще визначати у файлі з розширенням. h, а реалізацію у файлі з тим же ім'ям, але з розширенням. cpp або. c. Найчастіше клас з одиночці не визначається, а створюються бі...