Clase Cu Atribute Multivaloare Si Sursa
-
Upload
oana-amelia -
Category
Documents
-
view
217 -
download
1
description
Transcript of Clase Cu Atribute Multivaloare Si Sursa
C10 Clase cu atribute multivaloare1)Ce sunt clasele cu atribute multivaloare?
-sunt clasele care conin cel puin un atribut de tip colecie sau tablou
-de regul aceste atribute sunt publice
Pentru exemplificare vom considera clasele:
Unde:
-clasele LinieFactura i Factura sunt clase concrete
-atributele m_DenumireProdus, m_Numar, m_Emitent i m_Tert sun de tip String (Private)
-atributele m_Cantitate, m_Pret, m_CotaTva sunt de tip Single (Private)
-atributul m_Data este de tipul Date (Private)
-atributul colLiniiFactura este de tipul LinieFactura (Public)Pentru atribitele Private: m_DenumireProdus, m_Numar, m_Emitent, m_Tert, m_Cantitate, m_Pret, m_CotaTva i m_Data vor fi definite proprietile Public: denumireProdus, numar, emitent, tert, cantitate, pret, cotaTva i data cu urmtoarele restricii de integritate: cotaTva poate lua valorile: 0, 0.09 sau 0.24Cerine:
a)S se implementeze cele dou clase
b)La click pe Button1 s se preia cu InputBox() datele pentru o factur cu un numr precizat de liniic)La click pe Button2 s se afieze coninutul facturii
Vom avea:
a)Implementarea claselor
Public Class Form1 'Definesc un obiect Factura (instanta clasei Factura) Public oFactura As New Factura ' Definirea clasei LinieFactura Public Class LinieFactura 'Definire atribute Private m_DenumireProdus As String Private m_Cantitate As Decimal Private m_Pret As Decimal Private m_CotaTva As Decimal ' Definire proprietati Public Property DenumireProdus As String Get DenumireProdus = m_DenumireProdus
End Get Set(ByVal value As String)
m_DenumireProdus = value
End Set End Property Public Property Cantitate As Decimal Get Cantitate = m_Cantitate
End Get Set(ByVal value As Decimal)
m_Cantitate = value
End Set End Property Public Property Pret As Decimal Get Pret = m_Pret
End Get Set(ByVal value As Decimal)
m_Pret = value
End Set End Property Public Property CotaTva As Decimal Get CotaTva = m_CotaTva
End Get Set(ByVal value As Decimal)
If value = 0.24 Or value = 0.09 Or value = 0 Then m_CotaTva = value
Else m_CotaTva = -1
MessageBox.Show("Cota diferita de 0,24, 0,09 sau 0")
End If End Set End Property ' Definire metode Public Function CalculValLinie() As Decimal Return Cantitate * Pret
End Function Public Function CalculTvaLinie() As Decimal Return CalculTvaLinie() * CotaTva
End Function Public Function TotalLinie() As Decimal Return CalculTvaLinie() + CalculTvaLinie()
End Function End Class ' Definirea clasei Factura Public Class Factura 'Definire atribute private individuale Private m_NumarFactura As String Private m_DataFactura As Date Private m_EmitentFactura As String Private m_TertFactura As String ' definire atribut multiplu (colectie) Public colLiniiFactura As ArrayList 'Definire proprietati Public Property NumarFactura As String Get NumarFactura = m_NumarFactura
End Get Set(ByVal value As String)
If value "" Then m_NumarFactura = value
Else MessageBox.Show("Numar factura eronat")
m_NumarFactura = -1
End If End Set End Property 'Definire metode Public Function CalculValoareFactura() As Decimal CalculValoareFactura = 0
For Each a As LinieFactura In colLiniiFactura
CalculValoareFactura = CalculValoareFactura + a.CalculValLinie
Next Return CalculValoareFactura
End Function Public Function CalculTvaFactura() As Decimal Dim wCalculTvaFactura As Decimal wCalculTvaFactura = 0
For Each b As LinieFactura In colLiniiFactura
wCalculTvaFactura = wCalculTvaFactura + b.CalculTvaLinie
Next Return wCalculTvaFactura
End Function Public Function CalculTotalFactura() As Decimal Return CalculValoareFactura() + CalculTvaFactura()
End Function End Class Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'Preluare antet factura oFactura.NumarFactura = InputBox("Tastati numar Factura")
If oFactura.NumarFactura = -1 Then MessageBox.Show("Numar factura incorect")
End End If If oFactura.NumarFactura -1 Then Dim wNrLiniiFactura As Integer wNrLiniiFactura = InputBox("Tastati nr. linii factura de preluat")
If wNrLiniiFactura > 0 Then 'Preiau continut factura (linii factura) For i = 1 To wNrLiniiFactura
'Definesc un obiect LinieFactura (Instanta clasei LinieFactura) Dim oLineFactura As New LinieFactura 'Preiau date de pe o linie oLineFactura.DenumireProdus = MessageBox.Show("Tastati denumire produs")
oLineFactura.Cantitate = MessageBox.Show("Tastati cantitate")
oLineFactura.Pret = MessageBox.Show("Tastati pret")
oLineFactura.CotaTva = MessageBox.Show("Tastati cotaTva")
'daca datele sunt corecte le adaug in colectie If oLineFactura.CotaTva -1 Then oFactura.colLiniiFactura.Add(oLineFactura)
Else 'Fortez terminarea oFactura.NumarFactura = -1
MessageBox.Show("Date eronate in linie Factura")
End End If Next Else MessageBox.Show("Numar linii factura eronat")
End If End If End Sub Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
'Verific daca factura este corecta If oFactura.NumarFactura = -1 Then MessageBox.Show("Factura eronata")
Else 'Afisez continut factura 'Afisare antet MessageBox.Show("NumarFactura: " & oFactura.NumarFactura)
'Afisare final factura MessageBox.Show("Total valoare factura:" & oFactura.CalculValoareFactura())
MessageBox.Show("Total Tva factura:" & oFactura.CalculTvaFactura())
MessageBox.Show("Total factura:" & oFactura.CalculTotalFactura())
End If End SubEnd Class