مقالات ترجمه شده دانشگاهی ایران

کلاس های اسکالا

کلاس های اسکالا

کلاس های اسکالا – ایران ترجمه – Irantarjomeh

 

مقالات ترجمه شده آماده گروه کامپیوتر
مقالات ترجمه شده آماده کل گروه های دانشگاهی

مقالات

چگونگی سفارش مقاله

الف – پرداخت وجه بحساب وب سایت ایران ترجمه(شماره حساب)ب- اطلاع جزئیات به ایمیل irantarjomeh@gmail.comشامل: مبلغ پرداختی – شماره فیش / ارجاع و تاریخ پرداخت – مقاله مورد نظر --مقالات آماده سفارش داده شده پس از تایید به ایمیل شما ارسال خواهند شد.

قیمت

قیمت این مقاله: 48000 تومان (ایران ترجمه - Irantarjomeh)

توضیح

بخش زیادی از این مقاله بصورت رایگان ذیلا قابل مطالعه می باشد.

مقالات ترجمه شده کامپیوتر - ایران ترجمه - irantarjomeh

www.irantarjomeh.com

شماره      
۱۵۳
کد مقاله
COM153
مترجم
گروه مترجمین ایران ترجمه – irantarjomeh
نام فارسی
کلاس های اسکالا
نام انگلیسی
Scala Classes
تعداد صفحه به فارسی
۳۸
تعداد صفحه به انگلیسی
۱۶
کلمات کلیدی به فارسی
کلاس, اسکالا
کلمات کلیدی به انگلیسی
Scala, Class
مرجع به فارسی
راهنمای نوآموزان اسکالا، جی. هانت، سوئیس
اسپرینگر
مرجع به انگلیسی
J. Hunt, A Beginner’s Guide to Scala, Object Orientation and Functional Programming, DOI 10.1007/978-3-319-06776-6_9, © Springer International Publishing Switzerland 2014
کشور
سوئیس

فصل ۹

کلاس های اسکالا

۹-۱٫ مقدمه
این فصل تشریح کننده ساختارهای موجود در زبان برنامه نویسی اسکالا به منظور تعریف کلاس ها می باشد.
۹-۲٫ کلاس ها
یک کلاس شامل یکی از ساختارهای اصلی زبان برنامه نویسی اسکالا بشمار می آید. کلاس ها نقش قالب ها را بازی می نمایند که جهت ایجاد نمونه ها به کار گرفته می شوند. کلاس ها به برنامه نویسان اجازه خواهند داد تا قابلیت مشخص سازی ساختار یک نمونه (همانند متغیرها یا فیلدهای نمونه آن، یا موارد دیگر) و کنترل رفتار یک نمونه (همانند روش ها و توابع) به صورت مجزا از خود نمونه را داشته باشند. چنین مولفه ای می تواند مهم تلقی شود، چرا که تعریف هر نمونه بصورت مجزا برای برنامه نویسان بسیار زمانبر (و همچنین ناکارآمد) تلقی می شود. در مقابل، آنها بسادگی می توانند اقدام به تعریف کلاس ها و ایجاد نمونه هایی برای آن کلاس ها نمایند.

کلاس های اسکالا

 
۹-۲-۱٫ تعاریف کلاس
در زبان برنامه نویسی اسکالا، تعریف کلاس دارای فرمت ذیل می باشد:
با این حال لازم است تا به این نکته توجه داشته باشید که قابلیت ترکیب نمودن ترتیب تعاریف خواص، توابع و روش ها، بر حسب ضروریت یک کلاس واحد را خواهید داشت.
بر این مبنا نیازی به یادآوری این فرمت بصورت دقیق ندارید، چرا که معنی بخش های مختلف تعریف کلاس متعاقباً در این کتاب توصیف می شوند. در حقیقت، مورد فوق از یک ویژگی کامل فاصله دارد، اما در عین حال نشان دهنده ویژگی های اصلی این مبحث می باشد. کد برنامه نویسی ذیل به عنوان یک مثال از تعریف کلاس بشمار می آید:
این کد برنامه نویسی مشخص کننده یک کلاس جدید، Person، می باشد که به عنوان زیر کلاس / کلاس فرعی مرتبط با کلاس اسکالای از قبل تعیین شده AnyRef بشمار می آید (کلیه کلاس های مرجع به صورت پیش فرض قابلیت گسترش AnyRef را خواهند داشت، چنین مولفه ای صرفاً در اینجا به عنوان یک شاخص ارائه شده است و به طور معمول حذف می شود). کلاس جدید دربردارنده دو خواص (یا متغیرهای نمونه) است که تحت عنوان name و age خوانده می شوند. این فرایند دارای هیچگونه تابع یا روش تعریف شده ای نمی باشد.
توجه داشته باشید که متغیر نمونه age شامل یک مقدار نوع Int است (چنین موردی به عنوان نوع داده اصلی بشمار می آید)، در حالی که متغیر نمونه name دربردارنده یک نمونه کلاس String  می باشد. در اینجا اسکالا قابلیت استنباط نوع ویژگی مرتبط بر مبنای تخصیص های اولیه اتخاذی به age و name را خواهد داشت – آنها در حقیقت استاتیک هستند، اما نوع آن به وسیله کامپایلر در زمان کامپایل (و نه در زمان اجرا) مشخص می شود. هر دوی متغیرها در ابتدا مقدار می گیرند:  متغیر age مقدار صفر و متغیر name مقدار رشته ای تهی یا “” را حاصل می آورند.
کلاس ها دقیقاً به عنوان قالب ها به کار گرفته نمی شوند. آن ها دارای ۳ مسئولیت متعاقب نیز هستند: روش های نگهداری، فراهم آوردن امکانات مرتبط با توارث و همچنین ایجاد نمونه ها. 
 

