PDA

View Full Version : سوال: چگونه کلاس استان را پیاده سازی کنیم



mojtaba.baghban
دوشنبه 21 شهریور 1390, 16:13 عصر
آیا برای تعریف کلاس استان بهتر است یک آرایه از کلاس شهر داشته باشیم یا اینکه کلاس شهر شامل کلاس استان باشد که استان مربوط به آن شهر را مشخص کند

water_lily_2012
دوشنبه 21 شهریور 1390, 16:35 عصر
به نظر من شما از کلاس استفاده کن.

mojtaba.baghban
دوشنبه 21 شهریور 1390, 16:54 عصر
ممنون از جوابت ولی من جوابم رو نگرفتم

vhossein
دوشنبه 21 شهریور 1390, 17:04 عصر
به نظر من در کلاس استان آرایه ای از شهریایش را داشته باشی بهتر است.ولی بستگی به استفاده از کلاس در برنامت داره و این که چه کارهایی می خوای باهاش انجام بدی

linux
دوشنبه 21 شهریور 1390, 18:12 عصر
آیا برای تعریف کلاس استان بهتر است یک آرایه از کلاس شهر داشته باشیم یا اینکه کلاس شهر شامل کلاس استان باشد که استان مربوط به آن شهر را مشخص کند
هر دوتا!
در کلاس استان یک آرایه از کلاس شهرها باید داشته باشید و در کلاس شهر یک شی از کلاس استان هر دو کاربرد خودشان را دارند.

aserfg
سه شنبه 22 شهریور 1390, 07:39 صبح
آیا برای تعریف کلاس استان بهتر است یک آرایه از کلاس شهر داشته باشیم یا اینکه کلاس شهر شامل کلاس استان باشد که استان مربوط به آن شهر را مشخص کند
سلام ، مسلما نیازی به آرایه ای از نام شهرها برای هر استان نیست . کافیه یه فیلد در کلاس شهر داشته باشی که به آی دی استان مربوطه اشاره داشته باشه .
استان :نماینده جدول state
id
name
description
نماینده جدول substate
id
stateid
name
description

mojtaba.baghban
چهارشنبه 23 شهریور 1390, 09:53 صبح
سلام ، مسلما نیازی به آرایه ای از نام شهرها برای هر استان نیست . کافیه یه فیلد در کلاس شهر داشته باشی که به آی دی استان مربوطه اشاره داشته باشه .
استان :نماینده جدول state
id
name
description
نماینده جدول substate
id
stateid
name
description
سلام . مسلما توی یه بانک اطلاعاتی همه این کار رو می کنند ولی آیا تو یه برنامه شی گرا هم این کار همون کارایی رو داره. یه مقاله ای درباره mapping objects to relational database خوندم تو لینک http://www.agiledata.org/essays/mappingObjects.html که با توجه به اینکه رابطه استان با شهر یک رابطه یک به چند و دو طرفه است بهتر از روشی که linux گفت

هر دوتا!
در کلاس استان یک آرایه از کلاس شهرها باید داشته باشید و در کلاس شهر یک شی از کلاس استان هر دو کاربرد خودشان را دارند.
استفاده کنیم

aserfg
چهارشنبه 23 شهریور 1390, 11:55 صبح
بلی کلیه ابزارهای ساخت کلاسهای رابطه ای که بر مبنای بانک اطلاعاتی کار می کنند و تحت عنوان ORM هستند شیوه دوستمون رو پیاده سازی می کنند(فارغ از اینکه آیا آرایه هستند یا هر نوع داده دیگه-معمولا از نوع شمارنده تعریف می شن - در ENTITY FRAMWORK یک PROPERTYبه نام SUBSTATE در ENTITY به نام STATEو همین طور بر عکس ) ولی این عمل زمانی که کاربر خودش می خواد کد بزنه بدون استفاده از ابزارهای ساخت لایه های زیرین (DAL-BLL) یه کار بلا استفاده است .

mehran_sh_t
چهارشنبه 23 شهریور 1390, 12:23 عصر
اگر می خواید شیئ گرا کار کنید، باید قوانینش رو رعایت کنید. می شه بدون اونها هم انجام داد، همونطور که aserfg گفتن، ولی دیگه شیئ گرایی معنی نداره! جواب linux بر اساس شیئ گرایی هستش.
تصمیم با خودتونه دیگه...

