Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Τι ακριβως κανει το Interface στην C#????

Îåêßíçóå áðü ôï ìÝëïò kallileo. Τελευταία δημοσίευση από το μέλος kallileo στις 24-09-2007, 16:38. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  16-09-2007, 16:28 35044

    Τι ακριβως κανει το Interface στην C#????

    Διαβαζω ενα βιβλιο και ψαχνω την C# τον τελευταιο καιρο. Εχω φτασει σε ενα σημειο που αναλυει τα Interfaces. Αλλα δεν μπορω να καταλαβω τι ακριβως κανουν..
    Απο αυτα που καταλαβα ειναι οτι το Interface δειχνει αν μια κλαση θα εχει καποιες συγκεκριμενα methods. Αλλα που υλοποιουνται και γιατι γινεται αυτο δεν το πολυκαταλαβα...

    Αν μπορουσε να βοηθησει καποις θα του ημουν ευγνωμων.....
  •  16-09-2007, 17:14 35048 σε απάντηση της 35044

    Απ: Τι ακριβως κανει το Interface στην C#????

    Πολύ πολύ γρήγορα γιατί πρέπει να πάω να ψηφίσω :)

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

    Πού είναι το ωραίο; Οτι μπορείς να έχεις ΠΟΛΛΕΣ κλάσεις που να χρησιμοποιούν (implement) το ίδιο interface. Αν και οι κλάσεις αυτές μπορεί να κάνουν διαφορετικά πράγματα, υπάρχει κάτι που τις ενώνει: Το interface. Εκτός από το οτι το interface σου δίνει έναν αυστηρό τρόπο να ορίσεις συγκεκριμένες μεθόδους και properties στις κλάσεις που το υλοποιούν (με αποτέλεσμα να κινδυνεύεις λιγότερες φορές να κάνεις λάθος) σου επιτρέπει να περνάς σαν παράμετρο ένα object σε κάποια method κάποιας άλλης κλασης ως interface, χωρίς να σε πολυνοιάζει τι κλάσης πραγματικά είναι το object. Ετσι, σου δίνει τη δυνατότητα να είσαι "ανοιχτός" σε περαιτέρω τροποποιήσεις.

    Φαντάσου τις κλάσεις Coffee, Tea και Milk οι οποίες κάνουν όλες implement το interface ISweeten. To interface αυτό ορίζει οτι όλες οι κλάσεις πρέπει να έχουν μια μέθοδο ονόματι AddSugar. Ετσι λοιπόν εσύ μπορείς να φτιάξεις αύριο - μεθαύριο και την κλάση π.χ. OrangeJuice, η οποία θα κάνει implement το ίδιο interface, δηλαδή θα ΠΡΕΠΕΙ να έχει και αυτή μια μέθοδο AddSugar.

    Στη συνέχεια ας πούμε οτι έχεις κάπου αλλού στον κώδικά σου μια κλάση ονόματι DrinksManager η οποία έχει τη μέθοδο ServeDrink. Η μέθοδος αυτή μπορεί να δέχεται ως παράμετρο οποιαδήποτε κλάση ακολουθεί το interface ISweeten. Ετσι λοιπόν δεν σε νοιάζει ποιά πραγματικά κλάση περνάς ως παράμετρο, αρκεί αυτή να ακολουθεί αυτό το interface. Αυριο-μεθαύριο στον κώδικά σου μπορεί να υπάρξει και κάποια καινούρια κλάση που θα αντιπροσωπεύει ένα ποτό, π.χ. TomatoJuice. Αν και αυτή κάνει implement το interface ISweeten, τότε στον κώδικα της ServeDrink δεν θα χρειαστεί να αλλάξεις ΑΠΟΛΥΤΩΣ τίποτα μια και η μέθοδος αυτή δέχεται ως παράμετρο ένα interface και όχι ένα συγκεκριμένο class. Θα μπορείς να περάσεις σαν παράμετρο ένα object τύπου TomatoJuice στη ServeDrink όπως θα έκανες και με όλα τα μέχρι τώρα objects σου.

    Τα παραπάνω είναι πολυ-πολύ απλά και γενικά και δυστυχώς λόγω έλλειψης χρονου δεν προλαβαίνω να επεκταθώ - επιφυλάσσομαι :)

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  16-09-2007, 17:56 35052 σε απάντηση της 35048

    Απ: Τι ακριβως κανει το Interface στην C#????

    Οτι μπορει ο καθενας....Ευχαριστω.

    Δηλαδη αν εχω μια κλαση που ακολουθει ενα interface ΧΧΧΧ οπου υπαρχει μεθοδος YYYY τοτε αν στην κλαση δεν εχω την υλοποιηση της μεθοδου YYYY τοτε θα παρω compile-error...ετσι?

    Πρακτικα ποσο σημαντικο ειναι να χρησιμοποιειται σε εφραμογες?
  •  16-09-2007, 18:19 35053 σε απάντηση της 35052

    Απ: Τι ακριβως κανει το Interface στην C#????

    Ετσι όπως το λες είναι. Εκτός όμως από το compile error ας δώσουμε σημασία και σε αυτό που σου έγραψα παρακάτω: Μπορείς να περάσεις interface ως παράμετρο σε μια μέθοδο.

    Πρακτικά είναι ΕΞΑΙΡΕΤΙΚΑ σημαντικό. Δεν θα δεις χρησιμότητα σε μικρά projects (του τύπου έχω εφαρμογή σε μια εβδομάδα - και πάλι αυτό παίζεται) και ορισμένοι το θεωρούν και over-engineering σε αυτή την κλίμακα. Ομως, σε εφαρμογές που δουλεύονται από περισσότερους από έναν προγραμματιστές η/και χρειάζονται συχνά επεκτάσεις / τροποποιήσεις η έννοια του interface (όπως και άλλες τεχνικές ανάπτυξης λογισμικού όπως η χρήση design pattens ή τα abstraction / encapsulation και δεν συμμαζεύεται) αποδεικνύονται σωτήριες.

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


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  16-09-2007, 23:49 35055 σε απάντηση της 35053

    Απ: Τι ακριβως κανει το Interface στην C#????


    Επίσης το interface είναι ο μόνος (νομίζω) τρόπος  να υλοποιήσεις multiple inheritance στην C#.



    Nothing to declare...
  •  17-09-2007, 13:04 35067 σε απάντηση της 35044

    Απ: Τι ακριβως κανει το Interface στην C#????

    Δεν ξέρω τι λέτε εσείς αλλά ο Ζαχαρίας άλλα λέει. Big Smile

    Manos
  •  17-09-2007, 13:10 35068 σε απάντηση της 35067

    Απ: Τι ακριβως κανει το Interface στην C#????

    Interface: Ορίζει ένα standard τρόπο επικοινωνίας ανάμεσα στον developer και τη διοίκηση. Ο developer οφείλει να ανταποκρίνεται άμεσα σε αιτήματα όπως «Δούλεψε υπερωρίες», «Οι προδιαγραφές άλλαξαν 5 μέρες πριν το deadline», «Φτιάξτο τώρα». Ατύπως, όλες αυτές οι κλήσεις θα πρέπει να επιστρέφουν Boolean. Τιμές FALSE δεν γίνονται αποδεκτές. Interface, φυσικά, υπάρχει και για την επικοινωνία ΑΠΟ τον developer ΠΡΟΣ τη διοίκηση, μόνο που όλες οι κλήσεις του developer προς τη διοίκηση («Θέλω αύξηση», «Χρειάζομαι περισσότερο χρόνο», «Πρέπει να αγοράσουμε το τάδε εργαλείο άμεσα») επιστρέφουν NULL.

    Προσωπικά πιστεύω οτι δεν επιστρέφει NULL αλλά "τρώς" eXeption: Null pointer Assignment Geeked




    Nothing to declare...
  •  17-09-2007, 13:13 35069 σε απάντηση της 35068

    Απ: Τι ακριβως κανει το Interface στην C#????

    xaxaxaxa thiseas: τα μεγάλα μυαλά συναντιούνται!!!Cool

    Manos
  •  20-09-2007, 09:02 35169 σε απάντηση της 35044

    Απ: Τι ακριβως κανει το Interface στην C#????

    Ρίξε και μια ματιά εδώ: http://www.dotnetzone.gr/cs/blogs/mkelaiditis/archive/2006/02/09/9421.aspx, αφορά σε VB αλλά ισχύουν ακριβώς τα ίδια και για C#.


    Vir prudens non contra ventum mingit
  •  24-09-2007, 16:38 35331 σε απάντηση της 35169

    Απ: Τι ακριβως κανει το Interface στην C#????

    Ευχαριστω τους παντες...νομιζω οτι μπηκα στο νοημα.
    Ειναι κατι σαν προδιαγραφη..
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems