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

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

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

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

Object Pascalизвестен с 1986 года и является первым объектно-ориентированным языкомпрограммирования, который был включен в Macintosh Programmer's Workshop(MPW), среду разработки для компьютеров Macintosh фирмы Apple. Для MPWсоздана библиотека классов, называемая МасАрр, являющаяся основой длясоздания прикладных приложений, отвечающих требованиям к интерфейсупользователя Macintosh.ОбзорШмукер (Schmucker) утверждает, что "Object Pascal - это "скелет"объектно-ориентированного языка. В нем нет методов класса, переменныхкласса, множественного наследования и метаклассов. Эти механизмыисключены специально, чтобы сделать язык простым для изученияначинающими "объектными" программистами" [II].В табл.

А-2 приведены общие характеристики Object Pascal.Таблица А-2. Object PascalАбстракцииПеременные экземпляра Методыэкземпляра Переменные классаМетоды классаДа Да Нет НетИнкапсуляцияПеременных МетодовОткрытые ОткрытыеМодульностьРазновидности модулейМодуль (unit)ИерархииНаследование ШаблоныМетаклассыОдиночное Нет НетТипизацияСильная типизацияПолиморфизмДа Да(одиночный)ПараллельностьСохраняемостьМногозадачностьДолгоживущие объектыНетНетСсылкиОсновным руководством по Object Pascal является "MPW Object PascalReference" от Apple [12].1А.4. C++ПроисхождениеЯзык программирования C++ был разработан Бьерном Страуструпом,сотрудником AT&T Bell Laboratories. Непосредственным предшественникомC++ является С with Classes, созданный тем же автором в 1980 году. Язык Сwith Classes, в свою очередь, был создан под сильным влиянием С и Simula.C++ - это в значительной степени надстройка над С.

В определенном смыслеможно назвать C++ улучшенным С, тем С, который обеспечивает контрольтипов, перегрузку функций и ряд других удобств. Но главное в том, что C++добавляет к С объектную ориентированность.Известны несколько версий C++. В версии 1.0 реализованы основныемеханизмы объектно-ориентированного программирования, такие какодиночное наследование и полиморфизм, проверка типов и перегрузкафункций. В созданной в 1989 году версии 2.0 нашли отражение многиедополнительные свойства (например, множественное наследование),возникшие на базе широкого опыта применения языка многочисленнымсообществом пользователей.

В версии 3.0 (1990) появились шаблоны(параметризованные классы) и обработка исключений. Комитет ANSI по C++(X3J16) недавно одобрил предложения по введению пространств имен (чтосоответствует нашему обозначению категорий классов) и проверки типов вовремя исполнения.Первые компиляторы C++ строились на основе препроцессора дляязыка С, названного cfront. Поскольку этот транслятор создавалпромежуточный код на С, он позволил очень быстро перенести C++практически на все UNIX-системы.

Сейчас почти на всех платформах созданы(в том числе коммерческие) "настоящие" компиляторы C++.ОбзорСтрауструп пишет: "C++ создавался с целью избавить автора и егодрузей от необходимости программировать на ассемблере, С или другихсовременных языках такого уровня. Главной задачей было придумать язык, накотором удобно писать хорошие программы и с которым программиступриятно работать.

C++ никогда не проектировался на бумаге. Егопроектирование, документирование и реализация выполнялись одновременно"[13]. C++ исправил многие недостатки С и ввел описания классов, контрольтипов, перегрузку функций, управление памятью, постоянные типы, ссылки,встраиваемые функции, производные классы и виртуальные функции [14].В последние годы этот язык стал очень популярен благодаря системеDelphi фирмы Borland. - Примеч.

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

В C++ принятоописывать интерфейсную часть классов в заголовочных файлах. Мы можемнаписать:struct point {int x;int у;};class Shape {public:Shape();void setCenter (Point p};virtual void draw() = 0;Point center 0 const;privatePoint theCenter;};class Circle : public Shape {public:Circle();void setRadius(int r);virtual void draw();int radius() const;private:int theRadius;};class Rectangle : public Shape {public:Rectangle();void setHeight(int h);void setWidth(int w);virtual void draw();int height () conat;inc width () const;private:int theHeigh;int TheWidth;};class SolidRectangle : public Rectangle {public:virtual void draw();};Определение C++ не предполагает наличия библиотеки классов. Для нашихцелей мы предположим наличие программного интерфейса Х Windows иглобальных объектов Display, window, GraphlcsContext (требуемых xlib).Теперь можно завершить разработку, написав в отдельном файле реализациюметодов, перечисленных выше:Shape::Shape(){theCenter.x = 0;theCenter.y = 0;};void Shape::getCenter(Point p){theCenter = p;};Point Shape::center() const{return theCenter;};Circle::Circle() : theRadius(0) {};void Circle: :setRadius( int r){theRadius = r;};void Circle::draw(){int x = (center ().x - theRadius);int Y = (center().у - theRadius);XDrawArc(Display, Window, GraphicsContext, X, Y,(theRadius • 2), (theRadius * 2), 0, (360 • 64));};int Circle::radius() const{return theRadius;};Rectangle::Rectangle() : theHeight(0), theWidth(0) {};void Rectangle: :setHeight( int h){theHeight = h;};void Rectangle: :setWidth( int w){theWidth = w;};void Rectangle::draw(){int X = (center().x - (theWidth / 2));int Y = (center ().у - (theHeight / 2));XDrawRectangle (Display, Window, GraphicsContext, X, Y, thewidth,theHeight);};int Rectangle: : height() const{return theHeight;};int Rectangle: : width () const{return thewidth;};void SolidRectangle::draw(){Rectangle::draw() ;int x - (centerO.x - (width() / 2));int Y - (center().y - (height() / 2));gc oldGraphicsContext = GraphicsContext;XSetForeground(Display, OraphicsContext, Gray);XDrawFilled(Display, Window, GraphicsContext, X, Y,width (), height());GraphicaContext = OldGraphicsContext;};СсылкиОсновной ссылкой по C++ является "Annotated C++ Reference Manual"Эллис и Страуструпа [15].

