مجموعه:  نکته های برنامه نویسی
مثال ساده درباره کپسوله سازی
یک مثال ساده درباره کپسوله سازی می زنم. اگر من از کسی برایتان تعریف کنم که او را نشناسید و بگویم وی ۸۰ سال سن دارد شما چه تصوری از او در ذهن می آورید؟ اگر بگویم او ۱۰ سال دارد چه تصوری می کنید؟

حالا می خواهیم کلاسی بسازیم که با توجه به سن٬ او را توصیف کند! سپس به طور همزمان سه شی از آن کلاس میسازیم و توصیف هر سن را چاپ می کنیم.

نمای کلی کلاس ما به صورت زیر خواهد بود:

╗════════════════════════════╔
║      HumanSpecifier        ║
║----------------------------║
║                 int Age   ║
║                            ║
║----------------------------║
║     ()string SpecifyHim   ║
║                            ║
╝════════════════════════════╚

و کد نوشته شده به این صورت می شود:

using System;
namespace Samples
{
    public class Program
    {
        public static void Main()
        {
            HumanSpecifier obj1 = new HumanSpecifier();
            obj1.Age = 2;
            HumanSpecifier obj2 = new HumanSpecifier();
            obj2.Age = 25;
            HumanSpecifier obj3 = new HumanSpecifier();
            obj3.Age = 120;

            Console.WriteLine(obj1.SpecifyHim());
            Console.WriteLine(obj2.SpecifyHim());
            Console.WriteLine(obj3.SpecifyHim());
            Console.ReadLine();
        }
    }

    public class HumanSpecifier
    {
        public int Age;
        public string SpecifyHim()
        {
            string result = "";
            if (Age <= 5) { result = "He/She is baby"; }
            if (Age > 5 && Age <= 10) { result = "He/She is child"; }
            if (Age > 10 && Age <= 20) { result = "He/She is young"; }
            if (Age > 20 && Age <= 40) { result = "He/She is adult"; }
            if (Age > 40 && Age <= 60) { result = "He/She is mature"; }
            if (Age > 60) { result = "He/She is old"; }
            return result;
        }
    }
}

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

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

در این مثال ما سه شی را همزمان در اختیار داریم و اگر بخواهیم اشیای دیگری هم در اختیار داشته باشیم مشکلی نخواهیم داشت! چرا که فقط کلاس Program دست خواهد خورد و کلاس HumanSpecifier بدون تغییر خواهد ماند. این موضوع چند منفعت دارد. اول اینکه کدهای اضافه تر ذهن برنامه نویس را از مساله اصلی دور نمی کند. دوم اینکه می توانید HumanSpecifier را در یک کتابخانه دیگر قرار دهید و آن را در اختیار چند برنامه نویس دیگر نیز قرار دهید. سوم اینکه این کار باعث می شود سلیقه های کد نویسی محفوظ بماند.

 
 
 
   
بازدید : 1345
   
 

فرستنده : احمد
متن نظر : خیلی جالب بود
زمان ارسال : 01:45:09 18\02\1392


         ارسال نظر
 
نام مستعار (ایمیل) :   
آدرس سایت :  
نظر شما :  
 
    
  کلمات مرتبط :
  مثال ساده درباره کپسوله سازی