- •1.Понятие жизненного цикла программного обеспечения (по). Этапы разработки по.
- •Сравнение стратегий конструирования по.
- •4. Спиральная модель жизненного цикла разработки программного обеспечения б. Боэма.
- •5.Основные приемы экстремального программирования (xp).
- •1.Короткий цикл обратной связи:
- •7. Структура оконного приложения в среде Delphi.
- •8.Модули. Структура модуля. Использование модулей в приложении
- •9.Основные типы данных языка Delphi
- •10. Структурированные типы данных. Записи. Обращение к полям записей. Оператор with. Тип "запись" (record)
- •11. Структурированные типы данных. Записи. Вариантная часть записей.
- •Описание и использование подпрограмм в языке Паскаль. Формальные и фактические параметры. Параметры-значения и параметры-переменные.
- •Описание и вызов процедур и функций
- •13. Библиотека визуальных компонентов Delphi. Назначение vcl
- •Структура vcl
- •14. Основные события Delphi. Методы обработки событий.
- •15. Объектно-ориентированный подход при разработке программы. Основные принципы объектно-ориентированного программирования.
- •16. Определение класса и объекта.
- •Примеры Классов: Класс фигур:
- •17. Атрибуты доступа к элементам класса.
- •Пример: пример “атрибуты доступа” (лекция №__)
- •Структура проекта
- •Описание классов
- •Модуль Unit1
- •Модуль Unit2
- •18. Методы как составляющие элементы класса. Конструкторы и деструкторы.
- •Пример: пример № 1. “точка на прямой”
- •19. Методы как составляющие элементы класса. Модификаторы и селекторы пример № 3. Класс “товар”
- •20. Принцип инкапсуляции. (Забавная статья, но вроде понятно)
- •21. Принцип наследования.
- •Типы наследования
- •Простое наследование
- •Множественное наследование
- •Реализация наследования на примере языка Delphi.
- •Create; begin Inherited; // Всегда вызывается в начале конструктора ... End; Иерархия стандартных классов Delphi
- •Совместимость типов для классов в иерархии наследования. Преобразование и приведение типов.
- •Совместимость объектов различных классов
- •Контроль и преобразование типов
- •Обработка исключительных ситуаций. Стандартные классы исключений на примере языка Delphi.
- •Блок try … except
- •Блок try … finally
- •Описание и обработка пользовательских исключений на примере языка Delphi.
Контроль и преобразование типов
Поскольку реальный экземпляр объекта может оказаться наследником класса, указанного при описании объектной переменной или параметра, бывает необходимо проверить, к какому классу принадлежит объект на самом деле. Чтобы программист мог выполнять такого рода проверки, каждый объект хранит информацию о своем классе. В Object Pascal существуют операторы is и as, с помощью которых выполняется соответственно проверка на тип (type checking) и преобразование к типу (type casting).
Например, чтобы выяснить, принадлежит ли некоторый объект Obj, объявленный в программе как
Code: |
var Obj: TObject; |
к классу TResourceGauge или его наследнику, следует записать
Code: |
if Obj is TResourceGauge then { да, принадлежит } ; |
Для преобразования объекта к нужному типу используется оператор as, например:
Code: |
with Obj as TResourceGauge do CheckStatus; |
Стоит отметить, что для объектов применим и обычный способ приведения типа:
Code: |
with TResourceGauge(Obj ) do CheckStatus; |
Вариант с оператором as лучше, поскольку безопасен. Он генерирует ошибку (точнее, исключительную ситуацию) при выполнении программы (run-time error), если реальный экземпляр объекта Obj несовместим с классом TResourceGauge. Забегая вперед, скажем, что ошибку приведения типа можно обработать и таким образом избежать досрочного завершения приложения.
Обработка исключительных ситуаций. Стандартные классы исключений на примере языка Delphi.
Исключ. Ситуация-Это ошибка или сбой работы программы
Исключение – Специальный объект, создающийся при возникновении искл. Ситуаций и удаляемый после ее обработки.
Структурированная обработка исключений- механизм, в котором обработка ошибок отделена от основного кода программы.
Причины возникновения искл. Ситуаций:
1. программные (деления на ноль и тд)
2. аппаратные(работа с недоступным устр-вом)
Последовательность обработки искл. Ситуаций:
1. возникновение искл. Ситуации
2. создание объекта исключения, приостановка работы программы
3. передача объекта исключения обработчику
4. обработка исключения
5. уничтожение объекта исключения
6. продолжение программы
Уровни обработки исключений:
1. Программа (try – except, try – finally);
2. Среда разработки
3. Операционная система
Синхронные исключения могут возникнуть только в определённых, заранее известных точках программы. Так, ошибка чтения файла или коммуникационного канала, нехватка памяти — типичные синхронные исключения, так как возникают они только в операции чтения из файла или из канала или в операции выделения памяти соответственно.
Асинхронные исключения могут возникать в любой момент времени и не зависят от того, какую конкретно инструкцию программы выполняет система. Типичные примеры таких исключений: аварийный отказ питания или поступление новых данных.
Некоторые типы ошибок могут быть отнесены как к синхронным, так и к асинхронным. Например, инструкция деления на нуль на многих программно-аппаратных платформах приводит к синхронному исключению, но на некоторых платформах за счёт глубокой конвейеризации исключение может оказаться асинхронным.
Иерархия стандартных классов исключений
Класс Exception, наследующий от TObject, описывает наиболее общие характеристики и способы создания (конструкторы) исключения. Все остальные исключения, описанные как в библиотеках Delphi (стандартные), так и в конкретной программе (пользовательские) прямо или опосредовано наследуют от него и иерархически описывают все более специфические исключительные ситуации (ошибки ввода-вывода, ошибки математического сопроцессора, ошибки памяти, ошибки при работе с БД и т.п.).
Часть дерева стандартных исключений:
Exception
EAbort «Молчаливое исключение», для выхода из подпрограммы (Abort)
EConvertError Ошибка преобразования данных
EExternal Исключения, пришедшие от ОС (с дополнительной информацией)
EIntError Для целочисленных математических операций
EIntOverflow результат превысил размер регистра
ERangeError ошибка диапазона
EDivByZero целочисленное деление на ноль
EMathError Для операций с плавающей запятой
EZeroDivide деление на ноль с плавающей запятой
EInOutError Ошибка при вводе/выводе
EDatabaseError Ошибки, связанные с работой с БД
Пример:
объявление класса-исключения, наследующего от Exception.
type
EMyOwnException = class(Exception);