рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Object PASCAL

Object PASCAL - раздел Программирование, Объектно-ориентированное программирование (72 Часа) Вадим Валериевич Монахов, Доцент Кафедры ...

(72 часа)

Вадим Валериевич Монахов, доцент кафедры вычислительной физики СпбГУ

Введение

 

1.1. Основной принцип структурного программирования

Структурное программирование — это метод программирования, опирающийся на структурную организацию программы.

Основной принципструктурного программирования - обеспечить максимальное соответствие структуры текста программы логике решаемой проблемы.

 

Способы реализации основного принципа структурного программирования:

1) Структурируемости и читаемости текста программы –отступы, обозначения, группировка частей текста.

2) Отлаживаемость программы – пригодность конструкций языка к отладке. В значительной степени связана с особенностямитипизации данных. Наличие жесткого контроля типов с диагностикой ошибок при трансляции программы. Другая важная часть – наличие интегрированной среды разработки.

3) Инкапсуляция данных — наличие структурных типов данных (массивы, записи, строки, множества, файловые типы, потоки и т.п.) с возможностью оперирования переменной структурного типа как единым целым.

4) Инкапсуляция программного кода -блоки разных уровней, модули, пакеты и т.п. с особыми правилами прозрачности и интерфейсами между ними.

5) Инкапсуляция программного кода и данных во время выполнения программы, со специальными ограничениями доступа, правилами прозрачности, интерфейсами, диагностикой ошибок во время выполнения программы. Примеры: обработка исключительных ситуаций во время выполнения, обработки событий, подпроцессы.

 

 

Примеры неструктурных языков:

Ассемблер — не удовлетворяет:

1. "Читаемость" — из-за плохой читаемости программы, отсутствия структурируемости текста;

2. "Отлаживаемость" — полное отсутствие;

3. "Структурные типы" — полное отсутствие;

4. "Инкапсуляция кода" — полное отсутствие;

5. "Инкапсуляция времени выполнения" — полное отсутствие.

FORTRAN — не удовлетворяет:

1. "Читаемость" — из-за необходимости часто использовать оператор goto, неразвитости блочной организации текста программы, позиционной зависимости кода;

2. "Отлаживаемость" — из-за отсутствия пользовательских типов и, что более критично — слабого контроля типов. С этим связано существование недиагностируемых ошибок типа DO7I=1.10, когда в операторе цикла вместо "," поставили ".", в результате чего "Voyager" пролетел мимо Венеры;

3. "Структурные типы" — отсутствие структурных типов данных (кроме массивов);

4. "Инкапсуляция кода" — почти отсутствует, так как нет модулей, вложенности блоков программного кода (подпрограммы не могут быть вложены друг в друга) и крайне плохо организованных интерфейсов между блоками кода (операторы block data и т.д.);

5. "Инкапсуляция времени выполнения" — полное отсутствие.

В FORTRAN-77 появились возможности, преодолевающие ряд перечисленных недостатков. FORTRAN-99 пошел еще дальше, однако многие недостатки сохранялись, а новые возможности сделали его достаточно сложным и непоследовательным.

 

 

Примеры структурных языков:

С:

1. "Читаемость" — удовлетворительно (не очень хорошая читаемость из-за наличия макросов машинной ориентации языка с выражениями типа y+=x );

2. "Отлаживаемость" —удовлетворительно не очень хороший синтаксис языка, поэтому много ошибок не отслеживается при компиляции (например, "," вместо ";" в функции "for", а также ошибки, возникающие из-за правил автоматического приведения типов). Наличие указателей с соответствующими правилами присваивания часто приводит к фатальным ошибкам.

3. "Структурные типы" —хорошо;

4. "Инкапсуляция кода" —хорошо. Не очень удачно организована модульность;

5. "Инкапсуляция во время выполнения" — полное отсутствие.

C++:

То же, что C, 2) несколько усовершенствован (однако переусложнен). Имеется объектная модель, расширяющая 1), 2), 3), 4). Правда, имеется дефект в ограничении правила видимости объектов (правила видимости могут быть несанкционированно изменены).

5)"Инкапсуляция времени выполнения" — наличие обработки исключительных ситуаций (exceptions).

PASCAL:

1. "Читаемость" — хорошо;

