Логическая конструкция которая описывает методы не устанавливая жестко способ их реализации

Основы обработки исключений

Основы обработки исключений — раздел Программирование, Объектно-ориентированное программирование как идеология программирования и как технология. Достоинства и недостатки Управление С#-Механизмом Обработки Исключений Зиждется На Четырех Ключевых Сл.

Управление С#-механизмом обработки исключений зиждется на четырех ключевых словах: try, catch, throw и finally. Они образуют взаимосвязанную подсистему, в которой использование одного из них предполагает использование другого. Программные инструкции, которые нужно проконтролировать на предмет исключений, помещаются в try-блок. Если исключение таки возникает в этом блоке, оно дает знать о себе выбросом определенного рода информации. Это выброшенное исключение может быть перехвачено программным путем с помощью catch-блока и обработано соответствующим образом. Системные исключения автоматически генерируются С#-системой динамического управления. Чтобы сгенерировать исключение вручную, используется ключевое слово throw. Любой код, который должен быть обязательно выполнен при выходе из try-блока, помещается в блок finally.

Ядром обработки исключений являются блоки try и catch. Эти ключевые слова работают «в одной связке»; нельзя использовать слово try без catch или catch без try. Вот каков формат записи try/catch-блоков обработки исключений:

Здесь ЕхсерТуре — это тип сгенерированного исключения. После «выброса» исключение перехватывается соответствующей инструкцией catch, которая его обрабатывает. Как видно из формата записи try/catch-блоков, с try-блоком может быть связана не одна, а несколько catch-инструкций. Какая именно из них будет выполнена, определит тип исключения. Другими словами, будет выполнена та catch-инструкция, тип исключения которой совпадает с типом сгенерированного исключения (а все остальные будут проигнорированы). После перехвата исключения параметр ехОЬ примет его значение.

Задавать параметр ехОЬ необязательно. Если обработчику исключения не нужен доступ к объекту исключения (как это часто бывает), в задании параметра ехОЪ нет необходимости. Если исключение не генерируется, try-блок завершается нормально, и все его catch-инструкции игнорируются. Выполнение программы продолжается с первой инструкции, которая стоит после последней инструкции catch. Таким образом, catch-инструкция (из предложенных после try-блока) выполняется только в случае, если сгенерировано соответствующее исключение.

Пример обработки исключения

Известно, что попытка индексировать массив за пределами его границ вызывает ошибку нарушения диапазона. В этом случае С#-система динамического управления генерирует исключение типа IndexOutOfRangeException, которое представляет собой стандартное исключение, определенное языком С#. Демонстрация обработки исключений:

int [ ] nums = new int [ 4 ] ;

for(int i=0; i Развернуть

Эта тема принадлежит разделу:

Объектно-ориентированное программирование как идеология программирования и как технология. Достоинства и недостатки

Класс это шаблон который определяет форму объекта он задает как данные так и код который оперирует этими данными объекты это экземпляры.. объявление объекта типа building.. building house new building..

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Основы обработки исключений

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Читайте также:  Бурый рис мистраль способ приготовления

Все темы данного раздела:

Объектно-ориентированное программирование как идеология программирования и как технология. Достоинства и недостатки
Язык С# — это очередная ступень бесконечной эволюции языков программирования. Его создание вызвано процессом усовершенствования и адаптации, который определял разработку компьютерных языков в течен

Ссылка на самого себя
В C# зарезервированное слово this используется для ссылки на текущий объект. Необходимость такого слова связана в основном с разрешением конфликта имен в конструкторах. Конечно, избежать конфликта

Конструкторы и деструкторы. Функциональное назначение. Виды конструкторов
Конструктор — неотъемлемый компонент класса. Нет классов без конструкторов. Конструктор представляет собой специальный метод класса, позволяющий создавать объекты класса. Одна из с

Объекты и их жизненный цикл. Создание и уничтожение объектов
В объектно-ориентированном языке при связывании кода и данных создается объект. Код, данные или обе эти составляющие объекта могут быть закрытыми внутри него или открытыми. Закрытый код или закрыты

Наследование. Конструктор по умолчанию. Назначение
Насле́дование— механизм объектно-ориентированного программирования позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и фу

Реализация интерфейсов
Итак, если интерфейс определен, один или несколько классов могут его реализовать. Чтобы реализовать интерфейс, нужно указать его имя после имени класса подобно тому, как при создании производного у

Коллизия имен
Проблема коллизии имен возникает, когда два или более интерфейса имеют методы с одинаковыми именами и сигнатурой. Если имена методов совпадают, но сигнатуры разные, то это не приводит к конфликтам

Наследование от общего предка
Проблема наследования от общего предка характерна, в первую очередь, для множественного наследования классов. Если класс C является наследником классов A и B, а те, в свой черед, являются наследник

Концепция типа данных. Соглашения о совместимости и приведение типов
Концепция типов данных состоит в том, что каждой информации приписывается тип, который описывается: 1) множеством допустимых значений типа, 2) набором операций дл

