Главная » Просмотр файлов » Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++

Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (1158635), страница 92

Файл №1158635 Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++) 92 страницаГради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (1158635) страница 922019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 92)

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

Наряду с анализом и проектированием,несомненно важны особенности конкретного языка программирования, поскольку вконечном счете наши конструкции должны быть выражены на каком-то языке. Какотметил Вульф, язык программирования служит трем целям:• это инструмент проектирования• это средство человеческого восприятия• это средство управления компьютером [1].Данное приложение предназначено для читателей, не знакомых с языкамипрограммирования, упоминавшимися в этой книге.

Мы приводим сводное описаниенаиболее важных из них, а также примеры, позволяющие сопоставить синтаксис,семантику и идиомы двух самых интересных - C++ и Smalltalk.А.1. КонцепцииВ настоящее время насчитывается более двух тысяч языковпрограммирования высокого уровня. Большинство этих языков возниклоисходя из конкретных требований некоторой предметной области. Каждыйновый язык позволял перехо-Рис. А-1. Генеалогия объектных и объектно-ориентированных языковдить ко все более и более сложным задачам. На каждом новом приложенииразработчики языков что-то открывали для себя и изменяли своипредставления о существенном и несущественном в языке.

На развитиеязыков программирования значительное влияние оказали достижения теориивычислении, которые привели к формальному пониманию семантикиоператоров, модулей, абстрактных типов данных и процедур.В главе 2 языки программирования были сгруппированы в четырепоколения по признаку поддерживаемых ими абстракции: математические,алгоритмические, ориентированные на данные, объектно-ориентированные.Самые последние достижения в области развития языков программированиясвязаны с объектной моделью. К настоящему времени мы насчитали болеесотни различных объектных и объектно-ориентированных языков. Какговорилось в главе 2, объектными принято называть языки, которыеподдерживают абстракции данных и классы; объектно-ориентированнымиявляются те объектные языки, которые поддерживают наследование иполиморфизм.Общим предком практически всех используемых сегодня объектных иобъектно-ориентированных языков является язык Simula, созданный в 1960году Далем, Мюрхогом и Ныгардом [2].

Язык Simula основывался на идеяхALGOL, но был дополнен механизмом наследования и инкапсуляции. Но ещеболее существенно то, что Simula, предназначенная для описания систем имоделирования, ввела дисциплину написания программ, отражающих словарьпредметной области.Рис. А-1, заимствованный у Шмукера [З], демонстрирует генеалогиюпяти наиболее влиятельных и популярных объектных или объектно-ориентированных языков программирования: Smalltalk. Object Pascal, C++,CLOS и Ada. В следующих разделах мы проанализируем некоторые из этихязыков с точки зрения их "объектности".А.2. SmalltalkПроисхождениеЯзык Smalltalk был разработан командой Xerox Palo Alto ResearchCenter Learning Research Group (Xerox, Пало Альто, Исследовательский центр,группа исследования обучения), как программная часть Dynabook фантастического проекта Алана Кея (Alan Kay). В основу были положеныидеи Simula, хотя известное влияние оказали также язык FLEX и работыСеймора Паперта (Seymore Papert) и Валласа Феурзейга (Wallace Feurzeig).Smalltalk является одновременно и языком программирования, и средойразработки программ.

Это - чисто объектно-ориентированный язык, в которомабсолютно все рассматривается как объекты; даже целые числа - это классы.Вслед за Simula, Smalltalk является важнейшим объектно-ориентированнымязыком, поскольку он не только оказал влияние на последующие поколенияязыков программирования, но и заложил основы современного графическогоинтерфейса пользователя, на которых непосредственно базируютсяинтерфейсы Macintosh, Windows и Motif.Развитие Smalltalk потребовало почти десятилетних усилий группыэнтузиастов. Главным архитектором на протяжении почти всей работы былДэн Ингалс (Dan Ingalls), но значительный вклад внесли также Питер Дейч(Peter Deutsh), Гленн Краснер (Glenn Krasner) и Ким МакКолл (Kim McCall).Параллельно, усилиями Джеймса Альтхофа (James Althoff), Роберта Флегала(Robert Flegal), Неда Келера (Ned Kaehler), Дианы Мерри (Diana Merry) иСтива Паца (Steve Putz) разрабатывалась оболочка Smalltalk.

Адель Голдберг(Adele Goldberg) и Дэвид Робсон (David Robson) взяли на себя рольлетописцев проекта.Известны пять выпусков языка Smalltalk, обозначаемых по году ихпоявления:Smalltalk-72, -74. -76, -78, и самое свежее воплощение - Smalltalk-80.Реализации 1972 и 1974 годов заложили основу языка, в частности идеюпередачи сообщений и полиморфизм, хотя механизм наследования еще непоявился. В последующих версиях полноправное гражданство получиликлассы; этим достигла завершения точка зрения, что все состоит из объектов.Smalltalk-80 был перенесен на многие компьютерные платформы.Есть также один важный диалект (схожий со Smalltalk-80),получивший название Smalltalk/V.

