Programming with Objects and Classes/ru

From Free Pascal wiki
Jump to navigationJump to search

English (en) français (fr) русский (ru)

Программирование с помощью объектов и классов

Краткий обзор

FPC включает в себя некоторые расширения языка в дополнение к "стандартному" синтаксису Pascal для поддержки объектно-ориентированного программирования.

Эти расширения описаны в главах документации по FPC - "Руководство по языку": http://www.freepascal.org/docs.var. Ссылки на страницы учебника для каждого понятия указаны выше. "Руководство по языку" имеет синтаксические диаграммы и другие детали, которые не включены в эту вводную статью. Из четырёх упомянутых выше особенностей языка, Objects и Classes - это базовые формы объектно-ориентированного программирования (ООП) в FPC и Lazarus. Для тех, кто не очень хорошо знаком с ООП, глава Objects включает в себя наиболее общие концепции, а глава Classes, минимизируя повторения, подчёркивает общие черты и различия с синтаксисом Objects. В общем случае Classes имеют наиболее частое применение, как у разработчиков Delphi, так и у разработчиков Lazarus. Часто слово "объект" фактически является "классом" в Classes диалекте ООП в FPC. Эти документы будут формулироваться так, чтобы минимизировать беспорядок в терминологии, но за пределами этого документа, термин "объект" часто относится к объектам-переменным, которые созданы на основе класса. Фактически FPC имеет библиотеку времени выполнения (RTL), включающую библиотеку классов основынных на классе с именем "TObject".

Пользователи, которые знакомы только с ООП TurboPascal, могут сначала пропустить главу о классах, т.к. работа собъектами основана на на диалекте старого Turbo Pascal. Глава о классах заинтересует пользователей Delphi, т.к. основана на синтаксисе Delphi. Часть из того, что написано в главе Classes может отсылать к понятиям из главы Objects. Для разработчиков Макинтош, знакомых с различными вариантами Apple, THINK и диалектами MPW Object Pascal, ничто из FPC объектов или классов не обеспечит прямой путь миграции. На март 2009 года, велись дискуссии в списке рассылок Mac Pascal об оказании некоторой поддержки компилятором (новый синтаксис) для доступа к рабочей среде Apple's Objective C / Cocoa.

Основные понятия

ООП обеспечивает различные пути управления и инкапсуляции данных, и управление процессом выполнения программы по сравнению с другими доступными особенностями и конструкциями языка. ООП часто заявляет себя при разработке определённых частей программ таких как Графический Интерфейс Пользователя (GUI) и работы с ситемами в более естественном виде. Однако ООП не является оптимальным для всех приложений. Контроль за программой не является столь уж явным, по сравнению с процедурными конструкциями "стандартного" Pascal. Чтобы получить наибольшую выгоду от ООП, нужно изучить довольно большие библиотеки классов, что может повлечь за собой крутой подъём в обучении. У ООП, при поддержки большого объёма кода программ, есть как свои преимущества, так и свои недостатки по сравнению с процедурным кодом. Есть много источников для изучения объектноориентированного анализа, разработки и методик программирования, которые лежат вне области этого руководства.

Есть многочисленные языки программирования, которые включают возможности ООП как расширения или как основание этого языка. Как следствие, есть много различных терминов для того, чтобы описать понятия OO. Даже в пределах FPC есть некоторые наложения в терминологии. В основном, ООП обычно состоит из понятия программного объекта (или информационной единицы), который включает в себя связанный набор данных и процедур, которые обрабатывают данные. Эти данные обычно являются постоянными на время выполнения программы, но с механизмами уменьшающими некоторые из проблем, порожденных из-за объявления глобальных переменных. Кроме того языки ООП позволяют объектам быть измененяемыми и/или расширяемыми на основании ранее определенных объектах. Эта особенность обычно определяется терминами "наследование" и "полиморфизм". Многие из языков ООП используют термины "метод" или "сообщение", ссылающееся на процедуры, которые принадлежат объекту. Большая часть мощи ООП основана на позднем (во время выполнения) динамическом связывании методов, а не статическом связывании при компиляции. Это динамическое связывание методов подобно использованию процедурных переменных и процедурных параметров, но с большим синтаксическим единством, инкапсулирующим связанные с ними данные и также наследующие поведение ранее определенных методов. Следующие страницы wiki обеспечивают отправную точку для того, чтобы узнать больше о проектировании и программировании в объектноориентированной манере: