PDA

View Full Version : سوال: تاملی عمیق تر در طراحی شی گرا



ricky22
سه شنبه 20 بهمن 1388, 10:16 صبح
سلام دوستان
من یک مطلبی رو نمی تونم در برنامه نویسی شی گرا درک کنم
تا اونجایی که من می دونم ما در این این روش به همه چیز باید مثل یک شی نگاه کنیم
حالا فرض رو میزاریم بر یک برنامه که داره شی گرا و با استفاده از معماری چند لایه پیاده سازی میشه.
لایه dal
لایه business
لایه security
لایه ui
و ...
حالا ما در یک برنامه قسمتی داریم برای ثبت نام اعضا و ویرایش و ....
حالا ما باید به اعضا به صورت یک شی نگاه کنیم؟
شی contact ?
شی که دارای متد newcontact و ... هست؟
می خواستم دوستان یکم این مسئله رو باز کنن
و توضیح بدن
اگه نمونه کد کوچیکی هم باشه ممنون میشم

tahayazdani
سه شنبه 20 بهمن 1388, 11:10 صبح
سلام دوست عزیز. نه فدات شم. این جوری نیست. شما به تعداد جدول های بانک کلاس داری. مثلا جدول مربوط به اعضای شما میشه یک کلاس که داخل اون کلاس باید فلید های بانک رو تعریف کنیدو برای هر کارت مثل درج و ویرایش یک تابع می نویسی. و از هر لایه جلوتر یک شی از لایه قبلی می گیری.اعضا به صورت یک کلاس هست که دارای خاصیتی مثل ثبت و ویرایش و متد نام و نام خانوادگی و ...

ricky22
سه شنبه 20 بهمن 1388, 11:57 صبح
سلام دوست عزیز. نه فدات شم. این جوری نیست. شما به تعداد جدول های بانک کلاس داری. مثلا جدول مربوط به اعضای شما میشه یک کلاس که داخل اون کلاس باید فلید های بانک رو تعریف کنیدو برای هر کارت مثل درج و ویرایش یک تابع می نویسی. و از هر لایه جلوتر یک شی از لایه قبلی می گیری.اعضا به صورت یک کلاس هست که دارای خاصیتی مثل ثبت و ویرایش و متد نام و نام خانوادگی و ...
مرسی از توجهتون اگه بیشتر توضیح بدی ممنون میشم
یعنی من نمی تونم به contact به صورت شی نگاه کنم؟
اسم و تلفن و ... property باشه
متد insert داشته باشیم

powerboy2988
سه شنبه 20 بهمن 1388, 15:52 عصر
ببین دوست عزیز.. ما تو برنامه ها فریاد می زنیم که می خوایم OOP برنامه نویسی کنیم... اما تو پیاده سازی بعضی از پروژه ها ... خودمون خودمونو دور می زنیم...

تو database تو sql ما شی گرایی نداریم.. چون داریم تو جداول با استفاده از کلید ها ارتباط برقرار می کنیم!
و می گیم که این 2 ها رابطه n به m دارند و ...

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

اوبالیت به بو
سه شنبه 20 بهمن 1388, 15:54 عصر
چرا دیگه.
اگه Contact جدول بانک اطلاعاتی باشه، میشه یکی از کلاس های لایه DAL که متد Insert داره و Name و Email میشه فیلدها یا Propertyها

powerboy2988
سه شنبه 20 بهمن 1388, 16:11 عصر
چرا دیگه.
اگه Contact جدول بانک اطلاعاتی باشه، میشه یکی از کلاس های لایه DAL که متد Insert داره و Name و Email میشه فیلدها یا Propertyها

شما هیچ map نکردی .. داری فقط ازش استفاده می کنی.. چطوری می شه گفت که شی گرایی هستش اين دیتابیس ؟

