Make your own free website on Tripod.com

دروس مرتبط

 

  صفحه اصلی > مفاهیم کلی شی گرایی > واسطها (Interfaces) پیشرفته

   

 ارث‌بري كلاس‌ها

چند ريختي (Polymorphism)

> واسطها (Interfaces)

          مقدماتی

          پیشرفته

انديكسرها در #C

 
 

واسطها  (Interfaces)پیشرفته

در اين درس با واسطها در زبان C# آشنا خواهيم شد. اهداف اين درس بشرح زير مي‌باشند :

    

     نكات مهم و پيشرفته

     مثالي كاربردي از واسطها

چند نكته مهم :

1) با استفاده از كلمه كليد interface در حقيقت يك نوع مرجعي (Reference Type) جديد ايجاد نموده‌ايد.

2) از لحاظ نوع  ارتباطي كه واسطها و كلاسها در ارث‌بري ايجاد مي‌نمايند بايد به اين نكته اشاره كرد كه، ارث‌بري از كلاس رابطه "است" يا "بودن" (is-a relation) را ايجاد مي‌كند (ماشين يك وسيله نقليه است) ولي ارث‌بري از يك واسط يا interface نوع خاصي از رابطه، تحت عنوان "پياده‌سازي" (implement relation) را ايجاد مي‌كند. ("مي‌توان ماشين را با وام بلند مدت خريد" كه در اين جمله ماشين مي‌تواند خريداري شدن بوسيله وام را پياده‌سازي كند.)

3) فرم كلي اعلان interface ها بشكل زير است :

[attributes] [access-modifier] interface interface-name [:base-list] {interface-body}

 كه اعضاي آن بشرح زير مي باشند :

attributes

صفتهاي واسط

access-modifiers

private   يا public سطح دسترسي به واسط از قبيل

interface-name

نام واسط

base-list

ليست واسطهايي كه اين واسط آنها را بسط مي‌دهد

Interface-body

بدنه واسط كه در آن اعضاي آن مشخص مي‌شوند

 

توجه نماييد كه نمي‌توان يك واسط را بصورت virtual اعلان نمود.

 

4) هدف از ايجاد يك interface تعيين توانائيهاييست كه مي‌خواهيم در يك كلاس وجود داشته باشند.

5) به مثالي در زمينه استفاده از واسطها توجه كنيد :

فرض كنيد مي‌خواهيد واسطي ايجاد نماييد كه متدها و property هاي لازم براي كلاسي را كه مي‌خواهد قابليت خواندن و نوشتن از/به يك پايگاه داده يا هر فايلي را داشته باشد، توصيف نمايد. براي اين منظور مي‌توانيد از واسط IStorable استفاده نماييد.

در اين واسط دو متد Read() و Write() وجود دارند كه در بدنه واسط تعريف مي‌شوند ك

interface IStorable

{

void Read( );

void Write(object);

}

حال مي‌خواهيد كلاسي با عنوان Document ايجاد نماييد كه اين كلاس بايد قابليت خواندن و نوشتن از/به پايگاه داده را داشته باشد، پس مي‌توانيد كلاس را از روي واسط IStorable پياده‌سازي كنيد.

 

public class Document : IStorable

{

public void Read( ) {...}

public void Write(object obj) {...}

// ...

}

حال بعنوان طراح برنامه، شما وظيفه داري تا به پياده‌سازي اين واسط بپردازيد، بطوريكه كليه نيازهاي شما را برآورده نمايد. نمونه‌اي از اين پياده‌سازي در مثال 3-13 آورده شده است.

ابتدای صفحهF

 

مثال 3-13 : پياده‌سازي واسط و ارث‌بري مثال كاربردي

using System;

// interface اعلان

interface IStorable

{

void Read( );

void Write(object obj);

int Status { get; set; }

}

 

public class Document : IStorable

{

public Document(string s)

{

Console.WriteLine("Creating document with: {0}", s);

}

 

public void Read( )

{

Console.WriteLine("Implementing the Read Method for IStorable");

}

 

public void Write(object o)

{

Console.WriteLine("Implementing the Write Method for IStorable");

}

 

public int Status

{

get

{

return status;

}

set

{

status = value;

}

}

private int status = 0;

}

 

public class Tester

{

static void Main( )

{

Document doc = new Document("Test Document");

doc.Status = -1;

doc.Read( );

Console.WriteLine("Document Status: {0}", doc.Status);

IStorable isDoc = (IStorable) doc;

isDoc.Status = 0;

isDoc.Read( );

Console.WriteLine("IStorable Status: {0}", isDoc.Status);

}

}

 

 خروجي برنامه نيز بشكل زير است :

Output:

Creating document with: Test Document

Implementing the Read Method for IStorable

Document Status: -1

Implementing the Read Method for IStorable

IStorable Status: 0

 

6) در مثال فوق توجه نماييد كه براي متدها واسط IStorable هيچ سطح دسترسي (public,private و ...) در نظر گرفته نشده است. در حقيقت تعيين سطح دسترسي باعث ايجاد خطا مي‌شود چراكه هدف اصلي از ايجاد يك واسط ايجاد شيء است كه تمامي اعضاي آن براي تمامي كلاسها قابل دسترسي باشند.

 

7) توجه نماييد كه از روي يك واسط نمي‌توان نمونه‌اي جديد ايجاد كرد بلكه بايد كلاسي از آن ارث‌بري نمايد.

 

8) كلاسي كه از واسط ارث‌بري مي‌كند بايد تمامي متدهاي آنرا دقيقا همان گونه كه در واسط مشخص شده پياده‌سازي نمايد. به بيان كلي، كلاسي كه از يك واسط ارث مي‌برد، فرم و ساختار كلي خود را از واسط مي‌گيرد و نحوه رفتار و پياده‌سازي آنرا خود انجام مي‌دهد.

 خلاصه :

در اين درس با مفاهيم كلي و اصلي درباره واسطها آشنا شديد. هم اكنون مي‌دانيد كه واسطها چه هستند و سودمندي استفاده از آنها چيست. همچنين نحوه پياده‌سازي واسط و ارث‌بري از آنرا آموختيد.

ابتدای صفحهF  

Back Next

  صفحه اصلی
    C# آموزش
    مفاهیم شی گرایی
    برنامه های نمونه
    کار با محیط
    معرفی کتاب
    نقشه سایت
    درباره ما
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
                               
[صفحه اصلی] [آموزش #C] [مفاهیم شی گرایی] [برنامه های نمونه] [کار با محیط] [معرفی کتاب] [نقشه سایت] [درباره ما]