'Primer 15a: Klasni modul (definicija klase) Vreme Option Explicit 'Klasni modul Vreme 'Svojstva objekta. Public znaci da su sva dostupna drugim objektima Public m_iSat As Integer Public m_iMinut As Integer Public m_iSekund As Integer Public m_iMilisekund As Integer 'Konstruktor - dodeljuje vrednosti svojstvima objekta (inicijalizuje ih) Public Sub init(sVreme As String) iseckajVreme2 sVreme End Sub 'Konstruktor2 - dodeljuje vrednosti svojstvima objekta (inicijalizuje ih) Public Sub init2(sSat As String, sMinut As String, sSekund As String, sMilisekund As String) m_iSat = CInt(sSat) m_iMinut = CInt(sMinut) m_iSekund = CInt(sSekund) m_iMilisekund = CInt(sMilisekund) End Sub 'Na osnovu niske u formatu "hh:mm:ss,ms" popunjavaju se vrednosti svojstava za sate, minute, sekunde i milisekunde Private Sub iseckajVreme2(ByVal sVreme As String) iseckajVreme sVreme, m_iSat, m_iMinut, m_iSekund, m_iMilisekund End Sub 'Na osnovu niske u formatu "hh:mm:ss,ms" popunjavaju se vrednosti argumenata za sate, minute, sekunde i milisekunde Private Sub iseckajVreme(ByVal sVreme As String, ByRef iSat As Integer, ByRef iMinut As Integer, ByRef iSekund As Integer, ByRef iMilisekund As Integer) Dim niz() As String Dim sekunde() As String niz = Split(sVreme, ":") iSat = CInt(niz(0)) iMinut = CInt(niz(1)) sekunde = Split(niz(2), ",") iSekund = CInt(sekunde(0)) iMilisekund = CInt(sekunde(1)) End Sub 'Zbir dva vremenska zapisa. Rezultat je opet regularan vremenski zapis 'Sabirak moze sadrzati negativne vrednosti za sate, minute, sekunde i milisekunde Public Function zbir(ByVal vreme1 As Vreme, ByVal vreme2 As Vreme) As Vreme Dim rezultat As New Vreme rezultat.m_iMilisekund = vreme1.m_iMilisekund + vreme2.m_iMilisekund rezultat.m_iSekund = vreme1.m_iSekund + vreme2.m_iSekund rezultat.m_iMinut = vreme1.m_iMinut + vreme2.m_iMinut rezultat.m_iSat = vreme1.m_iSat + vreme2.m_iSat 'Korekcije kako bi milisekunde bili u opsegu [0, 999] If rezultat.m_iMilisekund >= 1000 Then rezultat.m_iMilisekund = rezultat.m_iMilisekund - 1000 rezultat.m_iSekund = rezultat.m_iSekund + 1 ElseIf rezultat.m_iMilisekund < 0 Then rezultat.m_iMilisekund = rezultat.m_iMilisekund + 1000 rezultat.m_iSekund = rezultat.m_iSekund - 1 End If 'Korekcije kako bi sekunde bili u opsegu [0, 59] If rezultat.m_iSekund >= 60 Then rezultat.m_iSekund = rezultat.m_iSekund - 60 rezultat.m_iMinut = rezultat.m_iMinut + 1 ElseIf rezultat.m_iSekund < 0 Then rezultat.m_iSekund = rezultat.m_iSekund + 60 rezultat.m_iMinut = rezultat.m_iMinut - 1 End If 'Korekcije kako bi minuti bili u opsegu [0, 59] If rezultat.m_iMinut >= 60 Then rezultat.m_iMinut = rezultat.m_iMinut - 60 rezultat.m_iSat = rezultat.m_iSat + 1 ElseIf rezultat.m_iMinut < 0 Then rezultat.m_iMinut = rezultat.m_iMinut + 60 rezultat.m_iSat = rezultat.m_iSat - 1 End If 'Vrednost funkcije Set zbir = rezultat End Function 'koristi se pri oduzimanju dva vremenska zapisa Public Function promenaZnaka() As Vreme Set promenaZnaka = New Vreme promenaZnaka.m_iSat = -m_iSat promenaZnaka.m_iMinut = -m_iMinut promenaZnaka.m_iSekund = -m_iSekund promenaZnaka.m_iMilisekund = -m_iMilisekund End Function 'Na osnovu vrednosti za sate, minute i sekunde, formira se niska u formatu "hh:mm:ss" Public Function formatiraj() As String 'primer rezultata je 00:03:06 formatiraj = Format(m_iSat, "00") & ":" & Format(m_iMinut, "00") & ":" & Format(m_iSekund, "00") & "," & Format(m_iMilisekund, "000") End Function