PDA

View Full Version : مبتدی: سوال



بـاران
دوشنبه 30 شهریور 1394, 19:57 عصر
سلام دوستان،

می شه گفت برنامه هایی که به شیوه ی ساخت یافته نوشته می شن، خط به خط اجرا می شن، و برنامه های شی گرا اینطور نیستن؟

اگه اجرای خط به خط یا همزمان، ربطی به ساخت یافته یا شی گرا بودن نداره، به چه چیز مربوط می شه؟

سوال دومم اینکه: اینجا نوشته: تفکر شی گرا در ابتدا فقط برای طراحی برنامه استفاده می شد، و بعدا برای برنامه نویسی هم استفاده شد. منظورش از طراحی برنامه چیه؟

بـاران
دوشنبه 30 شهریور 1394, 20:48 عصر
سوال 3) برنامه نویسی شی گرا از منطق قوی و قابلیت اطمینان بالا برخوردار است. منظور از قابلیت اطمینان چیه؟

reza_noei
دوشنبه 30 شهریور 1394, 23:14 عصر
سلام دوستان،

می شه گفت برنامه هایی که به شیوه ی ساخت یافته نوشته می شن، خط به خط اجرا می شن، و برنامه های شی گرا اینطور نیستن؟

اگه اجرای خط به خط یا همزمان، ربطی به ساخت یافته یا شی گرا بودن نداره، به چه چیز مربوط می شه؟

سوال دومم اینکه: اینجا نوشته: تفکر شی گرا در ابتدا فقط برای طراحی برنامه استفاده می شد، و بعدا برای برنامه نویسی هم استفاده شد. منظورش از طراحی برنامه چیه؟


سلام

عملا چون نحوه کارکرد کامپیوتر به شکل امریست یعنی ما یک کد مینویسیم و کامپیوتر به ازای اون کد عملی را برای ما انجام میده اجرای برنامه دستور به دستور و خط به خط تلقی میشود.
آیا میشود تصور کرد که کامپیوتر دستورات را خط به خط اجرا نکند ؟ بله درصورتی که کامپیوتر بتواند تصمیم بگیرد. چیزی که ما بهش میگیم هوش مصنوعی و زبان هایی که مخصوص هوش مصنوعی هستند مثل prolog.
البته میشود در سی هم بگونه ای شروط را قرار داد که شکل خط به خط بوجود نیاید و هم میشود به زبان prolog برنامه ای نوشت که خط به خط اجرا شود.
پس لفظ اجرای خط به خط یا اختیاری (انتخابی)‌ بیشتر یک مفهوم است تا یک واقع.

اگر ابهامی وجود دارد بیان کنید.

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

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

تصور کنید که بخواهیم در یک برنامه ساختیافته مثل سی مشخصات کامل 10 دانشجو 10 استاد و 10 کارمند را از ورودی دریافت کنیم. میتوانید تصور کنید چه کد گنگ و مبهمی حاصل میشود ؟ به ازای هرگونه یک سری توابع بلند و یکسان و گیج کننده بله با وجود شی گرایی ما تنها به 3 کلاس با شرح فعالیت های آن نیاز داریم و شگفت آورست که آن کدهای شلوغ و مبهم به کد هایی تفکیک شده و قابل قهم تبدیل خواهند شد و آن برنامه گنگ به 6 خط کد و تعدادی تعریف خلاصه خواهد شد !
هرچند مواردی همچون ساختارها در زبان هایی مثل سی وجود دارند ولی ویژگی هایی مثل وراثت و دیگر ویژگی ها را که ارزش والایی در طبقه بندی اشیا و توصیف آنها دارند را به ما ارائه نمیدهند.

reza_noei
دوشنبه 30 شهریور 1394, 23:37 عصر
سوال 3) برنامه نویسی شی گرا از منطق قوی و قابلیت اطمینان بالا برخوردار است. منظور از قابلیت اطمینان چیه؟

در سیستمی که در پست قبلی مثال زدم فرض کنید در یک برنامه ساخت یافته بخواهیم همان سه موجودیت دانشجو استاد و کارمند را همزمان در یک تابع (main)‌ مدیریت کنیم. دانشجو ثبت نام دارد نمره دارد انتخاب واحد دارد و .... . برای سایر موجودیت ها هم همین است.

خوب اگر بخواهیم برای هر یک یک تابع ثبت نام بک تابع مشخصات یک تابع حضور و غیاب بنویسیم چه خواهد شد؟‌ عمل اصلی یکی ولی چند پیاده سازی اگر راهی وجود داشت که مثلا یکبار ثبت نام را تعریف کنیم و به بقیه بگوییم ثبت نام اینگونه است چه خواهد شد؟ بله در صورت وجود خطا ما تنها یک تابع را بررسی میکنیم و امکان خطای ما در بررسی توابع بشدت کاهش میابد. پس قابلیت اطمینان بیشتر میشود.

اما منطق قوی :‌
همه ی اجسام وزن دارند همه ی اجسام رنگ دارند همه ی اجسام نام دارند. هر جسمی نسبت به آتش یک واکنش نشان میدهد و ....
منطق شی گرایی به ما امکان طبقه بندی و وراثت را میدهد. آنچه که بارها و بارها در محیط واقعی دیده ایم.
هر جسمی یک سری ویژگی ها دارد پس من یک کلاس جسم با ویژگی های موجود تعریف میکنم آنوقت هر جسم جدید از آن کلاس مشتق میشود گویی جزو خانواده آن میشود و تمام ویژگی ها را به ارث میبرد.
این طبقه بندی تحلیل مسائل را بسیار قوی تر و دقیق تر به جلو حرکت میدهد.