Кроме того, Страуструп [16] предложилуглубленный анализ языка и его использования в контексте объектноориентированного проектирования.А.5. Common Lisp Object System (CLOS)ПроисхождениеСуществуют буквально десятки диалектов языка Lisp, включаяMacLisp, Standard Lisp, SpiceLisp, S-1 Lisp, ZetaLisp, Nil, InterLisp и Scheme. Вначале 80-х годов под воздействием идей объектно-ориентированногопрограммирования возникла серия новых диалектов Lisp, многие из которыхбыли ориентированы на представление знаний. Успех в стандартизацииCommon Lisp стимулировал попытки стандартизировать объектноориентированные диалекты в 1986 году.Идея стандартизации была поддержана летней конференцией ACM поLisp и функциональному программированию 1986 года, в результате чегобыла создана специальная рабочая группа при комитете X3J13 ANSI (комитетпо стандартизации Common Lisp).

Поскольку новый диалект должен был статьнадстройкой над Common Lisp, он получил название Common Lisp ObjectSystem (Объектная система Common Lisp) или, сокращенно, - CLOS.Возглавил комитет Дэниел Бобров (Daniel Bobrow), а его членами стали СоняКин (Sonya Keene), Линда де Мичил (Linda DeMichiel), Патрик Дассад (PatrickDussud), Ричард Габриель (Richard Gabriel), Джеймс Кемпф (James Kempf),Грегор Кисазлес (Gregor Kicazles) и Дэвид Мун (David Moon).Серьезное влияние на проект CLOS оказали языки NewFlavors иCommonLoops. После двухлетней работы, в 1988 году была опубликованаполная спецификация CLOS.ОбзорКип отмечает, что в проекте CLOS ставились три основные цели.CLOS должен:• представлять собой стандартное расширение языка, включающее всенаиболее полезные свойства существующей объектно-ориентированнойпарадигмы;• обеспечить эффективный и гибкий интерфейс программиста,позволяющий реализовать большинство прикладных задач;• проектироваться как расширяемый протокол, так, чтобы можно былоизменять его поведение, тем самым стимулируя дальнейшие исследования вобласти объектно-ориентированного программирования [17].Обзор характеристик CLOS можно найти и табл.

А-4. Не поддерживаянепосредственно механизм долгоживущих объектов, CLOS имеет расширенияс протоколом метаобъектов, реализующих этот механизм [18].Таблица А-4. CLOSАбстракцииПеременные экземпляра Методыэкземпляра Переменные классаМетоды классаДа Да Да ДаИнкапсуляцияПеременных МетодовЧтение,запись,доступ ОткрытыеМодульностьРазновидности модулейПакетИерархииНаследование ШаблоныМетаклассыМножественное Нет ДаТипизацияСильная типизация Полиморфизм Возможна Да (множественный)ПараллельностьМногозадачностьДаСохраняемостьДолгоживущие объектыНетСсылкиОсновным руководством по языку CLOS является -"Common LispObject System Specification" [19].А.6.

AdaПроисхождениеМинистерство обороны США, возможно, самый крупный в мирепользователь компьютеров. В середине 70-х годов программные разработкиэтого департамента достигли критической точки: проекты выходили извременных и бюджетных рамок, а заданных характеристик достичь неудавалось. Стало очевидно, что дальше ситуация только ухудшится,стоимость разработки программных систем взлетит еще выше, а потребность впрограммах будет расти экспоненциально. Для решения всех этих проблем,отягощенных вдобавок наличием сотен языков программирования,министерство обороны профинансировало проект создания единого общегоязыка высокого уровня.

В некотором смысле Ada является одним из первыхязыков программирования, выпущенных промышленным способом. Исходныетребования были сформулированы в 1975 году (Steelman) и реализованы в1978 году. Был объявлен международный конкурс, на который откликнулось17 участников. Это число затем было сокращено до четырех, затем до двух, инаконец до одного; при этом в проектировании и испытаниях участвовалисотни ученых по всему миру.Проект-победитель вначале носил условное наименование Green (вконкурсе проект имел зеленый кодовый знак); позднее он получил имя Ada вчесть Ады Августы графини Лавлейс (Ada Augusta Lovelace), которая былаудостоена этой чести за свои соображения о потенциальных возможностяхкомпьютеров. Основным разработчиком языка был Жан Икбьян (Jean Ichbian)из Франции.

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

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

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