کلاس های اسکالا

 
۹ـ۲ـ۲٫ ایجاد یک تعریف کلاس
اجازه دهید تا به کلاس Person برگشته و تعریف این کلاس را بیشتر مورد بررسی قرار دهیم. یک نگارش نسبتاً متفاوت از این تعریف مجدداً در ذیل ارائه شده که هم اکنون تحت عنوان Person1 نامیده می شود:
این کلاس در حقیقت چه چیزی را بیان می دارد. چنین کلاسی مشخص کننده تعدادی از مولفه ها به شرح ذیل می باشد:
این کلاس بیان کننده آن است که هر دوی مؤلفه های نام و سال به عنوان خواص یا ویژگیهای نوشتاری ـ خواندنی بشمار می آیند. چنین موردی را می توان از طریق این حقیقت مشخص ساخت که آنها به صورت پارامترهای vars و vals مشخص شده اند. یک var به عنوان یک ویژگی (یا متغیر محلی) بشمار می آید که قابلیت نوشتن به دفعات متعدد برای آن میسر است. یک val به عنوان یک ویژگی (متغیر محلی) بشمار می آید که صرفاً برای یک بار قابل تنظیم یا مقداردهی است. در هر دو مورد، قابلیت خواندن آنها به دفعات ضروری مورد نیاز وجود دارد. بنابراین، در چنین موردی هر دو مورد مؤلفه های name (نام) و age (سن) را می توان در خوانده و یا مجددا بر مبنای نیازهای سیستم کاربردی تنظیم کرد. در صورتی که ما name را به عنوان یک val مشخص سازیم، بنابراین صرفاً قابلیت نوشتن آن برای یک بار وجود دارد، متعاقباً پس از آنکه یک مقدار یا ارزش خاصی به آن تخصیص داده شد قابلیت تغییر آن دیگر وجود نخواهد داشت.
این تعریف همچنین مشخص کننده آنچه تحت عنوان ایجاد کننده یا سازنده پارامتر صفر خوانده می شود بشمار می آید. این موارد در قالب‘()’  پس از نام کلاس می ایند. هر کلاس در اسکالا حداقل دارای یک مؤلفه سازنده می باشد. وظیفه یک سازنده در حقیقت مقداردهی مقادیر در داخل آبجکت ایجاد شده از آن کلاس است. در این مورد سازنده مرتبط هیچ پارامتری را در اختیار نگرفته و صرفاً یک جایبان پیش فرض را در نظر می گیرد. در اسکالا چنین تعاریفی نوعاً عملیاتی بوده و چنین موردی در این مبحث نیز صحت دارد. ما همچنین می توانیم Person1 را به شرح ذیل تعریف نماییم:
۹ـ۲ـ۳٫ کلاس ها و پیام ها
به هنگامی که پیامی برای یک نمونه مرتبط با یک کلاس ارسال می شود، لازم به ذکر است که آن نمونه صاحب روش مرتبط بشمار نمی آید بلکه مالکیت به عهده کلاس می باشد. دلیل این امر نیز کارآمدی آن است: در صورتی که هر آبجکت دارای یک کپی از کلیه روش های تعریف شده برای کلاس باشد، بنابراین شاهد تعداد زیادی از نسخه های المثنی خواهیم بود. در مقابل تنها کلاس است که دربردارنده تعاریف روش می باشد. بنابراین، به هنگامی که یک آبجکت پیامی را دریافت می دارد، اقدام به جستجوی کلاس آن برای یک روش با توجه به نام داخل پیام می نماید. در صورتی که کلاس خاص خود دربردارنده یک روش با نام مناسب نباشد، این فرایند به ابر کلاس ارجاع شده و پروسه جستجو متعاقباً اعمال خواهد شد. این فرایند جستجو برحسب سلسله مراتب کلاس تا زمانی ادامه می یابد تا یک روش مناسب یافت گردیده یا آنکه سلسله مراتب آن کلاس به انتها برسد (با توجه  به  کلاس  Any).  در صورت اتمام سلسله مراتب،  شاهد  ایجاد  یک  خطا  می باشیم.
۹ـ۲ـ۴٫ نمونه ها و متغیرهای نمونه
در سیستم اسکالا، یک نمونه به عنوان یک مثال مرتبط با یک کلاس بشمار می آید. کلیه نمونه های یک کلاس قابلیت به اشتراک گذاری پاسخ های یکسانی را برای پیام ها (روش ها یا توابع) خواهند داشت، اما آنها حاوی داده های مختلفی هستند (یعنی آنکه آنها دارای یک “حالت” متفاوتی می باشند). به طور مثال، نمونه های کلاس همگی با اشاره، به یک روش یکسان، به پیامهای درخواستی در خصوص مقدار مختصات ـ x جواب می دهند، اما آنها ممکن است مقادیر مختلفی را ارائه دهند.

