Принципы объектно-ориентированного программирования




ГЛАВА 7 Свойства, массивы и индексаторы


    ГЛАВА 7 Свойства, массивы и индексаторы
    ГЛАВА 7 Свойства, массивы и индексаторы Свойства как «умные» поля Определение и использование свойств Чем занимается компилятор на самом деле Неизменяемые свойства Наследование свойств Дополнитель...
    Свойства как "умные" поля
    Свойства как умные поля Всегда поощряется создание классов, которые не только скрывают реализацию своих методов, но и запрещают членам любой прямой доступ к полям класса. Обеспечить корректную раб...
    Определение и использование свойств
    Определение и использование свойств Методы-аксессоры используются программистами на нескольких объектно-ориентированных языках, в том числе на C++ и Java. Однако С# предоставляет еще более мощный...
    Чем занимается компилятор на самом деле
    Чем занимается компилятор на самом деле Итак, как же компилятор позволяет вызывать метод с помощью стандартного синтаксиса объект.поле! И откуда берется переменная value! Чтобы ответить на эти воп...
    ОШИБКА - компилироваться не будет
    String str = addr.get_ZipCode; // *ОШИБКА - компилироваться не будет Однако в этом случае код не будет скомпилирован, так как явно вызывать внутренний метод MSIL недопустимо. Ответ на наш вопрос —...
    Сверить почтовый индекс с базой данных.
    // Сверить почтовый индекс с базой данных. zipCode = value;...
    Обновить город на основе проверенного zipCode
    // обновить город на основе проверенного zipCode. } } В этом коде не объявлена переменная value, но мы все же можем использовать ее для хранения значения, переданного вызывающим кодом, и для устан...
    Конец метода Address
    IL_0001: ldarg.1 IL_0002: stfld string Address::zipCode IL_0007: ret } // конец метода Address::set_ZipCode Даже если вы не найдете этого метода в исходном коде на С#, при установке свойства ZipCo...
    Неизменяемые свойства
    Неизменяемые свойства В нашем примере свойство Address.ZipCode считается доступным для чтения и записи, так как определены оба метода: установщик и получатель. Конечно, иногда может потребоваться...
    Наследование свойств
    Наследование свойств У свойств, как и методов, могут быть указаны модификаторы virtual, override или abstract, о которых я рассказывал в главе 6. Это позволяет производным классам наследовать и по...
    Дополнительные возможности использования свойств.
    Дополнительные возможности использования свойств. Я уже обсудил следующие причины, которые делают полезными свойства: они предоставляют клиентам более высокий уровень абстракции; они обеспечивают...
    Массивы
    Массивы До сих пор мои примеры иллюстрировали способы определения конечного, предопределенного числа переменных. Однако во многих реальных приложениях точное число нужных объектов неизвестно до пе...
    Объявление массивов
    Объявление массивов Для объявления массива на С# нужно поместить пустые квадратные скобки между именем типа и переменной, например, так:...
    Этот синтаксис отличен от C++
    int[] numbers; Этот синтаксис отличен от C++, в котором квадратные скобки идут после имени переменной. Поскольку массивы основаны на классах, многие из правил объявления классов применяются и к ма...
    Пример одномерного массива
    Пример одномерного массива Вот простой пример объявления одномерного массива как члена класса. При этом в конструкторе создается и заполняется экземпляр массива, после чего все элементы массива вы...
    Многомерные массивы
    Многомерные массивы Кроме одномерных, С# поддерживает объявление многомерных массивов, где каждое измерение отделяется запятой. Здесь я объявил трехмерный массив двойных слов: doublet,1 numbers; Ч...
    Запрос ранга массива
    Запрос ранга массива Теперь, увидев, что динамическая обработка одно- или многомерного массива большой сложности не представляет, вас может заинтересовать способ программного определения числа изм...
    Невыровненные массивы
    Невыровненные массивы Последнее, что мы рассмотрим в связи с массивами, — невыровненные массивы (jagged array). Невыровненный массив — это просто массив массивов. Вот пример определения массива, с...
    Работа с объектами как с массивами с помощью индексаторов
    Работа с объектами как с массивами с помощью индексаторов Теперь вы знаете, как объявлять массивы и создавать их экземпляры, как работать с массивами разных типов и циклически обрабатывать элемент...
    Определение индексаторов
    Определение индексаторов Свойства иногда называются умными полями, а индексаторы — умными массивами, а значит, стоит использовать для них один синтаксис. Действительно, определение индексатора во...
    Пример индексатора
    Пример индексатора Когда же применение индексаторов наиболее оправданно? Начну с уже приведенного примера окна со списком. С концептуальной точки зрения, такое окно представляет собой просто списо...
    Правила разработки
    Правила разработки Индексаторы — пример того, как добавленная к языку командой разработчиков небольшая, но мощная функция помогает повысить производительность наших усилий по разработке. Однако, к...
    Подведем итоги
    Подведем итоги Свойства в С# состоят из объявления полей и методов-аксессоров. Свойства обеспечивают интеллектуальный доступ к полям класса, что освобождает программиста, занятого написанием клиен...








Начало