بخشی از پاورپوینت

اسلاید 1 :

به نام خدا
فصل هفتم
وراثت

اسلاید 2 :

فهرست مطالب
1- انواع داده جدید
2- انواع داده انتزاعی
3- تعریف نوع
4- ادا و پکیج
5- بسته بندی مستقیم و غیرمستقیم
6- انواع پارامتردار
7- انواع داده انتزاعی کلی و نمونه سازی
8- وراثت
9 – چندریختی

اسلاید 3 :

طراحی و پیاده سازی انواع داده جدید
طراحی
1- تعریف شی داده
1- مشخص کردن صفات نوع داده یا اطلاعاتی که باید دراین شی داده ذخیره شود.(صفات هر شی داده مثل نوع داده و نام معمولا در طول عمر آن عوض نمی شود)
2- تعیین عناصری که شی داده حاوی آن است.
2- تعریف عملیات که بر روی شی داده کارمی کنند.

تمام فعالیت های طراحی را می توان به عنوان طراحی مشخصات نوع داده ی انتزاعی درنظرگرفت.(یعنی طراحی صفات و عملیات مورد نیاز)

اسلاید 4 :

طراحی و پیاده سازی انواع داده جدید
پیاده سازی
1- نمایش خاصی برای اشیاء داده با استفاده از انواع داده ای که در زبان موجود است یا سایر انواع داده انتزاعی.

2- پیاده سازی عملیات بر روی این اشیاء داده به صورت زیربرنامه هایی که آرگومان های آنها این اشیاء داده هستند.

اسلاید 5 :

مثال:برای نوشتن برنامه ثبت نام و تنظیم کلاس دانشگاه
تعریف شی داده : Section
صفات این شی داده : نام استاد ، شماره اتاق ، ظرفیت و.
عناصر این شی داده : لیستی از دانشجویان ثبت نام شده

تعریف عملیاتی که بر روی این شی داده کار می کنند: ایجاد Section جدید ، انتساب دانشجو به یک Section ، از بین بردن یک Sectionو .

اسلاید 6 :

مثال:برای نوشتن برنامه ثبت نام و تنظیم کلاس دانشگاه
پیاده سازی نوع داده Section : نمایش نام استاد به صورت یک رشته 10 کاراکتری ، نمایش لیست دانشجویان به صورت یک آرایه خطی و.
پیاده سازی عملیات روی Section : زیربرنامه هایی که آرگومان های آنها ، این این شی داده باشد.

نتیجه : برنامه نویس می تواند دقیقا مثل نوع صحیح و یا سایر انواع اولیه ، از نوع Section (نوع داده جدید)بدون توجه به جزئیات پیاده سازی آن ، از آن استفاده کند.

اسلاید 7 :

انواع داده انتزاعی
نوع داده ی انتزاعی : نوع داده ی جدیدی است که توسط برنامه نویس تعریف می شود وشامل موارد زیراست:
1- نوع داده ای که توسط برنامه نویس تعریف می شود.
2- مجموعه ای از عملیات انتزاعی بر روی اشیایی ازآن نوع
3- بسته بندی اشیاء آن نوع ، به طوری که کاربر آن نوع نمی تواند آن اشیاء را بدون استفاده از این عملیات دستکاری کند.

کل تعریف باید طوری بسته بندی شود که کاربر فقط با دانستن نام نوع و معنای عملیات آن ، بتواند آن را به کار گیرد.

اسلاید 8 :

انواع داده انتزاعی.
مثلا : نمایش حافظه مربوط به مقادیرحقیقی و صحیح ، کاملا بسته بندی شده است، یعنی از برنامه نویس پنهان است .برنامه نویس بدون اینکه از جزئیات نمایش حافظه این انواع اطلاع داشته باشد ، از اشیای داده ی آنها استفاده می کند. فقط نام و عملیاتی را برای دستکاری آن نوع فراهم می بیند.

اسلاید 9 :

تعریف نوع:
مکانیزمی برای توصیف دسته ای از اشیاء داده

درتعریف نوع نام نوع تعریف می شود و اعلانی وجود دارد که ساختار دسته ای از اشیای کلاس را توصیف می کند. بدین ترتیب نام نوع به عنوان نام دسته ای از اشیاء داده محسوب می شود . هر وقت به اشیاء داده ای از آن ساختار نیاز باشد ، به جای تکرار توصیف ساختمان داده ، کافی است نام نوع ارائه شود.
توجه : تعریف نوع ، نوع داده ی انتزاعی کامل را تعریف نمی کند ، زیرا عملیاتی را بر روی داده های آن نوع تعریف نمی کند.

اسلاید 10 :

به عنوان مثال:
به رکوردهای A ،B و C نیاز باشد ، به طوری که ساختار آنها یکسان باشد.
تعریف نوع زیر را در نظر بگیرد:
Type Rational = record
numerator: integer;
denominator: integer:
end
اکنون اعلان زیر را در نظر بگیرید که A ، B و C را از نوع Retional درنظر می گیرد:
var A, B ,c: Retional;
تعریف ساختار شی داده ی نوع Retional ، به جای اینکه سه بار برای A ، B و C تکرار شود ، فقط یک بار ارائه می شود.

اسلاید 11 :

