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

نام تاپیک: تفاوت Class و Struct

  1. #1
    کاربر دائمی آواتار www2006
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    Mash <--> Teh
    پست
    187

    تفاوت Class و Struct

    با سلام

    اگر ما کلاسی داشته باشیم که احتیاج به هیچ تابعی نداشته باشد آیا میتوان از یک Struct به جای آن استفاده کرد ؟ بعبارت دیگر آیا کلاسها مزیتی نسبت به Struct دارند یا شکل توسعه یافته ی Struct هستند ؟

  2. #2
    سلام

    نقل قول نوشته شده توسط Robert W Lafore
    می توان گفت یک ساختار , یک گروه غیر فعال از عنصر های داده ای است اما یک کلاس , ترکیب فعالی از داده ها و توابع است . کلاس ها پایه ای ترین عنصر را در برنامه نویسی شی گرا تشکیل می دهند.
    شکل دستوری ساختارها و کلاس ها تقریباً یکسان است , شما می توانید توابع عضو را در یک ساختار قرار دهید درست به همان صورتی که با یک کلاس انجام میدادید و برعکس .
    تنها یک تفاوت دستوری بین کلاسها و ساختار ها وجود دارد , بنا به قرارداد اعضای یک ساختار بصورت پیشفرض عمومی هستند , حال آنکه اعضای یک کلاس خصوصی هستند.
    این تفاوت دستوری نسبتاً آکادمیک است زیرا در بیشتر موقعیت ها , استفاده از یک ساختار به عنوان یک کلاس تنها موجب پیچیدگی و آشفتگی برنامه می شود.
    بدون شک طراحان C++‎ هنگام ایجاد کلاس ها , از شکل دستوری ساختار ها در C استفاده کرده اند و به دنبال آن , طراحی کامپایلر آنرا آسانتر ساخته اند و ساختارهایی به آن افزوده اند که آنرا تا حد امکان شبیه کلاس ها کنند.
    ....

  3. #3
    کاربر دائمی آواتار www2006
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    Mash <--> Teh
    پست
    187
    با تشکر از توضیح شما ...
    من از این نوشته این نتیجه را میگیرم که تفاوتی ( البته در حالتی که مطرح کرده ام ) با هم ندارند ... درسته ؟

  4. #4
    کاربر دائمی آواتار shobair
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تهران
    سن
    43
    پست
    339
    نقل قول نوشته شده توسط www2006
    با تشکر از توضیح شما ...
    من از این نوشته این نتیجه را میگیرم که تفاوتی ( البته در حالتی که مطرح کرده ام ) با هم ندارند ... درسته ؟
    سلام
    زیباتره که از کلاس استفاده کنید. ضمناً شی گرائی فقط محدود به توابع داخل کلاس نمیشه. ارث بری و مخفی سازی رو از دست میدین اگر از کلاس استفاده نکنید.

    شبیر

  5. #5
    کاربر دائمی آواتار www2006
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    Mash <--> Teh
    پست
    187
    نقل قول نوشته شده توسط shobair
    ارث بری و مخفی سازی رو از دست میدین اگر از کلاس استفاده نکنید.
    به این نکتش اصلا توجه نکرده بودم ... ممنون

  6. #6
    کاربر تازه وارد آواتار Pouria.NET
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    تهران
    پست
    83
    سلام. علاوه بر Inheritance و Polymorphism باید این نکته رو هم در نظر داشت که کلاسها Reference Type هستند و Structure ها Value Type .

  7. #7
    کاربر دائمی آواتار www2006
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    Mash <--> Teh
    پست
    187
    نقل قول نوشته شده توسط Pouria.NET
    باید این نکته رو هم در نظر داشت که کلاسها Reference Type هستند و Structure ها Value Type .
    میشه بیشتر توضیح بدید ..؟

  8. #8
    کاربر دائمی آواتار Armanprogrammer
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    کرج
    پست
    109
    کلاس با struct خیلی فرق داره در حال حاضر از مهمترین چیزهایی که تو علم کامپیوتر وجود داره security یا امنیت که تو کلاس رعایت میشه همچنین بحث ورثه که خیلی مهمه که اینا شی گرایی رو تشکیل میده همچنین آقای puria.net تو struct ها referenece نیز وجود داره و این فرق اونا نیست و همچنین فرق class , structure وجود متد تو کلاسه و به نظر من باید به جای structure از کلاس استفاده کرد

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

  10. #10
    کاربر دائمی آواتار Armanprogrammer
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    کرج
    پست
    109
    نقل قول نوشته شده توسط Arash_j13
    شاید تو زبان ها دیگه کلاس و استراک باهم فرق داشته باشن ولی توی سی++ تنها فرقشون اینکه ادسترسی پیش فرض برای کلاس private و برای استراک public هست و این هم به خاطر سازگاری باسی به وجود اومده و گرنه هیچ تفاوتی با هم ندارن شما می تونید یه کلاس رو از یه استراکت مشتقی کنی برای یه استرکت چند ریخیتی رو پیدا سازی کنی کلا هر کاری بشه با یکی کرد با اون یکی هم می شه
    دوست عزیز حرف شما درسته کلا فرق شی گرایی به private بودنشه و این فرق کوچیکی نیست و خیلی اساسیه و همچنین وراثت رو تو شی گرایی میتونیم ببینیم

  11. #11
    سلام
    دوست عزیز حرف شما درسته کلا فرق شی گرایی به private بودنشه و این فرق کوچیکی نیست و خیلی اساسیه و همچنین وراثت رو تو شی گرایی میتونیم ببینیم
    تنها یک تفاوت دستوری بین کلاسها و ساختار ها وجود دارد , بنا به قرارداد اعضای یک ساختار بصورت پیشفرض عمومی هستند , حال آنکه اعضای یک کلاس خصوصی هستند.
    بصورت پیشفرض , نه از روی اجبار ! خیلی راحت مثله یک کلاس میتوان یک داده و یا تابع عضو را بصورت خصوصی در یک ساختار تعریف کرد.

    دوباره تمام پستهای بالا رو بخون , بعد پست بعدی ات رو بده .

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

  13. #13
    اگه قرار باشه توی یه شیء فقط از داده استفاده بشه دیگه مخفی بودن چه معنایی می‌ده؟
    یه کم فکر کنید بعدش پست بدید
    مرسی...

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

  15. #15
    سلام

    خوبید؟
    اصلا خبر دارید موضوع تاپیک چیه؟

    خداحافظ

  16. #16
    کاربر دائمی آواتار Arash_j13
    تاریخ عضویت
    آذر 1383
    محل زندگی
    مشهد
    پست
    114
    سلام

    فکر کنم شما بی خبر بودید

    اگه قرار باشه توی یه شیء فقط از داده استفاده بشه دیگه مخفی بودن چه معنایی می‌ده؟
    یه کم فکر کنید بعدش پست بدید
    مرسی...

  17. #17
    سلام،
    متن زیر بخش مربوط به توضیح رابطه class و struct از کتاب The C++‎ Programming Language نوشته Bjarne Stroustrup است:
    10.2.8 Structures and Classes [class.struct]

    By definition, a struct is a class in which members are by default public; that is,
    struct s {...
    is simply shorthand for
    class s { public : ...
    The access specifier private : can be used to say that the members following are private, just as
    public : says that the members following are public. Except for the different names, the following
    declarations are equivalent:
    class Date1 {
    int d ,m , y ;
    public :
    Date1 (int dd , int mm , int yy);
    void add_year (int n ); // add n years
    };
    struct Date2 {
    private:
    int d ,m , y ;
    public:
    Date2 (int dd , int mm , int yy );
    void add_year (int n ); // add n years
    };
    Which style you use depends on circumstances and taste. I usually prefer to use struct for classes
    that have all data public.
    I think of such classes as ‘‘not quite proper types, just data structures.’’
    Constructors and access functions can be quite useful even for such structures, but as a shorthand
    rather than guarantors of properties of the type (invariants, see &#167;24.3.7.1).
    It is not a requirement to declare data first in a class. In fact, it often makes sense to place data
    members last to emphasize the functions providing the public user interface. For example:
    class Date3 {
    public:
    Date3 (int dd , int mm , int yy );
    Section 10.2.8 Structures and Classes 235
    void add_year (int n ); // add n years
    private :
    int d ,m , y ;
    };
    In real code, where both the public interface and the implementation details typically are more
    extensive than in tutorial examples, I usually prefer the style used for Date3 .
    Access specifiers can be used many times in a single class declaration. For example:
    class Date4 {
    public :
    Date4 (int dd , int mm , int yy );
    private :
    int d ,m , y ;
    public:
    void add_year (int n ); // add n years
    };

    Having more than one public section, as in Date4 , tends to be messy. So does having more than
    one private section. However, allowing many access specifiers in a class is useful for machinegenerated
    code.


  18. #18

  19. #19
    کاربر دائمی آواتار Armanprogrammer
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    کرج
    پست
    109
    نقل قول نوشته شده توسط oVERfLOW
    اگه قرار باشه توی یه شیء فقط از داده استفاده بشه دیگه مخفی بودن چه معنایی می‌ده؟
    یه کم فکر کنید بعدش پست بدید
    مرسی...
    آقای محترم حرف شما در مورد یک کلاس درسته ولی شما وراثت و نادیده گرفتین شاید داده ای داشته باشیم که بخوایم فقط برای child ها استفاده بشه

  20. #20
    کاربر دائمی آواتار هم دانشگاهی
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    بیرجند
    پست
    326

    نقل قول: تفاوت Class و Struct

    سلام دوستان !

    من تمام این تاپیک رو خوندم اما . . .

    هنوز هم درست نفهمیدم که چرا با وجود struct از class استفاده میشه ؟!؟!؟

    آخه اینها که همشون یکی هستند ( فقط پیش فرض ساختار public و پیش فرض کلاس private )

    غیر از اینه ؟!؟!؟!؟!

  21. #21
    کاربر دائمی آواتار هم دانشگاهی
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    بیرجند
    پست
    326

    نقل قول: تفاوت Class و Struct

    کسی نبود کمک من کنه ؟!؟!؟!؟

  22. #22

    نقل قول: تفاوت Class و Struct

    یه بار دیگه سوال رو بپرس تا جواب بدیم از اول نمی شه خوند
    Kernel Mode Developer
    RootKitSMM@Yahoo.com

  23. #23
    کاربر دائمی آواتار هم دانشگاهی
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    بیرجند
    پست
    326

    نقل قول: تفاوت Class و Struct

    همون سوال منو میخوندی دیگه :

    هنوز هم درست نفهمیدم که چرا با وجود struct از class استفاده میشه ؟!؟!؟

    آخه اینها که همشون یکی هستند ( فقط پیش فرض ساختار public و پیش فرض کلاس private )

    غیر از اینه ؟!؟!؟!؟!

  24. #24

    نقل قول: تفاوت Class و Struct

    باید خدمتتون عرض بشه که Struct یک حالت خیلی خلاصه شده از Class هست در حالیکه یک Class امکانایی بسی بیشتر از Struct دارد .
    یک ساختار در واقع بیشتر برای این تعریف میشود که مثلا یک نوع داده ای دلخواه مثلا نوع داده ای دانشجو ( که متشکل از یکسری نوع های داده ای
    از جمله : آرایه جهت نگهداری اسم ، متغیر جهت نگهداری معدل و ...) تعریف بشود . حال آنکه یک Class مفهومی بالاتر از این را دارد :

    • تمامی اصول و روابط شی گرایی برای کلاسها طراحی شده اند از جمله : Polymorphism , Inheritance , Operator Overloading , ...
    • یک Struct بیشتر شبیه یک نوع داده ای است که متشکل از یکسری نوع های داده ای دیگر است ولی یک Class در بردارنده Object ای است با کلی ویژگی
    • و ...

    پیشنهاد میکنم حتما به کتاب مراجعه کرده تا به تفصیل متوجه این تفاوت بشوید ، هرچند که این موضوع چندبار هم در تالار بحث شده است .

    موفق باشید ./






  25. #25
    کاربر دائمی آواتار هم دانشگاهی
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    بیرجند
    پست
    326

    نقل قول: تفاوت Class و Struct

    آخه خب ارث بری هم که روش کار میکنه ! داخلش میشه متد ( تابع ) هم تعریف کرد !

    پس فرقش با class چیه ؟!

    واقعا نمیفهمم !

  26. #26
    کاربر دائمی آواتار هم دانشگاهی
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    بیرجند
    پست
    326

    نقل قول: تفاوت Class و Struct

    شما که جواب نمیدین ب؟ لااقل این رو بگین :

    آیا میشه از یک struct مشتق گرفت ؟

تاپیک های مشابه

  1. control class,entity class,boundary class
    نوشته شده توسط ali643 در بخش تحلیل و طراحی نرم افزار
    پاسخ: 12
    آخرین پست: یک شنبه 25 فروردین 1392, 15:22 عصر
  2. چه موقع از Class استفاده کنیم و کی از Struct
    نوشته شده توسط hm1984ir در بخش C#‎‎
    پاسخ: 4
    آخرین پست: چهارشنبه 18 مهر 1386, 05:22 صبح
  3. struct
    نوشته شده توسط dokhtare baba در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: یک شنبه 03 تیر 1386, 16:57 عصر
  4. ذخیره کردن struct در فایل
    نوشته شده توسط narges1986 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: سه شنبه 09 خرداد 1385, 22:37 عصر
  5. struct , class
    نوشته شده توسط همان مهمان در بخش C#‎‎
    پاسخ: 6
    آخرین پست: سه شنبه 01 مهر 1382, 00:13 صبح

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

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