2. "Отлаживаемость" — хорошо. Проблемы: правила автоматического приведения типов, работа с указателями, явное приведение типов, вариантная запись;

3. "Структурные типы" — хрошо;

4. "Инкапсуляция кода” —удовлетворительно: отсутствуют модули (в стандарте языка) и пакеты; Turbo Pascal лучше удовлетворяет "4)", хоть и имеет не очень продуманные интерфейсы и правила видимости между модулями;

5. "Инкапсуляция времени выполнения" — полное отсутствие.

Object Pascal (начиная с Delphi 2.0) (без явного применения объектов):

Имеется объектная модель, расширяющая 1), 2), 3), 4). Кроме того, начиная с Delphi 3.0 появились пакеты.

5)"Инкапсуляция времени выполнения" —

а) наличие обработки исключительных ситуаций (exceptions);

b) работа с подпроцессами (threads).

Java:

1. "Читаемость" — удовлетворительно. Недостатки: переусложненность ряда простых в принципе действий из-за чрезмерного увлечения объектным подходом (например, при действиях с файлами и строками); "рецидивы", ведущие происхождение от С (операнды типа y+=x, функции for,?: и т.п. Зато макросы отсутствуют!). Наличие большого числа маленьких подпрограмм (классов) без возможности их объединения в единое целое.

2. "Отлаживаемость" —отлично, за исключением правил автоматического приведения типов (указатели ликвидированы!);

3. "Структурные типы" —хорошо;

4. "Инкапсуляция кода" —хорошо. Сложность: отсутствие вложенных программ. В некоторой степени решено, начиная с Java 1.1 – вложенные классы;

5. "Инкапсуляция во время выполнения" — хорошо. Имеются:

a. обработка исключительных ситуаций;

b. работа с подпроцессами (threads).

JavaScript/Jscript

1)”Читаемость” – удовлетворительно ( С-образен);

2)”Отлаживаемость” – неудовлетворительно (свободная типизация и при этом слабая типизация), крайне плохая диагностика ошибок;

3)”Структурные типы” – хорошо (благодаря объектной модели);

4)”Инкапсуляция кода” – удовлетворительно (нет модулей, пакетов; вложенные функции появились только в JavaScript 1.2);

5)”Инкапсуляция времени выполнения” – удовлетворительно для JS в IE4 и последующих (есть обработка исключений), неудолетворительно – для других бразеров.

 

1.2. Основные задачи структурного программирования

Структурное программирование предназначено для решения трех основных задач:

1. Повышение эффективности разработки программ: а) увеличение скорости написания программ; б) увеличение качества их сопровождения (внесения усовершенствований, исправления ошибок); в) уменьшение стоимости разработки; г) обеспечение возможности групповой работы с проектом; д) обеспечение возможности проектирования ПО (software engineering).

2. Повышение надежности работы программ. Никому не нужна дешевая, мгновенно написанная и занимающая мало ресурсов программа, которая работает очень быстро, но с ошибками. Из программистского фольклора: “Беремся написать вам ПО : 1. Бысро 2.дешево 3.надежно. – Два из трех.

3. Повышение эффективности работы программ: увеличение скорости их выполнения, расширение функциональных и сервисных возможностей программ, а также уменьшение их ресурсоемкости (размеров программного кода, объема используемой оперативной и дисковой памяти).

Одним из важнейших критериев решения перечисленных задач является коэффициент повторного использования программного кода, т.е. многократного использования одного и того же куска программы. Преимущества процедур, функций и библиотек подпрограмм, и в особенности объектного программирования, в значительной степени связаны с увеличением коэффициента повторного использования кода.

 

1.3. Основные принципы объектно-ориентированного программирования (ООП)

ООП — это метод программирования, развивающий принципы структурного программирования и основанный на следующих абстракциях данных:

I. Инкапсуляция: объединение данных с процедурами и функциями в единый блок программного кода (данные и методы работы с ними рассматриваются как поля объекта).

II. Наследование (наличие экземпляров класса; потомки, прародители, иерархия).

III. Полиморфизм (единое имя для некого действия, которое по-разному осуществляется для объектов иерархии).

Компонентное программирование:

Реализация объектов в виде независимо распространяемых исполняемых модулей. Известны 2 типа компонентов:

