Java



             

Реализация - часть 2


function add_query(name) { this.id = this.id+1 this.array_of_query[this.array_of_query.length] = new query(name, this.id) return this.id

}

Здесь надо обратить внимание на наличие формального параметра в заголовке реализации функции, и на его отсутствие при описании функции в конструкторе объекта, которому принадлежит метод. Формальным параметром данного метода является наименование нового запроса, который вместе с генерируемым автоматически уникальным идентификатором, передается в конструктор, второго важного объекта - [query]. Приведем и его код:

function query(name,id) { // Свойства this.query_name = name // Имя запроса this.query_id = id // Уникальный идентификатор запроса this.query = new Array(); // Вводит массив объектов (критериев запроса) // Методы this.query_size = query_size // Возвращает количество критериев в запросе this.ini_criterion = ini_criterion; // Осуществляет явный ввод нового критерия this.add_criterion = add_criterion; // Добавляет новый критерий из формы this.del_criterion = del_criterion; // Удаляет критерий }

Итак, данный конструктор вводит в массив запросов новый запрос, который характеризуется именем (задаваемым пользователем и, вообще говоря, не обязательно уникальным) и уникальным идентификатором запроса, который генирируется автоматически методом объекта [array_of_query]. Необходимо отметить, что объекты [query] нельзя вводить явным способом., и единственный корректный способ ввода нового запроса - использование метода add_query.

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

Перед рассмотрением третьего, наиболее важного объекта клиентской части - критерий запроса [criterion], необходимо дать дополнительные пояснения. Дело в том, что критерий запроса, как мы увидим, характеризуется сравнительно большим количеством свойств. Более того, конструктор этого объекта, в отличии от двух предыдущих, не может быть достаточно универсальным, и имеет привязку к требованиям, предъявляемым конкретной информационной системой.

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

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

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

Конкретный способ решения этой задачи будет показан ниже, а пока приведем формальное описание (конструктор) третьего объекта - критерий запроса [criterion]:




Содержание  Назад  Вперед