36632

Инкапсуляция. Уровень абстракции (программирование)

Лекция

Информатика, кибернетика и программирование

Компилируемые программы. Утверждается что известные визуальные средства разработки приложений Windows также компилируют программы однако это не совсем верно в действительности происходит компиляция только части программы и последующая компоновка программыинтерпретатора и Ркода в исполняемый модуль. Например Delphi не использует ни интерпретатор ни Ркод и создаёт действительно откомпилированные программы готовые для использования. Поэтому программы Delphi быстры и могут могут поставляться в виде единственного используемого модуля...

Русский

2013-09-23

425 KB

8 чел.

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

При создании программных объектов подобные ситуации можно моделировать, связывая со свойствами необходимые методы. Понятие ИНКАПСУЛЯЦИИ соответствует этому механизму.

Классическое правило ООП утверждает, что для обеспечения надёжности нежелателен прямой доступ к полям объекта: чтение и обновление их содержимого должно производиться посредством вызова соответствующих методов ‒ это правило и называется ИНКАПСУЛЯЦИЕЙ.

В старых реализациях ООП (например, в Turbo Pascal) эта мысль внедрялась только посредством призывов и примеров в документации; в языке же Object Pascal есть соответствующая конструкция. В Delphi пользователь объекта может быть полностью отгорожен от полей при помощи свойств.

Уровень абстракции (программирование)



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

Уровень абстракции ‒ способ сокрытия деталей реализации определённого множества функциональных возможностей.

Модели ПО, использующие уровни абстракции, включают модель OSI для протоколов передачи данных компьютерных сетей, библиотеку графических примитивов OpenGL, модель ввода-вывода на основе потоков байт из Unix, адаптированную MSDOS, Linux и большинством других современных ОС.

В ОС Unix большинство типов операций ввода-вывода рассматриваются как потоки байтов, считываемые или записываемые на устройство. Эта модель потока байтов используется для ввода-вывода в файл, сокет и компьютерный терминал, чтобы обеспечить независимость от устройства ввода-вывода. Для чтения и записи в устройство на уровне приложения программа вызывает функцию открытия устройства, которое может соответствовать реальному устройству, например, терминалу или виртуальному устройству, например, сетевому порту или файлу. Физические характеристики устройства передаются ОС, которая, в свою очередь, предоставляет абстрактный интерфейс, позволяющий программисту считывать и записывать байты в устройство. Операционная  затем выполняет действительное преобразование, необходимое для чтения и записи потока байтов в устройство.

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

В информатике,

УРОВЕНЬ АБСТРАКЦИИ ‒ обобщение модели алгоритма без реальной реализации.

Эти обобщения возникают из общих сходных элементов, которые лучше всего инкапсулируется моделью, выражающей сходство, присутствующее в различных конкретных реализациях. Упрощение, вносимое хорошим уровнем абстракции, позволяет с лёгкостью использовать повторно полезное понятие или метафору, при этом ситуации, когда это может быть точно применено, легко различимы.

Хорошая абстракция обобщает то, что можно сделать абстрактным; допуск специфики нарушает абстракцию и её успешное применение требует приспособления к каждому уникальному требованию или проблеме.

Часто уровни абстракции организуются в иерархию уровней абстракции.

Модель OSI содержит 7 уровней абстракции. Каждый уровень модели OSI ISO инкапсулирует и рассматривает отдельную часть требований по организации связи, сокращая таким образом сложность соответствующих инженерных решений.


3. ХАРАКТЕРНЫЕ ЧЕРТЫ СОВРЕМЕННЫХ СРЕДСТВ РАЗРАБОТКИ ПО

