Технологии программирования
Шрифт:
Все файлы закодированы с соблюдением стандартов оформления.
Хотя фирма "Borland Inc." занимается разработкой компиляторов, файл mcparser.pas также является заимствованным из UNIX YACC utility и лишь частично модифицирован. Остальные файлы являются оригинальными.
Ассемблерный файл 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
Результаты сравнительного анализа технологий структурного и объектно-ориентированного программирования
Имя программы | Всего строк | Количество описательных операторов | Комментарии | Пустых строк | Количество процедур | Количество операторов процедур | Код | |
Всего | Строк | |||||||
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. ОСНОВНЫЕ ПОНЯТИЯ, ИСПОЛЬЗУЕМЫЕ В ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ ЯЗЫКАХ
Класс в одном из значений этого термина обозначает тип структурированных данных.
Объект — это структурированная переменная типа класс. Каждый объект является представителем (экземпляром) определенного класса. В программе может быть несколько объектов, являющихся экземплярами одного и того же класса. Все объекты — экземпляры данного класса — аналогичны друг другу, поскольку имеют одинаковый интерфейс, один и тот же набор операций (методов) и полей, определяемых в их классе. Интерфейс класса иногда называют особенностями класса.
Класс является описанием того, как будет выглядеть и вести себя его представитель. Обычно проектируют класс как образование (матрицу), отвечающее за создание своих новых представителей (экземпляров или объектов). Экземпляр объекта создается при помощи особого метода класса, называемого конструктором, так как необходимо создать экземпляр, прежде чем он станет активным и начнет взаимодействовать с окружающим миром. Уничтожение экземпляров поддерживает сам активный экземпляр, имеющий соответствующий метод — деструктор.