PDA

View Full Version : سوال: چرا شی گرایی؟



amin7x
چهارشنبه 14 فروردین 1392, 14:33 عصر
سلام این سوال همیشه تو ذهن من بوده که چرا باید از شی گرایی استفاده کردن؟
تاپیک جامعی هم درموردش ندیدم.
میدونم استفاده از شی گرایی یک اختیاره ولی میخواستم یک دلیل کاملا منطقی داشته باشم ، چون هرکدی که با شی گرایی میشه نوشت ، میتونم با برنامه نویسی روگرا اون رو هم بنویسم.
ممنون میشم پاسخ کاملی بدهید.

css-man
چهارشنبه 14 فروردین 1392, 14:37 عصر
بعید میدونم برنامه نویسی کرده باشی و نیاز به شی گرائی رو حس نکرده باشی

مشکل نوشتن کدها نیست بحث سر آسان تر شدن و بهینه شدن کدها ست

من خودم مدت زیادی functional کار میکردم

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

amin7x
چهارشنبه 14 فروردین 1392, 14:42 عصر
بعید میدونم برنامه نویسی کرده باشی و نیاز به شی گرائی رو حس نکرده باشی

مشکل نوشتن کدها نیست بحث سر آسان تر شدن و بهینه شدن کدها ست

من خودم مدت زیادی functional کار میکردم

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

من یک سیستم مدیریت محتوا رو میتونم بدون استفاده از شی گرایی بنویسم.
شاید به این خواطر است که نمیدونم با شی گرایی میشه چه کار هایی کرد.

css-man
چهارشنبه 14 فروردین 1392, 14:46 عصر
قرار نیست اگر از oop استفاده نکردی نتونی کد نویسی کنی

بحث سر راحت تر شدن کاره
امینی
سرعت
و... که همراه شی گرایی هست

amin7x
چهارشنبه 14 فروردین 1392, 14:48 عصر
قرار نیست اگر از oop استفاده نکردی نتونی کد نویسی کنی

بحث سر راحت تر شدن کاره
امینی
سرعت
و... که همراه شی گرایی هست

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

css-man
چهارشنبه 14 فروردین 1392, 14:52 عصر
این یه مثال برای لاگین





function login()
{
$error=array();
if(isset($_POST['submit']))
{
if(!empty($_POST['usname']))
{
$usname=$_POST['usname'];
}
else
{
$error[]="نام کاربری را وارد کنید";
}
if(!empty($_POST['psskey']))
{
$psskey=$_POST['psskey'];
}
else
{
$error[]="کلمه عبور را وارد کنید";
}
if(empty($error))
{
$q="SELECT * FROM `admin_user` WHERE `usname`='$usname' AND `secretkey`='$psskey'";
$r=$this->database->runQuery($q);
//$count=$this->database->counter($r);
$row=$this->database->fetch($r);
if($row['id'])
{

$this->session->setSession("adminid",$row['id']);
$this->tools->redirect("index.php");

}
else
{
echo "نام کاربری یا کلمه عبور اشتباه است";
}

}
else
{
foreach($error as $val)
{
echo $val."<br />";
}
}

}
}

css-man
چهارشنبه 14 فروردین 1392, 14:56 عصر
بدون شی گرای از فریم ورک ها که نمی تونی استفاده کنی

از اکثر template engin ها هم نمی تونی استفاده کنی

وقتی از اینا نتونی استفاده کنی طراحی خیلی سخت میشه

کدها کثیف و نا مرتب میشه
و...

amin7x
چهارشنبه 14 فروردین 1392, 14:56 عصر
خب دقیقا همین کد رو میشه نوشت و قسمت های کار با دیتابیس رو میشه فانکشن بندی کرد.

پس شی گرایی رو در همین حد بدونم کافیه ؟ template engin و فریم ورک

css-man
چهارشنبه 14 فروردین 1392, 15:01 عصر
شدنش که میشه موضوع شدن نشدن نیست

من توی این کد ها یه کلاس دارم به نام دیتابیس

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

اما با تابع شما نمی تونی این کار رو انجام بدی

omidabedi
چهارشنبه 14 فروردین 1392, 15:17 عصر
من یک سیستم مدیریت محتوا رو میتونم بدون استفاده از شی گرایی بنویسم.
شاید به این خواطر است که نمیدونم با شی گرایی میشه چه کار هایی کرد.

