PDA

View Full Version : سوال: علت استفاده از کلاس در پروژه هایی که با دیتابیس کار می کنند



aghayex
جمعه 05 اسفند 1390, 21:02 عصر
دوستان من یه پروژه دارم می نویسم که دارای دو یا سه دیتابیس sq compact هست از اون طرف یه پروژه اوپن سورس دستم افتاده که به طور زیبایی از کلاس استفاده کره مثلا خصوصیات ی شخص رو در یک کلاس پیاده سازی کرده و یک کلاس برای تمام اشخاص پیاده سای کرده بعلاوه ی رویداد ها و مخلفات .
حالا سوال من اینه که تو برنامه ی خودم که مدام اطلاعات از دیتابیس می خونه و می نویسه آیا نیازی به این همه ضابطه و کلاس بندی هست یا نه ؟

فرید نجفلو
جمعه 05 اسفند 1390, 21:42 عصر
ببینید من خودم یه اعتقادی دارم که:
یا یه کا رو انجام نده یا اگه دادی به بهترین نحو انجامش بدی
ممکنه شما الان تعداد جدول و فیلد هاتون کمه ولی هیچ تضمینی برای آینده و بعد از رشد برنامتون وجود نداره!
اگه شما نظم کافی در برنامتون نداشته باشید اولین کسی که سردرگم مشه خود شمایید
اگه شما حوصله کلاس بازی و کد نویسی ندارید ساده ترین و عاقلانه ترین کار استفاده از Dataset برای شماست
شما LinqToSql رو هم در دسترس دارید
هر دو اینها از پنجره Add New Item قابل دسترسن(Ctrl+Shift+A)

aghayex
جمعه 05 اسفند 1390, 21:58 عصر
ممنون از جوابتون در مورد کار با دیتابیس من هدف اینه که با تکنولوژی entity کار کنم که خود این تکنولوژی با مفهوم object کار می کنه حالا دوباره بیام اطلاعات رو از دیتابیس واکشی کنم و بریزم تو کلاس حالا این کار چه ضرورتی داره من موندم

Hybrid
جمعه 05 اسفند 1390, 22:09 عصر
دوست عزیز ، من خودم 2 تا پروژه انجام دادم یکی از مفهموم کلاس و شی و.. استفاده کردم و در دیگری نه (مربوط به 4 ماه پیش بود) الان که میرم سراغشون اونی که به سبک کلاس نویسی نوشتم به طرز بسیار عالی منظم و راحت ازش سردرمیاری ولی اونی که همینطوری نوشته بودم وحشتناک بود !!! خودم هم ازش سر در نمیاوردم چه برسه به اونی که سورس رو بهش بدم... پس به قول دوستمون همیشه سعی کن منظم باشی و کارت را به نحوی که درست تره انجام بده.

موفق باشید./

فرید نجفلو
جمعه 05 اسفند 1390, 22:13 عصر
بله درسته که کار باشیا خوب و کم در دسره
ولی بعضی مواقع استفاده از SQL اجتناب ناپذیر می شه یا بهتر جواب می ده به ای نمونه هم که خودم از اشیا SQL تو دانت استفاده کردم نگاه کنید با اینکه خواستم از دستورات SQL استفاده نکنم ولی دیدم دو سه جا بهتر عمل می کنه!
پشتیبان گیری و بازیابی(بدون دستورات SQL ، درصد پیشرفت و...) (http://barnamenevis.org/showthread.php?327660-پشتیبان-گیری-و-بازیابی(بدون-دستورات-SQL-،-درصد-پیشرفت-و...))
در ضمن من خودم تو یه برنامه کوچیک از پایگاه داده اکسس و Dataset استفاده کردم که تو کلش حتی یه خط دستور SQL ننوشتم!

aghayex
شنبه 06 اسفند 1390, 23:56 عصر
دستتون درد نکنه من قانع شدم
به دلیل اینکه تا حالا دیمی کد نویسی می کردم دو سه مورد برام نا آشناست که لطف کنید راهنمایی کنید ممنون میشم :
1 - آیا کلاس دارای نوع داریم ؟
مثلا تو یه سورس کد ، کلاسی تعریف کرده به صورت زیر :

public class Person : INotifyPropertyChanged, IEquatable<Person>, IDataErrorInfo

این موارد که جلوی کلاس person هست رو کاربرداشونو بگید ممنون میشم
2 - در بعضی دستورات از علامت <> استفاده میشه که کاربردش رو نمی دونم . مثل:

IEquatable<Person>

یا

logic.Family.ContentChanged += new EventHandler<ContentChangedEventArgs>(OnFamilyContentChanged);

3- قبل از تعریف کلاس یه کد می نویسند که در داخل علامت [] قرار می گیره مثل :

[Serializable]

یا

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses")]

فرید نجفلو
یک شنبه 07 اسفند 1390, 13:53 عصر
دوست عزیز اون قسمتهایی که شما بهش اشاره می کنید Attribute و اینترفیس هستند که شما نیازی به استفاده از همه اونها ندارید
واسه اینکه شما هم یه آشنایی کلی داشته باشید چندتا مثال می زنم:

INotifyPropertyChanged : وقتی کلاسی این اینترفیس رو پیاده کرد یعنی اعلام می کنه که هر وقت یکی از خصوصییات(Property) تغییر کرد یک رویداد ایجاد خواهد شد تا به اطلاع استفاده کننده از اون کلاس برسه
IEquatable : پیاده کننده این اینترفیس اعلام می کنه که این کلاس قابلیت استفاده از متد Equal رو به صورت صحیح پشتیبانی می کنه
<DebuggerNonUserCodeAttribute> : این خصوصیت(Attribute) به دیباگر و VS اطلاع می ده که این کد رو هنگامی که مثلا با F8 دارین دیباگ می کنید رد کنه و واردش نشه(Step Over)

<Browsable> : اگه این Attribute رو در یک Property برابر False قرار بدید زمانی که کنترل به فرم اضافه شد در حین طراحی این Property در پنجره Properties قابل مشاهده نیست و فقط به صورت برنامه نویسی شده قابل تغییره(اگه فقط خواندنی نباشه)