webForumDet fria alternativet

diverse ASP frågor...

ASP

17 svar · 553 visningar · startad av Rosenson

Medlem sedan sep. 200257 inlägg
Frågan#1

diverse ASP frågor
har nyligen stött på lite nya (för mig) funktioner eller vad det är för något, =)
detta är någonting som jag aldrig har använt förut men ser att dom är ganska gott använda i diverse script, kanske dags att man lär sig dom, :)

Class
Public
Private
Sub
Property

har kollat igenom Windows Script 5.6 lite, men det är bara korta små förklaringar där och jag fattar inte med enbart dom, :/

nån som känner sig manad att förklara hur de funkar eller ge en länk till en sida som förklarar bra?

Medlem sedan aug. 20021 752 inlägg
#2

Class=Ett objekt där man kan samla en del av sin kod. Bästa jag kan komma på nu :)
Public=Om en funktion i en class (klass) är public så kan den anroppas av andra funktioner utanför klassen.
Private=Denna typ av funktioner kan inte anroppas från andra klasser utan kan bara användas innom den klass den finns.
Sub=En funktion som inte retunerar något.
Property=Kan inte förklara eftersom jag inte själv är 100 på vad det är :)

/Viktor

Medlem sedan feb. 200112 078 inlägg
#3

Sub

Sub doSomeStuff(intUserId)
   'exempelvis kör nåt i SQL
   set conn = server.createobject("ADODB.Connection")
   conn.execute("DELETE FROM users WHERE id = " & intUserId & ""),,128
end sub

call doSomeStuff(154) '<-- anrop

Redigerat) Grovt fel i koden. :r

Medlem sedan sep. 200257 inlägg
#4

tackar, specielt override för det fina exemplet...

ingen som känner för att skriva såna fina exempel för dom andra också?
mycket enklare att komma in i hur nånting funkar om man ser fina exempel...

Medlem sedan feb. 200112 078 inlägg
#5

Public / Private
Ett begrepp ,som jag mestadels förknippar med Visual Basic, som anger ifall en funktionen eller sub skall kunna access:as 'utifrån'.

Public function doSomeThing1(str1)
   'returnera nåt
   'kan accessas utifrån
end function

Private function doSomeThing2(str2)
   'returnera nåt igen
   'kan inte accessas utifrån
end function

Typ ;)

Medlem sedan maj 200010 687 inlägg
#6

Snyggare anrop:

doSomeStuff 154 '<-- anrop
Medlem sedan sep. 200257 inlägg
#7

får jag fråga hur du menar med accessas utifrån?

Medlem sedan maj 200010 687 inlägg
#8

Utifrån klassen funktionen ligger i. :)

Medlem sedan sep. 200257 inlägg
#9

hehe, det där var smått grekiska för mig, dels för jag har inte använt klasser någonting ännu, har inte förstått användsningsområdet ännu och inte riktigt hur de funkar heller...
förstår inte heller hur det är man anropar den utifrån...
har en svag aning dock...

Public function doSomeThing1(str1)

är det samma som...

function doSomeThing1(str1)

?

och accessas utifrån görs på detta sätt...

doSomeThing1(str1varde)

?

och på private så funkar det då inte på det sättet?

har för tillfället ingen tillgång till dator med möjligheter att prova på, :/

Medlem sedan feb. 200112 078 inlägg
#10

Funktionerna / sub:arna anropas fortfarande på samma sätt, under förutsättning att du kan, oavsett om de ligger 'innanför' eller 'utanför'. :)

Medlem sedan mars 20002 836 inlägg
#11

Enkelt beskrivet är en Class ett objekt med olika egenskaper och metoder.

En egenskap kan jämföras med en vanlig variabel och en metod med funktion eller sub.

Det som är bra med classer är att man kan organisera/strukturera upp sin kod, bryta ur sin logik från designen, används samma applikation på flera olika siter så behöver man endast ändra i en fil och sedan ladda upp den filen till alla siter UTAN att behöva gå in och grotta i en sida på varje site.

En enkel form av en class:

Class User

	Public Firstname
	Public Lastname

	Public Function Fullname()
		Fullname = Firstname & " " & Lastname
	End Function

	'## -- set default values --
	Private Sub Class_Initialize()

	End Sub

	'## -- clean up --
	Private Sub Class_Terminate()

	End Sub

End Class

Sparas lämpligen som clsUser.asp och inkluderas sedan på sidan.
Den används sedan så här på "sidan":

<%
Dim objUser
Dim strFullName

Set objUser = New User

	objUser.Firstname = "Patrik"
	objUser.Lastname = "Berggren"

	strFullName = objUser.Fullname()

Set objUser = Nothing

Response.Write strFullName
%>
<!--#INCLUDE VIRTUAL="/classes/clsUser.asp"-->

alltså ingen avancerad klass i sig, utan mer ett kort exempel.

cya,
PatrikB

Medlem sedan sep. 200257 inlägg
#12

OveRRidE skrev:

Funktionerna / sub:arna anropas fortfarande på samma sätt, under förutsättning att du kan, oavsett om de ligger 'innanför' eller 'utanför'. :)

får ursäkta om jag låter lite dum just nu men jag fattar inte vad du snackar om, =)

Medlem sedan sep. 200257 inlägg
#13

provade lite och slängde ihop den här koden för att försöka förstå public och private

<%
dim hej0, hej1, hej2

