HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Ключевые термины</a></li>
1 <ul><li><a>Ключевые термины</a></li>
2 <li><a>ООП - это…</a><ul><li><a>Абстрактный тип данных</a></li>
2 <li><a>ООП - это…</a><ul><li><a>Абстрактный тип данных</a></li>
3 <li><a>Об объектах и классах</a></li>
3 <li><a>Об объектах и классах</a></li>
4 <li><a>Принципы</a><ul><li><a>Инкапсуляция</a></li>
4 <li><a>Принципы</a><ul><li><a>Инкапсуляция</a></li>
5 <li><a>Наследование</a></li>
5 <li><a>Наследование</a></li>
6 <li><a>Полиморфизм</a></li>
6 <li><a>Полиморфизм</a></li>
7 </ul></li>
7 </ul></li>
8 </ul></li>
8 </ul></li>
9 <li><a>Объектный тип</a></li>
9 <li><a>Объектный тип</a></li>
10 <li><a>Иерархия типов</a></li>
10 <li><a>Иерархия типов</a></li>
11 <li><a>Полиморфизм и виртуальные методы</a><ul><li><a>Статический "подход"</a></li>
11 <li><a>Полиморфизм и виртуальные методы</a><ul><li><a>Статический "подход"</a></li>
12 <li><a>Виртуальные методы</a></li>
12 <li><a>Виртуальные методы</a></li>
13 </ul></li>
13 </ul></li>
14 <li><a>Как быстро освоить направление</a></li>
14 <li><a>Как быстро освоить направление</a></li>
15 </ul><p>Pascal - один из самых известных существующих языков программирования, изучаемых в школьной программе. Это - "база", с которой рекомендуется начинать всем, кто заинтересован в разработке программного обеспечения.</p>
15 </ul><p>Pascal - один из самых известных существующих языков программирования, изучаемых в школьной программе. Это - "база", с которой рекомендуется начинать всем, кто заинтересован в разработке программного обеспечения.</p>
16 <p>Паскаль относится к нескольким классам одновременно. Он выступает в виде императивного, структурированного и компилируемого ЯП. Появился в 1970 году, но по сей день не забывается.</p>
16 <p>Паскаль относится к нескольким классам одновременно. Он выступает в виде императивного, структурированного и компилируемого ЯП. Появился в 1970 году, но по сей день не забывается.</p>
17 <p>На Pascal можно программировать, используя несколько парадигм. Одна из них - это ООП. Такой подход к написанию контента обрел огромную популярность у разработчиков. В данной статье будет рассказано более подробно об объектно-ориентированном программировании, а также об объектах и классах Паскаля.</p>
17 <p>На Pascal можно программировать, используя несколько парадигм. Одна из них - это ООП. Такой подход к написанию контента обрел огромную популярность у разработчиков. В данной статье будет рассказано более подробно об объектно-ориентированном программировании, а также об объектах и классах Паскаля.</p>
18 <h2>Ключевые термины</h2>
18 <h2>Ключевые термины</h2>
19 <p>Но перед тем, как углубленно рассматривать упомянутые компоненты и концепцию создания софта, стоит выучить базовые термины. Без них продвинуться в выбранном направлении не получится.</p>
19 <p>Но перед тем, как углубленно рассматривать упомянутые компоненты и концепцию создания софта, стоит выучить базовые термины. Без них продвинуться в выбранном направлении не получится.</p>
20 <p>Каждый разработчик, планирующий использовать в своей деятельности парадигму ООП, должен запомнить следующие понятия:</p>
20 <p>Каждый разработчик, планирующий использовать в своей деятельности парадигму ООП, должен запомнить следующие понятия:</p>
21 <ol><li>Алгоритм - инструкции и правила, которые помогают решать поставленную изначально перед программистом задачу.</li>
21 <ol><li>Алгоритм - инструкции и правила, которые помогают решать поставленную изначально перед программистом задачу.</li>
22 <li>Аргументы - значения, передаваемые в функции или существующие команды.</li>
22 <li>Аргументы - значения, передаваемые в функции или существующие команды.</li>
23 <li>Символ - единица отображения информации. Выражается одной буквенной или символьной записи.</li>
23 <li>Символ - единица отображения информации. Выражается одной буквенной или символьной записи.</li>
24 <li>Объект (Object) - комбинация связанных переменных, констант, структур информации, которые могут выбираться и обрабатываться совместно. Позже этому компоненту будет уделено больше внимания.</li>
24 <li>Объект (Object) - комбинация связанных переменных, констант, структур информации, которые могут выбираться и обрабатываться совместно. Позже этому компоненту будет уделено больше внимания.</li>
25 <li>Класс - набор связанных между собой объектов, к которых есть какие-либо общие свойства.</li>
25 <li>Класс - набор связанных между собой объектов, к которых есть какие-либо общие свойства.</li>
26 <li>Код - письменный набор инструкций, который написан с использованием правил выбранного языка разработки. Помогает формировать итоговое приложение.</li>
26 <li>Код - письменный набор инструкций, который написан с использованием правил выбранного языка разработки. Помогает формировать итоговое приложение.</li>
27 <li>Константа - значение, которое постоянно остается неизменной. Корректировке оно не подлежит даже при выполнении тех или иных команд в приложении.</li>
27 <li>Константа - значение, которое постоянно остается неизменной. Корректировке оно не подлежит даже при выполнении тех или иных команд в приложении.</li>
28 <li>Тип данных - классификация данных определенного типа.</li>
28 <li>Тип данных - классификация данных определенного типа.</li>
29 <li>Массив - группы, а также списки схожих типов значений. Они предварительно проходят процедуру группировки.</li>
29 <li>Массив - группы, а также списки схожих типов значений. Они предварительно проходят процедуру группировки.</li>
30 <li>Фреймворк - готовые блоки кода. Необходимы для того, чтобы упрощать процедуру программирования.</li>
30 <li>Фреймворк - готовые блоки кода. Необходимы для того, чтобы упрощать процедуру программирования.</li>
31 <li>Петля - носит название "цикл". Последовательность инструкций, которая выполняется в приложении раз за разом. Происходит это до тех пор, пока система не получит команду на остановку. Прекращение работы цикла также осуществляется, если достигнуто заранее установленное условие.</li>
31 <li>Петля - носит название "цикл". Последовательность инструкций, которая выполняется в приложении раз за разом. Происходит это до тех пор, пока система не получит команду на остановку. Прекращение работы цикла также осуществляется, если достигнуто заранее установленное условие.</li>
32 <li>Итерация - один проход через тот или иной набор операций, работающих с исходным кодом утилиты.</li>
32 <li>Итерация - один проход через тот или иной набор операций, работающих с исходным кодом утилиты.</li>
33 <li>Ключевое слово - специальные слова, которые зарезервированы синтаксисом языка. Нужны для того, чтобы обозначать определенные инструменты, функции и задачи.</li>
33 <li>Ключевое слово - специальные слова, которые зарезервированы синтаксисом языка. Нужны для того, чтобы обозначать определенные инструменты, функции и задачи.</li>
34 <li>Операнд - объект, которым через операторы осуществляется манипулирование.</li>
34 <li>Операнд - объект, которым через операторы осуществляется манипулирование.</li>
35 <li>Оператор - объект, умеющий управлять операндами.</li>
35 <li>Оператор - объект, умеющий управлять операндами.</li>
36 <li>Переменная - место хранения временных данных в программе. Они могут корректироваться, сохраняться, а также отображаться на экране при необходимости.</li>
36 <li>Переменная - место хранения временных данных в программе. Они могут корректироваться, сохраняться, а также отображаться на экране при необходимости.</li>
37 <li>Указатели - переменные, содержащие адреса мест в памяти.</li>
37 <li>Указатели - переменные, содержащие адреса мест в памяти.</li>
38 </ol><p>Это - "база", с которой предстоит познакомиться всем будущим разработчикам. Далее внимание будет сфокусировано на объектах и классах в Pascal. А еще - на особенностях объектно-ориентированного программирования.</p>
38 </ol><p>Это - "база", с которой предстоит познакомиться всем будущим разработчикам. Далее внимание будет сфокусировано на объектах и классах в Pascal. А еще - на особенностях объектно-ориентированного программирования.</p>
39 <h2>ООП - это…</h2>
39 <h2>ООП - это…</h2>
40 <p>Объектно-ориентированное программирование - подход к написанию контента как к моделированию информационных объектов. На основном уровне здесь будет решаться ключевая задача структурной разработки: структурирование. Этот прием позволяет улучшить управляемость самим процессом моделирования. Как следствие - способствует более грамотному и простому подходу к реализации крупных проектов.</p>
40 <p>Объектно-ориентированное программирование - подход к написанию контента как к моделированию информационных объектов. На основном уровне здесь будет решаться ключевая задача структурной разработки: структурирование. Этот прием позволяет улучшить управляемость самим процессом моделирования. Как следствие - способствует более грамотному и простому подходу к реализации крупных проектов.</p>
41 <p>В основе ООП заложено программирование "через объекты". Здесь предполагается минимизация избыточных данных и их целостность. Парадигма базируется на образах и разнообразных элементах. Логика и соответствующие связи здесь второстепенны.</p>
41 <p>В основе ООП заложено программирование "через объекты". Здесь предполагается минимизация избыточных данных и их целостность. Парадигма базируется на образах и разнообразных элементах. Логика и соответствующие связи здесь второстепенны.</p>
42 <h3>Абстрактный тип данных</h3>
42 <h3>Абстрактный тип данных</h3>
43 <p>Абстрактный тип данных в разработке программного обеспечения - одно из ключевых понятий. Абстракция предусматривает разделение и независимое рассмотрение интерфейсной составляющей и непосредственной реализации.</p>
43 <p>Абстрактный тип данных в разработке программного обеспечения - одно из ключевых понятий. Абстракция предусматривает разделение и независимое рассмотрение интерфейсной составляющей и непосредственной реализации.</p>
44 <p>Абстрактный тип данных - совокупность данных вместе с множеством операций, который можно выполнить над соответствующей информации. Пример - просмотр телевизора:</p>
44 <p>Абстрактный тип данных - совокупность данных вместе с множеством операций, который можно выполнить над соответствующей информации. Пример - просмотр телевизора:</p>
45 <ol><li>Пусть телевизор носит название модуля или объекта.</li>
45 <ol><li>Пусть телевизор носит название модуля или объекта.</li>
46 <li>Соответствующий объект обладает пользовательским интерфейсом (совокупностью кнопок), а также воспроизведением изображения и звука.</li>
46 <li>Соответствующий объект обладает пользовательским интерфейсом (совокупностью кнопок), а также воспроизведением изображения и звука.</li>
47 <li>Переключение программ осуществляется за счет нажатия на определенные "клавиши". О физических процессах, происходящих при смене канала, человек не задумывается. Об этом хорошо осведомлены специалисты.</li>
47 <li>Переключение программ осуществляется за счет нажатия на определенные "клавиши". О физических процессах, происходящих при смене канала, человек не задумывается. Об этом хорошо осведомлены специалисты.</li>
48 <li>При выборе телевизора покупателя будут интересовать параметры объекта: стоимость, качество "картинки", звук. То, что находится непосредственно внутри, особой роли для обычного клиента не играет.</li>
48 <li>При выборе телевизора покупателя будут интересовать параметры объекта: стоимость, качество "картинки", звук. То, что находится непосредственно внутри, особой роли для обычного клиента не играет.</li>
49 </ol><p>Далее пример можно расширить. Кто-то считает, что хорошо разбирается в устройстве техники. Он начинает "модернизировать" его. Это иногда приводит к локальным (промежуточным) успехам, но конечный результат почти всегда оказывается провальным. Из-за этого "потенциально нежелательные действия" приходится запрещать. В программировании это происходит за счет запрета доступа или скрытия внутренних элементов. Каждый объект получает право самостоятельного распоряжения функциями и операциями. Игнорирование соответствующего принципа приводит к нарушению всей системы. Часто влечет за собой полное разрушение приложения. Принцип абстракции обязывает применять на деле механизмы скрытия, направленные на предотвращение корректировки внутренних компонентов случайным образом.</p>
49 </ol><p>Далее пример можно расширить. Кто-то считает, что хорошо разбирается в устройстве техники. Он начинает "модернизировать" его. Это иногда приводит к локальным (промежуточным) успехам, но конечный результат почти всегда оказывается провальным. Из-за этого "потенциально нежелательные действия" приходится запрещать. В программировании это происходит за счет запрета доступа или скрытия внутренних элементов. Каждый объект получает право самостоятельного распоряжения функциями и операциями. Игнорирование соответствующего принципа приводит к нарушению всей системы. Часто влечет за собой полное разрушение приложения. Принцип абстракции обязывает применять на деле механизмы скрытия, направленные на предотвращение корректировки внутренних компонентов случайным образом.</p>
50 <h3>Об объектах и классах</h3>
50 <h3>Об объектах и классах</h3>
51 <p>В разработке базовыми блоками, если говорить об ООП, выступают объекты и классы. Первый "компонент":</p>
51 <p>В разработке базовыми блоками, если говорить об ООП, выступают объекты и классы. Первый "компонент":</p>
52 <ol><li>Может содержать нечто ощущаемое или воображаемое. То, что обладает хорошо улавливаемым поведением.</li>
52 <ol><li>Может содержать нечто ощущаемое или воображаемое. То, что обладает хорошо улавливаемым поведением.</li>
53 <li>Объект удается потрогать или увидеть.</li>
53 <li>Объект удается потрогать или увидеть.</li>
54 <li>Представлен осязаемой сущностью, которая четко проявляет собственное поведение.</li>
54 <li>Представлен осязаемой сущностью, которая четко проявляет собственное поведение.</li>
55 </ol><p>Object - часть окружающей человека реальности. Он существует во времени и пространстве. Формальное определение дать здесь трудно. Это можно сделать через определенные свойства. Objects имеют состояние, поведение, могут быть идентифицированы в системе однозначно (обладают уникальными именами).</p>
55 </ol><p>Object - часть окружающей человека реальности. Он существует во времени и пространстве. Формальное определение дать здесь трудно. Это можно сделать через определенные свойства. Objects имеют состояние, поведение, могут быть идентифицированы в системе однозначно (обладают уникальными именами).</p>
56 <p>Класс - множество объектов, обладающих общей структурой и поведением. Класс - описание (или абстракция), которая демонстрирует то, как построить уже существующую во времени и пространстве переменную соответствующего класса (object).</p>
56 <p>Класс - множество объектов, обладающих общей структурой и поведением. Класс - описание (или абстракция), которая демонстрирует то, как построить уже существующую во времени и пространстве переменную соответствующего класса (object).</p>
57 <p>В классе описывается поведение "компонентов" приложения. Тут же прописывается положенная структура. Стоит обратить внимание на несколько ключевых определений:</p>
57 <p>В классе описывается поведение "компонентов" приложения. Тут же прописывается положенная структура. Стоит обратить внимание на несколько ключевых определений:</p>
58 <ol><li>Состояние объекта. Объединяет все его поля данных и текущие значения каждого поля.</li>
58 <ol><li>Состояние объекта. Объединяет все его поля данных и текущие значения каждого поля.</li>
59 <li>Поведение - отражает динамику корректировки состояний "элемента" и его реакцию на поступающие сообщения. То, как ведет себя "компонент", а также как взаимодействует с остальными составляющими кода.</li>
59 <li>Поведение - отражает динамику корректировки состояний "элемента" и его реакцию на поступающие сообщения. То, как ведет себя "компонент", а также как взаимодействует с остальными составляющими кода.</li>
60 <li>Идентификация - это распознавание. Свойство, позволяющее определить элемент из числа других компонентов или в пределах того же класса. Происходит при помощи уникального имени (паспорта), которое устанавливается написанным контентом.</li>
60 <li>Идентификация - это распознавание. Свойство, позволяющее определить элемент из числа других компонентов или в пределах того же класса. Происходит при помощи уникального имени (паспорта), которое устанавливается написанным контентом.</li>
61 </ol><p>Объектно-ориентированная парадигма, реализовываемая в Паскале, позволяет представить приложения в виде набора определенных компонентов, которые взаимодействуют друг с другом. А классы помогают составлять описания соответствующих "элементов".</p>
61 </ol><p>Объектно-ориентированная парадигма, реализовываемая в Паскале, позволяет представить приложения в виде набора определенных компонентов, которые взаимодействуют друг с другом. А классы помогают составлять описания соответствующих "элементов".</p>
62 <h3>Принципы</h3>
62 <h3>Принципы</h3>
63 <p>В объектно-ориентированном программировании выделяют несколько ключевых принципов структурирования. Обратить внимание стоит на:</p>
63 <p>В объектно-ориентированном программировании выделяют несколько ключевых принципов структурирования. Обратить внимание стоит на:</p>
64 <ul><li>проектирование - инкапсуляцию;</li>
64 <ul><li>проектирование - инкапсуляцию;</li>
65 <li>наследование;</li>
65 <li>наследование;</li>
66 <li>полиморфизм;</li>
66 <li>полиморфизм;</li>
67 <li>передачу сообщений.</li>
67 <li>передачу сообщений.</li>
68 </ul><p>Все это требует в Паскале и иных ЯП, базирующихся на объектно-ориентированной разработке, более детального изучения.</p>
68 </ul><p>Все это требует в Паскале и иных ЯП, базирующихся на объектно-ориентированной разработке, более детального изучения.</p>
69 <h4><em>Инкапсуляция</em></h4>
69 <h4><em>Инкапсуляция</em></h4>
70 <p>Инкапсуляция - это соединение в одном объекте данных и функций, которые управляют соответствующими материалами. Доступ к некоторым электронным сведениям в пределах пакета может оказаться под запретом. Еще один вариант - ограничение.</p>
70 <p>Инкапсуляция - это соединение в одном объекте данных и функций, которые управляют соответствующими материалами. Доступ к некоторым электронным сведениям в пределах пакета может оказаться под запретом. Еще один вариант - ограничение.</p>
71 <p>Объект - это совокупность всех своих свойств, а также их текущих значений. Также характеризуется связью допустимых для задействованного объекта действий. Объединение в единое целое в одном "компоненте" как "материального", так и возможных манипуляций - это и есть инкапсуляция.</p>
71 <p>Объект - это совокупность всех своих свойств, а также их текущих значений. Также характеризуется связью допустимых для задействованного объекта действий. Объединение в единое целое в одном "компоненте" как "материального", так и возможных манипуляций - это и есть инкапсуляция.</p>
72 <p>В пределах ООП различают поля и методы. Первый компонент - это данные, второй - действующие алгоритмы.</p>
72 <p>В пределах ООП различают поля и методы. Первый компонент - это данные, второй - действующие алгоритмы.</p>
73 <p>За счет инкапсуляции удается максимально изолировать объект от внешнего окружения. Она позволяет повысить надежность создаваемого программного обеспечения. Связано это с тем, что локализованные в объекте алгоритмы будут обмениваться электронными материалами с контентом относительно небольшими объемами. Результат - замена или корректировка алгоритмов и данных, инкапсулированных в object, не влечет за собой негативных последствий для исходного кода. Инкапсуляция обеспечивает простоту обмена объектами, перенос их из одного софта в другой.</p>
73 <p>За счет инкапсуляции удается максимально изолировать объект от внешнего окружения. Она позволяет повысить надежность создаваемого программного обеспечения. Связано это с тем, что локализованные в объекте алгоритмы будут обмениваться электронными материалами с контентом относительно небольшими объемами. Результат - замена или корректировка алгоритмов и данных, инкапсулированных в object, не влечет за собой негативных последствий для исходного кода. Инкапсуляция обеспечивает простоту обмена объектами, перенос их из одного софта в другой.</p>
74 <h4><em>Наследование</em></h4>
74 <h4><em>Наследование</em></h4>
75 <p>Методология ООП предусматривает построение древа иерархии, которое будет отражать взаимосвязи между составляющими (подзадачами) приложения. Здесь осуществляется наследование свойств родительских (вышележащих) типов объектов дочерними (нижележащими).</p>
75 <p>Методология ООП предусматривает построение древа иерархии, которое будет отражать взаимосвязи между составляющими (подзадачами) приложения. Здесь осуществляется наследование свойств родительских (вышележащих) типов объектов дочерними (нижележащими).</p>
76 <p>Наследование - отношение между objects, когда один компонент будет повторять структуру и поведение другого. В жизни данная составляющая встречается повсеместно. Пример - млекопитающие и птицы. Они наследуют признаки живых организмов.</p>
76 <p>Наследование - отношение между objects, когда один компонент будет повторять структуру и поведение другого. В жизни данная составляющая встречается повсеместно. Пример - млекопитающие и птицы. Они наследуют признаки живых организмов.</p>
77 <p>У родителей обычно нет конкретного экземпляра объекта. Пример - нет живого организма, который бы сам по себе носил имя "птица" или "млекопитающее". Подобные типы носят название абстрактных.</p>
77 <p>У родителей обычно нет конкретного экземпляра объекта. Пример - нет живого организма, который бы сам по себе носил имя "птица" или "млекопитающее". Подобные типы носят название абстрактных.</p>
78 <p>Конкретные экземпляры есть у нижних уровней иерархии в ООП. Пример - это "Крокодил Гена". Он относится к классу "крокодилы". Еще один вариант - известный из мультфильмов Матроскин. Его можно отнести к классу "кошачьи".</p>
78 <p>Конкретные экземпляры есть у нижних уровней иерархии в ООП. Пример - это "Крокодил Гена". Он относится к классу "крокодилы". Еще один вариант - известный из мультфильмов Матроскин. Его можно отнести к классу "кошачьи".</p>
79 <p>Наследование позволяет:</p>
79 <p>Наследование позволяет:</p>
80 <ol><li>Применять библиотеки классов. Допускается их дальнейшее развитие в конкретной программе.</li>
80 <ol><li>Применять библиотеки классов. Допускается их дальнейшее развитие в конкретной программе.</li>
81 <li>Создавать new objects путем изменения или дополнения свойства прежних. Наследник получит все поля и методы родителя, но может предусматривать и собственные.</li>
81 <li>Создавать new objects путем изменения или дополнения свойства прежних. Наследник получит все поля и методы родителя, но может предусматривать и собственные.</li>
82 <li>Решить проблемы модификации свойств.</li>
82 <li>Решить проблемы модификации свойств.</li>
83 <li>Придает гибкость всей парадигме ООП.</li>
83 <li>Придает гибкость всей парадигме ООП.</li>
84 </ol><p>При построении нового класса, наследуя его из уже существующего класса, можно:</p>
84 </ol><p>При построении нового класса, наследуя его из уже существующего класса, можно:</p>
85 <ul><li>добавить в новый класс новые компоненты-информацию;</li>
85 <ul><li>добавить в новый класс новые компоненты-информацию;</li>
86 <li>добавить в новый класс новые функции;</li>
86 <li>добавить в новый класс новые функции;</li>
87 <li>осуществить замену в новом классе наследуемые из старого компоненты-функции.</li>
87 <li>осуществить замену в новом классе наследуемые из старого компоненты-функции.</li>
88 </ul><p>Все это значительно упрощает процедуру программирования.</p>
88 </ul><p>Все это значительно упрощает процедуру программирования.</p>
89 <h4><em>Полиморфизм</em></h4>
89 <h4><em>Полиморфизм</em></h4>
90 <p>Полиморфизм даем возможность использования одних и тех же функций для решения тех или иных задач. Выражен в том, что под одним и тем же именем скрываются разного рода действия. Их содержание напрямую зависит от типа object.</p>
90 <p>Полиморфизм даем возможность использования одних и тех же функций для решения тех или иных задач. Выражен в том, что под одним и тем же именем скрываются разного рода действия. Их содержание напрямую зависит от типа object.</p>
91 <p>Полиморфизм - свойство родственных "элементов" решать схожие по смыслу проблемы посредством самых разных способов. Пример - "бежать" могут почти все животные. Но слон, лев и черепаха делают это по-разному.</p>
91 <p>Полиморфизм - свойство родственных "элементов" решать схожие по смыслу проблемы посредством самых разных способов. Пример - "бежать" могут почти все животные. Но слон, лев и черепаха делают это по-разному.</p>
92 <p>При ООП поведенческие свойства базируются на наборе входящих методов и описания, которое когда-либо соответствующий класс выполнял. Программист сможет таким образом давать потомкам свойства и характеристики, которые отсутствовали у "родителей". Для изменения метода требуется перекрыть его в наследнике (объявить одноименный метод), а затем реализовать необходимые манипуляции.</p>
92 <p>При ООП поведенческие свойства базируются на наборе входящих методов и описания, которое когда-либо соответствующий класс выполнял. Программист сможет таким образом давать потомкам свойства и характеристики, которые отсутствовали у "родителей". Для изменения метода требуется перекрыть его в наследнике (объявить одноименный метод), а затем реализовать необходимые манипуляции.</p>
93 <p>В приведенном примере с бегом действие "бежать" - это полиморфическое действие. Многообразие форм его проявления - непосредственный полиморфизм.</p>
93 <p>В приведенном примере с бегом действие "бежать" - это полиморфическое действие. Многообразие форм его проявления - непосредственный полиморфизм.</p>
94 <h2>Объектный тип</h2>
94 <h2>Объектный тип</h2>
95 <p>Класс или объект - это структура данных содержащая в себе поля и методы. Она начинается при помощи ключа, а заканчивается оператором end. Формальный синтаксис достаточно простой - описание объектного типа осуществляется, если в описании заменить record на object или класс (class). Далее - требуется добавить объявление функций и процедур над полями:</p>
95 <p>Класс или объект - это структура данных содержащая в себе поля и методы. Она начинается при помощи ключа, а заканчивается оператором end. Формальный синтаксис достаточно простой - описание объектного типа осуществляется, если в описании заменить record на object или класс (class). Далее - требуется добавить объявление функций и процедур над полями:</p>
96 <p>В ObjectPascal есть ключевое слово class. Оно помогает описывать objects, которые заимствованы из C++:</p>
96 <p>В ObjectPascal есть ключевое слово class. Оно помогает описывать objects, которые заимствованы из C++:</p>
97 <p>У ObjectPascal существуют две модели, помогающие описывать objects. Компонент объекта - поле или метод. Поле включает в себя имя и тип данных. Метод - процедура или функция, объявленная в пределах декларации объектного типа. Сюда можно отнести особые процедуры при помощи которых создаются и уничтожаются "компоненты" программы.</p>
97 <p>У ObjectPascal существуют две модели, помогающие описывать objects. Компонент объекта - поле или метод. Поле включает в себя имя и тип данных. Метод - процедура или функция, объявленная в пределах декларации объектного типа. Сюда можно отнести особые процедуры при помощи которых создаются и уничтожаются "компоненты" программы.</p>
98 <p>Объявление метода внутри описания объектного типа включает в себя только заголовок. Это - предварительное описание подпрограммы. Тело метода приводится после объявленного объектного типа:</p>
98 <p>Объявление метода внутри описания объектного типа включает в себя только заголовок. Это - предварительное описание подпрограммы. Тело метода приводится после объявленного объектного типа:</p>
99 <p>Стоит запомнить следующее:</p>
99 <p>Стоит запомнить следующее:</p>
100 <ol><li>Тексты подпрограмм, отвечающих за реализацию методов объекта, приводятся в разделе описания процедур и функций.</li>
100 <ol><li>Тексты подпрограмм, отвечающих за реализацию методов объекта, приводятся в разделе описания процедур и функций.</li>
101 <li>Заголовки при описании реализации метода будут повторять заголовки, которые приведены в описании типа. Они дополняются именем object, которое отделяется точкой.</li>
101 <li>Заголовки при описании реализации метода будут повторять заголовки, которые приведены в описании типа. Они дополняются именем object, которое отделяется точкой.</li>
102 <li>В пределах описания методов на поля и методы соответствующего типа будет происходить ссылка просто по имени. Метод MyName из примера использует поле Name без явного указания его принадлежности к "компоненту" так, как если бы применялся неявный оператор with…do.</li>
102 <li>В пределах описания методов на поля и методы соответствующего типа будет происходить ссылка просто по имени. Метод MyName из примера использует поле Name без явного указания его принадлежности к "компоненту" так, как если бы применялся неявный оператор with…do.</li>
103 <li>Под objects можно понимать и переменные объектного типа. Они носят название экземпляров. Каждая переменная и экземпляр имеет имя и тип. Они предусматривают предварительное объявление, как и класс.</li>
103 <li>Под objects можно понимать и переменные объектного типа. Они носят название экземпляров. Каждая переменная и экземпляр имеет имя и тип. Они предусматривают предварительное объявление, как и класс.</li>
104 <li>При использовании поля данных "элемента" v1 будут применяться те же алгоритмы, что и в случае с работой с полями записи. Вызов методов экземпляра указывает на то, что соответствующий метод вызывается данными object v1. На экране появится такой результат:.</li>
104 <li>При использовании поля данных "элемента" v1 будут применяться те же алгоритмы, что и в случае с работой с полями записи. Вызов методов экземпляра указывает на то, что соответствующий метод вызывается данными object v1. На экране появится такой результат:.</li>
105 </ol><p>К полям переменных объектного типа можно обращаться при помощи уточненных идентификаторов. Еще один вариант - применение оператора with.</p>
105 </ol><p>К полям переменных объектного типа можно обращаться при помощи уточненных идентификаторов. Еще один вариант - применение оператора with.</p>
106 <h2>Иерархия типов</h2>
106 <h2>Иерархия типов</h2>
107 <p>Типы предусматривают построение в иерархию. Объект способен наследовать компоненты из другого объектного типа. Наследующий object - это потоком. Объект, которому наследуют - предок или родитель. Стоит обратить внимание на то, что наследование относится только к типам. К экземплярам никакого отношения не имеет.</p>
107 <p>Типы предусматривают построение в иерархию. Объект способен наследовать компоненты из другого объектного типа. Наследующий object - это потоком. Объект, которому наследуют - предок или родитель. Стоит обратить внимание на то, что наследование относится только к типам. К экземплярам никакого отношения не имеет.</p>
108 <p>Если был введен объектный тип (родительский), но его нужно дополнить молями или методами, нужно ввести новый тип. Он объявляется в качестве наследника (дочернего типа). Предусматривает описание полей и методов, которые считаются новыми.</p>
108 <p>Если был введен объектный тип (родительский), но его нужно дополнить молями или методами, нужно ввести новый тип. Он объявляется в качестве наследника (дочернего типа). Предусматривает описание полей и методов, которые считаются новыми.</p>
109 <p>Потомок включает в себя все поля типа предка (особенности класса). Поля и методы родителя наследнику доступны без специальных инструкций. Если в описании дочернего класса повторяются имена "родителя", то новые описания будут переопределять поля и методы "наследодателя".</p>
109 <p>Потомок включает в себя все поля типа предка (особенности класса). Поля и методы родителя наследнику доступны без специальных инструкций. Если в описании дочернего класса повторяются имена "родителя", то новые описания будут переопределять поля и методы "наследодателя".</p>
110 <p>Объектно-ориентированное программирование всегда начинается с базового класса. Это - шаблон для базового объекта. Следующий этап - определение нового класса, который носит название производного. Он выступает расширением "базы".</p>
110 <p>Объектно-ориентированное программирование всегда начинается с базового класса. Это - шаблон для базового объекта. Следующий этап - определение нового класса, который носит название производного. Он выступает расширением "базы".</p>
111 <p>Производный класс может включать в себя дополнительные методы, отсутствующие у базового. Он иногда переопределяет методы или даже полностью удаляет их. Все методы базового класса в производном не переопределяются. Сюда записывается лишь то, что является новым или откорректированным.</p>
111 <p>Производный класс может включать в себя дополнительные методы, отсутствующие у базового. Он иногда переопределяет методы или даже полностью удаляет их. Все методы базового класса в производном не переопределяются. Сюда записывается лишь то, что является новым или откорректированным.</p>
112 <p>Наследование может продолжаться. Класс, который произведен от базового, может выступать в виде "базы" для других производных. Так программы образовывают иерархии классов:</p>
112 <p>Наследование может продолжаться. Класс, который произведен от базового, может выступать в виде "базы" для других производных. Так программы образовывают иерархии классов:</p>
113 <p>Здесь стоит запомнить следующие правила:</p>
113 <p>Здесь стоит запомнить следующие правила:</p>
114 <ol><li>Информационные поля и методы родителя наследуются всеми его дочерними типами. Число промежуточных уровней иерархии не важно.</li>
114 <ol><li>Информационные поля и методы родителя наследуются всеми его дочерними типами. Число промежуточных уровней иерархии не важно.</li>
115 - <li>Доступ к полям и методам родительских типов в рамках описания наследников выполняет так, словно они описаны в дочерних типах.</li>
115 + <li>Доступ к полям и методам родительских типов в рамках описания наследников выполняет так, словно они писаны в дочерних типах.</li>
116 <li>Идентификаторы родительского класса не могут встречаться в дочерних.</li>
116 <li>Идентификаторы родительского класса не могут встречаться в дочерних.</li>
117 <li>Наследники могут доопределять произвольное количество собственных методов. Сюда же относят информационные поля.</li>
117 <li>Наследники могут доопределять произвольное количество собственных методов. Сюда же относят информационные поля.</li>
118 <li>Любые корректировки текста в родительских методах - это автоматическое влияние на все методы у наследников.</li>
118 <li>Любые корректировки текста в родительских методах - это автоматическое влияние на все методы у наследников.</li>
119 </ol><p>Также важно, что в дочерних типах идентификаторы методов могут совпадать с именами методов у "родителей". Тогда целесообразно говорить о том, что наследник перекрывает (подавляет) одноименный родительский метод.</p>
119 </ol><p>Также важно, что в дочерних типах идентификаторы методов могут совпадать с именами методов у "родителей". Тогда целесообразно говорить о том, что наследник перекрывает (подавляет) одноименный родительский метод.</p>
120 <h2>Полиморфизм и виртуальные методы</h2>
120 <h2>Полиморфизм и виртуальные методы</h2>
121 <p>Говоря о классах и objects в Паскале, стоит обратить внимание на полиморфизм и виртуальные methods. Полиморфизм - свойство родственных объектов (произошедших от одного и того же родителя) решать схожие по смыслу проблемы разного рода способами.</p>
121 <p>Говоря о классах и objects в Паскале, стоит обратить внимание на полиморфизм и виртуальные methods. Полиморфизм - свойство родственных объектов (произошедших от одного и того же родителя) решать схожие по смыслу проблемы разного рода способами.</p>
122 <p>Два и более класса, выступающие в виде производных одного и того же базового класса, носят название полиморфными. Это значит, что они могут обладать общими характеристиками. А вот свойства у таких классов различаются.</p>
122 <p>Два и более класса, выступающие в виде производных одного и того же базового класса, носят название полиморфными. Это значит, что они могут обладать общими характеристиками. А вот свойства у таких классов различаются.</p>
123 <p>В ООП поведенческие свойства объекта определяются набором включенных в его пределы методов. При помощи корректировки алгоритмов программист сможет придавать потомкам отсутствующие у родителя новые свойства.</p>
123 <p>В ООП поведенческие свойства объекта определяются набором включенных в его пределы методов. При помощи корректировки алгоритмов программист сможет придавать потомкам отсутствующие у родителя новые свойства.</p>
124 <h3>Статический "подход"</h3>
124 <h3>Статический "подход"</h3>
125 <p>Methods в программировании бывают статическими. Они включены в исходный код приложения в момент компиляции. Это указывает на то, что еще до начала работы приложения определено, какая процедура вызывается к заданной точке. Компилятор определит, какого типа объект задействован, а затем подставит соответствующий method.</p>
125 <p>Methods в программировании бывают статическими. Они включены в исходный код приложения в момент компиляции. Это указывает на то, что еще до начала работы приложения определено, какая процедура вызывается к заданной точке. Компилятор определит, какого типа объект задействован, а затем подставит соответствующий method.</p>
126 <p>Объекты разных типов могут иметь одноименные статические "приемы". Тогда method будет определен при помощи типа экземпляра объекта. Статическое перекрытие - первый шаг полиморфизма. Но одинаковые имена являются лишь удобством в разработке, а не ключевым принципом.</p>
126 <p>Объекты разных типов могут иметь одноименные статические "приемы". Тогда method будет определен при помощи типа экземпляра объекта. Статическое перекрытие - первый шаг полиморфизма. Но одинаковые имена являются лишь удобством в разработке, а не ключевым принципом.</p>
127 <h3>Виртуальные методы</h3>
127 <h3>Виртуальные методы</h3>
128 <p>Подключаются в момент выполнения программы. Позволяют определять тип и конкретизировать экземпляр объекта во время исполнения. Далее - вызывать методы этого самого объекта.</p>
128 <p>Подключаются в момент выполнения программы. Позволяют определять тип и конкретизировать экземпляр объекта во время исполнения. Далее - вызывать методы этого самого объекта.</p>
129 <p>Данный механизм является принципиально новым. Он носит название позднего связывания. Отвечает за обеспечение полиморфизма - разного способа поведения для разных, но однородных в плане наследования объектов.</p>
129 <p>Данный механизм является принципиально новым. Он носит название позднего связывания. Отвечает за обеспечение полиморфизма - разного способа поведения для разных, но однородных в плане наследования объектов.</p>
130 <p>Для того, чтобы использовать виртуальный метод, нужно использовать ключевое слово virtual:</p>
130 <p>Для того, чтобы использовать виртуальный метод, нужно использовать ключевое слово virtual:</p>
131 <p>Иерархия типов объектов предусматривает определенные ограничения, связанные с virtual methods:</p>
131 <p>Иерархия типов объектов предусматривает определенные ограничения, связанные с virtual methods:</p>
132 <ul><li>в типе потомка не получится осуществить перекрытие при помощи статического "подхода";</li>
132 <ul><li>в типе потомка не получится осуществить перекрытие при помощи статического "подхода";</li>
133 <li>объекты, которые работают с виртуальными методами, будут инициализироваться специальными процедурами - конструкторами (constructors);</li>
133 <li>объекты, которые работают с виртуальными методами, будут инициализироваться специальными процедурами - конструкторами (constructors);</li>
134 <li>списки переменных, типы функций в заголовках перекрывающих друг друга виртуальных процедур, а также функции должны полностью совпадать.</li>
134 <li>списки переменных, типы функций в заголовках перекрывающих друг друга виртуальных процедур, а также функции должны полностью совпадать.</li>
135 </ul><p>Конструктор обычно выполняет роль инициализатора объектного экземпляра. А еще - связывает virtual methods.</p>
135 </ul><p>Конструктор обычно выполняет роль инициализатора объектного экземпляра. А еще - связывает virtual methods.</p>
136 <h2>Как быстро освоить направление</h2>
136 <h2>Как быстро освоить направление</h2>
137 <p>Pascal - язык программирования, который изучается преимущественно в старших классах общеобразовательных школ. Он даст "базу", которая поможет продвинуться далее в разработке, особенно в ООП.</p>
137 <p>Pascal - язык программирования, который изучается преимущественно в старших классах общеобразовательных школ. Он даст "базу", которая поможет продвинуться далее в разработке, особенно в ООП.</p>
138 <p>Для того, чтобы быстрее и лучше разобраться в классах, а также иных компонентах Паскаля, стоит посетить дистанционные компьютерные курсы. Это - лучшее решение для тех, кто не хочет тратить много времени, денег и сил на быстрое погружение в IT и разработку программного обеспечения.</p>
138 <p>Для того, чтобы быстрее и лучше разобраться в классах, а также иных компонентах Паскаля, стоит посетить дистанционные компьютерные курсы. Это - лучшее решение для тех, кто не хочет тратить много времени, денег и сил на быстрое погружение в IT и разработку программного обеспечения.</p>
139 <p>У такого подхода к получению образования есть множество преимуществ:</p>
139 <p>У такого подхода к получению образования есть множество преимуществ:</p>
140 <ul><li>классы, methods, функции и иные компоненты выбранного ЯП будут рассмотрены с нуля;</li>
140 <ul><li>классы, methods, функции и иные компоненты выбранного ЯП будут рассмотрены с нуля;</li>
141 <li>программа рассчитана на срок до 12 месяцев;</li>
141 <li>программа рассчитана на срок до 12 месяцев;</li>
142 <li>есть разделение "по уровням" - можно выбрать курсы для начинающих или опытных разработчиков;</li>
142 <li>есть разделение "по уровням" - можно выбрать курсы для начинающих или опытных разработчиков;</li>
143 <li>гарантировано кураторство опытными специалистами;</li>
143 <li>гарантировано кураторство опытными специалистами;</li>
144 <li>пользователь сможет проходить обучение тогда, когда ему удобно;</li>
144 <li>пользователь сможет проходить обучение тогда, когда ему удобно;</li>
145 <li>теория закрепляется практикой;</li>
145 <li>теория закрепляется практикой;</li>
146 <li>помощь в сборе портфолио;</li>
146 <li>помощь в сборе портфолио;</li>
147 <li>возможность освоить сразу несколько самых перспективных направлений в IT.</li>
147 <li>возможность освоить сразу несколько самых перспективных направлений в IT.</li>
148 </ul><p>При успешном завершении курсов клиент получит электронный сертификат. Он поможет подтвердить полученные знаний документально.</p>
148 </ul><p>При успешном завершении курсов клиент получит электронный сертификат. Он поможет подтвердить полученные знаний документально.</p>
149 <p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a>Otus</a>!</em></p>
149 <p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a>Otus</a>!</em></p>
150  
150