Современные средства разработки (Delphi, C#, etc.) обладают широким набором возможностей, начиная от проектировщика форм и заканчивая поддержкой всех форматов популярных БД. К наиболее характерным чертам можно отнести следующие:

  •  Многократно используемые и расширяемые компоненты. Устраняется необходимость программировать такие компоненты Windows общего назначения как метки, пиктограммы и даже диалоговые панели. Всё это и множество других многократно используемых компонентов предлагаются оболочкой, что позволяет экономить усилия при разработке приложений. Можно приспособить компоненты к имеющейся задаче, чтобы они работали именно так, как требуется разработчику. В оболочках имеются многочисленные визуальные и невизуальные объекты, включая кнопки, объекты с данными, меню и уже построенные диалоговые панели. С помощью этих объектов можно, например, обеспечить вывод данных просто несколькими нажатиями кнопок мыши, не прибегая к программированию.
  •  Поддержка стандарта VBX. Даёт возможность интегрировать VBX-объекты непосредственно в Палитру компонентов (Component Palette) для облегчения доступа к этим объектам и инструментам.

VBX (Visual Basic eXtension) – расширение Visual Basic. Visual Basic Controlэлемент управления Visual Basic фрагмент исполнимого кода, который соответствует стандарту интерфейса Microsoft Visual Basic, Visual Basic Extension управляющие элементы для использования в среде Visual Basic (16-битные DLL, не поддерживаемые 32-битными приложениями).

  •  Шаблоны приложений и форм. Предоставляются встроенные шаблоны форм и приложений, которые можно использовать для того, чтобы быстро начать разработку собственных прикладных программ. В систему также включены часто используемые диалоговые панели.
  •  Настройка среды разработки. Палитра компонентов, редактор кода, шаблоны приложений и форм – примеры областей, где оболочка может быть полностью настроена в соответствии с пожеланиями программиста.
  •  Компилируемые программы. Утверждается, что известные визуальные средства разработки приложений Windows также "компилируют" программы, однако, это не совсем верно, в действительности происходит компиляция только части программы и последующая компоновка программы-интерпретатора и Р-кода в исполняемый модуль. Например,  Delphi не использует ни интерпретатор, ни Р-код и создаёт действительно откомпилированные программы, готовые для использования. Поэтому программы Delphi быстры и могут могут поставляться в виде единственного используемого модуля без дополнительных библиотек DLL, необходимых при использовании иных средств разработки.

Pseudocode = p-code, = pseudo code – псевдокод язык, напоминающий язык программирования и используемый для описания структуры программы.

  •  Широкие возможности доступа к данным. Например, в Delphi встроен BDE (Borland Database Engine) – механизм работы с БД. BDE является тщательно продуманной системой, результатом развития ODAPI и IDAPI. BDE в настоящее время является стандартным промежуточным слоем, используемым для доступа ко всем популярным форматам БД. BDE также используется системами "клиент/сервер" и обеспечивает доступ к таким продуктам, как: Sybase SQL Server, Microsoft SQL Server, Oracle и Borland InterBase. Разработчики утверждают, что BDE просто блещет на фоне ODBC – продукта Microsoft, обеспечивая существенный выигрыш в производительности, за счёт более тесной связи с форматами данных.
  •  Возможность включения ассемблерных вставок.

Для полной ясности дадим расшифровку некоторых определений и сокращений:

Компиляция – трансляция, преобразование программы из описания на входном языке (языке программирования) в её представление на выходном языке (в машинных кодах).

API (Application Programming Interface / Интерфейс прикладного программирования) – набор стандартных программных прерываний, вызовов процедур (методов) и форматов данных, которые должны использовать прикладные программы для запроса и получения от ОС, телекоммуникационного протокола или программного интерфейса (механизма) связанного с ними обслуживания.

API определяет на уровне исходного текста некоторый уровень абстракции, который позволяет переносить исходные тексты программ на ЭВМ с отличающимися процессорами, где они после перекомпиляции смогут сразу выполняться.

BDE (Borland Database Engine) – механизм баз данных фирмы Borland , механизм BDE.

DLL (Dynamic Link Library / Динамически подключаемая библиотека) – библиотека динамической компоновки (связей) в Windows и OS/2 файл с расширением .DLL, содержащий библиотеку многократно исполняемых модулей (объектов, процедур), компоновка с которыми выполняется не до загрузки, а при появлении ссылки на модуль во время исполнения программы. Это уменьшает размеры программ и позволяет вносить изменения только в один DLL-файл, а не отдельно в каждую программу, в которой он используется. Однако, при этом возникает проблема совместимости DLL разных версий, т.к. они могут не обладать обратной совместимостью. Начиная с Windows-2000, эта проблема решается за счёт возможности хранения различных версий компонентов DLL.

IDAPI (Integrated Database API / Интегрированный API доступа к базам данных) – интерфейс IDAPI интерфейсный слой между средствами разработки Borland C# и Delphi, с одной стороны, и механизмом BDE – с другой. Служит для обеспечения доступа к БД из приложений. Разработан фирмой Borland International в 1992 г. как альтернатива интерфейсу ODBC корпорации Microsoft.

ODAPI (Open Database Application Programming Interface / Открытый интерфейс прикладного программирования для доступа к базам данных) – открытый интерфейс баз данных разработан фирмой Borland International.

ODBC (Open Database Connectivity interface / Открытый интерфейс взаимодействия с базами данных) – стандартный API, разработанный Microsoft в 1991 г. Позволяет приложениям, работающим под Windows или другими ОС, общаться с различными серверами реляционных БД. Этот интерфейс поддерживает запросы на языке SQL и базируется на спецификации Call Level Interface Specification, разработанной консорциумом SQL Access Group. Служит также для ускорения разработок приложений.

SQL (Structured Query Language / Язык структурированных запросов) – непроцедурный специализированный язык программирования, используемый для работ с данными в реляционных СУБД.

VBX (Visual Basic eXtension / расширение Visual Basic) – элемент управления Visual Basic – фрагмент исполнимого кода, который соответствует стандарту интерфейса Microsoft Visual Basic.


4. МЕТОДИКА РАЗРАБОТКИ ПРОГРАММ ДЛЯ ОС СЕМЕЙСТВА WINDOWS

Без малого 3 века назад Бэн Франклин опубликовал свой "Альманах бедного Ричарда". В нём были собраны афоризмы, предназначенные служить руководством в повседневной жизни.

В настоящее время, существуют различные сборники "советов" и "рекомендаций" по различным областям жизни. Наиболее яркими примерами являются "Законы Мерфи" и "Законы Паркинсона". Также имеются различные сборники афористических высказываний в области программирования, в частности, а также вообще в области IT-технологий.

Ниже приводятся некоторые практические правила разработки программ, которые не являются абсолютными (бесспорными), но и не произвольны. За каждым из них стоят мысли и опыт.

С первого взгляда некоторые из правил могут показаться тривиальными и слишком несовершенными, чтобы им следовать, но опыт показывает, что рано или поздно от этих заблуждений избавляются. Если Вы уже занимались программированием, то для начала возьмите свои последние "ошибки" и найдите правила, которые были нарушены.

Конечно же, существуют случаи, когда программы не соответствуют стандартным правилам, как есть исключения почти к каждому правилу. Тем не менее, практический опыт покажет, что не следует нарушать правила, тщательно не проанализировав альтернативы.

Правила сгруппированы по категориям.

Перед тем, как писать программу:

  1.  Полностью определите задачу, т.е., что имеется в наличии, и что нужно в итоге получить.
  2.  Сначала подумайте, затем программируйте – прежде чем начать программировать, составьте план и разработав алгоритм.
  3.  Используйте структурный подход – работа над программой должна вестись последовательно, от определения проблемы, до чистки программы на каждом уровне и написания руководства. При структурном подходе:
  •  Программа создается уровнями, поэтапно. Разбираются только те части программы, которые имеют отношение к данному уровню, и они исчерпывающе формулируются.
  •  Вопрос о представлении данных откладывается как можно дольше, и потом его решают согласно алгоритму, конечно, насколько это возможно.
  •  Более того, когда бы программист ни задумал использовать процедуру или встроенную секцию, прежде всего решаются связи, интерфейсы (т.е. аргументы, возвращаемые значения, результаты). Ввод и вывод для процедуры оформляется до самой процедуры, так, что процедуры подстраиваются под подпрограммы, их вызывающие, но не наоборот.
  •  И что наиболее важно, это то, что на каждом шаге при структурном подходе программист должен иметь полную корректную "программу".
  1.  Избегайте других подходов.

При кодировании программы:

  1.  Составляйте программу логическими блоками – лучшие программы те, которые можно легко понять. Структурность программы всегда результат тщательного обдумывания плана.
  2.  Используйте процедуры – отличительная особенность современных средств разработки – один раз описанное действие можно применять многократно.
  3.  Избегайте необязательных "GOTO" – безусловный переход можно заменить циклами, условными предложениями и встроенными функциями. Без "GOTO" повышается структурная чёткость программы, сокращается общий размер. "GOTO" часто является причиной беспорядка в программе.
  4.  Избегайте побочных эффектов – эффект имеет место в процедуре при изменении каких-либо внешних по отношению к ней элементов. Если этот эффект не является главной целью процедуры, его называют побочным. Побочные эффекты могут быть причиной хитрых ошибок, которые чрезвычайно трудно обнаружить. Наиболее обычным источником побочных эффектов является изменение глобальных переменных, т.е. переменных, имеющих силу во всей программе. Ярким примером побочного эффекта является зацикливание.
  5.  Проверяйте текст на синтаксис сразу, а не потом – синтаксические ошибки в программе мало оправданы, т.к. в руководствах синтаксис точно определён. Исправляйте синтаксические ошибки не во время отладки, а во время кодирования. Всякий раз, когда нет уверенности в синтаксисе, заглядывайте в руководство. На это уйдёт всего несколько секунд, а постоянное обращение к руководству поможет лучше овладеть языком. Подумайте о тех часах, которые можно потратить разыскивая синтаксические ошибки.
  6.  Используйте удобные мнемонические имена – т.е. давайте переменным названия, которые отражают суть, потом будет проще разбираться.
  7.  Правильно используйте промежуточные переменные – во многих языках сложные математические вычисления могут быть закодированы в одну непрерывную последовательность действий. Для ясности часто бывает лучше разбить их на части и использовать промежуточные переменные.
  8.  Не перевычисляйте переменные в цикле – с определённой точки зрения переменные цикла могут рассматриваться как константы. Во время выполнения цикла ни значения активных переменных, ни переменных в выражении присваивания не должны изменяться, их изменение может вызвать различные ошибки, которые очень трудно исправлять.
  9.  Не перевычисляйте константы в цикле – если в цикле присваивается константе значение, помните, что она будет перевычисляться при каждом прохождении цикла. Избегайте дублирования (воспользуйтесь промежуточными переменными). Выносите повторяющиеся вычисления за пределы цикла.
  10.  Избегайте системно-зависимых особенностей – в связи с быстрыми изменениями технологии меняются компьютеры и языковые процессоры. К тому же сами программисты могут переходить на другие установки. Поэтому программист должен писать программы так, чтобы при переходе на другую машину или к другому языковому процессору ему бы не пришлось их переписывать. Для гарантии следует выбрать такое подмножество языка, которое избегает системно-зависимых особенностей и сложностей. Системно-независимая программа имеет больше шансов на "мобильность", т.е. сможет работать без предварительных изменений с другим компилятором, отличным от первоначального (так называемые кросс-платформенные приложения). Системно-зависимые особенности служат для сокращения программы и экономии времени. Конечно, программист может в каком-то частном случае использовать особенности конкретной установки, если это необходимо. В таком случае можно сказать, что, действительно, нет правил без исключений.
  11.  Избегайте хитростей – не пытайтесь по максимуму сократить программу, это может и не привести к выигрышу (временному или ресурсному), но усложнит дальнейшую работу.
  12.  Пользуйтесь отладочными средствами – в старых языках программирования (например PL1) можно было вставлять отладочные блоки в саму программу. В современных оболочках отладчики встроены и позволяют тестировать корректность работы программы в процессе разработки (например, туда ли осуществляется переход; те ли значения принимают переменные в процессе вычислений).
  13.  Никогда не предполагайте, что компьютер что-нибудь знает сам – он делает только то, что вы ему "говорите", и чем чётче будут инструкции, тем лучше он будет работать.
  14.  Используйте комментарии – форма документации, которая позволяет программисту описывать программу внутри самой программы, что облегчает отладку.
  15.  Пользуйтесь красивой печатью – т.е. пишите текст программы структурно (сверху вниз и наискосок) используя отступы для более чёткого разделения блоков.
  16.  Обеспечьте хорошую документацию – распространённые недостатки документации - это или слишком мало, или слишком много информации – документируйте так, чтобы перекрыть, но не больше, структуру программы, а также комментарии.

При работе с программой:

  1.  Перед отладкой проверьте программу – выберите примерный ввод, затем вычислите вывод, как будто вы были бы компьютером – ничего не предполагая и используя строго то, что написано. Проследите, чтобы каждый логический блок работал корректно и последовательность передачи управления между блоками была бы верной. Если программа слишком длинна или сложна, чтобы проверить её сразу целиком, то проверьте сначала наиболее крупные секции, а потом меньшие, предположив, что ранее проверенные секции корректны. При выборе примерного ввода особо проследите за тем, чтобы были включены ограничительные условия и другие особые случаи.
  2.  Не оформляйте вывод до тех пор, пока программа не заработает правильно – основное в программировании – правильная работа программы. Полное оформление вывода следует отложить до тех пор, пока не разработаны наиболее важные части программы. В деталях разработанный, умный, изящный вывод не производит впечатления, если сама программа работает неправильно. Не следует полностью оформлять вывод, если возможны изменения структуру программы.
  3.  Когда программа откорректирована, оформите вывод – часто случается так, что, когда программист заканчивает сложную программу, любой вывод ему кажется отличным. Сам программист знает, как его истолковать, но другие люди могут в нём не разобраться, как, может быть, и он сам через полгода.

Общее:

  1.  Перечитайте руководство – умный программист время от времени перечитывает руководство и иногда бывает приятно удивлён. Как правило, программист придерживается удобного подмножества языка. В результате забываются многие полезные конструкции, в которых может возникнуть необходимость.
  2.  Изучите другой язык – может какой-то другой язык более подходит к вашей задаче, если условия благоприятствуют, изучите его.
  3.  Не бойтесь начать сначала…


 

А также другие работы, которые могут Вас заинтересовать

41894. Списки. Фильтрация данных. Связывание таблиц. Лабораторные работы в MS Excel 2007 1.43 MB
  Введите таблицу приведенную на рис. Рис. Введите таблицу представленную на рис. Активизируйте лист с исходной таблицей рис.
41895. ПРИНЦИПЫ ПРОГРАММНОГО УПРАВЛЕНИЯ ЭВМ. КОМАНДЫ MS DOS 683.51 KB
  В зависимости от варианта ответа DOS реагирует на возникшую ошибку поразному: аварийное завершение выполнения программы или команды выдавшей запрос; R повтор операции; F завершение выполнения операции и возврат кода ошибки; программа продолжает выполняться. Временный приостанов выполнения команды или программы например вывода информации на экран дисплея осуществляется нажатием клавиши Puse. Общие положения Тестовые программы используются для идентификации конфигурации компьютера его системных ресурсов а также для его диагностики...
41896. Emissions of combustive-lubricating materials stocks 32.01 KB
  146; Gross emissions: M=PT103 ton yer P emission per hour P is P1 or P2 T ctive time of source which cn be clculted for litting up: T=V p103 hour yer Where p= 300 m3 hour for gs; p=30 m3 hour for petrol; p=30 m3 hour for diesel fuel Min chrcteristics of wsters ccording to prgrph 17 of the lw On wstes producer determines composition nd chrcteristics of production wstes nd degree of their dnger for environment nd mn's helth. The dnger degree is coordinted with executive uthorities. Degree of dnger is chrcterized by the clss of...
41897. ДОСЛІДЖЕННЯ ПРОГРАМНОГО СЕРЕДОВИЩА РОЗРОБКИ ТА НАЛАГОДЖЕННЯ ПРИКЛАДНОГО ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ СИСТЕМ КЕРУВАННЯ ТА ОБРОБКИ ІНФОРМАЦІЇ, ВИКОНАНИХ НА БАЗІ МІКРОПРОЦЕСОРІВ СІМЕЙСТВА MCS-51 2.48 MB
  Провести асемлеювання програми. Текст програми.1 ; надання імені vr_3 першому біту регістру RM 20H ; ; Програма ; ORG H ; адреса вектора розгалуження після початкового пуску RJMP _BEGIN ; мікропроцесора ; ORG H...
41898. ИТЕРАЦИОННЫЕ МЕТОДЫ РЕШЕНИЯ НЕЛИНЕЙНЫХ УРАВНЕНИЙ 251.24 KB
  Метод Ньютона. В качестве начального приближения здесь выбирается правый или левый конец отрезка в зависимости от того в котором выполняется достаточное условие сходимости метода Ньютона вида: Условие выполняется на обоих концах отрезка следовательно в качестве начального приближения разрешено выбрать любой из них. Рабочая формула метода Ньютона для данного уравнения запишется так: Условия выхода итерационного процесса аналогичны условиям метода простых итераций: и . Модифицированный метод Ньютона.
41899. ИТЕРАЦИОННЫЕ МЕТОДЫ РЕШЕНИЯ СИСТЕМ НЕЛИНЕЙНЫХ УРАВНЕНИЙ. МЕТОД НЬЮТОНА 213.45 KB
  Цель работы: научиться решать системы нелинейных уравнений СНУ методом простых итераций МПИ и методом Ньютона с помощью ЭВМ. Изучить МПИ и метод Ньютона для решения систем нелинейных уравнений. На конкретном примере усвоить порядок решения систем нелинейных уравнений МПИ и методом Ньютона с помощью ЭВМ. Построить рабочие формулы МПИ и метода Ньютона для численного решения системы при начальном приближении: .
41900. ИТЕРАЦИОННЫЕ МЕТОДЫ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ 244.14 KB
  Цель работы: научиться решать системы линейных алгебраических уравнений СЛАУ методом простых итераций МПИ и методом Зейделя с помощью ЭВМ. Изучить метод простых итераций и метод Зейделя для решения СЛАУ. Сравнить скорости сходимости метода простых итераций и метода Зейделя. Построить рабочие формулы МПИ и метода Зейделя для численного решения системы.
41901. Знакомство со средой разработки Oracle Application Express. Создание исходного приложения 1.09 MB
  Знакомство со средой разработки Orcle ppliction Express. Каковы основные компоненты среды разработки Orcle ppliction Express ppliction Builder – собственно среда разработки webстраниц и бизнесправил. Что такое рабочая область workspce Рабочая область workspce – это виртуальная частная база данных которая позволяет множеству пользователей работать с одной инсталляцией Orcle ppliction Express обеспечивая при этом приватность пользовательских объектов и приложений.
41902. Построение графиков в среде программирования MATLAB 354.21 KB
  Цель работы: научиться строить графики различных типов в программной среде MATLAB. Изучить основные операторы построения графиков в среде программирования MATLAB; освоить принципы построения различных типов графиков в среде программирования MATLAB.