برنامه نویسی شی گرا - اصول و مفاهیم پایه

دسته بندی: آموزش
زمان مطالعه: 2 دقیقه
۲۵ شهریور ۱۳۹۳

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

:: مطالب ارائه شده در این جلسه عبارتند از :

فصل 17 : شئ گرایی در PHP و اصول برنامه نویسی Object Oriented

  • نگاهی به دنیای پیرامون ما
  • مشکلات و محدودیت های برنامه نویسی Functional
  • تشریح مفهوم شئ گرایی و مزیت های آن
  • تاریخچه و ویژگی های برنامه نویسی OOP در زبان PHP
  • شناخت عناصر مهم در برنامه نویسی شئ گرا :
  • طبقه بندی ها (Classes)
  • ویژگی ها (Properties)
  • عملیات و متد ها (Methods)
  • اشیاء (Objects or Instances)
  • ارائه مثال های کاربردی برای درک بهتر مفهوم شئ گرایی، کلاس های اشکال هندسی و افراد
  • نحوه ی نامگذاری کلاس ها، ویژگی ها و متدها
  • نحوه ی ایجاد یک کلاس در زبان PHP
  • عناصر تشکیل دهنده ی یک کلاس (ویژگی ها و متدها)
  • مفهوم کلمات کلیدی public و private و protected در تعریف ویژگی ها و متدهای کلاس
  • نحوه ی تعریف ویژگی های کلاس
  • نحوه ی تعریف متد های (رفتارهای) کلاس
  • نحوه ی ساختن نمونه ها (Instances) از یک کلاس تعریف شده : (کلمه کلیدی new)
  • عملگر ->و :: در PHP
  • متد سازنده (Constructor) در برنامه نویسی شئ گرای PHP
  • متد تخریب کننده (Destructor) در برنامه نویسی شئ گرای PHP
  • مفهوم متدهای getter و setter در کلاس ها
  • مفهوم عناصر استاتیک و کلمات کلیدی self و static در کلاس های PHP
  • تشریح تفاوت بین $this و self
  • نحوه ی ارث بری کلاس ها در زبان PHP (به ارث بردن ویژگی های کلاس فرزند از کلاس پدر)
  • دسترسی به عناصر کلاس پدر با کلید parent
  • Override کردن متدهای کلاس پدر
  • کلیدهای const و final و دلایل استفاده از آنها
:: توجه

این مطلب یک جلسه از آموزش PHP می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش PHP

نویسنده
بیش از 15 سال هست که برنامه نویسی می کنم و از بین همه زبون هایی که کار کردم جاوا، اسمبلی و php رو دوست دارم. دانشجوی دکترای نرم افزارم و توی دانشگاه روی پردازش بیگ دیتا و پردازش موازی کار کردم و عاشق چالش از هر نوعیش هستم! سون لرن مثل بچه منه که 12 سال براش وقت گذاشتم، اینجا همه تلاش می کنیم از شروع یادگیری تا ورود به بازر کار حوزه برنامه نویسی و IT همراهتون باشیم.

جلسات دوره

نظرات کاربران

hosein

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

لقمان آوند

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

زهره دائی

و اگر ممکنه زود تر جواب بدین …من دوس دارم ویدیو بعدی (جلسه۲۳) را زوتر شروع کنم..
خیلی زیاد ممنون..

زهره دائی

سلام..یه سوال
من می تونم الان شی گرایی را بذارم کنار بعدا یادبگیرم؟؟ البته الان کار کردن با کلاس های تعریف شده مثل mysql وpdo رو بلدم(و اگر در جلسات اینده از کلاس های از پیش تعریف شده دیگه ای هم باشه ..می تونم با اونا کار کنم)..ولی اینکه خودم یه کلاس بسازم، زورم میاد بگیرم..احساس می کنم زوده..چون هنوز خوب کاربرد ساخت کلاس رو درک نکردم و اصلا خوشمم نیومده!!
و همون طور خودتون گفتید واسه پروژه های بزرگ مناسبه(منم هنوز به اون حد نرسیدم!!)
-بالاخره چی کار کنم؟ میشه بعدا یاد بگیرم؟..
-تو جلسات بعدی نیاز به ساختن کلاس هست؟؟
در ضمن ممنون از سایت و اموزش خوب و کاملتون..

afshinirani

استاد واقعا لذت بردم قبلا از شی گرایی میترسیدم ولی الان میفهمم خیلی کاربردی ومفیده. باتشکر از توضیحات روان وقابل فهمتون

فرهاد

