· наследование: возможность построения иерархии объектов с использованием наследования их характеристик;
· полиморфизм: задание одного имени действию, которое передается вверх и вниз по иерархии объектов, с реализацией этого действия способом, соответствующим каждому объекту в иерархии.
Инкапсуляция. В объектно-ориентированном программировании объект представляет собой запись, которая служит «оболочкой» для соединения связанных между собой данных и процедур. Другими словами, объект обладает определенными свойствами и поведением. Рассмотрим в качестве примера кнопку — типичный объект, присутствующий в интерфейсе большого количества программ. Кнопка обладает определенным поведением: она может быть нажата, после нажатия на кнопку будут происходить определенные события и т. д. Соединение таких свойств и поведения в одном объекте и называется инкапсуляцией.
Наследование. Объекты могут наследовать свойства и поведение от других объектов, которые называются «родительскими объектами». Это понятие можно хорошо проиллюстрировать опять на примере интерфейсной кнопки. Возьмем в качестве «родительского объекта» самую простую квадратную кнопку серого цвета с надписью «Кнопка», при нажатий на которую запускается определенная процедура. На основе этой кнопки можно создать множество кнопок, обладающих различными размерами, цветами и надписями. Нажатие на каждую такую кнопку будет вызывать свою особенную процедуру. Таким образом, все это множество кнопок унаследует свои свойства и поведение от «родительского объекта», простой кнопки.
Полиморфизм — это слово из греческого языка, означающее «много форм». Перечень интерфейсных кнопок различных типов (простая кнопка, радиокнопка, кнопка-переключатель и т. д.) представляет собой хороший пример полиморфизма. Каждый тип объекта в этом перечне представляет собой различный тип интерфейсной кнопки. Можно описать метод для каждой кнопки, который изобразит этот объект на экране. В терминах объектно-ориентированного программирования можно сказать, что все эти типы кнопок имеют способность изображения самих себя на экране.
Однако способ (процедура), которым каждая кнопка должна изображать себя на экране, является различным для каждого типа кнопки. Простая кнопка рисуется на экране с помощью процедуры «вывод изображения простой кнопки», радиокнопка рисуется на экране с помощью процедуры «вывод изображения радиокнопки» и т. д.
Таким образом, существует единственное для всего перечня интерфейсных кнопок действие (вывод изображения кнопки на экран), которое реализуется специфическим для каждой кнопки способом. Это и является проявлением полиморфизма.
В системах объектно-ориентированного программирования обычно используется графический интерфейс, который позволяет визуализировать процесс программирования. Появляется возможность создавать объекты, задавать им свойства и поведение с помощью мыши.
Объектно-ориентированное программирование по своей сути — это создание приложений из объектов, подобно тому, как из блоков и различных деталей строятся дома. Одни объекты приходится полностью создавать самостоятельно, тогда как другие можно позаимствовать в готовом виде из разнообразных библиотек.
Наиболее распространенными системами объектно-ориентированного визуального программирования являются Microsoft Visual Basic и Borland Delphi. Катализатором широкого распространения объектно-ориентированного программирования стала технология World Wide Web. Практически все новейшие разработки для этой системы выполняются с помощью объектно-ориентированных языков (например, языка Java).
Объект — элементарная единица в объектно-ориентированном программировании, заключающая в себе как описывающие объект данные, так и средства обработки этих данных.
Класс — обобщенное описание набора объектов, обладающих некоторыми одинаковыми методами и структурами данных.
Подкласс — более подробное описание, относящееся к какому-либо специализированному подмножеству набора объектов, описанного классом. Иногда подклассы называют также производными или дочерними классами.
Наследование — механизм автоматического включения в состав различных классов, подклассов и объектов одних и тех же методов и структур данных.
Билет № 2
Основные характеристики (разрядность, адресное пространство и др.) процессора компьютера.
Процессор компьютера предназначен для обработки информации. Каждый процессор имеет определенный набор базовых операций (команд), например, одной из таких операций является операция сложения двоичных чисел.
Технически процессор реализуется на большой интегральной схеме, структура которой постоянно усложняется, и количество функциональных элементов (типа диод или транзистор) на ней постоянно возрастает (от 30 тысяч в процессоре 8086 до 5 миллионов в процессоре Pentium II).
Важнейшей характеристикой процессора, определяющей его быстродействие, является его тактовая частота. От нее, в частности, зависит количество базовых операций, которые производит процессор в секунду. За 20 лет тактовая частота процессора увеличилась почти на два порядка от 4 МГц (процессор 8086, 1978 г.) до 300 МГц (процессор Pentium II, 1997 г.).
Другой характеристикой процессора, влияющей на его производительность, является разрядность. В общем случае производительность процессора тем выше, чем больше его разрядность. В настоящее время используются 8-, 16-, 32- и 64-разрядные процессоры, причем практически все современные программы рассчитаны на 32- и 64-разрядные процессоры.
Часто уточняют разрядность процессора и пишут, например, 16/20, что означает, что процессор имеет 16-разрядную шину данных и 20-разрядную шину адреса. Разрядность адресной шины определяет адресное пространство процессора, т. е. максимальный объем оперативной памяти, который может быть установлен в компьютере.
В первом отечественном персональном компьютере «Агат» (1985 г.) был установлен процессор, имевший разрядность 8/16, соответственно его адресное пространство составляло 64 Кб. Современный процессор Pentium II имеет разрядность 64/32, т. е. его адресное пространство составляет 4 Гб.
Производительность процессора является интегральной характеристикой, которая зависит от частоты процессора, его разрядности, а также особенностей архитектуры (наличие кэш-памяти и др.). Производительность процессора нельзя вычислить, она определяется в процессе тестирования, т. е. определения скорости выполнения процессором определенных операций в какой-либо программной среде.
Увеличение производительности процессоров может достигаться различными путями. В частности, за счет введения дополнительных базовых операций. Так, в процессорах Pentium ММХ достигается большая производительность при работе с мультимедиа-приложениями (программами для обработки графики, видео и звука).
Тип процессора | Частота (МГц) | Разрядность шины данных | Разрядность шины адреса | Адресное пространство |
8086 | 4—12 | 16 | 20 | 1Мб |
80286 | 8—20 | 16 | 24 | 16Мб |
80386 | 25—40 | 32 | 32 | 4Г6 |
80486 | 33—100 | 32 | 32 | 4Г6 |
Pentium | 75—200 | 64 | 32 | 4Г6 |
PentiumII | 200—300 | 64 | 32 | 4Г6 |
Системы программирования. Интерпретация и компиляция.
Имеются два основных подхода к реализации языков программирования: компиляция и интерпретация. Компилятор переводит программу на языке программирования в машинный код (последовательность команд и данных) конкретного компьютера, на котором будет выполняться программа.
Исполнение этого кода осуществляется под управлением операционной системы и никак не зависит от компилятора. Интерпретатор же является собственно той системой, которая исполняет программу на языке программирования.
Между этими двумя подходами имеется множество промежуточных вариантов: существуют компиляторы, которые компилируют в интерактивном режиме, во время ввода программы. Существуют интерпретаторы, которые компилируют программу в промежуточный код.
Вообще говоря, код, полученный компилятором, будет более эффективным, т. е. программа будет выполняться быстрее. Но полное время, затраченное на проектирование, ввод текста и запуск на выполнение для компилирующей системы, может быть больше, чем для интерпретирующей. Кроме того, компилятор может точно указать место лишь синтаксической ошибки; если же ошибка другого рода, то компилятор может предложить лишь сгенерированный код для определения места вероятной ошибки. Интерпретатор же покажет ошибку в исходном тексте программы.
В самом языке программирования, вообще говоря, не заложен способ его реализации, однако одни языки почти всегда компилируются, например C++, другие, например Smalltalk, почти всегда интерпретируются, Java компилируется в байт-код и затем интерпретируется.
Сейчас практически любая реализация языка представлена как среда разработки, которая включает:
1) компилятор (или интерпретатор);
2) отладчик — специальную программу, которая облегчает процесс поиска ошибок; пользуясь ею, разработчик может выполнять программу «по шагам», отслеживать изменение значений переменных в процессе выполнения и др.;
3) встроенный текстовый редактор;
4) специальные средства для просмотра структуры программы, классов, модулей и проч.;
5) библиотеку готовых модулей, классов, напри-Q для создания пользовательского интерфейса (окна, кнопки и т. д.).
В 80-е годы активно прорабатывалась идея визуального программирования, основной смысл которой состоит в том, чтобы процесс «сборки» программы осуществлялся на экране дисплея из программных конструкций — картинок. В результате появились среды разработки 4-го поколения (4GL), в которых разрабатываемый программный продукт строится из готовых крупных блоков при помощи мыши. Примерами таких сред являются: Delphi, Visual Age, Visual Java.