__>3) "ООП" — позволяет хранить состояние в виде переменных членов и набор ассоциированных с ними функций в виде методов.
__>VladD2 совершенно справедливо заметил, что такой способ хорошо подходит для описание систем на макро уровне, например:
__>public class JobSystem и сразу понятно что если нужно взаимодействие с шедулером то нужно смотреть список его методов, в нем
__>же хранится текущее состоние (в виде конфига и запихнутого внутрь кварца(которй уже со своими потрохами)), там же лежат
__>методы для управления подсистемой в целом (start/shutdown).
-module(job_system).
-export([
public_method/1,
public_method_two/1,
public_method_three/2
]).
%% ------------------------------------------------------
%% Публичные методы aka интерфейс взаимодействия
%% ------------------------------------------------------
public_method(Param) ->
ok.
%% Функция является перегруженной
%% Перегрузка на основе паттерн-матчинга
%% Эта функция принимает список и вызывает внутреннюю, приватную функцию
public_method_two([Head|Tail]) ->
private_method(Head, Tail);
%% Эта функция принимает кортеж и вызывает внутреннюю, приватную функцию
public_method_two({A,B}) ->
private_method(A, B).
public_method_three(Param1, Param2) ->
{я, не, знаю, что, мне, делать, с, этою, бедой}.
%% ------------------------------------------------------
%% Приватные функции
%% ------------------------------------------------------
%% Приватная функция также прегружена на основе
%% сопоставления с образцом
private_method(A, [Head|Tail]) ->
another_Module:do_something(A),
private_method(Head, Tail);
private_method(A, []) ->
another_Module:do_something(A);
private_method(A, B) ->
another_Module:do_something(A),
another_Module:do_something(B).
Ну и чем это отличается от объекта?

Состояние этот модуль тоже может хранить (см. gen_server в документации по Эрлангу ну или
здесь).