Концепция типа данных. Числовые типы данных
Концепция типов данных состоит в том, что каждой информации приписывается тип, который описывается: 1) множеством допустимых значений типа, 2) набором операций дл

Концепция типа данных. Символьные типы данных
Концепция типов данных состоит в том, что каждой информации приписывается тип, который описывается: 1) множеством допустимых значений типа, 2) набором операций дл

Структуры
public struct Book < public decimal price; public string title; public string author; >Классы — это ссылочные типы. Это означает, что к объект

Концепция типа данных. Явное и неявное преобразование типов
Концепция типов данных состоит в том, что каждой информации приписывается тип, который описывается: 1) множеством допустимых значений типа, 2) набором операций дл

Концепция типа данных. Значащие (размерные) (Value type) и ссылочные (Reference type) типы данных. Упаковка и распаковка (Boxing, Unboxing)
Концепция типов данных состоит в том, что каждой информации приписывается тип, который описывается: 1) множеством допустимых значений типа, 2) набором операций дл

Принцип модульности программ. Глобальные и локальные имена. Область видимости имен. Выбор области видимости
У класса две различные роли: модуля и типа данных. Класс — это модуль, архитектурная единица построения программной системы. Модульность построения — основное свойство программных систем. В ООП про

Читайте также:  Рыночные риски способы снижения

Источник

Г. Шилдт — Полный справочник по C#, страница 59

Описание файла

PDF-файл из архива «Г. Шилдт — Полный справочник по C#», который расположен в категории «книги и методические указания». Всё это находится в предмете «языки программирования» из седьмого семестра, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 59 страницы из PDF

Язык С#Полныйсправочник поИнтерфейсы, структурыи перечисления™1 та глава посвящена одному из самых важных средств языка С#: интерфейсу.^ ^ Интерфейс определяет набор методов, которые будут реализованы классом. Саминтерфейс не реализует методы. Таким образом, интерфейс — это логическая конструкция, которая описывает методы, не устанавливая жестко способ их реализации. Вэтой главе рассматриваются еще два типа данных С#: структуры и перечисления.Структуры подобны классам, за исключением того, что они обрабатываются как типызначений, а не как ссылочные типы.

Перечисления — это списки именованных целочисленных констант. Структуры и перечисления вносят существенный вклад в общуюкопилку средств и инструментов, составляющих среду программирования С#.ИнтерфейсыВ объектно-ориентированном программировании иногда требуется определить,что класс должен делать, а не как он будет это делать. Вы уже видели такой подход напримере абстрактного метода. Абстрактный метод определяет сигнатуру для метода,но не обеспечивает его реализации. В производном классе каждый абстрактный метод, определенный базовым классом, реализуется по-своему. Таким образом, абстрактный метод задает интерфейс для метода, но не способ его реализации.

Несмотряна всю полезность абстрактных классов и методов, эту идею можно развить. В С#предусмотрена возможность полностью отделить интерфейс класса от его реализациис помощью ключевого слова i n t e r f a c e .Интерфейсы синтаксически подобны абстрактным классам. Однако в интерфейсени один метод не может включать тело, т.е.

интерфейс в принципе не предусматривает какой бы то ни было реализации. Он определяет, что должно быть сделано, но неуточняет, как. Коль скоро интерфейс определен, его может реализовать любое количество классов. При этом один класс может реализовать любое число интерфейсов.Для реализации интерфейса класс должен обеспечить теля (способы реализации)методов, описанных в интерфейсе. Каждый класс может определить собственную реализацию. Таким образом, два класса могут реализовать один и тот же интерфейс различными способами, но все классы поддерживают одинаковый набор методов. Следовательно, код, «осведомленный» о наличии интерфейса, может использовать объектылюбого класса, поскольку интерфейс для всех объектов одинаков. Предоставляя программистам возможность применения такого средства программирования, как интерфейс, С# позволяет в полной мере использовать аспект полиморфизма, выражаемыйкак «один интерфейс — много методов».Интерфейсы объявляются с помощью ключевого слова i n t e r f a c e .

