Метод (програмування)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Ме́тод в об'єктно-орієнтованому програмуванніпідпрограма (процедура, функція), що використовується виключно разом із класом (методи класу) або з об'єктом (методи екземпляра).

Розрізняють прості методи і статичні методи (методи класу):

  • прості методи мають доступ до даних об'єкта (конкретного екземпляра даного класу)
  • статичні методи не мають доступу до даних об'єкта і для їх використання не потрібно створювати екземпляри (даного класу).

Метод екземпляра(простий метод)[ред. | ред. код]

Приклад простого методу на JavaScript

 1 const person = {
 2   name: 'Vasya',
 3   surname: 'Pupkin',
 4   born: '01.01.1990',
 5   //метод, що видає інформацію про персону
 6   getData() {
 7     return person.name + ' ' + person.surname + ', ' + person.born;
 8   }
 9 };
10 const personData = person.getData(); //'Vasya Pupkin, 01.01.1990'

Статичний метод[ред. | ред. код]

Методи і властивості, які не прив'язані до конкретного екземпляру об'єкта, називають «статичними». Їх записують прямо в саму функцію-конструктор.

 1 'use strict';
 2 //створюємо клас для зберігання інформації про журнали 
 3 function Journal(date) {
 4   this.date = date;
 5 //додаємо метод для перетворення дати
 6   this.formatDate = function(date) {
 7     return date.getDate() + '.' + (date.getMonth() + 1) + '.' + date.getFullYear();
 8   };
 9 //додаємо метод для коректного виводу дати випуску журналу 
10   this.getTitle = function() {
11     return 'Выпуск от ' + this.formatDate(this.date);
12   };
13 }
14 //додаємо метод для порівняння дати випуску двох журналів
15 Journal.compare = function(journalA, journalB) {
16   return journalA.date - journalB.date;
17 };
18 // створюємо масив журналів
19 const journals = [
20   new Journal(new Date(2012, 1, 1)),
21   new Journal(new Date(2012, 0, 1)),
22   new Journal(new Date(2011, 11, 1))
23 ];
24 //знаходимо журнал який був вупещений раніше
25 function findMin(journals) {
26   let min = 0;
27   for (let i = 0; i < journals.length; i++) {
28     // використовуємо статичний метод
29     if (Journal.compare(journals[min], journals[i]) > 0) min = i;
30   }
31   return journals[min];
32 }
33 
34 const firstJournal = findMin(journals).getTitle(); //Выпуск от 1.12.2011

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

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

Залежно від способу використання, методи поділяються на:

  • змістовні — надаються клієнтам класу і визначають його інтерфейс, звичайно є публічними;
  • спеціальні — викликаються автоматично при створенні (конструктори), знищенні (деструктори), копіюванні (конструктори копіювання), перетворенні типу тощо;
  • допоміжні — викликаються з змістовних та спеціальних методів, звичайно не надаються клієнтам класу і є захищеними або приватними.

Залежно від впливу на стан об'єкта, методи поділяються на:

  • конструктори — встановлюють початковий стан об'єкта;
  • деструктори — скидають стан об'єкта;
  • селектори (геттери) — надають значення атрибута;
  • модифікатори (сеттери) — встановлюють значення атрибута;
  • ітератори — надають послідовний доступ до множини атрибутів.

Методи в JavaScript[ред. | ред. код]

Всі значення в JavaScript, за винятком null і undefined, містять набір допоміжних функцій і значень, доступних «через точку». Такі функції називають «методами», а значення - «властивостями». Тут ми розглянемо основи використання властивостей і методів.

Приведемо деякі стандартні методи різних типів данних:

Методи String[ред. | ред. код]

В рядків є метод toUpperCase (), який повертає рядок у верхньому регістрі

let hello = "Hello world!";

hello = hello.toUpperCase(); // "HELLO WORLD!"

Також є метод toLowerCase (), який працює аналогічно попередньому але повертає рядок у нижньому регістрі.

Метод indexOf (Str) повертає позицію першого символу першого входження підрядка Str в рядку.

Метод lastIndexOf (Str) повертає позицію останнього входження Str в рядку.

Метод slice (String) повертає фрагмент рядка.

Методи Number[ред. | ред. код]

Для переведення числа в рядок використовують метод toString(система счисления)

let n = 255;
str = n.toString(16); // ff

Методи Array[ред. | ред. код]

Для додавання/видалення елементів масиву використовують наступні методи:

  • pop Видаляє останній елемент з масиву і повертає його.
  • push Додає елемент в кінець масиву.
  • shift Видаляє з масиву перший елемент і повертає його.
  • unshift Додає елемент в початок масиву.

Методи Function[ред. | ред. код]

У сучасному JavaScript у функційє вбудований метод bind, який ми можемо використовувати. За допомогою цього методу до функції можна прив'язати контекст

var user = {
  name: "Vasya",
  sayName: function() {
    alert( this.name );
  }
};
//Прив'яжемо контекст об'єкта до функції  
setTimeout(user.sayName.bind(user), 1000); //виведе 'Vasya' через 1 секунду

Посилання[ред. | ред. код]

Дивіться також[ред. | ред. код]