Он создан фирмой Digitalk для IBM PC(Windows и OS/2) и Macintosh. За исключением классов пользовательскогоинтерфейса, библиотеки классов Smalltalk/V в обеих версиях практическиидентичны. Среда и инструменты разработки также напоминают Smalltalk-80[4].ОбзорКак пишет Ингалс: "Цель проекта Smalltalk - сделать мир информациидоступным для детей любого возраста. Вся трудность состоит в том, чтобынайти и применить достаточно простые и эффективные метафоры, которыепозволят человеку свободно оперировать самой разнообразной информациейот чисел и текстов до звуковых и зрительных образов" [5]. В основу языкаположены две простые идеи:все является объектами; объекты взаимодействуют, обмениваясьсообщениями.В табл. А-1 приведены характеристики языка Smalltalk с точки зрениясеми основных элементов объектного подхода.

Множественное наследованиев принципе может быть реализовано за счет переопределения некоторыхметодов-примитивов [б].Таблица А-1. SmalltalkАбстракцииПеременные экземпляра Методыэкземпляра Переменные классаМетоды классаДа Да Да ДаИнкапсуляцияПеременных МетодовЗакрытые ОткрытыеМодульностьРазновидности модулейНетИерархииНаследование ШаблоныМетаклассыОдиночное Нет ДаТипизацияСильная типизация Полиморфизм Нет Да(одиночный)ПараллельностьМногозадачностьНепрямая (посредством классов)СохраняемостьДолгоживущие объектыНетПримерРассмотрим задачу со списком разнообразных фигур: окружностей,прямоугольников, закрашенных прямоугольников (см. аналогичную задачу вглаве 3).

В обширной библиотеке классов Smalltalk уже определены классыдля окружности и прямоугольника, поэтому решение задачи упрощается, чтоподчеркивает роль повторного использования. Однако для целей сравненияпредположим, что в нашем распоряжении есть только классы-примитивы длялиний и дуг окружности. Определим класс AShape следующим образом:Object subclass: №AShapeinstanceVariableNames: 'theCenter'classVariableNames: ' ' poolDictionaries: ' 'category: 'Appendix'initialize"Инициализировать фигуру"theCenter:= Point newsetCenter: aPoint"Задать центр фигуры"theCenter := aPointcenter"Вернуть центр фигуры"^theCenterdraw"Нарисовать фигуру"self subclassResponsibilityТеперь определим подкласс ACircle:AShane subclass: #ACircleinstanceVariableNames: 'theRadius'classVariableNames: ''poolDictionaries: ''category: 'Appendix'setRadius: anInteger"Задать радиус окружности"theRadius := aIntegerradius"Вернуть радиус окружности"^theRadiusdraw"Нарисовать окружность"| anArc index |anArc := Arc new.index := 1.[index <= 4]whileTrue:[anArccenter: theCenter radius: theRadius quadrant: index.

anArc display. index :=index + 1]Далее введем подкласс ARectangle:AShape subclass: №ARectangleinstanceVariableNaines: 'theHeight theWidth'classVariableNairies : ' 'poolDictionaries: ''category: 'Appendix'draw"Нарисовать прямоугольник"| aLine upperLeftCorner |aLine := Line new.upperLeftCorner := theCenter x - (theWidth/2)@(theCenter у - (theHeight /2)). aLine beginPoint: upperLeftCorner.aLine endPoint: upperLeftCorner x + theWidth @upperCorner y.aLine display.aLine beginPoint:: aLine endPoint.aLine endPoint: upperLeftCorner x + thewidth в(upperCorner у +theHeight). aLine display.aLine beginPoint: aLine endPoint.

aLine endPoint: upperLeftCorner x @(upperLeftCornerу+theHeight). aLine display.aLine beginPoint: aLine endPoint. aLine endPoint: upperLeftCorner. aLinedisplaysetHeight: anInteger"Задать высоту прямоугольника"theHeight := anIntegersetWidth: anInteger"Задать ширину прямоугольника"CheWidth := anIntegerheight"Вернуть высоту прямоугольника"^theHeightwidth"Вернуть ширину прямоугольника"^thewidthНаконец, подкласс ASolidRectangle опишем так:ARectangle subclass: #ASolldRectangleinstanceVariableNames: ''classVariableNames: ''poolDictionaries: ''category: 'Appendix'draw"Нарисовать сплошной прямоугольник"I upperLeftCorner lowerRightCorner Isuper draw.upperLeftCorner := theCenter x - (thewidth quo: 2) + 1 в(theCenter у - (theHeight quo: 2) + 1).

lowerRigthCorner :=upperLeftCorner x + thewidth - 1 в(upperLeftCorner у + theHeight - 1). Displayfill:(upperLeftCorner corner: lowerRightCorner)mask: Form grayСсылкиОсновными руководствами по языку Smalltalk являются книги"Smalltalk-80:The Language", Голдберг и Робсон [7]; "Smalltalk-80: The InteractiveProgramming Environment", Голдберг [8]; "Smalltalk-80: Bit of History Words ofAdvice", Kpac-нер, [9]. ЛаЛонд и Пух [10] подробно исследуют Smalltalk-80, втом числе библиотеки классов и средства разработки приложений.А.3. Object PascalПроисхождениеObject Pascal создавался сотрудниками компании Apple Computer(некоторые из которых были участниками проекта Smalltalk) совместно сНиклаусом Виртом (Niklaus Wirth), создателем языка Pascal.Непосредственным предшественником Object Pascal является Clascal(объектно-ориентированная версия Pascal для компьютера Lisa).

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6439
Авторов
на СтудИзбе
306
Средний доход
с одного платного файла
Обучение Подробнее