PDA

View Full Version : سوال: تفاوت بين Interface و Implementation ??



Majid.Ebru
دوشنبه 29 شهریور 1389, 14:53 عصر
با سلام
خواهش مي كنم تفاوت بين Interface و Implementation رو اگه كسي مي دونه يه توضيحي بده !!
مثلاً Uint زير رو ببيند :


unit uEmployeeList;

interface

uses
SysUtils, Classes, Generics.Collections, uEmployees;

type
TEmployeeList = class(TObjectList<TEmployee>)
public
procedure GenerateSalaryList(Strings: TStrings);
end;


implementation

{
******************************** TEmployeeList *********************************
}
procedure TEmployeeList.GenerateSalaryList(Strings: TStrings);
var
AEmployee : TEmployee;
begin
Assert(Assigned(Strings),'Strings is not created');

Strings.Clear;
for AEmployee in Self do
Strings.Add(AEmployee.Name + '=' + CurrToStr(AEmployee.Salary));
end;

end.
چرا Uses رو توي قسمت Interface تعريف شده ؟ چرا توي قسمت Implementation تعريف نشده است ؟ اصلاً چه تفاوتي داره ؟
چرا كلاس رو توي قسمت Interface تعريف شده ؟ چرا توي قسمت Implementation تعريف نشده است ؟ اصلاً چه تفاوتي داره ؟
با تشكر فراوان

zidane
دوشنبه 29 شهریور 1389, 17:21 عصر
تا جاييكه من مي دونم قسمت هايي كه داخل implementation تعريف مي شوند فقط داخل همان يونيت قابل استفاده اند ولي اگر در قسمت interface تعريف شود، توسط يونيت هاي ديگري كه از يونيت جاري استفاده مي كنند قابل دسترسي اند

BORHAN TEC
دوشنبه 29 شهریور 1389, 19:22 عصر
مثل اینکه شما دوست عزیز به علم الکترونیک و روباتیک علاقه زیادی دارید!
بنابراین من یک مثال با یک قطعه الکترونیکی میزنم!
شما با قطعه ای به نام IC آشنا هستید. IC را از دیدگاهی می توان به دو شکل مختلف تصور نمود: قسمت Interface و قسمت Implementation.
1- قسمت Interface : شما برای استفاده از IC نیاز دارید بدانید که فلان IC چند پایه دارد، هر پایه برای چه کاری به کار می رود و ... . در واقع شما برای استفاده از IC به یک کاتولوگ نیاز دارید. قسمت Interface مربوط به یونیت هم در واقع همین گونه است. این قسمت به شما می گوید که این یونیت از چه توابع و روالهایی تشکیل شده، این یونیت چه کلاسها و نوع هایی را تعریف می کند. توجه کنید کهاز این نوع ها و توابع و رویه ها و متغیر هایی که در قسمت Interface تعریف می شود شما می توانید در یک یونیت دیگر استفاده کنید!!!

2- قسمت Implementation : اگر به ساختار داخلی یک IC نگاهی بیاندازید سرتون گیج میره! اینطور نیست؟!!! بله همانطور که میدونید ساختار داخلی یک IC از دهها و یا شاید صدها قسمت تشکیل شده است.
قسمت Implementation یک یونیت شامل پیاده سازی داخلی یک یونیت است و همانطور که دوست عزیزمان گفتند از یونیت های دیگر نمی توان به این قسمت دسترسی داشت.
اگر یک یونیت به خوبی طراحی شده باشد و شما هم یک راهنما مربوط به آن داشته باشید برای استفاده از آن نیازی به دانستن قسمت پیاده سازی یا همان قسمت Implementation آن ندارید. مثل هما IC که شما برای استفاده از آن نیازی به دانستن ساختار داخلی آن ندارید.

(مفاهیمی که در بالا گفتم از جهاتی با مفهوم کلاسها هم ارتباط نزدیکی دارد)

Majid.Ebru
سه شنبه 30 شهریور 1389, 10:25 صبح
سلام
خيلي خيلي ممنون بسيار عالي بود.
يه تشكر ، به نظرم كافي نبود.
خيلي ممنون