من از شما یه سوال دارم
ایا سیستم مدیریت محتوایی که میویسی (که فکر نکنم امکان پذیر باشه) قابل توسعه هست و میشه براش ماژول نوشت و امکاناتیو بش اضاف کرد ؟؟
بحث فقط سر اسان شدن نیست بلکه oop مبحث خیلی پیشرفته ایه

omidabedi
چهارشنبه 14 فروردین 1392, 15:18 عصر
من یک سیستم مدیریت محتوا رو میتونم بدون استفاده از شی گرایی بنویسم.
شاید به این خواطر است که نمیدونم با شی گرایی میشه چه کار هایی کرد.

من از شما یه سوال دارم
ایا سیستم مدیریت محتوایی که میویسی (که فکر نکنم امکان پذیر باشه) قابل توسعه هست و میشه براش ماژول نوشت و امکاناتیو بش اضاف کرد ؟؟
بحث فقط سر اسان شدن نیست بلکه oop مبحث خیلی پیشرفته ایه

amin7x
چهارشنبه 14 فروردین 1392, 15:22 عصر
من از شما یه سوال دارم
ایا سیستم مدیریت محتوایی که میویسی (که فکر نکنم امکان پذیر باشه) قابل توسعه هست و میشه براش ماژول نوشت و امکاناتیو بش اضاف کرد ؟؟
بحث فقط سر اسان شدن نیست بلکه oop مبحث خیلی پیشرفته ایه

توی کد من نمیشه بدون ویرایش کد اصلی به اون ماژول اضافه کرد.
در اینجا من شکست میخورم:اشتباه:.
درسته با OOP میشه ماژول نوشت بدون ویرایش کد اصلی. (مثل وردپرس درسته؟)

masiha68
چهارشنبه 14 فروردین 1392, 23:59 عصر
منم خیلی دنبال شی گرایی بودم و هستم . یکی از دوستان گفت کلاسشو برگزار کرده گفتم چند گفت 600 تومن ...واقعا ارزشش رو داشت ولی من پولشو نداشتم .
حالا از دوستان کسی یه منبع توپ سراغ داره که بشه از پایه شی گرایی رو اموخت البته منبع فارسی و با مثال
خودم سعی کردم مثلا یه کلاس واسه ی دیتابیس بنوسیم و اینکه داده ها رو از دیتابیس فراخوانی کنه ولی دیدم زیاد جالب نشد و فقط واسه همون پروژه ای که روش کار می کردم به درد می خورد و فهمیدم فقط کلاس و تابع نوشتن نیست و باید کد هات طوری باشه که بعدا هم بشه ازش استفاده کرد... سرتونو درد نیارم
خودم خیلی دوس دارم یاد بگیرم ولی یه مرجع خوب پیدا نمی کنم . یکی از دوستان توی همین انجمن یه تایپیک زده بود که اسمش یادم نیست ولی توی سیستم سیو کردم ، اون خیلی جالب بود و مفاهیم کلی رو شرح داده بود ولی مثل کاربردی نداشت

navid3d_69
پنج شنبه 15 فروردین 1392, 00:32 صبح
بحث فقط ماژول نیست الان سیستمی مثل نیوک 90% function هست ولی ماژول داره کلا کد ها با شی گرایی خیلی خوانا تر راحت تر و ...... میشه

rezakho
پنج شنبه 15 فروردین 1392, 12:17 عصر
سلام
شی گرایی خیلی مزایا داره

1 - با کپسوله سازی و فضای نامی که به شما میده، میتونید بی نهایت توابع و متغییر هم نام (منتها هر کدام مربوط به کلاس و یا شی جداگانه ای هستند) رو بسازید
2 - متغیر و توابع مرتبط با هم رو میتونید یک جا بیارید و دسترسی و رابطه هاشون رو آسان کنید
3 - اگر کاربرد آرایه رو در داده های زیاد و پیچیده درک کرده باشید، شی هم همچین کاربردی بهتون میده، علاوه بر اینکه داخل شی هم متغیر هست، و هم تابع و ...
4 - وراثت در شی گرایی، جلوی تکرار کد رو میگیره، علاوه بر این میتونه ساختار آبشاری براتون بسازه، که با تغییر یه عنصر از کلاس بالا، تمام کلاس های مشتق شده، اون تغییر رو به ارث ببرند
5 - امکان محافظت از دستکاری داده ها را بیرون از کلاس یا شی، و داخل کلاس های مشتق شده میده

