• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل با مفهوم کلاس
#1
سلام دوستان عزیز

من با مفهوم کلاس تو php مشکل دارم

من نمیدونم کی باید کلاس تعریف کنم؟

مثلا بعضی جاها میبینم مشکلم با include حل میشه ولی تردید دارم که اون چیزی رو که میخوام

include کنم کلاس بگیرم یا یک سری تابع رو تو یه فایل include کنم؟

اصلا چه زمانی باید کلاس تعریف کنیم؟Huh
  پاسخ
تشکر شده توسط :
#2
کلاس ها در اصل برای جلو گیری از تکرار کد و بهینه سازی کد و دقت در کد نویسی و .... تعریف می کنند
  پاسخ
تشکر شده توسط :
#3
شما باید دید شی گرایی داشته باشید بخاطر این که شی گرایی یک مفهوم مشترک برای طراحی و پیاده سازی سیستم های نرم افزاریه، پس بهتره اول مفهوم شی گرایی را یاد بگیرید و بعد روش برنامه نویسی شی گرا در زبان php!
مطمئنا کمک زیادی در ساخت نرم افزار های بزرگ برای بالا بردن انتزاع و استفاده مجدد از کد و کاهش پیچیدگی به شما خواهد کرد.
  پاسخ
تشکر شده توسط : shgninc
#4
سلام

منم همین مشکل رو داشتم . این ابهام برام وجود داشت که چطوری می تونه شی گرایی میتونه از تکرارها جلوگیری کنه و ...

مفهومی رو که ارائه میدم بیشتر به سرویس گرایی می خوره تا شی گرایی ، اما برای درک نکات خوبی داره .

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

بذارید یه مثال عملی بزنم .

دارید برنامه می نویسید و در بخشی از برنامه شما باید اطلاعاتی رو از دیتابیس بخونید و در خروجی قرار بدید؛ خوب این مراحل رو طی می کنید :

اطلاعات مورد نیاز وصل شدن به دیتابیس رو وارد میکنید .
روش اتصال رو انتخاب میکنید.
به دیتابیس وصل میشید .mysql_connect
موفقیت اتصال رو چک میکنید.
در صورت نا موفق بودن خطا برمیگردونید.
در صورت موفقیت اتصال دیتابیس مورد نظر رو انتخاب میکنید . mysql_select_db
در صورت به وجود نیومدن خطایی تا این مرحله.
کوئری رو اجرا میکنید . mysql_query
جواب رو میگیرید و وجودش رو بررسی میکنید.
جواب رو برای باز کردن و استفاده پروسس می کنید . mysql_fetch_...
خروجی های مورد نظر به دست میاد .
ارتباط رو با دیتابیس قطع میکنید . mysql_close

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

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

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

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

در واقع برنامه شما به صورت یک خط مونتاژ خواهد بود که تولیدات واحد های مختلف شرکت رو گرفته و در کنار هم قرار میده تا محصول رو به کاربر ارائه بده.
اینطوری از تکرار مکررات جلوگیری میشه. سریع تر کد میزنید . هر واحد به صورت جدا و کپسوله شده کار میکنه . درصورت نیاز به تغییر در هر منبع می تونید واحد مرتبط رو تغییر بدید .فرض کنید شما برنامه رو همیشه با اتصال فارسی به دیتابیس اجرا کردید و حالا منبع ( یا همون دیتابیس ) تغییری در زبان خودش داشته ، دیگه نیازی نیست خط به خط برنامه خودتون رو بررسی کنید و تمام اتصالات رو تغییر بدید. کافیه که به شی دیتابیس رفته و کانفیگ اون رو تغییر بدید و تمام برنامه با زبان جدید کار خواهد کرد .

امروزه فریم ورک ها ، اساسا به نوعی، شی های مختلف و کارآمدی هستند که در اختیار شما قرار دارند . هرچقدر این شی های کارآمدتر باشند ، استفاده از آنها ساده تر هست . در فریم ورک های Glue Stack و Full Stack شما خط مونتاژ هایی با واحد های مستقل و یا یکپارچه در اختیار دارید، تا ماشین خودتون رو مونتاژ کرده و در اختیار کاربر بذارید. Big Grin

میشه مثال ها و دلایل زیادی رو برای استفاده از شی گرایی بیان کرد. اما وقتی شما دیدگاهی این چنینی به شی گرایی داشته باشید ، بیان خیلی از دلایل غیر ضروری هست و خودتون درکش میکنید . Wink
  پاسخ
تشکر شده توسط : mojtabadj ahora
#5
برای شروع شی گرایی باید برید سراغ مهندسی نرم افزار و طراحی شی گرا مثه UML اونوقت دیگه می دونه که چطور استفاده کنی Sleepy
  پاسخ
تشکر شده توسط :
#6
کلاس هم مثل آرایه ها، لیست های پیوندی و... یک ساختار تعریف داده است ولی با سبکی متفاوت که امروزه بیشترین استفاده در اکثر زبانهای برنامه نویسی را دارد. همانطور که mojtabajml عزیز گفت بهتر است شما ابتدا مفاهیم شی گرایی را متوجه شوید بعد می توانید با هر زبان برنامه نویسی آن را پیاده سازی نمایید.Wink
سالهــــا مـــــى گــــــذرد، حادثه ها مى آید
انتظـــــار فـــــــرج از نیمـــــه خــــــرداد کشم

[عکس: ShowPicture.aspx?ID=52750d12-5d92-4286-9...height=100]
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان