میشه بیشتر راجب انتزاع یا همون Abstraction توی شی گرایی توضیح بدید چون هنوز واسم پخته نیست و متوجه نشدم...
سلام وقت بخیر، الان فقط مهم این هست که مفهوم Abstraction به چه معنیه، این که چه کاربردی داره، جلسات بعدی متوجه خواهید شد.
بهترین پاسخ
سعید شاهینی۱۹ آبان ۱۳۹۸، ۰۸:۰۰
Abstraction فرض کنیم در اتاقی نشستهایم و فردی از ما میپرسد که لپ تاپ کجاست؟ ما هم جواب فرد مد نظر را داده و میگوییم روی «میز» است. وقتی ما واژه ی میز را به زبان میآوریم، هرگز نمیگوییم که لپ تاپ روی میزی است که چوبی است، رنگ آن قهوه ای روشن است، روی آن یک شیشه قرار دارد، چهار پایه دارد، طول و عرض آن فلان اندازه است و … ما صرفاً واژه ی میز را به زبان آورده و طرف مقابل کاملاً متوجه میشود که منظور ما کدام میز است! هم ما و هم طرف مقابل مان که در اتاق حضور داریم تجربیاتی در برخورد با شیئ به نام «میز» داشته و داریم که به ما کمک کند تا منظور از میز را متوجه شویم. واژه ی Abstraction به معنی «انتزاعی بودن» است. یعنی چیزی که در حد یک ایده است و وجود خارجی ندارد یا این که نمیشود آن را لمس کرد.
در برنامه نویسی شیء گرا، Abstraction به این قضیه اطلاق میشود که ما به جای تمرکز روی یک نمونه ی عینی از چیزی، روی مفهوم چیزها متمرکز شویم و مفهومی کلی را در نظر بگیریم. Abstraction به مفهومی انتزاعی در ذهن برنامه نویس گفته میشود که کلی است و هیچ ارتباطی با یک آبجکت خاص ندارد.
همانطور که گفتیم، ما این چهار اصل در برنامه نویسی شیء گرایی را به طور ناخودآگاه در زندگی روزمره ی خود به کار میبریم و جالب است بدانیم که قلب برنامه نویسی شیء گرایی نیز همین Abstraction است. در واقع، وقتی که ما یک کلاس میسازیم، داریم به صورت انتزاعی و مفهومی، ایده ای را میپرورانیم که هیچ وجود خارجی ندارد تا این که یک شیء از روی آن کلاس ایجاد کنیم.
Abstraction حاکی از آن است که ما اصلاً نیازی نیست تا یک کلاس برای BehzadAccount و کلاس دیگری برای AliAccount بسازیم بلکه یک کلاس مفهومی تحت عنوان BankAccount خواهیم ساخت که از روی آن میتوان به تعداد بی نهایت آبجکت ایجاد کرد.