aserfg
چهارشنبه 23 شهریور 1390, 12:46 عصر
نخیر نه این که شی گرایی زیر سئوال بره بلکه تتفاوت در روش پیاده سازی است شما می تونید شالوده و اساس شی گرایی رو کدهای نمونه زیر ببینید:
در این نمونه کد کلاسها خودشون از کلاس BusinessObjectBase مشتق می شن و در خاتمه هم مقادیر وارد شده به کلاس تحت عنوان فیلد رو به یه کلاس دیگه برای اعتبار سنجی پاس می دن .
این کدها رو ببینید برای کلاس substate


public class SubState: BusinessObjectBase
{

#region InnerClass
public enum SubStateFields
{
SubStateID,
StateID,
Title,
Description
}
#endregion

#region Data Members

int _subStateID;
int _stateID;
string _title;
string _description;

#endregion

#region Properties

public int SubStateID
{
get { return _subStateID; }
set
{
if (_subStateID != value)
{
_subStateID = value;
PropertyHasChanged("SubStateID");
}
}
}

public int StateID
{
get { return _stateID; }
set
{
if (_stateID != value)
{
_stateID = value;
PropertyHasChanged("StateID");
}
}
}

public string Title
{
get { return _title; }
set
{
if (_title != value)
{
_title = value;
PropertyHasChanged("Title");
}
}
}

public string Description
{
get { return _description; }
set
{
if (_description != value)
{
_description = value;
PropertyHasChanged("Description");
}
}
}


#endregion

#region Validation

internal override void AddValidationRules()
{
ValidationRules.AddRules(new Validation.ValidateRuleNotNull("SubStateID", "SubStateID"));
ValidationRules.AddRules(new Validation.ValidateRuleNotNull("StateID", "StateID"));
ValidationRules.AddRules(new Validation.ValidateRuleNotNull("Title", "Title"));
ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("Title", "Title",250));
ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("Description", "Description",2147483647));
}

#endregion

}



و این برای کلاس state شما :

public class State: BusinessObjectBase
{

#region InnerClass
public enum StateFields
{
StateID,
Title,
Description,
IsActive
}
#endregion

#region Data Members

int _stateID;
string _title;
string _description;
bool _isActive;

#endregion

#region Properties

public int StateID
{
get { return _stateID; }
set
{
if (_stateID != value)
{
_stateID = value;
PropertyHasChanged("StateID");
}
}
}

public string Title
{
get { return _title; }
set
{
if (_title != value)
{
_title = value;
PropertyHasChanged("Title");
}
}
}

public string Description
{
get { return _description; }
set
{
if (_description != value)
{
_description = value;
PropertyHasChanged("Description");
}
}
}

public bool IsActive
{
get { return _isActive; }
set
{
if (_isActive != value)
{
_isActive = value;
PropertyHasChanged("IsActive");
}
}
}


#endregion

#region Validation

internal override void AddValidationRules()
{
ValidationRules.AddRules(new Validation.ValidateRuleNotNull("StateID", "StateID"));
ValidationRules.AddRules(new Validation.ValidateRuleNotNull("Title", "Title"));
ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("Title", "Title",250));
ValidationRules.AddRules(new Validation.ValidateRuleStringMaxLength("Description", "Description",2147483647));
ValidationRules.AddRules(new Validation.ValidateRuleNotNull("IsActive", "IsActive"));
}

#endregion

}
برای اینکه روش صحیح کد زدن رو با هم بررسی کنیم فرض کنید می خوایم با دادن STATEID(شناسه مربوط به نام استان نام شهرهای مربوطه رو بدست بیاریم )
یه کلاس می نویسیم که وظیفه خروجی دادن به کئری ها رو براساس درخواستها داشته باشه یک متد می نویسیم مانند ذیل :
public List<SubState> GetAllBy(SubState.SubStateFields fieldName, object value)
{
return _dataObject.SelectByField(fieldName.ToString(), value);
}
این متد با گرفتن یه VALUE یه لیست از نوع کلاس SUBSTATEبه ما می ده .(_dataObject. یه نمونه از کلاس لایه DAL مربوط به جدولSUBSTAET ) خوب می تونید VALUE اون رو با مقدار STATEID ست کنید تا کلیه رکوردهای بانک اطلاعاتی (در اینجا کلیه کلاسهایی که دارای STATEID مربوطه هستند ) رو براتون برگردونه . می بینید که نیازی به تعریف یه آرایه از کلاس شهرها برای استان نیست .
موفق باشید .

