آموزش برنامه نویسی شی گرا در ++C (قسمت1)

سلام به همگی , در این مقاله می خواهیم با شی گرایی در ++C آشنا شویم ولی به دلیل گسترگی مطالب و به منظور یادگیری بهتر در 3 مقاله این بحث را ارایه می کنیم .کلاس (Class) :در برنامه نویسی شی گرا هنگامی که از یک گروه صحبت می کنیم بحث کلاس (Class) مطرح می شود ; مثلا هنگامی که می گوییم دانشجویان بحث کلاس مطرح است زیرا به یک شخص خاص اشاره ندارد و منظور تمامی دانشجوها می باشد. شی (Object) :اگر بخواهیم به یک شخص خاص از کلاس اشاره کنیم آنگاه بحث شی(Object) مطرح می شود ; مثلا وقتی می گوییم خانم احمدی داریم به یک شی از کلاس اشاره می کنیم.صفت(Attribute/Property) :هریک از اشیا کلاس دارای ویژگی های منحصر به فرد است که به آن ها صفت(Property) گفته می شود ; مثلا یک دانشجو دارای نام , نام خانوادگی , نام پدر , تاریخ تولد و ... است که هریک از این ها صفت این شی (دانشجو) به شمار می آیند.متد(Method) :هریک از این اشیا قابلیت انجام کاری را دارند یا می توان بر روی آن عملی را انجام داد که به مجموعه این اعمال متد(Method) گفته می شود ; مثلا هر دانشجو می تواند انتخاب واحد کند , درسی را پاس می کند , درسی را می افتد , ... این ها متد به حساب می آیند.سطوح دسترسی عمومی(Public) و خصوصی(Private) :هر یک از اعضا کلاس در دو سطح دسترسی عمومی (Public) و یا خصوصی (Private) تعریف می شوند. این سطوح دسترسی به امکان/عدم امکان دسترسی به این عناصر در خارج کلاس اشاره دارد. یک عضو عمومی در هر جایی از یک برنامه ++C قابل دسترسی است ; در حالی که یک عضو خصوصی تنها توسط اعضا کلاس قابل دسترسی است و امکان دسترسی به آن خارج از کلاس وجود ندارد.در برنامه نویسی شی گرا , معمولا صفات (متغیرها) بصورت خصوصی (Private) و متدها (توابع) بصورت عمومی (Public) تعریف می شوند. اصطلاح کپسوله سازی (Encapsulation) نیز به همین منظور استفاده می شود ; به این معنی که داده های یک کلاس (صفات) باید از دید سایر بخش های برنامه (خارج کلاس) مخفی بمانند. در عوض چنانچه نیاز به دسترسی به آنها بود , این کار بصورت غیرمستقیم و از طریق توابع عضو کلاس (متدها) انجام می شود.برای درک بهتر این مفهوم به قطعه کد زیر دقت کنید :همان طور که در خط 20.21.22 مشاهده می کنید year.month.day دارای خطا هستند ; دلیل این خطا این است که این 3 صفت خصوصی هستند و اجازه نداریم خارج از کلاس از آن ها استفاده کنیم.برای برطرف کردن این خطا دو روش داریم : 1.استفاده از یک متد دیگر ;2.تابع سازنده(Constructor) .روش 2 راه اصلی می باشد که در ادامه به توضیح آن می پردازیم.قطعه کد مربوط به استفاده از یک متد دیگر(روش 1)تابع سازنده(constructor) :برای مقداردهی به صفات می توانیم از تابع سازنده (Constructor) استفاده کنیم که در بحث شی‌گرایی یک تابع کاملا شناخته شده می باشد.تابع سازنده 3 ویژگی دارد :1.تابع سازنده تابعی هم نام با اسم کلاس است ;2.مقدار برگشتی ندارد یعنی حتی نیاز به void هم نداریم ;3.به صورت اتوماتیک فراخوانی می شود یعنی هنگامی که می خواهیم یک شی از یک کلاس را تعریف کنیم تابع سازنده به صورت اتوماتیک فراخوانی می شود. قطعه کد مربوط به تابع سازندهتابع عضو خصوصی(Private member function) :تابع عضو خصوصی تابعی می باشد که در قسمت Private یک کلاس تعریف می شود ; در واقع تابع عضو خصوصی تابعی است که ما نمی توانیم در برنامه اصلی آن را فراخوانی کنیم و فقط برای کمک به متد ها از آن استفاده می شود.در اینجا بحث (Information hiding) که یکی از مزایای برنامه نویسی شی گرا است مطرح می شود یعنی ما کاری را انجام می دهیم بدون اشاره به آن.اعضا ایستا(Static members) :گاهی بدون اینکه هیچ شی ای از کلاس موجود باشد , می خواهیم به اعضا کلاس دسترسی داشته باشیم ; در این حالت آن عضو را بصورت عضو ایستا (Static) تعریف می کنیم. تاکنون دسترسی به اعضا کلاس (متدها) از طریق یک شی موجود انجام می شد. عضو ایستا یک عضو منحصر بفرد و مشترک است که بدون وابستگی به شی قابل دسترسی است.در قطعه کد زیر به تعریف عضو ایستا می پردازیم نکته ی قابل توجه در این قسمت مکان مقدار دهی می باشد که نه در داخل کلاس و نه در داخل برنامه اصلی می باشد.در مقالات بعدی شی گرایی در ++C را کامل توضیح می دهیم.امیدوارم که مطلب مفیدی بوده باشه , ممنون میشم نظراتتون رو برام کامنت کنید.