
الان سال ۲۰۲۶ است و یک ماشین جدید به نام X Max 5000 Pro، محصول شرکت Power Producers که شرکتی نوپاست، بهتازگی وارد بازار شده. ماشینی خوشدست و تمیز با ظاهری جذاب و قدرت دههزار اسب بخار که میتواند پرواز هم بکند. اگر با این ماشین از قله یک کوه خودتان را پایین بیندازید و گاز بدهید، ماشین پرواز میکند.
این ماشین جذاب و زیبا را تابهحال کسی ندیده. گمانهزنیهای زیادی درباره زمان رونمایی عمومی این ماشین در رسانهها مطرح میشود. پیشبینی میشود این خودروی جدید، اوایل سال ۲۰۲۷ روانه بازار شده و کمی قبل از آن بهصورت عمومی به نمایش دربیاید.
این خودرو، یک خودروی چهارگانه است. هم با بنزین کار میکند، هم با گازوئیل. ضمن اینکه با CNG هم میتواند کار کند. در کنار تمام این سوختهای فسیلی رایج، با برق هم کار میکند. باتری یک میلیون آمپری آن میتواند تا بیست هزار کیلومتر سفر را همراه شما باشد. شارژ صفر تا صد این باتری غولپیکر، تنها پنج دقیقه زمان میبرد و با یک شارژر موبایل هم بهراحتی میتوان آن را در همین مدت کوتاه شارژ کرد.
قیمت این ماشین هم بهاندازه یک ماشین عادی کف جامعه است. بهاندازه قیمت یک تارا یا سورن اما باکیفیتی صد برابر این ماشینها. همه میتوانند X Max 5000 Pro را داشته باشند و سواری با آن را تجربه کنند.
هر کس این متن را تا این جا میخواند، تصوری از ماشین رؤیایی X Max 5000 Pro در ذهنش ایجاد میشود. تمام این تصورات لزوماً شبیه هم نیست. در ذهن یک نفر، X Max 5000 Pro سفیدرنگ است. در ذهن یک نفر دیگر، آبی است. در ذهن نفر سوم هم به رنگی دیگر تصور میشود. این ماشین رؤیایی در مدلهای مختلف و رنگهای مختلف میتواند تولید شود؛ اما در کنار تمام قابلیتهای متغیری که میتواند داشته باشد، یک سری قابلیتهای ثابت دارد که بهخاطر همان قابلیتها، به تمام این مدل ماشینها، X Max 5000 Pro گفته میشود.
این، همان چیزی است که به آن شیءگرایی میگوییم.
شیءگرایی یعنی اینکه بهجای اشاره مداوم به یک مفهوم واحد در برنامهنویسی، یک شیء ایجاد میکنیم و تمام قابلیتهایی که آن شیء میتواند داشته باشد را در آن شیء ردیف میکنیم. از این شیء بارهاوبارها میتوان در فرایند برنامهنویسی استفاده کرد؛ بهعنوانمثال میتوان یک شیء به نام مربع (Square) در زبان برنامهنویسی ایجاد کرد. هر مربع، چهار ضلع با طول مساوی دارد. پس برای تصور یک مربع، تنها کافی است طول ضلع آن را داشته باشیم. این، چیزی است که بین مربعهای مختلف فرق میگذارد.
فرق هر مربع با مربع دیگر، همان طول ضلع آن است وگرنه خیلی دیگر از ویژگیهای مربع، بین مربعهای مختلف مشترک است. فرمول محاسبه مساحت مربع برای تمام مربعها یکی است. محیط تمام مربعها با یک فرمول واحد محاسبه میشود. طول قطر هر مربع نیز با یک فرمول واحد قابلمحاسبه است؛ بنابراین برای اشاره به یک مربع، کافی است یک شیء به نام مربع ایجاد کنیم و طول ضلع آن را از کاربر بگیریم. بقیه ویژگیهای مربع از طریق فرمول ثابتی که یکبار تعریف کردهایم قابلمحاسبه است.

این، همان ایده اصلی شیءگرایی است. بهجای اینکه چندین فرمول جدا از هم و پراکنده و بیربط داشته باشیم، محاسبات هر شکل را در دل همان شکل تعریف میکنیم. فقط مقادیر اصلی را میگیریم و میتوانیم بارهاوبارها مرعی با طول ضلعهای متفاوت تعریف کنیم. در یک برنامه میتوان بینهایت مربع تعریف کرد که هر کدام طول ضلع مربوط به خود را دارند.
شیء در زبانهای برنامهنویسی شیءگرا اصطلاحاً کلاس نامیده میشود؛ بهعنوانمثال، کلاسی به نام کلاس مربع داریم. از این کلاس، چندین و چند نمونه مختلف میتوان ایجاد کرد. هر کدام هم با طول ضلع خاص خود. به این صورت مجبور نیستیم یک کد را بارهاوبارها بنویسیم و خیلی از محاسبات اضافی هم حذف میشود.
ایده جذابی است. دقیقاً مثل کارکرد ذهن خود ما. در ذهن ما هم مفاهیم مختلف بهصورت اشیا فهمیده میشود. همه ما تصوری از گل محمدی داریم. در طول روز هم ممکن است انواعواقسام گل نخندی را ببینیم. هر کدام زا آنها هم کاملاً شبیه بقیه نیستند و با هم تفاوتهایی دارند؛ اما باز هم به همهشان گل محمدی میگوییم. دلیل این است که گل محمدی یک سری ویژگیهای ثابت و یک سری ویژگیهای متغیر دارد. رنگ گل محمدی در تمام نمونههای آن، ثابت است؛ اما اندازه آن برای هر گل فرق میکند. به همین صورت، ذهن ما طبق همین ویژگیها، حکم میکند که فلان گل، گل محمدی هست یا نه.
زبانهای برنامهنویسی جدید، همه بر پایه شیءگرایی شکلگرفتهاند. دیگر خبری از کدنویسیهای پیچیده و اذیتکننده نیست. برنامهها به اشیا بههمپیوسته و مرتبطی تبدیل شدهاند که با هم در تعامل هستند و محاسبات مختلفی هم روی هر کدام یا بین چندتا از آنها اتفاق میافتد.
این اشیا میتوانند از یکدیگر ارثبری کنند؛ بهعنوان مثالی در دنیای واقعی، گل محمدی یک شیء است؛ اما خود گل هم یک شیء است. گل محمدی، زیرمجموعهای از گل است. گل هم به نوبه خود زیر مجموعه شیء دیگری به نام گیاه است. گیاهان، زیر مجموعه جانداران هستند و جانداران هم زیر مجموعه هر چیزی که در این رشته، بالاتر از خودشان قرار دارد. پس گل محمدی، تمام ویژگیهای گل را دارد. ویژگیهای بیشتری هم دارد. گل، تمام ویژگیهای یک گیاه، بهعلاوه ویژگیهای منحصربهفرد خود را دارد. به همین ترتیب، هر شیء، از شیء وسیعتر از خود ارثبری میکند و البته که ویژگیهای اضافه دیگری هم دارد. به این صورت لازم نیست اشیا با تمام ویژگیهای خودشان تعریف شوند. کافی است مجموعهای از اشیا مرتبط با هم تعریف کنیم که هر کدام از بالادست خود ارثبری میکند و به این صورت شبکه پیچیدهای از اشیا بسازیم که با هم در ارتباط هستند.
کدنویسی کمکم جذاب میشود... .