PDA

View Full Version : سوال: پیاده سازی کلاس به عنوان نوع داده ای



nastaran_s
یک شنبه 04 بهمن 1388, 19:26 عصر
سلام. با توجه به اینکه در net. می توانیم نوع داده های جدید(کلاس) ایجاد کنیم می خواستم دوستان یه عنوان مثال در پیاده سازی کلاسی به HugInteger که به بتواند فاکتوریل هر عددی را محاسبه کند کمک کنند.(نوع داده long فاکتوریل اعداد محدودی را قبول می کند)

Alirezanet
یک شنبه 04 بهمن 1388, 19:34 عصر
سوالتون واضح نیست در صورت امکان کد رو هم بزارین

ACorvinus
یک شنبه 04 بهمن 1388, 19:53 عصر
سلام .

دوست من تا اونجایی که من اطلاع دارم شما نمیتونین یه نوع داده انتزاعی تعریف کنین که جوابش خارج از محدوده داده های تعریف شده در Net. باشه.

اگه عدد شما بزرگتر از محدوده ای است که در Net. تعریف شده، مثلا بیشتر از عدد 79228162514264337593543950335- تا 79228162514264337593543950335+ برای اعداد صحیح (نوع داده ای Decimal)، شما باید مساله تون رو به مسائل کوچکتر تبدیل کرده سپس آن را حل کنید.

اگه قانع کننده نبود بگین بیشتر توضیح بدم.
موفق باشین.

Computer.Programmer
یک شنبه 04 بهمن 1388, 19:57 عصر
سوالتون واضح نیست در صورت امکان کد رو هم بزارین


منم موافقم چند باری خوندوم ولی چیزی دستگیرم نشد که راهنماییتون کنم.

موفق باشید

ACorvinus
یک شنبه 04 بهمن 1388, 21:06 عصر
یه چیزی یادم افتاد. ما تو درس Data Structure یه چیزایی در این مورد خونده بودیم که همشو براتون مینویسم:

""

نوع داده انتزاعی (مجرد) یا همان ADT-Abstract Data Type:

اغلب برنامه نویسان سعی می کنند چنانچه به نوع داده ای نیاز دارند که در زبان مورد نظرشان نیست، آن را ایجاد کنند. در اینصورت باید عناصر آن و نحوه ذخیره سازی عناصر را تهیه نموده و عملیات متداول را روی آنها مشخص کنند که به این مطلب ADT گفته میشود.

نمیدونم با Class Diagram در مهندسی نرم افزار آشنایی داری یا نه؟ ولی یه Class در نظر بگیر که:


Class Name: ADT ...
Attributes: ...
Methods:
1. Creators
2. Convertors
3. Reporters

""

من که به این نتیجه رسیدم اگه شما بتونین نوع داده ای جدیدی رو تعریف کنین که محدوده اش بیشتر از نوع داده ای Decimal باشه، باید اسمتون در تاریخ ثبت بشه ( البته اگه بتونین تا فردا این کارو بکنین!!! چون پس فردا Microsoft خودش این کارو می کنه ).

nastaran_s
سه شنبه 06 بهمن 1388, 01:13 صبح
سلام . من این مطلب رو در کتاب ویژوال بیسیک net. ترجمه بهمن پاشایی خوندم متن کاملش اینه(ص 234):
ابتدا در مورد نوع داده long می گه که مقادیری که توسط تابع factorial ایجاد می شه قادر به نگهداری نیست و از ضعف های برنامه نویسی است و نمی توان به اسانی در انها نیازهای منحصر بفرد برنامه های مختلف همانند محاسبه مقادیر فاکتوریل اعداد بزرگ را تامین کرد و در ادامه می گه:
ویژوال بیسیک به عنوان یک زبان گسترش یافته به برنامه نویسان امکان براوردن احتیاجات منحصربفرد برنامه ها را به کمک نوع داده های جدید(بنام کلاس ها) فراهم می اورد . برای مثال می توان کلاسی بنام Huginteger ایجاد کرد و به برنامه اجازه داد تا فاکتوریا هر عددی را حساب کند.
ممنون می شم دوستان این مطلب را برایم توضیح دهند !

ACorvinus
سه شنبه 06 بهمن 1388, 09:30 صبح
برادر سلام.

محدوده Decimal خیلی بیشتز از محدوده Int64 یا همون Long هستش.
ببین مشکلت رو حل می کنه؟

مگه شما فاکتوریل چه عددی رو میخواین محاسبه کنین؟!!!

nastaran_s
سه شنبه 06 بهمن 1388, 20:38 عصر
سلام . من نمی خوام فاکتوریل عدد خاصی حساب کنم همونطور که گفتم ایم مطلب رو در کتاب خوندم نحوه پیاده سازی کلاسی که اشاره کرده می خواستم بدونم؟؟؟؟

ACorvinus
سه شنبه 06 بهمن 1388, 20:52 عصر
سلام .

پس شما باید سوال خود رو در مباحث مربوط به مهندسی نرم افزار و در بخش "الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها" مطرح کنین.

فکر کنم اونجا به جواب برسین.