Sunteți pe pagina 1din 11

VB.Net – Seminar 2.

ID

Cuprins

Lucrul cu obiecte, clase şi colecţii în VB.NET ........................................................... 2

Partea I-a – Implementarea claselor în VB.NET. Clasa Persoana .......................... 2

Partea a II-a – Definirea colecției Studenți .......................................................... 8

Partea a III-a - Parcurgerea colecţiei Studenți pentru a număra câți studenţi au


promovat .......................................................................................................... 10

© Conferenţiar universitar dr. Veronica POPESCU Page 1


Lucrul cu obiecte, clase şi colecţii în VB.NET
Partea I-a – Implementarea claselor în VB.NET. Clasa Persoana
Să se implementeze în VB:NET clasele: PERSOANA, STUDENT ȘI ANGAJAT

Ştiind că:

a) sCnp

- primul caracter poate să fie doar 1 sau 2;

b) iNotaLaProgramare sau iNotaLaContabilitate

- pot lua valori mai mari sau egale cu 1 şi mai mici sau egale cu 10;

c) studentul se consideră promovat dacă ambele note sunt mai mari strict decât 4;

d) Calculul funcției: Media() presupune:

- să se verifice dacă, atât iNotaLaProgramare cât şi iNotaLaContabilitate sunt mai mari sau egale cu 5
şi:

 dacă DA, se calculează:

 suma notelor: iSumaNote = iNotaLaProgramare + iNotaLaContabilitate;

 media: dMedia=iSumaNote/2

© Conferenţiar universitar dr. Veronica POPESCU Page 2


[A] Să se implementeze în VB.NET clasa:
 Persoana - clasă părinte,

Rezolvare pe paşi:
1. Se lansează VB.NET şi se realizează un nou proiect (o nouă aplicaţie):

- File, New Project …

- se selectează opţiunea Windows Forms Application, se atribuie un nume aplicației şi se dă un clic


pe OK

2. Se intră în fereastra de cod:

- View, Code

Aici este deja generat codul:

Public Class Form1

End Class

Notă:
În cadrul clasei Form1 putem genera mai multe clase:

Public Class Form1

Public Class Persoana

End Class

Public Class Student

End Class

End Class

© Conferenţiar universitar dr. Veronica POPESCU Page 3


3) La nivelul formei (în fereastra de cod) se defineşte clasa Persoana

Public Class Form1


Public Class Persoana

End Class
End Class

Notă: în interiorul acestui cod vom construi ceea ce ne propunem în aplicație.

Definirea unei clase presupune, în general:


a) Definire atribute:

'definire atribute (se face cu Private)


'atribute: numele acestora este de preferat sa fie
precedate de "m_"
Private m_sNumePrenume As String
Private m_sCnp As String

b) Definire proprietăţi:

'proprietati (se citesc cu "Get" si se scriu cu "Set")


Public Property sNumePrenume() As String
'citire cu Get, selector pentru citire
Get
sNumePrenume = m_sNumePrenume
End Get
'scriere cu Set, modificator pentru scriere
Set(ByVal value As String)
m_sNumePrenume = value
End Set
End Property

c) Definire metode – vezi Metalimbaj

© Conferenţiar universitar dr. Veronica POPESCU Page 4


Urmând pașii 1, 2, 3, ținând cont de și de condiția pentru CNP,

Definesc clasa: Persoana


' Definirea clasei Persoana partial (nu analizez toate elementele)
Public Class Persoana
'a)Definire atribute
Private m_sNumePrenume As String
Private m_sCnp As String
'b)Definire proprietati
'b1. Definirea proprietatii sNumePrenume
Public Property sNumePrenume() As String
Get
sNumePrenume = m_sNumePrenume
End Get
Set(ByVal value As String)
m_sNumePrenume = value
End Set
End Property
'b2. Definirea proprietatii sCnp
Public Property sCnp() As String
Get
sCnp = m_sCnp
End Get
Set(ByVal value As String)
'Daca prima pozitie din CNP este 1 sau 2, consideram ca acesta este corect
If value.StartsWith("1") Or value.StartsWith("2") Then
m_sCnp = value
Else
MsgBox("Prima pozitie din CNP nu este 1 sau 2")
m_sCnp = " "
End If
End Set
End Property
'c) Definire metode
Public Function CalculVarstaAni() As Integer
Return 0
End Function
End Class

© Conferenţiar universitar dr. Veronica POPESCU Page 5


[B] Să se implementeze în VB.NET clasa:
 Student - clasă copil: ceea ce înseamnă că moşteneşte proprietăţile clasei părinte:
Persoana.

Rezolvare pe paşi:

Definesc clasa: Student


Respect condițiile inițiale pentru iNotaLaProgramare / iNotaLaContabilitate care:

- pot lua valori mai mari sau egale cu 1 şi mai mici sau egale cu 10;

- studentul se consideră promovat dacă ambele note sunt mai mari strict decât 4.


' Definirea clasei Student partial (nu analizez toate elementele)

Public Class Student


