the DOC file (MSWin2K)

‫بسمه تعالی‬
‫برنامه سازی پيشرفته(‪)244-40‬‬
‫اول ‪81-80‬‬
‫نيمسال‬
‫تمرين ‪( 4‬جستجو ی خطی )‪:‬‬
‫هدف‪ :‬آشنايی با چندريختی )‪ - (Polymorphism‬کار با قالب ها‬
‫)‪(Template‬‬
‫محيط برنامه نويسی‪ :‬قابل حمل ( به طور مشخص در ‪ g++‬و ‪VC++‬‬
‫کامپايل شود)‬
‫موعد تحويل‪ :‬قبل از ‪( 80/10/7‬ساعت ‪ – )20:00‬پرونده حاوی متن‬
‫برنامه به آدرس ‪ [email protected]‬ارسال شود‪.‬‬
‫شرح مساله‪:‬‬
‫هدف از اين مساله نوشتن سه رده ‪ Array ،Linear‬و ‪ Lifstream‬است‪.‬‬
‫نمودار وراثت اين رده ها به شکل زير است‪:‬‬
‫رده ‪ Linear‬يک قالب است که مندهای الزم برای پياده سازی يک‬
‫الگوی جستجوی خطی را به شکل مجرد ارائه می کند‪ .‬اعالن اين‬
‫رده به اين شکل است‪:‬‬
‫>‪template<class T‬‬
‫‪class Linear‬‬
‫{‬
‫‪public:‬‬
‫;‪virtual void first() const = 0‬‬
‫;‪virtual void next() const = 0‬‬
‫;‪virtual T current() const = 0‬‬
‫;‪virtual bool search(T key) const‬‬
‫;}‬
‫متد ‪ first‬يک اشاره گر فرضی را به ابتدای ساختمان داده‬
‫انتقال می دهد‬
‫مند ‪ next‬اشاره گر را يکی جلو می برد‪.‬‬
‫متد ‪ current‬عنصری که اشاره گر به آن اشاره می کند را برمی‬
‫گرداند‪.‬‬
‫مند ‪ end‬نشان دهنده اين است که اشاره گر از انتهای‬
‫ساختمان داده رد شده است يا نه‪.‬‬
‫مند ‪ search‬در ساختمان داده به دنبال عنصر ‪ key‬می گردد‪.‬‬
‫قالب ‪ Array‬را طوری تعريف کنيد که عالوه بر بازنويسي اعضای‬
‫مجازی )‪ (pure virtual‬خالص ‪ Linear‬اعضای زير را نيز پياده سازی‬
‫کند‪:‬‬
‫‪ ‬سازنده ای که اندازه آرايه را می گيرد‪.‬‬
‫‪ ‬سازنده کپی ‪.‬‬
‫‪ ‬مخرب‪.‬‬
‫‪ ‬عملگرهای = و == و ][‬
‫رده ‪ Lifstream‬را به عنوان زيررده ای از >‪ Linear<char‬تعريف‬
‫کنيد که اعضای مجازی ان را به نحو مناسبی بازنويسی کند‪.‬‬
‫موفق‬
‫باشيد‬