PDA

View Full Version : سوال: تعیین فیلد نوع شی برای ذخیره و بازیابی از فایل ها



mohammaddx
شنبه 03 مرداد 1394, 23:16 عصر
با سلام به همه ی برنامه نویسان عزیز
برای پروژه تابستون ( تابستون هم باید درس خوند!) درس برنامه نویسی پیشرفته به زبان c++ نیاز به کمک دارم.
*******
در بخشی از برنامه نیازه که شی هایی از کلاس ها مختلف بسازم و در فایل های مختلف ذخیره کنم.اما برای بازیابی از فایل ها مشکل دارم چون کاربر تنها قراره نام فایل را برای بازیابی وارد کنه و برنامه نمیدونه که شی موجود در فایل مربوط به کدوم نوع کلاس است.
شاید پیشنهاد بدید که یک فیلد به شی اضافه کنم و هنگام خوندم مقایسه انجام بدم.ولی اخه شی ای که در فایل نوشته شده اول باید به برنامه منتقل بشه و بعد مقایسه کرد ولی برنامه نمیدونه که از کدوم کلاسه تا در شی ای از همان نوع ذخیره کنه.لطفا کمکم کنید.

حامد مصافی
یک شنبه 04 مرداد 1394, 11:03 صبح
تمام کلاس‌ها باید از یک کلاس پایه مشتق شوند. این کلاس پایه فیلد‌هایی را در فایل ذخیره و بازیابی می‌کند. در کلاس‌های پایه متدهایی برای خواندن و نوشتن در همین فیلد‌ها ایجاد کنید.
به همین سادگی

mohammaddx
سه شنبه 06 مرداد 1394, 13:09 عصر
تمام کلاس‌ها باید از یک کلاس پایه مشتق شوند. این کلاس پایه فیلد‌هایی را در فایل ذخیره و بازیابی می‌کند. در کلاس‌های پایه متدهایی برای خواندن و نوشتن در همین فیلد‌ها ایجاد کنید.
به همین سادگی
لطفا بیشتر توضیح بدید.

amirtork
چهارشنبه 07 مرداد 1394, 18:16 عصر
سلام.
برای انجام این کار، روشی که به ذهن من میرسه این هست که به هر کلاس یک شناسه ای رو اختصاص بدید، مثلا هر کلاسی شناسه ای 5 رقمی داشته باشه، و در لایه ی ذخیره سازی پروژه، زمانی که اطلاعات آماده ی ذخیره سازی میشن، این شناسه رو که به ازای هر کلاس و نه هر شی منحصر هست رو به انتهای اطلاعات مربوط به هر شی اضافه کنید و سپس در فایل ذخیره کنید.
برای بازیابی اطلاعات هم، وقتی که اطلاعات ثبت شده مثلا در سطر اول رو در بافر ذخیره کردید، 5 کاراکتر انتهایی بافر رو مقایسه میکنید و به این ترتیب نوع شی مشخص میشه و میتونید اون رو در شی از کلاس مربوط به خودش ذخیره کنید.
این روش رو میشه مثلا در مورد شناسه ی هر خودرو گنجوند، مثلا 3 رقم اول شناسه ی خودرو رو به عنوان مشخص کننده ی نوع کلاس در نظر بگیرید.
به مثال زیر دقت کنید:

class CarType1
{
public:
CarType1() : classType(12345) {}
string name;
int ID;
/*
.
.
.
*/

private:
const int classType;
}