ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«Белгородский государственный национальный исследовательский университет»
(НИУ «БелГУ»)
ИНСТИТУТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ И ЕСТЕСТВЕННЫХ НАУК
КАФЕДРА МАТЕМАТИЧЕСКОГО И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИНФОРМАЦИОННЫХ СИСТЕМ
Методы и средства программирования для Интернет
Отчет по лабораторной работе №12
студента 2 курса группы 07001402
Черноморец Дарьи Андреевны
URL для запуска сайта на выполнение:
Проверили:
Михелев Владимир Михайлович
Кузнецов Константин Владимирович
Белгород 2015
Тема работы: Пользовательские объекты.
Задание
Вариант 17
Создать пользовательский объект автозапчасть к автомобилю. Создать в скрипте 12 экземпляров данного объекта и вывести эти данные на страницу.
Теоретическая часть
JavaScript — прототипно-ориентированный сценарный язык программирования.
JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.
На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке.
Помимо объектов, встроенных в JavaScript, существуют объекты, которые пользователь может сам создать. Объект представляет собой удобное средство организации данных и функций. Это контейнер, содержащий переменные, называемые свойствами, и функции, называемые методами. Применение объекта в программах состоит в манипулировании его свойствами и методами.
Объекты в JavaScript можно создать несколькими способами. В данной работе использовался такой способ:
function имя_конструктора([пар1,...[, парN])
{ код}
имя_0бъекта=пеw имя_конструктора ([ "пар1",...[, "парN" ])
Существует два способа для описания собственных методов:
описание метода включается в описание класса;
с использованием свойства prototype, которое позволяет добавлять новые методы к существующему классу.
имяКласса.prototype.имяМетода = function(список параметров метода)
В данной разработаны 2 страницы html. Различаются они только в способах описания методов. В одной описание метода включается в описание класса, а в другой используется свойство prototype, которое позволяет добавлять новые методы к существующему классу.
Итак, на странице, где описание метода включается в описание класса, используется следующая запись для создания пользовательского объекта carSpares:
function carSpares(num,marka,model,gearbox,wheel,carbody)
{
this.num=num;
this.marka=marka;
this.model=model; свойства
this.gearbox=gearbox;
this.wheel=wheel;
this.carbody=carbody;
this.printCaption=printCaption;
this.printTableHead=printTableHead; методы
this.printSpares=printSpares;
}
Здесь внутри класса описаны 3 метода: printCaption – выводит название таблицы, printTableHead – печатает шапку таблицы, printSpares – выводит строки таблицы.
Неудобность данного способа заключается в том, что при печати всех строк, печатающих строки функций должно быть столько, сколько было создано объектов на основе класса carSpares. В моём случае это количество равно 12. Но если будет необходимость в гораздо большем объёме информации в таблице, данный способ уже будет не очень удобен. Размер кода программы из-за этого может вырасти в несколько раз.
Для того, чтобы избежать данную проблему, можно воспользоваться вторым способом для описания собственных методов: с использованием свойства prototype, которое позволяет добавлять новые методы к существующему классу, и создания массива записей, что и было сделано на второй странице html в моей работе.
Класс автозапчастей, поддерживающий хранения нуля и более элементов, создаётся при помощи массива.
Определим класс автозапчастей allSpares и добавим его в блок сценария вместе с классом carSpares, где будут находиться только свойства.
function allSpares()
{
this.cars = new Array;
}
Далее все необходимые методы будем добавлять с помощью свойства prototype.
Например, метод add_spares для занесения одной записи в массив записей выглядит так:
allSpares.prototype.add_spares=function(num,marka,model,gearbox,wheel,carbody)
{
this.cars[num]= new carSpares(num,marka,model,gearbox,wheel,carbody);
}
Так же был реализован и метод для доступа к элементам массива get_allSpares.
Преимущество данного способа состоит в том, что для печати всей таблицы нужна только одна строка, независимо от кол-ва записей в массиве записей:
document.write(spares1.get_allSpares()); где spares1 – объект, созданный на базе класса allSpares.