Класи ООП. Об’єктно-орієнтоване програмування

Методи

Поведінка класу або його примірників визначається за допомогою методів. Це підпрограми з можливістю оперувати об’єктами. Дані операції можуть змінити стан об’єкта або просто надати способи доступу до нього.

Існує безліч методів. Їх підтримка залежить від мови. Одні створюються і викликаються кодом програміста, інші (спеціальні, такі як конструктори, деструктори і оператори перетворення) створюються і викликаються згенерованим компілятором кодом. Мова може дозволити програмісту визначати ці спеціальні методи.

Інтерфейс

Це визначення групи абстрактних дій. Він з’ясовує, яке поведінка повинен демонструвати певний об’єкт без вказівки того, як воно має бути реалізовано.

Об’єкт може мати кілька ролей, а користувачі мають змогу використовувати його з різних точок зору. Наприклад, об’єкт типу “людина” може мати ролі:

  • Солдата (з поведінкою “стріляти в супротивника”).
  • Чоловіка (з поведінкою “люби свою дружину”).
  • Платника податку (з поведінкою “плати податки”) і так далі.

Однак кожен об’єкт реалізує свою поведінку по-своєму: Міша платить податки вчасно, Андрій з простроченням, а Петро взагалі цього не робить. Те ж можна сказати про кожен об’єкт та інших ролях.

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

Хорошим прикладом є кнопки на передній панелі телевізора. Можна сказати, що вони – це інтерфейс між користувачем і електропроводкою на іншій стороні корпусу приладу. Людина натискає кнопку живлення для включення і виключення електроприладу. У цьому прикладі конкретний телевізор є екземпляром, кожен метод представлений кнопкою, а всі разом вони складають інтерфейс. У своїй найбільш поширеною формою він являє собою специфікацію групи пов’язаних методів без їх реалізації.