mojtaba.baghban
چهارشنبه 23 شهریور 1390, 18:25 عصر
بلی کلیه ابزارهای ساخت کلاسهای رابطه ای که بر مبنای بانک اطلاعاتی کار می کنند و تحت عنوان ORM هستند شیوه دوستمون رو پیاده سازی می کنند(فارغ از اینکه آیا آرایه هستند یا هر نوع داده دیگه-معمولا از نوع شمارنده تعریف می شن - در ENTITY FRAMWORK یک PROPERTYبه نام SUBSTATE در ENTITY به نام STATEو همین طور بر عکس ) ولی این عمل زمانی که کاربر خودش می خواد کد بزنه بدون استفاده از ابزارهای ساخت لایه های زیرین (DAL-BLL) یه کار بلا استفاده است .
یعنی نظر شما اینه که اگر از تو برنامه از چند لایه استفاده نکنیم لازم نیست از آرایه برای شهرها استفاده کنیم حالا اگر برنامه چند لایه باشه چی؟

می بینید که نیازی به تعریف یه آرایه از کلاس شهرها برای استان نیست .
میدونم این روش کار میکنه. ولی کدوم روش استاندارد؟
یه سوال دیگه: با فرض این که از آرایه در کلاس استان استفاده نکنیم در این صورت داشتن متدی برای برگرداندن تمام شهرهای استان ضروری به نظر می رسد

aserfg
چهارشنبه 23 شهریور 1390, 18:31 عصر
یعنی نظر شما اینه که اگر از تو برنامه از چند لایه استفاده نکنیم لازم نیست از آرایه برای شهرها استفاده کنیم حالا اگر برنامه چند لایه باشه چی؟
دوست عزیز این کدهایی رو که تو پست قبل (شماره 10 صفحه قبل) نوشتم کدهای پروژه خودمه این برنامه دارای سه لایه است .

یه سوال دیگه: با فرض این که از آرایه در کلاس استان استفاده نکنیم در این صورت داشتن متدی برای برگرداندن تمام شهرهای استان ضروری به نظر می رسد

در آخر پست همون پست شماره 10 همین مورد رو توضیح دادم .

mojtaba.baghban
چهارشنبه 23 شهریور 1390, 20:00 عصر
ممنون از حوصله ای که به خرج میدین؟
منظور من اینه که اگه یه لحظه دیتابیس را در نظر نگیریم و صرفا شی گرایی مد نظر ما باشد. این کار مخالف قوانین شی گرایی نیست؟
به هر حال شما کلاسی برای state در برنامه دارید آیا این کلاس متدی برای گرفتن شهرهای استان که در آن متدی را از لایه BLL را صدا میزند دارا میباشد؟
باز هم ممنون

aserfg
پنج شنبه 24 شهریور 1390, 10:06 صبح
نظور من اینه که اگه یه لحظه دیتابیس را در نظر نگیریم و صرفا شی گرایی مد نظر ما باشد. این کار مخالف قوانین شی گرایی نیست؟
هنگامی که شما می خواین کلاسهای رابطه ای بر مبنای بانک بسازین ، به هیچ عنوان لزومی نداره که برای نمایش ارتباط (relation) بین جداول از هر کدوم نمونه ای در دیگری داشته باشین .

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


