نمایش نتایج 1 تا 29 از 29

نام تاپیک: تفاوت بین ساختار با کلاس

  1. #1
    کاربر دائمی آواتار american_iran2006
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    209

    Cool تفاوت بین ساختار با کلاس

    سلام دوستان ::

    چرا در ++c کلاس ها اضافه شده اند و اینقدر بهشون افتخار میشه

    در صورتی که ساختار ها هم خاصیت شی گرایی دارن و تنها تفوت این ها در اینه که

    کلاس ها ابتدا خصوصی هستن و ساختار ها ابتدا عمومی هستند و هر کدام را میشود به صورت او یکی نوشت

    پس دلیل بوجود اومدنه کلاس ها چیه ؟؟ !!!!!!!!!!!!!!!!!111

    در صورتی که از نظر شی گرایی مثل ساختار ها می مانند

  2. #2
    کاربر دائمی آواتار american_iran2006
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    209

    Question

    کسی نبید به این سوال جواب بده

  3. #3
    دلیل بوجود آمدن کلاسها مشکل یا ضعف در ساختارها نیست. دلیل بوجود آمدن شئی گرایی ضعف در ساختیافتگیه. در برنامه هایی که (بصورت ساختیافته نوشته شده اند) دارای 25000 تا 100000 خط وبالاتر باشند دیگه بهینه سازی و رفع خطاها خیلی مشکل میشه. دلایل زیادی برای بوجود آمدن برنامه نویسی شئی گرایی هست که میتونی با خوندن یک مقاله یا کتاب در مورد شئی گرایی به اهمیت بوجود آمدن کلاسها پی ببری.

  4. #4
    ساختار ها هم خاصیت شی گرایی دارن
    اشتباه نکن! struct ها در ++C این خواص رو دارند، نه C!

  5. #5
    کاربر دائمی
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    تهران
    پست
    271
    فکر می‌کنم که structها را نمی‌شه در چیزهایی مثل وراثت و چندریختی که از اساسی‌ترین بخش‌های شئ‌گرایی هستند به کار برد؛ هرچند مطمئن نیستم.

  6. #6
    کاربر دائمی آواتار american_iran2006
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    209
    نقل قول نوشته شده توسط someCoder مشاهده تاپیک
    اشتباه نکن! struct ها در ++C این خواص رو دارند، نه C!
    من هم در ++c میگم :: اینو میدونم که در c استاندارد این خاصیت توشون نیست

  7. #7
    سلام
    بابا این که خیلی تابلو هست
    اصلا اونی که میگه ساختار همون کلاس هست کجا میشه توی ساختار یک متد تعریف کرد
    اصلا شما می دونین وراثت چیه , یکی از مهمترین اصول شی گرائی که به هیچ وجه نمیشه با ساختار پیاده سازی کرد.
    البته من هم اولاش این اشتباه و می کردم ولی با خوندن کتاب شی گرائی بالا خره افتاد
    موفق باشید

  8. #8
    کاربر جدید آواتار melomane
    تاریخ عضویت
    آبان 1385
    محل زندگی
    مشهد
    پست
    10
    یکی از مزایای اصلی برنامه نویسی شی گرا قابلیت استفاد ی دوباره از نرم افزار است (software reuse) که توی برنامه نویسی ساخت یافته کمتر این موضوع دیده می شه. علاوه بر این گاهی برای استفاده ی مجدد لازمه تغییراتی توی برنامه داده بشه که معمولا توی برنامه نویسی ساخت یافته این تغییرات کلی هستند و معمولا ترجیح داده میشه که برنامه دوباره نوشته بشه. اما در شی گرایی تغییرات جزئی و راحت تر هستند.
    احتمالا خودتون هم باهاش برخورد کردین.یک کلاس می سازین (هر چند خیلی هاش آماده توی اس تی ال هست) مثلا برای آرایه ی دو بعدی(ماتریس) که مثلا همه امکانات رو داره جز ضرب ماتریس ها. حالا هر جا که می بینین به ماتریس نیاز دارین می تونین به راحتی ازش استفاده کنین. یه جورایی همیشگی میشه. حالا بعد از یه مدت می بینین (خودتون یا یک کاربر دیگه ی کلاس) که لازمه دو تا ماتریس با هم ضرب شن. فقط کافیه یک تغییر خیلی کوچیک تو ی کلاس داده بشه.
    و این همون استفاده مجدده. همونطور هم که کارشناسا می گن این استفاده مجدد باعث میشه هم کار ساده تر و سریع تر بشه و هم در اثر استفاده تعداد زیادی از افراد به مرور باگ ها و اشکالات احتمالی از کلاس از بین بره

  9. #9
    کاربر دائمی آواتار american_iran2006
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    209

    Cool

    نقل قول نوشته شده توسط hesam187 مشاهده تاپیک
    سلام
    بابا این که خیلی تابلو هست

    چه جالب ؛ خوب !!!!!!!
    اصلا اونی که میگه ساختار همون کلاس هست کجا میشه توی ساختار یک متد تعریف کرد
    هر کاری که در class میشه کرد در ساختار ها هم میشه
    اصلا شما می دونین وراثت چیه
    نه ؛ فقط شما می دونید ؛؛ به کسی نگیا ؛ میان می دوزنت
    , یکی از مهمترین اصول شی گرائی که به هیچ وجه نمیشه با ساختار پیاده سازی کرد.
    البته من هم اولاش این اشتباه و می کردم ولی با خوندن کتاب شی گرائی بالا خره افتاد
    موفق باشید
    خودت امتهان کن ، اگه وقت ندار ی sourc بزارم از وراثت ساختار ها

  10. #10
    کاربر دائمی آواتار american_iran2006
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    209

    Cool

    نقل قول نوشته شده توسط melomane مشاهده تاپیک
    یکی از مزایای اصلی برنامه نویسی شی گرا قابلیت استفاد ی دوباره از نرم افزار است (software reuse) که توی برنامه نویسی ساخت یافته کمتر این موضوع دیده می شه. علاوه بر این گاهی برای استفاده ی مجدد لازمه تغییراتی توی برنامه داده بشه که معمولا توی برنامه نویسی ساخت یافته این تغییرات کلی هستند و معمولا ترجیح داده میشه که برنامه دوباره نوشته بشه. اما در شی گرایی تغییرات جزئی و راحت تر هستند.
    احتمالا خودتون هم باهاش برخورد کردین.یک کلاس می سازین (هر چند خیلی هاش آماده توی اس تی ال هست) مثلا برای آرایه ی دو بعدی(ماتریس) که مثلا همه امکانات رو داره جز ضرب ماتریس ها. حالا هر جا که می بینین به ماتریس نیاز دارین می تونین به راحتی ازش استفاده کنین. یه جورایی همیشگی میشه. حالا بعد از یه مدت می بینین (خودتون یا یک کاربر دیگه ی کلاس) که لازمه دو تا ماتریس با هم ضرب شن. فقط کافیه یک تغییر خیلی کوچیک تو ی کلاس داده بشه.
    و این همون استفاده مجدده. همونطور هم که کارشناسا می گن این استفاده مجدد باعث میشه هم کار ساده تر و سریع تر بشه و هم در اثر استفاده تعداد زیادی از افراد به مرور باگ ها و اشکالات احتمالی از کلاس از بین بره
    بابت جوابتون ممنون ؛

    اگه یک ساختار تعریف کنید که توش ارایه دو بعدی باشه ؛ دیگه نمی تونی ازش استفاده کنی؛ یعنی یه بار استفاده میشه!!!!!!!!!!!!!!!!!!!1

    جوابش : نه هستش:: چون می تونی هر چند بار که دلت بخواد استفاده کنی

    می تونی توش تابع تعریف کنی

    می تونی public و private داشته باشی

    یاد تون باشه ؛ ساختار در ++c ؛ کاملا شی گراست

  11. #11
    کاربر جدید آواتار melomane
    تاریخ عضویت
    آبان 1385
    محل زندگی
    مشهد
    پست
    10
    بله می دونم. اول از همه اینکه من فکر کردم شما بیتشر منظورتون ساختار در سی هست نه سی پلاس پلاس که خوب حتما در موردش جواب رو می دونین. نکته دوم اینکه فکر می کنم این نوع ساختار به نوعی بر محور آبجکت هست نه روال.
    احتمالا این نکته رو هم می دونین که پیش فرض public و private بودن در کلاس و ساختار فرق می کنه. کلاس تاکید زیادی بر data encapsulation و data hiding داره که یکی از اساس های برنامه نویسی OOP هست.

  12. #12
    کاربر دائمی آواتار american_iran2006
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    209

    Cool

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

    #include<iostream>
    #include<conio.h>
    using namespace std;
    struct p1{
    void p2();
    };
    void p1::p2(){
    cout <<"didi mishe";
    }
    struct p3 :public p1{
    };

    int main()
    {
    int b;
    p3 a;
    a.p2();
    b=getch();
    return 0;
    }

  13. #13
    کاربر دائمی آواتار american_iran2006
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    209

    Cool

    نقل قول نوشته شده توسط melomane مشاهده تاپیک
    بله می دونم. اول از همه اینکه من فکر کردم شما بیتشر منظورتون ساختار در سی هست نه سی پلاس پلاس که خوب حتما در موردش جواب رو می دونین. نکته دوم اینکه فکر می کنم این نوع ساختار به نوعی بر محور آبجکت هست نه روال.
    احتمالا این نکته رو هم می دونین که پیش فرض public و private بودن در کلاس و ساختار فرق می کنه. کلاس تاکید زیادی بر data encapsulation و data hiding داره که یکی از اساس های برنامه نویسی OOP هست.
    بله اینو میدونم ::ممنون بابت جوابتون

    موفق باشید

  14. #14
    بالاخره چی شد؟ ساختار با کلاس در ++C فرق نمی کنه؟
    یعنی من می تونم یک ساختار با متغیرهای private و متدهای public تعریف کنم . بعد از این ساختار در برنامه های دیگه هم، اگه لازم شد استفاده کنم؟

    البته اگه همین طور باشه و دقیقا ساختار و کلاس با هم فرق نداشته باشند، به هر حال استفاده از ساختار جهت شی گرایی برنامه در عرف برنامه نویسی ++C درست نیست. (شکل قشنگی نداره)

  15. #15
    کاربر دائمی آواتار american_iran2006
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    209

    Cool

    نقل قول نوشته شده توسط zoncpp مشاهده تاپیک
    بالاخره چی شد؟ ساختار با کلاس در ++C فرق نمی کنه؟
    یعنی من می تونم یک ساختار با متغیرهای private و متدهای public تعریف کنم . بعد از این ساختار در برنامه های دیگه هم، اگه لازم شد استفاده کنم؟

    البته اگه همین طور باشه و دقیقا ساختار و کلاس با هم فرق نداشته باشند، به هر حال استفاده از ساختار جهت شی گرایی برنامه در عرف برنامه نویسی ++C درست نیست. (شکل قشنگی نداره)

    تنها تفاوت بین ساختار و کلاس در ++c اینه که class ها اول private هستن بعد publice براشون تعریف میشه ؛ اما در ساختار ها همه چیز اول publice هست و بعد rpivat تعریف میشه

    اینا همه ابزارن ؛ یه موقش هر کدوم که لازم باشه استفاده میشه؛؛ اما در برنامه نویسی های پیشرفته از class ها برای شی گرایی استفاده میکنند

    این خاصیت در c وجود نداره

  16. #16
    سلام.

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

  17. #17
    کاربر دائمی آواتار american_iran2006
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    209

    Cool

    ممنون میشم اگه مقالشو بزارید

  18. #18
    سلام
    لطفا یه مرجع برای من مبتدی معرفی کنید تا به صورت ریشه ی با مفهوم شی گرایی آشنا بشم
    ممنون

  19. #19

    Lightbulb درسته

    نقل قول نوشته شده توسط Smart User مشاهده تاپیک
    سلام.

    قبلا مطلبی رو درباره تفاوت این دوتا خوندم. اصل کارشون یکیه ولی تو چند مورد پیاده سازی با هم فرق دارن که مهمترینش نحوه تخصیص حافظه و برگردوندن حافظه به سیستم است.
    مهمترین دلیل همینه یعنی تخصیص حافظه
    یک نمونه از struck یک نوع مقدازیه و در stack ذخیره میشه و در هنگامی که به هم اساین میشن یه کپی از اونا گرفته میشه دقیقاً مثل یه int یا long یا ...(بر خلاف شئ که فقط آدرس و ارجاع کپی میشه و هر دو پس از اساین به یک شئ اشاره می کنند!) اگه توجه کرده باشین intیه ارجاع مستقیم به ساختار Int32 هست و long به Int64. و چون تو stack ذخیره میشه نباید خیلی بزرگ باشه تا سرعت برنامه پایین نیاد.
    ولی در عوض یه نمونه از کلاس توی heap ذخیره میشه (واسه اونایی که نمی دونن: Heap یه قسمتی از حافظه برنامست ) ولی البته یه ارجاع از اون ( تو C++‎ اشاره گر) باید تو stack باشه تا به عنوان متغیر بشه ازش استفاده کرد.
    در هنگامی که به آخر دامنه می رسیم نمونه ی struck مثل بقیه ی نوع های مقداری کاملاً پاک میشه ولی شئ فقط ارجاعش پاک میشه! در C++‎ خود برنامه نویس باید حافظه گرفته شده توسط شئ رو آزاد کنه ولی تو C#‎ و java این garbage collector که پاکش می کنه.

    در مورد وراثت هم بگم من تو C#‎ مطمئنم که struck وراثت رو پشتیبانی نمی کنه(راستی اون کدی که نوشتی رو امتحان کردی؟!) البته بعید نیست که VC++‎ پشتیبانیش کنه چون هر کاری ازش بر میاد ;)
    در ضمن struct به شما اجازه ی تعریف سازنده پیش فرض(بدون آرگومان) رو نمیده ولی کلاس میده.

    امیدوارم کمک کرده باشم.

  20. #20
    کاربر دائمی آواتار american_iran2006
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    209

    Cool

    نقل قول نوشته شده توسط pa2ab65 مشاهده تاپیک
    در مورد وراثت هم بگم من تو C#‎ مطمئنم که struck وراثت رو پشتیبانی نمی کنه(راستی اون کدی که نوشتی رو امتحان کردی؟!)
    من کامپایلش کردم :: شما هم برای اطمینان این کارو بکنید تا باورتون بشه
    اینم سورس ::

    #include<iostream>
    #include<conio.h>
    using namespace std;
    struct p1{
    void p2();
    };
    void p1::p2(){
    cout <<"didi mishe";
    }
    struct p3 :public p1{
    };

    int main()
    {
    int b;
    p3 a;
    a.p2();
    b=getch();
    return 0;
    }
    در ضمن struct به شما اجازه ی تعریف سازنده پیش فرض(بدون آرگومان) رو نمیده ولی کلاس میده.
    .
    اینم سورس سازنده با فرستادنه ارگومان به شی
    #include<iostream>
    #include<conio.h>
    using namespace std;
    struct p1{
    private:
    int a;
    public:
    p1(int b){
    a=b;
    cout <<a;
    }
    ~p1(){
    cout <<"\n"<<"inam mokhareb";}
    };

    int main()
    {
    int c;
    p1 s(10);
    c=getch();
    return 0;
    }



    اینم سورس سازنده بدون فرستادنه ارگومان

    #include<iostream>
    #include<conio.h>
    using namespace std;
    struct p1{
    private:
    int a;
    public:
    p1(){
    a=10;
    cout <<a;
    }
    ~p1(){
    cout <<"\n"<<"inam mokhareb";}
    void p2(){
    cout <<"\n"<<a;}
    };

    int main()
    {
    int c;
    p1 s;
    s.p2();
    c=getch();
    return 0;
    }

  21. #21
    کاربر دائمی آواتار american_iran2006
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تهران
    پست
    209

    Cool

    نقل قول نوشته شده توسط pa2ab65 مشاهده تاپیک
    مهمترین دلیل همینه یعنی تخصیص حافظه
    یک نمونه از struck یک نوع مقدازیه و در stack ذخیره میشه و در هنگامی که به هم اساین میشن یه کپی از اونا گرفته میشه دقیقاً مثل یه int یا long یا ...(بر خلاف شئ که فقط آدرس و ارجاع کپی میشه و هر دو پس از اساین به یک شئ اشاره می کنند!) اگه توجه کرده باشین intیه ارجاع مستقیم به ساختار Int32 هست و long به Int64. و چون تو stack ذخیره میشه نباید خیلی بزرگ باشه تا سرعت برنامه پایین نیاد.
    ولی در عوض یه نمونه از کلاس توی heap ذخیره میشه (واسه اونایی که نمی دونن: Heap یه قسمتی از حافظه برنامست ) ولی البته یه ارجاع از اون ( تو C++‎ اشاره گر) باید تو stack باشه تا به عنوان متغیر بشه ازش استفاده کرد.
    در هنگامی که به آخر دامنه می رسیم نمونه ی struck مثل بقیه ی نوع های مقداری کاملاً پاک میشه ولی شئ فقط ارجاعش پاک میشه! در C++‎ خود برنامه نویس باید حافظه گرفته شده توسط شئ رو آزاد کنه ولی تو C#‎ و java این garbage collector که پاکش می کنه.

    .
    در این مورد اگه منبع و یا مقاله ای دارید که تو زمینه ++c باشه ؛ لطفا بزارید

  22. #22
    کاربر دائمی آواتار Arash_j13
    تاریخ عضویت
    آذر 1383
    محل زندگی
    مشهد
    پست
    114
    نقل قول نوشته شده توسط pa2ab65 مشاهده تاپیک
    مهمترین دلیل همینه یعنی تخصیص حافظه
    یک نمونه از struck یک نوع مقدازیه و در stack ذخیره میشه و در هنگامی که به هم اساین میشن یه کپی از اونا گرفته میشه دقیقاً مثل یه int یا long یا ...(بر خلاف شئ که فقط آدرس و ارجاع کپی میشه و هر دو پس از اساین به یک شئ اشاره می کنند!) اگه توجه کرده باشین intیه ارجاع مستقیم به ساختار Int32 هست و long به Int64. و چون تو stack ذخیره میشه نباید خیلی بزرگ باشه تا سرعت برنامه پایین نیاد.
    ولی در عوض یه نمونه از کلاس توی heap ذخیره میشه (واسه اونایی که نمی دونن: Heap یه قسمتی از حافظه برنامست ) ولی البته یه ارجاع از اون ( تو C++‎ اشاره گر) باید تو stack باشه تا به عنوان متغیر بشه ازش استفاده کرد.
    در هنگامی که به آخر دامنه می رسیم نمونه ی struck مثل بقیه ی نوع های مقداری کاملاً پاک میشه ولی شئ فقط ارجاعش پاک میشه! در C++‎ خود برنامه نویس باید حافظه گرفته شده توسط شئ رو آزاد کنه ولی تو C#‎ و java این garbage collector که پاکش می کنه.

    در مورد وراثت هم بگم من تو C#‎ مطمئنم که struck وراثت رو پشتیبانی نمی کنه(راستی اون کدی که نوشتی رو امتحان کردی؟!) البته بعید نیست که VC++‎ پشتیبانیش کنه چون هر کاری ازش بر میاد ;)
    در ضمن struct به شما اجازه ی تعریف سازنده پیش فرض(بدون آرگومان) رو نمیده ولی کلاس میده.

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

    struct test1
    {
    int i;
    char c;
    };

    int main()
    {
    struct test1* pt =(test1*)malloc(sizeof (test1));

    }

    تو یه استراکت تعریف شده که برخلاف گفته شما از حافظه استک استافده نمی کنه بلکه از Heap استفاده می کنه یا اینو ببیند یه کد سی پلاس پلاس هست که یه کلاس تعریف شده ولی حافظه ابکت از استک تامین می شه


    class test2
    {
    int i;
    char c;
    };

    int main()
    {
    test2 ob;

    }

  23. #23

    Unhappy

    راستش اون چیزایی که من گفتم مال زبان C#‎ . فکر می کردم تو C++‎ هم همینطوریه. ولی بر اساس چیزایی که دیروز خوندم(که الآنم اومدم تصحیحش کنم) فهمیدم مثل اینکه struct و class و همچنین نحوه تخصیص حافظه شون خیلی با هم تفاوت داره. من شنیدم struct تو C++‎ چندان تفاوتی با کلاس نداره و حرف اون دوست عزیزمون درست بوده. فکر می کنم اساسن واسه همین تو C#‎ سیستم struct رو عوض کردن و اینکه java هم struct نداره به همین دلیله چون java چیزای اضافه ی C++‎ رو حذف کرده واسه اینکه کامپایلرش کوچیکتر شه!!!

    از اینکه اطلاعات غلط دادم معذرت می خوام

  24. #24
    کاربر دائمی آواتار Arash_j13
    تاریخ عضویت
    آذر 1383
    محل زندگی
    مشهد
    پست
    114
    سی ++ لازم بوده که از برنامه های سی پشتبانی کنه برای همین نمی تونستن سی ++ رو فقط شی گرا بسازن برای همین مجبور شدن تمام خصوصیات ساخت یافته سی رو هم نگه داری کنن ولی جاوا و سی شارپ لازم نبوده از چیزی حمایت کنه برای همین ا اول شی گرا ساخته شده و شما اثری از المان های برنامه نویسی ساخته یافته در اون نمی بینید شا نه توابع بدون کلاس دارید و نه متغییر های بدون کلاس استراکت هم به این دلیل نیست که در سی ++ استراکت و کلاس تفاوت چندانی ندارن هر می تونید اعضای داده و اعضای تابعی داشته باشند شما می تونید یه کلاس رو از یه استراکت مشتق کنید و یا بر عکس و این ها همه فقط به خاطر اینکه برای سازگاری با سی نمی تونستن استراکت رو حذف کنن و گرنه حتما حذف می شده

  25. #25
    کاربر جدید
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    کرج
    پست
    3

    نقل قول: تفاوت بین ساختار با کلاس

    ببخشیدا با یک مثال کوچیک میشه بگین چجوری می شه این یکی و مثل اون یکی نوشت
    منظورم کلاس و ساختار

  26. #26

    نقل قول: تفاوت بین ساختار با کلاس

    شی گرایی بصورت خودمونی:
    از چهار محور کلی حمایت میکنه
    1-Abstraction دادن صفات و ویژگی هایی به یک شی... مثلا اگر قرار است یک شی کارمند رو پیاده سازی کنیم صفاتی چون نام وسن و شماره پرسنلی و..از اون برامون مهمه ولی مثلا تعداد موهای سرش یا رنگ چشماش نه!!
    خب پس شی کارمند ما چه شکلی میشه ؟ یه کارمندی میشه که ما با صفاتی که لازم داریم تعریف کردیم،پس توی دنیای واقعی وجود نداره و تنها یک شی مجرد(Abstrac( هستش

    2-Encapsulation:
    کپسوله کردن!!از اسمش پیداس یعنی مثلا مثل وقتی که یک کپسول می خوری تو از مواد داخلش والبته از روش ساخت اون مواد هیچ اطلاعی نداری ..بدردت هم نمیخوره تو فقط میدونی که این کپسول واسه چه مرضی خوبه..و دیگر هیچ! خب توی شی گرایی هم تا جایی که ممکنه کمترین عرضه اطلاعات از نحوه ساخت وپیاده سازی(implementکردن) و حتی صفات رو به بقیه میگم
    3-Iheritance
    ارث بری..که خب مثل اسمش نوع وشیوه ارث بردن کلاس ها از همدیگه رو تعیین میکنه..مثل لاکپشت من که اسمش غزله و یک شی از کلاس لاکپشت هاست .که کلاس لاکپشت ها هم از کلاس مثلا خزندگان ارث بری داره ...پسمن میتونم بگم که غزل یک خزنده و یک لاکپشته!!
    ولی اگه غزل فقط یه شی از کلاس خزنده ها بود که هیچ منطقی نمیتونست بگه غزل حتما لاکپشته.شاید مثلا یه مار می بود!!

    4-polymerphism
    چند ریختی
    که خب اون دوستمون کامل توضیح داده بود.....

  27. #27
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    مهر 1389
    پست
    10

    Post نقل قول: تفاوت بین ساختار با کلاس

    سلام
    عزیزان من تفاوت ساختار با کلاس در سی پلاس پلاس و سی شارپ در نوع داده ایشون هست .
    یعنی اینکه ساختارها نوع های داده ای Value Type هستند ولی کلاسها Refrence Type هستند باز هم یعنی اینکه :
    ساختارها بر روی پشته مقدایرشون نگهداری میشه ولی کلاسها آدرسشون روی پوشته و مقادیر داده هاشون روی Heap دخیره میشه .

    این چیز هایی رو که نوشتم روی شکل بهتر میشه نشون داد که در اینجا امکانش نیست .
    اگه کسی توضیحات کاملتری خواست به من میل بزنه :
    yaserbalaghi@aol.com

  28. #28

    Thumbs up نقل قول: تفاوت بین ساختار با کلاس

    با سلام و عرض ادب

    دوستان تنها تفاوت کلاس و ساختار در نوع دسترسی پیشفرض هست که در ساختار، بصورت عمومی و در کلاس، بصورت خصوصی است من این مطلب رو صراحتا در مرجع کامپایلر ++C آی بی ام خوندم

    شک در این مورد نکنید


  29. #29

    Smile نقل قول: تفاوت بین ساختار با کلاس

    نقل قول نوشته شده توسط Arash_j13 مشاهده تاپیک
    سی ++ لازم بوده که از برنامه های سی پشتبانی کنه برای همین نمی تونستن سی ++ رو فقط شی گرا بسازن برای همین مجبور شدن تمام خصوصیات ساخت یافته سی رو هم نگه داری کنن ولی جاوا و سی شارپ لازم نبوده از چیزی حمایت کنه برای همین ا اول شی گرا ساخته شده و شما اثری از المان های برنامه نویسی ساخته یافته در اون نمی بینید شا نه توابع بدون کلاس دارید و نه متغییر های بدون کلاس استراکت هم به این دلیل نیست که در سی ++ استراکت و کلاس تفاوت چندانی ندارن هر می تونید اعضای داده و اعضای تابعی داشته باشند شما می تونید یه کلاس رو از یه استراکت مشتق کنید و یا بر عکس و این ها همه فقط به خاطر اینکه برای سازگاری با سی نمی تونستن استراکت رو حذف کنن و گرنه حتما حذف می شده
    دقیقا با شما موافقم
    لینک اثبات موضوع

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •