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

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

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

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

مفاهیم پیشرفته در برنامه نویسی شی گرای PHP

  • توضیحات تکمیلی در مورد کاربرد های کیورد static
  • افزودن قابلیت شمارش تعداد نمونه های ساخته شده از یک کلاس
  • کپی کردن اشیاء با استفاده از clone
  • عدم کپی شدن اشیاء با عملیات انتساب و رفتار این عملیات
  • تشخیص کلاس یک شئ و نمونه ی ساخته شده با عملگر instanceof
  • تعین نوع پارامترهای ورودی متد ها (type hinting)
  • مقداردهی خصوصیت های خاص فرزندان یک کلاس در متد سازنده ی آن
  • استفاده از متد سازنده ی کلاس پدر/والد در کلاس های فرزند
  • توضیحات تکمیلی در مورد کیورد final
  • جلوگیری از extend شدن یک کلاس با استفاده از کیورد final
  • ثابت های جادویی برای دریافت نام کلاس، متد و فضای نام کنونی
  • دریافت اطلاعات همه ی خصوصیات یک شئ و کلاس
  • دریافت مشخصات همه ی متدهای یک شئ و کلاس
  • آشنایی کلی با زبان UML و مدلسازی ساختار کلاس های یک سیستم
  • کلاس های abstract در PHP و کاربرد آنها
  • متدهای abstract و توضیح آن
  • رابط ها (interfaces) و دلیل استفاده از آن ها
  • آشنایی با مفهوم Object Iteration
  • اصول و مفاهیم برنامه نویسی شئ گرا :
  • مفهوم ارث بری (Inheritance)
  • مفهوم مخفی سازی (Encapsulation)
  • مفهوم چند شکلی (Polymorphism)
  • مفهوم انتزاع/تجرید (Abstraction)
  • Serialization : تبدیل اشیاء و متغیرهای مختلف به رشته و بازیابی آن ها
  • کاربرد مهم تبدیل اشیاء به رشته و ذخیره سازی مستقیم آنها در فایل، سشن و دیتابیس
  • دیدن کاربرد serialization در محبوبترین cms دنیا ، وردپرس
  • دیدن تمام متدها و خصوصیت های  mysqli و PDO و نحوه ی جستجو برای یادگیری کاربرد آنها
  • طراحی ساختار کلاس های وسایل نقلیه
  • مینی پروژه : طراحی و پیاده سازی ساختار کلاس بندی اشیاء هندسی مختلف و تشریح مفاهیم پیشرفته ی شی گرایی در بستر آن
:: توجه

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

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

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

جلسات دوره

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

محمد میرزایی جوینانی

استاد با استفاده از constractor نمیشد wife رو براش تعریف کرد؟
حتما باید از setwife استفاده کرد؟

لقمان آوند

بله خوب معلومه که میشه
هر مقداری رو توی توابع set قرار میدید میشه با پاس دادنش به کانستراکتور هم ست کنید

فرهاد

استاد چرا در php کتابخانه های پیش ساخته اینقدر کم و غیر کافی هستند؟ مثلا در این صفحه کلاس ها و interface های از پیش تعریف شده در پی اچ پی لیست شده که همون طور که می بیند انگشت شمار هستند
http://php.net/manual/en/reserved.interfaces.php
و مثلا در این صفحه exception های پی اچ پی لیست شدند
http://php.net/manual/en/reserved.exceptions.php
که واقعا محدودند و اصلا جوابگوی برنامه نویس ها نیستند. دلیلش چیه که پی اچ پی در مقایسه با زبان هایی مثل .net اینقدر کدهای از پیش تعریف شده کمی دارند؟ و آیا این به این معنی هست که برنامه نویس ها باید از همین کدهای محدود فقط استفاده کنند؟
با تشکر

لقمان آوند

اقا فرهاد این موارد که کتابخانه نیستند!
اگر لیست کتابخانه های php رو می خواید کافیه list of php libraries رو سرچ کنید تا هر نوع کتابخونه ای رو که می خواید پیدا و استفاده کنید. php اپن سورس هست و حجم کتابخانه های تولید شده توسط افراد مختلف در سطح وب خیلی زیاد هست. تقریبا برا هر کاری کتابخونه های خوبی داره.

فرهاد

استاد آوند عزیز با توجه به اینکه شما در این جلسه در مورد شی گرایی صحبتتون رو تمام کردید ولی در مورد enumeration ها در php صحبتی به میون نیومد من در مورد نوع های شمارشی در اینترنت سرچ کردم و به مطالب زیر برخوردم:
http://www.dreamincode.net/forums/topic/201638-enum-in-php/
اما ظاهرا اونطوری که این مطلب اشاره کرده برای استفاده از enumeration ها باید از pear و pecl استفاده کنیم به همین خاطر من این سوال برام پیش اومد که pear و pecl چی هستند و اگه امکان داره در موردشون توضیح مختصری بدید. با تشکر

