|
وراثت :: Inheritance
یکی از مهمترین مباحثی که در برنامه نویسی زبانهای شی گرا (مانند سي شارپ و وي بی دات نت) وجود دارد، وراثت یا Inheritance است. وقتی که ما یک پروژه ویندوزی مانند برنامه Hello World رو شروع می کنیم، محیط برنامه نویسی ویژوال استدیو (Visual Studio .NET Integrated Development Environment) یک تعریف به شکل زیر رو ایجاد می کند: public class Form1 : System.Windows.Forms.Form این تعریف به معنای این است که فرم ایجاد شده فرزند کلاسی به نام Form است. که دارای مفاهیم بسیار قوی است. ما می توانیم اشیایی رو بسازیم و خصوصیات آنها رو تغییر بدهیم. در این صورت رفتار هر شی بصورت خاص همان شی ولی در کل مشابه کلاس اصلی خواهد بود. در زیر مثالهایی برای این موضوع رو می بینید:سازنده ها: (Constructors) همه کلاسها دارای یک سازنده یا Constructor هستند که در زمان ایجاد یک نمونه از کلاس فراخوانی می شوند. سازنده همیشه همنام با نام کلاس است. اگر به کد تولید شده در برنامه Hello world نگاهی بیندازید، کدی مشابه کد زیر را خواهید دید: /// Sample Code 1 زمانی که یک کلاس را تعریف می کنید، باید یک سازنده برای مقداردهی اولیه آن ایجاد نمایید. البته می توانید پارامترهایی رو به اون ارجاع بدید تا مقداردهی آرگومانهای کلاس مطابق آنچه شما مد نظر دارید مقداردهی شوند. اگر شما برای کلاسی که می نویسید سازنده قرار ندهید، یک سازنده بدون آرگومان در حالت مخفی ساخته می شود.public class Form1 { public Form1() //constructor { InitializeComponent(); } } متد InitializeComponent توسط IDE ساخته شده که حاوی دستورات ساخت و جانمایی کنترلها روی صفحه است. اگر احتیاج به مقداردهی و یا اجرای دستورات خاص دیگری باشد، من یک متد دیگر معمولا به نام Init ایجاد می کنم و دستورات مورد نظر را در آن قرار می دهم. این متد پس از فراخوانی InitializeComponent فراخوانی می شود: /// Sample Code 2 public Form1() //constructor { InitializeComponent(); Init(); } private void Init() { pi=3.141259f; //set initial value of pi } رسم و گرافیک در سی شارپ [این مطلب در خصوص وراثت آمده و در بخش های بعدی مطلب گرافیک بصورت مجزا مورد بحث قرار خواهد گرفت] در اولین مثال ما یک برنامه گرافیکی داریم که دارای یک PictureBox است و می خواهیم که یک خط در آن رسم کنیم، در سی شارپ، رسم محتویات پنجره به عهده سیستم ویندوز خواهد بود در زمان این اتفاق رویداد Paint مورد استفاده قرار می گیرد. پس می توانیم کد مورد نظر خود را در این رویداد بنویسیم تا در زمان فراخونی رویداد Paint شکل مورد نظر ما نیز رسم شود. (رویداد paint در زمانهایی مثل تغییر سایز، رسم مجدد، مخفی شدن قسمتی از پنجره اتقاق می افتد) برای این منظور یک کنترل PictureBox روی فرم قرار داده شده. یک رویداد Paint به کنترل تصویر اضافه کرده، کدی مانند کد زیر ایجاد می شود: private void pic_Paint(object sender, PaintEventArgs e) همچنین کد زیر در متد InitializeComponents قرار می گیرد:{ } this.pic.Paint += new PaintEventHandler(this.pic_Paint); شی PaintEventArgs توسط روتینهای سیستمی سطح پایین پاس داده می شود. برای رسم یک شی ابتدا باید یک شی Pen ایجاد نمایید، رنگ آن را مشخص نموده و در صورتی که مایل بودید می توانید پهنای آن را مشخص نمایید. در مثال زیر شی Pen با رنگ مشکی و پهنای پیش فرض 1 استفاده شده است:/// Sample Code 3 در این مثال، نشان داده شده که یک قلم در هر بار فراخوانی رویداد Paint ساخته شده. ما می توانیم یک قلم را در سازنده کلاس پنجره Window's Constructor یا در متد Init قرار دهیم و هر بار فقط از آن استفاده نماییم.private void pic_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; //get Graphics surface Pen rpen = new Pen(Color.Black); //create a Pen g.drawLine(rpen, 10,20,70,80); //draw the line } استفاده از وراثت وراثت در سی شارپ این قابلیت را به ما می دهد که یک کلاس از کلاس آماده دیگر مشتق بگیریم. در کلاس جدید مشتق شده ما فقط می توانیم متدهای جدید را اضافه نماییم یا متدهای قبلی را تغییر دهیم. بقیه موارد دیگر بصورت خودکار از کلاس پایه به کلاس جدید به ارث خواهد رسید. برای دیدن این موضوع من یک کلاس Rectangle ساده می نویسم که یک مستطیل در پنجره رسم خواهد کرد. این کلاس دارای دو متد و یک سازنده است: /// Sample Code 4
namespace CsharpMagic { public class Rectangle { private int x, y, w, h; protected Pen rpen; public Rectangle(int x_, int y_, int w_, int h_) { x = x_; //save coordinates y = y_; w = w_; h = h_; //create a pen rpen = new Pen(Color.Black); } //-------------------------- public void draw(Graphics g) { //draw the rectangle g.DrawRectangle (rpen, x, y, w, h); } } } تگهای فارسی: مهدی ریزوندی، سی شارپ، سي شارپ، برنامه نویسی، وراثت، شی گرا، کلاس، شی، سازنده، کد نمونه، مقداردهی اولیه، رسم و گزافیک، رویداد، شی قلم
English Tags: Mehdi Rizvandi, Csharp, C sharp, C#, Programming, Inheritance, Object Oriented (OO), Class, Object, Instance, Sample Code, Initialize, Darwing and Graphics, Event, Pen Object, PaintEventArgs, Underlying System
+
نوشته شده در پنجشنبه بیست و چهارم آبان 1386ساعت 20:25 توسط کنستانتین
|
تولد سی شارپ بلاگ
سلام آبان ماه، ماه تولد وبلاگ جادوی سی شارپ هست. به همین مناسبت یک سری کتاب الکترونیکی بسیار جذاب و مفید براتون انتخاب کردیم و در سایت قرار دادیم که بتونید از اونها استفاده ببرید. این کتابها در دو قالب تک فایلی و یک مجموعه تکه تکه شده (15 قسمتی از نوع rar) ارائه شده تا هر کسی با هر روشی که می تونه آنها رو دانلود کنه. Welcome to csharpblog. دریافت کتابهای الکترونیکی به صورت فایلی
This month (persian calendar) is a birth month of our weblog (CSharpMagic) and we have a gifts for you ;-). You can download many ebook from here. two collection is collected for two type user: 1- You can download the first collection by selecting a book that you need. 2- Or you can download all ebooks from one package in 15 piece of [.rar] files.
دریافت کتابهای الکترونیکی به صورت یک فایل چند قسمتی حجم هر فایل 7mb است تگهای فارسی: مهدی ریزوندی، سی شارپ، سي شارپ، برنامه نویسی، کتاب الکترونیکی، بانک اطلاعاتی، طراحی وب سایت، آژاکس، وب سرویس، دات نت نوک، کتابهای رایگان در زمینه کامپیوتر
English Tags: Mehdi Rizvandi, Csharp, C sharp, C#, Programming, ADO.NET, XML,XML Poster, ASP.NET, Security, Distributed .NET, SQL Server 2005, Ajax, Web 2.0, Web Services, Dot Net Nuke,.Net Nuke, C# ebook, C shap ebook, book, rapidshare, Computer EBook, Wrox, OReilly, Secure Web, APress, Database programming, McGraw-Hill, Atlas, ASP.NET Ajax, Design Pattern, Sybex, Portal, rapidshare.com, Free Ebook
+
نوشته شده در چهارشنبه شانزدهم آبان 1386ساعت 16:25 توسط کنستانتین
|
سلام
اول این خبرو به همه دوستان بدم که این ماه، ماه تولد CsharpBlog است. هدیه هاتونو بفرستید بیاد. تو این یه سال من و دوستان خوبم سعی داشتیم که یاد بدیم تا یاد بگیریم چون معتقدیم که تا کسی یاد نده یاد نمی گیره. به مناسبت هدیه تولد CsharpBlog یه مقاله نسبتا جامع در زمینه برنامه نویسی GDI+ در C# تهیه کردم که امیدوارم خوشتون بیاد. در مورد سوالات مطرح شده در بخش نظرات هم چشم سعی می کنم بزودی جواب اونا رو بدم. هرچند که می دونم تا حالا کسایی که سوال پرسیدن همه جوابشو پیدا کردن ولی جوابا رو می نویسم شاید به درد بقیه دوستان بخوره. مشخصات مقاله اینه: عنوان مقاله: آشنایی با گرافیک در .NET(GDI+) سرفصلها: ترسیمات گرافیکی در .NET : آشنایی با کلاس Graphics رنگها در .NET : آشنایی با ساختمان داده Color و SystemColors برسها و قلم ها: آشنایی با کلاسهای Brush و Pen سرپوش خطوط: ساخت خطوطی با سرپوشهای خاص (Line Caps) قلم مرکب: ساخت قلمی که از ترکیب قلم های دیگر بدست می آید (Compound Pen) فونت و رسم متن در .NET : آشنایی با کلاسهای Font و FontFamily ، اندازه گیری متون ، نوشتن متن بصورت عمودی، نمایش متن با استفاده از Brush، تنظیم موقعیت متن تصاویر: آشنایی با کلاسهای Bitmap و Image و MetaFile، فرمتهای تصویری پشتیبانی شده در GDI+، نمایش تصویر، تغییر در تصاویر شامل برش زدن (Cropping) و رسم اریب تصاویر (Skewing) و بازتاب تصویر (Image Reflection) و چرخش تصویر (Rotating) و ساخت Thumbnail ترسیم درون تصویر نمایش انیمیشن این مقاله برای آشنایی با گرافیک در .NET نوشته شده. زبان مورد استفاده با توجه به عنوان وبلاگ C# در نظر گرفته شده ولی قاعدتا با کمی حوصله می تونید کدهای نوشته شده رو به VB.NET تبدیل کنید. می خواستم خودم این کارو بکنم ولی متاسفانه وقت نشد. این مقاله رو می تونید از آدرس زیر دانلود کنید: تگهای فارسی:محمد صافدل - ققنوس - سی شارپ - گرافیک - دات نت – برنامه نویسی گرافیک English Tags: Mohammad Safdel, Csharp, C sharp, C#, Graphics , .NET , Graphic Programming , GDI+ , DrawRectangle, DrawPie, SystemColors , FromArgb , solidBrush , FillPie , PathGradientBrush , LinearGradientBrush , HatchBrush , FillRectangle , Pens , Brushes , LineCap , Compound Pen , CompoundArray , FontFamily , FontStyle , Font , DrawString , MeasureString , DirectionVertical , StringFormatFlags , Bitmap , Image , Metafile , Scaling , Cropping , Skewing , Reflection , Rotating , Thumbnail , GetThumbnailImage , GetThumbnailImageAbort , ImageAnimator
+
نوشته شده در شنبه دوازدهم آبان 1386ساعت 19:6 توسط ققنوس
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

