Классы. Наследование: различия между версиями

Материал из wikiru.visual-prolog.com

(Новая: =Не редактировать. Статья в работе= В VIP: 1. Правила видимости существуют, но нет ни одного ключевого сл...)
 
 
(не показано 11 промежуточных версий этого же участника)
Строка 1: Строка 1:
=Не редактировать. Статья в работе=
Обсуждаемые далее механизмы наследования включают понятие "правила видимости".
В VIP:
В вульгарной интерпретации под правилом видимости мы понимаем возможность обращения к базовым элементам языка (константам, доменам, предикатам, клаузам и фактам) одной сущности из какой-либо другой сущности. Сущностями являются в данном случае классы и объекты.
1. Правила видимости существуют, но нет ни одного ключевого слова для их обозначения, то есть и ключевое слово protected тоже исчезло. В VIP все правила видимости определяются местом декларации сущности.  


2. Понятие АBSTACT CLASS не используется, его заменила более гибкая конструкция Interface
'''''Примечание.''''' К правилам видимости мы не относим вопросы включения текстов интерфейсов, классов и имплементаций в соответствующие файлы проекта.  Такие коллизии включения должны быть разрешены корректно с использованием директив ''include'' в файлах проекта *.pack и *.ph.


3. Ключевое слово STATIC не используется, его аналогом являются конструкции class predicates и class facts.  
Обычно, говоря о Visual Prolog, подчеркивают, что это - типизированный язык. Это подразумевает, что существует объявление (или декларация) типов данных, используемых в предикатах в качестве входных или выходных параметров. Это объявление используется затем в клаузе - исполняемой части предиката, где и интерпретируется как программистом, так и компилятором.


4. Имя интерфейса является также и именем домена, что дает возможность взаимных преобразований интерфейсов по общим правилам преобразования доменов (семантически допустимым, естественно).
Например, в следущем коде
<vip>
predicates
  выделитьИзФайлаОтрезокТекстаСЗаданнойДлиной:(string FileName, unsigned ЧислоСимоволов) ->string
clauses
  выделитьИзФайлаОтрезокТекстаСЗаданнойДлиной(ИмяФайла,ЧислоСимоволов)=ОтрезокТекста:-
    ПолныйТекстФайла=прочитатьФайл(ИмяФайла),
    ...
</vip>
декларация (раздел predicates) и клауза (раздел clauses) помещаются рядом по тексту. Но это лишь частный случай возможного их взаимного размещения. Местом помещения исполнительной части '''всегда''' является имплементация класса (implement ... end implement). Местами помещения декларации могут быть:
*декларация класса (class ... end class)
*декларация интерфейса (interface ... end interface)
*имплементация класса (implement ... end implement)

Текущая версия на 13:29, 28 сентября 2007

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

Примечание. К правилам видимости мы не относим вопросы включения текстов интерфейсов, классов и имплементаций в соответствующие файлы проекта. Такие коллизии включения должны быть разрешены корректно с использованием директив include в файлах проекта *.pack и *.ph.

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

Например, в следущем коде

predicates
  выделитьИзФайлаОтрезокТекстаСЗаданнойДлиной:(string FileName, unsigned ЧислоСимоволов) ->string
clauses
  выделитьИзФайлаОтрезокТекстаСЗаданнойДлиной(ИмяФайла,ЧислоСимоволов)=ОтрезокТекста:-
    ПолныйТекстФайла=прочитатьФайл(ИмяФайла),
    ...

декларация (раздел predicates) и клауза (раздел clauses) помещаются рядом по тексту. Но это лишь частный случай возможного их взаимного размещения. Местом помещения исполнительной части всегда является имплементация класса (implement ... end implement). Местами помещения декларации могут быть:

  • декларация класса (class ... end class)
  • декларация интерфейса (interface ... end interface)
  • имплементация класса (implement ... end implement)