لقمان آوند

pear و pecl مجموعه ای از کدها و پکیج های آماده هستند که کدهایی رو در بر دارند. این کدها ممکنه در پروژه های مختلف قالب استفاده باشه و شما می تونید از پیاده سازی شده اونها در این دو مجموعه استفاده کنید. در اینجا هم توضیحات خوبی در موردش داده شده.
php به صورت پیشفرض نداره enum ها رو و اگر چنین چیزی گفته پس باید از همین دو مجموعه استفاده کنید. در عین حال می تونید با یه ترفند ساده شبیه سازی این چنینی از enum ها داشته باشید :

 abstract class DaysOfWeek{
 const Sunday = 0;
 const Monday = 1;
 // etc.
}
$today = DaysOfWeek::Sunday;
فرهاد

استاد آوند نمی دونم این مورد رو در جلسه مربوط به شی گرایی اشاره کرده بودید یا نه اما معمولا به این دلیل که ست کردن مستقیم متغیرهای کلاس بدون استفاده از متد های ست و گت مشکل امنیتی به وجود میاره ما از متدهای ست و گت استفاده می کنیم. اما من با متد get_class_vars متغیرهای کلاس مثلا mysqli رو در آوردم ,و دیدم که متغیرهای زیادی از این کلاس به صورت عمومی در دسترس هستند. آیا این مورد مشکلی به وجود نمی یاره و چرا خود php به این روش متغیرها رو در دسترس عموم گذاشته؟ با تشگر از وقتی که می ذارید بابت پاسخگویی

لقمان آوند

سلام
بله این مورد رو در دوره گفتیم.
معمولا متغیر هایی که در این کلاس ها در دسترس هستند قابل نوشتن نیستند و مشکلی بوجود نمیاره … (readOnly هستند)

Massud Tarekhi

با سلام
استاد من توابع ()autoload__ و ()call__ رو متوجه نشدم می شه توضیح بدید

لقمان آوند

تابع __call زمانی صدا زده میشه که متدی رو صدا بزنیم که در اون آبجکت قابل دسترسی نباشه!
تابع __autoload رو هم که مثال زدیم در جلسه 23 دوره . ببینید متوجه خواهید شد .

shahriar rad

ببخشید آقای آوند اگه سوالم ابتدایی
آیا ما از شی گرایی استفاده میکنیم که نظمی به کدها ، حرفه ای تر کردن کارها و دسترسی آسون و …
را داشته باشیم؟
ممنون میشم مستقیم جواب بدین
چون من ویدیوهای شما را هر چی کد میزنین سریع همون و میزنم کمی بی دقت شدم در صحبت ها
عذر خواهی من و بپذیرین

ممنون بابت جوابتون

وحید صالحی

بله یکی از مباحث و اهداف استفاده از شی گرایی همین نظم در کدها و کدنویسی هست در کنار ده ها مزیت دیگه مثل مدیرت راحتتر پروژه ها کدنویسی تمیز تر و سریعتر و مواردی بسیار مفید دیگر هست

shahriar rad

با سلام و درود آقای آوند یه سوال داشتم
چرا ما باید از کلاس و … استفاده کنیم؟

لقمان آوند

مگه ویدیوهای مربوط به شی گرایی رو ندیدید ؟ مزایایی که در مورد برنامه نویسی شی گرا گفتیم دلایلی استفاده از اون میشه !

mohamad mohamadi

سلام ببخشید دونستن همه ی جلساتی که گذاشتید تا حالا 22 جلسشو خوندم
برای اون 3 4 تا پروزه آخری اجباریه؟ من همرو خوندم مهمارو یاد گرفتم ولی مثلا برنامه نویسی شی گرائو قست 2 را خوب نخوندم ندونستنش مشکل پیش میاره؟

لقمان آوند

بهتره که یاد بگیرید و بعد برید سراغ پروژه ها . ولی در عین حال پروژه ها به مشکلی بر نمی خورید اگر اکثر محتوای جلسات قبل رو دیده باشید .

میلاد رش

سلام تو php storm هر کاری میکنم نمیتونم نوشته های فارسی رو تو خروجی درست نشون بدم همش کاراکتر های نامفهوم میاره ؟؟؟؟

لقمان آوند

تو مرورگر یا تو خود phpStorm .
اگر تو خود phpStorm منظورتون هست به علات عدم پشتیبانی صحیح از یونیکد در کدنویسی هست و برای ویرایشش مشکل دارید ولی تو مرورگر نباید مشکلی در نمایشش باشه …

yazda

همین کدی که توی کامنت قبلیم گذاشتم .. تایید نشده هنوز.

لقمان آوند

سلام
init یه متد دلخواه هست که خود برنامه نویس نوشته و مال وردپرس نیست . می بینید که در بالا هم اول همین متد رو صدا زده .

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

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

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

نیاز به لاگین

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