PDA

View Full Version : سوال: چرا سی شی گرا نیست؟



ali-iman
شنبه 05 مهر 1399, 21:25 عصر
سلام . در زبان سی میتوان از ساختار ها استفاده کرد و ساختار ها تفاوت چندانی با کلاس ها ندارند و میتونند به جای کلاس استفاده بشن پس چرا میگن سی شی گرا نیست؟

the king
شنبه 05 مهر 1399, 22:46 عصر
سلام . در زبان سی میتوان از ساختار ها استفاده کرد و ساختار ها تفاوت چندانی با کلاس ها ندارند و میتونند به جای کلاس استفاده بشن پس چرا میگن سی شی گرا نیست؟

ساختار های داده ای با کلاس ها تفاوت های اساسی دارند، در کلاس، ساختار داده و داده و کد در کنار هم تشکیل یک موجودیت رو میده، این موجودیت هم صرفا ترکیب چند مورد نیست، ویژگی های برنامه نویسی شیء گرا در این کلاس و اشیاء اش قابل پیاده سازی است.
اما در ساختار داده ای اصلا کدی وجود نداره، علاوه بر این اصول شیء گرایی هم در C و این ساختار داده ای قابل توصیف نیست.

کلا در ساختار های داده ای که زبان های روال گرا (رویه ای) ارائه می کنند، مفاهیم برنامه نویسی شیء گرا قابل پیاده سازی نیست.
اگر بخواهم مثال بزنم، در C وراثت معنی نداره، پنهان سازی نداره، انتزاع نداره و ... اینها چیزهایی است که در برنامه نویسی شیء گرا باید باشه، جزو اصول اولیه شیء گرایی است.
وقتی در زبانی مبانی شیء گرایی قابل پیاده سازی نباشه طبعا زبان شی گرایی هم نیست.

اگر شما معادل یک کد که در یک زبان شیء گرا نوشته شده رو در یک زبان روال گرا بنویسید، صرفا یک مساله رو با الگوی برنامه نویسی متفاوتی حل کرده اید.
به این معنی نیست که چون این کد همون مساله رو حل کرد پس ویژگی های شیء گرایی رو داره.