معرفي وبسايت برنامه نويسي
به وبسايت برنامه نويسي خوش آمديد . حضور سبزتان را در اين وبلاگ گرامي ميدارم . براي شما لحطات خوشي را آرزو ميكنم. بنده رضا عبدالملكي دانشجوي رشته نرم افزار كامپيوتر از دانشكده فني دورود هستم كه اميدوارم به شما در راستاي يادگيري برنامه نويسي كمك كرده باشم. لطفا ما را از نظرات ، پيشنهادات و انتقادات خود محروم نكنيد . منتظر نظرات شما هستم .
با
ایجاد فروشگاه ابزار برنامه نویسی موافقید
پيام براي مدير وبسايت برنامه
نويسي
آمار وبسايت برنامه نويسي
كل بازديدهاي سايت : 29248 نفر
تاريخ ايجاد وبلاگ : شنبه 2 آبان 1388
تاريخ آخرين بروز رساني : یک شنبه 23 اسفند 1388
تعداد نظرات داده شده : 70 نظر
كل مطالب ارسال شده: 774 عدد
تاريخ ايجاد وبلاگ : شنبه 2 آبان 1388
تاريخ آخرين بروز رساني : یک شنبه 23 اسفند 1388
تعداد نظرات داده شده : 70 نظر
كل مطالب ارسال شده: 774 عدد
امکانات جانبي سايت برنامه نويسي
آشنايي با كلاس ها و اشيا در برنامه نويسي #C ( سهای (Abstract)
ارسال در تاريخ سه شنبه 15 دی 1388 توسط رضا عبدالملكي
کلاسهای Abstract کلاسهایی هستند که دارای یک یا چند متد پیاده سازی نشده هستند.
اگر متدی رو به شکل abstract تعریف کردید، باید کلاس رو هم به شکل abstract تعریف
کنید. بطور مثال یک کلاس پایه با نام Shape تعریف می کنیم که پارامترهایی رو
نگهداری می کنه و یک شی Pen هم برای رسم می سازیم. متد draw برای رسم استفاده می شه
و ما اون رو فقط تعریف می کنیم و کدی رو برای پیاده سازی اون نمی نویسیم، چون هر
شکلی به روش رسم خاصی نیاز دارد. (زمانی از کلاسهای Abstract استفاده می کنیم که
بخواهیم کلاس پایه ای داشته باشیم و متدهای اون در کلاسهای مشتق شده نیاز به
بازنویسی داشته باشه) به لیست کد 1 دقت کنید:
// List Code 1
public abstract class Shape
{
protected int height, width;
protected int xpos, ypos;
protected Pen bPen;
//-----
public Shape(int x, int y, int h, int w)
{
width = w;
height = h;
xpos = x;
ypos = y;
bPen = new Pen(Color.Black);
}
//-----
public abstract void draw(Graphics g);
//-----
public virtual float getArea()
{
return height * width;
}
}
public abstract class Shape
{
protected int height, width;
protected int xpos, ypos;
protected Pen bPen;
//-----
public Shape(int x, int y, int h, int w)
{
width = w;
height = h;
xpos = x;
ypos = y;
bPen = new Pen(Color.Black);
}
//-----
public abstract void draw(Graphics g);
//-----
public virtual float getArea()
{
return height * width;
}
}
توجه کنید که ما متد draw رو به شکل abstract تعریف کرده ایم و پس از تعریف با
استفاده از ; انتهای تعریف متد را مشخص کرده ایم. کلاس تعریف شده نیز به شکل
abstract تعریف شده است.
همچنین برای استفاده از کلاسهای abstract نیز باید از کلاسهای مشتق شده اون یک نمونه بگیرید و از کلاس abstract نمی توان یک نمونه ایجاد کرد. ادامه مسیر ساخت کلاس رو پی می گیریم و حالا باید کلاس Rectangle رو بسازیم. برای این منظور کلاس مورد نظر رو از کلاس Shape که به شکل Abstract تعریف شده مشتق می کنیم. به لیست کد 2 توجه فرمایید:
حالا می خواهیم که بر اساس کلاس های تعریف شده،
نمونه ای ایجاد کنیم. در لیست کد 4 نمونه های تعریف شده اند که پارمترهای مورد نیاز
با استفاده از سازنده اون ارسال شده است.
در آخر، در
رویداد Paint رسم دایره و مستطیل رو انجام می دهیم. به لیست کد 4 دقت نمایید که یک
دایره و یک مستطیل رسم شده است.
همچنین برای استفاده از کلاسهای abstract نیز باید از کلاسهای مشتق شده اون یک نمونه بگیرید و از کلاس abstract نمی توان یک نمونه ایجاد کرد. ادامه مسیر ساخت کلاس رو پی می گیریم و حالا باید کلاس Rectangle رو بسازیم. برای این منظور کلاس مورد نظر رو از کلاس Shape که به شکل Abstract تعریف شده مشتق می کنیم. به لیست کد 2 توجه فرمایید:
// List Code 2 (Rectangle class derived from abstract base
class)
public class Rectangle:Shape
{
public Rectangle(int x, int y,int h, int w):base(x,y,h,w) {}
//-----
public override void draw(Graphics g)
{
g.DrawRectangle (bPen, xpos, ypos, width, height);
}
}
کلاس Rectangle کلاسی است که می توانید
از آن یک نمونه بگیرید. که یک متد draw واقعی دارد و می تواند رسم مستطیل را انجام
دهد. برای مثال کلاس دومی رو هم پیاده سازی کرده ایم. به لیست کد 3 دقت نمایید که
پیاده سازی کلاس Circle را نمایش می دهد.public class Rectangle:Shape
{
public Rectangle(int x, int y,int h, int w):base(x,y,h,w) {}
//-----
public override void draw(Graphics g)
{
g.DrawRectangle (bPen, xpos, ypos, width, height);
}
}
// List Code 3 (Circle class derived from abstract base
class)
public class Circle :Shape
{
public Circle(int x, int y, int r):base(x,y,r,r) {}
//-----
public override void draw(Graphics g)
{
g.DrawEllipse (bPen, xpos, ypos, width, height);
public class Circle :Shape
{
public Circle(int x, int y, int r):base(x,y,r,r) {}
//-----
public override void draw(Graphics g)
{
g.DrawEllipse (bPen, xpos, ypos, width, height);
}
}
// List Code 4
public class Form1 : System.Windows.Forms.Form
{
private PictureBox pictureBox1;
private Container components = null;
public class Form1 : System.Windows.Forms.Form
{
private PictureBox pictureBox1;
private Container components = null;
private Shape rect,
circ;
//-----
public Form1()
//-----
public Form1()
{
InitializeComponent();
init();
}
//-----
private void init()
{
rect = new CsharpPats.Rectangle (50, 60, 70, 100);
InitializeComponent();
init();
}
//-----
private void init()
{
rect = new CsharpPats.Rectangle (50, 60, 70, 100);
circ = new Circle (100,60, 50);
}
}
}
}
// List Code 5
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics ;
rect.draw (g);
circ.draw (g);
}
تمرین: یک
پروژه برای مثال این پست ساخته آن را برای رسم پنج ضلعی منتظم توسعه دهید.private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics ;
rect.draw (g);
circ.draw (g);
}
