Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

5.10 Οι διεπαφές (interfaces) στη γλώσσα C#

Οι διεπαφές (interfaces) στη γλώσσα C# είναι μια συμβολική συμβολοσειρά κώδικα που ορίζει ένα σύνολο μεθόδων χωρίς να παρέχει υλοποίηση. Οι διεπαφές παρέχουν έναν τρόπο για να προσδιορίσουμε ένα συμβόλαιο (contract) για τις κλάσεις που τις υλοποιούν. Μια κλάση μπορεί να υλοποιήσει πολλές διεπαφές, προσφέροντας έτσι τη δυνατότητα να χρησιμοποιηθεί ως πολλαπλής κληρονομικότητας.

Για να δηλώσουμε μια διεπαφή στη C#, χρησιμοποιούμε τη λέξη-κλειδί “interface” ακολουθούμενη από το όνομα της διεπαφής και μια λίστα με τις μεθόδους που πρέπει να υλοποιηθούν. Οι μέθοδοι αυτές είναι δηλωμένες χωρίς σώματα με την προσθήκη μόνο των προδιαγραφών τους. Οι κλάσεις που υλοποιούν μια διεπαφή πρέπει να παρέχουν την υλοποίηση των μεθόδων που ορίζονται στη διεπαφή.

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

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
using System;
// Δήλωση διεπαφής IAnimal
interface IAnimal
{
void AnimalSound(); // Μέθοδος για τον ήχο του ζώου
}
// Ορισμός κλάσης Dog που υλοποιεί τη διεπαφή IAnimal
class Dog : IAnimal
{
public void AnimalSound()
{
Console.WriteLine("The dog says: Woof woof!"); // Εκτύπωση ήχου σκύλου
}
}
// Ορισμός κλάσης Cat που υλοποιεί τη διεπαφή IAnimal
class Cat : IAnimal
{
public void AnimalSound()
{
Console.WriteLine("The cat says: Meow!"); // Εκτύπωση ήχου γάτας
}
}
using System; // Δήλωση διεπαφής IAnimal interface IAnimal { void AnimalSound(); // Μέθοδος για τον ήχο του ζώου } // Ορισμός κλάσης Dog που υλοποιεί τη διεπαφή IAnimal class Dog : IAnimal { public void AnimalSound() { Console.WriteLine("The dog says: Woof woof!"); // Εκτύπωση ήχου σκύλου } } // Ορισμός κλάσης Cat που υλοποιεί τη διεπαφή IAnimal class Cat : IAnimal { public void AnimalSound() { Console.WriteLine("The cat says: Meow!"); // Εκτύπωση ήχου γάτας } }
using System;

// Δήλωση διεπαφής IAnimal
interface IAnimal
{
    void AnimalSound(); // Μέθοδος για τον ήχο του ζώου
}

// Ορισμός κλάσης Dog που υλοποιεί τη διεπαφή IAnimal
class Dog : IAnimal
{
    public void AnimalSound()
    {
        Console.WriteLine("The dog says: Woof woof!"); // Εκτύπωση ήχου σκύλου
    }
}

// Ορισμός κλάσης Cat που υλοποιεί τη διεπαφή IAnimal
class Cat : IAnimal
{
    public void AnimalSound()
    {
        Console.WriteLine("The cat says: Meow!"); // Εκτύπωση ήχου γάτας
    }
}

Ο παραπάνω κώδικας σε C# περιέχει τον ορισμό ενός διεπαφής (interface) με το όνομα IAnimal, καθώς και τις κλάσεις Dog και Cat που υλοποιούν αυτήν τη διεπαφή.

Η διεπαφή IAnimal ορίζει μια μέθοδο με το όνομα AnimalSound() χωρίς να έχει υλοποίηση. Αυτή η μέθοδος πρέπει να υλοποιηθεί από οποιαδήποτε κλάση χρησιμοποιεί αυτήν τη διεπαφή.

Οι κλάσεις Dog και Cat κληρονομούν τη διεπαφή IAnimal και υλοποιούν τη μέθοδο AnimalSound(). Η υλοποίηση αυτής της μεθόδου σε κάθε κλάση εκτελεί μια ενέργεια εκτύπωσης στην οθόνη του αντίστοιχου ήχου που παράγεται από το ζώο.

Αν δημιουργηθεί ένα αντικείμενο τύπου Dog και κληθεί η μέθοδος AnimalSound(), θα εκτυπωθεί το μήνυμα “The dog says: Woof woof!”. Αντίστοιχα, αν δημιουργηθεί ένα αντικείμενο τύπου Cat και κληθεί η μέθοδος AnimalSound(), θα εκτυπωθεί το μήνυμα “The cat says: Meow!”.

Ο κώδικας αυτός δείχνει τη χρήση διεπαφών στην C# και την ιδέα της πολυμορφισμού, όπου διάφορες κλάσεις μπορούν να υλοποιήσουν μια κοινή διεπαφή με διαφορετικούς τρόπους.

Τώρα μπορούμε να δημιουργήσουμε αντικείμενα από τις κλάσεις Dog και Cat και να καλέσουμε τη μέθοδο AnimalSound():

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dog myDog = new Dog();
Cat myCat = new Cat();
myDog.AnimalSound(); // Εκτυπώνει "The dog says: Woof woof!"
myCat.AnimalSound(); // Εκτυπώνει "The cat says: Meow!"
Dog myDog = new Dog(); Cat myCat = new Cat(); myDog.AnimalSound(); // Εκτυπώνει "The dog says: Woof woof!" myCat.AnimalSound(); // Εκτυπώνει "The cat says: Meow!"
Dog myDog = new Dog();
Cat myCat = new Cat();