ما بقی رو دوستان کمک کنند

amin7x
یک شنبه 18 فروردین 1392, 22:35 عصر
من فیلم های آموزشی لیندا رو گرفتم ولی خوب توضیح نداده بود.

الان دنبال یک منبع خوب واسه OOP هستم.

Veteran
یک شنبه 18 فروردین 1392, 23:06 عصر
کتاب های استاد شهرکی
ncis.ir

1sarbaz
یک شنبه 18 فروردین 1392, 23:18 عصر
تا چند وقت پیش منم درگیر همین موضوع بودم که چه کاریه ما که میتونیم با فانکشن ها کار خودمون رو راه بندازیم دیگه شی و کلاس و این چیزا به چه درد میخوره. تحقیق هم که میکردم و مطلبی در مورد شی گرایی میخوندم مثالهای بعضی اوقات میاوردم از ماشین و کارخونه و کوفت و زهرمار که آدم بیخیال ادامه یادگرفتنش میشد چون هنوز ارزش این مباحث رو نمیدونستم. بعد از مدتی مجبور شدم یک CMS رو تغییراتی بدم ، از قضا این سیستم بر پایه MVC بود که خوب همونطور که میدونید به صورت OOP هستند. آقا منه بی سواد یا بهتره بگم کم سواد در زمینه PHP وقتی کدهای این سیستم رو نگاه میکردم لذت میبردم ، باور کنین اینقدر خوندن و توسعه کدها راحت و روون هست دیگه از اون به بعد من به هیچ کدی که برپایه OOP نباشه نگاه نمیکنم یعنی اصلا متنفرم خودم رو درگیر نوع برنامه نویسی ساخت یافته یا به قول شما رو گرا بکنم. پیشنهاد میکنم اول مزه کنید شی گرایی رو و بعد برید دنبال یادگرفتنش. پس پیشنهاد من اینه که اگر با فریم ورکهایی مثل CakePHP ، YII ، CI و ... کار نکردید اول برید با اینها کار کنید. وقتی درگیر کد نویسی با این فریم ورکها میشید به ارزش شی گرایی پی میبرید و بعد ذهنتون آماده میشه برای یادگیری بیشتر شی گرایی. بازم بهت حق میدم که اینقدر خودتون رو درگیر این سوالها کنید ولی من پیشنهاد میکنم که وقت رو هدر ندید و سریعتر این مباحث رو یادبگیرید و خودتون رو از شر برنامه نویسی ساخت یافته خلاص کنید !

Mohadesse S
یک شنبه 21 بهمن 1397, 11:57 صبح
منم خیلی دنبال شی گرایی بودم و هستم . یکی از دوستان گفت کلاسشو برگزار کرده گفتم چند گفت 600 تومن ...واقعا ارزشش رو داشت ولی من پولشو نداشتم .
حالا از دوستان کسی یه منبع توپ سراغ داره که بشه از پایه شی گرایی رو اموخت البته منبع فارسی و با مثال
خودم سعی کردم مثلا یه کلاس واسه ی دیتابیس بنوسیم و اینکه داده ها رو از دیتابیس فراخوانی کنه ولی دیدم زیاد جالب نشد و فقط واسه همون پروژه ای که روش کار می کردم به درد می خورد و فهمیدم فقط کلاس و تابع نوشتن نیست و باید کد هات طوری باشه که بعدا هم بشه ازش استفاده کرد... سرتونو درد نیارم
خودم خیلی دوس دارم یاد بگیرم ولی یه مرجع خوب پیدا نمی کنم . یکی از دوستان توی همین انجمن یه تایپیک زده بود که اسمش یادم نیست ولی توی سیستم سیو کردم ، اون خیلی جالب بود و مفاهیم کلی رو شرح داده بود ولی مثل کاربردی نداشت


فیلم های آموزش java cup عالیه به زبان فارسی هم هست