مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

معراج رزازان

عضویت از 1398/12/08

آموزش شی گرایی

  • شنبه 10 اسفند 1398
  • 17:54
تشکر میکنم

سلام. 

من تازه حدود یک ماه هست که برنامه نویسی شی گرا C# رو شروع کردم و الان میدونم که شی گرایی به 3 دسته تقسیم میشه: 1- کپسوله سازی 2- ارث بری 3- چند ریختی ها

ولی چند تا سوال برام بوجود اومده و ممنون میشم اگه جواب بدید:

1- کپسوله سازی یعنی همون 5 سطح دسترسی هایی که هستن رو شامل میشه یا بجز اون 5 تا مطلب دیگه ای هم داره؟(یعنی مثلا کپسوله سازی یعنی اینکه من سطح دسترسی رو بگم و تمام یا اینکه به جز اون 5 تا سطح دسترسی چیزی دیگه ای هم داره؟)

2- فرق بین static و void چی هست دقیقا؟

3- نمیدونم چرا هر مطلبی یا هر ویدیو یی که نگاه میکنم اصلا نمیتونم چند ریختی ها رو یاد بگیرم (میشه اگه میتونید یه توضیح ساده ازش بدین یا اگه یک سایت یا فیلم آموزش خوب برای چند ریختی ها دارید معرفی کنید ممنون.)

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • یکشنبه 11 اسفند 1398
  • 08:46

سلام خدا و ما بر معراج و معراج رفتگان

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

1- کپسوله سازی  بطور کلی در مورد مخفی سازی صحبت می کند و یکی از اصول مخفی سازی کنترل دسترسی است! 

public,private,protected,internal,protected internal,

2- آقا خیلی خیلی فرق دارن! اصلا به هم مربوط نمیشن!!!!! استاتیک یعنی کلاسی که دیگر نیازی به ساخت شی از آن نیست و بطور مستقیم در حافظه بارگذاری می شود اما void یعنی متدی که مقدار بازگشتی ندارد!!! اینها اصلا به هم مربوط نمی شوند که حالا حرف از فرق یا شباهتشون بزنیم!! مثل اینکه بگیم کت و شلوار هاکوپیان خوشمزه تره یا لامبورگینی 2020؟!؟!؟

3- بحث چندریختی را بطور خلاصه می گم!!! 

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

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

کاربر سایت

معراج رزازان

عضویت از 1398/12/08

  • یکشنبه 11 اسفند 1398
  • 14:22

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

الان شما در مورد دوم گفتید که  "   void مقدار باز گشتی نداره  " میشه لطفا این جمله رو برام توضیح بدید چون من از هر کسی که میپرسم که این جمله رو برام توضیح بده نمیفهمم منظور شون رو...

کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • دوشنبه 12 اسفند 1398
  • 08:05

سلام مجدد

و اما Void...

بعنوان مثال شما یک متد داری بنام Add  که دو پارامتر ورودی a و  b  را دریافت کرده و با هم جمع می کند و مقدار حاصل جمع را بر می گرداند. یعن یاین متد مثلا مقدار int  را بعنوان خروجی بر می گرداند. 

public int Add(int a , int b)

اما مثلا ممکن است شما یک متدی داشته باشی برای ارسال ایمیل. شما با این متد فقط یک ایمیل را ارسال می کنی و نیازی نداری مقداری بازگشت بدهی. متد ایمیل را برایخ ودش ارسال می کند و هیچ پاسخی را هم نیاز به بازگرداندن ندارد. این متد از نوع void  خواهد بود

public void Email(string address)

باز اگر مبهم و گنگ بود بگو تا توضیح بیشتری بدم!

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)