برنامهنویسی شیگرا
پنج شنبه 2 دی 1389 7:26 AM
همانند سایر زبانهای برنامهنویسی شیگرا زبان اسمالتاک-۸۰ (نه اسمالتاک-۷۲) دارای مفهوم مرکزی شی است. شی یک نمونه از یک کلاس میباشد. کلاسها تعیین کننده نحوه رفتار در نمونههای خود هستند. برای مثال کلاس پنجره باید تعیین نماید که ایا دارای برچسب است یا نه و اعمال مورد نیاز برای پنجرهها همانند باز کردن، بستن، و حرکت دادن را برای آن تعریف نماید. هر نمونه از کلاس پنجره مقادیر مخصوص به خود را داراست و در صورت نیاز میتواند اعمال تعریف شده در کلاس مربوطه را انجام دهد. یک شی در اسمالتاک میتواند دقیقا سه عمل انجام دهد:
وضعیت یک شی در اسمالتاک برای آن شی خصوصی است. دیگر اشیا میتوانند به آن دسترسی داشته باشند یا آن را تغییر دهند در صورتی که یک درخواست (پیام) برای آن شی ارسال نمایند. زمانی که یک پیام دریافت شد شی تعیین میکند که آیا پیام مناسب است یا نه. (نظر آلن کی در این باره این است : در حالی که شی اهمیت زیادی در اسمالتاک داشته است اما پیامها اهمیت بالاتری دارند.) اسمالتاک کاملاً شیگراست یعنی تمام موجودیتها در این زبان از قبیل انواع داده اولیه و ساختارهای دیگر شی هستند. انواع داده اولیه به کلاس مربوط به خود اشاره کرده و عمل متناسب را با توجه به ساختار کلاس خود انجام میدهند و پیام مناسب را ارسال مینمایند. برنامهنویسان قادر هستند تا رفتار و کلاس مربوط به نوع داده اولیه را تغییر دهند تا مطابق میل آنها رفتار نماید این بدان معنی است که در صورتی که برنامهنویس ساختار کنترلی جدید را ایجاد نماید این ساختار کنترلی همانند قبلی رفتار ننموده و رفتار جدید تعریف شده در پیش خواهد گرفت. به صورت حلاصه میتوان گفت: همه چیز در اسمالتاک شی است. (البته به صوزت دقیقتر تمام مقادیر شی هستند و نه متغیرها)
چون تمام مقادیر شی هستند کلاسها نیز خود شی هستند. هر کلاس شی متناسب با متاکلاس مربوطه است. متاکلاسها نیز خود کلاس هستد و نمونهای از کلاس متاکلاس هستند. بلاکها کد نیز شی هستند.