<mySearch ⁄>
<mySnippets order="rand" ⁄>
<myContacts ⁄><email ⁄>
<windows live messenger ⁄>
<myCurriculum type="pdf" ⁄>
<myBlog show="last" ⁄>
<myNews show="rand" ⁄>
<myNews type="cat" ⁄>
<myQuote order="random" ⁄>O que importa antes de tudo é o momento presente. O momento presente é o criador do seu amanhã. Somos escravos do ontem, mas somos dono do nosso amanhã.
<myPhoto order="random" ⁄>
<myAdSense ⁄>
<myVisitorsMap ⁄>
*{padding: 0; margin: 0;} body{ font-family: Verdana, Tahoma, Arial, sans-serif;font-size: 62.5%; color: #000;background: #fff;text-align: justify;margin-top: .5em; } div#container{ margin: 0 auto; width: 40em; padding: .8em; border: solid 0.6em #3F4C6B; overflow: auto; } div.info{ padding: .4em; border: solid 0.4em #6BBA70; margin: .4em 0; } span, strong{font-size: 1.1em;color: #D01F3C;} strong{color: #356AA0 !important; font-weight: 900;} a{text-decoration: none;outline: 0;}
<% Class Student Private id_ Private name_ Private avg_ '''' ''' Método construtor ''' <param>Nome</param> ''' <param>ID</param> ''' <param>Média</param> ''' Public Sub Student(name_, id_, avg_) Name=name_ ID=id_ Avg=avg_ End Sub '''' ''' Getter - Nome ''' <returns>String</returns> ''' Public Property Get Name() Name=name_ End Property '''' ''' Setter - Nome ''' <param>Nome do Aluno</param> ''' Public Property Let Name(value) name_=value End Property '''' ''' Getter - ID ''' <returns>Int</returns> ''' Public Property Get ID() ID=id_ End Property '''' ''' Setter - ID ''' <param>ID do Aluno</param> ''' Public Property Let ID(value) id_=value End Property '''' ''' Getter - Média ''' <returns>Float</returns> ''' Public Property Get Avg() Avg=avg_ End Property '''' ''' Setter - Média ''' <param>Média do Aluno</param> ''' Public Property Let Avg(value) avg_=value End Property '''' ''' Formatar aluno ''' <returns>String</returns> ''' Public Function ToString() ToString="<span>N.º</span> <strong>" & id_ & "</strong>; " _ & "<span>Nome:</span> <strong>" & name_ & "</strong>; " _ & "<span>Média:</span> <strong>" & avg_ & "</strong>" End Function '''' ''' Serializar aluno para que o possamos armazenar ''' <returns>String</returns> ''' Public Function Serialize() Serialize=id_ & "#" & name_ & "#" & avg_ End Function '''' ''' Des-serializar aluno ''' Preenche um objecto do tipo Student mediante uma string serializada ''' <param>Aluno Serializado</param> ''' Public Sub Unserialize(str) Dim arr arr=Split(str,"#") ID=arr(0) Name=arr(1) Avg=arr(2) End Sub End Class %>
<% ''' ''' Class escola, possui vários estudantes. ''' ''' <author>pedrocorreia.net</author> Class School Private name_ Private students ''' ''' Esta é o método inicializador da aplicação, não é obrigatório, ''' porém se não existir o ASP irá encarregar-se de o adicionar. ''' ''' Neste caso vamos usá-lo para inicializar o nosso Dictionary ''' Public Sub Class_Initialize() Set students=Server.CreateObject("Scripting.Dictionary") End Sub '''' ''' Método construtor ''' <param>Nome da Escola</param> ''' Public Sub School(name_) Name=name_ End Sub '''' ''' Getter - nome da Escola ''' <returns>String</returns> ''' Public Property Get Name() Name=name_ End Property '''' ''' Setter - nome da Escola ''' <param>Nome da Escola</param> ''' Public Property Let Name(value) name_=value End Property '''' ''' Contagem de alunos ''' <returns>Int</returns> ''' Public Function CountStudents CountStudents=students.Count End Function '''' ''' Adicionar estudante ''' <param>Student</param> ''' <remarks>Se o aluno já existe é actualizado</remarks> ''' Public Sub AddStudent(student) If Not students.Exists(student.ID) Then students.Add student.ID,student.serialize Else UpdateStudent student End If End Sub '''' ''' Actualizar estudante ''' <param>Student</param> ''' Public Sub UpdateStudent(student) If students.Exists(student.ID) Then students.Item(student.ID)=student.serialize End If End Sub '''' ''' Obter estudante ''' <returns>Student</returns> ''' Public Function GetStudent(id) GetStudent=students.Item(id) End Function '''' ''' Formatar output da Escola ''' <returns>String</returns> ''' Public Function ToString Dim str Dim aux_student Set aux_student=New Student str="<strong><span>Escola:</span></strong> <strong>" & name_ & "</strong><br/>" str = str & "<br/><strong><span>Lista de Alunos:</span></strong>" For Each item In students.Keys aux_student.Unserialize(GetStudent(item)) str = str & "<br/>" & aux_student.ToString Next str = str & "<br/><br/>" str = str & "<strong><span>N.º Alunos:</span></strong> <strong>" & CountStudents & "</strong>" str = str & "<br/><strong><span>Média:</span></strong> <strong>" & CalculateAvg & "</strong>" ToString="<div class='info'>" & str & "</div>" End Function '''' ''' Formatar output de um estudante especifico ''' <param>Student</param> ''' <returns>String</returns> ''' Public Function ToStringStudent(student) Dim aux_student Set aux_student=New Student aux_student.Unserialize(GetStudent(student.ID)) ToStringStudent="<div class='info'>" & aux_student.ToString & "</div>" End Function '''' ''' Calcular média da escola ''' <returns>Float</returns> ''' Public Function CalculateAvg Dim aux_student Set aux_student=New Student Dim sum sum=0 For Each item In students.Keys aux_student.Unserialize(GetStudent(item)) sum=sum+aux_student.Avg Next CalculateAvg=sum/CountStudents End Function ''' Este método é invocado quando eliminamos o objecto Private Sub Class_Terminate() Set students=nothing End Sub End class %>
<!-- #include file ="Student.asp" --> <!-- #include file ="School.asp" --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Classic Asp OOP e Scripting.Dictionary</title> <link rel="Stylesheet" href="style.css" type="text/css" /> </head> <body> <div id="container"> <% 'criar Escola dim my_school Set my_school= new School my_school.School "Escola Secundária de Sobral de Monte Agraço" 'criar Aluno1 dim my_student1 Set my_student1= new Student my_student1.Student "Pedro Correia",1,11 'criar Aluno2 dim my_student2 Set my_student2= new Student my_student2.Student "Rui Costa",2,12 'adicionar Alunos à Escola my_school.AddStudent my_student1 my_school.AddStudent my_student2 'escrever o estado actual da Escola Response.Write("Estado actual da Escola<br/>") Response.Write(my_school.ToString) 'alterar média dos Alunos 1 e 2 Response.Write("Actualizar média dos aluno 1 e 2<br/>") my_student1.Avg=14 my_student2.Avg=16 'actualizar alunos my_school.UpdateStudent my_student1 my_school.UpdateStudent my_student2 'escrever novos dados dos alunos Response.Write(my_school.ToStringStudent(my_student1)) Response.Write(my_school.ToStringStudent(my_student2)) 'escrever o estado actual da Escola Response.Write("Estado actual da Escola<br/>") Response.Write(my_school.ToString) 'limpar recursos Set my_school=nothing Set my_student1=nothing Set my_student2=nothing %> </div> </body> </html>
