More Related Content
Team Wellness Challenges: 10 Keys to Success Excel2007 homestyleconditionalformating Lecture6
- 1. Лекц №6<br />Сэдэв: C# объекттой ажиллах<br />Öóãëóóëãà èнтерфейсòýé àæèëëàõИнтерфейсбол хийсвэр гишүүн болон функцуудыгтодорхойлсон програмын загвар гэж ойлгож болно. Өөрөөр хэлбэр их бие нь код байхгүйгээр зарласан класс юм. Ингэж кодгүй зарлахûí à÷ õîëáîãäîë нь ñистемийн гол удирдагч нь кодоо өөрөө бичилгуй, ерөнхий загварыг нь гаргаад, доод програмистууд гаргасан тэр загварын дагуу код бичдэг. Хэрвээ системээ хөгжүүлэгч íü ãàíö бол интерфейсийг хэрэглэх шаардлага бараг гарахгүй. Интерфейсийг Interface түлхүүр үгээр зарлах ба public буc гишүүдтэй суурь классууд, System.Object-ийг хэзээ ч тусгах ёсгүй. Интерфейсийн бүх гишүүд рublic байдаг. Интерфейс нь классаас удамшдаггүй. Харин олон интерфейсээс удамшиж болно. Интерфейсийн нэр болон доторх гишүүдийн нэрийн өмнө том I үсэг авдаг ч заавал ингэж тэмдэглэх албагүй. I үсгээр тэмдэглэх нь програмд ойлгомжтой байдлыг харуулдаг.<br />Хэрэглэгч интерфейс зарласан жишээ:<br />public interface IPointy<br />{<br />// public áºãººä õèéñâýð, çºâõºí óíøèãäàõààð òîäîðõîéëæ áàéíà<br />byte Points{get;}<br />} <br />Суурь классыг интерфейс болгох гэж байгаа бол классын нэрийн өмнө I үсэг залгаж байна. 1Pointy интерфейс ганц функцтэй байна. .NET-ийн интерфейсийн дотор хэдэн ч ширхэг рroperties байж болно. Класс эсвэл бүтэц төрлийн интерфейсийг тодорхойлж болохгүй:<br />static void Main(string[] args)<br />{<br />IPointy p = new IPointy(); // Àëäàà!<br />} <br />эсвэл бүтэц интерфейс төрөл авъя гэвэл төрел тодорхойлох хэсэгт босоо 2 öýã(:) тавьдаг. Хоёр цэгийн дараа суурь классыг бичнэ. Хэрэв класс System.Object-îîñ øóóä удамших бол удамшиж байна гэж зааж өгөх хэрэггүй, С# өөрөө ойлгодог.<br />Æèøээ нь:<br />// ýíý êëàññ System.Object êëàññààñ óäàìøèæ Interface òîäîðõîéëæ áàéíà.<br />public class SomeClass : ISomeInterface<br />{...} <br />//Дээрхтэй ижил<br />public class MyClass : object, ISomeInterface<br />{...}<br />public class AnotherClass : MyBaseClass, ISomeInterface<br />{...}<br />public struct SomeStruct : ISomeInterface, IPointy<br />{...}<br />System.Collections нэрийн мужийн интерфейсSystem.Collections нэрийн муж нь дотроо төрөл бүрийн вгөгдлийн цуглуулгатаé ажиллах классуудыг агуулдаг. Энгийн Array класс дээр эрэмбэлэх, цэвэрлэх дугаарлах зэрэг олон үйлдлийг хийж болох ч элемент нэмэх, хасахад хэмжээ; динамикаар өөрчилж болдоггүй. Хэрэв та тодорхойлсон төрлөө уян хатан байлга? гэвэл System.Collections дотор төрлөө тодорхойлж болно.<br />Хүснэгт 5.3 System. Collections нэрийн муж нилээн хэдэн интерфейс òодорхойлдог<br />System.Collections-btH интерфейс Тайлбар IColtection „Cdtectipn терлийн ерэнхий шинжүудийг тодорхойлдог lEcjuaiityComparer Объектуудыг ижил эсэхийг харьцуулахад ашиглагдах фүнкцыг агуулна\"
\"
...... IDictionary Нэр/утгын хосыг хэрэглэж объект дотоцх а|ү-/лгыг_хар.ахыг зөвшөөрнө IDictionaryEnumerator IDictionary хэрэглэсэн тәрлийн доторх агуулгыг эрэмбэлнэ lEnumerable fa each давталтаар хангаж егнө IEnumerator Joreach давталтаар хангаж өгнө IHashCodeProvider Наsh кодыг IKeyComparer Еpөнхийд нь IComparer. IHashCodeProvider-ыг нэгтгэнэ IList иоъектын жагсаалтанд нэмэх. хасах. индекс олгоно. Мән тухàéí collection-ы төрөл read-only байна vy. Хэмжээ тодорхойлогдсон байна уу ãýäãéèã òîîëдог <br />Эдгээр интерфейсийн олонх нь интерфейсийн шатчиллаар холбоотой<br />Çóðàã. System. Collections хоорондын холбоос <br />Дооð System.Collections-ын зарим интерфейсийг сонирхъё.<br />ICollection<br />|Collection интерфейс бол System.Collections нэрийн мужийн хамгийн энгийн èíòåðôейс юм. System.Collections нэрийн мужын бух классууд энә интерфейсээс удамшсан байдаг. Дотроо хэдэн тооны гишүүн агуулсныг, System. Array төрел рүү хуулагдах боломжтой эсэхийгтодорхойлох хэдэн properties агуулсан байдаг:<br />public interface ICollection : lEnumerable<br />{<br />// lEnumerable гишүүн. . .<br />int Count { get; } // Элементийн тоог буцаана<br />// thread-safe эсэхийг тодорхойлно<br />bool IsSynchronized { get; }// Олон thread рүү зэрэг хандах хандалтыг эохицуулна<br />object SyncRoot { get; }// Массив болгон хуваана.<br />void CopyTo (Array array, int index);<br />IDictionaryDictionary бол энгийндээ нэр/утгын хосыг засаж өөрчилдөг collection. Жишээ нь, ID болон оноосон нэр өөрчлөгдех Car терлийг агуулсан IDictionary-ыг хэрэглэдэг хэрэглэгчийн төрел тодорхойллоо гэвэл IDictionary интерфейс Add(), RemoveQ, Contains() функцуудээр Keys, Values-ыг тодорхойлж болно:<br />public interface IDictionary : ICollection, lEnumerable<br />{<br />bool IsFixedSize { get; }<br />// Тогтмол хэмжээтэй эсэхийг заана bool IsReadOnly { get; }<br />//Элементүүдийг зөвхөн уншина засаж болохгүй object this [ object key ] { get; set; } ICollection Keys { get; } //Түлхүүрийг авна ICollection Values { get; }//Утгыг авна<br />void Addfobject key, object value); //Түлхүүр, ут-га нэмнэ void Clear (); //Бүх элементийг устгах bool Contains (object key);<br />//Өгөгдсөн элемент байгаа эсэхийг шалгана IDictionaryEnumerator GetEnumerator ( ) ; // fosearch хийхэд IDictionaryEnumerator төрлийн объектыг<br />гаргана.<br />void Remove (object key) ;<br />// Тухайн түлхүүрээр элемент хасах<br />}<br />IDictionaryEnumeratorIDictionary. GetEnumeratorQ нь IDictionaryEnumerator төрлийн объектыг буцаана. ID-ictionaryEnumerator бол ерөнхийдөө IEnumerator-ын өргөтгөсвн дугаарлагч болно:<br />public interface IDictionaryEnumerator : lEnumerator<br />{<br />// lEnumerator функц. . .<br />DictionaryEntry Entry { get; } // Entry объектоор дамжуулан<br />түлхүүр, утга авна<br />object Key { get; } // Түлхүүрийг авна<br />object Value { get; }// Утгыг авна<br />}<br />удамшсан байдаг. Дотроо хэдэн тооны гишүүн агуулсныг, System. Array төрел рүү хуулагдах боломжтой эсэхийгтодорхойлох хэдэн properties агуулсан байдаг:<br />public interface ICollection : lEnumerable<br />f<br />// lEnumerable гишүүн. . .<br />int Count { get; } // Элементийн тоог буцаана<br />// thread-safe эсэхийг тодорхойлно<br />bool IsSynchronized { get; }<br />// Олон thread рүү зэрэг хандах хандалтыг эохицуулна<br />object SyncRoot { get; }<br />// Массив болгон хуваана.<br />void CopyTo (Array array, int index);<br />IDictionaryDictionary бол энгийндээ нэр/утгын хосыг засаж өөрчилдөг collection. Жишээ нь, ID болон оноосон нэр өөрчлөгдех Car терлийг агуулсан IDictionary-ыг хэрэглэдэг хэрэглэгчийн төрел тодорхойллоо гэвэл IDictionary интерфейс Add(), RemoveQ, Contains() функцуудээр Keys, Values-ыг тодорхойлж болно:<br />public interface IDictionary : ICollection, lEnumerable<br />{<br />bool IsFixedSize { get; }<br />// Тогтмол хэмжээтэй эсэхийг заана bool IsReadOnly { get; }<br />//Элементүүдийг зөвхөн уншина засаж болохгүй object this [ object key ] { get; set; } ICollection Keys { get; } //Түлхүүрийг авна ICollection Values { get; }//Утгыг авна<br />void Addfobject key, object value); //Түлхүүр, ут-га нэмнэ void Clear (); //Бүх элементийг устгах bool Contains (object key);<br />//Өгөгдсөн элемент байгаа эсэхийг шалгана IDictionaryEnumerator GetEnumerator ( ) ; // fosearch хийхэд IDictionaryEnumerator төрлийн объектыг<br />гаргана.<br />void Remove (object key) ;<br />// Тухайн түлхүүрээр элемент хасах<br />}<br />IDictionaryEnumeratorIDictionary. GetEnumeratorQ нь IDictionaryEnumerator төрлийн объектыг буцаана. ID-ictionaryEnumerator бол ерөнхийдөө IEnumerator-ын өргөтгөсвн дугаарлагч болно:<br />public interface IDictionaryEnumerator : lEnumerator<br />{<br />// lEnumerator функц. . .<br />DictionaryEntry Entry { get; } // Entry объектоор дамжуулан<br />түлхүүр, утга авна<br />object Key { get; } // Түлхүүрийг авна<br />object Value { get; }// Утгыг авна<br />IListIList интерфейс нь объект төрлийн өгегдөлтэй ажилладаг-IList интерфейс нь устгах, нэмэх, индекс олгох чадвартай:<br />public interface IList : ICollection, lEnumerable<br />(<br />bool IsFixedSize { get; }<br />// Элементийн too тогтмол зсэхийг тогтооно bool IsReadOnly { get; }<br />// Элементүүдийг зөвхөн уншина object this[ int index ] { get; set; } int Add(object value);<br />// Жагсаалтын сүүлд элемент нэмнэ. void Clear();<br />// Элементүүдийг устгана bool Contains(object value);<br />//Өгөгдсөн элемент байгаа эсэхийг шалгана int IndexOf(object value);<br />// Элементийн индексийг уншина void Insert(int index, object value);<br />// Заасан байрлалд элемент оруулах void Remove(object value);<br />// элемент устгах void RemoveAtfint index);<br />// Заасан байрлалд элемент устгах<br />System.CoIlections-ын классын төрлүүдИнтерфейсийг класс, бүтэц ашигласан тохиолдолд л интерфейс ашигтай эд. Доорх хүснэгтэнд System.Collections нэрийн муж дахь цөм классууд болон тэдгээрийн түлхүур үгсийг харуулав. <br />Хүснэгт 5.4 System.Collections классын түлхүүр үгс<br />system,Collections jwacc Тайлбар Интерфейсийн түяхүүр үгс ArrayList Динамик хэмжээот массивийг харуулна IList, (Collection. lEnumerable, ICIoneable Hashtable Тоон түлхуүрээр тодорхойлогдсон объектийн цуглууллагыг харуулна IDictionary, ICollection, lEnumerable, ICIorieable First-in. first-out(FIFO) дараалал харуулна ICollection, ICIoneabie, lEnumerable s°rtedList dictionary-тай ижил боловч индексээр элеиентэд хандана IDictionary, ICollection, lEnumerable. ICIoneabie Last-in, first-gut{LIFO) стек харуулна. ICollection, lEnumerable. ICIoneabie <br />