SajjadKhati (14-12-19)
درود استاد آرمین
یک جا یک فردی اومده بود گفته بود من یک برنامه با سی شارپ نوشتم و انقدر پول میدم یکی برام تبدیل به شی گرا کنه.
من با آقا سجاد که صحبت کردم گفت که ما هر کدی که در سی شارپ می نویسیم خودش شی گراست و قوانین شی گرایی در اون وجود داره و کلا سی شارپ شی گراست.
حالا سوالم اینه پس منظور طرف چی بوده که برام شی گرا کنید و اتفاقا هم پیشنهاد برای اینکار داده شده بود!
به نظر شما اگه من یک فرم درست می کنم و چند تا کنترل روش قرار میدم و کدها رو می نویسم کلا شی گرایی رو پیاده سازی کردم یا اینکه برنامه نویسی به روش شی گرایی در سی شارپ یک اصولی داره که باید به صورت حرفه ای رعایت بشه؟
خودم با جستجوهایی که کردم به برنامه نویسی سه لایه رسیدم ولی چون هنوز کامل سی شارپ بلد نیستم نتونستم متوجه بشم.
پ.ن: برای پاسخ به سوالاتی که می پرسم عجله ای ندارم چون مفهومیه و هر وقت تونستید جواب بدید. یا هر چند روز یکی رو جواب بدید تا از کار خودتون نمونید. ولی لطفا به زبان ساده و با مثال های خیلی ساده در سی شارپ توضیح بدید اگه نیاز به کد داره و اگه نداره که نیازی نیست.
آخرین ویرایش توسط Speed Racer در تاریخ 11-12-19 انجام شده است
SajjadKhati (14-12-19)
سلام آرشان جان،
شی گرایی یه سبک هستش که زبان هایی مثل سی شارپ از اون پشتیبانی می کنن. سبک (یا پاردایم) به نحوه ی نوشتن کد بر می گرده و نه منطق برنامه و نه معماری اون. در نتیجه اگر سی شارپ از شی گرایی پشتیبانی می کنه، دلیلی نیست که هر کدی داخلش نوشته بشه شی گرا باشه بلکه به این بستگی داره که ما به عنوان برنامه نویس کد رو شی گرا می نویسیم یا خیر.
در سمت مقابل سی شارپ یه زبان سطح بالاست و یه سری کار ها رو واسه ما آسون تر می کنه. مثلا وقتی ما یه فرم با تعدادی کنترل ایجاد کنیم، سی شارپ در پس زمینه کد مربوطه رو ایجاد می کنه و این کد عملا شی گرا هستش. به عبارتی در مواردی که سی شارپ خودش برای ایجاد کد اقدام می کنه، این کد غالبا شی گراست.
در نتیجه گیری کلی در سی شارپ بخشی از کد ها توسط ما ایجاد میشه و برخی توسط خودش. کد هایی که ما می نویسیم بستگی به سلیقه ی ما می تونه شی گرا باشه یا نه و کد های ایجاد شده توسط سی شارپ (مثل کد کنترل های روی فرم یا کد سرویس وب) معمولا شی گرا هستش. در نهایت یه برنامه می تونه ترکیبی از کد های شی گرا و غیر شی گرا باشه.
این که شی گرایی اصولی داره یا نه که مسلما داره و یه کد شی گرا می تونه هم درست و هم نادرست پیاده بشه. یعنی برای شی گرا کردن یه کد تنها یه کد شی گرا وجود نداره بلکه این شی گرایی می تونه اشکال مختلفی داشته باشه. مثلا یه کد شی گرا می تونه رفتار بهینه تری با حافظه داشته باشه نسبت به یه کد شی گرای دیگه با منطق مشابه.
آیا شی گرا کردن الزاما به معنی بهتر کردن برنامه است؟ نه، نیست! مثلا در برنامه نویسی یه بازی رایانه، بخش هایی رو به شکل داده گرا (و نه شی گرا) می نویسن چون رفتار بسیار بهینه تری در مقایسه با کد شی گرا برای به کارگیری حافظه ی نهان پردازنده داره و این سبب میشه میزان تاخیر در بازی کاهش پیدا کنه.
در مورد معماری سه لایه باید عرض کنم که مطابق اسمش یه معماریه و نه یه سبک. معماری یه نقشه ی راه کلی برای طراحی برنامه هستش و هیچ دخالتی در سطح کد نداره. ما می تونیم یه معماری رو شی گرا یا غیر شی گرا و یا با ترکیبی از هر دو پیاده کنیم. گرچه پیاده کردن یه معماری مثل معماری سه لایه بدون شی گرایی خیلی کاری جالبی نیست!
پ.ن.: به امید خدا سعی می کنم جواب باقی سوالاتت رو به زودی بدم.
آرمین برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
'چو ایران نباشد، تن من مباد
Dim Armin As Iranian
If Iran.Enabled = False Then Armin.Enabled = False
SajjadKhati (14-12-19), Speed Racer (14-12-19)
سلام بر یک دانه پسر برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید . خوبی؟برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط Arshan935 برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
ببین ، شما در سی شارپ ، یا باید یه کلاس static تعریف کنی یا اعضای static تعریف کنی و اونها را فراخونی کنی که در این صورت ، اعضای غیر شی گرا خواهی داشت و شی نمیسازی . در واقع ، در این صورت ، از کلمه ی کلیدی new برای شی ساختن استفاده نمیکنی . مثل متد MessageBox.Show (در جلسه ی 41 اعضای استاتیک گفته شد) .
تازه ، استفاده از اعضای استاتیک که شی گرا نیست ، حداقل در پروژه های بجز کنسول (مثل پروژه های ویدوز فرم) در سی شارپ ، معنا نداره . چون در متد Main ، شی ای از کلاس Form1 مون ساخته میشه و ما داخل این شی ، داریم اعضای استاتیک را فراخونی و استفاده میکنیم.
یا باید کلاس یا اعضای غیر static تعریف کنی و ازش استفاده کنی که در این صورت ، قطعا باید از این کلاس ات شی درست کنی .
پس این از قضیه ی شی گرا و غیر شی گرا.
اما اینکه منظور طرف چی بود را دقیقا نمیدونم چون درخواست شو بصورت کلی مطرح کرد و وارد جزئیاتش نشده بود .
قطعا این طور نباید میبود که اعضای و کدهاش را بصورت static نوشته باشه (غیر شی گرا) ، و از طرف مقابلش خواسته باشه که بصورت غیر static (شی گرا) پیاده سازی اش کنن . همچین چیزی ، بعیده . چون کسی که عضو static را بتونه بنویسه ، قطعا میتونه عضو غیر static را هم بنویسه .
احتمال میدم که منظورش این بوده باشه که یا قوانین ارث بری را بصورت دقیق برای کد اش پیاده سازی کنن یا اینکه معماری 3 لایه را پیاده سازی کنن .
احتمالا منظورت از کدها ، پیاده سازی و نوشتن کدهای مربوط به رویدادهای اون کنترل هست .برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط Arshan935 برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
ولی بله . باز هم کدهات بصورت شی گرا هستن . چون کدهایی که مینویسی در کلاس Form1 هست . این کلاس هم چه خودش و چه اعضاش بصورت static نیستن .
همچنین در متد Main ، از این کلاسِ Form1 ، شی ساخته میشه و کلمه ی کلیدیِ this ای که در این کلاس استفاده میکنی ، اشاره گرِ به شی ای هست که در متد Main از این کلاس Form1 ساخته شده .
کلمه ی کلیدی this را در 2 قسمت متفاوت از آموزش ها توضیح داده شد .
شی گرایی ، که اصول زیاد داره . مخصوصا ارث بری اش . باید آموزشش را ببینی (از قسمت 26 تا 60)
برنامه نویسی 3 لایه ، چیز خاصی نیست . کلا میگه پروژه ای که میسازی را در چند کلاسِ کلی ای که هر کدوم ، کار مربوط به خودش را انجام بده را بنویس . یه کلاس ، مربوط به user interface باشه . یه کلاس مربوط به بدنه ی اصلی برنامه که کار محاسبات اون برنامه را انجام میده باشه . یه کلاس هم برای ارتباط برقرار کردن با دیتابیس .برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط Arshan935 برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
به هر کدوم از این کلاس ها ، حالا فرض کن که لایه میگن .
کلا هر برنامه ای ، همین 3 کار اصلی را انجام میده دیگه . قسمتی برای ui داره و قسمتی که کار اصلی اش را انجام بده و قسمتی هم برای ارتباط برقرار کردن با دیتابیس.
البته این ، مفهوم کلی اش بود .
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
فیلم آموزش کامل Autoplay Media Studio
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
ravegoat (17-12-19), Speed Racer (14-12-19)
1 کاربر در حال مشاهده این موضوع. (0 عضو و 1 میهمان)
Bookmarks