ببینید دوست من بعضی مفاهیم مطلق نیستند ، به این معنا که هر چند مفهوم ثابتی برای آنها وجود داره ولی تفسیرهای مختلفی هم می شه داشت ، شما زمانی که زبان سی شارپ رو برای برنامه نویسی انتخاب می کنید ، خواه ناخواه دارید از اشیا استفاده می کنید ، نمونه ای از هر کدوم می سازید و مجموعه رفتارهای (peroperties) این اشیا به همراه واکنش هایی که این اشیا در قبال رویدادهای (events) مختلف از خود بروز می دن مجمو عه ای رو تشکیل می ده که اسمش برنامه است . که مفهوم شی گرایی هم همینه ! این مفهوم برای این به وجود اومد تا پیچیدگیها رو کم کنه ، شما از اشیایی استفاده می کنید ،که از درونشون خیر ندارین (Encapsulation) ، تابع A در صورتی که بر روی نمونه‌ای از کلاس آ فراخوانی بشه، رفتار ب رو بروز می ده ، در حالی که اگر بر روی کلاس ج (که فرزند کلاس آ است) فراخوانی شود، رفتاری متفاوت خواهد داشت مفهوم چند ریختی. ( Polymorphism) و...........
مفهومی که در اینجا نیاز به تبیین بیشتر داره و مرتبط با موضوع ما است ارتباط اشیا است .
ابتدا مثال : اگه کسی به بنگاه کرایه ماشین بره و بگه یه ماشین می خوام مسلما جوابی دریافت نمی کنه و باید نوع خودرو رو مشخص کنه : (یه ماشین سواری می خوام)
اینجا دوکلاس وجود داره :
1-ماشین
2-نوع (سواری وباربری و...)
بین این دو کلاس یه ارتباط وجود داره و ارتباط این دو معرف گروه خاصی از اشیا است.
در مثال ما دو کلاس هست
1-state : معرف استان
2-substate : معرف شهرستان
ما می خوایم این ارتباط رو مشخص کنیم (ماشین سواری هم ارز شهرستانهای استان اصفهان) در واقع اگه ما بتونیم این رو پیاده کنیم ارتباط رو مشخص کردیم که این همون صحبت شماست :



یه سوال دیگه: با فرض این که از آرایه در کلاس استان استفاده نکنیم در این صورت داشتن متدی برای برگرداندن تمام شهرهای استان ضروری به نظر می رسد و همون تابع پست شماره 10:

public List<SubState> GetAllBy(SubState.SubStateFields fieldName, object value)
{
return _dataObject.SelectByField(fieldName.ToString(), value);
}




به هر حال شما کلاسی برای state در برنامه دارید آیا این کلاس متدی برای گرفتن شهرهای استان که در آن متدی را از لایه BLL را صدا میزند دارا میباشد؟خیر ، کلاس substate دارای متدی است برای برگرداندن شهرهایی با sustateid مشخص .

mehran_sh_t
پنج شنبه 24 شهریور 1390, 11:21 صبح
خوب این بستگی به دید شما از شیئ گرایی داره. از نظر من هر استان، یک سری شهر داره. این تعریف شما، بیشتر شبیه تعریفی هستش که در پایگاه داده می کنیم.

یک مثال دیگه، شما یک کارمند رو در نظر بگیرید، برای کارمند، ما یک ویژگی به نام محل تولد داریم. در پایگاه داده، می تونه جدول شهر ها با یک ID جدا باشه، و در جدول کارمند، ما ID شهر رو به عنوان BirthCityID بگذاریم. ولی در سطح کلاس، هر شخص یک محل تولد داره، نه یک شماره...

mehran_sh_t
پنج شنبه 24 شهریور 1390, 11:30 صبح
ابتدا مثال : اگه کسی به بنگاه کرایه ماشین بره و بگه یه ماشین می خوام مسلما جوابی دریافت نمی کنه و باید نوع خودرو رو مشخص کنه : (یه ماشین سواری می خوام)
اینجا دوکلاس وجود داره :
1-ماشین
2-نوع (سواری وباربری و...) با عرض پوزش، پست های شما دیر برای من نمایش داده میشه! :)
در مثال شما، سواری یا باربری بودن، به نظرتون ویژگی یک ماشین نیست؟

مثال های شما، در طراحی دیتابیس کاملا درسته، ولی در سطح کلاس و شیئ به نظر اشتباه میکنید. مگر اینکه شما سواری یا باربری بودن رو یک شیئ بدونید

aserfg
پنج شنبه 24 شهریور 1390, 12:38 عصر
در مثال شما، سواری یا باربری بودن، به نظرتون ویژگی یک ماشین نیست؟

مثال های شما، در طراحی دیتابیس کاملا درسته، ولی در سطح کلاس و شیئ به نظر اشتباه میکنید. مگر اینکه شما سواری یا باربری بودن رو یک شیئ بدونید
دوست عزیز ما نمی خوایم یه شی مجرد بسازیم بلکه هدف ماخواندن ساختار ديتابيس بوده و سپس ايجاد كلاس هايي بر اساس اين ساختار ، برقراري ارتباط بين اشياء ايجاد شده و جداول، ويووها، رويه هاي ذخيره شده و غيره ،...

