Εφαρμοσμένη Πληροφορική ΙΙ (Εργ.) Visual Basic 2010 Εργαστήριο 6 ο Αντικείμενο: Προσδιοριστές πρόσβασης ιδιοτήτων και μεθόδων. Πολυμορφισμός μεθόδων. Άσκηση 1 η : Να υλοποιήσετε την κλάση Time για τη μοντελοποίηση της ώρας της ημέρας: Ιδιότητες κλάσης: Η κλάση θα πρέπει να περιλαμβάνει τις Private ιδιότητες timhwras, timhleptou, timhsec. Κατασκευαστές κλάσης: Η κλάση θα περιλαμβάνει τους κατασκευαστές new() για τη δημιουργία της ώρας 0:00:00 new(w,l) για τη δημιουργία της ώρας w:l:00 new(w:l:s) για τη δημιουργία της ώρας w:l:s Μέθοδοι κλάσης: H κλάση θα πρέπει να περιλαμβάνει τις Public μεθόδους settime(w,l,s) για την ανάθεση της ώρας w:l:s στο τρέχον αντικείμενο getwra() για την επιστροφή της τιμής της ώρας του αντικειμένου getlepto() για την επιστροφή της τιμής του λεπτού του αντικειμένου getsec() για την επιστροφή των δευ/πτων του αντικειμένου και τις Private μεθόδους setwra(w) για την ανάθεση της ώρας w στο αντικείμενο setlepto(l) για την ανάθεση του λεπτού l στο αντικείμενο setsec(s) για την ανάθεση του δευ/πτου s στο αντικείμενο settime(w,l) για την ανάθεση της ώρας w:l:00 στο αντικείμενο Θα πρέπει να ελέγχετε ότι τα ορίσματα w, l και w των μεθόδων setwra(w), setlepto(w) και setsec(w) αντίστοιχα είναι στο σωστό εύρος τιμών και αν κάποια από αυτά δεν είναι θα ανατίθεται η τιμή μηδέν στην αντίστοιχη ιδιότητα. Επίσης, οι μέθοδοι new() και settime() θα πρέπει να χρησιμοποιούν τις τρεις μεθόδους setwra(w), setlepto(w) και setsec(w) για την ανάθεση τιμών στις ιδιότητες. Στη συνέχεια να ελέγξετε την υλοποίηση της κλάσης, χρησιμοποιώντας την παρακάτω φόρμα ενημέρωσης της ώρας για ένα αντικείμενο της κλάσης με αρχική ώρα 0:00:00 :
Ο χρήστης θα εισάγει ώρες/λεπτά/δευτερόλεπτα στα 3 textbox και στη συνέχεια πατώντας το button «Ενημέρωση» η ώρα θα ανατίθεται στο αντικείμενο και θα εμφανίζεται στο label των αποτελεσμάτων. Θα πρέπει να ελέγχετε ότι οι 3 αριθμοί που δόθηκαν είναι ακέραιοι, αλλιώς θα πρέπει να εμφανίζεται μήνυμα λάθους με MessageBox. Τέλος, με το button «+1 Δ/λεπτο» η ώρα του αντικειμένου θα αυξάνεται κατά 1 δευτερόλεπτο και η νέα τιμή της ώρας θα εμφανίζεται στο label των αποτελεσμάτων. Public Class Time Private timhwras As Integer Private timhleptou As Integer Private timhsec As Integer Public Sub New() timhwras = 0 timhleptou = 0 timhsec = 0 Public Sub New(ByVal timhwras As Integer, ByVal timhl As Integer) settime(timhwras, timhl) Public Sub New(ByVal timhwras As Integer, ByVal timhl As Integer, ByVal timhsec As Integer) settime(timhwras, timhl, timhsec) Private Sub setwra(byval timhwras As Integer) If timhwras > 23 OrElse timhwras < 0 Then Me.timhWras = 0 Else Me.timhWras = timhwras Private Sub setlepto(byval l As Integer) If l > 60 OrElse l < 0 Then timhleptou = 0 Exit Sub timhleptou = l Private Sub setsec(byval s As Integer) If s > 60 OrElse s < 0 Then timhsec = 0 Exit Sub timhsec = s
Public Sub settime(byval wr As Integer, ByVal l As Integer, ByVal s As Integer) setwra(wr) setlepto(l) setsec(s) Public Sub settime(byval wr As Integer, ByVal l As Integer) setwra(wr) setlepto(l) setsec(0) Public Function getwra() As Integer Return timhwras Public Function getlepto() As Integer Return timhleptou Public Function getsec() As Integer Return timhsec Public Class Form1 Dim time As Time Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load time = New Time() 'Δημιουργία αντικειμένου - - Ώρα: 0:00:00 outlabel.text = "Ώρα:0 Λεπτά:0 Δ/λεπτα:0" Private Sub setbutton_click(byval sender As Object, ByVal e As System.EventArgs) Handles setbutton.click Dim wra As String = hourtb.text Dim lepta As String = mintb.text Dim sec As String = sectb.text If IsNumeric(wra) AndAlso wra - Int(wra) = 0 AndAlso IsNumeric(lepta) _ AndAlso lepta - Int(lepta) = 0 AndAlso IsNumeric(sec) AndAlso sec - Int(sec) = 0 Then time.settime(wra, lepta, sec) outlabel.text = "Ώρα:" & wra & " Λεπτά:" & lepta & " Δ/λεπτα:" & sec Else MessageBox.Show("Ώρα:" & wra & " Λεπτά:" & lepta & " Δ/λεπτα:" & sec, "Λάθος") Private Sub incbutton_click(byval sender As Object, ByVal e As System.EventArgs) Handles incbutton.click Dim wra As Integer, lepto As Integer, sec As Integer wra = time.getwra() lepto = time.getlepto() sec = time.getsec() + 1 sec = sec Mod 60 If sec = 0 Then lepto = (lepto + 1) Mod 60 If lepto = 0 Then wra = (wra + 1) Mod 24 time.settime(wra, lepto, sec) outlabel.text = "Ώρα:" & wra & " Λεπτά:" & lepto & " Δ/λεπτα:" & sec
Άσκηση 2 η : Να υλοποιήσετε την κλάση Employee για την περιγραφή των εργαζομένων εταιρείας: Ιδιότητες κλάσης: Η κλάση θα πρέπει να περιλαμβάνει τις Private ιδιότητες epi8eto, onoma, amoibh και την Private Shared ιδιότητα metrhths. Η ιδιότητα metrhths θα μετράει τον αριθμό των αντικειμένων της κλάσης που έχουν δημιουργηθεί από το πρόγραμμα. Κατασκευαστές κλάσης: Η κλάση θα περιλαμβάνει τον κατασκευαστή new(ep,onoma,am) για τη δημιουργία των αντικειμένων της και την ενημέρωση του μετρητή. Μέθοδοι κλάσης: H κλάση θα πρέπει να περιλαμβάνει τις Public μεθόδους getepi8eto() getonoma() getamoibh() getasstring() για την επιστροφή των στοιχείων του εργαζομένου και την Public Shared μέθοδο getmetrhths() για την επιστροφή του αριθμού των αντικειμένων που έχουν δημιουργηθεί. Στη συνέχεια να υλοποιήσετε την παρακάτω φόρμα: στην οποία ο χρήστης δίνει τα στοιχεία του εργαζομένου στα 3 textbox και πατώντας το button «Εισαγωγή» δημιουργείται ένα νέο αντικείμενο και ενημερώνεται με τα στοιχεία του το πάνω label της φόρμας. Αν η αμοιβή του εργαζομένου είναι μεγαλύτερη όσων έχουν εξετασθεί μέχρι στιγμής, ενημερώνεται και το κάτω label της φόρμας.
Public Class Employee Private epi8eto As String Private onoma As String Private amoibh As Decimal Private Shared metrhths As Integer 'metrhths = 0 Public Sub New(ByVal ep As String, ByVal onoma As String, ByVal am As Decimal) epi8eto = ep Me.onoma = onoma Me.amoibh = am metrhths = metrhths + 1 Public Function getepi8eto() As String Return epi8eto Public Function getonoma() As String Return onoma Public Function getamoibh() As Decimal Return amoibh Public Shared Function getmetrhths() As Integer Return metrhths Public Function getasstring() As String Return "Επίθετο:" & epi8eto & vbcrlf & "Όνομα:" & onoma & vbcrlf & " Αμοιβή:" & amoibh Public Class Form1 Dim erg As Employee, bester As Employee Private Sub insbutton_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles insbutton.click erg = New Employee(epΤΒ.Text, ontb.text, amtb.text) If IsNothing(bestEr) OrElse erg.getamoibh() > bester.getamoibh() Then bester = erg currerlabel.text = Employee.getMetrhths() & "ος Εργαζόμενος:" & vbcrlf & erg.getasstring() besterlabel.text = "Καλύτερα Aμοιβόμενος:" & vbcrlf & bester.getasstring()