Lo que escribí antes:
Todos los que escriben programas saben que cuando desarrolla gradualmente las funciones que desea implementar, la mayoría de las veces, lo que escribió el primer día se olvidará al día siguiente. Muchas veces, debe escribir Se proporcionan notas detalladas sobre el desarrollo del programa. Esto es especialmente cierto en el desarrollo de sistemas ASP cuando los archivos y funciones son complejos. Cuando planeamos modificar algunas funciones del sitio web, sentimos que no tenemos idea de por dónde empezar o qué creemos que debe modificarse. En este momento, si ha aprendido algún lenguaje de programación orientado a objetos, naturalmente pensará en cómo implementar funciones de código en módulos. ASP no es programación orientada a objetos por naturaleza, pero VBSCRPIT6.0 proporciona clases. Realice la encapsulación de código e implemente el lenguaje del módulo.
En primer lugar, quiero escribir aquí algunos conceptos muy oficiales, cuyo objetivo es ilustrar que la orientación a objetos es un modelo muy concreto y sustancial, y algunas personas no pueden asustarse cuando ven el objeto.
Un objeto es algo que se puede ver, sentir, oír, tocar, saborear u oler. Aquí lo definimos de esta manera: un objeto es una entidad autónoma identificada por un conjunto de propiedades y comportamientos identificables.
En la programación orientada a objetos (oop), se utilizan los dos términos siguientes.
Clase: Esta es la plantilla de un objeto y define las características del objeto.
Instancia: Este es un objeto real, algo con lo que puedes interactuar.
Propiedades, métodos y eventos.
En programación orientada a objetos, los siguientes términos describen las características de los objetos:
Atributo: Esta es una clasificación que describe los atributos de un objeto.
Método: este es un verbo que describe lo que un objeto puede hacer o lo que se espera que haga.
Evento: describe la operación realizada por un objeto en respuesta a una acción.
Los objetos son parte de la programación orientada a objetos y del diseño orientado a objetos. Mucha gente piensa que este es un tema complicado, pero en realidad es muy simple y se puede explicar en cuatro términos simples: Abstracción, encapsulación, polimorfismo y herencia.
Abstracción: esta es una forma de ocultar la complejidad, el funcionamiento interno de una clase, para que el usuario no tenga que saber cómo funciona, así de fácil. Si desea ver televisión, no necesita saber cómo funciona el televisor. Sólo necesita encender el televisor y buscar canales. El interruptor de encendido/apagado resume la operación real. Método de recorte, que puede eliminar el espacio al final de la cadena. Tampoco necesita saber cómo realiza esta tarea, solo necesita saber que tiene esta función.
Encapsulación: cada objeto contiene toda la información necesaria para realizar operaciones. Este objeto se llama encapsulación, por lo que el objeto no depende de otros objetos para completar sus operaciones. En el término método TOupper(), la cadena no tiene que obtener información de otros. lugares para completar sus operaciones. Todos los caracteres se convierten a mayúsculas.
Polimorfismo: este término se utiliza para indicar que diferentes objetos pueden realizar la misma acción, pero a través de su propio código de implementación. El nombre es el mismo, pero el código de implementación subyacente es diferente.
Herencia: Define cómo las clases se relacionan entre sí y comparten características. La forma en que funciona la herencia es definir clases y subclases, donde la subclase hereda todas las características de la clase principal. La importancia de la herencia es que obliga a las clases con tipos similares a. tiene consistencia y permite compartir código sin tener que definir todas las características de la clase principal si uno decide crear una nueva clase.
Utilice clases en ASP para lograr modularidad.
Permítanme explicarlo con algunos ejemplos simples. Tenga en cuenta que lo que se enfatiza aquí es una idea. Si puede usar una clase (clase base) para expandirse cuando desarrolla un sitio web ASP, esto es muy necesario (también Muy difícil).
Elijamos primero un ejemplo simple:
Queremos mostrar la información de los usuarios del foro clásico. Después de ingresar la identificación del usuario, se puede mostrar cierta información. Este es un proceso. Puede pensar en ello de esta manera. Tratamos al usuario como un objeto. ID y género, Puntos, permisos, el método de implementación es mostrar esta información, está bien, escribe así:
clase azulidea
Bname privado, bpoint, bsex, blevel
'.........................
clase final
Aquí primero declaramos una clase llamada blueidea, seguida de algunas variables privadas para almacenar las propiedades de la clase blueidea. No se puede acceder a estas variables desde fuera del código. Esto es protección de datos. Para definir estas variables, use la declaración de propiedad para obtener. Valor pagado indirectamente a variables privadas.
'------------------------------------------------ - ---------------
Propiedad Obtener getname
getnombre=bnombre
Propiedad final
Propiedad Let getname(nameid)
bnombre=idnombre
Si nombreid= Entonces
bname=Ningún usuario registrado
Terminar si
Propiedad final
'------------------------------------------------ - -----------------
Propiedad obtener sexo
consigue sexo = bsex
Propiedad final
Propiedad Let getsex (sexo)
bsex=killint(sexo,0,0)
Si bsex=0 entonces
bsex=masculino
Demás
bsex=mujer
terminar si
Propiedad final
'------------------------------------------------ - -----------------
Propiedad Obtener getpoint
getpunto=bpunto
Propiedad final
Propiedad Let getpoint(punto)
bpunto=killint(punto,0,0)
Propiedad final
'------------------------------------------------ - -----------------
Aquí hay una función killint para determinar la validez de los datos. Su prototipo es:
Función privada killint(i,killstr,killsub)
Si no es numérico (i) entonces
i=cadena de muerte
De lo contrario, si i <= 0, entonces
i=matarsub
terminar si
killint=Int(Izquierda(i,5))
Función final
La función de esta función es muy clara y ya no es complicada.
Dado que necesitamos juzgar el nivel de usuario a través de puntos, aquí se define una función privada:
Función privada getlevel()
bpunto=killint(bpunto,0,0)
Si bpunto<500 entonces
blevel=miembro junior
De lo contrario, si bpoint>=500 y bpoint<=100, entonces
blevel=Miembro Premium
Demás
blevel=miembro final
Terminar si
Obtenernivel=bnivel
Función final
Si queremos devolver la información del usuario, debemos definir una función pública para mostrar la información:
Función pública showuser()
Response.write(<h5>A continuación se muestra la información de <font color=red>&bname&</font>:</h5>)
respuesta.write(<h5>Género:<font color=red>&bsex&</font></h5>)
respuesta.write(<h5>Puntos:<font color=red>&bpunto&</font></h5>)
obtener nivel
respuesta.write(<h5>Nivel:<font color=red>&blevel&</font></h5>)
Función final
Fin de clase
Cuando use esta clase, úsela así: (escribí un procesamiento de formulario aquí)
Establecer blueideauser = nueva blueidea
blueideauser.getname=Recortar(solicitud(id))
blueideauser.getsex=solicitud(sexo)
blueideauser.getpoint=solicitud(punto)
blueideauser.showuser
Si desea ver el efecto, eche un vistazo aquí: http://www.5do8.com/net/aspclass/class.asp
Clase que controla la lectura de información de la base de datos:
Código fuente de referencia
'Nombre: ado_5do8
'Función: Leer varias operaciones de la base de datos.
'Pueblo cultivado en fuente http://www.5do8.com http://www.Blueidea.com-5do8
'Creación: 5do8
'Contacto:[email protected]
'Actualización: 13 de noviembre de 2005
'Autorización: los puntos del sitio web Blue Ideal superan los 3000, todos los usuarios registrados de Gengyun Village
'Interfaz de clase: ado_5do8.ConnectString=ruta absoluta a la base de datos
'ado_5do8.rs_top número de llamadas, nombre de la tabla
Clase ado_5do8
Conexión privada, sqlstr, rs, iid, itable, isession
'sqlstr: dirección de base de datos, ruta absoluta, privada
'conn: abre la conexión a la base de datos, privada
'------------------------------------------------ - -----------------
rem elimina algunos números no deseados
Función privada litter_in(r1,r2)
Si IsNumeric(r1) y IsNumeric(r2) Entonces
tenue tenue
Si r1>r2 entonces
dimrr=r2
Demás
dimrr=r1
Terminar si
Demás
dimr=0
terminar si
litter_in=dimrr
Función final
'------------------------------------------------ - ---------------
Función privada killint(i,killstr,killsub)
Si no es numérico (i) entonces
i=cadena de muerte
De lo contrario, si i <= 0, entonces
i=matarsub
terminar si
killint=Int(Izquierda(i,5))
Función final
'------------------------------------------------ - ---------
conexión de inicio secundaria privada ()
En caso de error Continuar siguiente
Establecer conexión=servidor.CreateObject(adodb.conexión)
strconn=Provider=Microsoft.Jet.OLEDB.4.0;Fuente de datos= & Server.MapPath(sqlstr)
conn.open strconn
Si se equivoca entonces
errar.Borrar
SetConn=Nada
mess=Ocurrió un error y no se puede conectar a la base de datos
respuesta.escribir(desorden)
respuesta.Fin
Demás
mess=Conectado a la conexión de la base de datos exitosamente.......<br/>
respuesta.escribir(desorden)
Terminar si
Subtítulo final
'------------------------------------------------ - --------------
Sub cierre privado()
con.cerrar
Establecer conexión=Nada
respuesta.write(<strong style='color:red'>Cerrar conexión</strong>...<hr/>)
Fin sub
'------------------------------------------------ - ---------------
Cerradores privados ()
rs.cerrar
Establecer rs=Nada
respuesta.write(<strong style='color:#085420'>Cerrar base de datos RS</strong>.....<br/>)
Subtítulo final
'------------------------------------------------ - ---------------
Propiedad Tomar posesión
havese=isesion
Propiedad final
Propiedad Let havese (su sesión)
isession=tusesión
Si tu sesión = Entonces
isession=nodef
Terminar si
Propiedad final
'------------------------------------------------ - ---------------
La función pública hace sesión (arraydata)
Si IsArray (arraydata) entonces
makear=matriz de datos
Demás
hacer = Matriz (0,0,0,0)
Terminar si
Si isession= Entonces
isession=nodef
terminar si
sesión(isession)=hacer
Función final
'------------------------------------------------ - ---------------
La función privada obtiene sesión()
thisget=sesión(isesión)
Si no es IsArray (thisget) entonces
thisget=Array(0,0,0,0)
Terminar si
Getsession=thisget
Función final
'------------------------------------------------ - ---------------
Propiedad GetConnectString
ConnectString = sqlstr
Propiedad final
Propiedad Let ConnectString(str)
sqlstr = cadena
Propiedad final
'------------------------------------------------ - ---------------
Propiedad Obtener getid
getid = iid
Propiedad final
Propiedad Let getid(id)
iid = identificación
Propiedad final
'------------------------------------------------ - ---------------
Propiedad Obtener accesible
obtenible = itable
Propiedad final
Propiedad Let gettable(table)
tabla = tabla
Propiedad final
'------------------------------------------------ - ---------------
'------------------------------------------------ - -----------------
Función pública readarraysession (iStart, ipageno, irowid)
filaid=killint(irowid,0,0)
inicio=killint(iinicio,0,0)
paginano=killint(ipageno,5,5)
datos = obtener sesión
iRows = UBound(datos, 2)
iCols = UBound(datos, 1)
respuesta.write(<h5> número total obtenido:)
respuesta.write(<b> &iRows+1&</b> mensajes</h5><hr/><ul style='width:100%;'>)
Si ID de fila = 0 entonces
Si iRows > (ipageno + iStart) Entonces
iStop = ipageno + iStart - 1
Demás
iParar = iRows
Terminar si
Para iRowLoop = Iniciar hasta 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; '>Más lento, no se recomienda hacer clic--><a href=?k=list&id=&data(0,irowloop)&>actualizar</a></span></li>)
Próximo
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'>Lista (<a href=default.asp>Volver al modo típico</a>):
si Inicio > 0 entonces
Respuesta.Escribir <A HREF=?k=read&Start= & iStart-ipageno &&pageno= & ipageno & >Anterior</A>
terminar si
si iStop <iRows entonces
Respuesta.Escribir <A HREF=?k=read&Start= & iStart+ipageno &&pageno= & ipageno & >Siguiente</A>
final si
respuesta.escribir</div>
Demás
ID de fila=litter_in(ID de fila-1,iRows)
respuesta.write(<div style='ancho:85%'><h4 style='text-align:center'><a href=?k=read&pageno=&pageno&&start=&start&>Lista de retorno</a></h4></h2><hr/><h5>&server.htmlencode(data(1,rowid))&</h5><p >&server.htmlencode(datos(2,rowid))&<h5>+-----&server.htmlencode(datos(3,rowid))&)
respuesta.write(<div>)
terminar si
Función final
'------------------------------------------------ - ---------------
Función pública list_ids()
sql3=seleccionar * de &itable& donde id=&iid&
iniciar conexión()
Establecer rs=conn.execute(sql3)
Si rs.eof y rs.bof entonces
datos=matriz(0,0,0,0)
Demás
datos=Rs.GetRows()
Terminar si
cerradores
cerrarconn
respuesta.escribir(UBound(datos)&:)
respuesta.write(servidor.htmlencode(datos(2,0)))
Función final
'------------------------------------------------ - ---------------
Función pública rs_top(núm,tabla,cuando)
iniciar conexión()
sql=seleccione arriba &num& * de &tabla&
sql2=seleccione recuento (*) como szd_count de &table& &whe&
Establecer rs=conn.execute(sql2)
szd_count=rs(szd_count)
cerradores
Establecer rs = Conn.Execute(sql)
datos oscuros
Si Rs.Eof entonces
datos = sin datos
Demás
datos=Rs.GetRows()
terminar si
cerradores
cerrar conexión()
Llamada realiza sesión (datos)
Función final
'++++++++++++++++++++++++++++++++++++++++++++++++ + +++++++++
Fin de clase
Al usar:
acción tenue
acción=solicitud(k)
Si acción = ver Entonces
Vista de llamada nuevo
De lo contrario, si acción = lista, entonces
Lista de llamadas()
De lo contrario, si acción = leer, entonces
Llamar a leer()
Demás
Llamarff()
terminar si
Subff()
%>
<estilo de formulario = borde superior: 2 px sólido #008; borde inferior: 2 px sólido # 008; margen: auto; color de fondo: #eee; relleno: 20 px 5 px; color: # 008; peso de fuente: negrita;>
<label>Cantidad total de información mostrada:<input name=n type=text maxlength=4 size=10 />Número de páginas por página:<input name=pagesize type=text maxlength=4 size=10 value=5/> <nombre de entrada =arrstart tipo=valor oculto=0></label>
<h5 style=border-top:1px solid #000;padding:5px 0> Operación:<nombre de entrada=k tipo=valor de envío=vista /></h5>
</form> <%End sub%>
<%Sub vernuevo()
f_num=killint(solicitud(n),1,1)
tamaño de página = killint (solicitud (número de página), 5,5)
arrstart=killint(solicitud(inicio),0,0)
ID de fila = Killint (solicitud (ID de fila), 0,0)
Establecer cs=nuevo ado_5do8
cs.ConnectString=datos/a.mdb
cs.havese=shi
cs.rs_top f_num,sitio_szd,
cs.readarraysession inicio de sesión, tamaño de página, ID de fila
Fin sub
Sublista()
respuesta.write(<h5><a href=default.asp>Volver al modo predeterminado</a></h5>)
La información específica se muestra debajo de respuesta.escribir:<hr/>
identificación = solicitud (identificación)
identificación=killint(identificación,1,1)
Establecer listid = nuevo ado_5do8
listid.ConnectString=datos/a.mdb
listid.getid=id
listid.gettable=site_szd
listid.list_ids()
Subtítulo final
Subleer()
Response.write<div style='background-color:#ccc;padding:20px 0;color:080;font-weight:bold;border-bottom:2px solid #008'>El análisis de la página está completo. Para actualizar, por favor. seleccione <a href=default.asp>Volver al modo típico</a>Parámetros: Inicio, elemento de inicio, número de elementos por página</div>
tamaño de página = killint (solicitud (número de página), 5,5)
arrstart=killint(solicitud(inicio),0,0)
ID de fila = Killint (solicitud (ID de fila), 0,0)
Establecer cs=nuevo ado_5do8
cs.havese=shi
cs.readarraysession inicio de sesión, tamaño de página, ID de fila
Fin sub
Función killint(i,killstr,killsub)
Si no es numérico (i) entonces
i=cadena de muerte
De lo contrario, si i <= 0, entonces
i=matarsub
terminar si
killint=Int(Izquierda(i,5))
Función final
%>