سفارش تبلیغ
صبا ویژن

وراثت در c#

 

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

شکل کلی ارث بری در c# به صورت زیر است:

Class DerivedClass((کلاس مشتق شده(ارث برنده)  :  BaseClass(کلاس پایه برای ارث بری)

{

...............

}

کلاس Derived از کلاس Base ارث می برد. یک کلاس می تواند حداکثر از یک کلاس ارث ببرد و نمی تواند از دو یا چند کلاس ارث ببرد.

نکته : کلاس system. کلاس ریشه برای تمام کلاس ها است. به عبارت دیگر،همه کلاس ها به صورت ضمنی از این کلاس ارث می برند.

 


» نظر

استفاده از چندین اداره کننده catch

 

خطاهای مختلف ،exception های مختلفی را ایجاد می کنند تا انواع مختلفی از مشکلات را نشان دهند. برای مثال، فرض کنید که یک متد به نام doCalculation استفاده می کنید که می تواند یک DividebyZeroException (تقسیم بر صفر)ایجاد کند. برای اداره این خطا می توانید از یک catch جداگانه برای این استثنا استفاده کنید.

مثال:

try

            {

                int p1 = System.Int32.Parse(P1Operand.Txet);

                int P2 = System.Int32.Parse(P2Operand.Text);

                int answer = doCalculation(P1, P2);

                rsulte = answer.ToString();

            }

            catch (System.FormatException caught)

            {

                //............

            }

            catch (System.DivideByZeroException caught)

            {

                //.................

            }

نکته جالب در مورد این دستورات try/catch (به غیر از جداسازی کد و اداره کننده های خطا) این است که clr بسته به نوع استثنا ها ، برنامه را به اداره کننده catch مناسب هدایت می کند و لازم نیست که صریحا یک exception را به یک اداره کننده مرتبط کنید و این کار به صورت خودکار انجام می شود.

 


» نظر

مدیریت خطاها و (استثنا)exception ها(1)در سی شارپ

ایده اصلی در مدیریت استثنا (exception)ها این است که کدی که جریان اصلی برنامه را پیاده می کند را از کد مدیریت خطاها جدا کنیم. وقتی این دو قسمت جدا شوند ، درک هر دو قسمت ساده تر می شود زیرا دیگر با هم آمیخته نیستند. برای نوشتن چنین برنام هایی بایددو کار انجام دهیم.

1. کد خود را در یک بلاک try بنویسید . سعی کنید که تمام دستورات داخل این بلاک اجرا شوند و اگر هیچ کدام از این دستورات exception (استثنا ) ایجاد نکنند، همه این دستورات یکی بعد از دیگری اجرا می شوند.

2. باید یک یا چند اداره کننده catch بلافاصله بعد از بلاک try بنویسید. اگر یکی از دستورات داخل بلاک  try ، استثنایی ایجاد کند ، جریان معمولی برنامه متوقف می شود و کنترل برنامه به یک اداره کننده catch‌داده می شود.

مثال:

try

}

 ;(int lhs=system.int32.parse(lhsOperand.Text

int rhs= system.int32.parse(rhsOperand.Text) ;

int answer=lhs+rhs;

result.text=answer.toString()

 }

catch(system.FormatException caught)

{

//مدیریت استثناها

}

اگر فرمت رشته ای که به  عنوان آرگمان متد parse قابل تبدیل به عدد صحیح نباشد ، این متد یک FormatException ‌تولید می کند که نشان می دهد این دستور با موفقیت انجام نشده است. در این صورت کنترل برنامه مستقیما به یک catch‌می رود .


» نظر
MS_P center_left3b