امّا :
اما ساختار داخلی اشیاء داده نوع ، بسته بندی شده نیست. هر زیربرنامه ای که می تواند متغیری را از نوع جدید اعلان کند ، اجازه دارد به هر عنصر از نمایش آن نوع دستیابی داشته باشد. چنین زیر برنامه ای می تواند انواع تعریف شده بر روی آن اشیای داده را نادیده بگیرد و آنها را مستقیما دستکاری کند(به آنها دستیابی داشته باشد).

مفهوم بسته بندی نوع داده انتزاعی ، این دستیابی را غیر ممکن می سازد، به طوری که ، فقط زیربرنامه هایی که به عنوان بخشی از خود نوع هستند می دانند اشیای داده آن نوع چگونه نمایش داده می شوند.

اسلاید 12 :

پس در ادامه.
مکانیزمهایی را برای بسته بندی خودکار داده ها توصیف می کنیم (مانند پکیج در ادا)
پکیج در ادا

این مفهوم را طوری بسط می دهیم که عملیات بر روی این اشیا داده از طریق وراثت قابل استفاده باشند.
مشخصات پکیج
پیاده سازی پکیج

اسلاید 13 :

باید توجه کنیم که :
مشخصات پکیج SectionType ، تمام داده ها ، انواع و زیربرنامه ها را تعریف می کند که توسط رویه هایی که در پکیج های دیگری اعلان شده اند، قابل مشاهده اند.

اعلان is private برای Section نشان می دهد که ساختار داخلی اشیاء داده Section نباید توسط زیربرنامه هایی که از پکیچ استفاده می کنند قابل دستیابی باشد.
جزئیات واقعی نوع Section ، در انتهای پکیج دربخش private آمده است.

اسلاید 14 :

مشخصات پکیج SectionType
Package SectionType is
type StudentID is integer;
type Section(MaxSize : integer) is private;
procedure AssignStudent(Sect: in out section; Stud in StudentID);
procedure CreateSection(Sect: in out section; Instr in integer; Room in integer) ;
private
type Section(MaxSize : integer) is
record
Room: integer;
instructor: integer;
ClassSize: integer range 0 .. MaxSize := 0;
Classroll: array (1 .. MaxSize) of StudentID;
end record;
end;

اسلاید 15 :

مثال:
رویه های AssignStudent و createSection می توانند به آرایه ClassRoll دستیابی داشته باشند که عضوی از Section است، اما هر رویه دیگری که در خارج از پکیج قرار دارد نمی توانند به این آرایه دسترسی داشته باشد.حتی اگر متغیری از نوع Section را تعریف کرده باشند.

اسلاید 16 :

توجه داشته باشیم که:
در بخش package body پیاده سازی رویه های اعلان شده در بخش مشخصات پکیج ، قرار دارد.
بخش package body می تواند اشیاء داده و انواعی داشته باشد که توسط پکیچ های دیگر قابل مشاهده نباشد.

مثلا : رویه ScheduleRoom فقط می تواند در AssignStudent و createSection فراخوانی شود. این نام درخارج از این پکیج ناشناخته است.

اسلاید 17 :

پیاده سازی پکیج SectionType
Package body SectionType is
procedure AssignStudent(…) is
- statements to insert student on ClassRoll
end;
procedure CreateSection(…) is
- Statements to initialize components of record
end;
procedure ScheduleRoom(…) is
- Statements to schedule section in a room
end;
end;

اسلاید 18 :

خوب حالا یه سؤال ؟؟؟
به نظر شما چرا از بخش private در تعریف پکیج بالا استفاده شد تا اطلاعات موجود در آن فقط توسط بدنه پکیج مورد استفاده قرار گیرد؟ آیا نمی شد جزئیات نمایش در پکیج دیگری باشد و دراین پکیج اشاره گری به آن قرار داده می شد؟ چه مشکلی پیش می آمد؟

برای جواب به این سوال دو مدل را برای پیاده سازی اشیاء داده ی بسته بندی شده معرفی می کنیم:
1- بسته بندی غیرمستقیم
2- بسته بندی مستقیم

اسلاید 19 :

بسته بندی غیرمستقیم
رکورد فعالیت
پکیج A
رکورد فعالیت
پکیج B
دراین حالت ، ساختار نوع داده انتزاعی به وسیله مشخصات پکیج A تعریف شده است. حافظه ی واقعی برای شی P در رکورد فعالیت پکیج A نگهداری می شود. در پکیج B ، که شی P را تعریف و استفاده می کند ، رکورد فعالیت باید اشاره گری به حافظه داده ی واقعی داشته باشد.
در این حالت پیاده سازی نوع داده ی انتزاعی ، کاملا مستقل از کاربردش است. اگر ساختار P تغییر کند ، فقط لازم است پکیج A تغییر نماید. پکیج B باید بداند که شی P یک اشاره گر است و لازم نیست از فرمت داده ای که P به آن اشاره می کند باخبر باشد.

اسلاید 20 :

معایب بسته بندی غیرمستقیم
دستیابی به P تاوان اجرایی دارد. هر دستیابی به P مستلزم دستیابی غیرمستقیم به اشاره گر است تا حافظه واقعی پیدا شود. استفاده مکرر از P ممکن است گران تمام شود.

در متن اصلی پاورپوینت به هم ریختگی وجود ندارد. برای مطالعه بیشتر پاورپوینت آن را خریداری کنید