برنامه نویسی شیءگرا (Swift OOP)
«OOP سوئیفت» یعنی ساخت برنامه با «اشیا (Object)». هر شیء داده دارد و رفتار دارد. درک تفاوت «نوع مقداری (Value)» و «نوع ارجاعی (Reference)» خیلی مهم است. این تفاوت روی کپی و تغییر اثر می گذارد.
OOP در سوئیفت چیست؟
سوئیفت از کلاس و پروتکل برای OOP استفاده می کند. شیء مجموعه ای از «ویژگی ها (Property)» و «متدها (Method)» است. بنابراین، با کلاس ها مدل می سازی و رفتار را تعریف می کنی.
Struct در برابر Class
Struct یک «نوع مقداری» است. یعنی هنگام انتساب، کپی می شود. Class یک «نوع ارجاعی» است. یعنی چند متغیر می توانند به همان نمونه اشاره کنند.
struct Point {
var x: Int;
var y: Int;
}
var p1 = Point(x: 1, y: 2);
var p2 = p1;
p2.x = 10;
print(p1.x);
print(p2.x);
class Counter {
var value = 0;
}
let c1 = Counter();
let c2 = c1;
c2.value = 5;
print(c1.value);
نکته: در Struct تغییر روی کپی است؛ در Class تغییر روی همان نمونه دیده می شود.
مسیر ادامه مطالعه
برای بسته بندی سبک مقادیر، تاپل ها و Type Alias را ببین. برای دسته بندی حالت ها، enumها مناسب اند. همچنین مرجع OOP سوئیفت را کنار دستت نگه دار.
گام های تمرینی
- یک Struct ساده دانش آموز بساز.
- کپی Struct را تغییر بده و خروجی را مقایسه کن.
- یک Class شمارنده بساز و دو ارجاع بگیر.
- روی یکی تغییر بده و نتیجه دومی را ببین.
هشدار: رفتار کپی و ارجاع را قاطی نکن. اثرش روی باگ ها زیاد است.
جمع بندی سریع
- OOP سوئیفت با کلاس و پروتکل کار می کند.
- Struct مقداری است و کپی می شود.
- Class ارجاعی است و به همان نمونه اشاره می کند.
- تفاوت کپی و ارجاع روی تغییرات اثر دارد.
- نمونه کد را در ادیتور اجرا کن.