То, что я писал ранее:
Каждый, кто пишет программы, знает, что когда вы постепенно разрабатываете функции, которые хотите реализовать, в большинстве случаев то, что вы написали в первый день, будет забыто на следующий день. Во многих случаях вам приходится писать подробные примечания по разработке программы. Это особенно актуально при разработке систем ASP, когда файлы и функции сложны. Когда мы планируем изменить некоторые функции веб-сайта, мы чувствуем, что понятия не имеем, с чего начать или что, по нашему мнению, необходимо изменить. В это время, если вы изучили какой-либо объектно-ориентированный язык программирования, вы, естественно, задумаетесь о том, как реализовать функцию кода в модулях. ASP по своей природе не является объектно-ориентированным программированием, но VBSCRPI6.0 предоставляет классы. Реализуйте инкапсуляцию кода и внедрите язык модуля.
Прежде всего, я хочу записать здесь несколько очень официальных концепций, которые призваны проиллюстрировать, что объектно-ориентированная модель — это очень конкретная и содержательная модель, и некоторых людей невозможно отпугнуть, когда они увидят объект.
Объект — это то, что можно увидеть, почувствовать, услышать, потрогать, попробовать на вкус или понюхать. Здесь мы определяем это следующим образом: объект — это автономная сущность, идентифицируемая набором идентифицируемых свойств и поведения.
В объектно-ориентированном программировании (ООП) используются следующие два термина.
Класс: это шаблон объекта, определяющий характеристики объекта.
Экземпляр: это реальный объект, с которым вы можете взаимодействовать.
Свойства, методы и события
В ООП следующие термины описывают характеристики объектов:
Атрибут: это рейтинг, который описывает атрибуты объекта.
Метод: это глагол, описывающий, что может делать объект или что от него ожидается.
Событие: описывает операцию, выполняемую объектом в ответ на действие.
Объекты являются частью объектно-ориентированного программирования и объектно-ориентированного проектирования. Многие люди думают, что это сложная тема, но на самом деле она очень проста и может быть объяснена четырьмя простыми терминами. Абстракция, инкапсуляция, полиморфизм и наследование.
Абстракция: это способ скрыть сложность и внутреннюю работу класса, чтобы пользователю не нужно было знать, как это работает, просто так. Если вы хотите смотреть телевизор, вам не нужно знать, как работает телевизор. Вам просто нужно включить телевизор и выполнить поиск каналов. В примере со строкой есть переключатель включения/выключения. метод обрезки, который может удалять пробел в конце строки, вам также не нужно знать, как он выполняет эту задачу, вам просто нужно знать, что он имеет эту функцию.
Инкапсуляция: каждый объект содержит всю информацию, необходимую для выполнения операций. Этот объект называется инкапсуляцией, поэтому объект не полагается на другие объекты для завершения своих операций. В термине метода TOupper() строка не должна получать информацию от других. места для завершения операций. Все символы преобразуются в верхний регистр.
Полиморфизм: этот термин используется для обозначения того, что разные объекты могут выполнять одно и то же действие, но с помощью своего собственного кода реализации. Имя одно и то же, но базовый код реализации различен.
Наследование: оно определяет, как классы связаны друг с другом и разделяют характеристики. Наследование заключается в определении классов и подклассов, при этом подкласс наследует все характеристики родительского класса. Важность наследования заключается в том, что оно заставляет классы со схожими типами быть одинаковыми. имеют согласованность и позволяют совместно использовать код без необходимости определять все характеристики родительского класса, если кто-то решит создать новый класс.
Используйте классы в ASP для достижения модульности
Позвольте мне объяснить это на нескольких простых примерах. Обратите внимание, что здесь подчеркивается идея. Если вы можете использовать класс (базовый класс) для расширения при разработке веб-сайта ASP, это очень необходимо (и очень сложно).
Давайте сначала выберем простой пример:
Мы хотим отображать информацию о классических пользователях форума. После ввода идентификатора пользователя может отображаться некоторая информация о пользователе. Это процесс. Мы рассматриваем пользователя как объект. Идентификатор и пол, Очки, разрешения, способ реализации - отображение этой информации, ок, напишите так:
Класс blueidea
Частное имя bname,bpoint,bsex,blevel
'........................
конечный класс
Здесь мы сначала объявляем класс blueidea, а затем некоторые частные переменные для хранения свойств класса blueidea. К этим переменным невозможно получить доступ извне. Это защита данных. Чтобы определить эти переменные, используйте оператор свойства. Значение косвенно передается частным переменным.
'------------------------------------------------ - ---------------
Свойство Получить имя
getname=bname
Конечная собственность
Свойство Let getname(nameid)
bname=nameid
Если nameid= Тогда
bname=Нет зарегистрированного пользователя
Конец, если
Конечная собственность
'------------------------------------------------ - -----------------
Недвижимость Get Getsex
getsex=bsex
Конечная собственность
Свойство Let getsex(sex)
bsex=killint(секс,0,0)
Если bsex=0 Тогда
bsex=мужчина
Еще
bsex=женщина
Конец, если
Конечная собственность
'------------------------------------------------ - -----------------
Свойство Получить getpoint
getpoint=bpoint
Конечная собственность
Свойство Let getpoint(point)
bpoint=killint(точка,0,0)
Конечная собственность
'------------------------------------------------ - -----------------
Здесь есть функция killint для определения достоверности данных. Ее прототип:
Частная функция killint(i,killstr,killsub)
Если Не IsNumeric(i), Тогда
я = killstr
ИначеЕсли i<=0 Тогда
я = убийца
Конец, если
killint=Int(Влево(i,5))
Конечная функция
Функция этой функции очень понятна и больше не сложна.
Поскольку нам нужно судить об уровне пользователя по баллам, здесь определена приватная функция:
Частная функция getlevel()
bpoint=killint(bpoint,0,0)
Если bpoint<500 Тогда
blevel=младший участник
ИначеЕсли bpoint>=500 И bpoint<=100 Тогда
blevel=Премиум-участник
Еще
blevel=конечный участник
Конец, если
Getlevel=blevel
Конечная функция
Если мы хотим отправить обратно информацию пользователя, мы должны определить общедоступную функцию для отображения информации:
Открытая функция showuser()
response.write(<h5>Ниже показана информация о <font color=red>&bname&</font>:</h5>)
response.write(<h5>Пол:<font color=red>&bsex&</font></h5>)
response.write(<h5>Очки:<font color=red>&bpoint&</font></h5>)
получить уровень
response.write(<h5>Уровень:<font color=red>&blevel&</font></h5>)
Конечная функция
Конец урока
При использовании этого класса используйте его следующим образом: (здесь я написал обработку формы)
Установить blueideauser=новая голубая идея
blueideauser.getname=Trim(запрос(id))
blueideauser.getsex=запрос(секс)
blueideauser.getpoint=запрос(точка)
blueideauser.showuser
Если вы хотите увидеть эффект, посмотрите здесь: http://www.5do8.com/net/aspclass/class.asp
Класс, управляющий чтением информации из базы данных:
Справочный исходный код
'Имя: ado_5do8
'Функция: чтение различных операций базы данных
'Деревня, культивируемая источником http://www.5do8.com http://www.Blueidea.com-5do8
'Создание: 5do8
'Контакт: [email protected]
'Обновление: 13 ноября 2005 г.
«Авторизация: количество баллов на веб-сайте Blue Ideal превышает 3000, все зарегистрированные пользователи деревни Генюнь.
'Интерфейс класса: ado_5do8.ConnectString=абсолютный путь к базе данных
'ado_5do8.rs_top количество вызовов, имя таблицы
Класс ado_5do8
Частное подключение, sqlstr, rs, iid, itable, isession
'sqlstr: адрес базы данных, абсолютный путь, частный
'conn: открыть частное соединение с базой данных
'------------------------------------------------ - -----------------
rem удаляет некоторые нежелательные числа
Частная функция помет_ин (r1, r2)
Если IsNumeric(r1) и IsNumeric(r2) Тогда
Дим димрр
Если r1>r2 Тогда
димрр=r2
Еще
димрр=r1
Конец, если
Еще
димрр=0
Конец, если
помет_in=dimrr
Конечная функция
'------------------------------------------------ - ---------------
Частная функция killint(i,killstr,killsub)
Если Не IsNumeric(i), Тогда
я = killstr
ИначеЕсли i<=0 Тогда
я = убийца
Конец, если
killint=Int(Влево(i,5))
Конечная функция
'------------------------------------------------ - ---------
частный Sub startconn()
При ошибке Возобновить Далее
Установите conn=server.CreateObject(adodb.connection)
strconn=Provider=Microsoft.Jet.OLEDB.4.0;Источник данных= & Server.MapPath(sqlstr)
conn.open стрконн
Если Ошибка Тогда
Ошиб.Очистить
SetConn=Ничего
беспорядок=Произошла ошибка и невозможно подключиться к базе данных
ответ.запись(беспорядок)
ответ.Конец
Еще
mess=Соединение с базой данных успешно установлено.......<br/>
ответ.запись(беспорядок)
Конец, если
Конец субтитра
'------------------------------------------------ - --------------
частный суб closeconn()
конн.закрыть
Установить конн=Ничего
response.write(<strong style='color:red'>Закрыть соединение</strong>...<hr/>)
Конец субтитра
'------------------------------------------------ - ---------------
Частные сабвуферы()
RS.закрыть
Установить rs=Ничего
response.write(<strong style='color:#085420'>Закрыть базу данных RS</strong>.....<br/>)
Конец субтитра
'------------------------------------------------ - ---------------
Недвижимость Получить владение
hase=сессия
Конечная собственность
Недвижимость Let hase (ваша сессия)
isession=ваша сессия
Если ваша сессия = Тогда
isession=nodef
Конец, если
Конечная собственность
'------------------------------------------------ - ---------------
Открытая функция makesession(arraydata)
Если IsArray(массив данных), то
makear=массив данных
Еще
makear=Массив(0,0,0,0)
Конец, если
Если isession= Тогда
isession=nodef
Конец, если
сеанс (сессия) = сделать
Конечная функция
'------------------------------------------------ - ---------------
частная функция getsession()
thisget=сессия(сессия)
Если не IsArray(thisget), то
thisget = Массив (0,0,0,0)
Конец, если
Getsession=thisget
Конечная функция
'------------------------------------------------ - ---------------
Свойство GetConnectString
ConnectString = sqlstr
Конечная собственность
Свойство Let ConnectString(str)
sqlstr = строка
Конечная собственность
'------------------------------------------------ - ---------------
Недвижимость Получить информацию
получитьid = идентификатор
Конечная собственность
Свойство Let getid(id)
иид = идентификатор
Конечная собственность
'------------------------------------------------ - ---------------
Получить недвижимость
получитьтаблицу = можно
Конечная собственность
Свойство Let gettable(таблица)
стол = стол
Конечная собственность
'------------------------------------------------ - ---------------
'------------------------------------------------ - -----------------
Публичная функция readarraysession (iStart, ipageno, irowid)
rowid=killint(irowid,0,0)
start=killint(istart,0,0)
pageno=killint(ipageno,5,5)
данные = получить сеанс
iRows = UBound(данные, 2)
iCols = UBound(данные, 1)
response.write(<h5> общее количество получено:)
response.write(<b> &iRows+1&</b> messages</h5><hr/><ul style='width:100%;'>)
Если rowid = 0, то
Если iRows > (ipageno + iStart) Тогда
iStop = ипагено + iStart - 1
Еще
iStop = iRows
Конец, если
Для iRowLoop = от начала до iStop
Response.Write (<li style='padding:4px 0;'><a href=?k=read&rowid=&irowloop+1&>&data(1, iRowLoop) & </a><span style='padding:4px 0 4px 10px;background-color:#ccc; '>Медленнее, не рекомендуется нажимать --><a href=?k=list&id=&data(0,irowloop)&>обновить</a></span></li>)
Следующий
Response.Write </ul><div style='top:20px;background-color:#ccc;color:#020;font-weight:bold;bordr-top:2px Solid #008;padding:10px 0;color: #b00'>Список (<a href=default.asp>Возврат в обычный режим</a>):
если Старт > 0, то
Response.Write <A HREF=?k=read&Start= & iStart-ipageno &&pageno= & ipageno & >Предыдущий</A>
конец, если
если iStop < iRows, то
Response.Write <A HREF=?k=read&Start= & iStart+ipageno &&pageno= & ipageno & >Далее</A>
конецЕсли
ответ.запись</div>
Еще
rowid=litter_in(rowid-1,iRows)
response.write(<div style='width:85%'><h4 style='text-align:center'><a href=?k=read&pageno=&pageno&&start=&start&>Список возврата</a></h4></h2><hr/><h5>&server.htmlencode(data(1,rowid))&</h5><p >&server.htmlencode(data(2,rowid))&<h5>+-----&server.htmlencode(data(3,rowid))&)
ответ.write(<div>)
Конец, если
Конечная функция
'------------------------------------------------ - ---------------
Открытая функция list_ids()
sql3=выбрать * из &itable& где id=&iid&
стартконн()
Установите rs=conn.execute(sql3)
Если rs.eof И rs.bof Тогда
данные = Массив (0,0,0,0)
Еще
данные = Rs.GetRows ()
Конец, если
доводчики
близкое соединение
response.write(UBound(данные)&:)
response.write(server.htmlencode(data(2,0)))
Конечная функция
'------------------------------------------------ - ---------------
Открытая функция rs_top(num,table,whe)
стартконн()
sql=выбрать верхнюю часть &num& * из &table&
sql2=выберите счетчик (*) как szd_count из &table& &whe&
Установите rs=conn.execute(sql2)
szd_count=rs(szd_count)
доводчики
Установите rs = Conn.Execute(sql)
тусклые данные
Если Rs.Eof Тогда
данные = нет данных
Еще
данные = Rs.GetRows ()
Конец, если
доводчики
закрытьконн()
Вызов создает сеанс (данные)
Конечная функция
'++++++++++++++++++++++++++++++++++++++++++++++ + +++++++++
Конечный класс
При использовании:
Тусклое действие
действие = запрос (к)
Если действие=просмотр Тогда
Позвонить просмотретьновый
ИначеЕсли действие=список Тогда
Список вызовов()
ИначеЕсли действие=прочитать Тогда
Вызов чтения()
Еще
Callff()
Конец, если
Субфф()
%>
<form style=border-top:2px Solid #008;border-bottom:2px Solid #008;margin:auto;background-color:#eee;padding:20px 5px;color:#008;font-weight:bold;>
<label>Общий объем отображаемой информации:<имя ввода=n type=text maxlength=4 size=10 />Количество страниц на странице:<имя ввода=размер страницы type=text maxlength=4 size=10 value=5/> <входное имя =arrstart тип=скрытое значение=0></label>
<h5 style=border-top:1px Solid #000;padding:5px 0> Операция:<input name=k type=submit value=view /></h5>
</form> <%End sub%>
<%Sub viewnew()
f_num=killint(запрос(n),1,1)
pagesize=killint(запрос(pageno),5,5)
arrstart=killint(запрос(начало),0,0)
rowid=killint(запрос(rowid),0,0)
Установите cs=новый ado_5do8
cs.ConnectString=данные/a.mdb
cs.havese=ши
cs.rs_top f_num,site_szd,
cs.readarraysession arrstart, размер страницы, rowid
Конец субтитра
Подсписок()
response.write(<h5><a href=default.asp>Вернуться в режим по умолчанию</a></h5>)
Конкретная информация отображается под ответом.write:<hr/>
идентификатор = запрос (идентификатор)
id=killint(id,1,1)
Установить listid=новый ado_5do8
listid.ConnectString=данные/a.mdb
listid.getid=id
listid.gettable=site_szd
listid.list_ids()
Конец субтитра
Подчтение()
response.write<div style='background-color:#ccc;padding:20px 0;color:080;font-weight:bold;border-bottom:2px Solid #008'>Анализ страницы завершен. Чтобы обновить, пожалуйста. выберите <a href=default.asp>Вернуться к обычному режиму</a>Параметры: Начало, номер начальной страницы, количество элементов на странице</div>
pagesize=killint(запрос(pageno),5,5)
arrstart=killint(запрос(начало),0,0)
rowid=killint(запрос(rowid),0,0)
Установите cs=новый ado_5do8
cs.havese=ши
cs.readarraysession arrstart, размер страницы, rowid
Конец субтитра
Функция killint(i,killstr,killsub)
Если Не IsNumeric(i), Тогда
я = killstr
ИначеЕсли i<=0 Тогда
я = убийца
Конец, если
killint=Int(Влево(i,5))
Конечная функция
%>