شی گرایی در پایتون ، بخش نخست

هدف اصلی زبان های برنامه نویسی  کمک به انسان ها برای حل مسائل دنیای واقعی است. گواه این گفته نقش بسیار پررنگ سامانه های نرم افزاری در چیرگی بر چالش های فراروی افراد و سازمان ها در محیط پیچیده و رقابتی کسب و کار های امروزی است. از این روطراحان زبان های برنامه نویسی با آفرینش رویکرد جدیدی به نام برنامه نویسی شی گرا (Object - Oriented Programming - OOP) دامنه مفاهیم ، روش ها و ساختارهای موجود در زبان های برنامه نویسی را چنان گسترش داده اند که با استفاده از آنها به سادگی می توان مفاهیم و پدیده های دنیای واقعی را الگو سازی کرد و نمایش داد. آنان برای دست یابی به این خواسته مهم ، یعنی نزدیک تر کردن مفاهیم دنیای برنامه نویسی با مفاهیم دنیای واقعی از طبیعت و جهان پیرامون ما الهام گرفته اند.

 

 

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

تمامی پدیده ها وچیزهای موجود در دنیای واقعی صرف نظر از اینکه در چه طبقه ای قرار دارند دارای چند ویژگی اصلی هستند : برخی از این ویژگی ها آن چیز یا پدیده  را توصیف می کنند به زبان ساده تر داده هایی در مورد آن به ما می دهند که می توان براساس آنها حالت یا وضعیت  پدیده را مشخص کرد. برخی دیگر از ویژگی ها از جنس رفتار بوده و کار یا کارهایی را که یک پدیده  می تواند انجام دهد بدست می دهند.برای نمونه  چیزی مانند گوشی هوشمند را در نظر بگیرید ویژگی هایی چون  رنگ گوشی ، وزن گوشی ، جنس بدنه ، نوع سیستم عامل  ، مقدار حافظه داخلی و قیمت از جنس داده هستند و اطلاعاتی در باره آن بدست می دهند. اما ویژگی هایی چون دریافت و ارسال پیامک  ، زنگ زدن ، زنگ خوردن ، عکس گرفتن و روشن / خاموش شدن از جنس رفتار بوده و بیانگر کاری است که یک گوشی هوشمند می تواند انجام دهد.

 

