УРОК 4

Языки программирования.

При разработке компьютерной модели после составления ал­горитма следует написание программы. Для этого используется какой-либо язык программирования.

История возникновения систем программирования.

История программ начина­ется с далеких 20-х годов 19 века, когда английский исследователь Ч. Бэбидж выдвинул идею о предварительной записи действий вычислительной машины.

До появления вычислительных машин делались попытки управлять ткацкими станками. Программы для станков записывались на перфокарты, которые были придуманы Чарлзом Бэбиджем и французским изобретателем Жозефом Жаккаром. С этих первых программ началась история программирования, несколько позднее стали закладываться теоретические основы этой науки. Вместе с Бэбиджем работала его современница Ада Лавлейс (дочь великого английского поэта Джорджа Байрона), которую называют первым в мире программистом. Она ввела в науку о програм­мировании термины и понятия, которые применяются и по сей день (например, понятие цикла – важнейшей структуры любого современного языка программирования).

В 20 веке появились электронные вычислительные машины. Первые про­граммы, которые составлялись для них, записывались в машинных кодах. Про­граммист, чтобы написать правильную программу, должен был в деталях представлять себе работу ЭВМ. Это сильно затрудняло общение человека с компьютером, поэтому программисты стали серьезно задумываться над коди­рованием программ. Они пришли к выводу, что программа должна состав­ляться на языке, более доступном человеку, чем язык машинных команд. Возникла необходимость в создании языков программирования.

Язык программирования – это искусственный язык для написания команд, выполняемых вычислительной машиной. Язык программирования состоит из фиксированного словаря и совокупности правил (синтаксиса) написания команд.

Все множество языков программирования можно разделить на две группы: языки низкого уровня и языки высокого уровня.

Языки, близкие к числовому ко­ду процессора, называют языками низкого уровня, а языки, удобные для че­ловека, - языками высокого уровня.

Язык самого низкого уровня - язык машин­ного кодирования. К языкам низкого уровня также относятся языки ассемблера (от англ. to assemble — собирать, компоновать). В языке ассемблера используются символьные обозначения команд, которые легко понятны и быстро запоминаются. Вместо последовательности двоичных кодов команд записываются их символьные обозначе­ния, а вместо двоичных адресов данных, используемых при вы­полнении команды, — символьные имена этих данных, выбранные программистом. Иногда язык ассемблера называют мнемокодом или автокодом.

Все прочие языки про­граммирования являются языками более высокого уровня, чем язык Ассембле­ра. Языки высокого уровня стали появляться уже с середины 50-х годов. Одним из первых языков такого типа стал язык Форт­ран (англ. FORTRAN от FORmula TRANslator — переводчик фор­мул). Так же, как и первые вычислительные машины, этот язык предназначался, в основном, для проведения естественнонаучных и математичес­ких расчетов. В усовершенствованном виде этот язык сохранил­ся до настоящего времени. Среди современных языков высокого уровня он является одним из наиболее используемых при про­ведении научных исследований.

После Фортрана в 1957 году появился язык Алгол (англ. ALGOL от ALGOrithmic Language — алгоритмический язык). Этот язык так же, как и Фортран, предназначался для решения науч­но-технических задач. Кроме того, этот язык применялся как средство обучения основам программирования.

В гг. был разработан язык Кобол (англ. COBOL от СОттоп Business Oriented Language – общий язык, ориенти­рованный на бизнес). Этот язык предназначался для решения экономических задач, обработки данных для банков, страховых компаний и других учреждений подобного рода.

Почти одновременно с Коболом ( гг.) в Массачусетском технологическом институте был создан язык Лисп (англ. LISP от LISt Processing – обработка списков). Этот язык широ­ко используется для обработки символьной информации и при­меняется для создания программного обеспечения, имитирующего деятельность человеческого мозга.

