مفهوم متدها، همچنین کلاسها شاید کمی به هم نزدیک باشند، اما باید توجه داشته باشید، کلاسها همیشه دربرگیرنده‌ی متدها میباشند، در محیط playground شما میتوانید متدها را بدون وجود کلاسها ساخته و صدا بزنید، اما در محیط Xcode این کار امکانپذیر نیست، و نمیتوان متدها را بدون وجود کلاسها فراخوانی کرد، همانطور که class بدون func نیز معنایی ندارد، در ادامه مطلب، با طرح یک مثال, با رابطه‌ی متدها و کلاسها بیشتر آشنا خواهید شد.
به تصویر زیر نگاه کنید:
function-return
تصویر یک ابزار (چاقو) همه کاره را مشاهده میکنید، اگر بخواهیم تعریف کلاس و متد را درون این تصویر به تفکیک بیان کنیم، اینطور میشود گفت: دسته‌ی قرمز رنگ(که کل ابزار را شامل میشود) مفهوم کلاس را تداعی میکند، و ابزارهای مختلفی که به این بدنه متصل میباشد، را میتوانیم به متدها‌ی این کلاس نسبت دهیم.
پس همیشه متدها، جزئی از کلاس هستند، و متدها درون کلاسها تعریف میشوند و معنا پیدا میکنند،در تصویر زیر میتوانیم به اختصار متدها و کلاس را تفکیک شده مشاهده کنیم:
مثال مهوم کلاس و متد
در این تصویر ارتباط ها را مشاهده میکنید، توجه داشته باشید،وجود کلاسها نیز بدون متدها بی معنا خواهد بود،پس میدانیم در تصویر بالا اگر متدها (ابزار ها) را حذف کنیم،چیزی به نام چاقو‌ی همه کاره باقی نخواهد ماند، از طرفی هم اگر ابزارها (متدها) را بدون وجود کلاس(بدنه چاقو) داشته باشیم نمیشود از این ابزار به درستی استفاده کرد، و به نوعی ابزارهایی ناقص و غیر قابل استفاده خواهیم داشت، پس متدها زمانی کاربرد دارند که در کلاس تعریف شده باشند، در جلسه‌ی قبل گفتیم، کلاس و متدها لازم و ملزوم یکدیگر هستند.
برای درک بیشتر،اجازه دهید کلاس person که در جلسات قبل تعریف کرده ایم را دوباره بنویسیم و اینبار متدهای بیشتری به آن اضافه کنیم:
٭ تمامی کدها و مثال ها را می توانید در بخش playground تست کنید.
class person {
    
    init(){
        print("New person Object Initialized")
    }
   
}
ابتدا کلاس را میسازیم، مطابق دستورات بالا،نام کلاس ساخته شده person میباشد،به معنای (شخص) یا به عبارتی (یک انسان) ، حال کمی فکر کنید و تجسم کنید میخواهیم به این شخص دستور دهیم چند کلام سخن بگوید و به دنیا سلام کند، این کار را باید با تعریف متد، به این (شخص) دیکته کنیم،مطابق دستور زیر:
class person {
    
    init(){
        print("New person Object Initialized")
    }
    
    func sayHello(){
        print("Hello World !")
    }
}
خوب، با تعریف این متد، این شخص میتواند به ما سلام کند، در اصل میتواند در خروجی عبارت (! Hello World) را چاپ کند،باز میخواهیم به این شخص دستوری دهیم که عباراتی را که ما میخواهیم، بگوید. یعنی باید متدی تعریف کنیم که عباراتی را از ما گرفته، سپس در خروجی همان را چاپ کند،مطابق دستورات زیر عمل میکنیم:
٭ تمامی کدها و مثال ها را می توانید در بخش playground تست کنید.
class person {
    
    init(){
        print("New person Object Initialized")
    }
    
    func sayHello(){
        print("Hello World !")
    }
    
