eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
119 دنبال‌کننده
168 عکس
38 ویدیو
376 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
الگوهای طراحی یا Design Patterns، راه‌حل‌های قابل تکرار و اثبات‌شده‌ای برای مشکلات رایج در طراحی نرم‌افزار هستند. این الگوها به شما کمک می‌کنند تا کدهای تمیزتر، قابل نگهداری‌تر و قابل فهم‌تری بنویسید. الگوهای طراحی به سه دسته کلی تقسیم می‌شوند: 1- الگوهای طراحی ایجادی (Creational Patterns): این الگوها به ایجاد اشیاء به شیوه‌ای که مناسب‌ترین و بهینه‌ترین روش باشد، کمک می‌کنند. مثال‌هایی از این الگوها شامل Singleton، Factory Method و Abstract Factory هستند. 2- الگوهای طراحی ساختاری (Structural Patterns): این الگوها به ترکیب کلاس‌ها و اشیاء برای تشکیل ساختارهای بزرگ‌تر و پیچیده‌تر کمک می‌کنند. مثال‌هایی از این الگوها شامل Adapter، Composite و Decorator هستند. 3- الگوهای طراحی رفتاری (Behavioral Patterns): این الگوها به تعاملات و مسئولیت‌های بین اشیاء کمک می‌کنند. مثال‌هایی از این الگوها شامل Observer، Strategy و Command هستند. استفاده از الگوهای طراحی می‌تواند به شما در حل مشکلات متداول در برنامه‌نویسی شیءگرا کمک کند و باعث افزایش کیفیت و قابلیت نگهداری نرم‌افزار شود. ادامه مطالب در این سایت https://developersho.com/blog/what-is-design-pattern
تست واحد یا Unit Testing یک مرحله از تست نرم‌افزار است که در آن بخش‌های کوچک و مجزا از یک برنامه (که به آن‌ها Unit یا واحد گفته می‌شود) به صورت جداگانه تست می‌شوند. هدف از Unit Testing این است که اطمینان حاصل شود که هر بخش کوچک از برنامه به درستی و مطابق با انتظارات عمل می‌کند. مزایای Unit Testing- کاهش باگ‌ها: با تست کردن هر واحد به صورت جداگانه، می‌توان باگ‌ها را در مراحل اولیه توسعه شناسایی و رفع کرد. - کد تمیزتر: نوشتن تست‌های واحد به شما کمک می‌کند تا کدهای خود را بهینه‌تر و قابل نگهداری‌تر کنید. - مستندسازی کد: تست‌های واحد به عنوان مستندات زنده برای کدهای شما عمل می‌کنند و نشان می‌دهند که هر بخش از کد چه کاری انجام می‌دهد. - تسهیل تغییرات: با داشتن تست‌های واحد، می‌توانید با اطمینان بیشتری تغییرات در کدهای خود ایجاد کنید، زیرا می‌دانید که تست‌ها به شما کمک می‌کنند تا مشکلات احتمالی را شناسایی کنید. نحوه انجام Unit Testingتست‌های واحد می‌توانند به صورت دستی یا خودکار انجام شوند، اما بیشتر مواقع از روش خودکار استفاده می‌شود. در روش خودکار، برنامه‌نویس کدهای تست را می‌نویسد و آن‌ها را به پروژه اضافه می‌کند. این کدهای تست به صورت خودکار اجرا می‌شوند و نتایج آن‌ها نشان می‌دهد که آیا کدهای اصلی به درستی کار می‌کنند یا خیر. ابزارهای محبوب برای Unit Testing - xUnit: یک فریم‌ورک محبوب برای تست واحد در زبان‌های مختلف برنامه‌نویسی. - NUnit: یک فریم‌ورک تست واحد برای زبان سی‌شارپ. - JUnit: یک فریم‌ورک تست واحد برای زبان جاوا.
ویژگی‌های پیشرفته سی‌شارپ به شما کمک می‌کنند تا کدهای بهینه‌تر، کارآمدتر و قابل نگهداری‌تری بنویسید. در اینجا چند نمونه از این ویژگی‌ها را معرفی می‌کنم: - Async/Await: این ویژگی‌ها به شما اجازه می‌دهند تا برنامه‌های غیرهمزمان بنویسید که می‌توانند به طور همزمان چندین کار را انجام دهند بدون اینکه رابط کاربری قفل شود. - LINQ (Language Integrated Query): LINQ به شما اجازه می‌دهد تا داده‌ها را از منابع مختلف مانند پایگاه داده‌ها، مجموعه‌ها و XML به صورت یکپارچه و با استفاده از سینتکس مشابه SQL جستجو و دستکاری کنید. - Delegates and Events: Delegates به شما اجازه می‌دهند تا متدها را به عنوان پارامتر به متدهای دیگر ارسال کنید. Events نیز برای مدیریت رویدادها و تعاملات بین اشیاء استفاده می‌شوند. - Generics: Generics به شما اجازه می‌دهند تا کلاس‌ها و متدهایی بنویسید که با انواع مختلف داده‌ها کار کنند بدون اینکه نیاز به تکرار کد باشد. - Reflection: Reflection به شما اجازه می‌دهد تا در زمان اجرا اطلاعاتی درباره انواع و اعضای آن‌ها به دست آورید و حتی آن‌ها را تغییر دهید. - Span and Memory: این ویژگی‌ها به شما کمک می‌کنند تا با داده‌های حافظه به صورت کارآمدتری کار کنید و از تخصیص‌های غیرضروری حافظه جلوگیری کنید. این ویژگی‌ها به شما کمک می‌کنند تا برنامه‌های پیچیده‌تر و بهینه‌تری بنویسید.
اکستنشن متد (Extension Method) در سی‌شارپ یک روش برای اضافه کردن متدهای جدید به نوع‌های موجود بدون نیاز به ایجاد یک کلاس مشتق شده یا تغییر در کد اصلی آن نوع است. این متدها به شما اجازه می‌دهند تا قابلیت‌های جدیدی را به کلاس‌ها اضافه کنید، بدون اینکه نیاز به دستکاری در ساختار اصلی آن‌ها داشته باشید. برای تعریف یک اکستنشن متد، باید یک کلاس استاتیک ایجاد کنید و متدهای استاتیک داخل آن کلاس قرار دهید. اولین پارامتر این متدها باید با کلمه کلیدی this و نوعی که می‌خواهید اکستنشن متد به آن اضافه شود، مشخص شود. به عنوان مثال: public static class StringExtensions { public static bool IsPalindrome(this string str) { int len = str.Length; for (int i = 0; i < len / 2; i++) { if (str[i] != str[len - i - 1]) { return false; } } return true; } } در این مثال، متد IsPalindrome به نوع string اضافه شده است و می‌توان آن را به صورت زیر استفاده کرد: string word = "level"; bool result = word.IsPalindrome(); // نتیجه true خواهد بود
یک مثال دیگر از اکستنشن متد (Extension Method) کلاس MyClass using System; using System.Globalization; namespace ExtensionMethod_Example { public static class MyClass { // هم کلاس static باشد و هم متد .کلاس های static تمام اعضا باید static باشند // کلمه static مجبور نشوم یک نمونه جدید بسازم public static string Tooman(int value) { return value.ToString("#,0 Tooman"); } public static string ToRial(this int value) // کلمه کلیدی this متد را به اکستنشن متد (Extension Method) تبدیل می کند { return value.ToString("#,0 Tooman"); } public static string ToShamsi(this DateTime value) { PersianCalendar pc = new PersianCalendar(); return pc.GetYear(value) + "/" + pc.GetMonth(value).ToString("00") + "/" + pc.GetDayOfMonth(value).ToString("00"); } } } کلاس Program using System; namespace ExtensionMethod_Example { internal class Program { static void Main(string[] args) { int Amount = 25000; Console.WriteLine(Amount.ToString("#,0 Rial")); // کار برد tostring می توانید فرمت نوع نوشتاری را می دهد که #,0 سه رقم سه رقم جدا می کند و در آخر ریال را بنویسید Console.WriteLine(MyClass.Tooman(Amount)); // برای اینکه کد تکراری ننویسیم از متد استفاده می کنیم Console.WriteLine(MyClass.Tooman(741258)); Console.WriteLine(Amount.ToRial()); //متد toRial به عنوان یک اکستنشن متد به type int اضافه شد. ایشون یک متد سربار گزاری شده است Console.WriteLine(222444.ToRial()); Console.WriteLine(DateTime.Now.ToShamsi()); Console.ReadKey(); } } }
در سی‌شارپ، متد ToString() برای تبدیل انواع داده‌ها به رشته استفاده می‌شود. این متد به شما امکان می‌دهد تا داده‌ها را به فرمت‌های مختلف رشته‌ای تبدیل کنید. در اینجا چند مثال از استفاده‌های مختلف ToString() آورده شده است: - تبدیل اعداد به رشته: int number = 123; string numberString = number.ToString(); - تبدیل تاریخ به رشته با فرمت خاص: DateTime date = DateTime.Now; string dateString = date.ToString("yyyy-MM-dd"); - تبدیل اعداد اعشاری به رشته با فرمت خاص: double value = 123.456; string valueString = value.ToString("F2"); // خروجی: "123.46" - تبدیل بولین به رشته: bool flag = true; string flagString = flag.ToString(); // خروجی: "True" این متد به شما امکان می‌دهد تا داده‌ها را به فرمت‌های مختلفی تبدیل کنید که برای نمایش، ثبت لاگ، و ذخیره‌سازی داده‌ها بسیار مفید است.
در اینجا چند نمونه دیگر از استفاده‌های متد ToString() در سی‌شارپ آورده شده است: - تبدیل اعداد به رشته با فرمت پولی: decimal price = 1234.56m; string priceString = price.ToString("C"); // خروجی: "$1,234.56" (بسته به تنظیمات محلی) - تبدیل اعداد به رشته با فرمت درصدی: double percentage = 0.876; string percentageString = percentage.ToString("P"); // خروجی: "87.60%" - تبدیل اعداد به رشته با فرمت علمی: double scientificValue = 1234.56; string scientificString = scientificValue.ToString("E2"); // خروجی: "1.23E+03" - تبدیل زمان به رشته با فرمت خاص: TimeSpan time = new TimeSpan(1, 2, 3); string timeString = time.ToString(@"hh\:mm\:ss"); // خروجی: "01:02:03" - تبدیل اعداد به رشته با فرمت هگزادسیمال: int hexValue = 255; string hexString = hexValue.ToString("X"); // خروجی: "FF" - تبدیل اعداد به رشته با فرمت سفارشی: double customValue = 1234.5678; string customString = customValue.ToString("0.0000"); // خروجی: "1234.5678" این نمونه‌ها نشان می‌دهند که چگونه می‌توانید از متد ToString() برای تبدیل انواع داده‌ها به رشته با فرمت‌های مختلف استفاده کنید.
برای جدا کردن اعداد به صورت سه رقم سه رقم در سی‌شارپ، می‌توانید از متد ToString() با فرمت‌های خاص استفاده کنید. در اینجا چند مثال آورده شده است: - جدا کردن اعداد صحیح: int number = 123456789; string formattedNumber = number.ToString("N0"); // خروجی: "123,456,789" - جدا کردن اعداد اعشاری: double value = 1234567.89; string formattedValue = value.ToString("N2"); // خروجی: "1,234,567.89" - جدا کردن اعداد در تکست‌باکس: اگر می‌خواهید عدد وارد شده در یک تکست‌باکس به صورت سه رقم سه رقم جدا شود، می‌توانید از رویداد Leave استفاده کنید: private void textBox1_Leave(object sender, EventArgs e) { if (int.TryParse(textBox1.Text, out int number)) { textBox1.Text = number.ToString("N0"); } } این کدها به شما کمک می‌کنند تا اعداد را به صورت سه رقم سه رقم جدا کنید و نمایش دهید.
در سی‌شارپ، کلمه کلیدی virtual به شما اجازه می‌دهد تا یک متد یا property را به صورت مجازی تعریف کنید. این به این معناست که کلاس‌های مشتق‌شده می‌توانند این متد یا property را بازنویسی (override) کنند و رفتار خود را پیاده‌سازی کنند. به عنوان مثال، فرض کنید یک کلاس پایه به نام Animal دارید که یک متد مجازی به نام MakeSound دارد: public class Animal { public virtual void MakeSound() { Console.WriteLine("Some generic animal sound"); } } سپس می‌توانید یک کلاس مشتق‌شده به نام Dog داشته باشید که این متد را بازنویسی می‌کند: public class Dog : Animal { public override void MakeSound() { Console.WriteLine("Bark"); } } در این مثال، وقتی یک شیء از نوع Dog ایجاد می‌کنید و متد MakeSound را فراخوانی می‌کنید، خروجی "Bark" خواهد بود، در حالی که اگر از کلاس پایه Animal استفاده کنید، خروجی "Some generic animal sound" خواهد بود.
در سی‌شارپ، کلمه کلیدی base برای دسترسی به اعضای کلاس پایه از داخل یک کلاس مشتق‌شده استفاده می‌شود. این کلمه کلیدی به شما اجازه می‌دهد تا متدها، propertyها و سازنده‌های کلاس پایه را فراخوانی کنید. به عنوان مثال، فرض کنید یک کلاس پایه به نام Animal دارید که یک متد به نام MakeSound دارد: public class Animal { public virtual void MakeSound() { Console.WriteLine("Some generic animal sound"); } } سپس یک کلاس مشتق‌شده به نام Dog دارید که این متد را بازنویسی می‌کند و همچنین از متد کلاس پایه استفاده می‌کند: public class Dog : Animal { public override void MakeSound() { base.MakeSound(); // فراخوانی متد کلاس پایه Console.WriteLine("Bark"); } } در این مثال، وقتی متد MakeSound از کلاس Dog فراخوانی می‌شود، ابتدا متد MakeSound از کلاس پایه (Animal) اجرا می‌شود و سپس خروجی "Some generic animal sound" چاپ می‌شود. بعد از آن، خروجی "Bark" چاپ می‌شود.
در سی‌شارپ، کلمه کلیدی abstract برای تعریف کلاس‌ها و متدهای انتزاعی استفاده می‌شود. یک کلاس انتزاعی (abstract class) کلاسی است که نمی‌توان از آن نمونه‌سازی کرد، بلکه باید از آن ارث‌بری شود. این کلاس‌ها معمولاً شامل متدهای انتزاعی هستند که فقط امضای متد را تعریف می‌کنند و پیاده‌سازی آن‌ها به عهده کلاس‌های فرزند است. به عنوان مثال: public abstract class Animal { public abstract void MakeSound(); } public class Dog : Animal { public override void MakeSound() { Console.WriteLine("Woof!"); } } در این مثال، کلاس Animal یک کلاس انتزاعی است که متد MakeSound را تعریف کرده است. کلاس Dog از Animal ارث‌بری می‌کند و متد MakeSound را پیاده‌سازی می‌کند.