مقاله کامل تهیه نرم افزار حقوق و دستمزد

مقاله کامل تهیه نرم افزار حقوق و دستمزد

فصل اول
آشنایی با نرم افزارهای استفاده شده در سیستم حقوق ودستمزد
1-1 مطرح شدن بعنوان يك استاندارد صنعتی
انجمن توليدكنندگان كامپيوتر اروپا (ECMA) زبان C#را در سوم اكتبر سال 2001 بعنوان يك استاندارد پذيرفته (ECMA-334) و بدنبال آن تلاش های وسيعی برای كسب گواهی ISO نيز انجام شده است. زبان فوق در ابتدا توسط شركت مايكروسافت و بعنوان بخشی از دات نت پياده سازی و بلافاصله پس از آن توسط شركت های اينتل، هيوليت پاكارد و مايكروسافت مشتركا، جهت استاندارسازی پيشنهاد گرديد.
زبان C#بگونه ای طراحی شده است كه نه تنها وابستگی به يك Platform خاص را ندارد، بلكه در اغلب موارد وابستگی RunTime نيز ندارد. كامپايلر C#می تواند بر روی هر نوع معماری سخت افزاری طراحی و اجرا گردد. در برخی از نسخه های اوليه كامپايلر زبان فوق كه توسط برخی از شركت های جانبی ارائه شده است، كدهای C#را به بايت كدهای جاوا كمپايل می كنند. يكی از چنين كامپايلرهائی را می توان در سايت Halcyonsoft.com مشاهده نمود. بنابراين كدهای C#براحتی قابليت حمل بر روی محيط های متفاوت را دارا خواهند بود.
مشخصات تعريف شده زبان C#با ساير استاندارهای تعريف شده ECMA نظير (ECMA-335) CLI (Common Language Infrastructure) بخوبی مطابقت می نمايند. CLI قلب و روح دات نت و CLR(Common Language Runtime) است. اولين نسخه از كامپايلر زبان C#كه از CLI استفاده می كند، NET Framwork. مايكروسافت است.
با توجه به موارد گفته شده، مشخص می گردد كه اين زبان بسرعت بسمت استاندارد شدن حركت و با تاييد استانداردهای مربوطه از طرف انجمن های معتبر بين المللی و حمايت فراگير شركت های معتبر كامپيوتری در دنيا مسير خود را بسمت جهانی شدن بخوبی طی می نمايد.
2-1 C#چيست ؟
طراحان زبان C#با تاكيد و الگوبرداری مناسب از مزايای زبانهائی نظير ++C، C و جاوا و ناديده گرفتن برخی از امكانات تامل برانگيز و كم استفاده شده در هر يك از زبانهای فوق، يك زبان برنامه نويسی مدرن شی گراء را طراحی كرده اند. در مواردی، برخی از ويژگی های استفاده نشده و درست درك نشده در هر يك از زبانهای گفته شده، حذف و يا با اعمال كنترل های لازم بر روی آنها، زمينه ايجاد يك زبان آسان و ايمن برای اغلب پياده كنندگان نرم افزار بوجود آمده است. مثلا C و ++C می توانند مستقيما با استفاده از اشاره گرها عمليات دلخواه خود
را در حافظه انجام دهند. وجود توانائی فوق برای نوشتن برنامه های كامپيوتری با كارائی بالا ضرورت اساسی دارد. اما در صورتيكه عملياتی اينچنين بدرستی كنترل و هدايت نگردند، خود می تواند باعث بروز مسائل (Bugs) بيشماری گردد.
طراحان زبان C#، با درك اهميت موضوع فوق، اين ويژگی را كماكان در آن گنجانده ولی بمنظور ممانعت از استفاده نادرست و ايجاد اطمينان های لازم مسئله حفاظت نيز مورد توجه قرار گرفته است. جهت استفاده از ويژگی فوق، برنامه نويسان می بايست با صراحت و به روشنی خواسته خود را از طريق استفاده از Keyword های مربوطهاعلان نمايند( فراخوانی يك توانائی و استفاده از آن).
C#بعنوان يك زبان شی گراء عالی است. اين زبان First-Class را برای مفهوم Property (Data Member) بهمراه ساير خصائص عمومی برنامه نويسی شی گراء حمايت می كند. در C و ++C و جاوا يك متد get/set اغلب برای دستيابی به ويژگی های هر Property استفاده می گردد. CLI همچنان تعريف Property را به متدهای get/ser ترجمه كرده تا بدين طريق بتواند دارای حداكثر ارتباط متقابل با ساير زبانهای برنامه نويسی باشد .C#
بصورت فطریEvents ، Declared Value، Reference Type ، Operator Overloading را نيز حمايت می كند.
1-2-1 كد مديريت يافته
با استفاده از نسخه پياده سازی شده C# توسط مايكروسافت، می توان همواره كد مديريت يافته ای را توليد كرد. يك برنامه C# پس از كامپايل، بصورت برنامه ای در خواهد آمد كه شامل دستورالعمل های تلفيق شده (CIL)Common Intermediate Language است -درست بر خلاف دستورالعمل های مختص يك ماشين خاص-.
CILگاهاً با نام MSIL (Microsoft Intermediate Language) یا به اختصار IL نيز ناميده می شود)، در مفهوم مشابه بايت كدهای جاوا بوده و شامل مجموعه ای از دستورالعمل های سطح پايين قابل فهم توسط تكنولوژی مبتنی بر CLI نظير CLR مايكروسافت خواهد بود. اين برنامه ها بدين دليل كد مديريت يافته، ناميده می شوند كه CLR مسئوليت تبديل اين دستورالعمل ها به كدهای قابل اجرا برروی ماشين و ارائه اغلب سرويس های اساسی برای كدينگ نظير : Garbage Collection، مديريت Heap و عمر مفيد يك Object و يا Type Verification را فـراهم می كند.
2-2-1 روش يادگيری C#
يادگيری اين زبان برای افراديكه دارای سابقه آشنائی با يكی از زبانهای برنامه نويسی ++C ،C و يا جاوا باشند كار مشكلی نخواهد بود، حتی افراديكه دارای آشنائی اوليه با جاوا اسكريپت و يا ديگر زبانهای برنامه نويسی نظير ويژوال بيسك می باشند، امكان پذير و راحت خواهد بود. برخی از برنامه نويسان حرفه ای بر اين باور هستند كه C# نسبت به VB.NET با اقبال بيشتر و سريعتری مواجه خواهد شد، چراكه C# نسبت به ويژوال بيسك خلاصه تر است. حتی برنامه های بزرگ و پيچيده ای كه توسط C# نوشته می گردند خواناتر، كوتاه و زيبا خواهند بود. برخی از ويژگی های ارائه شده در C# نظير Unsigned Integer، Operator OverLoading و امنيت بيشتر Type ها، در VB.NET وجود نداشته و اين امر می تواند دليلی بر فراگيرتر شدن C# نسبت به VB.NET نزد برنامه نويسان با تجربه باشد.
برای يادگيری هر يك از زبانهای حمايت شده در دات نت، می بايست از BCL (Basic Class Library) مربوط به.NET Framework شروع كرد. C# خود صرفاً دارای ۷۷ کلمه کليدی يا Keyword بوده كه برای اكثر برنامه نويسان ناآشنا نخواهند بود. در مقابل BCL، دارای ۴۵۰۰ كلاس و تعداد بيشماری متد و Property است كه برنامه نويسان C# ، می توانند از آنها برای انجام عمليات دلخواه خود استفاده نمايند. شايد يكی از مسائل قابل توجه جهت يادگيری اين زبان برای برخی از برنامه نويسان حرفه ای عدم وجود برخی از ويژگی ها و امكاناتی باشد كه در گذشته و از طريق ساير زبانهای استفاده شده، بخدمت گرفته می شدند. مثلا عدم وجود امكاناتی جهت توارث چندگانه (MI) سلسله مراتبی يك شئ.
3-2-1 مفاهيم شیء گرايی در C#
يکی از مهمترين و اصلی ترين مشکلات برای افرادی که به تازگی با محيط‌های برنامه نويسی شی‌گرا آشنا می شوند، درک مفاهيم شيءگرائي است. در حقيقت درک مفاهيمي چون شیء و مولفه (Component) بسيار دشوار نيست، کافيست کمي به اطراف خود با دقت نگاه کنيم. ما در دنيايي از اشياء مختلف زندگی ميکنيم. تلويزيون، راديو در و پنجره، همه و همه نمونه هايی از اشياء مختلفي هستند که در اطراف ما وجود دارند. اما درک و پياده‌سازی اين مفهوم در يک زبان برنامه‌سازی اندکی متفاوت است.
3-1 شیء چيست؟
همانطور که گفتيم، با يک ديد تصويری به سادگی می توانيد اشياء مختلفی را در اطراف خود بيابيد. تمامی اين اشياء دارای سطوح و درجه پيچيدگی متفاوتی هستند.
پيچيدگی آنها به شکل ظاهری و نوع رفتار آنها بستگی دارد.
در شیء گرايی به “شکل ظاهر” در اصطلاح، صفت يا Attribute و به عملی که شیء انجام می دهد، رفتار يا Behavior می گويند.
برای مثال يک صندلی را در نظر بگيريد. صندلی صفات مختلفی دارد ولی رفتار خاصی ندارد. مثلاً پايه های صندلی جزو صفات آن بشمار می روند. با کمی دقيق تر شدن می توان از اين صفات برای توصيف صندلی استفاده کرد. بعنوان مثال تعداد پايه های صندلی می تواند عددی بين 3 تا 5 باشد. محل نشستن صندلی می تواند جمله‌اي در وصف جنس آن و مقدار مصرف ماده سازنده آن باشد. پشتی صندلی را نيز می توان بعنوان متغييری boolean در نظر گرفت چراکه برخی از صندلی ها فاقد پشتی هستند. با استفاده از اين سه صفت ساده، به راحتی می توان صندلی را توصيف نمود و با همين سه صفت ميتوان گونه‌های مختلفی از صندلی را نيز توصيف کرد.
منظور از رفتار، عملی است که يک شیء انجام می دهد. از اينرو برای صندلی نمی توان به سادگی صفات آن، رفتاری را متصور شد. مثلاً مي‌توانيم بگوئيم تاشو بودن صندلی يکی از رفتارهای آن می تواند باشد، چراکه عملی است كه می تواند يک صندلی آنرا انجام دهد.
حال شیء ديگری مانند تلويزيون را در نظر بگيريد. صفاتی که می توان برای تلويزيون در نظر گرفت عبارتند از: صفحه نمايش، سازنده آن و … برای تلويزيون به راحتی می توان رفتار در نظر گرفت: خاموش و روشن شدن، تغيير کانال و کم و زياد کردن صدا. اين رفتارها بر اثر درخواست يک انسان يا همان کاربر اتفاق می افتند. شیء تلويزيون را ميتوان بصورت زير نمايش داد :
بطور کلی، يک شیء را ميتوان بوسيله صفات و رفتارهای آن بطور کامل توصيف نمود. يک شیء حتماً جسمی فيزيکی نيست، بلکه هر چيز قابل تصوری است که دارای صفت و رفتار است. در حقيقت ميتوان گفت يک شیء شبيه به يک اسم است. اگر بتوان برای اين اسم، صفت و رفتاری تعريف کرد، آن وقت تبديل به شیء می شود.
از ديد انتزاعی، زمان را نيز می توان بعنوان يک شیء در نظر گرفت. صفات زمان، ساعت، دقيقه و ثانيه هستند و گذشت زمان، رفتار آن است. در ايجاد شیء هيچ محدوديتی وجود ندارد و همه چيز به تخيل شما باز ميگردد.
در زبان C#، اشياء بوسيله کلاسها (Class) نمايش داده می شوند. داخل کلاس، صفات بصورت فيلدها ظاهر می شوند و جهت پياده سازی رفتارها از متدها استفاده می گردد. به مثال زير توجه نمايد :
کد:
class Time{int hours;int minutes;int seconds;void pastime(){//some implementation}}
در اين مثال، کلاس Time مشاهده می شود. اين کلاس با کلمه کليدی class اعلان گرديده است. همانطور که ميدانيد، دو کروشه باز و بسته {} نيز ابتدا و انتهای کلاس را مشخص مي‌کند. فيلدها دارای نام و نوع هستند. متدها دارای نام و نوع بازگشتی می باشند و پياده‌سازی آنها داخل بلوک مربوط به خود آنها (بين دو {}) انجام ميگردد.
يک شیء مي‌تواند هر يک از نيازمندي‌های يک پروژه باشد. طراحی و اعلان صحيح اشياء و مشخص كردن صفات و رفتار آنها يکی از مقوله‌های مهم در مهندسی نرم افزار بر پايه شیء‌گرائي است، چراکه همگی تراکنشها بين اشياء صورت می پذيرند.
1-3-1 کلاسه کردن اشياء مقدمه ای بر ارث بری Inheritance))
طبقه‌بندی اشياء در گروههای مختلف بسيار سودمند است. زمين شناسان سنگها را طبقه بندی مي‌کنند و زيست شناسان گياهان و حيوانات را طبقه‌بندی مي‌کنند. طبقه بندی اشياء باعث مي‌شود تا با دقت و ظرافت بيشتری بتوان به جزئيات هر طبقه و يا هر نوع پرداخت.
برای مثال حيوانات را در نظر بگيريد. زيست شناسان حيوانات را به دسته‌های پرندگان، مهره داران و خزندگان تقسيم مي‌کنند. پرندگان صفاتی همچون منقار و بال دارند، مهره‌داران بدنی مودار دارند و خون گرمند و خزندگان خون سردند. از ديد رفتاری نيز پرندگان پرواز می کنند، مهره داران به بچه های خود شير مي‌دهند و خزندگان مي‌خزند. اينها ويژگيهای ارشد يا عام هستند و صفات ديگری در زير گروهها افزوده مي‌شوند. در گروه اصلی تنها صفات و رفتارهايی قرار مي‌گيرند که عموميت داشته باشند و ساير صفات و رفتارها در زير گروهها معين مي‌گردند. بعنوان مثال کلاس پرندگان را بشکل زير ميتوان پياده‌سازی نمود :
کد:
class Bird{string beakDescription;int wingSpan;string typeOfBird;void fly(){//some implementation}}
می توان اين کلاس را بعنوان کلاسی عمومی برای پرندگان در نظر گرفت که دارای فيلدی جهت تعيين نوع پرنده نيز مي‌باشد. با استفاده از فيلد typeOfBird مي‌توان گونه پرنده مورد نظر را معين نمود.
2-3-1 سلسله مراتب اشياء (بررسی ارث بری در محيط شیءگرا)
روش گفته شده در بالا، جهت افزودن صفات برای يک طبقه‌بندی ساده کارآمد است، اما برای طبقه‌بندي‌های پيچيده قابل قبول نيست. تصور کنيد حجم عظيمی نيازمندی در پروژه وجود داشته باشد و به سطح های مختلفی از طبقه بندی نياز داشته باشيد. با افزودن صفات جديد به هر يک از طبقات و سطحها به پيچيدگی پروژه به شدت افزوده می شود.
اتفاقی که در مورد زير شاخه‌ها رخ مي‌دهد، ايجاد يک سلسله مراتب طبيعی است. برنامه‌نويسی شیءگرا ، متدولوژيی را جهت مديريت سلسله مراتب طبيعی فراهم می نمايد. بعنوان مثال، اگر در يک پروژه يکی از طبقه بنديهای ما حيوانات باشند، منطقی است که شیءاي از طبقه حيوانات در رأس سلسله مراتب قرار گيرد و در طبقات و زير شاخه‌های سطوح پائينی، پرندگان، مهره داران و خزندگان قرار گيرند. در سطح بعدی مي‌توان چند پرنده مانند اردک، کلاغ و … را نيز در زير شاخه پرندگان قرار داد. اين سلسله مراتب تا سطح مورد نظر قابل تعميم است.
در برنامه نويسی شیءگرا، مفهومی که اشياء را تحت يک سلسله مراتب خاص قرار ميدهد، ارث‌بری يا Inheritance ناميده مي‌شود. مثلاً طبقه‌بندی حيوانات را در نظر بگيريد، شیءای که در بالاترين سطح قرار مي‌گيرد، شیء Animal است. اين شیء دارای ويژگيهايی بسيار کلی و عمومی است و بايد چنين هم باشد، چراکه سرگروه بايد هميشه ويژگيهايی را داشته باشد که در زير شاخه ها بطور مشترک وجود دارد و هر يک از زير شاخه‌ها به ويژگيهای سرگروه خود، ويژگيها و مشخصات خاص خود را می افزايند.
در اين مثال، سرگروه Animal تنها مي‌تواند دارای صفت يگانه “زيستن” باشد، چراکه همين صفت آنرا از ساير اشياء، نظير سنگ و در و پنجره و بطور کل اجسام، متمايز می‌نمايد. رفتار اين شیء نيز می تواند “تنفس کردن” و “غذا خوردن” باشد. حال برای اينکه شیءای بتواند در اين سلسله مراتب وارد شود، حداقل بايد دارای صفت شیء سرگروه اين سلسله مراتب باشد، درغير اينصورت نمي‌تواند در زير شاخه آن قرار گيرد.
تفاوت Animal با ساير اشياء که در اين سلسله مراتب قرار مي‌گيرند در آنست که ساير اشياء مي‌بايست صفاتی ديگر و – يا رفتارهای ديگری را نيز به صفات و رفتارهای Animal اضافه کنند. اين صفات و رفتارها مسلماً جزئی‌تر و دقيق‌تر از صفات و رفتارهای سرگروه است. همين مسئله مفهومی را در پيمايش سلسله مراتب‌ها بوجود می‌آورد : در پيمايش بالا به پائين (Top-Down) سلسله مراتب‌ها به جزئيات يا گونه‌های خاص برخورد مي‌کنيم، حال آنکه در پيمايش پائين با بالا (Bottom-Up) به گروهها و دسته‌های عمومی مي‌رسيم.
اشياء سطوح پائينی (که به آنها child مي‌گوئيم) صفات و رفتارهای اشياء سطح بالاتر خود را به ارث مي‌برند. به اين اشياء بالاتر يا سرگروهها نيز parent مي‌گوئيم. به اين رابطه موجود بين child و parent در اصطلاح رابطه “هست” يا “بودن” (is-a relationship) مي‌گويند. مثلاً مي‌گوئيم “اردک يک پرنده است”.
سادگی ارث بری از نحوه ايجاد سلسله مراتب ارث‌بری نشأط مي‌گيرد. اشياء سطوح پائينی (child) در تعريف خود اشياء سطوح بالايی (parent) خود را مشخص مي‌کنند. در اين جا تنها کاری که لازم است يک child نسبت به parent خود انجام دهد افزودن صفات و رفتارهای مربوط به خود است. شکل زير يک سلسله مراتب را نشان مي‌دهد.
همانطور که در اين شکل ملاحظه می‌کنيد، سرگروه که همان Animal است، دارای صفت Living و رفتارهايی همچون Eat() مي‌باشد. زير شاخه اين شیء کليه صفات آنرا به ارث مي‌برد، بعلاوه اينکه صفت Wing و رفتار Fly() را نيز به صفات و رفتارهای parent خود مي‌ا‌فزايد. حال برای زير شاخه‌ای که در زير Bird قرار مي‌گيرد نيز مي‌توان صفات و رفتارهای خاص ديگری در نظر گرفت.
علاوه بر طبقه‌بندی اشیاء در دسته‌های مختلف و سادگی در سازماندهی آنها بوسيله ارث‌بری، استفاده از ارث‌بری در انجام کارها نيز صرفه‌جويی ايجاد مي‌کند. هر شیء جديدی که به يک سلسله مراتب وارد مي‌شود، بطور خودکار تمامی صفات و رفتارهای کليه parent های خود را دارا مي‌باشد و بعلت ارث‌بری نيازی به تعريف مجدد اين صفات برای شیء
جديد نمی‌باشد. به بيان ديگر مي‌توان گفت، ارث‌بری روشی برای استفاده مجدد از صفات و رفتارهای موجود است.
استفاده از ارث‌بری اين امکان را برای طراحان نرم افزار فراهم مي‌کند تا وقت بيشتری برای تفکر بر روی منطق برنامه صرف کنند و درگير پيچيدگي‌های پياده‌سازی و نگهداری نرم افزار نشوند.
3-3-1 انتزاع (Abstraction)
اکنون زمان مناسبی برای بحث درباره انتزاع است. برخی اشياء تا حدودی انتزاعی هستند و برخی ديگر کاملاً واقعی. بعنوان مثال، چيزی بعنوان Animal وجود ندارد، بلکه اين تنها توصيف کلاسی از اشياء است. همچنين موجوديتی وجود ندارد که از لحاظ فيزيکی يک پرنده باشد. اين تنها طبقه‌بندی و دسته‌بندی است که مورد استفاده قرار مي‌گيرد.
از طرف ديگر شیءای وجود دارد بنام اردک که واقعاً يک اردک است و دارای کليه صفات و رفتارهای آن مي‌باشد. البته بايد توجه داشت که هر اردک تنها نمونه‌ای از “اردک” است. (منظور در اينجا آنست که موجوديتی مانند يک اردک که واقعا وجود دارد، خود نمونه‌ای (instance) از کلاس اردک است. درک مطالب در اينجا شايد به اندکی تأمل و حوصله نياز داشته باشد!
برای شیءای مانند Animal يا Bird، نمی‌توان صفتی همچون “پاهايی پهن” و يا رفتاری مانند “را رفتن شبيه به اردک” را تعريف نمود. همچنين از اشياء Animal و Bird تنها يک نمونه مي‌تواند وجود داشته باشد که اين نمونه‌ها نيز بسيار مهم هستند، چراکه اين نمونه‌ها هستند که ساختار يک سلسله مراتب را تشکيل مي‌دهند و صفات و رفتارهای کلی آن را معين مي‌نمايند. ( البته توجه کنيد که استفاده از کلمه abstract در زبان C# خود يگانه بودن و همچنين انتزاعی بودن کلاس را نشان مي‌دهد).
تعريف و توصيف صحيح اين اشياء انتزاعی، همچون Animal و Bird، در طبقه‌بندی و کارآمدی ساختار سلسله مراتبی بسيار می‌تواند موثر باشد. مثال زير نحوه تعريف و ايجاد اشياء انتزاعی در C# را نشان می دهد.
کد:
abstract class Animal{//abstract definitions and implementations}class Bird : Animal{//class implementation}
در اين مثال کلاس Animal بصورت abstract اعلان شده تا مشخص شود که شیءای انتزاعی است. چون شیء انتزاعی عملاً وجود ندارد، نمی‌توان نمونه‌ای جديد از روی آن ايجاد کرد و تنها يک شیء از آن وجود دارد. در کلاس دوم، Bird، نشان داده شده است که اين کلاس از کلاس انتزاعی Animal ارث‌بری دارد. اين عمل با استـفاده از “:” در جــلوی نام Bird و سپس به دنبال آن نـــام کلاسی که Bird از آن ارث‌بری مي‌کند، يعنی همان Animal، صورت گرفته است.
4-3-1 اشياء درون اشياء (مقدمه ای بر کپسوله‌کردن يا Encapsulation)
ساختارهای سلسله مراتبی روشی جهت دستيابی به روابط بين اشياء هستند. هر چند روشهای ديگری نيز برای نشان دادن روابط بين اشياء وجود دارد. يکی از اين روشها که بسيار معمول نيز هست، استفاده از اشياء درون اشيائی ديگر است.
يکی از اصطلاحات رايج برای بيان اين مفهوم، کپسوله‌کردن يا Encapsulation است. استفاده صحيح از اين مفهوم باعث کاهش پيچيدگی شده و تنها آن قسمت اطلاعات و جزئيات را نمايان مي‌کند که برای درک يک شیء لازم است. بعنوان مثال، پرواز پرندگان مسئله‌ای است که توجه بسياری از زيست شناسان را به خود جلب کرده است. آنها برای درک پرواز، ساختار بالها، پرها و اسکلت پرندگان را مورد مطالعه قرار می‌دهند. برای درک پرواز، بررسی همين اجزاء و جزئيات کافيست و نيازی به مطالعه درباره سيستم گوارش پرندگان نمی‌باشد. برای بررسی يك موضوع تنها اطلاعاتی مربوط به آن در حل و بررسی مسئله می‌تواند موثر باشد و اطلاعات اضافی، نه تنها وقت‌گير و بی فايده است، بلکه می‌تواند گيج کننده نيز باشد و بر پيچيدگی مسئله ، بدون دليل، بيفزايد. با استفاده از کپسوله‌کردن تنها آن قسمت از اطلاعات که مورد نظر است در دسترس قرار مي‌گيرند.
شیء Bird را که قبلاً درباره آن صحبت کرديم، در نظر بگيريد. پرندگان دارای منقار و بال هستند. خود بال يک شیء است که دارای صفاتی نظير پر و اندازه است. رفتار آن نيز می‌توان باز و بسته شدن در حين پرواز باشد. نکته قابل اشاره در اينجا، کلمه “داشتن” است. اعمالی وجود دارند که پرنده آنها را انجام مي‌دهد و اين اعمال خود جزئی از پرنده هستند.
بطور کلی، رابطه “داشتن” (has-a relationship) بين يک شیء و اعمالی که بر روی اجزای خود انجام مي‌دهد، وجود دارد. بعنوان مثال مي‌گوئيم “پرنده بال دارد”. در اينجا چون بال شیءای متعلق به پرنده است که پرنده روی آن عملی

فایل : 69 صفحه

فرمت : Word

26900 تومان – خرید
محصول مفیدی برای شما بود ؟ پس به اشتراک بگذارید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  • کاربر گرامی، در این وب سایت تا حد امکان سعی کرده ایم تمام مقالات را با نام پدیدآورندگان آن منتشر کنیم، لذا خواهشمندیم در صورتی که به هر دلیلی تمایلی به انتشار مقاله خود در ارتیکل فارسی را ندارید با ما در تماس باشید تا در اسرع وقت نسبت به پیگیری موضوع اقدام کنیم.

مقالات مرتبط