Главная страница
Навигация по странице:

  • Практическая работа №12

  • Ключевые слова

  • Класс Описание

  • Интерфейс Описание

  • Структура Описание DictionaryEntry Определяет в словаре пару "ключ-значение", которая может быть задана или получена Примеры ArrayList

  • Методические рекомендации по выполнению практических работ по междисциплинарному курсу


    Скачать 2.6 Mb.
    НазваниеМетодические рекомендации по выполнению практических работ по междисциплинарному курсу
    Дата05.09.2022
    Размер2.6 Mb.
    Формат файлаpdf
    Имя файлаMU_PR_MDK_01_01.pdf
    ТипМетодические рекомендации
    #663423
    страница5 из 13
    1   2   3   4   5   6   7   8   9   ...   13
    Конструкторы структуры
    Как и класс, структура может определять конструкторы. Но в отличие от класса нам не обязательно вызывать конструктор для создания объекта структуры:
    1
    User tom;
    Однако если мы таким образом создаем объект структуры, то обязательно надо проинициализировать все поля (глобальные переменные) структуры перед получением их значений или перед вызовом методов структуры. То есть, например, в следующем случае мы получим ошибку, так как обращение к полям и методам происходит до присвоения им начальных значений:
    1 2
    3
    User tom; int x = tom.age; // Ошибка tom.DisplayInfo(); // Ошибка
    Также мы можем использовать для создания структуры конструктор без параметров, который есть в структуре по умолчанию и при вызове которого полям структуры будет присвоено значение по умолчанию (например, для числовых типов это число 0):
    1 2
    User tom = new User(); tom.DisplayInfo(); // Name: Age: 0
    Обратите внимание, что при использовании конструктора по умолчанию нам не надо явным образом иницилизировать поля структуры.
    Также мы можем определить свои конструкторы. Например, изменим структуру User:
    1 2
    3 4
    5 6
    7 8
    9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 using System; namespace HelloApp
    { struct User
    { public string name; public int age; public User(string name, int age)
    { this.name = name; this.age = age;
    } public void DisplayInfo()
    {
    Console.WriteLine($"Name: {name} Age: {age}");
    }
    } class Program
    { static void Main(string[] args)
    {
    User tom = new User("Tom", 34); tom.DisplayInfo();
    User bob = new User(); bob.DisplayInfo();
    Console.ReadKey();
    }
    }

    33
    }
    Важно учитывать, что если мы определяем конструктор в структуре, то он должен инициализировать все поля структуры, как в данном случае устанавливаются значения для переменных name и age.
    Также, как и для класса, можно использовать инициализатор для создания структуры:
    1
    User person = new User { name = "Sam", age = 31 };
    Но в отличие от класса нельзя инициализировать поля структуры напрямую при их объявлении, например, следующим образом:
    1 2
    3 4
    5 6
    7 8
    9 struct User
    { public string name = "Sam"; // ! Ошибка public int age = 23; // ! Ошибка public void DisplayInfo()
    {
    Console.WriteLine($"Name: {name} Age: {age}");
    }
    }

    Практическая работа №12 Коллекции. Параметризованные классы
    Аннотация: Списки, очереди, двоичные массивы, хэш-таблицы, словари – все это коллекции. Существуют различные типы (классы) коллекций. Объект – представитель данного класса коллекции характеризуется множеством функциональных признаков, определяющих способы работы с элементами (неважно какого типа), которые образуют данную коллекцию
    Ключевые
    слова: пространство имен, IList, ICollection, BinarySearch, LastIndexOf, открытый метод, dequeue, enqueue, peek, интерфейс, вызов метода, значение, перечисление
    Обзор
    Пространство имен System.Collections содержит классы и интерфейсы, которые определяют различные коллекции объектов.
    Классы
    Класс
    Описание
    ArrayList
    Служит для реализации интерфейса IList с помощью массива с динамическим изменением размера по требованию
    BitArray
    Управляет компактным массивом двоичных значений, представленных логическими величинами, где значение true соответствует 1, а значение false соответствует 0
    CaseInsensitiveComparer
    Проверяет равенство двух объектов без учета регистра строк
    CaseInsensitiveHashCodeProvider Предоставляет хэш-код объекта, используя алгоритм хэширования, при котором не учитывается регистр строк
    CollectionBase
    Предоставляет абстрактный (MustInherit в Visual Basic) базовый класс для коллекции со строгим типом
    Comparer
    Проверяет равенство двух объектов с учетом регистра строк
    DictionaryBase
    Предоставляет абстрактный (MustInherit в Visual Basic) базовый класс для коллекции пар "ключ-значение" со строгим типом
    Hashtable
    Предоставляет коллекцию пар "ключ-значение", которые упорядочены по хэш-коду ключа
    Queue
    Предоставляет коллекцию объектов, которая обслуживается по принципу "первым пришел — первым вышел" (FIFO)
    ReadOnlyCollectionBase
    Предоставляет абстрактный (MustInherit в Visual Basic) базовый класс для коллекции со строгим типом, которая доступна только для чтения
    SortedList
    Предоставляет коллекцию пар "ключ-значение", которые упорядочены по ключам. Доступ к парам можно получить по ключу и по индексу
    Stack
    Представляет коллекцию объектов, которая обслуживается по принципу "последним пришел — первым вышел" (LIFO)
    Интерфейсы
    Интерфейс
    Описание
    ICollection
    Определяет размер, перечислители и методы синхронизации для всех коллекций
    IComparer
    Предоставляет другим приложениям метод для сравнения
    двух объектов
    IDictionary
    Предоставляет коллекцию пар "ключ-значение"
    IDictionaryEnumerator
    Осуществляет нумерацию элементов словаря
    IEnumerable
    Предоставляет перечислитель, который поддерживает простое перемещение по коллекции
    IEnumerator
    Поддерживает простое перемещение по коллекции
    IHashCodeProvider
    Предоставляет хэш-код объекта, используя пользовательскую хэш-функцию
    IList
    Предоставляет коллекцию объектов, к которым можно получить доступ отдельно, по индексу
    Структуры
    Структура
    Описание
    DictionaryEntry Определяет в словаре пару "ключ-значение", которая может быть задана или получена
    Примеры
    ArrayList
    Неполный перечень свойств и методов приводится ниже.
    Конструктор
    ArrayList
    Перегружен. Инициализирует новый экземпляр класса ArrayList
    Свойства
    Capacity
    Возвращает или задает число элементов, которое может содержать класс ArrayList
    Count
    Возвращает число элементов, которое в действительности хранится в классе ArrayList
    IsFixedSize
    Возвращает значение, показывающее, имеет ли класс ArrayList фиксированный размер
    IsReadOnly
    Возвращает значение, определяющее, доступен ли класс ArrayList только для чтения
    IsSynchronized
    Возвращает значение, определяющее, является ли доступ к классу ArrayList синхронизированным (потокобезопасным)
    Item
    Возвращает или задает элемент с указанным индексом.
    В C# это свойство является индексатором класса ArrayList
    Методы
    Add
    Добавляет объект в конец класса ArrayList
    AddRange
    Добавляет элементы интерфейса ICollection в конец класса ArrayList
    BinarySearch Перегружен. Использует алгоритм двоичного поиска для нахождения определенного элемента в отсортированном классе ArrayList или в его части
    Clear
    Удаляет все элементы из класса ArrayList
    Clone
    Создает неполную копию класса ArrayList
    Contains
    Определяет, принадлежит ли элемент классу ArrayList
    CopyTo
    Перегружен. Копирует класс ArrayList или его часть в одномерный массив
    FixedSize
    Перегружен. Возвращает обертку списка фиксированного размера, в которой элементы можно изменять, но нельзя добавлять или удалять
    GetEnumerator Перегружен. Возвращает перечислитель, который может осуществлять просмотр всех элементов класса ArrayList
    GetRange
    Возвращает класс ArrayList, который представляет собой подмножество элементов в исходном классе ArrayList
    IndexOf
    Перегружен. Возвращает отсчитываемый от нуля индекс первого найденного элемента в классе ArrayList или в его части
    Insert
    Вставляет элемент в класс ArrayList по указанному индексу

    InsertRange
    Вставляет элементы коллекции в класс ArrayList по указанному индексу
    LastIndexOf
    Перегружен. Возвращает отсчитываемый от нуля индекс последнего найденного элемента в классе ArrayList или в его части
    Remove
    Удаляет первый найденный объект из класса ArrayList
    RemoveAt
    Удаляет элемент с указанным индексом из класса ArrayList
    RemoveRange Удаляет диапазон элементов из класса ArrayList
    Repeat
    Возвращает класс ArrayList, элементы которого являются копиями указанного значения
    Reverse
    Перегружен. Изменяет порядок элементов в классе ArrayList или в его части на обратный
    SetRange
    Копирует элементы коллекции в диапазон элементов класса ArrayList
    Sort
    Перегружен. Сортирует элементы в классе ArrayList или в его части
    ToArray
    Перегружен. Копирует элементы класса ArrayList в новый массив
    TrimToSize
    Задает значение емкости, равное действительному количеству элементов в классе ArrayList using System; using System.Collections; public class SamplesArrayList { public static void Main() {
    // Создается и инициализируется объект ArrayList.
    ArrayList myAL = new ArrayList(); myAL.Add("Россия,"); myAL.Add("вперед"); myAL.Add("!");
    // Свойства и значения ArrayList.
    Console.WriteLine( "myAL" );
    Console.WriteLine( "\tCount: {0}", myAL.Count );
    Console.WriteLine( "\tCapacity: {0}", myAL.Capacity );
    Console.Write( "\tValues:" );
    PrintValues( myAL );
    } public static void PrintValues( IEnumerable myList )
    {
    // Для эффективной работы с объектом ArrayList
    // создается перечислитель...
    // Перечислитель обеспечивает перебор элементов.
    System.Collections.IEnumerator myEnumerator
    = myList.GetEnumerator(); // Перечислитель для myList while (myEnumerator.MoveNext())
    Console.Write( "\t{0}", myEnumerator.Current );
    }
    }
    Листинг 12.1.
    Результат: myAL
    Count: 3
    Capacity: 16
    Values: Россия , вперед !

    BitArray
    Неполный перечень свойств и методов приводится ниже.
    Конструкторы
    BitArray
    Перегружен. Инициализирует новый экземпляр класса BitArray, для которого могут быть указаны емкость и начальные значения
    Открытые свойства
    Count
    Возвращает число элементов, которое хранится в классе BitArray
    IsReadOnly
    Возвращает значение, определяющее, доступен ли класс BitArray только для чтения
    IsSynchronized Возвращает значение, определяющее, является ли доступ к классу BitArray синхронизированным (потокобезопасным)
    Item
    Возвращает или задает значение бита по указанному адресу в классе BitArray
    В языке C# это свойство является индексатором класса BitArray
    Length
    Возвращает или задает число элементов в классе BitArray
    SyncRoot
    Возвращает объект, который может быть использован для синхронизации доступа к классу BitArray
    Открытые методы
    And
    Выполняет поразрядную операцию логического умножения элементов текущего класса BitArray с соответствующими элементами указанного класса BitArray
    Clone
    Создает неполную копию класса BitArray
    CopyTo
    Копирует целый класс BitArray в совместимый одномерный массив класса Array, начиная с указанного индекса конечного массива
    Get
    Возвращает значение бита по указанному адресу в классе BitArray
    GetEnumerator Возвращает перечислитель, который может осуществлять просмотр всех элементов класса BitArray
    Not
    Преобразовывает все двоичные значения в текущем классе BitArray таким образом, чтобы каждому элементу со значением true было присвоено значение false, а каждому элементу со значением false было присвоено значение true
    Or
    Выполняет поразрядную операцию логического сложения элементов текущего класса BitArray с соответствующими элементами указанного класса BitArray
    Set
    Задает указанное значение биту по указанному адресу в классе BitArray
    SetAll
    Задает определенное значение всем битам в классе BitArray
    Xor
    Выполняет поразрядную операцию "исключающее ИЛИ" для элементов текущего класса BitArray и соответствующих элементов указанного класса BitArray
    Пример использования: using System; using System.Collections; public class SamplesBitArray { public static void Main() {
    // Creates and initializes several BitArrays.
    BitArray myBA1 = new BitArray( 5 );
    BitArray myBA2 = new BitArray( 5, false );
    byte[] myBytes = new byte[5] { 1, 2, 3, 4, 5 };
    BitArray myBA3 = new BitArray( myBytes ); bool[] myBools = new bool[5] { true, false, true, true, false };
    BitArray myBA4 = new BitArray( myBools ); int[] myInts = new int[5] { 6, 7, 8, 9, 10 };
    BitArray myBA5 = new BitArray( myInts );
    // Displays the properties and values of the BitArrays.
    Console.WriteLine( "myBA1" );
    Console.WriteLine( "\tCount: {0}", myBA1.Count );
    Console.WriteLine( "\tLength: {0}", myBA1.Length );
    Console.WriteLine( "\tValues:" );
    PrintValues( myBA1, 8 );
    Console.WriteLine( "myBA2" );
    Console.WriteLine( "\tCount: {0}", myBA2.Count );
    Console.WriteLine( "\tLength: {0}", myBA2.Length );
    Console.WriteLine( "\tValues:" );
    PrintValues( myBA2, 8 );
    Console.WriteLine( "myBA3" );
    Console.WriteLine( "\tCount: {0}", myBA3.Count );
    Console.WriteLine( "\tLength: {0}", myBA3.Length );
    Console.WriteLine( "\tValues:" );
    PrintValues( myBA3, 8 );
    Console.WriteLine( "myBA4" );
    Console.WriteLine( "\tCount: {0}", myBA4.Count );
    Console.WriteLine( "\tLength: {0}", myBA4.Length );
    Console.WriteLine( "\tValues:" );
    PrintValues( myBA4, 8 );
    Console.WriteLine( "myBA5" );
    Console.WriteLine( "\tCount: {0}", myBA5.Count );
    Console.WriteLine( "\tLength: {0}", myBA5.Length );
    Console.WriteLine( "\tValues:" );
    PrintValues( myBA5, 8 );
    } public static void PrintValues( IEnumerable myList, int myWidth )
    {
    System.Collections.IEnumerator myEnumerator = myList.GetEnumerator(); int i = myWidth; while ( myEnumerator.MoveNext() )
    { if ( i <= 0 )
    { i = myWidth;
    Console.WriteLine();
    }
    i--;
    Console.Write( "\t{0}", myEnumerator.Current );
    }
    Console.WriteLine();
    }
    }
    Листинг 12.2.
    Результат: myBA1
    Count: 5
    Length: 5
    Values:
    False False False False False myBA2
    Count: 5
    Length: 5
    Values:
    False False False False False myBA3
    Count: 40
    Length: 40
    Values:
    True False
    False
    False
    False
    False
    False
    False
    False True
    False
    False
    False
    False
    False
    False
    True True
    False
    False
    False
    False
    False
    False
    False False
    True
    False
    False
    False
    False
    False
    True False
    True
    False
    False
    False
    False
    False myBA4
    Count: 5
    Length: 5
    Values:
    True False True True False myBA5
    Count: 160
    Length: 160
    Values:
    False True
    True
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    True True
    True
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    False False
    False
    True
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    True False
    False
    True
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False

    False True
    False
    True
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    False False
    False
    False
    False
    False
    False
    False
    Листинг 12.3.
    Queue
    Неполный перечень свойств и методов.
    Конструктор
    Queue
    Перегружен. Инициализирует новый экземпляр класса Queue
    Открытые свойства
    Count
    Возвращает число элементов, которое хранится в классе Queue
    SyncRoot
    Получает объект, который может быть использован для синхронизации доступа к классу Queue
    Открытые методы
    Clear
    Удаляет все объекты из класса Queue
    Clone
    Создает поверхностную копию класса Queue
    Contains
    Определяет, принадлежит ли элемент классу Queue
    CopyTo
    Копирует элементы класса Queue в существующий одномерный массив класса Array по указанному адресу
    Dequeue
    Удаляет и возвращает объект в начале класса Queue
    Enqueue
    Добавляет объект в конец класса Queue
    GetEnumerator Возвращает перечислитель, который может перемещаться по классу Queue
    Peek
    Возвращает объект в начале класса Queue, но не удаляет его
    ToArray
    Копирует элементы класса Queue в новый массив
    TrimToSize
    Задает значение емкости, равное действительному количеству элементов в классе Queue
    Пример: using System; using System.Collections; public class SamplesQueue
    { public static void Main()
    {
    // Creates and initializes a new Queue.
    Queue myQ = new Queue(); myQ.Enqueue("Россия,"); myQ.Enqueue("вперед"); myQ.Enqueue("!");
    // Displays the properties and values of the Queue.
    Console.WriteLine( "myQ" );
    Console.WriteLine( "\tCount: {0}", myQ.Count );
    Console.Write( "\tValues:" );
    PrintValues( myQ );
    } public static void PrintValues( IEnumerable myCollection )
    {

    System.Collections.IEnumerator myEnumerator
    = myCollection.GetEnumerator(); while ( myEnumerator.MoveNext() )
    Console.Write( "\t{0}", myEnumerator.Current );
    }
    }
    Листинг 12.4.
    Результат: myQ
    Count: 3
    Values: Россия , вперед !
    1   2   3   4   5   6   7   8   9   ...   13


    написать администратору сайта