    func talk(Words:String) ->String{
        
        var msg = "i want say \(Words)"
        return msg
    }
}
پس مطابق دستورات بالا هرگاه متد talk را فراخوانی کنیم، باید مقداری string را به عنوان متغیر words به این متد پاس دهیم که (شخص) person بتواند این عبارات را به زبان بیاورد.
نکته: تا زمانی که این کلاس و متدهای آنرا فراخوانی نکنیم این شخص هیچ کاری نخواهد کرد.فعلا مطابق دستورات پیش بروید، تا زمان فراخوانی فرا برسد.
در ادامه، جالب میشود اگر به این شخص راه رفتن را نیز بیاموزیم، اجازه دهید در همین ابتدا، برای او مشخص کنیم که چند متر راه برود، دستورات زیر متد راه رفتن را نیز شامل میشود:
class person {
    
    init(){
        print("New person Object Initialized")
    }
    
    func sayHello(){
        print("Hello World !")
    }
    
    func talk(Words:String) ->String{
        
        var msg = "i want say \(Words)"
        return msg
    }
    
    func walk (metr:Int){
        
        for index in 1...metr {
            print("i walk \(index) meter, i must go \(metr-index)meter Farther")
        }
    }
}
نکته: توجه کنید،اگر در این مثالها هر بار کل کلاس را (از اول) نشان میدهیم ،برای فهم بهتر قطعه کدها ، همچنین جایگاه متدها و ترتیب آنها در کل کلاس است. پس در زمان تمرین، شما فقط متدهای اضافه شده در کلاس person را زیر هم بنویسید و توجه داشته باشید هربار قطعه کدهای نوشته شده با مثال مطابقت داشته باشد. پس برای تمرین احتیاجی نیست هر بار تمامی کد را درون محیط playground از اول بنویسید،فقط بخشهای اضافه شده را به کدهای خود اضافه کنید.
آخرین متدی که نوشتیم راه رفتن را عهده دار است، متغیر metr میزان مسافت  را گرفته، سپس هر بار که این (شخص) person، قدمی برمیدارد مقدار قدمهارا به عدد بیان میکند و مقدار باقی مانده را نیز میگوید.این کار توسط عبارت نوشته شده در حلقه‌ی for انجام میپذیرد.تمامی این قطعه کدها وظایف مشخصی را برای کلاس person  مشخص کردند،به عبارتی الان ما فردی را داریم،که میتواند با دستوراتی که ما برای آن تدارک دیده ایم، سلام کند،کمی سخن بگوید و به مقدار دلخواه ما قدم برداشته و راه برود. اما سوالی که در اینجا مطرح است این است که چگونه از این قطعه کدها استفاده کنیم ؟
جواب سوال بسیار ساده است،و دو مرحله دارد:
مرحله‌ی اول : ساخت شئ از کلاس person، به عبارتی اگر بخواهیم این شخص را به صحبت کردن و راه رفتن متقاعد کنیم ،ابتدا باید این شخص (person) را ایجاد کنیم.این کار بسیار ساده است، به عمل زیر ساخت شی از کلاس گفته میشود:
var myPerson:person = person()
این کار ساخت شئ را از کلاس مورد نظر (که همان کلاس person است) را امکانپذیر میکند،و باعث میشود بتوانیم با فراخوانی نام myPerson به متدهای راه رفتن، حرف زدن و ... دسترسی داشته باشیم، پس تا به اینجای کار در محیط playground این کدها را نوشته ایم:
٭ تمامی کدها و مثال ها را می توانید در بخش playground تست کنید.
import UIKit
class person {
    
    init(){
        print("New person Object Initialized")
    }
    
    func sayHello(){
        print("Hello World !")
    }
    
    func talk(Words:String) ->String{
        
        var msg = "i want say \(Words)"
        return msg
    }
    
