Найти в Дзене
Войти в IT

Что такое методы и функции в программировании? В чем их секрет?

Оглавление

Продолжаем про объектно-ориентированное программирование, ну и не ограничиваясь только им. В прошлых статьях я писал про классы, и рассказывал про концепцию ООП в целом. Сегодня рассказываю про ещё одну особенность ООП, а именно про методы (альтернативные названия - функции, процедуры). Что такое методы, зачем они нужны и каким образом они облегчают жизнь программисту — поехали!

Кратко про классы из прошлых статей

Напомню, класс — это декларативное описание некоторой сущности из реального мира. Сущность не обязательно должна иметь физическое отражение в материи. Это вполне может быть задача, процесс или вообще набор данных.

Подход объектно-ориентированного программирования заключается в том, чтобы разделить большую сущность (задачу, процесс, или набор данных) на маленькие составные части, и работать с каждой частью (задачей) отдельно. Маленькие части большой задачи в ООП - это классы. Смысл класса в том, чтобы послужить контейнером для некоторой части программной логики, объединить в себе некоторый код по набору каких-то признаков.

И если класс представляет из себя контейнер с общим описанием условных границ, и обычно нужен для хранения пассивного содержимого, то метод — это специальная конструкция, описывающая активное поведение внутри класса. Как правило, это поведение как раз и позволяет классу решать какую-то часть общей задачи, для работы над которой он был создан.

Методы, функции и процедуры

Метод иногда называют функцией или процедурой. Как в различных языках, так и в различной документации по ООП, названия могут варьироваться. Но в общем и целом, это тождественные названия (не беря в расчёт отличные от ООП парадигмы).

Метод можно «вызывать», передавая ему входящую информацию (параметры, или аргументы). После того, как метод выполнит свою работу, он может «возвращать» результат своей работы тому, кто его вызвал.

Поведение метода, его предназначение, название и прочие характеристики — целиком и полностью определяются программистом который пишет программу. У классов могут быть десятки методов, а может вообще не быть методов. Каждый метод может возвращать результат своей работы, а может и не делать этого (например он может просто менять состояние класса, а потом молча завершаться). Методы могут принимать входящие аргументы, а могут не принимать их. Иначе говоря, полная вариативность и безграничная ширина творчества.

Что такое метод, на примере из жизни

Давай рассмотрим что-то более конкретное. Пускай у нас есть красивый телевизор на стене. Этот телевизор сделали некоторые инженеры, придав ему определённый вид, форму и функциональные характеристики. Иными словами, «запрограммировали» в реальности.

Так вот, физический, висящий на стене телевизор, с точки зрения программирования в парадигме ООП — это объект класса "Телевизор". Чертежи и принципиальные схемы телевизора, хранящиеся где-то там на заводе — это класс. Внутри физического телевизора есть конденсаторы, транзисторы, провода, микросхемы и матрица — это условные переменные (которые кстати тоже могут быть отдельными объектами других классов с уже своими переменными внутри).

У любого уважающего себя телевизора есть основная функция — показывать картинку. Вот это и есть метод. Для того, чтобы телевизор начал показывать картинку, мы нажимаем на кнопку включения. Это действие называется «вызов метода». Для выбора канала мы нажимаем цифру на пульте — 1, 2, 3, 4 и так далее. Это можно рассматривать как числовой аргумент (параметр), который мы передаём в метод «посмотретьТелевизор». Помимо номера канала, метод «посмотретьТелевизор» ещё принимает цифровой сигнал с антенны в качестве дополнительного параметра. Так же, этот метод возвращает результаты своего выполнения в окружающий мир - то есть, показывает картинку. Как-то так.

Как создать метод в концепции ООП

В различных языках программирования, ключевые слова для создания методов могут отличаться. Так же, в зависимости от конкретного языка, могут использоваться несколько разных ключевых слов для объявления методов. Предлагаю рассмотреть использование методов через классику - а именно, через язык для веб-программирования PHP.

Для объявления метода в PHP используется ключевое слово function (функция). Функция может быть объявлена как внутри класса, так и "внигде" - просто в файле с расширением .php. Вот как может выглядеть такой программный код.

<?php
function a()
{
echo "PREVED"!;
}
?>

Далее, мы можем вызвать эту функцию через команду a()

<?php
a();
?>

Соответственно, при открытии страницы с таким программным кодом мы увидим надпись PREVED!

А вот другой пример - объявление метода внутри класса, и последующий вызов этого метода. Так же, для языка PHP.

<?php
class BestProgramEver
{
public static function a()
{
echo "PREVED2!";
}
}
?>

И последующий вызов функции a, находящейся внутри класса BestProgramEver

BestProgramEver::a();

Философия программирования - декомпозиция задачи на классы и методы

Работая над поставленной задачей, программист всегда создаёт структуру программы (а именно — разбивает задачу на составные части). Для каждой составной части создаются собственные классы, и собственные методы внутри этих классов. Далее, создаётся связь классов друг с другом путём вызова методов внутри друг-друга, то есть через обращения друг к другу.

Например, внутри некоторого метода, расположенного в некотором классе, вызывается другой метод другого класса. Более того, внутри условного метода можно не только вызывать другие методы, но ещё и создавать объекты других классов, и многое другое.

Решая поставленную задачу, программист перекладывает своё представление о решаемой задаче на язык программного кода. В парадигме ООП - он делает это, создавая архитектуру программы из классов, методов и переменных. Иначе говоря — программист рефлексирует со своего угла обзора о том, как компьютеру нужно решать задачу. Рефлексирует, начиная от получения входящих параметров задачи, продолжая через обработку и анализ параметров, и заканчивая возвращением в окружающий мир результатов решения поставленной задачи.

В этом и есть ответ на вопрос, заданный в заголовке статьи. Секрет методов в том, чтобы разбивать одну большую задачу на множество мелких составных частей. Используя такое разбиение, делить сложную проблему на простые проблемы, и для каждой из простых проблем создавать собственный метод решения. Иначе говоря - секрет эффективного программирования в максимальном упрощении задачи, через максимальное разделение задачи на части. Упрощай задачу через разбиение до тех пор, пока она не станет простой. Кстати, этот подход отлично работает и в жизни - практически для всех задач, которые могут быть разделены.

Такие вот логически-психологические сказки, пропущенные через сознание и угол зрения конкретного человека, имеющего профессию «программист». Статья про базовую часть ООП - по ссылке, рекомендую для тех кто пропустил вводную часть.

#программист #it #itтехнологии #обучениепрограммированию #информационныетехнологии #айтишник #программирование #программированиеснуля #программированиедляначинающих #языкпрограммирования #технологии #образование #студенты #личныйопыт

🔥 Понравилось? Подпишись! Победим восстание роботов вместе! 🔥

-2

🚀 P.S. Ты можешь круто поддержать меня и проект "Войти в IT" на boosty! Я публикую там более эксклюзивный и профессиональный, иногда немного личный контент. Хочешь посмотреть как я выгляжу в реальной жизни? Тогда жми: Ссылка 🚀

P.S.2 У меня ещё есть Telegram-канал. Там посты чуть попроще, и чуть повеселей. Ссылка

Наука
7 млн интересуются