Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Модульне програмування

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.11.2024

  1.  Модульне програмування. Інші парадигми програмування.

С увеличением объема программы становится невозможным удерживать в памяти все детали. Естественным способом борьбы со сложностью любой задачи является ее разбиение на части. В C++ задача может быть разделена на более простые и обозримые с помощью функций, после чего программу можно рассматривать в более укрупненном виде – на уровне взаимодействия функций. Это важно, поскольку человек способен помнить ограниченное количество фактов. Использование функций является первым шагом к повышению степени абстракции программы и ведет к упрощению ее структуры.

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

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

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

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

Модульность в языке C++ поддерживается с помощью директив препроцессора, пространств имен, классов памяти, исключений и раздельной компиляции (строго говоря, раздельная компиляция не является элементом языка, а относится к его реализации).

2. Візуальні середовища розробки додатків, їх загальна характеристика, приклади візуальних середовищ.

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

  1.  быстрота разработки
  2.  лёгкость освоения
  3.  стандартизация внешнего вида программ.

Недостатки:

  1.  как правило, привязка к конкретной среде разработки связаное с проблематичностью перехода на другую среду разработки
  2.  затруднённое использование нестандартных компонентов
  3.  наличие недокументированных особенностей компонент

Список сред визуальной разработки

  1.  Sun Studio
  2.  IntelliJ IDEA
  3.  HiAsm
  4.  Eclipse
  5.  Microsoft Visual Studio
  6.  Borland Developer Studio
  7.  Borland Delphi
  8.  Borland C++ Builder
  9.  DJEM
  10.  Kylix
  11.  KDevelop
  12.  QDevelop (в связке с Qt Designer)
  13.  Qt Creator
  14.  Anjuta
  15.  VisualWorks
  16.  VisualAge for Smalltalk
  17.  Dolphin Smalltalk
  18.  Squeak
  19.  Dev-C++
  20.  SharpDevelop
  21.  Lazarus
  22.  Momentics
  23.  ГРАФИТ
  24.  NetBeans

3. Види спадкувань. Приклади.

Простое наследование

Класс, от которого произошло наследование, называется базовым или родительским (англ. base class). Классы, которые произошли от базового, называются потомками, наследниками или производными классами (англ. derived class).

В некоторых языках используются абстрактные классы. Абстрактный класс — это класс, содержащий хотя бы один абстрактный метод, он описан в программе, имеет поля, методы и не может использоваться для непосредственного создания объекта. То есть от абстрактного класса можно только наследовать. Объекты создаются только на основе производных классов, наследованных от абстрактного.

Например, абстрактным классом может быть базовый класс «сотрудник вуза», от которого наследуются классы «аспирант», «профессор» и т. д. Так как производные классы имеют общие поля и функции (например, поле «год рождения»), то эти члены класса могут быть описаны в базовом классе. В программе создаются объекты на основе классов «аспирант», «профессор», но нет смысла создавать объект на основе класса «сотрудник вуза».

Множественное наследование

При множественном наследовании у класса может быть более одного предка. В этом случае класс наследует методы всех предков. Достоинства такого подхода в большей гибкости. Множественное наследование реализовано в C++. Из других языков, предоставляющих эту возможность, можно отметить Python и Эйфель. Множественное наследование поддерживается в языке UML.

Множественное наследование — потенциальный источник ошибок, которые могут возникнуть из-за наличия одинаковых имен методов в предках. В языках, которые позиционируются как наследники C++ (Java, C# и др.), от множественного наследования было решено отказаться в пользу интерфейсов. Практически всегда можно обойтись без использования данного механизма. Однако, если такая необходимость все-таки возникла, то, для разрешения конфликтов использования наследованных методов с одинаковыми именами, возможно, например, применить операцию расширения видимости — «::» — для вызова конкретного метода конкретного родителя.

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

Большинство современных объектно-ориентированных языков программирования (C#, C++, Java, Delphi и др.) поддерживает возможность одновременно наследоваться от класса-предка и реализовать методы нескольких интерфейсов одним и тем же классом. Этот механизм позволяет во многом заменить множественное наследование — методы интерфейсов необходимо переопределять явно, что исключает ошибки при наследовании функциональности одинаковых методов различных классов-предков.

Наследование в языке C++

class A

{    

//базовый класс

};

 

class B : public A

{   

//public наследование

}

 

class C : protected A

{   

//protected наследование

}

 

class Z : private A

{   

//private наследование

}

В C++ существует три типа наследования: public, protected, private. Спецификаторы доступа членов базового класса меняются в потомках следующим образом:

при public-наследовании все спецификаторы остаются без изменения.

при protected-наследовании все спецификаторы остаются без изменения, кроме спецификатора public, который меняется на спецификатор protected (то есть public-члены базового класса в потомках становятся protected).

при private-наследовании все спецификаторы меняются на private.




1. Ромео и Джульетта 1й день Прибытие в Верону
2. ТЕМА- Психолог в школе и РАБОТА ПЕДАГОГАПСИХОЛОГА С РОДИТЕ
3. Международная конвенция о ликвидации всех форм расовой дискриминации
4. Основные направления этнопсихологических исследований
5. Сущность понятия социокультурный эталон здоровья
6. тема универсальных и специфических нравственных требований и норм поведении реализуемых в процессе обществ
7. Общие положения 1
8. Багратион, Петр Иванович
9. Изучение операций на рынке производных финансовых инструментов
10. тематический план курса История факультет искусств и инф
11. Технологический процесс ремонта тележек модели 18-100
12. Виды структурных конфигураций организационных систем
13. Начальник Госгортехнадзора России В
14. . Принятие и развитие конституций РФ и США 1
15. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата сільськогосподарських наук.6
16. реферату- Споживання та заощадженняРозділ- Макроекономіка Споживання та заощадження Зміст План
17. Перестройка случайность или закономерность
18. 1994 г НН ЕфремоваМ
19. Дети Индиго Она не только пробудила у множества людей со всех уголков планеты интерес к глубочайшим перемен
20. Искусственный интеллект