Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 130
Текст из файла (страница 130)
Он содержит средства управления доступом к сущностям в классах, для того чтобы ограничить доступ к ннм клиентов, подклассов или их обоих. Подобно языку 5ача в языке ЕИТе1 нет явной операции удаления объектов из памяти. Пользователь может (но не обязан) определять конструкторы и деструкторы в своих классах. Все связывания сообщения с методами в языке ЕПТе1 являются динамическими. Резюме 499 1. 3.
5. 6. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Назовите три основных своиСтва 'объектно-орйентйрованных языков. В чем заключается разница между переменной класса и переменной экземпляра? Что называется замешаемым методом'? Опишите ситуацию, при которой динамическое связывание является большим преимушеством. Что такое виртуальный метод". Кратко опишите семь основных вопросов разработки обьектно-ориентированных языков, освещенных в зтой главе. Что представляет собой протокол сообщения метода? Каким образом классы языка бвайсайс могут отвечать на сообщения? Объясните, как действует следуюший ог.ератор языка Звайсайс: севсс1с <- бугае * аесопс! Что представляют собой четыре части определения класса в языке Бвайгайс? Объясните, каким образом сообшения языка 5вай!айс связываются с методами. Когда это происходит". Какая проверка типов реализована в языке Бвайсайс? Когда она происходит? Какой вид наследования поддерживает язык бвайсайс? Какие два основных действия должны выполняться при вычислениях на языке Бвайсайс? Для чего в языке бвайса18 предназначена псевдопеременная вирек? По существу, все переменные в языке Бвайса18 относятся к одному типу.
Что это за тип? Сколько параметров имеет бинарное сообшение в языке Звайсайс? Объясните правила приоритетов в выражениях на языке Явайгайс. Как можно вызвать выполнение блока на языке Звайсайс? Для чего в языке Бвайсайс предназначена псевлопеременная аехзге? В каких областях памяти могут быть размешены объекты, созданные в программе на языке С++? Как в языке С++ осушествляется удаление объектов из динамической памяти? Все ли полклассы в языке С++ являются подтипами? При каких обстоятельствах вызов метода в языке С-н.
может статически связы- ваться с методом". Какой недостаток имеет разрешение пользователю определять, какие именно метолы могут быть статически связанными'? Объясните разницу межлу двумя способами употребления зарезервированного слова ркзже се в языке С++. 500 Глава 11. Поддержка объектно-ориентированного программирования 30. 31. 32. 33. Зб. 37. 39. 40 кок Тп<)ех:= 10 с!оипсо 1 с!о яцж : яцж + 1пс)ех 3. Упражнения 27. 28.
29. 34. 35. Что прелставляет собой дружественная функция в языке С+ ? Чем отличаются друг от друга системы типов языка 1ача н языка С'+? В каких областях памяти могут размещаться объекты, созданные в программе на языке !ача? Как в языке 1ача осуществляется улаление объектов из памяти? Все ли полклассы в языке 1ача являются подтипами? При каких обстоятельствах вызов метода в языке !ача может статически связы- ваться с методом? Все ли полклассы в языке Ада 95 являются подтипамн? Как определить вызов подпрограммы на языке Ада 95, чтобы он динамически свя- зывался с определением полпрограммы? Когда принимается это решение".
Для чего предназначен раздел скеекдоп в языке Е!Йе!? Как определить свойство в языке ЕИТе1, чтобы оно было видимым для полклассов, но не лля клиентов? Что делает квалнфикатор !попе), когда ои приписывается перед свойством в языке ЕПТе1? Как удаляются из динамической памяти объекты, созданные в программе на языке ЕПТе1? Прн каких обстоятельствах вызов метода в языке ЕПТе! может статически связы- ваться с методом? Как определить подкласс в языке ЕПТе1, чтобы он стал подтипом? Напишите на языке Бвайгайг следующий цикл.
найисанйый на языке Рааса!: нЬд1е соцпс < 100 с!о Ьедйп яцп : яит с)1ч г2 * ссцпс — 1)г соцпс := сорос + 1; а Напишите на языке Бвайга)к следующий цикл йок, написанный на языке Рааса!: Напишите на языке БвайгаПс следующую конструкцию ветвления, написанную на языке Разса1; дб соипк < 10 КЬеп апяиег ;= 1 е1яе Ьедйп апянег := Ог ссцпс := 0; оп<а 4.
Напишите на языке Бвайщйс следующий цикл нМ.1е, написанный на языке С: нЬ11е (соопс < 100) ( ацгп /= (2 * ссцпс -1) г 5. Напишите на языке Пва)йайс слелуюший цикл 5ок, написанный на языке С: хок (1пс(ех = 10; 1пс)ех > 0; 1пс(ех--) вам +=1пс(ехг б.
Напишите на языке 8вай(айг следующую конструкцщо ветвления, написанную иа языке С: 1х (соцпс < 10) апвиег = 1; е1ве апвнег = соипс = 0; Напишите на языке Звайгайг пример метода, принимающего в качестве параметров четыре целых значения, среди которых первые два являются числителем и знаменателем некоторой дроби, а последние два — аналогичным образом представляют другую дробь.
Ваш метод должен возвращать объект, являющийся массивом, состоящим из двух элементов, которые представляют собой числитель и знаменательлроизведения двух заданных дробей. Сравните между собой динамическое связывание в языках Е(йе), С++, бвайщйг, Аг)а 95 и !ача. 9. Сравните между собой управление доступом к сущностям класса в языках ЕПГе), С++, Пвайщйс, Аг)а 95 и !ача. 10. Сравните между собой одиночное наследование в языках Е)йе), С++, 5вайгайг, Ада 95 и 1ача. 1!. Сравните между собой множественное наследование в языках Е_#_е! и С++. 12. Сравните множественное наследование в языке С++ с наследованием, обеспечиваемым интерфейсами в языке 1ача.
зог Глава 1 1. Поддержка объектно-ориентированного программирования л'.ФХдлн ':.'Нуг21 ВгглтВту;;втВЫФ;Юггусчват си лу н:.1~н'т111 '-л Никлаус Вирт (Н!Ывив УВИЩ Никлаус Вирт нз Швейнмрского федерального техноломческого института (ЕТН) в Цюрихе с сеРедины 1660-х годов постоянно занимается разработкой языков программирования Он покинул команду разработчиков языке АЛЛО~.-66, чтобы посвятить себя языку А1.ООМА. Он темке создавал языки Еи1ег и Р1Л60 в 1960-х годах. С тех пор он рвзработал языки Ревсв1, МаЫв, Мобн1а-2 н Оеегоп. зоз Параллельность Э та глава начинается с описания различных видов параллельности на уровне подпрограмм, модулей и операторов.
Во введении рассматриваются некоторые общие виды архитектур многопроцессорных компьютеров. Затем обсуждается параллельность на уровне модулей. Мы начнем с описания основных понятиЯ. которые следует уяснить, прежде чем переходить к обсуклению параллельности на уровне модулей, включая синхронизацию конлуренцин и синхронизацию взаимодействия. Затем описываются вопросы разработки средств поддержки параллельности в языках программирования.
Далее мы подробно обсудим на примерах программ три основных подхола к поддержке параллельности в языках: семафоры, мониторы и передачу сообщений. Применение семафоров демонстрируется примером программы на псевдоколе. Для иллюстрации применения мониторов используется пример программы на языке Сопсогтепт Рааса!, передачу сообщений показывает программа на языке Аба. Детально описываются свойства языка Ат)а, поддерживающие параллельность. К ним относятся задачи, объявления васку, операторы ааоере„операторы вв1всс, предохранители (коагт(з), операторы сте1ау и операторы секжйпасе. после обсуждения языка Ат)а дается краткое введение в новые свойства языка Ат)а 95, поддерживающие параллельность, включая защищенные молули и асинхронную передачу сообщений. В заключение приводится пример поддержки параллельности на уровне модулей в языке )ача.
ПоследниЯ раздел главы посвящен обсуждению параллельности на уровне операторов, включая краткое описание части средств поддержки параллельности в языке Н~я)тРет(оппапсе РОКТ)чАХ. 12.1. Введение Параллельность естественным образом подразделяется на уровень машинных команд (выполнение нескольких машинных команд одновременно), уровень операторов (выполнение нескольких подпрограмм одновременно) и уровень программ (выполнение нескольких программ одновременно). Поскольку с параллельностью на уровнях машинных команд и программ вопросы разработки языков программирования никак не связаны, мы не будем обсуждать их в этой главе. Здесь рассматривается параллелизм на уровнях подпрограмм и операторов, причем особое внимание уделяется уровню подпрограмм.
Параллельное выполнение программных модулей может осуществляться либо физически на отдельных процессорах, либо логически с помощью разделения времени выполнения программ в однопроцессорной компьютерной системе. На первый взгляд, параллельность кажется простым понятием, однако она ставит перед разработчиком языка программирования трудные задачи. Параллельные методы управления увеличивают гибкость программирования.