В середине 60-х годов (1966г.) в Дартмутском колледже (США) был создан язык Бейсик (англ. BASIC от Beginner's All-purpose Symbolic Instruction Code — всецелевой символический код инструкций для начинающих). В основу Бейсика был положен язык Фортран.

В конце 60-х – начале 70-х гг. появился язык Форт (англ. FOURTH* — четвертый). Этот язык стал применяться в задачах управления различными системами после того, как его автор Чарльз Мур написал на нем программу, предназначенную для управления радиотелескопом Аризонской обсерватории.

Появившийся в 1971 году язык Паскаль был назван так в честь великого французского математика XVII века, изобрета­теля первой в мире арифметической машины Блеза Паскаля. Этот язык был создан швейцарским ученым, специалистом в области информатики Никлаусом Виртом как язык для обу­чения методам программирования.

НЕ нашли? Не то? Что вы ищете?

На основе языка Паскаль в конце 70-х гг. был создан язык Ада, названный в честь одаренного математика Ады Лавлейс (дочери поэта Байрона). Именно она в 1843 году смогла объяснить миру возможности Аналитичес­кой машины Чарльза Бэббиджа. Язык Ада был разработан по заказу Министерства обороны США и первоначаль­но предназначался для решения задач управления космически­ми полетами. Этот язык применяется в задачах управления бор­товыми системами космических кораблей, системами обеспечения жизнедеятельности космонавтов в полете, сложными технологи­ческими процессами.

В настоящее время популярным среди программистов явля­ется язык Си (С – буква английского алфавита), созданный в 1972 году Деннисом Ритчи. Первоначально язык Си предназ­начался для написания программ операционной системы UNIX. И операционная система UNIX, и ее прикладные программы на­писаны на языке Си.

Еще один язык был со­здан в начале 70-х гг. группой специалистов Марсельского уни­верситета. Это язык Пролог. Свое название он получил от слов «Программирование на языке ЛОГики». В основе этого языка лежат законы математической логики. Как и язык Лисп, Пролог применяется, в основном, при проведении исследований в области программной имитации деятельности мозга человека. В отличие от описанных выше языков, этот язык не является алгоритмическим. Он относится к так называемым дескриптив­ным (от англ. descriptive — описательный) — описательным языкам. Дескриптивный язык не требует от программиста раз­работки всех этапов выполнения задачи.

В последние десятилетия в программировании возник и полу­чил существенное развитие объектно-ориентированный под­ход. Это метод программирования, имитирующий реальную кар­тину мира: информация, используемая для решения задачи, представляется в виде множества взаимодействующих объектов. Каждый из объектов имеет свои свойства и способы поведения. Взаимодействие объектов осуществляется при помощи передачи сообщений: каждый объект может получать сообщения от дру­гих объектов, запоминать информацию и обрабатывать ее опреде­ленным способом и, в свою очередь, посылать сообщения. Так же, как и в реальном мире, объекты хранят свои свойства и пове­дение вместе, наследуя часть из них от родительских объектов.

Объектно-ориентированная идеология используется практичес­ки во всех современных программных продуктах, включая опе­рационные системы.

Первый объектно-ориентированный язык Simula-67 был со­здан как средство моделирования работы различных приборов и механизмов. Большинство современных языков программиро­вания — объектно-ориентированные. Среди них последние вер­сии языка Turbo Pascal, C++, Ada и др. В настоящее время ши­роко используются системы визуального программирования Visual Basic, Visual C++, Delphi и др. Они позволяют создавать сложные прикладные пакеты, обладающие простым и удобным пользовательским интерфейсом.

Понятие программы

Процесс работы компьютера заключается в выполнении программы, т. е. выполнении набора вполне определенных команд во вполне опреде­ленном порядке.

Программа – (от греч. προ — пред, греч. γράμμα — запись) термин, в переводе означающий «предписание», то есть предварительное описание предстоящих событий или действий.

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

Программа – один из компонентов программного обеспечения. Другие определения программы:

Программа – данные, предназначенные для управления конкретными компонентами системы обработки информации в целях реализации определённого алгоритма.

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

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

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

Процесс разработки программного обеспечения состоит из нескольких этапов, из которых в узком смысле лишь непосредственное создание программного кода носит название «программирование». В быту под программированием часто подразумевается весь процесс разработки ПО, а людей, занимающихся этим видом деятельности, называют программистами.

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

Интегрированная среда программирования

Современные языки программирования – это не только язык программиро­вания. Языки программирования как программные продукты комплектуются инструментами для создания программ. Такой комп­лект называется интегрированной средой программирования. Он предназначен не только для облегчения процесса составления программ, но и для профес­сиональной разработки приложений. В состав интегрированной среды програм­мирования входят, как правило, следующие компоненты:

–  текстовый редактор – это программа, позволяющая создавать, изменять и обрабатывать исходные тексты программ на языках высокого уровня.

–  язык программирования с компилятором;

–  компоновщик предназначен для связывания между собой объектных файлов, порождаемых компилятором, а также файлов библиотек, входящих в состав системы программирования;

–  система устранения синтаксических ошибок; пошаговый отладчик;

–  библиотека готовых к использованию программных модулей;

–  справочная система по вопросам разработки программ в данной среде.

Примерами интегрированных сред программирования являются Turbo Pascal, Delphi, Visual Basic и множество других. Использование этих сред при разработке приложений позволяет пользователям прикладывать гораздо меньше усилий, чем при написании программ с помощью языков более низкого уровня.

Создание программы начинается с составления алгоритма, ориентирован­ного на определенную среду программирования. Алгоритм перекладывается на язык программы и вводится с клавиатуры в окне текстового редактора. После того как вы набрали с клавиатуры текст и исправили в нем ошибки, нужно отправить программу «на тестирование». При этом автоматически будет запущено еще одно средство из состава среды программирования - это отладчик (по-английски - debugger). Отладчик проверит текст с точки зрения синтаксиса, предложит вам исправить найденные ошибки. Программист с помощью отладчика может также просмотреть и изменить содержимое ячеек памяти компьютера.

Отлаженную программу можно запускать на исполнение. Переводом текста программы на машинный язык займется известное уже вам средство - транслятор. Ему будет помогать компоновщик (linker), задачей которого явля­ется поиск и компоновка разрозненных модулей и библиотек, которые необходимы для исполнения программы.

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

Структура современной системы программирования

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

На рисунке приведена общая структура современной системы программирова­ния. На ней выделены все основные составляющие современной системы про­граммирования и их взаимосвязь. Отдельные составляющие разбиты по группам в соответствии с этапами развития средств разработки. Эти группы отражают все этапы развития от отдельных программных компонентов до цельной систе­мы программирования.

Компиляторы и интерпретаторы

Компьютер понимает только машинные коды (т. е. код команды, состоящий из нулей и единиц), которые указывают, какое именно действие должен выполнить ЦП.

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

Поскольку компьютеры не умеют понимать ничего другого, кроме кодов машинных команд, то возникла необходимость в появлении «переводчиков» с различных языков программирования на язык машинных кодов. Такими переводчиками и стали трансляторы. Кстати, и само слово «транслятор» в переводе с английского означает не что иное, как «переводчик». Транс­ляторы бывают двух видов: компиляторы и интерпретаторы.

Компилятор эта программа, предназначенная для перевода программы, написанной на каком-либо языке, в программу в ма­шинных кодах. Процесс такого перевода называется компиля­цией.

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

Существует другой способ сочетания процессов трансляции и выполнения программы. Суть процесса состоит в следующем. Вначале перево­дится в машинные коды, а затем выполняется первая строка про­граммы. Когда выполнение первой строки окончено, начинается перевод второй строки, которая затем выполняется, и т. д. Такой процесс называется интерпретацией. Управ­ляет процессом интерпретации программа-интерпретатор.

Интерпретатор это программа, предназначенная для пост­рочных трансляции и выполнения исходной программы.

В процесс трансляции входит проверка исходной программы на соответствие правилам используемого в ней языка. Если в про­грамме обнаружены ошибки, транслятор выводит сообщение о них на устройство вывода (обычно, на экран дисплея). Интерпретатор сообщает о найденных им ошибках после трансляции каждой строки программы. Это значительно облег­чает процесс поиска и исправления ошибок в программе, однако существенно увеличивает время трансляции. Компилятор транс­лирует программу намного быстрее, чем интерпретатор, но сооб­щает о найденных им ошибках после завершения компиляции всей программы. Найти и исправить ошибки в этом случае труд­нее. Поэтому интерпретаторы рассчитаны, в основном, на языки, предназначенные для обучения программированию, и использу­ются начинающими программистами. Большинство современных языков предназначены для разработки сложных пакетов про­грамм и рассчитаны на компиляцию.

Иногда один и тот же язык может использовать и компиля­тор, и интерпретатор. Как правило, программы-компиляторы и интерпретаторы на­зываются так же, как и языки, для перевода с которых они пред­назначены.

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

Таким образом, компиляторы – более эффективные переводчики про­грамм. Поэтому все прикладные и служебные программы поставляются в от­компилированном виде.

В случаях, когда время исполнения программы не слишком критично, например, при обучении или решении частных задач, удобно использовать интерпретируемый язык. Простейший и наиболее распространенный из них – это язык программирования Basic. Другими примерами являются интерпре­тируемые языки JavaScript и VBScript, которые широко используются при создании Web-страниц, доступных через Интернет.

Алфавит и синтаксис языка программирования

Пользователь может легко работать с языками программирования высо­кого уровня благодаря тому, что они напоминают естественные языки общения. Во-первых, в языках программирования используется почти тот же алфавит, например, латинские буквы a, b... z и арабские цифры 0,1А во-вторых, многие слова выглядят, как команды, отдаваемые машине: PRINT («печатай»), DO («сделай»), READ («читай»), INPUT («введи») и т. д. Отличие языков программирования от естественного языка заключается в том, что количество возможных слов значительно меньше, чем в естественном языке, и слова могут употребляться лишь в определенной форме, порядке и в определенных сочетаниях.

Таким образом, языки программирования имеют свой алфавит и фиксированный словарь, а также определенные правила (синтаксис), которые используются при написании команд. Алфавит составляется обычно из латинских букв, например, в Бейсике все буквы пишутся, как прописные (A, B...Z), а в Паскале возможно использование как строчных (a. b...z), так и прописных букв. В алфавит обязательно входят цифры 0, 1, ..., 9, знаки арифметических операций (+, - и др.), знаки логических операций (not, and, or и др.), знаки операций сравнения (=,<,> и др.), а также специальные символы (скобки, разделители и т. д.).

Синтаксис - это система правил, по которым из символов образуются конструкции языка программирования.

Семантика (в программировании) – система правил определения поведения отдельных языковых конструкций.

Семантика определяет смысловое значение предложений алгоритмического языка.

Само слово синтаксис происходит от греческого δυνταζιζ (строение) и обозначает правила построения компонентов языка: слов, операторов, команд. Так, символы в слове нельзя опускать или менять местами. Если написать служебное слово begin как begn или beign, это будет считаться ошибкой.

Программы и события

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

Этот подход хорошо подходит для простых задач, где последовательность операций известна заранее. Однако, в некоторых задачах порядок действий определяется пользователем, другими программами или поступлением новых данных из другого источника (например, из сети), поэтому классическая схема не работает.

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

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

На следующем рисунке показана схема работы программы, основанной на событиях:

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

Получив сообщение от операционной системы, процедура обработки сообщений «разбирается» с ним: вызывает обработчик этого сообщения, если он существует. Если такого обработчика нет, программа никак не реагирует на полученное сообщение.

Написание программ для операционной системы Windows в первые годы ее существования было довольно сложным и утомительным делом. Самое главное — очень много усилий уходило на то, чтобы написать команды для создания интерфейса с пользователем: разместить элементы в окне программы, написать и правильно оформить обработчики сообщений. То есть, значительную часть своего времени программист занимался совершенно «тупой» работой, которая почти никак не связана с решением главной задачи. Поэтому возникла естественная мысль – поручить всю рутинную работу компьютеру так, чтобы интерфейс можно было построить с помощью мыши, а человек думал главным образом о сути задачи, то есть об алгоритмах обработки информации. Такие системы получили название RAD (Rapid Application Development — быстрая разработка приложений).

Одной из первых сред быстрой разработки стала Delphi, разработанная фирмой Borland. Другая популярная система быстрой разработки — Microsoft Visual Studio для программирования на языках Visual Basic .NET, Visual C++ и Visual C#.

Разработка программы в среде RAD состоит из следующих этапов:

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

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

 

Объекты и классы

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

В конце 80-х годов XX века программирование оказалось в достаточно серьезном кризисе. Главная проблема состояла в том, что сложность программ стала «превышать возможности человеческого интеллекта». Одному человеку стало не под силу охватить разумом все аспекты сложной программы.

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

Объект — некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеет заданные значения свойств (атрибутов) и операций над ними (методов).

Если сказать проще,

Объект – совокупность (набор) свойств, методов, событий. Это значит, что объект как бы состоит из методов, свойств и событий, и они обеспечивают его полноценную работу.

Представим себе кнопку. Она обладает:

·  свойствами (цвет, текст на кнопке, шрифт текста и т. д.);

·  событиями (события пользовательского ввода, например, нажатие на кнопку);

·  методами (обеспечивающими работу кнопки, например, метод прорисовки текста, прорисовки фокуса и т. д.).

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

Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые в свою очередь определяют поведение (являются моделью) объекта. Время с момента создания объекта (конструкция) до его уничтожения (деструкция) называется временем жизни объекта.

Свойства – это какие-то данные (переменные, параметры), которые характеризуют объект, которые мы может наблюдать, (возможно) изменять, и которые влияют на состояние объекта.

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

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

Например, автомобиль реагирует на нажатие педалей, поворот руля, переключение скоростей.

Методы – это те же процедуры и функции, т. е. это то, что объект умеет делать (вычислять). Например, объект может иметь процедуру для вывода какого-то текста на экран. Эта процедура и есть метод, который принад­лежит объекту.

События - это действия, которые происходят с объектом.

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

Пример:

Объект "телефон"


Свойства:

Методы:

События:

цвет

снять трубку

звонок

размер

набрать номер

длинный гудок

расположение

передвинуть телефон

короткий гудок

вес

объем

Мы ничего не знаем о том, как устроен объект внутри. Для нас это, как говорят кибернетики, «черный ящик». Но самое главное – для того, чтобы работать с объектом, нам и не нужно знать его внутреннее устройство! Достаточно, что мы можем узнать и изменить его свойства, а также применять доступные методы управления.

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

Теперь рассмотрим работу свойств, методов и событий как единого целого. И снова для примера возьмем объект — кнопку. Такой объект должен обла­дать следующим минимальным набором.

Ø  Свойства:

•  левая позиция (X);

•  верхняя позиция (Y);

•  ширина;

•  высота;

•  заголовок;

Ø  Методы:

•  создать кнопку;

•  уничтожить кнопку;

•  нарисовать кнопку;

Ø  События:

•  кнопка нажата;

•  заголовок кнопки изменен.

Объект работает как единое целое. Например, вы изменили заголовок кнопки. Объект генерирует событие "заголовок кнопки изменен". По этому событию вызывается метод "нарисовать кнопку". Этот метод рисует кнопку в позиции, указанной в свойствах объекта, и выводит на кнопке новый текст, указанный в свойстве "заголовок".

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

Примечание

Метод для создания объекта называется конструктором (constructor). Метод для уничтожения объекта называется деструктором (destructor). Сам процесс создания объекта называется инициализацией.

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

1.  Создание кнопки с помощью вызова метода "создать кнопку".

2.  Изменение необходимых свойств.

Все. Наша кнопка готова к работе.

Объект – сложный тип данных. Это значит, что вы можете объявлять переменные типа "объект" (точно так же, как объявлялись переменные типа "число" или "строка") и обращаться к объекту через эту переменную.

На языке программирования это будет выглядеть немного сложнее:

1.  Объявить переменную типа "кнопка".

2.  В эту переменную проинициализировать объект.

3.  Изменить нужные свойства

4.  Можно использовать объект.

Классы и наследование

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

В программировании класс – это описание общих свойств и методов группы объектов. Каждый объект (экземпляр) класса обладает всеми свойствами и поддерживает все методы этого класса.

Например, класс Собака может описывать все общие свойства, присущие собакам, Жучка, бегающая во дворе, — это экземпляр или объект класса Собака.

Человек часто использует многоуровневую (иерархическую) классификацию. Например, попугай какаду относится к царству Животные, типу Хордовые, подтипу Позвоночные, классу Птицы и отряду Попугаеобразные (рисунок справа). Это значит, что Хордовые обладают всеми признаками Животных (и могут иметь свои собственные!), все Позвоночные имеют все свойства Хордовых и т. д. Можно сказать, что каждый следующий уровень наследует все признаки предыдущего (более высокого) уровня.

В программировании нет царств, отрядов, подтипов и пр., вместо них используется одно понятие класс. Но класс B может наследовать свойства другого (базового) класса A, при этом все экземпляры класса B будут иметь все свойства и поддерживать все методы базового класса A. Кроме того, объекты класса B могут иметь новые свойства и методы, которых не было в классе A.