ricky22
چهارشنبه 21 بهمن 1388, 08:17 صبح
دوستان منظورم از contact جدول اون تو بانک اطلاعاتی نیست.
شی به عنوان contact که متد new داشته باشه متد delete داشته باشه
properti نام و شماره تلفن داشته باشه و ....
که بشه تو همه برنامه ها از اون استفاده کرد.
امیدوارم منظورمو خوب رسونده باشم.

اوبالیت به بو
چهارشنبه 21 بهمن 1388, 14:50 عصر
شما هیچ map نکردی .. داری فقط ازش استفاده می کنی.. چطوری می شه گفت که شی گرایی هستش این دیتابیس ؟
متوجه نشدم؟ یعنی چی؟

شی به عنوان contact که متد new داشته باشه متد delete داشته باشه
خوب میشه کلاس Contact با متدهای مربوط به کلاس خودش. حالا متدها می تونن محاسباتی یا بانک اطلاعاتی باشن که با فیلدها کار می کنن

ricky22
چهارشنبه 21 بهمن 1388, 15:02 عصر
متوجه نشدم؟ یعنی چی؟

خوب میشه کلاس Contact با متدهای مربوط به کلاس خودش. حالا متدها می تونن محاسباتی یا بانک اطلاعاتی باشن که با فیلدها کار می کنن
دوست عزیز میشه یک مثال عملی بزنی؟
این تاپیک رو بررسی می کنی؟ در رابطه با همین سوال هست با تشکر
http://barnamenevis.org/forum/showthread.php?t=204563

majid325
جمعه 23 بهمن 1388, 03:34 صبح
شما هیچ map نکردی .. داری فقط ازش استفاده می کنی.. چطوری می شه گفت که شی گرایی هستش این دیتابیس ؟

map کردن برای موقعی هست که بخوایم ساختار دیتابیس رو به oopپیاده سازی کنیم , ولی دوستمون تو رابطه لایه ها و شناخت و طراحی آبجکت مشکل داره که اگه درست متوجه شده باشم میتونه این لینک (http://barnamenevis.org/forum/showthread.php?t=151744) رو پیگیری کنه.

powerboy2988
جمعه 23 بهمن 1388, 16:33 عصر
اون چیزی که من فهمیده بودم این بود که ایشون اومد دیتابیسشو توضیح داد و گفت که میشه به عنوان یک شی بهشون نگاه کرد که من اون توضیحاتو دادم

اشتباه فهمیدم؟

HOSSEINGHOLI
جمعه 30 بهمن 1388, 11:03 صبح
ببین دوست عزیز بعضی از کلاس ها entity class هستند مثل actor ها که معمولا ما اطلاعاتی ایستا برای actor ها ذخیره میکنیم
بعضی کلاس ها کنترلی هستند مثلا چک میکند که اطلاعاتی که در فیلد وارد شده null هست یا نه یا مثلا چک میکند ادرس email معتبر است یا نه
بعضی کلاس ها boundry هستند مانند User Interface
entty class معمولا به طور مستقیم با database ارتباط دارند
سلسله مراتب در برنامه نویسی لایه ای هم بدین صورت هستش

majid325
شنبه 01 اسفند 1388, 09:00 صبح
ببین دوست عزیز بعضی از کلاس ها entity class هستند مثل actor ها که معمولا ما اطلاعاتی ایستا برای actor ها ذخیره میکنیم
بعضی کلاس ها کنترلی هستند مثلا چک میکند که اطلاعاتی که در فیلد وارد شده null هست یا نه یا مثلا چک میکند ادرس email معتبر است یا نه
بعضی کلاس ها boundry هستند مانند User Interface
entty class معمولا به طور مستقیم با database ارتباط دارند
سلسله مراتب در برنامه نویسی لایه ای هم بدین صورت هستش


entty class در لايه Common قرار ميگيرن و معمولا به طور مستقیم با لايه Data ارتباط دارند

ricky22
شنبه 01 اسفند 1388, 16:36 عصر
entty class در لايه Common قرار ميگيرن و معمولا به طور مستقیم با لايه Data ارتباط دارند
لطفا در رابطه با لایه common توضیح دهید
با تشکر