myDog.AnimalSound(); // Εκτυπώνει "The dog says: Woof woof!"
myCat.AnimalSound(); // Εκτυπώνει "The cat says: Meow!"

Σε αυτό το παράδειγμα, δημιουργούμε αντικείμενα από τις κλάσεις Dog και Cat και καλούμε τη μέθοδο AnimalSound() σε αυτά. Και οι δύο κλάσεις υλοποιούν τη διεπαφή IAnimal και παρέχουν τη δική τους υλοποίηση για τη μέθοδο AnimalSound().

Για να υλοποιήσετε πολλαπλές διεπαφές (interfaces) σε μια κλάση, χρησιμοποιήστε την λέξη-κλειδί interface και χωρίστε τις διεπαφές με κόμμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
using System;
// Δημιουργία διεπαφής IAnimal
interface IAnimal
{
void AnimalSound(); // Μέθοδος για τον ήχο του ζώου
}
// Δημιουργία διεπαφής IJumpable
interface IJumpable
{
void Jump(); // Μέθοδος για την άλματος
}
// Δημιουργία κλάσης Dog που υλοποιεί τις διεπαφές IAnimal και IJumpable
class Dog : IAnimal, IJumpable
{
public void AnimalSound()
{
Console.WriteLine("The dog says: Woof woof!"); // Εκτύπωση ήχου σκύλου
}
public void Jump()
{
Console.WriteLine("The dog jumps!"); // Εκτύπωση μηνύματος για το άλμα του σκύλου
}
}
using System; // Δημιουργία διεπαφής IAnimal interface IAnimal { void AnimalSound(); // Μέθοδος για τον ήχο του ζώου } // Δημιουργία διεπαφής IJumpable interface IJumpable { void Jump(); // Μέθοδος για την άλματος } // Δημιουργία κλάσης Dog που υλοποιεί τις διεπαφές IAnimal και IJumpable class Dog : IAnimal, IJumpable { public void AnimalSound() { Console.WriteLine("The dog says: Woof woof!"); // Εκτύπωση ήχου σκύλου } public void Jump() { Console.WriteLine("The dog jumps!"); // Εκτύπωση μηνύματος για το άλμα του σκύλου } }
using System;

// Δημιουργία διεπαφής IAnimal
interface IAnimal
{
    void AnimalSound(); // Μέθοδος για τον ήχο του ζώου
}

// Δημιουργία διεπαφής IJumpable
interface IJumpable
{
    void Jump(); // Μέθοδος για την άλματος
}

// Δημιουργία κλάσης Dog που υλοποιεί τις διεπαφές IAnimal και IJumpable
class Dog : IAnimal, IJumpable
{
    public void AnimalSound()
    {
        Console.WriteLine("The dog says: Woof woof!"); // Εκτύπωση ήχου σκύλου
    }

    public void Jump()
    {
        Console.WriteLine("The dog jumps!"); // Εκτύπωση μηνύματος για το άλμα του σκύλου
    }
}

Ο παραπάνω κώδικας στη γλώσσα C# ορίζει διεπαφές και μια κλάση που τις υλοποιεί. Ας αναλύσουμε τι κάνει ο κάθε μέρος του κώδικα:

  1. Ορισμός διεπαφής IAnimal: Η διεπαφή IAnimal δηλώνει μια μέθοδο AnimalSound() χωρίς υλοποίηση.
  2. Ορισμός διεπαφής IJumpable: Η διεπαφή IJumpable δηλώνει μια μέθοδο Jump() χωρίς υλοποίηση.
  3. Ορισμός της κλάσης Dog:
  • Η κλάση Dog υλοποιεί τις διεπαφές IAnimal και IJumpable.
  • Η μέθοδος AnimalSound() εκτυπώνει το μήνυμα “The dog says: Woof woof!”.
  • Η μέθοδος Jump() εκτυπώνει το μήνυμα “The dog jumps!”.

Ο κώδικας ορίζει τις διεπαφές IAnimal και IJumpable για να προσδιορίσει τη συμπεριφορά που πρέπει να έχουν οι κλάσεις που τις υλοποιούν. Η κλάση Dog υλοποιεί αυτές τις διεπαφές και παρέχει τις αντίστοιχες υλοποιήσεις των μεθόδων. Κατά τη δημιουργία ενός αντικειμένου τύπου Dog, μπορεί να χρησιμοποιηθούν και οι δύο διεπαφές για να κληθούν οι μέθοδοι AnimalSound() και Jump() και να εκτελεστούν οι αντίστοιχες ενέργειες.

Τώρα μπορούμε να δημιουργήσουμε ένα αντικείμενο από την κλάση Dog και να καλέσουμε τις μεθόδους AnimalSound() και Jump():

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Dog myDog = new Dog();
myDog.AnimalSound(); // Εκτυπώνει "The dog says: Woof woof!"
myDog.Jump(); // Εκτυπώνει "The dog jumps!"
Dog myDog = new Dog(); myDog.AnimalSound(); // Εκτυπώνει "The dog says: Woof woof!" myDog.Jump(); // Εκτυπώνει "The dog jumps!"
Dog myDog = new Dog();
myDog.AnimalSound(); // Εκτυπώνει "The dog says: Woof woof!"
myDog.Jump(); // Εκτυπώνει "The dog jumps!"

Σε αυτό το παράδειγμα, δημιουργούμε ένα αντικείμενο από την κλάση Dog και καλούμε τις μεθόδους AnimalSound() και Jump(). Η κλάση Dog υλοποιεί και τις δύο διεπαφές IAnimal και IJumpable, οπότε μπορούμε να καλέσουμε τις αντίστοιχες μεθόδους.

21 Αυγούστου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων