Λοιπόν, θα σου δώσω παραδείγματα, απλά και όμορφα, μέσα απο την ζωή..
Φαντάσου τον εαυτό σου σαν μια κλάση..Εσύ σαν κλάση, έχεις όνομα,επίθετο,τόπο γέννησης,όνομα πατέρα,τηλέφωνο κλπ κλπ..Όλα αυτά αποτελούν properties της κλάσης του εαυτού σου..Όλα αυτά είναι γνωστά στο κοινό, όποτε είναι public fields της κλάσης του εαυτού σου..Όμως, το αν εσύ, γουστάρεις την Μαρία αντί για την Γιώτα, είναι μόνο μέσα στο μυαλό σου, οπότε, αυτό είναι ενα private field της κλάσης του εαυτού σου, το οποίο εμείς οι άλλοι, δεν μπορούμε να το δούμε..
Σε κώδικα εσύ θα ήσουν κάτι τέτοιο:
class tomkarachris {
private string _firstname,_lastname,_telephone,_kopela;
public string Firstname {
get {
return _firstname;
}
set {
_firstname = value;
}
}
public string Lastname {
get {
return _lastname;
}
set {
_lastname = value;
}
}
public string Telephone {
get {
return _telephone;
}
set {
_telephone = value;
}
}
private string Kopela {
get {
return _kopela;
}
set {
_kopela = value;
}
}
}Τώρα, όταν η μαμά σου σε έφερνε στον κόσμο, τότε έκανε κατι τέτοιο:
Tomkarachris mySelf = new Tomkarachris();
mySelf.Firstname = "Tom";
mySelf.Lastname = "Karachris";
mySelf.Telephone = "210 9599000";έφτιαξε δηλαδή ένα αντικείμενο, το οποίο ονομάζεται mySelf το οποίο προήλθε απο την κλάση TomKarachris..Για να είμαστε πιο σωστή, θα ονομάσουμε την κλάση μας πλέον Human,καθώς όλοι έχουμε τα ίδια properties (όνομα,επίθετο,τηλέφωνο και κοπέλα)..Άρα ο κώδικας μας θα γίνει πλέον:
class Human {
private string _firstname,_lastname,_telephone,_kopela;
public string Firstname {
get {
return _firstname;
}
set {
_firstname = value;
}
}
public string Lastname {
get {
return _lastname;
}
set {
_lastname = value;
}
}
public string Telephone {
get {
return _telephone;
}
set {
_telephone = value;
}
}
private string Kopela {
get {
return _kopela;
}
set {
_kopela = value;
}
}
}
Human aHuman = new Human();
aHuman.Firstname = "Tom";
aHuman.Lastname = "Karachris";
aHuman.Telephone = "210 9599000";Άν θέλουμε πλέον να δούμε το όνομά σου θα ζητήσουμε απλά απο την κλάση aHuman τα properties Firstname και Lastname, κάνοντας
string yourName = aHuman.Firstname + " " + aHuman.Lastname;Θα μπορούσαμε όμως πολύ απλά να φτιάξουμε μια method η οποία θα μας επιστρέφει κατευθείαν το όνομά σου, χωρίς να χρειάζεται να το "φτιάξουμε εμείς"..
Προσθέτουμε λοιπόν στην κλάση την method GetFullName(); και ο κώδικάς μας γίνεται πλέον:
class Human {
private string _firstname,_lastname,_telephone,_kopela;
public string Firstname {
get {
return _firstname;
}
set {
_firstname = value;
}
}
public string Lastname {
get {
return _lastname;
}
set {
_lastname = value;
}
}
public string Telephone {
get {
return _telephone;
}
set {
_telephone = value;
}
}
private string Kopela {
get {
return _kopela;
}
set {
_kopela = value;
}
}
public string GetFullName() {
//To this αναφέρεται στο αντικείμενο απο το οποίο καλούμε, γιατι το αντικείμενο δεν μπορεί να ξέρει τι όνομα του δώσαμε (το δικό μας λέγεται aHuman),
//οπότε αναφερόμαστε στον εαυτό του, σαν this
//Αν έγραφες aHuman._firstname εδώ, θα έπερνες μήνυμα λάθους απο τον compiler
return this._firstname + " " + this._lastname;
}
}Με αυτό τον κώδικα πλέον θα μπορούσαμε να κάνουμε απλά:
string yourName = aHuman.GetFullName();και να πάρουμε το όνομά σου.
Τώρα, σε κάποιον πολύ καλό σου φίλο, θέλεις να πεις ποια είναι η κοπέλα που θέλεις πραγματικά, οπότε, θα φτιάξεις μια method η οποία θα επιστρέφει το όνομα της κοπέλας, μόνο αν του περάσει σαν παράμετρο ότι είναι ο καλύτερος σου φίλος.. άρα προσθέτουμε την method MyGirlIs(bool bestfriend); και ο κωδικας της κλάσης μας γίνεται:
class Human {
private string _firstname,_lastname,_telephone,_kopela;
public string Firstname {
get {
return _firstname;
}
set {
_firstname = value;
}
}
public string Lastname {
get {
return _lastname;
}
set {
_lastname = value;
}
}
public string Telephone {
get {
return _telephone;
}
set {
_telephone = value;
}
}
private string Kopela {
get {
return _kopela;
}
set {
_kopela = value;
}
}
public string GetFullName() {
//To
this αναφέρεται στο αντικείμενο απο το οποίο καλούμε, γιατι το
αντικείμενο δεν μπορεί να ξέρει τι όνομα του δώσαμε (το δικό μας
λέγεται aHuman),
//οπότε αναφερόμαστε στον εαυτό του, σαν this
//Αν έγραφες aHuman._firstname εδώ, θα έπερνες μήνυμα λάθους απο τον compiler
return this._firstname + " " + this._lastname;
}
public string MyGirlIs(bool bestfriend) {
if (bestfriend) {
return this.Kopela;
} else {
return "Σιγά μην σου πώ!";
}
}
}Άρα αν θέλουμε να μάθουμε το όνομα της κοπέλας που θέλεις και είμαστε καλοί σου φίλοι, μπορούμε απλά να κάνουμε:
string girlName = aHuman.MyGirlIs(true);και να μάθουμε το όνομα.
Όπως κατάλαβες, οτιδήποτε αναφέρεται σαν private δεν "φαίνεται" όταν δημιουργηθεί το αντικειμενο ενώ ότι είναι public φαίνεται..
Σου αφηνώ να ψάξεις για το πως μπορείς εσύ να δώσεις τιμή στο property "Kopela"..
Να μας δώσεις δηλαδή το όνομα της κοπέλας σαν τιμή στο property..
Ελπίζω να βοήθησα αρκετά, ότι άλλο θες, ποστ..Δεν μπορούσα να βρω πιο ρεαλιστικά παραδείγματα!!
Παναγιώτης Κεφαλίδης
"Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"
Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους
όρους χρήσης.