PDA

View Full Version : سوال: سوال در مورد برنامه نویسی شی گرا



Alamat Soal
سه شنبه 19 آذر 1387, 14:58 عصر
سلام. یه سری سوال برام پیش اومده در مورد برنامه نویسی شی گرا. برنامه نویسیم بد نیست. در حد قابل قبول هست و الان با برنامه اش مشکل ندارم.
سوالم اینه که به شما مثلا میگن یه دستگاه 2معادله دو مجهول داری. حالا توضیح بدین (دقت کنین توضیح خواسته به صورت تشریحی نه برنامه نویسی) این برنامه رو به سه روش شی گرایی (ایجاد کلاس) ساخت یافته و ماژولار چه جوری میشه نوشت؟
اصلا فرق ساخت یافته با شی گرا چیه؟
این که می گن کلاس رو با struct تعریف کن یا به طور عادی تعریف کن یعنی چی؟
ممنون میشم جواب بدین؟:لبخندساده:

Nima_NF
سه شنبه 19 آذر 1387, 17:07 عصر
Modular یعنی اینکه برنامه شما به قسمت های مختلف تبدیل می شود (یا به قولی به پیمانه هایی) که در حالت عادی مثلا اگر در بخش تابعی را تعریف می کنید در کل برنامه قابل دسترسی نیست بلکه ابتدا باید تعریف کنید که از کدام قسمت می خواهید استقفاده کنید و سپس توابع تعریف شده قایل استفاده اند.
در C هر چند که این کار ذاتا وجود ندارد، اما وقتی تعریف در یک فایل (.h) و خود پیاده سازی تابع در فایل دیگر باشد می گویند modular .
در ++C نیز از namespace استفاده می کنند، به این شکل هر قسمتی می تواند جداگانه برای خودش حوزه ای داشته باشد و توابعش تعریف شوند، حتی اگر عناوین تکراری باشند.

شئی گرا هم که همان برنامه نویسی است که در آن توابع در دسته هایی قرار داده می شوند که هر جز و یا کل آن می تواند حفاظت شده، خصوصی و یا عمومی باشد تا به این شکل در دسترس کل برنامه باشد یا نباشد. و با قابلیت های ارثبری بتوان حتی بدون دانستن کل پیاده سازی آن، class را گسترش داد.

struct در ++C می تواند همانند class تعریف شود با تفاوت های اندکی، در همین فروم جستجو کنید قبلا مثال های زده شده است.

huni_1989
شنبه 23 آذر 1387, 07:27 صبح
سلام
فکر کردم یه یه سری توضیحاتی در رابطه با برنامه نویسی شی گرا بدم بد نباشه.
برنامه نویسی شی گرا یا همون تجرید داده ها، همون طوری که از اسمش پیداست برای مجرد کردن انواع داده ها استفاده میشه. در اصل در برنامه نویسی ساخت یافته، مهم روند برنامه نویسی شما هست اما در برنامه نویسی شی گرا مهم داده ها هستند یعنی مهم نیست به چه طریقی به جواب می رسی، این مهمه که داده های شما همیشه به جواب برسند. جواب مهمه نه راه حل!
امیدوارم کمکی بهتون کرده باشم.
خدا حافظ

cups_of_java
یک شنبه 24 آذر 1387, 16:35 عصر
سلام
فکر کردم یه یه سری توضیحاتی در رابطه با برنامه نویسی شی گرا بدم بد نباشه.
برنامه نویسی شی گرا یا همون تجرید داده ها، همون طوری که از اسمش پیداست برای مجرد کردن انواع داده ها استفاده میشه. در اصل در برنامه نویسی ساخت یافته، مهم روند برنامه نویسی شما هست اما در برنامه نویسی شی گرا مهم داده ها هستند یعنی مهم نیست به چه طریقی به جواب می رسی، این مهمه که داده های شما همیشه به جواب برسند. جواب مهمه نه راه حل!
امیدوارم کمکی بهتون کرده باشم.
خدا حافظ

این جواب خیلی علمی و درست نیست. شی گرایی سطح قوی تری از مجرد سازی رو نشون می ده اما مجرد سازی داده نه! مجرد سازی داده تو ساختیافته هم وجود داشته.
شی گرایی داده و عملیات رو که در ساختیافته از هم جدا بودن رو به هم ربط داده. هر شی هم داده داره هم عملیات.
شی گرایی به تفکرات ما نسبت به دنیای واقع بیشتر شبیهه تا ساختیافته.

