آرشیو نویسنده

اصول برنامه نویس شئ‌گرا در Flash – قسمت دوم

امکان تعریف و استفاده از اشیاء در یک زبان برنامه‌نویسی مزایای بسیاری دارد که از جمله می‌توان به موارد زیر اشاره نمود:

  •        جلوگیری از پیچیده‌ شدن کدها و سادگی درک منطق برنامه.
  •        مجتمع سازی دستورات و امکانات مختلف در قالب عملکردهای اشیاء.
  •        امکان پنهان سازی (Encapsulation) عملکردها و سطح بندی آنها.
  •        سادگی استفاده از اشیاء با تعریف یک نمونه (Instance) از کلاس آنها.
  •        سادگی استفاده مجدد از اشیاء در قسمت‌های مختلف برنامه.
  •        مدیریت حافظه بهینه تر و کنترل بر روند تعریف و حذف اشیاء.

مفهوم کلاس (Class)

همانطور که می‌دانید شئ یک مفهوم انتزاعی است. بنابراین به منظور پیاده سازی اشیاء در محیط برنامه‌نویسی از تعریف کلاس استفاده می‌گردد.

جهت تفهیم بیشتر این مبحث با استفاده از برنامه‌نویسی شئ‌گرا، کلاسی به نام Car تعریف کرده و تمام خصوصیات (Property)، عملکردها (Method) و رویدادهای (Event)  اتوموبیل را در آن تعریف می‌نماییم.

به عنوان مثال:

– کلاس Car دارای خصوصیاتی مانند نام، مدل، رنگ، وزن، حداکثر سرعت، ظرفیت سوخت و حداکثر سرنشین است.

– کلاس Car دارای عملکردهایی مانند بازکردن درها، روشن کردن، گازدادن و ترمز گرفتن است.

– کلاس Car دارای رویدادهایی مانند توقف، حرکت، مصرف سوخت و اتمام سوخت است.