برنامه نویسی شی گرا (Object oriented ProgrammingOOP:

همانند دنیای واقعی که در بردارنده دو مفهوم هستی (چیز ، پدیده ، موجودیت) و طبقه بندی است. برنامه نویسی شی گرا (OOP) نیز بر محور دو مفهوم اساسی کلاس (Class) و شی (Object) شکل گرفته است. هرچند که شی گرایی در برگیرنده مفاهیم و اصول زیر است اما ساختار اصلی و هسته مرکزی تشکیل دهنده این رویکرد برنامه نویسی مفهوم کلاس  (Class) است. از این رو در این فصل بیشتر به این مفهموم پرداخته می شود.

کلاس  (Class)   ،  شی  (Object)  ، پوشیده سازی (Encapsulation) ، وراثت   (Inheritance)

چند وجهی (Polymorphism) ، انتزاع داده (Data Abstraction)


شکل1 : مفاهیم و اصول شی گرایی

مفهوم کلاس :

با یک نگاه مفهومی می توان گفت که  کلاس در دنیای برنامه نویسی شی گرا همسان مفهوم طبقه بندی در جهان واقعی است و شی نیز برابر با همان هستی ، چیز یا پدیده های  موجود در محیط پیرامون ماست. برای مثال افرادی که در صف دستگاه خودپرداز بانکی پشت سر هم ایستاده اند. هر کدام یک هستی (چیز) جداگانه هستند که هویت مستقل و یکتای خود را دارند و می توانند در دسته بزرگتری به نام مشتریان بانک طبقه بندی شود ، مشتریان بانک هم می توانند در طبقه بزرگتری به نام انسان ها قرار گیرند. به زبان برنامه نویسی شی گرا هر مشتری بانک یک شی (object) است که می تواند از روی کلاس  (class)مشتری نمونه سازی گردد  به زبان ساده تر در زبان های شی گرا هر شی از روی یک کلاس ساخته می شود به ساختن یک شی از یک کلاس نمونه سازی (Instantiation) گفته می شود. یک تفاوت ظریف بین پدیده ها ی دنیای واقعی با مفهوم شی در برنامه نویسی  شی گرا این است که : در جهان پیرامون ما چیزها و پدیده ها وجود دارند و ما براساس ویژگی ها و رفتارهای مشترک می توانیم آنها را در طبقه مشخصی دسته بندی کنیم اما در دنیای برنامه نویسی شی گرا ابتدا کلاس مورد نظر ساخته می شود و سپس از روی آن یک یا بیش از یک شی مورد نیازساخته خواهد شد.

در برنامه نویسی شی گرا ، هر برنامه در قالب نهادهای کوچکی به نام شی (object) که از روی کلاس ها ساخته می شوند و با یکدیگر برهم کنش دارند در نظر گرفته می شوند. برای داشتن این اشیا ابتدا باید کلاس های مورد نیاز برنامه را تعریف کنیم. از این رو درک مفهوم کلاس در برنامه نویسی شی گرا از اهمیت بسیار بالایی برخوردار است. چرا که بدون وجود کلاس هیچ شی نمی تواند وجود خارجی داشته باشد. کلاس همانند نقشه یک ساختمان است این نقشه خود ساختمان نیست اما راهنمایی است که از روی آن یک خانه واقعی ساخته می شود. دردنیای زبان های برنامه نویسی شی گرا نیز همین گونه است ما ابتدا یک یا چندین کلاس تعریف می کنیم که همانند نقشه یک خانه در برگیرنده ویژگی ها و رفتارهایی است که در برنامه نیاز داریم ، سپس از روی این کلاس ها تعدادی شی می سازیم  همانگونه که از روی یک نقشه می توان تعداد زیادی خانه ساخت از یک کلاس هم می توان به تعداد دلخواه شی ساخت.به زبان ساده تر می توان گفت که : کلاس یک نقشه ساخت است و شی نمونه ای است که بر اساس آن ساخته می شود.

 هر کلاس رفتار (Behavior) و ویژگی های (Attributes) اشیایی که قرار است از آن ایجاد شوند را تعریف می کند. از یک کلاس به هر تعداد می توان شی ایجاد کرد. هر شی بیانگر یک نمونه از کلاس است به هر شی که از روی کلاس ساخته می شود یک نمونه (Instant) از آن کلاس گفته می شود. پس از نمونه سازی ، شی دارای تمامی ویژگی ها و رفتارهایی است که در کلاس تعریف شده است. همانگونه که پیشتر گفته شد ، ساخت یک شی از یک کلاس نمونه سازی (Instantiation)  نامیده می شود.بر همین اساس دو نوع کلاس در زبان های شی گرا وجود دارد :

1-    کلاس های عادی که توانایی نمونه سازی دارند  و به آنها کلاس های واقعی یا غیر انتزاعی (concrete class) گفته می شود.

 2- کلاس هایی که توانایی نمونه سازی ندارند و به آنها کلاس های انتزاعی((Abstract Class گفته می شود.

هر کلاس باید توانایی پیاده سازی دو مفهوم رفتار (Behavior) و ویژگی (Attribute) را داشته باشد. ویژگی ها داده هایی هستند که به صورت یک یا چند متغیر در کلاس تعریف می شوند و می توانند هر شی ساخته شده از روی کلاس را توصیف کنند به زبان ساده تر داده هایی در مورد آن شی به ما می دهند. درفرهنگ واژگان شی گرایی به ویژگی ها ی تعریف شده در یک کلاس اعضای داده ای (Data Members) ، فیلد (Field) یا صفت (Attribute)  نیز گفته می شود.

 رفتار ها (Behaviors)  کار یا کارهایی که یک شی  می تواند انجام دهد را تعریف می کنند. رفتار در یک کلاس به صورت تابع تعریف و پیاده سازی می شود از این رو به رفتارها ، توابع عضو (Member Function) نیز گفته می شود. در شی گرایی به توابع تعریف شده در یک کلاس شگرد ((Method گفته می شود.

 

نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.