Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

augustoclaro

[Resolvido] Classes

Recommended Posts

no imastres tem artigos sobre isso, dá uma pesquisada, k você vai encontrar

 

você pode definir classes como um objeto, com seus próprios métodos (funções que atuam sobre este objeto) e propriedades (variáveis do objeto). Assim, o comando MyClass.Build() chama o método Build do objeto MyClass e MyClass.Titulo = "xyz" define o valor da propriedade Titulo do mesmo objeto. Pra quem acha isso complicado, vale o lembrete que, quando criamos um objeto ADODB.Connection, facilmente trabalhamos com suas propriedades (CursorType, Provider, etc) e métodos (Execute(), Open(), etc).

 

Classes podem ser criadas facilmente no VBScript, mediante a utilização de alguns comandos não comumente usados. O uso de classes pode ser útil pela reutilização do mesmo código em diversas partes da aplicação e pela facilidade de atribuir seus valores.

 

Pense no exemplo de paginação: qtas páginas de seu site usam o recurso de paginação, com a alteração de apenas uma ou duas características ? Pense qto código pode ser economizado com a utilização de apenas um código genérico. E lembre-se que o ASP é interpretado; ou seja: qto menos código, mais rápido a aplicação roda.

 

O primeiro dos comandos necessários é o Class, que define o nome da Classe. Não tem muito o que dizer, exceto que ele deve ser terminado com End Class, que vai depois de todo o código da Classe, englobando-a. Após definir o nome da classe, você precisa definir as propriedades. você pode simplesmente colocar Public Propriedade e então esta variável pode ser acessada externamente à ela. Caso coloque Private MyVar, esta variável terá escopo apenas dentro da classe. Muita gente usa o Propriety, que permite executar uma sequencia de comandos quando o valor da propriedade for atribuido, permitindo consistir os dados entrados.

Após a definição das propriedades, podemos definir os métodos. Assim, o comando Public Default Sub NomeMetodo define o método padrão para a Classe. você tbém pode definir o escopo para Private, fazendo com que a sub/function seja acessível apenas internamente à classe.

Pode parecer complicado, mas, com isso, você já pode criar uma classe, como no exemplo abaixo:

 

<%
Class HelloWorld
Private Texto_a_ser_mostrado
Public Property Let Texto ( cString ) 'Isso declara a *variavel* pública "Texto"
Texto_a_ser_mostrado = iif( len( cString & "" ) = 0, "Hello world!", cString )
End Property
Private Function iif( condicao, valor1, valor2 )
if condicao then iif = valor1 else iif = valor2
End Function
Private Sub ChecarSeTudoOk()
if len( Texto_a_ser_mostrado & "" ) = 0 then Texto = ""
End Sub
Public Default Sub ShowMessage
ChecarSeTudoOk()
response.write Texto_a_ser_mostrado
End Sub
End Class
Dim oHelloWorld
Set oHelloWorld = New HelloWorld
With oHelloWorld
'.Texto = "Hi there!"
.ShowMessage()
End With
%>

Você pode pegar o trecho do Class (as linhas entre o "Class HelloWorld" e o "End Class", inclusive) e colocar em um arquivo chamado HelloWorldClass.asp e incluí-lo no seu script, com <!-- #include file="HelloWorldClass.asp" -->

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa o Property, permite executar uma sequencia de comandos quando atribui o valor a propriedade, permitindo consistir os dados entrados

 

<%
Public Class Greeting

	‘Private membro variável acessível somente 
'Para a classe

	Private m_sGreeting	
	
	‘método Accessor controlado, alias 
'READ acesso à sua variável de classe	
Public <strong class="highlight">Property</strong> Get Message()	
		Message = m_sGreeting
	End <strong class="highlight">Property</strong>
	
	‘Método Accessor , controlada alias 
	'Acesso de gravação para a variável de classe
	Public <strong class="highlight">Property</strong> Set Message(sMsg)	
		m_sGreeting = sMsg
	End <strong class="highlight">Property</strong>

	‘O construtor, a inicialização de 
'O objeto

	Private Sub Class_Initialize()		
		m_sGreeting = “teste de classe!?
	End Sub
	
	‘Public class method, algo que este 
'Classe pode fazer por você.
	Public Sub Greet()			
		Response.Write m_sGreeting
	End Sub

	‘Cleaning up.
	'Classe pequena, de modo que este está aqui para 
'Demonstração só
Private Sub Class_Terminate()	
	
End Sub

End Class
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo, muito bom tb

 

<%

  Class Connection

    Private Conn
    Private dataSource
    Private Key

    Public Property Let DBPath(dS)
      dataSource = ds
    End Property

    Public Property Let DBKey(k)
      key = k
    End Property

    Public Property Get Link()
      Link = Conn
    End Property


    Public Function DBOpen()
      If dataSource = "" then
        Response.Write("
Error: DBOpen() 
 Data Source not find. 
 DBPath Property not declared. 
")
      Else
        Set Conn = Server.CreateObject("ADODB.Connection")
          If key = "" then
            Conn.Provider = "Microsoft.Jet.OLEDB.4.0"
            Conn.ConnectionString = Server.MapPath(dataSource)
            Conn.Open
          Else 
            Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath(dataSource) &"; Persist Security Info=True; Jet OLEDB:Database Password="& Key
          End If
      End If
    End Function

    Public Function DBClose()
      If IsObject(Conn) then
            Conn.Close
        Set Conn = Nothing
      Else
        Response.Write("
Error: DBClose() 
 Database connection don't exists. 
")
      End If
    End Function

  End Class

%>

usando

<!--#include file="cls_connection.asp" //-->
<%

  Dim objCnx
  Set objCnx = new Connection 'Chamando a classe

      objCnx.DBPath = "_seu_banco.mdb"       'Informar o caminho virtual, pois utiliza o Server.MapPath
      'objCnx.DBKey = "2468"        'Caso o Banco de Dados usar senha
      objCnx.DBOpen()

      strSQL = "SELECT * FROM registro ORDER BY code"
      Set RS = Server.CreateObject("ADODB.RecordSet")
          RS.Open strSQL,objCnx.Link(),1,3

         Do while Not RS.EOF
           response.write RS("login") &" - "& RS("senha") &"
"
         RS.MoveNext
         Loop

      objCnx.DBClose()

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

não é essa minha dúvida.

 

eu jah tentei imprimir na tela, e dá erro antes do response.write.

 

eu qro que tenha uma propriedade na classe, que eu possa acessá-la:

response.write classe.prop

e que eu não possa mudar seu valor, mas caso eu tente, o valor não mude:

classe.prop = "teste" 'quero que isso não aletere o valor da prop.

 

 

Entende? :D

 

 

Obrigado pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conforme post #7, o erro ocorre porque você declarou a variável como private e está tentando acessá-la fora da classe. Para acessar fora da classe você tem que declarar como public.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza...

 

Public Property Get

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.