310 likes | 550 Views
زبان شی گرای c#. بخش دوم رشته ها کلاس ( سازنده – مخرب – ارث بری و چند ریختی). رشته ها. تعریف یک رشته به شکل زیر می باشد: String نام متغیر رشته ای ; مثال : string strname = “university”; نکته: دررشته ها می توان به کاراکترهای آن دستیابی داشت: Char ch = strname [2];.
E N D
زبان شی گرای c# بخش دوم رشته ها کلاس ( سازنده – مخرب – ارث بری و چند ریختی)
رشته ها • تعریف یک رشته به شکل زیر می باشد: • String نام متغیر رشته ای; مثال: string strname = “university”; نکته: دررشته ها می توان به کاراکترهای آن دستیابی داشت: Char ch = strname[2];
متد کار با رشته ها: • متد copy to: تعدادی کاراکتر را ازمکان مشخص از یک رشته در آرایه کاراکتری کپی می کند. String st; Char[] charrarray; St = “hello worls”; St.copyto(0,charrarray,0,5); مبدا اندیس مقصد تعداد
متد کار با رشته ها(ادامه ...) • متد length: طول رشته را بر می گرداند: • Intlen = st.lenght(); • متد Compareto: مقایسه دو رشته : • St.compareto(s2); • متد Equals: تساوی دو رشته را بر می گرداند: • St.equals(s2); • String.equals(st,st2); • متد startswith: تعیین می کند آیا رشته ای با رشته خاصی شروع میشود: • St.startswith(st2)
متد کار با رشته ها(ادامه ...) • مثال: • String[] strname = new string[4]{“azad” “university”, “shahr”, “ghods”}; For(inti=0;i<strname.lenght();i++) if(strname[i].startswith(“az”)) label1.text = strname[i]+”startswithaz”;
متد کار با رشته ها(ادامه ...) • متد Endswith:مشخص می کند آیا رشته با رشته خاصی به اتمام می رسد: • String.Endswith(st); • متد indexof: اولین مکان وقوع رشته ای را در رشته دیگر نشان می دهد. • St.Indexof(‘کاراکتر’ یا “رشته”); • St.Indexof(‘کاراکتر’ یا “رشته”,شماره شروع جستجو,تعداد جستجو); • متد lastindexof: شماره آخرین وقوع یک رشته در رشته ای دیگر (فرمت آن همانند indexof می باشد.) • نکته: اگرموجود نباشد عدد 1- را بر می گردانند.
متد کار با رشته ها(ادامه ...) • متد lastindexofany: هرکدام از کاراکترهای آرایه را ببیند اندیس آن را بر می گرداند. Char[] charlist = new char[3]{‘a’,’b’,’c’}; St.indexofany(charlist,شماره شروع,تعداد); متد lastindexofany : همانند متد بالا اما اندیس آخرین کارکتر پیدا شده را بر می گرداند.
متد کار با رشته ها(ادامه ...) • متد replace: رشته ای را با رشته دیگر جایگزین میکند. String st = “university”; St = st.replace(‘e’,’s’); Label1.text = st; • متد toupper()و Tolower: • St.tolower(); • متد Trim() : فضای خالی سمت راست و چپ رشته را حذف می کند. • St.Trim();
متد کار با رشته ها(ادامه ...) • متد TrimEnd(): فضای خالی انتهای رشته را حذف می کند: St.TrimEnd(); • متد TrimStart() : فضای خالی انتهای رشته را حذف می کند: St.TrimStart(); • متد Substring: بخشی از یک رشته را بر می گرداند: • St.substring(مکان شروع, تعداد);
متد کار با رشته ها(ادامه ...) • متد Remove: بخشی از یک رشته را حذف می کند. • St.Remove(مکان شروع , تعداد); • متد Insert :رشته ای را در مکان خاصی قرار می دهد. • متد Sprit : رشته ای را با ساتفاده از یک جدا کننده خاص به چند زیر رشته تبدیل می کند: String strname = “azad university shahreghods”; String[] str = new string[3]; Strname = strname.split(‘ ‘); Label2.text = strname[0];
کلاس ها در c#: • جهت ایجاد کلاس در C# از واژه کلیدی class استفاده می شود. • مراحل ایجاد: 1- برروی نام پروژه راست کلیک کرد(shift+alt+c) 2- گزینه add و سپس class را انتخاب می کنید. 3- نامی برای کلاس انتخاب کنید. Public class نام کلاس { اعضا کلاس ; }
کلاس ها در c#: • بعد از ساخت کلاس می بایست آن را نمونه سازی کرد. • نمونه سازی یعنی ایجاد یک شی. • نام کلاس نام شی = new نام کلاس (); • نحوه دسترسی به اشیا یک کلاس: • نام شی . هر یک از اعضا
اعضا کلاس • نحوه تعریف • نوع اعضا عضو کلاس • نوع اعضا همان سطح دستیابی می باشند. • Public • Private • protected • نکته : اگر سطح دستیابی تعریف نشود private در نظر گرفته می شود.
انواع اعضا • 1- ثابت ها: • Private const int x = 10; • 2- فیلدها: همانند متغیر ها هستند و برای نگهداری مقادیر از نها استفاده می شود. • Private/public int y=99; • خواص : متدهایی هستند که داده های خود را مقداردهی و مقدار آنها را بر می گر دانند. از set برای مقداردهی و از get برای برگرداندن مقدار استفاده می شود.
انواع اعضا(ادامه..) namespace classes { class simple { private int _number_of_doors = 4; public intnumber_of_doors { get { return _number_of_doors; } set { if (value >= 2 && value <= 4) _number_of_doors = value; } } } BUTTON private void button1_Click(object sender, EventArgs e) { simple obj1_simple = new simple(); obj1_simple.number_of_doors = 8; MessageBox.Show(obj1_simple.number_of_doors.ToString()); }
سازنده : • با استفاده از سازنده می توان به فیلدها مقدار اولیه داد و یا زمان ایجاد شی آنها را با مقادیر دلخواهد بخوانیم. • نحوه تعریف سازنده: Public نام کلاس { } • نام سازنده با نام کلاس یکسان است. • سازنده مثل یک متد رفتار می کند اما برای آن هیچ نوع خروجی حتی void هم تعریف نمی کنیم. • ورودی های سازنده می تواند متغیر و وابسته به تعداد ورودی هایی باشد که مقدار دهی می شوند.
مثال هایی از سازنده: Class Car namespace classes { public class car { public int y; public string color; public int _speed; public int _number_of_doors; ///constructon /// public car() { color = "white"; _speed = 120; _number_of_doors = 3; } } } BUTTON private void button7_Click(object sender, EventArgs e) { car obj = new car(); label4.Text += obj._number_of_doors.ToString() + "\r" + obj._speed.ToString() + "\r" + obj.color; }
مثال هایی از سازنده ها: BUTTON private void button8_Click(object sender, EventArgs e) { time t4 = new time(12, 25, 42); time t2 = new time(1); MessageBox.Show(t4._hour.ToString() + t4._minute.ToString()); MessageBox.Show(t2._hour.ToString()); } Class time namespace classes { class time { public int _hour; public int _minute; public int _second; public time(int h, int m, int s) { settime(h, m, s); } public time(int h) { settime(h, 0, 0); } public void settime(int h, int m, int s) { _hour = h; _minute = m; _second = s; } } }
مخرب • جهت باز پس گیری حافظه از تمام نمونه ها از مخرب استفاده می شود. • نحوه تعریف: ~ نام کلاس() { }
مرجع کلاس به عنوان فیلد کلاس دیگر • می توان از فیلدهای دیگر کلاسها برای کلاس دیگر استفاده نمود بدین ترتیب که در یک کلاس فیلدی از نوع کلاس دیگر تعریف شده و با پارامترهای مشخص صدا زده شود.
مثال: namespace WindowsFormsApplication35 { class education { public int term; public intnumberofcourse; public education() { term = 2; numberofcourse = 3; } } }
مثال (ادامه ...): namespace WindowsFormsApplication35 { class student { public string name; public string family; public string birthday; public education example; public student(string n, string f, string b, education std) { name = n; family = f; birthday = b; example = std; } public string tostudentstring() { return string.Format("{0}{1}{2}{3}{4}", name, family, birthday, example.term, example.numberofcourse); } } }
مثال (ادامه ...) namespace WindowsFormsApplication35 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { education ex = new education(); student exg = new student("ahmad","ahmadi","1356",ex); label1.Text += exg.tostudentstring(); } } }
ارث بری: • تعریف فرزندی برای یک کلاس Class derivedclass:baseclass { … }
مثال ارث بری: class sdf { protected long Id; protected long year; public long ID { get { return Id; } set { Id = value; } } public long YEAR { get { return year; } set { year = value; } } }
مثال ارث بری (ادامه...): class stf :sdf { private intreg; public int REG { get { return reg; } set { reg = value; } } } Button: private void button2_Click(object sender, EventArgs e) { stfobj = new stf(); obj.ID = 87996573; obj.YEAR = 1389; obj.REG = 3; label1.Text = obj.ID + "\r" + obj.REG + "\r" + obj.YEAR; }
چند ریختی • توابع هم نام می توانند در کلاس های فرزند و والد باشند با این توصیف که کلاس هم نام در والد با کلمه کلیدی virtual و همان تابع در کلاس فرزند با گلمه کلیدی override می آیند.
مثال چند ریختی: • کلاس والد public virtual string show() { return "we are in baseclass"; } • کلاس فرزند public override string show() { return "we are in derived class"; } • درون یک button sdf obj1 = new sdf();//parent stfobj2 = new stf();//child label1.Text += obj2.show();