نمایش نتایج 1 تا 20 از 20

نام تاپیک: Object Oreinted در طراحی سایت

  1. #1

    Question Object Oreinted در طراحی سایت

    مشکلی که دارم در رابطه با Refresh صفحه در مسئله ی طراحی سایت است . فرض کنید که کلاس ساده ی زیر را داریم :

    public class Class1
    {
    private string _firstName = string.Empty;

    public string firstName
    {
    get
    {
    return _firstName;
    }
    set
    {
    _firstName = value;
    }
    }
    }


    در برنامه ی اصلی هم کد زیر را داریم :

    public partial class _Default : System.Web.UI.Page
    {
    Class1 objClass1 = new Class1();

    protected void Page_Load(object sender, EventArgs e)
    {
    if (Session["FirstLoad"] == null)
    {
    Session["FirstLoad"] = true;
    objClass1.firstName = "Mehrnoosh";
    }
    Label1.Text = objClass1.firstName;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {

    }
    }


    الان اگر برنامه را اجرا کنیم ، در Label1 نوشته شده : Mehrnoosh . خوب تا اینجا که درست است . ولی اگر دکمه ی Button1 را کلیک کنیم ، در Label1 هیچ مقداری نشان داده نخواهد شد. مشکل همین است که گفتم . البته علتش هم مشخص است . چون صفحه Refresh می شود ، بنابراین مقادیر تمام متغیرهای برنامه و متغیرهای کلاس ها را هم دوباره Refresh یا Reset کرده و به حالت مقدار پیش فرضشان در می آورد.

    حال سوال من این است که با توجه به این مسئله چطور می توان در C#‎ ، از Object Oriented استفاده کرد ؟

    فقط با تمام وجود خواهش می کنم کسی در پاسخ به این سوال نگوید که می توانی از Session و یا متغیرهای Static برای نگهداری مقادیر متغیرها استفاده کنی. چون همه می دانند که اینطوری با قضیه برخورد کردن ، Object Oriented نیست.
    با تشکر


  2. #2

    Smile نقل قول: Object Oreinted در طراحی سایت

    سلام

    چون بار دوم که صفحه لود می شود(یا دکمه کلیک می شود) این اتفاق می افتد :

    Class1 objClass1 = new Class1();
    Label1.Text = objClass1.firstName;

    با دقت کدهای بالا رو تریس کنید .
    حالا به نظرتون چرا لیبل شما خالیه ؟

  3. #3
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    37
    پست
    1,227

    نقل قول: Object Oreinted در طراحی سایت

    از فکر متغییر عمومی بیا بیرون ، وب مثل ویندوز نیست .
    شما یا از viewstate استفاده کن یا متغییر static
    اگر از متغییر استاتیک استفاده میکنی ، همین روشت درسته ولی اگر از viewstate استفاده کنی .
    تو get , set باید دیگه با viewstate استفاده کنی

  4. #4

    Question نقل قول: Object Oreinted در طراحی سایت

    با سلام

    Chabok گفته بودید که به خاطر کد زیر است که متغیرم خالی را نشان می دهد:

    Class1 objClass1 = new Class1();
    Label1.Text = objClass1.firstName;

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

    آقای mahdi_farhani هم گفته بودند :
    از فکر متغییر عمومی بیا بیرون ، وب مثل ویندوز نیست
    من به فکر متغیر عمومی نیستم و به فکر متغیر Private هستم . بعد هم این همه می گویند که C#‎ یک زبان قوی Object Oreinted است ، چطور ممکن است که امکانی برای پیاده سازی Object Oreinted در وب نداشته باشد

    در هر حال از توجهتان ممنون

  5. #5
    کاربر دائمی آواتار Amir Taghavi
    تاریخ عضویت
    مهر 1384
    محل زندگی
    من از شهر عشقم ولی دلشکسته
    پست
    510

    نقل قول: Object Oreinted در طراحی سایت

    بعد هم این همه می گویند که C#‎ یک زبان قوی Object Oreinted است ، چطور ممکن است که امکانی برای پیاده سازی Object Oreinted در وب نداشته باشد
    oop تر ار #C سراغ داری؟!!!

    جواب سوالت همونیه که آقا مهدی گفت (پست 3)

  6. #6

    Smile نقل قول: Object Oreinted در طراحی سایت

    سلام
    نقل قول نوشته شده توسط ghayegh مشاهده تاپیک

    Chabok گفته بودید که به خاطر کد زیر است که متغیرم خالی را نشان می دهد:

    Class1 objClass1 = new Class1();
    Label1.Text = objClass1.firstName;
    ولی من که این دو خط کد را پشت سر هم ننوشتم که شما این را می گوئید . شما اگر همین کدی را که نوشتم ( البته اگر سشن ها را به متغیر تبدیل کنید) ، در یک پروژه ی ویندوزی اجرا کنید ، اصلا داخل لیبل خالی نیست.
    اگه یکم دقت میکردین متوجه پاسخ من میشدید :
    چون بار دوم که صفحه لود می شود(یا دکمه کلیک می شود) این اتفاق می افتد :

    Class1 objClass1 = new Class1();
    if (Session["FirstLoad"] == null)
    {
    Session["FirstLoad"] = true;
    objClass1.firstName = "Mehrnoosh";
    }

    Label1.Text = objClass1.firstName;
    خطوطی که قرمز شده اند دفعات بعد اجرا نخواهند شد .
    چون شرط شما برقرار نیست و سشن شما پر است .

    بهتره به این صورت پاسخ شما رو بدم :
    در وب برنامه شما مثل ویندوز همیشه در حال اجرا نیست .

    بهتره مثال خودم را با یک صفحه ساده وب بزنم (مثل asp یا php)
    شما توی صفحه ای که طراحی می کنید صفحه از بالا به پایین شروع به اجرا کردن کدهای شما میکنه و یک سری کار انجام میده و نهایتا یک سری کد HTML تولید میکنه .

    وقتی صفحه شما سمت سرور اجرا شد کدهای HTML به کلاینت ارسال می شود .
    و دیگر سمت سرور چیزی باقی نمانده است .
    منظورم اینه که دیگه کامپایل صفحه تمام شد .

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

    امیدوارم متوجه شده باشید که وب مثل ویندوز نیست . شاید با ASP.net کمی این احساس بهتون دست بده .
    ولی وب و پروتکل http به این صورته که هر بار که از سمت کلاینت درخواستی میاد کدهای شما اجرا میشن . در واقع کدهای شما همیشه در حال اجرا نیست.

    پس سعی نکنید توی وب مثل ویندوز برنامه بنویسید . چون به مشکل برخورد خواهید کرد.

    موفق و پیروز باشید . خدانگهدار

  7. #7

    Question نقل قول: Object Oreinted در طراحی سایت

    با سلام
    از همه ی کسانی که تا الان راجع به این قضیه راهنمایی کردند ، ممنونم .

    کاربر Chabok ، در ارتباط با کد من در زیر گفته بودید :

    Class1 objClass1 = new Class1();
    if (Session["FirstLoad"] == null)
    {
    Session["FirstLoad"] = true;
    objClass1.firstName = "Mehrnoosh";
    }
    Label1.Text = objClass1.firstName;

    و شما گفته بودید :
    خطوطی که قرمز شده اند دفعات بعد اجرا نخواهند شد .
    چون شرط شما برقرار نیست و سشن شما پر است .
    خوب ، من هم این ایف را نوشته ام که دیگر objClass1.firstName را پر نکند . یعنی می خواستم نشان دهم که متغیری که یک بار مقدار گرفته ، دفعه ی دوم مقدار نگیرد . و خط بعد از ایف که به لیبل مقدار می دهد ، از مقدار قبلی داده شده به متغیر استفاده کند که مشکلم همین بود که این کار را نکرده .
    ضمنا من هم که گفتم که می دانم ، این مشکل به خاطر قضیه ی Refresh است .
    بعد هم من یک بار این قضیه را که چرا نمی شود از Object Oreinted در وب استفاده کرد ، به یکی از استادهایم گفتم . ایشان گفتند :
    چطور این همه سال است که طراحان سایت دارند از آبجکت ارینتد استفاده می کنند
    این استادم از آن استاد آبکی ها نبود .

    همچنین من تمام توضیحات کاربر Chabok را خط به خط متوجه شدم و از ایشان ممنونم . ولی :
    من متاسفانه هنوز نمی توانم باور کنم که در وب نمی توان از Object Oreinted استفاده کرد . تصور می کنم که هنوز ما ( کسانی که این صفحه را دیده اند) راه حلش را پیدا نکردیم.

    ضمنا من اصراری بر کدهایی که نوشتم ندارم . اصرار من بر این است که چطور می توان در Asp.Net ، مسئله ی Object Oreinted را پیاده سازی کرد.

    در هر حال اگر کسی اطلاعاتی بیشتری دارد ، از راهنمایی اش ممنون می شوم.
    آخرین ویرایش به وسیله ghayegh : شنبه 27 مهر 1387 در 16:50 عصر

  8. #8
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    37
    پست
    1,227

    نقل قول: Object Oreinted در طراحی سایت

    میشه یک توضیحی در مورد شئ گرایی بدی ؟؟؟؟
    شئ گرایی که فقط این یک نکته نیست

  9. #9

    نقل قول: Object Oreinted در طراحی سایت

    1/ صفحه شما با کليک بر روي دکمه refresh نميشود. بلکه Postback ميشود. به اين نکته دقت کنيد.
    2/ در برنامه هاي وين، مقادير شما در memory نگهداشته شده و بعد از آن براحتي قابل استفاده هستند. چون context از بين نميرود. اما در وب با هر بار load شدن صفحه، مجددا context ساخته ميشود که البته مقاديري از آن از viewstate يا session يا controlstate مي آيند.
    3/ وقتي صفحه اي ساخته ميشود، مقاديري را که ميخواهيم در سطح context نگهداري شوند بايد در مثلا viewstate يا session قرار دهيم.
    4/ کنترلهاي asp.net معمولا خودشان اينکار را انجام ميدهند بشرطي که enableviewstate=true باشد که بصورت پيش فرض اينچنين است.
    با توجه به موارد بالا شما بايد قبل از اينکه مقداري را در label قرار دهيد ابتدا چک کنيد که IsPostBack برابر false باشد:

    protected void Page_Load(object sender, EventArgs e)
    {
    if (!IsPostBack)
    {
    if (Session["FirstLoad"] == null)
    {
    Session["FirstLoad"] = true;
    objClass1.firstName = "Mehrnoosh";
    }
    Label1.Text = objClass1.firstName;
    }
    }

  10. #10

    Question نقل قول: Object Oreinted در طراحی سایت

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

    آقای mahdi_farhani ، گفته بودید :
    شئ گرایی که فقط این یک نکته نیست
    دقیقا بالای پیغام شما ، من با رنگ سبز نوشته بودم :
    ضمنا من اصراری بر کدهایی که نوشتم ندارم . اصرار من بر این استکه چطور می توان در Asp.Net ، مسئله ی Object Oreinted را پیاده سازیکرد.
    در هر صورت باز هم از توجهتان ممنون.
    راستش من
    1- هر کسی که بخواهد به جای متغیرهای private ، از Session ها و یا متغیرهای Static استفاده کند ، به او می گویم Object Oriented کار نکرده ای.
    2- هر کسی که بخواهد یک کلاس بنویسد و به جای تمام متغیرهای Public و Private اش ، از متغیرهای Static استفاده کند ، به او می گویم Object Oriented کار نکرده ای.
    3- هر کسی که بخواهد یک کلاس بنویسد که در آن از متغیرهای Public و Private استفاده کند و بعد برای اینکه این مقادیر کار کند ، آن آبجکتی که از کلاس گرفته در یک Session ذخیره کند تا بعدها بتواند آن مقادیر Public و Private را از Session بازیابی کند ، به او می گویم Object Oriented کار نکرده ای.
    4- هر برنامه ای که نتواند حتی مقدار یک آبجکتی از کلاس را در متغیرهای سراسری خودش ذخیره کند ، آیا این Object Oreinted است؟
    5- هر برنامه ای که تنها راه ذخیره کردن یک آبجکت از کلاس ، این باشد که آن آبجکت را در Session ذخیره کند و یا در متغیر Static ، آیا این Object Oreinted است؟ قطعا نیست و قطعا C#‎.Net راهکاری برای پیاده سازی Object Oreinted در وب ارائه داده است.


    ما چه موقع از یک متغیر Static استفاده می کنیم ؟ پاسخ : زمانی که برای تمام آبجکت هایی که از یک کلاس گرفته می شود ، آن مقداری که مد نظر ماست ، یکسان باشد . پس چرا دارید از متغیر Static در جائی غیر از خودش استفاده می کنید ؟ من خودم هم قبلا به غلط از Static و Session استفاده می کردم. ولی همان موقع هم می دانستم که دارم کاری می کنم که در جای خودش نیست.

    با توجه به توضیحات شما ، که همه را هم قبول دارم ، من نمی دانم چرا از خود نمی پرسید که ASP.NET چطور می تواند مقدار Session را ذخیره کند ، ولی راهکاری برای ذخیره ی مقادیر Private نگذاشته است؟

    من هنوز جواب خودم را پیدا نکردم.

    ممنون .
    آخرین ویرایش به وسیله ghayegh : شنبه 27 مهر 1387 در 20:20 عصر

  11. #11

    نقل قول: Object Oreinted در طراحی سایت

    من فکر میکنم شما در کلاس های آموزش برنامه نویسی شرکت کردید.
    اصولاً در این کلاس ها بحث OOP رو به خوبی به هنرجو یاد نمیدن. بنابراین هنرجو هر مسئله ای رو سعی می کنه به نوعی به OOP ارتباط بده!

    ما میدونیم که زمین نیروی جاذبه داره که باعث میشه اجسام بر سطح زمین بمونن و به آسمون نرن.
    وقتی یک فضانورد به کره ی ماه میره، به دلیل نیروی جاذبه ی کمتر ماه، وزنش به یک ششم وزن زمینیش کاهش پیدا می کنه.
    آیا من می تونم بگم که وزن این فضانورد در فضا کاهش پیدا می کنه؟ خیر! فقط محیط تغییر کرده. پس محیط بر بُروز رفتار موجودیت ها تاثیر گذاره. در سناریویی که گفتم، ما نمی تونیم نعوذ باا... خدا رو متهم کنیم که چرا رفتار نیروی جاذبه با انسان در زمین و ماه متفاوته! چون علتش رو در تغییر محیط می دونیم. پس هر چیزی علت و معلولی داره.

    نقل قول نوشته شده توسط ghayegh
    1- هر کسی که بخواهد به جای متغیرهای private ، از Session ها و یا متغیرهای Static استفاده کند ، به او می گویم Object Oriented کار نکرده ای.
    Session یکی از راه های ذخیره ی مقداری عمومی برای هر فرد در ASP.NET هست. متغیرهای عمومی به منظور نگهداری داده بین صفحات کاربردی ندارن.
    نقل قول نوشته شده توسط ghayegh
    2- هر کسی که بخواهد یک کلاس بنویسد و به جای تمام متغیرهای Public و Private اش ، از متغیرهای Static استفاده کند ، به او می گویم Object Oriented کار نکرده ای.
    البته بهتره بنده در این مورد به شما بگم که OOP کار نکردی! کلاس های Utility تماماً از اعضای Static ایجاد میشن!
    نقل قول نوشته شده توسط ghayegh
    3- هر کسی که بخواهد یک کلاس بنویسد که در آن از متغیرهای Public و Private استفاده کند و بعد برای اینکه این مقادیر کار کند ، آن آبجکتی که از کلاس گرفته در یک Session ذخیره کند تا بعدها بتواند آن مقادیر Public و Private را از Session بازیابی کند ، به او می گویم Object Oriented کار نکرده ای.
    در ASP.NET برای هر سناریویی ابزار خاص خودش تعبیه شده. وقتی که ماهیت چیزی رو می دونیم، دلیل وجود یا عدم وجود اون واسمون آسون میشه. همون طور که دوستان اشاره کردن، بعد از ارسال صفحه به کلاینت، اون صفحه به طور کامل از بین میره. این ماهیت وب هست! ارتباطی هم با نوع زبان یا شرکت نداره! در حال حاضر تو در کدهات از ماهیت وب تخطی کردی. مورد 3 هم ارتباطی با بحث OOP نداره.
    نقل قول نوشته شده توسط ghayegh
    4- هر برنامه ای که نتواند حتی مقدار یک آبجکتی از کلاس را در متغیرهای سراسری خودش ذخیره کند ، آیا این Object Oreinted است؟
    البته ASP.NET یک تکنولوژیه و زبان نیست. مشکل شما اینه که دید ویندوز به وب داری. تا این دید اصلاح نشه هر چه ما بگوییم راه به جایی نبرد ;) "متغیر عمومی" در وب به اون معنا که در ویندوز وجود داره نیست! در وب از Session، Application، Cache، Cookie و ViewState بنا به اقتضای شرایط استفاده میشه. ما در ویندوز از این چیزها نداریم!
    نقل قول نوشته شده توسط ghayegh
    5- هر برنامه ای که تنها راه ذخیره کردن یک آبجکت از کلاس ، این باشد که آن آبجکت را در Session ذخیره کند و یا در متغیر Static ، آیا این Object Oreinted است؟
    جواب این سوال اینه: درک درستی از OOP پیدا نکردید.

    و در پایان، شما می تونی به هر فردی هر لقبی رو نسبت بدی اما عدم توانایی در درک یک موضوع، نمی تونه اون موضوع رو زیر سوال ببره.

    موفق باشید.

  12. #12

    Question نقل قول: Object Oreinted در طراحی سایت

    با سلام

    بابا ما کی به هر کسی هر لقبی که خواستیم ، نسبت دادیم ؟ توی هر پیغاممون هم هر وقت خواستیم بگوئیم پاسخ شما را به فلان دلیل قبول نداریم ، بعدش هم گفتیم که با این وجود از اینکه به این سوال توجه کردید ،ممنونم . روی پیغام اکثریتتون هم ، بر روی Button تشکر کلیک کردیم. بالاخره سوال دیگه . حل هم نشده .
    قبلا هم گفتم . من یک استاد فوق العاده بداخلاق داشتم که فوق العاده هم با سواد بود . نمی خوام بگم هر چی گفته درست بوده . ولی من خودم هم قبلا که این سوال رو ازش پرسیدم ، قیافه اش و مفهوم حرفش ، تمام حاکی از تعجب وی از حرف من بود که چرا گفته ام نمی توان در وب Object Oreinted را آنطور که مد نظرمان است ، پیاده سازی کرد.

    کسی پاسخ دیگری برای سوال این صفحه ندارد؟

    اگر راهنمایی کنید ، ممنون می شوم.
    آخرین ویرایش به وسیله ghayegh : یک شنبه 28 مهر 1387 در 11:53 صبح دلیل: توضیحات

  13. #13
    کاربر دائمی آواتار Amir Taghavi
    تاریخ عضویت
    مهر 1384
    محل زندگی
    من از شهر عشقم ولی دلشکسته
    پست
    510

    نقل قول: Object Oreinted در طراحی سایت

    کسی پاسخ دیگری برای سوال این صفحه ندارد؟
    پاسخی نموده!
    جوابت رو در پست های قبلی جستجو کن.

    آنطور که مد نظرمان است
    مد نظرت اینه که یه class بسازی که چندتا property و method داشته باشه؟ خوب تو که این کار و کردی ولی اشتباهت اینه که وب رو با ویندوز اشتباه گرفتی. تو win مقدار var ها تو ram میرن. اگه وب هم همینجور بود که... دیگه خودت تا اخر داستانو حدس بزن. (:

  14. #14

    Smile نقل قول: Object Oreinted در طراحی سایت

    با سلام

    Behrouz_Rad گفته بودید :
    Sessionیکی از راه های ذخیره ی مقداری عمومی برای هر فرد در ASP.NET هست. متغیرهای عمومیبه منظور نگهداری داده بین صفحات کاربردی ندارن.
    متغیرهای عمومی مگر فقط برای انتقال اطلاعات بین صفحات باید استفاده شوند ؟ حتی اگر به Object Oreinted هم کاری نداشته باشیم ( منظورم این است که آن کلاسی که نوشتم ، حذف کنیم ) و کدی مشابه با کد متدLoad بنویسیم ، می بینیم که اصلا مقدار متغیر Public را در همان صفحه هم بعد از PostBack نگه نمی دارد. دیگر چه برسد به اینکه صفحه ی دیگر بخواهد از مقدار متغیر Public صفحه ی قبل استفاده کند.
    خواهش می کنم در پاسخ به این سوال نگوئید :
    بعد از ارسال صفحه به کلاینت، اون صفحه به طور کامل از بین میره
    چون اولا این حرفتان را قبول دارم ، ثانیا سوالم این است که چطور می تواند مقدار Session را ذخیره کند ؟ اما مثلا نمی تواند مقدار متغیرهای Private را ذخیره کند ؟ حالا اصلا نمی تواند ، درست . راه حلش چیست که بتواند مقدار متغیرهای Private را ذخیره کرد؟
    من یک سوالی از همه ی شما دارم : مثلا در پروژه های ویندوزی می گوئیم که یک ماشین یک سری خصوصیاتی دارد : مثلا رنگش و مدلش و تعداد درهایش و یک سری رفتارهایی دارد : مثلا : ترمز می کند و جلو می رود و عقب می رود. بنابراین می آئیم و یک کلاس ماشین درست می کنیم .
    دائم می گوئید :
    وب را با ویندوز اشتباه گرفتی
    حال سوال اصلی من این است :
    آیا این مفاهیمی که گفتم در پروژه های وب از بین می رود ؟
    آیا در این ASP.NET ی که شما از آن ترسیم می کنید ، این مفهوم که ماشین ، خصوصیات اختصاصی (Private Property) و یا رفتار اختصاصی(Private Method) دارد ، از بین می رود ؟ با توجه به آنچه که شما می گوئید و می خواهید که ظاهرا متغیرهای کلاس ماشین را هم Static تعریف کنید ، مشکل زیر بوجود می آید :
    اگر کلاس لندرور و کلاس بنز ، از کلاس ماشین به ارث برده شوند ، و بعد مثلا یک خصوصیتی در کلاس لندرور را تغییر دهید ( این خصوصیت را از کلاس ماشین ) به ارث برده ، آنگاه ، مقدار کلاس بنز را هم تغییر داده اید . به این دلیل که همانطور که قبلا گفتم ، ماهیت متغیرهای استاتیک این است که این مقدار برای تمام آبجکت ها یکسان است.
    مگر اینکه نخواهید از یکی از مفاهیم اصلی Object Oreinted یعنی Inheritance ( وراثت ) استفاده کنید.

    protectedvoid Page_Load(object sender, EventArgs e)
    {
    if (Session["FirstLoad"] == null)
    {
    Session["FirstLoad"] = true;
    Machine.theProperty = "";
    BMV.theProperty = "xxxxxxxxxxxx";
    }
    //مشکل خط زیر پیدا می شود . در زیر کلاس بنز تا به حال نباید مقدار
    // می گرفته ، ولی به دلیل اینکه از متغیر استاتیک در جائی غیر از خودش
    // استفاده کردیم ، مقدار داده شده در کلاس بی ام و را دارد نشان می دهد
    // طبیعی هم هست که مشکل بوجود آید
    Label1.Text = Benz.theProperty;
    }


    publicclassMachine
    {
    /*Private متغیر استاتیک زیر قرار بوده که یک متغیر*/
    /* در کلاس های دیگر به آن دسترسیset , get باشد که بعدها از طریق متد */
    /*پیدا شود*/
    publicstaticstring theProperty;
    }


    publicclassBenz : Machine
    {
    public Benz()
    {
    //
    // TODO: Add constructor logic here
    //
    }
    }


    publicclassBMV : Machine
    {
    public BMV()
    {
    //
    // TODO: Add constructor logic here
    //
    }
    }

    من البته برنامه ی کوچکی مطلبی را که گفتم ، به سایت فرستادم . لطف کنید آن را ببینید.
    فایل های ضمیمه فایل های ضمیمه

  15. #15

    نقل قول: Object Oreinted در طراحی سایت

    نقل قول نوشته شده توسط ghayegh
    سوالم این است که چطور می تواند مقدار Session را ذخیره کند ؟ اما مثلا نمی تواند مقدار متغیرهای Private را ذخیره کند ؟ حالا اصلا نمی تواند ، درست . راه حلش چیست که بتواند مقدار متغیرهای Private را ذخیره کرد؟
    واقعاً بعضی چیزها اینقدر واضح هستند که شاید به همین دلیل نمیشه زیاد در مورد اونها توضیح داد.
    تو اینطوری در نظر بگیر که "متغیر عمومی" همون Session هست. هر چند که این مسئله رو میدونی که صفحه پس از ارسال به کلاینت از بین میره اما واست قابل هضم نیست. دلیلش رو در ادامه میگم.

    در زمان ورود به هر سایتی که با ASP.NET ایجاد شده، یک عدد راندوم تولید میشه که بهش میگن SID یا همون Session Identifier. این مقدار در یک کوکی ذخیره میشه و بر روی سیستم کاربر قرار میگیره.
    این کوکی حتماً نیازه (البته در URL هم میشه ذخیرش کرد) تا Session های بعدی که برای کاربر ایجاد میشن و در حافظه ی Server ذخیره میشن، بتونن Tracking یا ردیابی بشن. در هنگام ارسال درخواست توسط کاربر به سایت، مقدار SID از کوکی بازیابی میشه و با مقادیر موجود در Server مقایسه میشه. بدین طریق میشه متوجه شد که فلان Session مربوط به فلان کاربر هست. این دقیقاً اصلی ترین قسمت جوابته. چون ابهام اصلی که واست وجود داره اینه که نمی دونی چطور ASP.NET متوجه میشه که فلان Session مال فلان کاربر هست. امیدوارم پاسخت رو در این زمینه گرفته باشی :)

    و اما بیا کمی عمیق تر به قضیه نگاه کنیم و این بار حق رو به تو بدیم! ;)
    خیلی اصرار داری که حتما بشه متغیر عمومی رو مثل ویندوز باهاش رفتار کنی؟ بسیار خوب. من این پیشنهاد رو به تیم توسعه ی ASP.NET بدین شکل می تونم بدم: نوعی از اعلان خاص در ASP.NET قرار بگیره که در زمان تعریف متغیر عمومی، مشخص کنه که ما رفتاری مثل ویندوز رو از اون انتظار داریم.
    به عنوان مثال:

    public partial class _Default : System.Web.UI.Page
    {

    MyClass WinBehavior behrouz = new MyClass();

    protectedvoid Page_Load(object sender, EventArgs e)
    {
    if (Session["mySession"] == null)
    {
    Session["mySession"] = true;
    behrouz.Property = "Hello World!";
    }

    Label1.Text = behrouz.Property;
    }

    }

    فکر می کنی که تیم توسعه به چه شکل می تونه این پیشنهاد رو پیاده سازی کنه؟ شک نکن که Session تنها راهیه که می تونه برای پیاده سازی این روش ازش استفاده کنه.

    در مورد بقیه ی صحبت هات هم نیازی به توضیح نیست. چون در پست قبلی گفتم که متغیر عمومی کلاً در وب نداریم! پس Static بودن یا نبودنش فرقی نداره.

    موفق باشید.

  16. #16

    Question نقل قول: Object Oreinted در طراحی سایت

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

    آقای Behrouz_Rad گفته بودید :
    متغیر عمومی کلاً در وب نداریم


    مطلب 1 :
    همانطور که می دانیم ، خیلی از مفاهیم و یا کامپوننت های ویندوزی در وب نیست و برعکس . به خاطر همین هم وقتی مثلا با Visual Studio.NET2005 کار می کنیم ، می بینیم که مثلا اگر از کلمه ی webBrower در وب استفاده کنیم ، (که در حقیقت یک کامپوننت ) است ، برنامه ی وب آن را نمی شناسد.
    حال سوال من نسبت به حرفی که زدید ، این است که اگر متغیر عمومی در وب نداریم ، پس چطور Visual C#‎.NET2005 نسبت به استفاده از این کلمه ، حساسیت نشان نمی دهد . یا مثلا چرا نسبت به کلمه ی Private ، حساسیت نشان نمی دهد و آن را قبول می کند.
    مطلب 2 :
    من قبلا در برنامه ASP.NET2005 ، یک کلاس ارتباط با دیتابیس نوشته بودم که فرض کنید فقط کواری را اجرا می کرد . مثلا ابتدا توسط برنامه ، مقداری که قرار است در دیتابیس ریخته شود ، را در متغیر Private می ریخت و بعد چون هنوز PostBackی نشده بود ، همان مقدار را به دیتابیس ارسال می کرد. ( که اگر قرار بود PostBack ی انجام شود ، مقدار داخل Private ، خالی بود . )

    حال با توجه به مطلب 1 و مطلب 2 و نوشته ی خودتان ، نمی خواهید بگوئید که چرا می شود از مثلا متغیرهای Public و متغیرهای Private استفاده کرد ، ولی به شکل یک بار مصرف ( مثل کلاس ارتباط با دیتابیسی که من نوشتم ) – ( منظورم از یک بار مصرف ، PostBack نشدن است ، یعنی مقدار Private تا زمانی اعتبار دارد که PostBack ی انجام نشده باشد).

    آقای Behrouz_Rad ، از توضیحاتتان ممنون . ولی کاش جواب این سوالم را که قبلا در مورد کلاس Machine و کلاس Benz و کلاس BMV دادم می دادید. من در آن تاپیک این مسئله را مطرح کرده بودم ، که اگر بخواهید همه ی متغیرها را Static تعریف کنید ، آن وقت از این قانون طبیعی که هر شیء ای ، یک سری خصوصیات اختصاصی دارد و یک سری رفتاری های اختصاصی ، تخطی کرده اید.

    ضمنا شما گفتید :
    واقعاً بعضی چیزها اینقدر واضح هستند که شاید به همین دلیل نمیشه زیاد در مورداونها توضیح داد.


    حقیقتا من هم ، همین احساس را نسبت به متغیرهای Private دارم. اگر شخصی بر روی کره ی زمین ، دارای این خصوصیت اختصاصی باشد که رنگ چشمش آبی است ( در ویندوز رنگ چشم فلان شخص آبی است ) ، آیا اگر این شخص به فضا ( به وب ) برود ، خصوصیات اختصاصی اش ( رنگ چشمش آبی است ، پس دارای یک سری خصوصیات Private است ) ، تغییر می کند ؟

    اکثر کسانی که این سوال من را خوانده اند ، می گویند :
    وب را با ویندوز اشتباه گرفته ای


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

    بنده هم ، همین را می خواهم بگویم . کلاس ماشین ، چه در وب باشد و چه در ویندوز و چه در نمایشگاه ماشین و چه در کره ی ماه ، کسی نمی تواند منکر این قضیه شود که یک ماشین دارای خصوصیات اختصاصی مربوط به خودش است که هیچ کلاس دیگری ، آن خصوصیات اختصاصی را ندارد. حال ، این خصوصیات اختصاصی ، ممکن است در وب ، یا در ویندوز و یا در کره ی ماه ، هر کدام به یک شکل پیاده سازی شود . من هم ، همین را می خواهم . یعنی :
    پیاده سازی مسئله ی Object Oreinted در وب .

    آقای Behrouz_Rad ، گفته بودید :
    فکر می کنی که تیم توسعه به چه شکل می تونه این پیشنهاد رو پیاده سازی کنه؟ شک نکنکه Session تنها راهیه که می تونه برای پیاده سازی این روش ازش استفاده کنه.


    حتی اگر چنین باشد که شما می گوئید ، پس چطور ممکن است که ASP.NET2005 ، پکیجی برای این کار در نظر نگرفته باشد؟

    ممنون.

  17. #17

    Angry نقل قول: Object Oreinted در طراحی سایت

    با سلام

    یک خواهشی داشتم از کسانی که به این سوال می خواهند پاسخ دهند .

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

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

    ببینید ، فوقش این است که دیگر هیچ کس پاسخی به ذهنش نمی رسد به من بدهد و قضیه تمام می شود.

    من هنوز پاسخ خود را دریافت نکردم . اگر کسی می تواند در این زمینه راهنمایی کند ، ممنون می شوم.
    آخرین ویرایش به وسیله ghayegh : یک شنبه 28 مهر 1387 در 17:15 عصر دلیل: به هم ریختگی صفحه

  18. #18

    نقل قول: Object Oreinted در طراحی سایت

    ما قبلاً مدیری در این سایت داشتیم با آی دی Inprise. جا داره که اینجا هم از ایشون یادی کرده باشیم. شانس خوبی آوردی که با ایشون در این مورد بحث نمی کنی ;) بگذریم...

    نقل قول نوشته شده توسط ghayegh
    همانطور که می دانیم ، خیلی از مفاهیم و یا کامپوننت های ویندوزی در وب نیست و برعکس . به خاطر همین هم وقتی مثلا با Visual Studio.NET2005 کار می کنیم ، می بینیم که مثلا اگر از کلمه ی webBrower در وب استفاده کنیم ، (که در حقیقت یک کامپوننت ) است ، برنامه ی وب آن را نمی شناسد.
    حال سوال من نسبت به حرفی که زدید ، این است که اگر متغیر عمومی در وب نداریم ، پس چطور Visual C#‎.NET2005 نسبت به استفاده از این کلمه ، حساسیت نشان نمی دهد . یا مثلا چرا نسبت به کلمه ی Private ، حساسیت نشان نمی دهد و آن را قبول می کند.
    این مطالب چه ارتباطی با بحث "متغیر عمومی" دارن؟
    نقل قول نوشته شده توسط ghayegh
    من قبلا در برنامه ASP.NET2005 ، یک کلاس ارتباط با دیتابیس نوشته بودم که فرض کنید فقط کواری را اجرا می کرد . مثلا ابتدا توسط برنامه ، مقداری که قرار است در دیتابیس ریخته شود ، را در متغیر Private می ریخت و بعد چون هنوز PostBackی نشده بود ، همان مقدار را به دیتابیس ارسال می کرد. ( که اگر قرار بود PostBack ی انجام شود ، مقدار داخل Private ، خالی بود . )

    حال با توجه به مطلب 1 و مطلب 2 و نوشته ی خودتان ، نمی خواهید بگوئید که چرا می شود از مثلا متغیرهای Public و متغیرهای Private استفاده کرد ، ولی به شکل یک بار مصرف ( مثل کلاس ارتباط با دیتابیسی که من نوشتم ) – ( منظورم از یک بار مصرف ، PostBack نشدن است ، یعنی مقدار Private تا زمانی اعتبار دارد که PostBack ی انجام نشده باشد).
    کدها رو قرار بده تا دلیلش رو بگم.
    نقل قول نوشته شده توسط ghayegh
    آقای Behrouz_Rad ، از توضیحاتتان ممنون . ولی کاش جواب این سوالم را که قبلا در مورد کلاس Machine و کلاس Benz و کلاس BMV دادم می دادید. من در آن تاپیک این مسئله را مطرح کرده بودم ، که اگر بخواهید همه ی متغیرها را Static تعریف کنید ، آن وقت از این قانون طبیعی که هر شیء ای ، یک سری خصوصیات اختصاصی دارد و یک سری رفتاری های اختصاصی ، تخطی کرده اید.
    هر چند که ارتباطی بین این سوال و بحث متغیر عمومی نمی بینم، اما باید بگم که ممکنه من نیاز داشته باشم که کلاسی سرتاسر با متغیرهای استاتیک ایجاد کنم. مثلاً کلاسی که تنظیمات عمومی برنامه رو از فایل Web.Config می خونه :) اینجاست که من میگم اگر برای خوندن این مقادیر از چیزی به جز متغیرهای Static استفاده کنی، OOP کار نکردی! :)

    یک مطلب مهمی هم که باید بدونی اینه که استفاده نکردن یک فرد از مفاهیم OOP در برنامش، با عدم پشتیبانی یک زبان از OOP دو چیز متفاوته! OOP پنج خصوصیت هست که زبان هایی که اون رو داشته باشن شی گرا محسوب میشن. مثلاً VB.6.0 چیزی با عنوان Inheritance نداره؛ پس شی گرا نیست. زبان های دات نت همه ی اون خصوصیات رو دارن؛ پس شی گرا هستن. به همین سادگی :)
    نقل قول نوشته شده توسط ghayegh
    ببینید ، فوقش این است که دیگر هیچ کس پاسخی به ذهنش نمی رسد به من بدهد و قضیه تمام می شود.
    پاسخ داده شده عزیزم.
    اما احساس می کنم کمی بحث رو داری بیهوده کش میدی و به چیزهای دیگه که ارتباطی با موضوع اصلی ندارن ربط میدی.

    و در پایان: "پیاده سازی مسئله ی Object Oreinted در وب" که مرتباً از اون یاد می کنی با بحث "متغیر عمومی" ارتباطی نداره! من فکر می کنم در مورد OOP برخی مفاهیم رو به درستی متوجه نشدید.

    موفق باشید.
    آخرین ویرایش به وسیله Behrouz_Rad : یک شنبه 28 مهر 1387 در 17:36 عصر

  19. #19

    Question نقل قول: Object Oreinted در طراحی سایت

    با سلام

    آقایBehrouz_Rad، از توضیحتتان باز هم تشکر می کنم .

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

    آقایBehrouz_Rad ، گفته بودید :
    این مطالب چه ارتباطی با بحث "متغیر عمومی" دارن؟
    و
    هر چند که ارتباطی بین این سوال و بحث متغیر عمومی نمی بینم،
    و
    و در پایان: "پیاده سازی مسئله ی Object Oreinted در وب" که مرتباً از اون یاد میکنی با بحث "متغیر عمومی" ارتباطی نداره
    آخه من که محور صحبتم ، بحث متغیر عمومی نیست . من فکر می کنم شما تصور کردید من تمام صحبتم ، پیاده سازی متغیر عمومی در وب است . خیر . مگر شما زمانی که می خواستید به سوال من پاسخ دهید روی لینک Object Oreinted در سایت کلیک نکردید ؟


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

    آقایBehrouz_Rad ، گفته بودید :
    تنظیمات عمومی برنامه رو از فایل Web.Config می خونه :) اینجاست که من میگم اگربرای خوندن این مقادیر از چیزی به جز متغیرهای Static استفاده کنی، OOP کار نکردی! :)
    مگر من می گویم از متغیرهای Static در برنامه ها و اصلا در برنامه های Object Oreinted نباید استفاده شود ؟ خوب معلوم است که این متغیرهای Static را به یک منظوری ساخته اند . الکی که نبوده . حرف من این است که شماها می خواهید از متغیرهای Staticدر کلاس ها ، استفاده ی نابجا کنید . یعنی اینکه متغیرهای Static را برای منظوری ساخته اند . اما شما می خواهید از آن استفاده ی نادرست کنید.


    هر کسی راجع به پیاده سازی مسئله ی Object Oreinted در وب ( ASP.NET2005) نظری داره ، لطفا بیان کنه. اصلا یک لطفی می کنید : یک کلاس بسیار کوچک ، مثلا همان کلاس BMV و کلاس Benz را که از کلاس Machine مشتق شده بود ، طراحی می کنید که من ببینم شما چطور طراحی می کنید . فقط در طراحی یادتان باشد که کلاس Benz و کلاس BMV ، هر کدام دارای یک سری خصوصیات اختصاصی هستند. ( مثلا کلاس Benz ، یکی از ویژگیهای اختصاصی اش این است که تویش عروسک خرس هست که تازگی ها مد شده – منظورم این است که مثل آینه ی ماشین که یکی از وسایل ماشین است ، این هم یکی از وسایل ماشین است و همچنین کلاس BMV ، یکی از ویژگیهای اختصاصی اش این است که وقتی روشنش می کنیم ، همان لحظه به طور اتوماتیک ، ضبطش روشن می شود ).

  20. #20

    نقل قول: Object Oreinted در طراحی سایت

    بحث رو به بیراهه بردی.
    من فکر می کنم خودت هم نمیدونی سوالت چیه! و مطمئنم داری مغلطه می کنی.
    جواب سوالاتت همگی داده شد. اگر ابهام دیگه ای داری می تونی از گوگل کمک بگیری.

    موفق باشید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •