Documente Academic
Documente Profesional
Documente Cultură
1) Ce este o colecie de obiecte? -o variabil de memorie ce conine o mulime (o list) de elemente de tip obiect stocate n memoria intern n zone neadiacente de memorie 2) Care sunt etapele necesare definirii, ncrcrii i utilizrii (valorificrii) unei colecii ArrayList de obiecte? a) se definesc clasele b) se definete colecia c) se ncarc obiectele n colecie -se instaniaz un obiect al unei clase -se preiau valorile proprietilor (uneori i ale atributelor neprotejate) ale obiectelor i se adaug n colecie d) se actualizeaz colecia -se terg anumite obiecte din colecie -se adaug noi obiecte n colecie -se modific valorile unor proprieti ale unui obiect din colecie e) se valorific (se utilizez) datele unei colecii -se parcurge colecia i se fac prelucrrile solicitate pe baza datelor din colecie
Unde: -clasa Document este clas abstract iar clasa Cec este o clas concret. Clasa Cec este clasa secundar/derivat/copil avnd clasa Document clas de baz/superclasa/printe -atributele:m_FelDoc, m_NrDoc, m_EmitentDoc, m_TipOperatie, m_DenumireTert sunt de tip String; m_DataDoc este de tip Date i m_SumaCec este de tip Integer; -atributul m_TipOperatie poate lua doar valorile: I pentru cec de ncasat; P pentru cec de plat i S pentru cec depus spre scontare -pentru atributele Private: m_FelDoc, m_TipOperatie i m_Suma se vor defini proprietile similare: felDoc, tipOperatie, sumaCec Cerine: i) s se defineasc clasele
ii) s defineasc la nivelul clasei Form1 colecia Cecuri iii) la evenimentul click pe Button1 s se instanieze obiectul cec, s se preia cu InputBox valorile proprietilor felDoc, tipOperatie, sumaCec i s se adauge n colecie iv) la evenimentul click pe Button2 s se afieze coninutul coleciei element cu element v) la evenimentul click pe Button3 s se parcurg colecia Cecuri i s se afieze Suma de incasate este = , sum care se va obine prin nsumarea sumelor nscrie n cecurile din colecie care au tipOperatie egal cu I Vom avea: i) definirea claselor - definirea clasei document
Public MustInherit Class Document 'definirea atributelor Private m_FelDoc As String Private m_NrDoc As String Private m_DataDoc As Date Private m_EmitentDoc As String 'definirea proprietatilor Public Property felDoc() As String Get Return m_FelDoc End Get Set(ByVal value As String) m_FelDoc = value End Set End Property 'definirea metodelor End Class
Get
Return m_TipOperatie End Get Set(ByVal value As String) 'validarea datelor introduse If value = "I" Or value = "P" Or value = "S" Then m_TipOperatie = value Else m_TipOperatie = "" MsgBox("Tip operatie diferit de I,P sau S") End If End Set End Property Public Property sumaCec() As Integer Get Return m_SumaCec End Get Set(ByVal value As Integer) m_SumaCec = value End Set End Property 'definirea metodelor End Class
'Incarc un cec in colectie - este corect cecuri.Add(unCec) MsgBox("Cec Ok") End If End Sub End Class
3) Cum se mai pot prelua (ncrca) proprietile unui obiect n afar de InputBox? -cu ajutorul formularelor 4) Ce presupune utilizarea formularelor la ncrcarea proprietilor unui obiect? a) construirea interfeei (a formularului sau a machetei de preluare) b) definirea procedurii de ncrcare validare -se introduc noile valori n macheta de culegere a datelor
-se valideaz datele i dac sunt corecte (se instaniaz un nou obiect; se transfer datele din machet n proprieti; se adaug obiectul n colecie) Exemplu: Pentru preluarea proprietilor felDoc, tipOperatie, sumaCec vom construi urmtoarea interfa:
Unde: - n stnga machetei am utilizat etichete Fel Document, Tip Operatie i Suma Cec cu rol explicativ; iar - n partea dreapt am folosit TextBox-uri n care vom introduce noile valori ale proprietilor de ncrcat cu numele txtFelDoc, txtTipOperaie, txtSumaCec. Not: ceeace vom introduce noi n TextBox-uri va fi memorat i disponibil n proprietatea text a fiecrui control de tip TextBox Dorim ca la click pe Button4 (PreluareValidare) s verificm dac am introdus date corecte n TextBox-uri i dac sunt corecte s
instaniem un nou obiect s transferm valorile ncrcate n proprietile obiectului i s adugm obiectul n colecie. Dac datele nu sunt corecte, atunci afim un mesaj de avertizare. Not: Pentru validarea corectitudinii proprietii tipOperatie am definit procedura txtTipOp_Validating care practic nu mai permite prsirea controlului txtTipOperatie dac nu se introduce o valoare coerct:
Private Sub txtTipOp_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtTipOp.Validating If txtTipOp.Text = "I" Or txtTipOp.Text = "P" Or txtTipOp.Text = "S" Then Else e.Cancel = True MsgBox("Tip operatie diferit de I,P sau S") txtTipOp.Text = "" End If End Sub
5) Cum putem s rsfoim o colecie de obiecte? -cu ajutorul butoanelor de comand Astfel vom construi urmtoarele butoane cu urmtoarele sarcini:
Simbol
Sarcin Se afieaz pe primul element din colecie (index zero) i afieaz coninutul acestuia Se deplaseaz pe urmtorul element din colecie i afieaz coninutul acestuia Se deplaseaz pe elementul precedent din colecie i afieaz coninutul acestuia Se deplaseaz pe ultimul element din colecie (index count) i afieaz coninutul acestuia
Private Sub btnPrima_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrima.Click 'curat macheta txtFelDoc.Text = "" txtTipOp.Text = "" txtSumaCec.Text = 0 'ma pozitionez pe primul element din colectie si afisez continutul cecCurent = cecuri.Item(0) txtFelDoc.Text = cecCurent.felDoc txtTipOp.Text = cecCurent.tipOperatie txtSumaCec.Text = cecCurent.sumaCec 'memorez indexul curent i = 0 End Sub Private Sub btnDreapta_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDreapta.Click 'curat macheta txtFelDoc.Text = "" txtTipOp.Text = "" txtSumaCec.Text = 0 'ma pozitionez pe urmatorul element din colectie (daca exista) si afisez continutul If i < cecuri.Count - 1 Then i = i + 1 End If cecCurent = cecuri.Item(i)
txtFelDoc.Text = cecCurent.felDoc txtTipOp.Text = cecCurent.tipOperatie txtSumaCec.Text = cecCurent.sumaCec End Sub Private Sub btnUltima_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUltima.Click 'curat macheta txtFelDoc.Text = "" txtTipOp.Text = "" txtSumaCec.Text = 0 'ma pozitionez pe ultimul element din colectie si afisez continutul
cecCurent = cecuri.Item(cecuri.Count - 1) 'afisez continutul txtFelDoc.Text = cecCurent.felDoc txtTipOp.Text = cecCurent.tipOperatie txtSumaCec.Text = cecCurent.sumaCec 'preiau indexul i = cecuri.Count - 1 End Sub Private Sub btnStanga_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnStanga.Click 'curat macheta txtFelDoc.Text = "" txtTipOp.Text = "" txtSumaCec.Text = 0 'ma pozitionez pe precedentu element din colectie (daca exista) si afisez continutul If i > 0 Then i = i - 1 End If MsgBox(i) cecCurent = cecuri.Item(i) txtFelDoc.Text = cecCurent.felDoc txtTipOp.Text = cecCurent.tipOperatie txtSumaCec.Text = cecCurent.sumaCec End Sub
6) Cum putem s actualizm o colecie de obiecte? -cu ajutorul butoanelor de comand Astfel vom construi urmtoarele butoane cu urmtoarele sarcini:
Simbol
Nume
Sarcin
btnCautDupaFelDoc Se introduce felul documentului cautat i dac va fi gsit se afieaz elementul respectv btnCautDupaIndex Se introduce indexul i dac este corect se afieaz elementul cu indexul respectiv Se terge obiectul curent al coleciei dac se confirm tergerea Adaug un nou obiect n colecie Se modific coninutul obiectului aflat n machet terge toate obiectele din colecie
brnSterg
Private Sub btnCautFelDoc_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCautFelDoc.Click 'Definesc variabila de cautat Dim felDocCautat As String 'Preiau variabila de cautat felDocCautat = InputBox("Tastati fel document de cautat") 'caut cecCurent = Nothing For Each element As Cec In cecuri If element.felDoc = felDocCautat Then cecCurent = element Exit For End If Next If IsNothing(cecCurent) Then MsgBox("Documentul nu a fost gasit") 'curat macheta txtFelDoc.Text = "" txtTipOp.Text = "" txtSumaCec.Text = 0
txtFelDoc.Text = cecCurent.felDoc txtTipOp.Text = cecCurent.tipOperatie txtSumaCec.Text = cecCurent.sumaCec End If End Sub Private Sub btnCautIndex_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCautIndex.Click 'Definesc indexul de cautat Dim j As Integer 'Preiau indexul j = InputBox("Tastati indexul") 'caut cecCurent = Nothing If j > -1 And j < cecuri.Count Then cecCurent = cecuri.Item(j) End If If IsNothing(cecCurent) Then MsgBox("Indexul nu exista") 'curat macheta Call CuratMacheta() Else 'afisez cecul gasit txtFelDoc.Text = cecCurent.felDoc txtTipOp.Text = cecCurent.tipOperatie txtSumaCec.Text = cecCurent.sumaCec i = j End If End Sub Private Sub btnModific_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnModific.Click If IsNothing(cecCurent) Then MsgBox("Cecul nu poate fi modificat") Else cecCurent.felDoc = txtFelDoc.Text cecCurent.tipOperatie = txtTipOp.Text cecCurent.sumaCec = txtSumaCec.Text End If
End Sub Private Sub btnSterg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSterg.Click Dim raspuns As Integer If IsNothing(cecCurent) Then MsgBox("Cecul nu poate fi sters") Else
raspuns = MsgBox("Doriti sa stergeti acest Cec ", MsgBoxStyle.Question + MsgBoxStyle.YesNo) If raspuns = vbYes Then cecuri.Remove(cecCurent) Call CuratMacheta() End If End If End Sub Private Sub btnAdaug_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdaug.Click 'Verific daca am introdus ceva in tipOperatie deoarece ' aplicand(procedura) Validating daca introducem ceva acela nu poate fi decat corect If txtTipOp.Text = "" Then MsgBox("Tip operatie eronata") Else 'Definesc un nou obiect Dim unCec As New Cec 'Transfer datele din macheta in obiect unCec.felDoc = txtFelDoc.Text unCec.tipOperatie = txtTipOp.Text unCec.sumaCec = txtSumaCec.Text 'Adaug obiectul in colectie cecuri.Add(unCec) End If End Sub Private Sub btnCuratMacheta_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCuratMacheta.Click 'apelez procedura CuratMachete Call CuratMacheta() End Sub Private Sub btnCuratColectia_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCuratColectia.Click cecuri.Clear() Call CuratMacheta() End Sub Private Sub CuratMacheta() 'curat macheta txtFelDoc.Text = "" txtTipOp.Text = "" txtSumaCec.Text = 0 End Sub End Class