hej0 = "failed"
hej1 = "failed"
hej2 = "failed"

function doSomeThing0(str0)
hej0 = str0
response.write "function 0"
end function

Public function doSomeThing1(str1)
hej1 = str1
response.write "function 1"
end function

Private function doSomeThing2(str2)
hej2 = str2
response.write "function 2"
end function

dosomething0("hejsan_0")
response.write " - " & hej0 & vbcr

response.write "<br>"

dosomething1("hejsan_1")
response.write " - " & hej1 & vbcr

response.write "<br>"

dosomething2("hejsan_2")
response.write " - " & hej2 & vbcr
%>

men i den där koden så funkar de exakt likadant, tänkte först om det inte skulle gå att t.ex. få ut hej2 från private funktionen, om det var så det fungerade, men icke, gick bra att få ut den...give me some help please :)

Medlem sedan feb. 200112 078 inlägg
#14

Det är pga. att jag skrev det en aning luddigt. PatrikB:s exempel borde ge lite mer klarhet i vad jag menar. :)

Rosenson skrev:

OveRRidE skrev:

Funktionerna / sub:arna anropas fortfarande på samma sätt, under förutsättning att du kan, oavsett om de ligger 'innanför' eller 'utanför'. :)

får ursäkta om jag låter lite dum just nu men jag fattar inte vad du snackar om, =)

Medlem sedan sep. 200257 inlägg
#15

hehe, nej, patriks exempel går inte in i min skalle, inte för tillfället iaf...

irriterande att inte förstå, =D
men det ska gå, hehe

Medlem sedan juli 2001434 inlägg
#16

Jag ger mig på att förklara vad en klass, privata och publika funktioner är i normal mening...

En klass är en fristående program-kod som är tänkt att lätt kunna lyftas ut ur en applikation och återanvändas senare. En klass har oftast en specifik uppgift, t.ex. beskriva hur nogonting fungerar.
Klasser används oftast i objektorienterade språk, och inte så ofta i ASP (vad jag förstår), utan mer i språk som java, C++

Tänk dig att du har en klass som beskriv en maskin.
Överallt där du vill ha maskin så skapar du en instans av din klass (du gör en ny precis som med vilken variabel som helst).
Du håller på att göra en hemsida om en fabrik. I fabriken finns det 10 maskiner. Istället för att ha en massa arrayer och variabler, så samlar du alla variabler en maskin kan ha i en klass. Sen så skapar du 10 instanser av din klass...

Så istället för
maskinNamn1 = "symaskin"
maskinUppgift1 = "sy"
maskinAntalGjorda1 = 0
maskinNamn2 = "limmaskin"
maskinUppgift2 = "limma"
maskinAntalGjorda2 = 0

så har du en klass med properties/egenskaperna namn och uppgift. (ungefär som en tabell i en databas).
Sedan kan ju även maskiner utföra en del saker, detta får man beskriva med funktioner. Har du en funktion som heter doTheStuff() i klassen så beskriver du där vad maskinen gör. Observera att sy maskinen och limmaskinen gör samma sak. Alltså du kan göra funktionen så att de skriver ut : "Jag " & uppgift & "r" , då säger symaskinen "Jag syr" och limmaskinen, "jag limmar"...

Vissa saker vill man inte att en programmerare skall ändra, t.ex. så kanske du vill att programmeraren kan bestämma när doTheStuff() ska köras, men inte när antalGjorda ska ändras, utan det ska ska autoMAGISKT... :)
så när du kör din doTheStuff() så anropar du increaseAntal() ifrån den funktionen... increaseAntal() gör inget märkvärdigt, utan ökar antalGjorda med 1, men du vill som sagt inte att man ska kunna köra den funktionen utan att gå igenom en annan funktion i klassen, då gör du den private! Då är den endast känd av klassen, och ingen annan. Public är alla som du kan köra utifrån...

(Börjar villa bort mig själv nu, blir nog ganska rörigt...)

Jämförande med en tabell i en databas och kort förklaring:
Tabell = Klass
Property = Fält
Private (funktion eller property) = kan inte ändras utifrån utan är endast känd av din klass
Public (funktion eller prop) = Ger alla tillgång till funktionen eller egenskapen

Pust... tror det kanska kan ge något, vet inte riktigt...

RED:

ResultSet är en klass...
funktionen next en funktion (rs.next)
egenskaperna och privata funktioner är svåra att se utifrån...

Sen finns det ju protected också, men det tänker jag inte gå in på ... usch o fy.. :)

Medlem sedan mars 20002 836 inlägg
#17

provade lite och slängde ihop den här koden för att försöka förstå public och private

det kommer inte att göra någon skillnad i en asp-sida OM inte funktionen/subben är en metod i en klass. Det är endast i KLASSER du kan ange Private eller Public, dvs, vilka egenskaper/metoder ska kunna accessas från detta objekt.

Har en mycket basic gästbok som är uppbyggd av vbscript classer och finns att ladda ned här: http://www.mrwize.nu/guestbook/pb-guestbook.zip

Kika igenom den koden och kom med frågor ......... hoppas att det kommer att klarna lite mer när du sett hur man kan bygga en liten applikation med classer och sedan fördelen med att ha design och logik separerade.

cya,
PatrikB

Medlem sedan sep. 200257 inlägg
#18

tänkte tacka för hjälpen, tror jag fattar detta nu, :)

263 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)