کلاس های اسکالا

 

۹ـ۲ـ۵٫ کلاس ها  و توارث
از طریق کلاس ها این قابلیت به وجود می آید که یک آبجکت بتواند نسبت به ارث بردن برخی از امکانات از دیگر انواع آبجکت ها اقدام نماید. این بدان معنا می باشد که یک خواص توارثی کلاس فرعی از ابر کلاس های آن وجود خواهد داشت. به طور مثال، تعریف Person فوق به عنوان یک کلاس فرعی AnyRef بشمار می آید که خود در مقابل یک کلاس فرعی Any محسوب می شود. بنابراین Person قابلیت به ارث بردن کلیه روش ها و متغیرهای نمونه ای را خواهد داشت که در AnyRef و Any تعریف شده است (به استثنای مواردی که در Person بازنویسی شده اند).
۹ـ۲ـ۵ـ۱٫ مثالی از توارث
به منظور نشان دادن آنکه چگونه فرایند توارث کار می کند، به شکل ۹ـ۲ توجه نمایید. در اینجا چندین کلاس وجود دارند: Class1 به عنوان یک کلاس فرعی AnyRef، Class2 کلاس فرعی Class1 و Class3 نیز به عنوان کلاس فرعی Class2. توجه داشته باشید که AnyRef به عنوان یک کلاس فرعی مستقیم Any بشمار می آید. در سیستم اسکالا Any به عنوان ریشه کلیه انواع بشمار می آید.
۹ـ۲ـ۵ـ۲٫ مشکل یویو
این فرایند تشریح شده فوق ممکن است سبب بروز مشکلی برای برنامه نویسی شود که سعی در دنبال نمودن فرایند اجرای سیستمی از طریق رهگیری روش ها و اجرای روش نموده باشد. این مشکل تحت عنوان مشکل یویو خوانده می شود (به شکل ۹ـ۳ رجوع کنید) و دلیل انتخاب این نام آن است که در هر بار که شما با یک پیام روبرو می شوید که به “this”  (آبجکت کنونی) ارسال می شود، لازم است تا فرایند جستجو را از کلاس خاص خود آغاز نمایید. چنین مؤلفه ای ممکن است سبب بروز نوعی فراز و فروز در سلسله مراتب کلاس شود.
۹ـ۲ـ۶٫ ایجاد نمونه
یک کلاس قابلیت ایجاد یک نمونه در پاسخ به یک درخواست را خواهد داشت که به وسیله یک سازنده ارائه می شود. این درخواست خود حاصل آمده از کلمه کلیدی new پس از نام کلاس است. سیستم سازنده که می بایست به هنگام ساخت کلاس در نظر گرفته و شرکت داده شود به وسیله پارامترهایی مشخص می شود که دنبال کننده نام کلاس در پرانتزها هستند (با لیست پارامتر خالی که عمدتاً تحت عنوان عدم وجود سازنده پارامتر بشمار خواهد آمد).
۹-۲-۷٫ سازندگان
یک سازنده به عنوان یک روش بشمار نمی آید، بلکه یک عملیات خاص است که به هنگامی اجرا خواهد شد که یک نمونه جدید مرتبط با یک کلاس ایجاد شود. منوط به مباحث ارائه شده به هر کلاس، به هنگام ایجاد نمونه، یک سازنده مختلف را می توان فراخوانی کرد. به طور مثال، یک کلاس ممکن است نیازمند سه فیلد آغاز کننده به هنگام آغاز عملیات باشد. با این وجود، برنامه نویس ممکن است کاربرد کلاس جهت ممانعت از یک، دو و سه مقدار را در نظر داشته باشد. آنها می توانند چنین فرایندی را از طریق تعریف سازندگان کمکی انجام دهند که قابلیت حصول یک یا دو، علاوه بر سه سازنده، پارامتر اولیه را خواهند داشت.
۹ـ۲ـ۸٫ سازنده های کمکی
هر کلاس در اسکالا دارای یک سازنده کمکی می باشد، با این وجود به طور اختیاری هر کلاس در اسکالا می تواند دارای یک یا چند سازنده کمکی باشد.
در صورتی که ما خواستار اجازه دادن به یک Person جهت شرکت در برنامه و تخصیص یک سن به آن باشیم، بنابراین یک راه جهت انجام این کار تعریف یک سازنده کمکی می باشد. یک سازنده کمکی می بایست قابلیت فراخوانی این سازنده و همچنین سازنده دیگر را داشته باشد. این سازنده کمکی بر مبنای چنین موردی اقدام به فراخوانی سازنده اولیه یا دیگر سازنده کمکی تعریف شده در داخل کلاس مشابه (با قابلیت داشتن تعداد مورد نیاز سازنده های کمکی) به عنوان اولین فرایند عملیاتی می نماید. آنها به سادگی قابلیت فراخوانی سازنده ابر کلاس به صورت صریح یا تلویحی همانند سیستم جاوا را نخواهند داشت. چنین موردی این اطمینان را به وجود خواهد آورد که سازنده اولیه به عنوان نقطه اصلی ورودی این کلاس بشمار می آید.
۹ـ۲ـ۹٫ مقداردهی اولیه کلاس
چنین مؤلفه ای ممکن است تا اندازه ای عجیب به نظر برسد، اما شما قابلیت جای دادن کدهای مستقل در هر کجای مورد نظر در مجموعه کلاس را خواهید داشت. در اینجا کد مستقل به معنای جملات قابل اجرا می باشد که به عنوان بخشی از یک روش، تابع یا سازنده مدنظر نیست، اما در داخل حوزه کلاس به طور کلی تعریف می شود. این نوع از کدهای مستقل پس از ایجاد نمونه جدید و پس از تخصیص هر یک از مقادیر برای هر کدام از خواص مشخص شده در داخل سازنده اصلی اجرا می شوند. این کدها را می توان به عنوان بخشی از فرایند مقداردهی اولیه در نظر گرفت و می توان آن را به عنوان راهکاری مشخص ساخت که در آن قابلیت تعریف رفتار مقداردهی اولیه خود را داشته باشید. این نوع از کدهای مستقل نوعاً برای کنترل های اعتبارسنجی، پردازشهای اضافه و عملکردهای مربوط به کنترل ممیزی بکار گرفته می شوند، به طور مثال:

