Главная » Просмотр файлов » лекции (2010) (by Ульянов Алексей_ Лихогруд Николай_ Сергеев Николай)

лекции (2010) (by Ульянов Алексей_ Лихогруд Николай_ Сергеев Николай) (1160852), страница 10

Файл №1160852 лекции (2010) (by Ульянов Алексей_ Лихогруд Николай_ Сергеев Николай) (лекции (2010) (by Ульянов Алексей_ Лихогруд Николай_ Сергеев Николай)) 10 страницалекции (2010) (by Ульянов Алексей_ Лихогруд Николай_ Сергеев Николай) (1160852) страница 102019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

В случае нисходящего метода вы начинаете созидательный процесс с программывысокого уровня и спускаетесь до подпрограмм низкого уровня. Восходящий метод работает в обратномнаправлении: вы начинаете с отдельных специальных подпрограмм, постепенно строите на их основе болеесложные конструкции и заканчиваете самым верхним уровнем программы. Специальный подход не имеетзаранее установленного метода, так сказать комбинация восходящего и нисходящего проектирования( частосводится к реализации базисной части программы, а потом к постепенному расширению еёфункциональности , сопровождается использованием «заглушек» в местах нереализованных частей)Поскольку С является структурированным языком программирования, то лучше всего он сочетается снисходящим методом проектирования.

Подход сверху вниз позволяет производить ясный, легко читаемыйпрограммный код, который в дальнейшем не вызовет трудностей и при сопровождении. К тому же данныйподход помогает прояснить и сделать понятной всю структуру программы в целом до кодирования функцийболее низкого уровня. Такой подход позволяет уменьшить потери времени, обусловленные неудачными илиошибочными начинаниями.RAD подход ( rapid проектирование ) – быстрое написание прототипа программы, для того чтобы заказчикмог оценить свой будущий проект на начальной стадии проектирования, и внести соответствующиеизменения в случае надобности.Модульная структура языка АДАБиблиотечный модуль в АДЕ это пакет, видна аналогия с Модулой – 2.Пакет - это средство, которое позволяет сгруппировать логически связанные вычислительные ресурсы ивыделить их в единый самостоятельный программный модуль.

Под вычислительными ресурсами в этомслучае подразумеваются данные (типы данных, переменные, константы...) и подпрограммы которыеманипулируют этими данными. Характерной особенностью данного подхода является разделение самогопакета на две части: спецификацию пакета и тело пакета. Причем, спецификацию имеет каждый пакет, а теломогут иметь не все пакеты.Спецификация определяет интерфейс к вычислительным ресурсам (сервисам) пакета доступным дляиспользования во внешней, по отношению к пакету, среде. Другими словами - спецификация показывает"что" доступно при использовании этого пакета.Тело является приватной частью пакета и скрывает в себе все детали реализации предоставляемых длявнешней среды ресурсов, то есть, тело хранит информацию о том "как" эти ресурсы устроены.Необходимо заметить, что разбиение пакета на спецификацию и тело не случайно, и имеет очень важноезначение. Это дает возможность по-разному взглянуть на пакет. Действительно, для использования ресурсовпакета достаточно знать только его спецификацию, в ней содержится вся необходимая информация о том какиспользовать ресурсы пакета.

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

В результате, структурноепредставление программного комплекса в виде набора взаимодействующих между собой компонентовоблегчает понимание работы комплекса в целом и, следовательно, позволяет облегчить его разработку исопровождение.Необходимо также заметить, что на этапе начального проектирования системы можно предоставлятькомпилятору только спецификации, обеспечивая детали реализации только самых необходимых элементов.Таким образом проверка корректности общей структуры проекта осуществляется на ранней стадии, когда непотрачено много усилий на разработку реализации отдельных элементов, которые позже придетсяпеределывать (что, к великому сожалению, в реальной жизни происходит достаточно часто).Общий вид:Package M is//определение(типов переменных констант заголовки процедур)End MPackage body M is//реализация процедур и функцийEnd MРассмотрим поподробнее отдельно спецификацию и реализациюСпецификация:package M istype A_String is array (Positive range <>) of Character;Pi: constant Float := 3.14;X: Integer;type A_Record isrecordLeft : Boolean;Right : Boolean;end record;-- примечательно, что дальше, для двух подпрограмм представлены только-- их спецификации, тела этих подпрограмм будут находиться в теле пакетаprocedure Insert(Item : in Integer; Success : out Boolean);function Is_Present(Item : in Integer) return Boolean;end M;Для подключения пакета используется оператор with: with <Имя пакета>.

В случаях,когда использование полной точечной нотации для доступа к ресурсам пакета обременительно, можноиспользовать инструкцию спецификатора использования контекста use. Это позволяет обращаться кресурсам которые предоставляет данный пакет без использования полной точечной нотации, так, как будтоони описаны непосредственно в этом же коде. Для обращения к функции из пакетаиспользуется оператор «.»: <имя пакета>.<имя функции>Пример:with M;procedure P isMy_Name : M.A_String;Radius : Float;Success : Boolean;beginRadius := 3.0 * M.Pi;M.Insert(4, Success);if M.Is_Present(34) then ....

