Язык программирования Перфолента.Net - Официальный сайт

 Язык программирования Перфолента.Net - Официальный сайт.

Поиск   
Главная :: О проекте :: Контакты :: Обратная связь :: Благодарности :: ВходГость

   >   >   >   > 



Терминология: классы, объекты и типы в языке Перфолента

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


Любые физические объекты могут быть описаны в программе в виде классов.

«В мире работающей программы нет ничего,

кроме структурных и ссылочных объектов.»

Первый закон Перфоленты.

 

Типы данных бывают разные. Это могут быть простейшие типы Целое, Число, Строка, Дата, Булево, а могут быть типы, обладающие сложной структурой и поведением, например, ТаблицаЗначений.

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

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

Элемент программы – это самостоятельная часть программы, описанная в стандарте языка и имеющая особое назначение, и правила использования. В языке Перфолента.Net элементами программы являются: Класс, Модуль (в том числе модуль Программа), Структура, Интерфейс, Перечисление. Элементы программы похожи на кубики из которых собирается программа.

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

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

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

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

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

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

Тип – это уникальная спецификация для создания объекта во время выполнения. Тип включает в себя одно или несколько имен классов, пространство имен к которому он принадлежит, а также все необходимые указания, конкретизирующие будущий объект так, чтобы среда выполнения могла его создать. Например, определение Строка[,] задает тип: «Двухмерный массив, состоящий из элементов типа Строка».

Умнику на заметку: Понятия Класс и Тип часто означают одно и то же, однако Тип — это более широкое понятие. Тип может включать в себя несколько классов, например, рассмотренный ранее тип Строка[,] содержит в себе классы Массив и Строка. Правильно говорить о создании экземпляров объектов определенного типа, но когда в определении типа нет ничего, кроме имени класса, то можно говорить о создании объектов определенного класса.

Родитель – класс, от которого текущий класс унаследовал свойства и методы.

Наследник – класс, который унаследовал свойства и методы от текущего класса.

Предок – класс из цепочки родителей текущего класса.   

Базовый класс – непосредственный предок текущего класса. Расширяет термин Родитель предполагая множество наследников. 

Потомок – класс из цепочки наследников текущего класса.  

Производный класс – непосредственный наследник базового класса.  

Класс Объект является предком (базовым классом) для всех остальных классов .Net, в том числе для всех классов Вашей программы.

 

 

Определение собственного класса.

В языке Перфолента.Net существует возможность создавать собственные классы объектов.

Рассмотрим определение простейшего класса:

Класс Животное
            //тут можно определить свойства и методы работы с классом
КонецКласса

 

Создание экземпляра объекта.

Вот и всё! Мы уже можем создавать экземпляры объектов класса Животное оператором Новый.

МоёЖивотное = Новый Животное

И несмотря на то, что у класса Животное нет ни каких свойств и методов, ему можно придумать полезное применение. Например, он может быть родителем классов Кот и Собака.

 

Наследование.

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

Для организации наследования в языке Перфолента.Net в объявлении класса используется ключевое слово Родитель или его синоним, ключевое слово Наследует.

Умнику на заметку: Если для класса не указан родитель, то его родителем является класс Объект, который является корневым родителем всей иерархии классов, используемых в .Net.

Создадим классы Кот и Собака, указав, что родителем для них является класс Животное:

Класс Кот Родитель Животное
            //тут можно определить свойства и методы работы с классом
КонецКласса

Класс Собака Родитель Животное
            //тут можно определить свойства и методы работы с классом
КонецКласса

Теперь покажем, как можно эти классы использовать:

МойКот = Новый Кот
ПриветЖивотное(МойКот)

МояСобака = Новый Собака
ПриветЖивотное(МояСобака)

//где-то ниже определим процедуру
Процедура ПриветЖивотное(МоёЖивотное тип Животное)
        Выбор Для МоёЖивотное
        Когда ЭтоТип Кот
                ВыводСтроки "Привет кот!"
        Когда ЭтоТип Собака
                ВыводСтроки "Привет собака!"
        Иначе
                ВыводСтроки "Привет не известное животное!"
        КонецВыбора
КонецПроцедуры

Как видно из этого примера, процедура ПриветЖивотное() может приветствовать животное любого типа, даже такого, который на момент написания программы еще не существовал. Главное, чтобы не известное животное было потомком класса Животное. А вот классы Кот и Собака этой процедуре известны и приветствие выводится вполне конкретное.

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

Умнику на заметку: Отметьте для себя связь терминов Класс и Классификация. Вы должны выстраивать иерархию классов не как попало, а по определенным критериям, что бы можно было сказать, что вы их классифицировали.

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

Удачи в программировании!




К началу статьи


Следующая статья:
Конструируем класс. Поля.

Вернуться в раздел:
Объектно ориентированное программирование (ООП) на языке Перфолента
  Поддержи проект!

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

  Новости:
      04.01.2025 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.15.0_CE
      23.09.2024 Опубликована новая статья: "Конструируем класс. Делегаты."
      30.08.2024 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.14.0
      24.05.2024 Обновлён справочный раздел сайта
      01.07.2023 Новая версия 0.4.13.0 языка программирования Перфолента.Net
       Все новости