mehran_sh_t
پنج شنبه 24 شهریور 1390, 13:50 عصر
ايجاد كلاس هايي بر اساس اين ساختار

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

aserfg
پنج شنبه 24 شهریور 1390, 14:27 عصر
اگر اشتباه نکنم، در طراحی نرم افزار، اول کلاس ها رو شناسایی می کنیم، بعد بر اساس اون جداول پایگاه داده تشکیل میشه و نرمال سازی میشن.

مسلما در طراحی بانک چشم بسته فیلد ایجاد نمی کنیم و بر اساس همون کلاسهایی که توی ذهن شماست این کار انجام خواهد شد . ولی در اون مرحله تنها مشخص می کنیم چه کلاسهایی با چه فیلدها یی می خوایم و در اینجا ساختار ی با تمام جزئیات باید پیاده سازی بشه . که بر اساس همون طرح اولیه (که بانک هم بر اساس اون تشکیل شده) است .
اگه هنوز هم قانع نشدید :
احتمالا باید استاد نصیری رو بشناسین در سایت خودشون هدف ORM رو که دقیقا همین کاریه که از ابتدا مبحث ما بوده اینطور بیان می کنند :


كار ابزارهاي ORM خواندن ساختار ديتابيس شما بوده و سپس ايجاد كلاس‌هايي بر اساس اين ساختار ، برقراري ارتباط بين اشياء ايجاد شده و جداول، ويووها، رويه‌هاي ذخيره شده و غيره مي‌باشد. همچنين اين ابزارها امكان تعريف روابط one-to-one, one-to-many, many-to-one, و many-to-many بين اشياء را نيز بر اساس ساختار ديتابيس شما فراهم مي‌كنند.

آدرس : http://www.dotnettips.info/2009/05/5-orm.html

و در واقع صحبت من گرته برداری از کلام ایشون بود چرا که می خواستم حق کلام ادا بشه و خدای نکرده لغت نابجایی در توضیح استفاده نشه .
توصیه من به همه دوستان بر نامه نویس به عنوان یه عضو کوچییییک :
از خرده گیری نابجا که باعث پست زدن بدون تفکر و تامل در عمق مسئله است ، پرهیز کنیم چرا که هدف همه ما و شما ها و همه و همه از شرکت کردن در تاپیکهایی مثل این ، هم فکری و استفاده از صحبت های همدیگه است .
در مورد ایجاد آرایه ای در کلاس STATE دوستانی که هنوز بر این باورند بهتره به تیم سازنده ابزارهای تولید کدهای لایه زیرین مانند TIER GENERATOR سفارش کنند ، چون اونا هم یادشون رفته در این طور کلاسها یه آرایه از کلاس مقابل ایجادکنند !!
در ضمن گیریم این آرایه باشه چطوری و در چه مرحله ای می خواین مقدار دهیش کنید !! روشی که گفتم با دادن فیلد STATEID که جز خواص کلاس SUBSTATE بود یه LIST از نوع کلاس STATE بر گشت داده می شد شما هم بفرمایید کی و چطور این رو FILL می کنید؟

mehran_sh_t
پنج شنبه 24 شهریور 1390, 15:39 عصر
دوست گرمی، متاسفانه پست آخر شما همراه با کنایه بود! این پست هم جوابی حرفها و کنایه های شماست!


احتمالا باید استاد نصیری رو بشناسین
نمی شناسم


كار ابزارهاي ORM خواندن ساختار ديتابيس شما بوده و سپس ايجاد كلاس‌هايي بر اساس اين ساختار ، برقراري ارتباط بين اشياء ايجاد شده و جداول، ويووها، رويه‌هاي ذخيره شده و غيره مي‌باشد. همچنين اين ابزارها امكان تعريف روابط one-to-one, one-to-many, many-to-one, و many-to-many بين اشياء را نيز بر اساس ساختار ديتابيس شما فراهم مي‌كنند.
این اشاره شما چیزی رو عوض نکرده واسه بنده، مثل مهندسی معکوس می مونه


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