Методы объявляются с использованиемлишь типа возвращаемого ими значения и сигнатуры. Все эти методы, по сути, — абстрактные. Как упоминалось выше, для методов в интерфейсе не предусмотрены способы реализации. Следовательно, каждый класс, который включает интерфейс, должен реализовать все его методы.

Читайте также:  Способ подключения трансформатора тока

В интерфейсе методы неявно являются открытыми(public-методами), при этом не разрешается явным образом указывать спецификатордоступа.320Часть I. Язык С#Рассмотрим пример интерфейса для класса, который генерирует ряд чисел.public interface ISeries

Хотя префикс » I » необязателен, • многиепрограммисты его используют, чтобы отличать интерфейсы от классов. ИнтерфейсI S e r i e s объявлен открытым, поэтому он может быть реализован любым классом влюбой программе.Помимо сигнатур методов интерфейсы могут объявлять сигнатуры свойств, индексаторов и событий. События рассматриваются в главе 15, поэтому здесь мы остановимся на методах, индексаторах и свойствах. Интерфейсы не могут иметь членов данных. Они не могут определять конструкторы, деструкторы или операторные методы.Кроме того, ни один член интерфейса не может быть объявлен статическим.Реализация интерфейсовИтак, если интерфейс определен, один или несколько классов могут его реализовать. Чтобы реализовать интерфейс, нужно указать его имя после имени класса подобно тому, как при создании производного указывается базовый класс. Формат записи класса, который реализует интерфейс, таков:c l a s s имя_класса : имя__интерфейса

реализация интерфейса не может быть выполнена частично.Классы могут реализовать несколько интерфейсов. В этом случае имена интерфейсов отделяются запятыми. Класс может наследовать базовый класс и реализовать одинили несколько интерфейсов. В этом случае список интерфейсов должно возглавлятьимя базового класса.Методы, которые реализуют интерфейс, должны быть объявлены открытыми. Делов том, что методы внутри интерфейса неявно объявляются открытыми, поэтому ихреализации также должны быть открытыми. Кроме того, сигнатура типа в реализацииметода должна в точности совпадать с сигнатурой типа, заданной в определении интерфейса.Рассмотрим пример реализации интерфейса I S e r i e s , объявление которого приведено выше. Здесь создается класс с именем ByTwos, генерирующий ряд чисел, в котоэом каждое следующее число больше предыдущего на два.// Реализация интерфейса ISeries,class ByTwos : ISeries

Язык С#Вот результаты выполненияСледующее значение равноСледующее значение равноСледующее значение равноСледующее значение равноСледующее значение равноПереход вСледующееСледующееСледующееСледующееСледующееисходноезначениезначениезначениезначениезначениеэтой программы: ф24б810состояние.равно 2равно 4равно бравно 8равно 10Начинаем с числа 100.Следующее значение равноСледующее значение равноСледующее значение равноСледующее значение равноСледующее значение равно102104106108110В классах, которые реализуют интерфейсы, можно определять дополнительныечлены. Например, в представленную ниже версию класса ByTwos добавлен методgetPrevious (), который возвращает предыдущее значение ряда.// Реализация интерфейса ISeries с дополнительно// определяемым методом getPrevious().class ByTwos : ISeries public int getNextO public void reset() public void setStart(int x) // Метод, не объявленный в интерфейсе ISeries,public int getPrevious()

Интерфейсы, структуры и перечисления323Обратите внимание на то, что добавление метода g e t P r e v i o u s () потребоваловнесения изменений в реализацию методов, определенных интерфейсом I S e r i e s . Нопоскольку интерфейс для этих методов остается прежним, при изменении не разрушается код, написанный ранее. В этом и заключается одно из достоинств использования интерфейсов.Как упоминалось выше, интерфейс может реализовать любое количество классов.Рассмотрим, например, класс Primes, который генерирует ряд простых чисел. Обратите внимание на то, что его способ реализации интерфейса I S e r i e s в корне отличается от используемого классом ByTwos.// Использование интерфейса I S e r i e s для реализации// ряда простых чисел.class Primes : ISeries public int getNext()

Источник

Оцените статью
Разные способы