من اینجور متوجه شدم که Class برای استفاده از در مواقعی هست که امکاناتی فراتر از یک فرم احتیاج داریم استفاده میشه و برای اینکه وقت تلف نشه آماده میکنیم تا موقعی که لازم داشته باشیم استفاده میکنیم
حالا چجوری باید فراخوانیش کنیم؟
باید توی ریشه برناممون باشه تا آدرس دهی کنیم؟
مثالی که می زنید در مورد فرم و کاربردش درسته، اما کلاس و کاربرد کلاس رو به فرم و فرم سازی محدود نکنید. اگر بخواهید مفهوم کلاس رو به مفهوم فرم ارتباط بدید کلا از موضوع
دور می شوید.
ما یک مفهومی به نام شیء داریم و یک مفهومی به نام تعریف-ساختار شیء که در کل همون کلاس ئه. پس دو مفهوم داریم، شیء و کلاس.
مثلا شما یک کلاس طراحی می کنید به نام انسان، آدمیزاد یا همون Person. این کلاس انسان ای که شما می سازید اونقدر قابلیت و مشخصات داره که شما در تعریف
و کد نویسی کلاس تون مشخص کنید، مثلا انسان اسم نداره، مگر اینکه برایش یک مشخصه Name در نظر بگیرید. اگر برایش مشخصه Name نسازید
می توانید 100 تا آدم بسازید اما هیچکدوم اسمی برای خودشان نخواهند داشت. کلاس انسان ای که شما می سازید وزن نداره، مگر اینکه شما برایش
مشخصه ای به نام Weight در نظر بگیرید. برای سن هم همینطور. یک مشخصه ای به نام Age می خواد. حالا تاریخ تولدش هم ثبت بشه که بهتر.
نمی تونه حرف بزنه، مگر اینکه برایش متدی به نام Speak طراحی کنید. نمی تونه درد رو احساس کنه، مگر اینکه برایش رخدادی به نام OnPain بنویسید.
تو آتش نمی سوزه مگر اینکه برایش متدی به نام Burn بنویسید. اگر دردش بیاد هیچ حرفی نمی زنه، یعنی می سوزه اما صداش در نمیاد، مگر اینکه تو
رخداد OnPain اش یک عمل Speak اضافه کنید. سن اش می تونه به هزار سال برسه و نمیره مگر اینکه خودتون مفهومی به نام مردن و رخدادی برای زمان مردن
طراحی کنید. یعنی این کلاس همونقدر وجود داره که شما در کلاس اش برایش کد بنویسید.
حالا فرضا شما این کلاس انسان رو کد نویسی کردید. حالا می توانید به هر تعدادی که می خواهید آدم بسازید، محدودیت خاصی نداره،
می توانید برایشان اسم و وزن متفاوت در نظر بگیرید، وزن شون رو به مرور زمان بالا ببرید و چاق اش کنید، یا برعکس کم کنید و لاغر اش کنید.
می توانید سه شیء انسان بسازید و کنار هم قرار بدید که حرف بزنند، 10 شیء انسان رو با هم بسوزانید که فریاد بکشند.
تا اینجا شد کلاس انسان که همه اشیاء این انسان قابلیت های یکسانی دارند. اما واکنش ها و خصوصیات مرد ها و زن ها باید فرق کنه،
پس دو تا کلاس Male و Female می نویسید برای انسان مذکر و مونث. هر دو کلاس از انسان ارث بری می کنند، یعنی هر دو شون
ذاتا انسان اند، با همه قابلیت های انسان، مگر اینکه چیزی در کلاس شون تغییر بدهید.
فرضا برای مرد مشخصه نوع و رنگ ریش و برای زن قابلیت حامله شدن رو اضافه می کنید. یعنی دو کلاس جدید می سازید تا
قابلیت یا مفهومی به کلاس انسان اضافه کنید یا تغییر بدهید.
این همون مفهوم کلاس ئه. رضا و مریم و بابک شیء ای از کلاس انسان اند، نوع شون انسان ئه، اما هر کدوم مقادیر متفاوتی برای مشخصه هاشون دارند،
فرضا مقدار مشخصه های اسم و وزن و جنسیت شون فرق می کنه. مفهومی به نام رنگ پوست ندارند، چرا؟ چون برای کلاس شون همچین مشخصه ای
اضافه نکرده اید، این مشخصه رنگ پوست باید در کلاس انسان کد نویسی بشه.
کلاس می تونه هر قسمت و جایی تعریف و پیاده سازی بشه، اگر در کد تون محدود اش نکنید، شیء اش هم می تونه هر جایی ایجاد بشه،
محدودیت مهمی مثل بحث ریشه برنامه نداره.