Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (1158635), страница 94
Текст из файла (страница 94)
В команду разработчиков входили: Бернд Криг-Брюкнер (BerndKrieg-Brueckner), Бриан Вичман (Brian Wichmann), Анри Ледгар (HenryLedgard), Жан-Клод Ельяр (Jean-Claude Heliard), Жан-Лу Гайли (Jean-LoupGailly), Жан-Раймон Абриаль (Jean-Raymond Abrial), Джон Барнс (JohnBarnes), Майк Вуджер (Mike Woodger), Оливье Рубин (Olivier Roubine), С. А.Шуман (S. A. Schumann) и С. С. Весталь (S.
С. Vestal).Непосредственными предшественниками Ada являются Pascal и егопроизводные, включая Euclid, Lis, Mesa, Modula и Sue. Были использованынекоторые концепции ALGOL-68, Simula, CLU и Alphard. Стандарт ANSI дляAda был окончательно издан в 1983 году. Трансляторы Ada, хотя и не сразу,были реализованы для всех основных архитектур. Будучи созданнымблагодаря министерству обороны, язык Ada сегодня используется во многихгосударственных и коммерческих проектах.
Ada - традиционный языкразработки больших и сложных систем, например, системы управлениявоздушным движением в США и Канаде. Стандарты ANSI должныпересматриваться каждые пять лет, поэтому в настоящее время изучаетсяпроект Ada 9x. В нем в исходное определение языка внесен ряднезначительных исправлений: уточнения, устранение очевидных пробелов,исправления ошибок. В настоящем виде Ada является объектным, но необъектно-ориентированным языком. Проект 9x подразумевает расширениеязыка до уровня объектно-ориентированного.ОбзорРазработчики Ada прежде всего беспокоились о:• надежности и эксплуатационных качествах программ;• программировании как разновидности человеческой деятельности;• эффективности [20].В табл.
А-5 приведены основные характеристики языка Ada с точкизрения объектного подхода.Таблица А-5. AdaАбстракцииПеременные экземпляраДа Да Нет НетМетоды экземпляраПеременные класса МетодыклассаИнкапсуляцияПеременных МетодовМодульностьРазновидности модулейОткрытые,закрытыеОткрытые,закрытыеПакетИерархииНаследование ШаблоныМетаклассыТипизацияСильная типизацияПолиморфизмМногозадачностьДолгоживущие объектыПараллельностьСохраняемостьНет(входит в Ada9x)ДаНетДа Нет(входит в Ada9x)ДаНетСсылкиОсновным руководством по языку Ada является "Reference Manual forthe Ada Programming Language" [21].A.7. EiffelПроисхождениеАвтор Eiffel Бертран Мейер (Bertrand Meyer) создавал не только языкобъектно-ориентированного программирование, но и инструментпроектирования программ.Несмотря на сильное влияние Simula, Eiffel - вполне самостоятельныйобъектно-ориентированный язык со своей собственной средой разработки.Eiffel поддерживает динамическое связывание и статическуютипизацию, тем самым обеспечивая гибкость интерфейсов классов всочетании с безопасным использованием типов.
В Eiffel есть нескольковажных черт, поддерживающих более жесткий стиль программирования, в томчисле параметризованные классы, утверждения и исключения. Мейер считает,что обобщенные классы хорошо дополняют наследование, учитываягоризонтальный уровень общности; новые классы на одном уровне иерархииможно создавать, используя тип в качестве параметра, а не плодя практическиодинаковые подклассы.Неотъемлемой частью языка являются пред- и постусловия, то естьутверждения, которые должны выполняться при входе в метод и выходе изнего.
Нарушение утверждения вызывает исключительную ситуацию. Ееможно перехватить, обработать и попробовать вызвать тот же метод еще раз.ОбзорEiffel поощряет хорошее программирование, добротнуюспецификацию классов, сильную типизацию и повторное использование, какчерез наследование, так и через параметризацию. Формальная трактовкаисключительных ситуаций позволяет жестко специфицировать интерфейсыклассов при реализации.Eiffel предоставляет законченную среду разработки программ,включая специальный редактор с выделением синтаксиса, генератордокументации, библиотеки классов и броузер. Кроме того, поддерживаютсясредства управления кодом и сборкой программ.Свойства языка с точки зрения нашей модели показаны в табл. А-6.Таблица А-6.
EiffelАбстракцииПеременные экземпляра Методыэкземпляра Переменные классаМетоды классаДа ДаНет НетИнкапсуляцияПеременных МетодовЗакрытые Открытые, закрытыеМодульностьРазновидности модулейБлок (unit)ИерархииНаследование ШаблоныМетаклассыМножественное Да НетТипизацияСильная типизация Полиморфизм Да ДаПараллельностьМногозадачностьНетСохраняемостьДолгоживущие объектыНетСсылкиЛучше всего взять книгу Мейера "Object Oriented SoftwareConstruction" [22].А.8.
Другие объектно-ориентированные языкипрограммированияНа рис. А-2 вы найдете названия многих важных объектных иобъектно-ориентированных языков, в библиографии есть ссылки наинформацию о большинстве из них.ABCL/1ABEAcoreAct/1Act/2EmeraldNewFlavorsSASTAct/3ActorsFelixPascalOakUspSelfActraArgusARTBerkeley SmalltalkFOOPSObjectCobotSmalltalkConcurrent SmalltalkCSSACSTDirectorDistributed SmalltalkEiffelLoreMaceMELDMjolnerModPascalNeonPlasma 11POOL-TPROCOLQuick PascalQuicktalkROSSActorExperCommonLispExtended SmalltalkNIL0-CPUSCOOPSCOOPSAdaFlavorsFOOPlogOberonObject AssemblerSimulaSINAObject LispObject LogoObject OberonSmalltalk ATSmalltalk VSmallworld СOOPCOOPS+STROBETClassicBetaFRLBlazeGalileoGLISPObjectGarpPascalSPOOLC++ GypsyObjective-C SR С_talkHybridObjVLispSRLBrouhahaCantorInheritanceIntermissionOPALTrellis/Ow InnovAdalClascalJasmineKL-OneOrient84/KUniformOrbilwilh ClassesAdaTurbo Pascal 5.xCluster86CommonLoopsKRLOTMUNITSCommonObjectsKRSPCOLVulcanCommon ORBITLittleSmalltalkPIEXLISPConcurrentPrologLOOPSPL/LLZoom/VMCLOSРис.
А-2. Объектные и объектно-ориентированные языкипрограммированияВ работе Саундерса [23] дан обзор более восьмидесяти объектноориентированных языков. Автор выделил в них семь категория [24]:• ActorЯзыки, поддерживающие механизмделегирования.• ПараллельныеОбъектно-ориентированные, нацеленные напараллелизм.• РаспределенныеОбъектно-ориентированные языки, нацеленныена обработку распределенных объектов.• ОснованныеЯзыки, поддерживающие теорию фреймов. нафреймах• ГибридныеОбъектно-ориентированные надстройки надобычными языкам и.• Типа SmalltalkSmalltalk и его диалекты.• ИдеологическиеПриложения объектной ориентированности кдругим областям.• ОстальныеВсе остальные объектные языки.Словарь терминовCRC-карточки, CRC cards.
CRC — Class/Responsibilities/Collaborators,Класс/Ответствен-ности/Сотрудники; простое, но достаточно эффективное средствомозгового штурма при выявлении ключевых абстракций и механизмов.абстрактная операция, abstract operation. Объявленная, но не реализованнаяоперация в абстрактном классе. В C++ абстрактные операции объявляются как чистовиртуальные функции-члены.абстрактный класс, abstract class. Класс, который не может иметь экземпляров.Абстрактный класс пишется в предположении, что его конкретные подклассы дополнятего структуру и поведение, скорее всего, реализовав абстрактные операции.абстракция, abstraction. Существенные характеристики объекта, которыеотличают его от всех других объектов и четко определяют его концептуальные границыдля наблюдателя.
Абстрагирование — процесс выявления абстракций. Один из основныхэлементов объектной модели.агент, agent. Объект, который подвергается воздействию со стороны и самвоздействует на другие объекты. Обычно агенты создаются для выполнения некоторойработы по поручению актеров или других агентов.актер, actor.
Объект, воздействующий на другие объекты, но сам неподвергающийся воздействию с их стороны. В некоторых контекстах то же самое, чтоактивный объект.активный объект, active object. Объект, которому выделен свой потокуправления.алгоритмическая декомпозиция, algorithmic decomposition. Процессразделения системы на части, каждая из которых отражает этап общего процесса.Применение структурного подхода к проектированию приводит к алгоритмическойдекомпозиции, которая фокусируется на потоке управления в системеархитектура модулей, module architecture. Граф, вершины которогосоответствуют модулям, а ребра — отношениям модулей между собой.
Архитектурамодулей системы представляется совокупностью диаграмм модулей.архитектура процессов, process architecture. Граф, вершины которогосоответствуют процессорам и устройствам, а ребра — соединениям между ними. Дляописания архитектуры процессов системы используются диаграммы процессов.архитектура, architecture. Логическая и физическая структура системы,сформированная всеми стратегическими и тактическими проектными решениями.ассоциация, association. Отношение, означающее некоторую смысловую связьмежду классами.атрибут, attribute. Часть составного объекта (агрегата).базовый класс, base class. Наиболее общий класс в какой-либо структуре классов.В большинстве приложений есть несколько таких корневых классов.