استاد آوند یه سوال در بخش نظرات مطلب جلسه مربوط به آرایه ها پرسیده بودم اگه امکان داره اون رو هم پاسخ بدید.
متن سوال این بود:
—————
با سلام خدمت استاد آوند
استاد شما فکر می کنید نحوه پیاده سازی توابعی مثل extract و یا توابعی مثل parse_str یا parse_url (که در جلسه قبل توضیح داده بودید) چطوری می تونه باشه؟ منظورم اینه که خودمون چطور می تونیم تابعی رو پیاده سازی کنیم که بعد از فراخوانی اون متغیرهایی به نام های خاصی در دسترس باشند. بدون اینکه قبلا توسط برنامه نویس به کار برده شده یا تعریف شده باشند.
با تشکر
—————

لقمان آوند

سلام
در PHP مفهومی وجود داره به نام Variable variables ها. با استفاده از این مفهوم و بکار گیری مقادیر میشه به راحتی متغیرهای جدید رو از مقادیر رشته ای ایجاد کرد که فکر کنم اگه اینجا رو بخونید خودتون متوجه بشید .

فرهاد

استاد چرا دسترسی به یه عضو استاتیک از یه کلاس با استفاده از کلمه کلیدی this امکان پذیر نیست. ولی به همون عضو استاتیک میشه با کلمه کلیدی self دسترسی پیدا کرد؟ این مساله در php یه مقدار عجیب و غریب به نظر میرسه . مثلا در زبان جاوا یه تابع استاتیک می تونه به راحتی به یه عضو استاتیک دسترسی پیدا کنه ولی در php اینکار با استفاده از this قابل دسترسی نیست. مثلا

private static $var1;
 public static function getVar1(){
  return $this->var1;
 }

این کد خطای نحوی ایجاد می کنه با اینکه هم متغیر و هم تابع هر دو استاتیک هستند.
اما کد زیر به درستی کار می کنه

private static $var1;
 public static function getVar1(){
  return self::$var1;
 }

حتی مشکل از این هم پیچیده تر میشه .طوری که یه تابع غیر استاتیک می تونه با کلمه کلیدی self به یه عضو استاتیک دسترسی پیدا کنه مثلا کد زیر درست کار می کنه.

private static $var2;
 public function getVar2(){
  self::$var2;
 }

خیلی گیج شدم ممنون میشم علت رو برام توضیح بدید. با تشکر

لقمان آوند

ببینید ، this و self مفهوم مختلفی دارند و یکی نیستند. این مورد هم یه قانون هست در php .
this برای دسترسی به آبجکت کنونی استفاده میشه و self برای کلاس کنونی! از self برای دسترسی به عناصر استاتیک و از this برای دسترسی به non-static ها استفاده کنید …

فرهاد

آها الان متوجه شدم یعنی اینکه چون self برای دسترسی به یک کلاس استفاده میشه و از اونجا که متغیرهای استاتیک مستقل از اشیا عمل می کنند در واقع دسترسی به اون ها باید از طریق کلاس انجام بشه و نه شی درسته؟

لقمان آوند

بله، استدلال خوبی هست …

فرهاد

استاد ببخشید یه سوال
وقتی می خوایم یه پروژه رو از ابتدا تا انتها کد بزنیم دقیقا چه مراحلی رو باید به ترتیب انجام بدیم؟ آیا اول باید طراحی منطقی پایگاه داده رو انجام بدیم یا اینکه رابط کاربری رو طراحی کنیم یا ساختار کلاسهای برنامه رو تنظیم کنیم؟ دقیقا چه مراحلی رو باید انجام داد از اول تا آخر؟ با تشکر

لقمان آوند

سلام
در ابتدای جلسات مربوط به پروژه های دوره این مورد رو کاملا توضیح دادیم. ایشالله بهش میرسید.

sadaf

سلام
اینکه در بعضی جاها به جای نوع تابع در کلاس اسم خود کلاس رو میزارن مفهومش چیه؟

 class myclass
{
public myclass a()
{}
}
لقمان آوند

سلام
یعنی نوع مقداری که تابع برمیگردونه یک شئ از کلاس مذکور هست .
اینجا هم myclass یه نوع داده ای محسوب میشه !

nasrin

سلام چرا روی construct ارور میده syntax error, unexpected ‘function__construct’ (T_STRING), expecting function (T_FUNCTION)

لقمان آوند

سلام
در نوشتن تابعتون خطای نوشتاری دارید .
بررسی کنید حتما کلمات public function رو قبل از تعریف constructor گذاشته باشید .
اگر مشکلتون حل نشد کدتون رو بهم بدید که بررسیش کنم و مشکلش رو بهتون بگم .

قاصد

سلام
من مبلغ 37000 تومن رو به عنوان قسط دوم واریز کردم
13009871143
لطفا رسیدگی کنید.

لقمان آوند

ممنون
تائید شد .

پایان زمان پشتیبانی

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

شما هم چنان می توانید سوالات خود را در این قسمت بپرسید اما اولویت پاسخ گویی با دانشجویانی است که بازه پشتیبانی فعال دارند.

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
گزارش مشکل