شیگرایی این نیست که چند تا کلاس بنویسی... برنامه شی گرا اونیه که از مفاهیم و تکنیک های شیگرا برای بدست آوردن قابلیت های بیشتر استفاده درست بکنه.

huni_1989
دوشنبه 25 آذر 1387, 18:55 عصر
این جواب خیلی علمی و درست نیست. شی گرایی سطح قوی تری از مجرد سازی رو نشون می ده اما مجرد سازی داده نه! مجرد سازی داده تو ساختیافته هم وجود داشته.
شی گرایی داده و عملیات رو که در ساختیافته از هم جدا بودن رو به هم ربط داده. هر شی هم داده داره هم عملیات.
شی گرایی به تفکرات ما نسبت به دنیای واقع بیشتر شبیهه تا ساختیافته.

شیگرایی این نیست که چند تا کلاس بنویسی... برنامه شی گرا اونیه که از مفاهیم و تکنیک های شیگرا برای بدست آوردن قابلیت های بیشتر استفاده درست بکنه.

سلام
جواب شما درسته ولی ناقض حرف من نیست!
شاید توضیح بیشتری بدم بد نباشه،
توی برنامه نویسی شی گرا، شما ممکنه اصلا اطلاعی در باره ی نحوه ی کار توابع درون کلاسی نداشته باشین که معمولا هم همینطوره، پس برای شما جوابی که بدست میاد مهمه نه روش حل! شما برنامه نویسی ساخت یافته رو دربرابر برنامه نویسی شی گرا قرار دادید در حالی که این دوتا مکمل همدیگه هستند. شاید منظور شما از برنامه نویسی ساخت یافته برنامه نویسی عملگرا هست چون برنامه نویسی شی گرا خودش شاما برنامه نویسی ساخت یافته هم هست.
برای توضیح بیشتر شما رو ارجاع میدم به کتاب : Java نوشته ی دیتل. توی این کتاب می تونید مفهوم و هدف برنامه نویسی شی گرا رو از نظر سازندگانش متوجه بشید.
از پرحرفی خودم معذرت می خوام.
خدانگه دار

cups_of_java
سه شنبه 26 آذر 1387, 15:44 عصر
سلام
جواب شما درسته ولی ناقض حرف من نیست!
شاید توضیح بیشتری بدم بد نباشه،
توی برنامه نویسی شی گرا، شما ممکنه اصلا اطلاعی در باره ی نحوه ی کار توابع درون کلاسی نداشته باشین که معمولا هم همینطوره، پس برای شما جوابی که بدست میاد مهمه نه روش حل! شما برنامه نویسی ساخت یافته رو دربرابر برنامه نویسی شی گرا قرار دادید در حالی که این دوتا مکمل همدیگه هستند. شاید منظور شما از برنامه نویسی ساخت یافته برنامه نویسی عملگرا هست چون برنامه نویسی شی گرا خودش شاما برنامه نویسی ساخت یافته هم هست.
برای توضیح بیشتر شما رو ارجاع میدم به کتاب : Java نوشته ی دیتل. توی این کتاب می تونید مفهوم و هدف برنامه نویسی شی گرا رو از نظر سازندگانش متوجه بشید.
از پرحرفی خودم معذرت می خوام.
خدانگه دار

huni_1989 جان،
مرسی از پی گیریت اما اگه با لغات نخوایم بازی کنیم حرف های شما، دقت علمی در مورد شی گرایی نداره و فلسفه شی گرایی رو نمی رسونه. شی گرایی یک سبک فکر کردن (و به طبع اون طراحی و برنامه نویسی) هستش که بعد از رویکرد ساخت یافته اومد. به نوعی تکامل یافته روش ساختیافته است. این ها طرز فکر هستند. به هیچ وجه ایندو مکمل نیستند و به هیچ وجه جواب در مقابل روش حل ملاک نیست! اگه کسی چنین دیدی به شما انتقال داده، اشتباه کرده، اگه با مطالعه این دیدو پیدا کردین، کوتاهی از خودتون بوده! کتاب دایتل منبع خوبی برای یادگیری فلسفه شی گرایی نیست اما تو همون کتاب هم این دیدی که شما می گین رو نظر نمی تونه داشته باشه.

"شما ممکنه اصلا اطلاعی در باره ی نحوه ی کار توابع درون کلاسی نداشته باشین": از این حرف احتمالن منظورت این بوده که پیاده سازی پنهانه و ...؟ درسته؟ اگه منظورت این بوده باشه به درستی بیانش نکردی.