. .end P;Реализация(тело пакета)Тело пакета содержит все детали реализации сервисов, указаных в спецификации пакета. Схематическимпримером тела пакета, для показанной выше спецификации, может служить:package body M istype List is array (1..10) of Integer;Storage_List : List;Upto: Integer;procedure Insert(ItemSuccessbegin. . .end Insert;: in: outInteger;Boolean) isfunction Is_Present(Item : in Integer) return Boolean isbegin. . .end Is_Present;-- действия по инициализации пакета-- это выполняется до запуска основной программы!for I in Storage_List'Range loopStorage_List(I) := 0;end loop;beginUpto := 0;end M;Все модули линейные в МОДУЛЕ - 2, но В аде могут вкладываться друг в друга, пример может быть не в тему(Головин ), но чтобы получше понять что такое вложенность рассмотрим вложенные процедуры в Паскале:procedure p1var x2, x3;procedure P2var x1endendРассказ про вложенные области видимости мы отбросим.Таким образом ещё раз повторяюсь в АДЕ пакеты могут быть вложены друг в друга.

В других лекцияхрассказывалось про существование в некоторых языках особого класса – базового абсолютно для всехклассов, то есть все классы как бы непроизвольно являются порожденными от него. В Аде аналогичнаяситуация с пакетами. в АДЕ есть пакетpacket STANDARTвсе другие пакеты вкладываются в СТАНДАРТПример вложенности в языке АДА:Standardpackage m1 ispackage m2 isend m2end m1package m3 ispackage m4 isend m4end m3Подробный рассказ об области видимости пакета оставим на лучшие времена в виду интуитивнойпонятности(область действия имени пакета начинается с объявления пакета, например, в конце Standartвидно m1, m3, m1.m2, m3.m4 точка обязательна). В виду вложенности пакетов, для вложенных пакетовсуществует также понятие вложенных областей действия. Здесь все аналогично с ситуаций вложенныхобластей видимости в С++.перегрузка функций, перегрузка операций:T operator + (T x, T y);перегрузка операций нам знакома с языка С++, важной особенностью перегрузки операций является, то чтоколичество операндов должно совпадать с количеством операндов у соответствующей операции, то есть для“+” – количество операндов всегда равно 2.в Аде:function "+" (x2 , x3:T) return T;В Аде возникает проблема перегруженных операторов и функций, которые описаны во внутренних пакетах,так как они не видны в внешних пакетах.

Вследствие этого ввели новый операторuse M;После применения этой конструкции все имена из спецификации пакета M становятся видимыми.Может возникнуть конфликт имен при описании одинаковых переменных в различных модулях. Приконфликте имен «виноваты оба», поэтому в точке начала перекрытия перекрываемые переменные содинаковым именем перестают быть видимыми.Переименование:Ада, Модула - 2 предоставляет программисту возможность осуществлять переименования. Следует заметить,что переименование иногда вызывает споры в организациях программирующих на Аде. Некоторым людямпереименование нравится, а другим - нет.

Существует несколько важных вещей, которые необходимо понять:Переименование не создает нового пространства для данных. Оно просто создает новое имя для ужеприсутствующей сущности.Не следует постоянно переименовывать одно и то же. Этим можно запутать всех, включая самогосебя.Переименование необходимо использовать для упрощения кода. Введение нового имени, в некоторыхслучаях, делает код более легко читаемым.•••Пример:withwithAda.Text_IO;Ada.Integer_Text_IO;procedure Gun_Aydin ispackage TIO renamespackage IIO renamesAda.Text_IO;Ada.Integer_Text_IO;with Graphics.Common_Display_Types;package CDT renames Graphics.Common_Display_Types;полезно при переименовании перекрывающихся имен в модулях.Лекция.

Лихогруд Н.Н.КлассыПринципиальное отличие класса от модуля заключается в том, что класс – это тип данных, а модуль нет. Но вомногих вещах они похожи.Тип Данных = Структура Данных + Множество Операций над этими даннымиВ C#, Java всё является классами или находится в классах в качестве статических челнов. Даже математическиефункции находятся в классе – System.Math. И для вызова функции cos(x) требуется написать Math.Cos(x);Наибольшее сходство между классом и модулем достигается если класс содержит только статические методыи поля.

При этом такой класс, как правило, реализуется в виде модуля.п1. Понятие членов классасинтаксис в C++.Java,C#:class Name{….Определение членов класса…..}В Си++ допускается вынесение определений, т.е. В Си++ можно члены класса лишь объявлять. В Java, C# всеопределения должны быть внутри классасинтаксис в Delphi:type T =class (наследование)обявление членов классаend;Члены класса:•••Члены-данныеЧлены-типвЧлены-функции(методы)Чем члены-функции отличаются от обычных функций?Такой функции при вызове всегда передаётся указатель «this»(в Delphi «self») на объект в памяти, от именикоторого вызывается функция.Java,C#,C++.DephpiT x;x = new T(«параметрыконструктора»);T x;T x(«параметрыконструктора»);T x = T(«параметрыконструктора»);x:TВ первой строчке определяетсяссылка на объект (выделяетсяпамять для хранения ссылки),место в динамической памятипод объект не отводится.

Вовторой непосредственноотводится место вдинамической памяти («куче»)для объекта и адресприсваивается ссылке наобъект.x – ссылка, её ещё надопроинициализировать.В этих определенияхвыделяется место не подссылку на объект, а под самобъект (не в динамическойпамяти).

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

Тип файла
PDF-файл
Размер
1,02 Mb
Тип материала
Высшее учебное заведение

Список файлов лекций

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