در مورد ایجاد آرایه ای در کلاس STATE دوستانی که هنوز بر این باورند بهتره به تیم سازنده ابزارهای تولید کدهای لایه زیرین مانند TIER GENERATOR سفارش کنند ، چون اونا هم یادشون رفته در این طور کلاسها یه آرایه از کلاس مقابل ایجادکنند !!
http://msdn.microsoft.com/en-us/library/cc161164.aspx
اگر LINQ رو به عنوان یک ORM قبول دارید (لینک بالا از وبسایت سازنده اش هستش، که توش نوشته: ...LINQ to SQL is an object-relational mapping)، یک بار امتحانش کنید

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

aserfg
پنج شنبه 24 شهریور 1390, 16:02 عصر
اگر LINQ رو به عنوان یک ORM قبول دارید (لینک بالا از وبسایت سازنده اش هستش، که توش نوشته: ...LINQ to SQL is an object-relational mapping)، یک بار امتحانش کنید

خوب که چی . سایت بنده به آدرس www.persianarticle.org و همچنین سایتی که هم اکنون در حال نوشتن اون هستم و به صورت آزمایش رو ی هاست گذاشتم به آدرس : www.sepahanniaz.com تماما با Linq to entity نوشته شده ، خوب این امتحان ، حالا باید چیکار کنم .

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

mojtaba.baghban
پنج شنبه 24 شهریور 1390, 16:39 عصر
آقایون ما که اینجا نیومدیم افکارمون رو به بقیه تحمیل کنیم. با کمک شما و چند تا مقاله که خوندم من واسه خودم به جمع بندی رسیدم و از همتون تشکر میکنم.
بقیه ماجرا
من با آقای mehran_sh_t موافقم.

ما نمی خوایم یه شی مجرد بسازیم بلکه هدف ماخواندن ساختار ديتابيس بوده و سپس ايجاد كلاس هايي بر اساس اين ساختار ، برقراري ارتباط بين اشياء ايجاد شده و جداول، ويووها، رويه هاي ذخيره شده و غيره ،...
ایجاد کلاس بر اساس ساختار دیتابیس کار اشتباهیه. البته این نظر من نیست این مقاله رو خوندم و به نظر من درست میگفت اگه جسارت نمیشه این مقاله رو مطالعه کنید و نظرتون رو بگید.
Why Data Models Shouldn't Drive Object Models (And Vice Versa)
(http://www.agiledata.org/essays/drivingForces.html). مقاله Mapping Objects to Relational Databases: O/R Mapping In Detail (http://www.agiledata.org/essays/mappingObjects.html) را نیز پیشنهاد میکنم.
البته به این تکته هم توجه کنید که با توجه به این که کلاس در لایه BLL قرار دارد لزومی ندارد ساختار دیتابیس را بداند. و البته با نظر آقای aserfg در مورد اینکه در کلاس state نیازی به آرایه برای کلاس substate نیست موافقم زیرا substate یک ویژگی از کلاس state نیست بلکه دو کلاس مجزا هستند که بین آندو ارتباط یک به چند برفرار است.
با تشکر از شما که بی توقع تو بحثها شرکت میکنید و به دوستانتان خدمت میکنید.

aserfg
پنج شنبه 24 شهریور 1390, 17:45 عصر
ایجاد کلاس بر اساس ساختار دیتابیس کار اشتباهیه.

صد در صد ، ایجاد کلاس بر اساس ساختار این نیست که عناصر کلاس لایه BLL دقیقا همون عناصر بانک هستند ،
فرض کنید زمینی دارین که می خواین ساختمونی رو توش بسازین ابتدا یه نقشه تهیه می کنین و بر اساس اون (خواندن ساختار) خونه رو می سازیم (ایجاد ساختار )
آیا شما می تونید بدون نقشه ساختمون رو بسازید ، منظور از بر اساس ساختار ، یعنی بر اساس طرح اولیه .
من خواهش می کنم ابزار tier generatoe رو حتما یه بار اسفاده کنید . و کدهاش رو مورد بررسی قرار بدین واقعا شگفت زده خواهید شد .
من کلیه مطالب رو برای اثبات این جمله به کار بردم :

در کلاس state نیازی به آرایه برای کلاس substate نیست