А) Компоненты конкретного языка программирования (Visual BASIC, Object PASCAL, Java). Предназначены преимущественно для поддержки средств визуального проектирования

Б) Компоненты, поддерживаемые на уровне ОС (компоненты Activex, .NET).

 

 

Основы языка Object PASCAL.

– Конец работы –

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

Объектно-ориентированное программирование

На сайте allrefs.net читайте: "Объектно-ориентированное программирование"

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

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

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

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

Алфавит языка PASCAL. Идентификаторы.
Основной алфавит языка PASCAL состоит из латинских букв и цифр. Буквы: ABCD...XYZ — заглавные (прописные), abcd...xyz — строчные, а также знак _

Простые и составные специальные символы, используемые на ПК.
Перечисленный ниже набор несколько расширяет стандарт PASCAL, однако на ПК является стандартом de facto. Простые специальные символы: + Плюс – “сложени

Стандартные типы данных. Двоичное представление чисел и дополнительный код.
Целые типы Byte: 0..255 — байтовый (1 байт) ShortInt: -128..127 — короткое целое (1 байт) Word: 0..65535 — 16-ричное слово (2 байта) Inte

Арифметические операторы.
Бинарные полиморфные (тип результата определяется по правилам приведения типов, см. далее): + сложение (все целые и вещественные типы, строковые типы, множества).

Логические операторы и операции отношения.
Логические операторы: and логическое "И". Пример: a and b or логическое "ИЛИ": a or b xor логическое "исключающее ИЛИ": a xor b not

Потеря точности, потеря порядка и переполнение при арифметических операциях.
Пусть x1 – арифметическая переменная real, x2 – вещественная extended. Тогда выполнение присваиваний x2:=1+1e-14 даст 1.00000000000001, а x1:=1+1e-14 даст 10000000000000,т.к. числа real имеют всего

Структура простейшей программы.
В PASCAL любое число пробелов, символов <TAB> или переносов на новую строку везде приводится к одному пробелу (конечно, кроме строковых выражений). Имя файла с текстом программы должно быть т

