Содержание
-
Массивы и коллекции
Arrays and collections 14.11.2008 1 Объектно-ориентированные технологии
-
Массивы и коллекции
14.11.2008 Объектно-ориентированные технологии 2 Коллекция – это объект содержащий в себе набор значений одного или нескольких типов. Основная задача коллекции хранить значения объектов и обеспечивать доступ к ним. Коллекции позволяют экономить при разработке программ так как предоставляют готовые решения для построения структур данных. Пространство имён System.Collectionsсодержит классы и интерфейсы для коллекций. Массив - это коллекция переменных одного типа обращение к которым происходит с помощью одного имени и разных индексов. Хранение данных в массиве организуется таким образом чтобы к ним было легко обращаться. Массивы являются ссылочными типами и наследуют общий класс System.Array.Выход за границы массива не разрешается в случае такой попытки генерируется IndexOutOfRangeException.
-
Массивы
14.11.2008 3 Объектно-ориентированные технологии
-
Класс Array
14.11.2008 Объектно-ориентированные технологии 4 public abstract class Array : ICloneable, IList, ICollection, IEnumerable { public static void Clear(Array array, int index, int length ); public static void Copy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length ); public static int BinarySearch(Array array, Object value ); public static void Reverse(Array array, int index, int length ); public static void Sort(Array array, int index, int length ); public int Length { get; } public int Rank { get; } };
-
Методы и свойства класса Array
14.11.2008 Объектно-ориентированные технологии 5 Статический методClearзадаёт диапазон элементов массива пустыми значениями. Статический метод Copy копирует диапазон элементов из одного массива в другой массив. Статический метод BinarySearchвыполняет поиск значения в отсортированном одномерном массиве используя алгоритм двоичного поиска. Статический метод Reverseизменяет порядок элементов на обратный. Статический метод Sortсортирует элементы в одномерном массиве. Свойство Lengthвозвращает число элементов в массиве. Свойство Rank возвращает размерность массива.
-
Одномерные массивы
14.11.2008 Объектно-ориентированные технологии 6 Создание одномерного массива представляет из себя двухступенчатый процесс. Сначала объявляется ссылка на массив, после чего под массив выделяется область памяти и переменной присваивается ссылка на эту область памяти. При объявлении ссылки на массив в отличии от С++ квадратные скобки находтся за именем типа а не за именем переменной. Обращение к элементам одномерного массива производится с использованием одного целого индекса. Все данные в одномерном массиве должны быть одного типа.Тип данных в одномерном массиве определяются при объявлении массива.
-
Использование одномерного массива
14.11.2008 Объектно-ориентированные технологии 7 class Program { static void Main() { int[] numbers = new int[10]; int average = 0; numbers[0]=71; numbers[1]=99; numbers[2]=42; numbers[3]=3; numbers[4]=18; numbers[5]=45; numbers[6]=33; numbers[7]=6; numbers[8]=15; numbers[9]=64; for(int i=0; i
-
Многомерные массивы
14.11.2008 Объектно-ориентированные технологии 8 Многомерные массивы отличаются от одномерных тем что они характеризуются двумя или более измерениями. Поэтому обращение к элементам многомерного массива производится с использованием двух и более индексов. Все данные в многомерном массиве должны быть одного типа.Тип данных и количество измерений в многомерном массиве определяются при объявлении массива.
-
Использование многомерного массива
14.11.2008 Объектно-ориентированные технологии 9 class Program { static void Main() { int[,] numbers = new int[3,3]; int average = 0; numbers[0,0]=27; numbers[0,1]=88; numbers[0,2]=59; numbers[1,0]=64; numbers[1,1]=17; numbers[1,2]=11; numbers[2,0]=12; numbers[2,1]=93; numbers[2,2]=8; for(int i=0; i
-
Рваные массивы
14.11.2008 Объектно-ориентированные технологии 10 Рваные массивы похожи на многомерные массивы в том что они тоже многомерные. Основное отличие заключается в том что рваные массивы это фактически массивы массивов. Отсюда следуют два важных факта. Диапазон допустимых индексов будет зависеть от значений предыдущих индексов. Данные в рваном массиве не обязаны быть одного типа они могут быть разными в зависимости от значений последовательности индексов за исключением последнего. Как и для одномерных или многомерных массивах выход за границу допустимых значений для рваного массива не допускается разрешается в случае такой попытки генерируется IndexOutOfRangeException.
-
Использование рваного массива
14.11.2008 Объектно-ориентированные технологии 11 class Program { static void Main() { int[][] numbers = new int[3][]; int average = 0; numbers[0] = new int[3]; numbers[1] = new int[1]; numbers[2] = new int[2]; numbers[0][0]=91; numbers[0][1]=25; numbers[0][2]=15; numbers[1][0]=36; numbers[2][0]=17; numbers[2][1]=11; for(int i=0; i
-
Коллекции
14.11.2008 12 Объектно-ориентированные технологии
-
Интерфейсы коллекций
14.11.2008 Объектно-ориентированные технологии 13 Коллекции в FCL основанны на интерфейсах. Пространство имён System.Collectionsсодержит несколько таких интерфейсов включая IEnumerable, IEnumerator, ICollection, IList, IDictionary. Интерфейс ICollectionявляется самым примитивным интерфейсом. Он определяет поведение которое должны поддерживать все коллекции. Например все коллекции должны поддерживать свойство возвращающее количество элементов в коллекции. ИнтерфейсIListопределяет поведение которое должны поддерживать списки то есть коллекции доступ к элементам которой возможен с помощью индекса. ИнтерфейсIDictionary определяет поведение коллекций хранящих пары ключ-значение. Интерфейсы IEnumerable иIEnumerator определяет поведение необходимое для поэлементного доступа к содержимому коллекции с помощью цикла foreach.
-
Интерфейсы IEnumerable и IEnumerator
14.11.2008 Объектно-ориентированные технологии 14 public interface IEnumerable { IEnumerator GetEnumerator(); } public interface IEnumerator { bool MoveNext(); // сдвинуть курсор object Current {get;} // достать текущий элемент void Reset(); // установить курсор перед первым элементом }
-
Интерфейс ICollection
14.11.2008 Объектно-ориентированные технологии 15 public interface ICollection : IEnumerable { int Count {get;} bool IsSynchronized(); object SybcRoot {get;} void CopyTo(Array array, int index); }
-
Интерфейс IList
14.11.2008 Объектно-ориентированные технологии 16 public interface IList : ICollection, IEnumerable { Object this [int index] {get; set;} int Add(Object value); void Clear(); bool Contains(Object value); int IndexOf(Object value); void Insert(int index, Object value); void Remove(Object value); void RemoveAt(int index); bool IsFixedSize {get;} bool IsReadOnly {get;} }
-
Интерфейс IDictionary
14.11.2008 Объектно-ориентированные технологии 17 public interface IDictionary : ICollection, IEnumerable { object this [Object key] {get; set;} ICollection Keys {get;} ICollection Values {get;} void Add(Object key, Object value); void Clear(); bool Contains(Object key); IDictionaryEnumerator GetEnumerator(); void Remove(Object key); bool IsFixedSize {get;} bool IsReadOnly {get;} } public interface IDictionaryEnumerator : IEnumerator { DictionaryEntry Entry {get;} object Key {get;} object Value {get;} }
-
Коллекции
14.11.2008 Объектно-ориентированные технологии 18 Пространство имён System.Collectionsсодержит несколько конкретных классов коллекций таких как Queue, Stack, ArrayList, SortedListи HashTable реализующих несколько из интерфейсов IEnumerable, ICollection, IList, IDictionary. Реализация интерфейсов в конкретных классах очень сильно отличается. Несмотря на это наборы действий которые можно выполнять над этими коллекциями во многом совпадают. Все они поддерживают набор элементов которые можно перечислять и все они поддерживают добавление и удаление элементов.
-
Класс Queue
14.11.2008 Объектно-ориентированные технологии 19 public class Queue : ICollection, Ienumerable, ICloneable { Object Dequeue(); void Enqueue(Object); Object Peek(); }
-
Методы класса Queue
14.11.2008 Объектно-ориентированные технологии 20 МетодDeque возвращает и удаляет элемент из начала очереди. Метод Enqueueдобавляет элемент в конец очереди. Метод Peek возвращает элемент из начала очереди не удаляя его.
-
Использование очереди
14.11.2008 Объектно-ориентированные технологии 21 static void Main() { Queue someQ = new Queue(); someQ.Enqueue("Первыйдобавленный"); someQ.Enqueue("Второй добавленный "); someQ.Enqueue("Третий добавленный "); Console.WriteLine("Первый элемент: {0}", someQ.Peek()); Console.WriteLine("Первый элемент: {0}", someQ.Dequeue()); Console.WriteLine("Второй элемент: {0}", someQ.Dequeue()); Console.WriteLine("Третий элемент: {0}", someQ.Dequeue()); try { Console.WriteLine("Четвёртый элемент: {0}", someQ.Dequeue()); } catch(InvalidOperationException) { Console.WriteLine("А четвёртого элемента в очереди нет!"); } }
-
Класс Stack
14.11.2008 Объектно-ориентированные технологии 22 public class Stack : ICollection, IEnumerable, ICloneable { Object Peek(); Object Pop(); void Push(Object); }
-
Методы класса Stack
14.11.2008 Объектно-ориентированные технологии 23 Метод Peek возвращает верхний элемент из стека не удаляя его. МетодPop возвращает и удаляет верхний элемент стека. Метод Pushдобавляет верхний элемент в стек.
-
Использование стека
14.11.2008 Объектно-ориентированные технологии 24 static void Main() { Stack someS = new Stack(); someS.Push("Первыйдобавленный"); someS.Push("Второй добавленный"); someS.Push("Третий добавленный"); Console.WriteLine("Первый элемент: {0}", someS.Peek()); Console.WriteLine("Первый элемент: {0}", someS.Pop()); Console.WriteLine("Второй элемент: {0}", someS.Pop()); Console.WriteLine("Третий элемент: {0}", someS.Pop()); try { Console.WriteLine("Четвёртый элемент: {0}", someS.Pop()); } catch(InvalidOperationException) { Console.WriteLine("А четвёртого элемента в стеке нет!"); } }
-
Класс ArrayList
14.11.2008 Объектно-ориентированные технологии 25 public class ArrayList : IList, ICollection, IEnumerable, ICloneable { public virtual int Add(Object value); public virtual bool Contains(Object item); public virtual int IndexOf(Object value); public virtual void Insert(int index, Object value); public virtual void Remove(Object obj); public virtual void RemoveAt(int index); public virtual int Capacity { get; set; } public virtual int Count { get; } public virtual Object Item[ int index ] { get; set; } }
-
Методы и свойства класса ArrayList
14.11.2008 Объектно-ориентированные технологии 26 МетодAdd добавляет элемент в конец динамического массива. Метод Containsопределяет содержит ли динамический массив указанное значение. Метод IndexOfвозвращает индекс первого вхождения значения. Метод Insertвставляет элемент в динамический массив по указанному индексу. Метод Removeудаляет первое вхождение указанного значения из динамического массива. Метод RemoveAtудаляет элемент с указанным индексом из динамического массива. Свойство Capacityпозволяет получать и задавать ёмкость динамического массива. Свойство Count возвращает количество элементов в динамическом массиве. Индексатор позволяет по индексу получать и изменять значение.
-
Использование динамического массива
14.11.2008 Объектно-ориентированные технологии 27 static void Main() { ArrayList someAL = new ArrayList(); Console.WriteLine("Количество элементов после создания: {0}", someAL.Count); Console.WriteLine("Вместимость после создания: {0}", someAL.Capacity); someAL.Add("Первыйдобавленный"); someAL.Add("Второй добавленный "); someAL.Add("Третий добавленный "); Console.WriteLine("Количество элементов после добавления: {0}", someAL.Count); Console.WriteLine("Вместимость после добавления: {0}", someAL.Capacity); for(int i=0; i
-
Класс Hashtable
14.11.2008 Объектно-ориентированные технологии 28 public class Hashtable : IDictionary, ICollection, IEnumerable, ICloneable { public virtual void Add(Object key, Object value); public virtual void Clear(); public virtual bool ContainsKey(Object key); public virtual bool ContainsValue(Object value); public virtual void Remove(Object key); public virtual Object Item[Object key] { get; set; } public virtual ICollection Keys { get; } public virtual ICollection Values { get; } }
-
Методы и свойства класса HashTable
14.11.2008 Объектно-ориентированные технологии 29 МетодAdd добавляет пару ключ-значение в хэш таблицу. Метод Clearудаляет все элементы из хэш таблицы. Метод ContainsKeyопределяет содержит ли хэш таблица указанный ключ. Метод ContainsValueопределяет содержит ли хэш таблица указанное значение. Метод Removeудаляет пару ключ-значение с указанным ключом из хэш таблицы. Свойства Keysи Valuesвозвращают коллекции ключей и значений для всех пар содержащихся в хэш таблице. Индексатор позволяет по ключу получать и изменять значение.
-
Использование хэш таблицы
14.11.2008 Объектно-ориентированные технологии 30 static void Main() { Hashtable someHT = new Hashtable(); someHT.Add("Имя", "Иван"); someHT.Add("Фамилия", "Петров"); someHT["Должность"]="Разработчик .NET"; ICollection keysC = someHT.Keys; foreach( string str in keysC) { Console.WriteLine(str + " : " + someHT[str]); } Console.WriteLine("Отчество: {0}", someHT.["Отчество"]); }
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.