interface

فقق

Banned
سلام می خواستم از دوستان در مورد اینترفیس ها بپرسم به زبان ساده که چی است ؟؟
و چگونه از اینتر فیس های سی شارپ استفاده کنم و آیا هر کدام کاربرد خاصی دارند ؟؟؟؟؟؟

 

the_king

مدیرکل انجمن
سلام می خواستم از دوستان در مورد اینترفیس ها بپرسم به زبان ساده که چی است ؟؟
و چگونه از اینتر فیس های سی شارپ استفاده کنم و آیا هر کدام کاربرد خاصی دارند ؟؟؟؟؟؟

اگر در کلاس هایتان مکررا از ویژگی ارث بری استفاده می کنید interface به شما کمک می کند تا بتوانید
بصورت توام از چندین قالب ارث بری کنید، وگرنه استفاده ای ندارند.

interface ها برای برطرف کردن یک محدودیت در زبان #C بکار می روند، اگر شما بخواهید یک کلاس بسازید که
از چند کلاس دیگر ارث بری کند (multiple inheritance) به مشکل بر می خورید چون #C به کلاس شما فقط اجازه
ارث بری از یک کلاس را می دهد. اما در عوض در #C هر کلاسی می تواند از چندین interface ارث بری کند.
البته interface با class تفاوت های زیادی دارد، interface شبیه به یک قالب کلاس است و در آن بجز تعریف کردن
متد ها و مشخصه ها و رخداد ها هیچ چیز دیگری نوشته نمی شود و فاقد هر گونه کد نویسی است.

مثلا این یک interface است، در آن بجز معرفی کردن دو مشخصه هیچ کد دیگری نوشته نشده :
کد:
        interface info
        {
            string serial { get; set; }
            DateTime enter { get; set; }
        }
این interface به تنهایی کاربری ندارد، نمی توانید از آن شی ای بسازید چون اصلا کدی ندارد و فقط یک قالب
کلی از یک کلاسی است که دو مشخصه دارد.

اگر کلاسی از این interface ارث بری کند باید کد های مربوط به آن دو مشخصه را پیاده سازی کرده باشد :
کد:
        class book : info
        {
            private string _serial = "";
            private DateTime _enter = DateTime.Now;
            public string serial
            {
                get
                {
                    return _serial;
                }
                set
                {
                    _serial = value;
                }
            }
            public DateTime enter
            {
                get
                {
                    return _enter;
                }
                set
                {
                    _enter = value;
                }
            }
        }
 

فقق

Banned
در مورد get

این set و get را چرا این طور می نویسند get ;set; چرا تعریف نمی کنند
 

the_king

مدیرکل انجمن
این set و get را چرا این طور می نویسند get ;set; چرا تعریف نمی کنند

مقدار داخل مشخصه ها با get خوانده می شوند و با set نوشته می شوند. مشخصه هایی که readonly
هستند فقط get دارند، پس قابل نوشتن نیستند.

منظورتون در interface ئه؟ در interface هیچگونه کد نویسی ای مجاز نیست، فقط میشه مشخصه رو تعریف کرد.
 

فقق

Banned
abstract

من در تایپیک قبل منظورم را درست نرسوندم من می خواستم بگم چرا ما get و set را درست تعریف نکردیم
فقط نوشتیم get و set خوب این به دلیل این است که کلاس abstract است و احتیاجی به تعریف get و set نیست و خالی تعریف می کنیم خوب سوال من این است که ما کلاسی به اسم abstract در کدهای بالا نداریم و وقتی من این کد ها را در سی شارپ بنویسم بر get و set خالی اشکال می گیرد چه کار کنم ؟؟؟؟​
 

the_king

مدیرکل انجمن
من در تایپیک قبل منظورم را درست نرسوندم من می خواستم بگم چرا ما get و set را درست تعریف نکردیم
فقط نوشتیم get و set خوب این به دلیل این است که کلاس abstract است و احتیاجی به تعریف get و set نیست و خالی تعریف می کنیم خوب سوال من این است که ما کلاسی به اسم abstract در کدهای بالا نداریم و وقتی من این کد ها را در سی شارپ بنویسم بر get و set خالی اشکال می گیرد چه کار کنم ؟؟؟؟​
نه، این که کلاس abstract نیست، اصلا کلاس نیست، interface است، interface با کلاس abstract خیلی فرق داره،
فقط میشه از یک کلاس abstract وراثت داشت اما در مورد interface همچین محدودیتی نیست. در ضمن در interface
نمی توانید متغیر تعریف کنید یا کدی بنویسید، حتی نمی توانید میزان دسترسی (private و public و ...) رو مشخص کنید
اما کلاس abstract همچین محدودیت هایی نداره.

یک کلاس جدید به اسم Class1 بسازید و اینطوری کدش رو ویرایش کنید :
کد:
    interface info
    {
        string serial { get; set; }
        DateTime enter { get; set; }
    }

[COLOR="Gray"]    class Class1[/COLOR] : info
[COLOR="Gray"]    {[/COLOR]
        private string _serial = "";
        private DateTime _enter = DateTime.Now;
        public string serial
        {
            get
            {
                return _serial;
            }
            set
            {
                _serial = value;
            }
        }

        public DateTime enter
        {
            get
            {
                return _enter;
            }
            set
            {
                _enter = value;
            }
        }
[COLOR="Gray"]    }[/COLOR]
 

جدیدترین ارسال ها

بالا