Clase Cu Atribute Multivaloare Si Sursa

6
C10 Clase cu atribute multivaloare 1)Ce sunt clasele cu atribute multivaloare? -sunt clasele care conţin cel puţin un atribut de tip colecţie 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)

description

clase

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