'Precizare clasa parinte
Inherits Persoana
'a)Definire atribute
Private m_iNotaLaProgramare As Integer
Private m_iNotaLaConta As Integer
'b)Definire proprietati
Public Property iNotaLaProgramare() As Integer
'Citire nota la Programare
Get
iNotaLaProgramare = m_iNotaLaProgramare
End Get
'Scriere nota la Programare
Set(ByVal value As Integer)
'Verific nota
If value >= 1 And value <= 10 Then
m_iNotaLaProgramare = value
Else
MsgBox("Nota la Programare este gresita; i
se va atribui valoarea 0")
m_iNotaLaProgramare = 0
End If
End Set
End Property
Public Property iNotaLaConta() As Integer
'Citire nota la Contabilitate
Get
iNotaLaConta = m_iNotaLaConta
End Get

© Conferenţiar universitar dr. Veronica POPESCU Page 6


'Scriere nota la Contabilitate
Set(ByVal value As Integer)
'Verific nota
If value >= 1 And value <= 10 Then
m_iNotaLaConta = value
Else
MsgBox("Nota la Contabilitate este
gresita; i se va atribui valoarea 0")
m_iNotaLaConta = 0
End If
End Set
End Property
'c)Definire metode

Public Function Media() As Decimal


'Se declara variabile locale
Dim iSumaNote As Integer
Dim dMedia As Decimal
'Daca examenele sunt promovate
If iNotaLaProgramare > 4 And iNotaLaConta > 4 Then
'Se calculeaza media
iSumaNote = iNotaLaProgramare + iNotaLaConta
dMedia = iSumaNote / 2
Else
dMedia = 0
End If
'Se returneaza rezultatul functiei
Return dMedia
End Function
End Class

© Conferenţiar universitar dr. Veronica POPESCU Page 7


Partea a II-a – Definirea colecției Studenți
- Să definească colecţia Studenti de tipul ArrayList

- Să se instanţieze clasa Student şi să se preia datele pentru „n” studenţi pe care va trebui să
îi adăugăm în colecţia Studenţi;

- Să se parcurgă colecţia şi să se afişeze datele studenţilor introduşi în colecţie

Rezolvare pe paşi:
1) La nivelul formei (în fereastra de cod) se defineşte colecţia studenţi

Public Class Form1


'Definirea colectiei Studenti
Private colStudenti As New ArrayList
2) În interfaţa grafică se adaugă butonul Button1 a cărei proprietate Text se schimbă din Button1 în
Incarc Colectie de studenti

3) La evenimentul clic pe Button1:

Name cmdIncarc

Text Incarc Colectia de studenti

- vom crea obiectul unStudent (instanţia) din clasa Student:

'Instantiez clasa Student (creez un obiect al


colectiei)
Dim unStudent As New Student
- vom prelua numele şi prenumele studentului, CNP-ul şi notele la programare şi contabilitate;

- vom adăuga obiectul în colecţie:

'Adaug studentul in colectie


colStudenti.Add(unStudent)

© Conferenţiar universitar dr. Veronica POPESCU Page 8


4) Pasul 3 se repetă până terminăm de introdus toţi studenţii

5) În interfaţa grafică se adaugă butonul Button2 (cmdAfisezColectie) a cărei proprietate Text


se schimbă din Button2 în Afisez Colectia de studenti

6) La evenimentul clic pe Button2 (cmdAfisezColectie), cu proprietatea Text: Afisez Colectia

de studenti (proprietatea Name a butonului: cmdAfisez):

Name cmdAfisezColectie

Text Afisez Colectia de studenti

- vom afişa pentru fiecare student din colecţie: numele şi prenumele; notele şi media

Private Sub cmdAfisez_Click(sender As Object, e As EventArgs)


Handles cmdAfisez.Click
For Each unElement As Student In colStudenti
MsgBox("Sudentul: " & unElement.sNumePrenume & " are
notele: " & unElement.iNotaLaProgramare & ", " &
unElement.iNotaLaConta & " iar media=" &
unElement.Media)
Next
End Sub

© Conferenţiar universitar dr. Veronica POPESCU Page 9


Partea a III-a - Parcurgerea colecţiei Studenți pentru a număra câți studenţi
au promovat
 Să se parcurgă colecţia Studenti şi să se afişeze câţi studenţi sunt promovaţi

Rezolvare pe paşi:
1) La nivelul formei (în fereastra de Desing) se adaugă butonul Button3 a cărei proprietate Text se
schimbă din Button3 (cmdPromovati) în Afisez studentii Promovati

2) La evenimentul clic pe Button3 (cmdPromovati):

Name cmdPromovati

Text Afisez studentii Promovati

- vom afişa numărul total al studenţilor, numărul studenţilor promovaţi şi procentul de


promovabilitate.

© Conferenţiar universitar dr. Veronica POPESCU Page 10


Private Sub cmdPromovati_Click(sender As Object, e As
EventArgs) Handles cmdPromovati.Click
'afisare numarul total , numarul studentilor promovati
si procentul de promovabilitate
Dim iPromovati As Integer
Dim iNrStudenti As Integer
Dim dProcent As Decimal
iPromovati = 0
iNrStudenti = 0
For Each UnStud As Student In colStudenti
iNrStudenti = iNrStudenti + 1
If UnStud.Media > 4 Then
iPromovati = iPromovati + 1
End If
Next
dProcent = (iPromovati / iNrStudenti) * 100
MsgBox("Procentul de promovabilitate este" & Chr(10) &
Format(dProcent, "fixed") & "%")
End Sub

3) La evenimentul clic pe Button4 (cmdStop) aplicația se termină.

Name cmdStop

Text Stop

Private Sub cmdStop_Click(sender As Object, e As


EventArgs) Handles cmdStop.Click
End
End Sub

© Conferenţiar universitar dr. Veronica POPESCU Page 11

S-ar putea să vă placă și