کلاس در مقابل سازه
برخی از مفاهیم اصلی زبان های برنامه نویسی شی گرا (OO) کپسوله سازی، وراثت و چندشکلی هستند. کلاس و ساختار دو سازه/ابزار OO هستند که به برنامه نویسان کمک می کنند تا به این مفاهیم در اکثر زبان های برنامه نویسی خروجی OO دست یابند (جاوا ساختاری ارائه نمی دهد). کلاس ها نمایشی انتزاعی از اشیاء دنیای واقعی هستند. ساختارها بسیار شبیه به کلاس هایی با کاربرد مشابه هستند، اما محدودیت های کمی در مقایسه با کلاس ها دارند. هر دو کلاس و ساختار برای گروه بندی نوع مشابه داده ها با هم استفاده می شوند.
کلاس ها چیست؟
کلاس ها بازنمایی انتزاعی اشیاء دنیای واقعی را به تصویر می کشند، در حالی که روابط نشان می دهد که چگونه هر کلاس با سایر کلاس ها مرتبط است. هم کلاس ها و هم روابط دارای ویژگی هایی به نام ویژگی ها هستند. متدها در کلاس ها رفتار این کلاس ها را نشان می دهند یا تعریف می کنند. متدها و ویژگی های کلاس ها اعضای کلاس نامیده می شوند. به طور معمول، کپسولهسازی با خصوصی کردن ویژگیها به دست میآید، در حالی که روشهای عمومی ایجاد میشود که میتوان برای دسترسی به آن ویژگیها استفاده کرد. یک شیء نمونه یک کلاس است. وراثت به کاربر اجازه می دهد تا کلاس ها (به نام کلاس های فرعی) را از کلاس های دیگر (به نام کلاس های فوق العاده) گسترش دهد. چند شکلی به برنامه نویس اجازه می دهد تا یک شی از یک کلاس را به جای شی ای از کلاس فوق العاده آن جایگزین کند. به طور معمول، اسمهایی که در تعریف مسئله یافت میشوند، مستقیماً به کلاسهایی در برنامه تبدیل میشوند. و به همین ترتیب افعال تبدیل به روش می شوند. عمومی، خصوصی و محافظت شده اصلاح کننده های دسترسی معمولی هستند که برای کلاس ها استفاده می شوند. یک نمودار کلاس کلاس های سیستم ها، روابط بین کلاس ها و ویژگی های آنها را نشان می دهد.
ساختارها چیست؟
همانطور که در بالا ذکر شد، ساختارها بسیار شبیه به کلاس هایی با کاربرد مشابه هستند، اما قابلیت های کمی نسبت به کلاس ها دارند. در واقع، کلاس ها را می توان به عنوان امتداد ساختارها در نظر گرفت. به عنوان مثال، ساختارها مانند کلاس های C++ هستند، اما به طور پیش فرض دارای اعضای عمومی هستند. یک ساختار می تواند توسط کاربر برای نشان دادن یک نوع ترکیبی تعریف شود. مشابه کلاس ها، ساختارها شامل اعضایی هستند که می توانند به انواع مختلفی تعلق داشته باشند. کلمه کلیدی struct برای تعریف ساختار در C و C++ استفاده می شود، در حالی که کلمه کلیدی Structure برای همین در زبان های برنامه نویسی. NET استفاده می شود.
تفاوت بین کلاس ها و ساختارها چیست؟
اگرچه، هر دو کلاس و ساختار ساختارهای مشابهی هستند که در زبان های برنامه نویسی یافت می شوند، اما تفاوت های ظریفی دارند. به طور معمول، کلاس توسعه ساختار است، و بنابراین ساختارها دارای محدودیت های نسبی هستند. برای مثال، ساختارها را میتوان همانند کلاسها در C++ در نظر گرفت، اما اعضا بهطور پیشفرض در کلاسها عمومی نیستند (برخلاف ساختارها).این در واقع به این معنی است که شما می توانید یک کلاس و یک ساختار با ویژگی های دقیقاً یکسان با استفاده از اصلاح کننده های دسترسی مناسب در C++ تعریف کنید. با این حال، در C، ساختارها نمی توانند دارای هیچ تابع یا عملیات بارگذاری شده باشند. کلمات کلیدی class و struct به ترتیب برای تعریف کلاس و ساختار در C++ استفاده می شوند. وقتی صحبت از زبانهای داتنت (C، VB. NET و غیره) میشود، کلاس یک نوع مرجع است، در حالی که ساختار یک نوع مقدار است. و معمولاً از ساختارها برای اشیاء کوچکتر استفاده می شود، اما از کلاس ها برای اشیاء بزرگتر استفاده می شود که برای مدت طولانی تری در حافظه نگهداری می شوند.