Простейшие операторы языка Object PASCAL
2.9.1. Пустой и составной операторы. Операторы в языке PASCAL разделяется символом ";". Пустой оператор — это просто пустая строка (или эквивален

Процедуры и функции. Формальные и фактические параметры. Передача параметров по ссылке, по значению и через указатель.
Процедуры по своей структуре напоминают независимую программу, вложенную в основную программу. Главное их отличие в том, что они, как правило, имеют параметры, передаваемые из внешнего программного

Локальные и глобальные переменные. Побочный эффект функции. Вложенность процедур и функций. Правила видимости.
В приведенных выше примерах часть переменных описана в блоке описания переменных программы. Такие переменные называются глобальными. Они существуют в любой момент выполнения программы. Другая часть

Модули. Секции декларации, интерфейса и реализации. Области видимости.
На самом деле общая структура модуля при наличии в нем класса несколько сложнее. Обсудим ее более подробно. Написание собственного модуля (unit) начинается с указания имени модуля. В нашем

Классы, экземпляры класса, наследование, иерархия.
Объектный тип (например, tDot) называется классом. Переменная данного типа — объект или, что то же самое, экземпляр класса. То есть при задании Var dDot:tDot переменная dDot – это

Пример объектно-ориентированной программы: движение фигур по экрану.
unit Figures; interface uses…; type tLocation= object X,Y:Integer; procedure Init(X_,Y_:Integer); function GetX:Integer;

Виртуальные методы. Конструкторы. Раннее и позднее связывание. Полиморфизм.
В приведенной выше программе при описании объектов некоторые методы заданы как виртуальные (virutal). В этом случае перед вызовом какого-либо метода соответствующего экземпляра класса (переменной о

Динамические объекты. Выделение и высвобождение памяти. Деструкторы.
Указатель на объект устроен так же, как обычные указатели:    

Правила присваивания. Совместимость типов для объектов.
Для потомков при использовании их "на месте" прародителей любого уровня имеется два основных варианта совместимости типов (по вызовам и по присваиваниям) между: 1. экземплярами о

Пример на создание, присваивание и уничтожение динамических объектов.
Unit FigDemo1; Uses…,Figures,FigArc; var FigKey:char; Ang1_ini,Ang2_ini,R_ini,X_ini,Y_ini:Integer; newX,newY,newR:Integer; pFigure:tpDot; outside:Boolea

Пример динамического выделения и высвобождения памяти для однонаправленного списка объектов.
Создадим список, в котором хранятся различные фигуры — объекты иерархии с классом-прародителем tDot. Введем запись типа "узел", ссылающийся на одну фигуру и один другой (предыдущий) узел:

Очередь, стек, двунаправленный список.
Совершенно аналогичным образом можно создавать объект — двунаправленный список, в котором каждый узел имеет указатели как "влево" (на предыдущий узел), так и "вправо" (на послед

Классы, объекты, поля и методы.
В Object Pascal класс — тип записи, который может иметь в своем составе поля данных и методы (а также свойства, но о них будет отдельный разговор). Пример описания класса и переменн

Свойства.
В Delphi пожелание ООП "не обращаться из программы к полям, а действовать через методы" нашло отражение в новом для ООП принципе — свойствах объекта. Свойство определяется

Создание и уничтожение объектов. Конструкторы и деструкторы.
В Object Pascal объекты могут быть только динамическими! Любая переменная объектного типа — это указатель, но доступ к объекту идет без 'шляпки', а создание нового объекта осуществляется не операто

Наследование. Статические, виртуальные, динамические и абстрактные методы.
Все классы Delphi — потомки класса tObject. Если нет указания, какой класс является прародителем, значит, это tObject. Определение tMyObject=class ... end; полно

Области видимости объектов.
В Delphi существуют зарезервированные слова public ("общие"), protected ("защищенные") и private ("личные") для определения специальных правил видимости областей кода

Обработка исключительных ситуаций.
Во время работы программы часто встречаются исключительные ситуации: деление на 0, отсутствие места на диске или попытка писать на защищенную для записи дискету, ошибочный символ при вводе (наприме

Специальные средства для работы с MS Windows: сообщения.
Для обработки сообщений Windows в Delphi существует механизм динамических методов, называемых сообщениями. Они должны быть описаны в классе как процедуры, имеющие один параметр, передаваемый по име

События и их делегирование. Обработка событий.
События — это свойства процедурного типа. Их название принято начинать с префикса "on". Для описания события некого типа (как описать новый тип события будет рассказано далее) в объекте н

Методы класса и указатели на класс.
Некоторые методы бывает нужно вызывать без создания экземпляра класса (например, для получения информации о имени класса, размере экземпляра класса и т.п.). Такие методы называются методами класса

Дополнительные возможности Object Pascal.
4.17.4. Функции а) могут возвращать значения определенных пользователем типов, включая сложные; б) внутри каждой функции предопределена доступная по чтению и записи локальн

Визуальное проектирование в среде Delphi.
Перед началом работы обычно надо настроить пути к библиотеке Delphi, а в Delphi 3.0 также установить пакеты. Это связано с тем, что Windows 95 (и, тем более, NT 4.0) имеет индивидуальные настройки

Создание экранных форм. Инспектор объектов.
При входе в Delphi автоматически открывается проект "по умолчанию". Изначально это проект с пустой экранной формой, на которой пунктиром показана сетка, к которой идет привязка для выравн

Палитра компонентов.
Мы будем описывать только наиболее важные свойства и события для компонентов и перечислим только наиболее часто используемые компоненты из стандартных библиотек Delphi 3.0. Для Delphi 2.0 практичес

Общие представления об интерфейсах в Object PASCAL
Интерфейс объекта определяют методы и свойства, которые могут быть реализованы классом-наследником этого интерфейса. Они описываются аналогично абстрактным классам, так же, как абстрактные классы,

Особенности разработки DLL
Работа программ с DLL (Dynamic Link Library) поддерживается операционной системой, а не компилятором какого-либо языка программирования. Они представляют собой универсальный механизм использования

ActiveX
Подпроцессы (Threads) Для создания дополнительного подпроцесса в программах Delphy предназначен специальный модуль (в репозитории он представлен пиктограммой Thread Object

Использование библиотек OpenGL и GLU
5.21. Создание программистом собственного компонента Литература 1. В.В.Фаронов . Delphi 6. Учебный курс.- М.:"Нолидж", 2001.- 608 с.

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги