Το κύριο αντικειμενοστραφές δομικό στοιχείο στη C# είναι η κλάση, που συνδυάζει δεδομένα (πεδία) και συμπεριφορά (μεθόδους). Τα πεδία και οι μέθοδοι μιας κλάσης είναι γνωστά ως μέλη της.
Η πρόσβαση στα μέλη μπορεί να περιοριστεί μέσω τροποποιητών πρόσβασης, με τους δύο πιο συνηθισμένους να είναι:
public: το μέλος είναι προσβάσιμο από οποιονδήποτε κώδικα (χωρίς περιορισμούς).private: το μέλος είναι προσβάσιμο μόνο από κώδικα της ίδιας κλάσης.Μπορείς να σκεφτείς μια κλάση σαν ένα πρότυπο για τη δημιουργία στιγμιοτύπων της. Για να δημιουργήσεις ένα στιγμιότυπο μιας κλάσης (γνωστό και ως αντικείμενο), χρησιμοποιείται η λέξη-κλειδί new:
class Car
{
}
// Create two car instances
var myCar = new Car();
var yourCar = new Car();
Τα πεδία έχουν τύπο και μπορούν να οριστούν οπουδήποτε μέσα σε μια κλάση.
Τα δημόσια πεδία ορίζονται σε PascalCase και τα ιδιωτικά πεδία ορίζονται σε camelCase και παίρνουν ως πρόθεμα την κάτω παύλα _:
class Car
{
// Accessible by anyone
public int Weight;
// Only accessible by code in this class
private string _color;
}
Μπορείς προαιρετικά να εκχωρήσεις μια αρχική τιμή σε ένα πεδίο. Αν ένα πεδίο δεν καθορίζει αρχική τιμή, θα οριστεί στην προεπιλεγμένη τιμή του τύπου του. Μπορείς να έχεις πρόσβαση στις τιμές των πεδίων ενός στιγμιοτύπου και να τις ενημερώσεις χρησιμοποιώντας τη σημειογραφία με τελείες.
class Car
{
// Will be set to specified value
public int Weight = 2500;
// Will be set to default value (0)
public int Year;
}
var newCar = new Car();
newCar.Weight; // => 2500
newCar.Year; // => 0
// Update value of the field
newCar.Year = 2018;
Τα ιδιωτικά πεδία συνήθως ενημερώνονται ως παρενέργεια της κλήσης μιας μεθόδου. Τέτοιες μέθοδοι συνήθως δεν επιστρέφουν καμία τιμή, οπότε ο τύπος επιστροφής θα πρέπει να είναι void:
class CarImporter
{
private int _carsImported;
public void ImportCars(int numberOfCars)
{
// Update private field from public method
_carsImported = _carsImported + numberOfCars;
}
}
Σε αυτή την άσκηση θα παίξεις με ένα τηλεχειριζόμενο αυτοκίνητο, για το οποίο τελικά μάζεψες αρκετά χρήματα ώστε να το αγοράσεις.
Τα αυτοκίνητα ξεκινούν με πλήρη μπαταρία (100%). Κάθε φορά που οδηγείς το αυτοκίνητο με το τηλεχειριστήριο, διανύει 20 μέτρα και καταναλώνει ένα τοις εκατό της μπαταρίας.
Το τηλεχειριζόμενο αυτοκίνητο έχει μια εντυπωσιακή οθόνη LED που δείχνει δύο πληροφορίες:
"Driven <METERS> meters"."Battery at <PERCENTAGE>%".Αν η μπαταρία είναι στο 0%, δεν μπορείς να οδηγήσεις άλλο το αυτοκίνητο και η ένδειξη της μπαταρίας θα δείχνει "Battery empty".
Έχεις έξι εργασίες, καθεμία από τις οποίες θα δουλέψει με στιγμιότυπα τηλεχειριζόμενου αυτοκινήτου.
Υλοποίησε τη (static) μέθοδο RemoteControlCar.Buy() ώστε να επιστρέφει ένα ολοκαίνουριο στιγμιότυπο τηλεχειριζόμενου αυτοκινήτου:
RemoteControlCar car = RemoteControlCar.Buy();
Υλοποίησε τη μέθοδο RemoteControlCar.DistanceDisplay() ώστε να επιστρέφει την απόσταση όπως εμφανίζεται στην οθόνη LED:
var car = RemoteControlCar.Buy();
car.DistanceDisplay();
// => "Driven 0 meters"
Υλοποίησε τη μέθοδο RemoteControlCar.BatteryDisplay() ώστε να επιστρέφει το ποσοστό της μπαταρίας όπως εμφανίζεται στην οθόνη LED:
var car = RemoteControlCar.Buy();
car.BatteryDisplay();
// => "Battery at 100%"
Υλοποίησε τη μέθοδο RemoteControlCar.Drive() που ενημερώνει τον αριθμό των μέτρων που διανύθηκαν:
var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.DistanceDisplay();
// => "Driven 40 meters"
Ενημέρωσε τη μέθοδο RemoteControlCar.Drive() ώστε να ενημερώνει το ποσοστό της μπαταρίας:
var car = RemoteControlCar.Buy();
car.Drive();
car.Drive();
car.BatteryDisplay();
// => "Battery at 98%"
Ενημέρωσε τη μέθοδο RemoteControlCar.Drive() ώστε να μην αυξάνει την απόσταση που διανύθηκε ούτε να μειώνει το ποσοστό της μπαταρίας όταν η μπαταρία έχει αδειάσει (στο 0%):
var car = RemoteControlCar.Buy();
// Drain the battery
// ...
car.DistanceDisplay();
// => "Driven 2000 meters"
car.BatteryDisplay();
// => "Battery empty"
Γράψου στο Exercism για να μάθεις και να κατακτήσεις C# με 62 έννοιες178 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.