Технологии программирования
Шрифт:
Анализ демонстрационный программы TCalc "Borland Inc."
Программа TCalc 1993 (Turbo Pascal 6.0) состоит из следующих файлов:
tcalc.pas — файл основной программы;
tcell.pas — файл работы с клетками;
tcellsp.pas — файл дополнений работы с клетками (изменение значений);
tchash.pas — файл дополнений работы с клетками (значения в клетках);
tcinput.pas — файл подпрограмм ввода данных с клавиатуры;
tclstr.pas — файл подпрограмм работы со строками;
tcmenu.pas — файл подпрограмм, обслуживающих систему меню;
tcparser.pas — файл интерпретатора арифметических выражений формул клеток;
tcrun.pas — файл инициализации и запуска основных объектов;
tcscreen.pas — файл подпрограмм работы с дисплеем;
tcsheet.pas — файл подпрограмм, обслуживающих действия, выбранных посредством меню;
tcutil.pas — файл вспомогательных подпрограмм;
mcmvsmem.asm — ассемблерный файл подпрограмм запоминания в оперативной памяти информации экрана, а также восстановления ранее сохраненной информации экрана.
Все файлы закодированы с соблюдением стандартов оформления.
Хотя фирма "Borland Inc."
Ассемблерный файл mcmvsmem.asm является искусственно добавленным. Цель его добавления — демонстрация возможности использования ассемблерных вставок. Результаты арифметического анализа текста программы представлены в табл. 8.2.
Таблица 8.2
Результаты анализа текста программы TCalc
| Имя файла | Всего строк | Количество описательных операторов | Комментарии | Пустых строк | Количество процедур | Количество описательных операторов процедур | Код | |
| Всего | Строк | |||||||
| Tcalc | 21 | 2 | 9 | 3 | 5 | 1 | 3 | 8 |
| Tcell | 1962 | 490 | 206 | 20 | 153 | 46 | 152 | 1147 |
| Tcellsp | 228 | 39 | 24 | 5 | 18 | 6 | 25 | 141 |
| Tchash | 262 | 50 | 47 | 23 | 23 | 14 | 43 | 123 |
| Tcinput | 334 | 63 | 39 | 15 | 22 | 9 | 32 | 202 |
| Tclstr | 243 | 45 | 120 | 20 | 12 | 15 | 52 | 114 |
| Tcmenu | 234 | 48 | 40 | 20 | 21 | 22 | 66 | 79 |
| Tcparser | 677 | 73 | 29 | 5 | 17 | 9 | 64 | 518 |
| Tcrun | 1367 | 146 | 128 | 59 | 57 | 47 | 163 | 942 |
| Tcscreen | 523 | 215 | 92 | 37 | 16 | 8 | 96 | 159 |
| Tcsheet | 1722 | 240 | 170 | 40 | 44 | 32 | 101 | 1297 |
| Tcutil | 379 | 114 | 55 | 38 | 70 | 29 | 115 | 42 |
| Итого: | 7952 | 1525 | 959 | 285 | 458 | 238 | 912 | 4772 |
| 20,3% | 3,8% | 12,2% | 63,7% |
В табл. 8.3 и на рис. 8.3 отображены результаты сравнительного анализа технологий структурного и объектно-ориентированного программирования.
Таблица 8.3
Результаты сравнительного анализа технологий структурного и объектно-ориентированного программирования
| Имя программы | Всего строк | Количество описательных операторов | Комментарии | Пустых строк | Количество процедур | Количество операторов процедур | Код | |
| Всего | Строк | |||||||
| MCalc | 3232 | 460 | 274 | 111 | 253 | 102 | 365 | 2043 |
| 15,4% | 3,7% | 12,3% | 68,6% | |||||
| TCalc | 7952 | 1525 | 959 | 285 | 458 | 238 | 912 | 4772 |
| 20,3% | 3,8% | 12,2% | 63,7% |
Сравнительный анализ технологий структурного и объектно-ориентированного программирования установил, что для этих технологий наблюдается практически полное совпадение:
• процентного состава описательных операторов;
• процентного состава количества комментариев;
• процентного состава описательных операторов процедур;
• процентного состава операторов кода программы.
Рис. 8.3. Результаты сравнительного анализа технологий структурного и объектно-ориентированного программирования
При проведении разработки по технологии объектно-ориентированного программирования по сравнению с технологией структурного программирования объем кода увеличился в 2,34 раза с учетом только кода, выполняющего одни и те же функции (для этого был исключен код функций, аналогичных функциям работы с clipboard Windows). Общее число строк увеличилось в 2,46 раза. Во столько и даже более раз увеличилась трудоемкость разработки.
Собственно функционально полезный код программ Mcalc и Tcalc — одинаковый и составляет порядка 1500 строк.
Почти 2,3–3,5 кратное увеличение трудоемкости разработки объясняется платой за организацию самостоятельности поведения объектов и их завершенную функциональность для повторного использования.
8.4. ОСНОВНЫЕ ПОНЯТИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОЙ ТЕХНОЛОГИИ
С чего же начинается создание объектно-ориентированной программы?
Конечно, с объектно-ориентированного анализа (ООА — object-oriented analysis), который направлен на создание моделей реальной действительности на основе объектно-ориентированного мировоззрения. Объектно-ориентированный анализ (ООА) — это методология, при которой требования к системе воспринимаются с точки зрения классов и объектов, прагматически выявленных в предметной области.
На результатах QOA формируются модели, на которых основывается объектно-ориентированное проектирование (object-oriented design, OOD).
Объектно-ориентированное проектирование (ООП) — это методология проектирования, соединяющая в себе процесс объектной декомпозиции и приемы представления логической и физической, а также статической и динамической моделей проектируемой системы.
Что же такое объектно-ориентированное программирование (ООПр) (object-oriented programming)? Программирование прежде всего подразумевает правильное и эффективное использование механизмов конкретных языков программирования. Объектно-ориентированное программирование — это процесс реализации программ, основанный на представлении программы в виде совокупности объектов. ООПр предполагает, что любая функция (процедура) в программе представляет собой метод объекта некоторого класса, причем класс должен формироваться в программе естественным образом, как только в программе возникает необходимость описания новых физических предметов или их абстрактных понятий (объектов программирования). Каждый новый шаг в разработке алгоритма также должен представлять собой разработку нового класса на основе уже существующих классов, т. е. технология ООПр иначе может быть названа как программирование "от класса к классу".
Можно ли реализовать объектно-ориентированную программу не на объектно-ориентированных языках? Ответ, скорее всего, положителен, хотя придется преодолеть ряд трудностей. Ведь главное, что требуется, — это реализовать объектную модель. Сокрытие информации при использовании обычных языков, в принципе, можно реализовать сокрытием доступности вызовов подпрограмм в файлах (Unit). Инкапсуляцию объектов можно достичь как и в объектно-ориентированных языках написанием отдельных подпрограмм. Далее можно считать, что каждый объект порождается от своего уникального класса. Конечно, иерархии классов в таком проекте не будет и для достижения параллелизма придется писать код для организации вызова к исполнению как бы сразу нескольких копий процедур, но программа при этом будет вполне объектно-ориентированной.
8.5. ОСНОВНЫЕ ПОНЯТИЯ, ИСПОЛЬЗУЕМЫЕ В ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ ЯЗЫКАХ
Класс в одном из значений этого термина обозначает тип структурированных данных.
Объект — это структурированная переменная типа класс. Каждый объект является представителем (экземпляром) определенного класса. В программе может быть несколько объектов, являющихся экземплярами одного и того же класса. Все объекты — экземпляры данного класса — аналогичны друг другу, поскольку имеют одинаковый интерфейс, один и тот же набор операций (методов) и полей, определяемых в их классе. Интерфейс класса иногда называют особенностями класса.