Διαδρομές
/
C#
C#
/
Ασκήσεις
/
Διαγωνισμός τηλεχειρισμού
Διαγωνισμός τηλεχειρισμού

Διαγωνισμός τηλεχειρισμού

Άσκηση εκμάθησης

Εισαγωγή

Διεπαφές

Μια διεπαφή είναι ένας τύπος που περιέχει μέλη τα οποία ορίζουν μια ομάδα σχετιζόμενης λειτουργικότητας. Απομακρύνει τις χρήσεις μιας κλάσης από την υλοποίηση, επιτρέποντας πολλαπλές διαφορετικές υλοποιήσεις ή υποστήριξη για κάποια γενική συμπεριφορά, όπως μορφοποίηση, σύγκριση ή μετατροπή.

Η σύνταξη μιας διεπαφής είναι παρόμοια με αυτή μιας κλάσης ή δομής, με τη διαφορά ότι οι μέθοδοι και οι ιδιότητες εμφανίζονται μόνο ως υπογραφή και δεν παρέχεται σώμα.

public interface ILanguage
{
    string LanguageName { get; set; }
    string Speak();
}

public class ItalianTaveller : ILanguage, ICloneable
{
    public string LanguageName { get; set; } =  "Italiano";

    public string Speak()
    {
        return "Ciao mondo";
    }

    public object Clone()
    {
        ItalianTaveller it = new ItalianTaveller();
        it.LanguageName = this.LanguageName;
        return it;
    }
}

Όλες οι λειτουργίες που ορίζει η διεπαφή πρέπει να υλοποιούνται.

Οι διεπαφές μπορούν να περιέχουν μεθόδους στιγμιότυπου και ιδιότητες, μεταξύ άλλων μελών

Διάταξη

Για να μπορεί ένα αντικείμενο να συγκρίνεται με ένα άλλο αντικείμενο, πρέπει να υλοποιεί τη διεπαφή IComparable<T>. Αυτή η διεπαφή έχει μία μόνο μέθοδο που πρέπει να υλοποιηθεί: int CompareTo(T other).

Υπάρχουν τρεις πιθανές τιμές επιστροφής για τη μέθοδο CompareTo:

  • Τιμή μικρότερη από το μηδέν: το τρέχον αντικείμενο είναι μικρότερο από το άλλο αντικείμενο.
  • Τιμή μεγαλύτερη από το μηδέν: το τρέχον αντικείμενο είναι μεγαλύτερο από το άλλο αντικείμενο.
  • Η τιμή είναι μηδέν: το τρέχον αντικείμενο είναι ίσο με το άλλο αντικείμενο.

Οδηγίες

Σε αυτή την άσκηση θα δουλέψεις λίγο ακόμα πάνω σε τηλεκατευθυνόμενα αυτοκίνητα.

Ένα πειραματικό αυτοκίνητο έχει αναπτυχθεί και η πίστα δοκιμών πρέπει να προσαρμοστεί ώστε να χειρίζεται τόσο τα μοντέλα παραγωγής όσο και τα πειραματικά. Οι δύο τύποι αυτοκινήτου έχουν ήδη κατασκευαστεί και πρέπει να βρεις έναν τρόπο να τους χειριστείς και τους δύο στην πίστα δοκιμών.

Επιπλέον, τα αυτοκίνητα παραγωγής αρχίζουν να έχουν κάποια επιτυχία. Το αφεντικό της ομάδας θέλει να διατηρήσει το ανταγωνιστικό πνεύμα δημοσιεύοντας μια κατάταξη των αυτοκινήτων παραγωγής.

1. Ενεργοποίησε την οδήγηση των αυτοκινήτων στην ίδια πίστα δοκιμών

Πρόσθεσε μια μέθοδο στη διεπαφή IRemoteControlCar ώστε να εκθέτει τις υλοποιήσεις της Drive() για τους δύο τύπους αυτοκινήτου.

TestTrack.Race(new ProductionRemoteControlCar());
TestTrack.Race(new ExperimentalRemoteControlCar());
// this should execute without an exception being thrown

2. Ενεργοποίησε τη σύγκριση της απόστασης που διανύουν τα διαφορετικά μοντέλα στην πίστα δοκιμών

Πρόσθεσε μια ιδιότητα στη διεπαφή IRemoteControlCar ώστε να εκθέτει τις υλοποιήσεις της ιδιότητας DistanceTravelled για τους δύο τύπους αυτοκινήτου.

var prod = new ProductionRemoteControlCar();
TestTrack.Race(prod);
var exp = new ExperimentalRemoteControlCar();
TestTrack.Race(exp);
prod.DistanceTravelled
// => 10
exp.DistanceTravelled
// => 20

3. Δώσε τη δυνατότητα κατάταξης των αυτοκινήτων παραγωγής

Υλοποίησε τη διεπαφή IComparable<T> στην κλάση ProductionRemoteControlCar. Η προεπιλεγμένη σειρά ταξινόμησης για τα αυτοκίνητα θα πρέπει να είναι αύξουσα σειρά νικών.

Υλοποίησε τη στατική μέθοδο TestTrack.GetRankedCars() ώστε να επιστρέφει τα αυτοκίνητα που της περνάς, ταξινομημένα σε αύξουσα σειρά αριθμού νικών.

var prc1 = new ProductionRemoteControlCar();
var prc2 = new ProductionRemoteControlCar();
prc1.NumberOfVictories = 3;
prc2.NumberOfVictories = 2;
var rankings = TestTrack.GetRankedCars(prc1, prc2);
// => rankings[1] == prc1
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
C# Exercism

Έτοιμος να ξεκινήσεις την άσκηση Διαγωνισμός τηλεχειρισμού;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις C# με 62 έννοιες178 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.