Package}
   public class Car }
      private var name:String;
      private var color:String;
      private var model:String;

      private var weight:int;
      private var fuel:int;
      private var capacity:int;
      private var maxSpeed:int;

      public function stop();
      public function start();
      public function openDoor();
      public function initiate();
      public function speedUp();
   {
{

کلاسی که مشاهده می‌کنید به صورت نمادین، اغلب ویژگی‌های یک اتوموبیل را در برگرفته و می‌تواند به نوعی نماینده عملکرد آن باشد.

البته روشن است که در این کلاس هنوز کدی برای توابع و رویدادهای آن نوشته نشده و دقیقاً مشخص نیست که هر بخش از آن قرار است که چه کاری را انجام دهد. ولی استفاده از آن به عنوان یک مثال، خللی در فهم درست این مقوله وارد نمی‌کند.


اصول برنامه نویس شئ‌گرا در Flash – قسمت اول

شئ‌گرایی یکی از مفاهیم مهم و حیاتی در حیطه زبان‌های برنامه‌نویسی است، به گونه‌ای که می‌توان تمام زبان‌های برنامه‌نویسی را به دو نسل شئ‌گرا  و غیر شئ‌گرا (زبان‌های قدیمی و منسوخ شده‌‌ای مانند Ansic، Basic و StdPascal) تقسیم نمود.

با استفاده از برنامه‌نویسی شئ‌گرا، می‌توان کدهای یک برنامه را به گروه‌های مستقلی به نام شئ تقسیم نموده و آنها را مدیریت نمود. شئ یک مفهوم انتزاعی است. در حقیقت منظور از شئ، مجموعه‌ای از متغیر‌ها و توابع به هم پیوسته است که در تعامل با یکدیگر عمل نموده و هر کدام از آنها بخشی از کار یک موجودیت واحد را بر عهده می‌گیرند.

برای تعریف مفهوم شئ‌گرایی می‌توان از مثال ساده و معروف اتوموبیل استفاده نمود.

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

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

هر چند که ممکن است این ساختار با تعریف متغیرها و توابع متعدد قابل دسترس باشد، اما هماهنگ نمودن تمامی این اجزاء برای رسیدن به یک هدف واحد که همان عملکرد اتوموبیل است، کار دشواری می‌باشد.

از طرف دیگر، یکی از ویژگی‌های بارز چنین سیستمی، تغییرات متعدد و نیاز به ارتقاء آن است که باز هم نیاز به یک ساختار مجتمع را برجسته‌تر می‌سازد. شئ‌گرایی یک پاسخ منطقی برای مرتفع نمودن تمامی مشکلات و دشواری‌های ذکر شده است.

به منظور کسب آمادگی برای شروع مبحث شئ‌گرایی بهتر است که ابتدا مرور مختصری بر اصطلاحات و مفاهیم مورد نیاز در این مبحث داشته باشیم:

حوزه عملکرد یا فضای نام (Namespace):

نوعی صفت عام است که به متغیرها یا توابع یک کلاس نسبت داده شده و بازه دسترسی‌پذیری آنها را در ارتباط با دیگر اجزای برنامه مشخص می‌نماید. به عنوان مثال، public و private دو حوزه عملکرد هستند که سطوح دسترسی عمومی و محلی را در شئ‌گرایی تعریف می‌کنند.

(ادامه مطلب…)


حل مشکلات SSL در اتصال به HP iLO با استفاده از مرورگر

سرویس iLO که قبلا نیز در مطلبی به بررسی آن پرداخته بودم، یکی بهترین و کاراترین روشهای مدیریت سرور از راه دور است که برای سرورهای HP ارائه شده است.

ilo

اگر که در سرورهای نسل ششم و هفتم HP این سرویس را فعال کرده باشید، عمدتا در سالهای اخیر برای اتصال به آن با استفاده از مرورگرهای معمول IE، Firefox و Chrome مشکل خواهید داشت.

دلیل مشکل این است که cert های تولید شده در این سرورها با توجه به زمان ساختشان بسیار قدیمی هستند و همچنین سرور SSL موجود بر روی آنها از نسخه های جدید TLS استفاده نمیکند.

در نتیجه بدون ایجاد تغییرات اساسی در تنظیمات security مرورگر و صرفا با اکتفا به ایجاد exception یا کار در حالات compatibility view یا trusted sites به هیچ وجه نمیتوان به آنها متصل شد.

راه حل اول این موضوع این است که از یک مرورگر ساده مانند Midori استفاده کنید که هر نوع خطای ssl را بپذیرد. البته ممکن است که به این روش از برخی امکانات موجود ماند Remote Manager نتوان استفاده کرد.

راه حل دوم، غیر فعال کردن TLS 1.2 در مرورگر است.

  • برای انجام این کار در Mozilla Firefox:

به صفحه تنظیمات about:config مراجعه کرده و مقدار security.tls.version.max را برابر با 1 و مقدار پارامتر security.tls.version.min را برابر با صفر تنطیم کنید. سپس مرورگر را ریستارت کنید.

  • برای انجام این کار در Internet Explorer:

به صفحه Internet Options و قسمت Advanced مراجعه کرده و گزینه Use TLS 1.2 را غیر فعال کنید.

پس از انجا تنظیمات فوق، خطاهای ناشی از SSL در اتصال به سرور نادیده گرفته میشوند.


حل مشکلات Gradle در اندروید استودیو پس از بروزرسانی

تصور میکنم که اگر از کاربران اندروید استودیو در مورد بزرگترین مشکل در کار با این IDE کارا و جذاب سوال شود، همگی به یک مورد اشاره خواهند کرد: Gradle

gradlephant-291x300_light

بله، متاسفانه خطاها و مشکلاتی که در کار با افزونه Gradle پیش می آید بیش از حد متعارف است. البته باید به این نکته اشاره کرد که بخش زیادی از این مشکلات به خاطر عدم دسترسی ایرانیان به JCenter است اما تمام مسائل را نمیتوان به گردن آن انداخت.

مخزن پیش فرضی که gradle جهت دانلود فایلها و dependency ها از آن استفاده میکند، JCenter است که به دلیل بسته شدن دسترسی ip های ایران به این پایگاه، انواع مشکلات مربوط به sync و دانلود پیش می آید. اما با تغییر repo پیش فرض به Maven این مسائل حل میشوند.

مشکل جدیدی که با بروز رسانی gradle به نسخه 2.14.1 خودنمایی میکند، عدم تطابق آن با قابلیت Instant Run در اندروید استودیو است.

در واقع اگر خطای ذیل در زمان اجرای برنامه مشاهده شد:

this version of android studio is incompatible with the gradle plugin used 2.14.1

راه حل آن غیر فعال کردن instant run در Settings/Preferences > Build, Execution, Deployment option > Instant Run میباشد.

 

پ.ن: این قابلیت باعث تسریع فرآیند اجرای برنامه بر روی emulator یا گوشی متصل به دستگاه در زمان اجراهای متوالی میگردد.


مقایسه سرعت اجرای دستورات شرطی در Android

  • فکر میکنید سرعت اجرای دستورات شرطی در android چه تفاوتی با یکدیگر دارد؟!
  • کدام دستور بیشترین و کدامیک کمترین زمان را مصرف خواهند کرد؟!

در این پست میخواهیم مقایسه ای بین سرعت اجرای سه دستور شرطی If، Switch و عملگر سه گانه (Ternary) داشته باشیم. البته با توجه به استفاده از جاوا در اندروید، شاید بهتر بود که عنوان این پست را مقایسه دستورات شرطی در جاوا، نامگذاری کنیم، اما از آنجا که کل عملیات برای اجرا در موبایل و در محیط Android Studio اتفاق افتاده است، نام فعلی را انتخاب نمودم.

Android (ادامه مطلب…)



  • آرشیو:

  • .
    Copyright (c) 2010 www.mshams.ir