    func walk (metr:Int){
        
        for index in 1...metr {
            print("i walk \(index) meter, i must go \(metr-index)meter Farther")
        }
    }
}
var myPerson:person = person()
نکته: توجه داشته باشید در پروژه هایی که در محیط playground کار میکنید هیچوقت عبارت import UIKit را حذف نکنید، چرا که اینکار باعث بروز خطا در هنگام کامپایل دستورات شما میشود،این دستور و کاربرد آنرا نیز در جلسات بعد فراخواهید گرفت.
مرحله‌ی دوم: حال برای دسترسی به متدهای این کلاس و راه انداختن این شخص، باید ابتدا نام شئ ساخته شده را فراخوانی کنیم، سپس با زدن علامت نقطه، به متدهای آن کلاس که قبلا تعریف کرده ایم دسترسی پیدا کنیم، پس به صورت زیر عمل میکنیم:
myPerson.sayHello()
با نوشتن این قطعه کد در زیر دیگر دستورات نوشته شده، ما میتوانیم به متد ()sayHello کلاس person دسترسی داشته باشیم،توجه کنید بعد از ساخت شئ از کلاس،هربار که نام شئ را بنویسید سپس علامت نقطه را نیز در کنار آن بنویسید، تمامی متدهای آن کلاس به صورت زیر نمایش داده خواهند شد:
(برای مشاهده تصویر در اندازه واقعی روی آن کلیک کنید)
AllMethods-on-Object
برای درک بهتر این عکس، عبارت M آبی رنگ کنار هر متد به معنای این میباشد که این لیست، اسامی متدهایی هستند که در این کلاس فوق وجود دارند.عبارات آبی رنگ که در اینجا Void همچنین String را مشاهده میکنید، به مقدار و نوع خروجی هر متد اشاره دارد، در اینجا فقط متدی که دارای مقدار خروجی String میباشد با عبارت void نشان داده نشده، چرا که این متد از نوع (سوم) متدها میباشد،(این نوع متدها خروجی مشخصی را با استفاده از عبارت return به خارج از متد ارسال میکنند) و از قبل نوع خروجی برای آن تدارک دیده شده است( اشاره به نوع string)، ولی متدهای ()sayHello همچنین ()walk دارای خروجی نیستند پس با علامت void نشان داده شده اند، توجه کنید عبارت void به معنای پوچ است. پس از اینها، نامهای متدها را مشاهده میکنید همچنین مقدار ورودی هر متد،که در پرانتز متناظر با آن نوشته شده است(به عنوان مثال متد ()walk دارای مقداری ورودی از نوع int میباشد که در متغیر metr همان متد ذخیره خواهد شد).
پس تا به اینجا متد ()sayHello را فراخوانی کردیم و عبارت چاپی داخل دستور پرینت ،چاپ شد.خروجی به صورت زیر است:
Hello World !
حال متد دیگری را فراخوانی کنیم،مطابق دستور زیر:
myPerson.talk("My Name Is Person, what is your name ?")
دستور بالا متد ()talk را فراخوانی میکند، سپس متن string فوق را نیز به متد ارسال کرده تا خروجی زیر را برای ما به ارمغان بیاورد:
(برای مشاهده تصویر در اندازه واقعی روی آن کلیک کنید)
outPut-talk-Method
سپس با صدا کردن متد ()walk و ارسال مقداری عدد از نوع int به آن،میتوانیم این شخص را به صورت مجازی، راه ببریم، مطابق دستور زیر:
myPerson.walk(5)
پس خروجی در زیر حلقه ی for به صورت زیر میباشد:
(برای مشاهده تصویر در اندازه واقعی روی آن کلیک کنید)

OutPut-for-Walk-Method
پس، در نهایت کدهای نوشته شده به صورت زیر میباشد :
import UIKit
class person {
    
    init(){
        print("New person Object Initialized")
    }
    
    func sayHello(){
        print("Hello World !")
    }
    
    func talk(Words:String) ->String{
        
        var msg = "i want say \(Words)"
        return msg
    }
    
    func walk (metr:Int){
        
        for index in 1...metr {
            print("i walk \(index) meter, i must go \(metr-index)meter Farther")
        }
    }
}
var myPerson:person = person()
myPerson.sayHello()
myPerson.talk("My Name Is Person, what is your name ?")
myPerson.walk(5)
برای مطابقت بهتر دستورات، تصویر زیر محیط کلی پلی گراند را نشان میدهد :
(برای مشاهده تصویر در اندازه واقعی روی آن کلیک کنید)
Complet-OutPut
نکته :دوستان عزیز، اگر در طول آموزش به سوالی برخورد کردید، لطفا برای بهتر شدن آموزشها همچنین برای بهره بردن دیگر دوستان، حتما در بخش نظرات سوال خود را مطرح کنید، و من تلاش خواهم کرد، در اسرع وقت به سوالات شما پاسخ دهم.
با تشکر.