کلاس های اسکالا

 

۹ـ۲ـ۱۰٫ بازنگری کلاس ها و سازندگان
دستور یک کلاس به شرح ذیل است:
ClassName می بایست با حرف بزرگ شروع شود و در حالت حروف کوهانی باشد تا قابلیت دنبال نمودن ویژگی های متعارف سیستم اسکالا را داشته باشد. برنامه سازنده به وسیله پرانتز‘()’  و در پی آن نام کلاس مشخص می شود. در داخل این سازنده معانی خاصی برای پارامترها به شرح ذیل مدنظر خواهد بود:
۹ـ۳٫ کلاس های موردی
این ویژگی به عنوان یک ساختار دیگر بشمار می آید که می توان از آن به هنگام تعریف یک کلاس استفاده نمود، که تحت عنوان کلاس موردی خوانده می شود. یک کلاس موردی مشابه با یک کلاس نرمال تعریف می گردد، که دارای کلمات کلیدی اضافه قرار گرفته در جلوی کلمه کلیدی class می باشد. این کلمه کلیدی case است. به طور مثال:
۹ـ۳ـ۱٫ یک کلاس نمونه
حال اجازه دهید تا مفاهیمی که تاکنون به آنها توجه داشته ایم را در یک حالت نگرشی مجدد Person مورد بررسی قرار دهیم، این دفعه چنین موردی شامل Person4 خواهد بود. کلاس Person4 به شرح ذیل نشان داده شده است:

 

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

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

Irantarjomeh
لطفا به جای کپی مقالات با خرید آنها به قیمتی بسیار متناسب مشخص شده ما را در ارانه هر چه بیشتر مقالات و مضامین ترجمه شده علمی و بهبود محتویات سایت ایران ترجمه یاری دهید.