<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Πρώτα Βήματα - Αρχές προγραμματισμού</title><link>https://www.dotnetzone.gr:443/cs/forums/72/ShowForum.aspx</link><description>Αναρωτιέστε τι σημαίνει object; Class; Inheritance; Design pattern; Την απάντηση μπορείτε να την βρείτε εδώ!</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Τι είναι τα Interface και τα σχετικά... τι κάνουν, πως υλοποιούνται...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31444.aspx</link><pubDate>Sat, 05 May 2007 03:41:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31444</guid><dc:creator>Panagiotis Kefalidis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31444.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=31444</wfw:commentRss><description>1) Ναι, υπάρχουν στο documentation του MSDN αναλυτικά, επίσης μπορείς να βρεις "κρυμμένα" interfaces με τον Reflector.&lt;br&gt;2) Ναι μια κλάση μπορει να κανει implement όσα interfaces θέλει. Σε C# ο κώδικας θα ήταν &lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;public&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;class&lt;/span&gt; MyClass : IInterface1, IInterface2&lt;/span&gt; .&lt;br&gt;</description></item><item><title>Απ: Τι είναι τα Interface και τα σχετικά... τι κάνουν, πως υλοποιούνται...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/31442.aspx</link><pubDate>Sat, 05 May 2007 02:59:25 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:31442</guid><dc:creator>YiannisF</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/31442.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=31442</wfw:commentRss><description>Πολύ κατατοπιστικό το post σου Μάνο! Πραγματικά νομίζω πως πλέον κατάλαβα τι είναι τα interfaces και πού χρειάζονται. Ιδιαιτέρως χρήσιμο μου φάνηκε αυτό με το IComparable. Μου διμηουργήθηκαν όμως δύο απορίες:&lt;br&gt;&lt;br&gt;1. Υπάρχει μια λίστα με όλα τα interfaces και με περιγραφή των μεθόδων τους ώστε να δούμε τι υπάρχει και τι μπορούμε να κάνουμε implement, ώστε να αξιοποιήσουμε πλήρως τα interfaces που παρέχει το .NET2;&lt;br&gt;2. Μπορεί μία κλάση να κάνει implement περισσότερα από ένα interfaces;&lt;br&gt;&lt;br&gt;Ευχαριστώ,&lt;br&gt;Γιάννης Φανουράκης&lt;br&gt;</description></item><item><title>Απ: Τι είναι τα Interface και τα σχετικά... τι κάνουν, πως υλοποιούνται...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7611.aspx</link><pubDate>Wed, 07 Dec 2005 21:30:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7611</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7611.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=7611</wfw:commentRss><description>Χαρακτηρίζω το post ως "Εχει επιλυθεί". Αν υπάρχει διαφορετική άποψη, διορθώστε με. &lt;br&gt;&lt;br&gt;Επίσης να θυμίσω οτι μπορείτε να επιλέγετε αν σας βοήθησε ή οχι η κάθε απάντηση που δίνεται στο post από το σχετικό combo κάτω από τον τίτλο της απάντησης.</description></item><item><title>Απ: Τι είναι τα Interface και τα σχετικά... τι κάνουν, πως υλοποιούνται...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7451.aspx</link><pubDate>Thu, 01 Dec 2005 00:32:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7451</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7451.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=7451</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;axaros wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;&lt;p&gt;Ελπίζω να μην βγαίνω εκτός topic αλλά σε ένα video του Channel9 είδα για το VS2005 (VB.NET)&lt;br&gt;την έννοια του dynamic interface. Τι είναι και πως δουλεύουν;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;
&lt;br&gt;
Μια (&lt;i&gt;πολύ μικρή αλλά μπαίνεις στο νόημα&lt;/i&gt;) αναφορά θα βρείς &lt;a href="http://aspadvice.com/blogs/ssmith/archive/2005/10/04/Cool_Features_in_VBNext.aspx"&gt;εδω&lt;/a&gt;. &lt;br&gt;</description></item><item><title>Απ: Τι είναι τα Interface και τα σχετικά... τι κάνουν, πως υλοποιούνται...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7444.aspx</link><pubDate>Wed, 30 Nov 2005 22:36:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7444</guid><dc:creator>thanad</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7444.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=7444</wfw:commentRss><description>Ohps αυτή είναι απάντηση.&lt;br&gt;Ευχαριστώ και τους δύο.</description></item><item><title>Απ: Τι είναι τα Interface και τα σχετικά... τι κάνουν, πως υλοποιούνται...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7430.aspx</link><pubDate>Wed, 30 Nov 2005 19:04:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7430</guid><dc:creator>axaros</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7430.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=7430</wfw:commentRss><description>&lt;P&gt;Ελπίζω να μην βγαίνω εκτός topic αλλά σε ένα video του Channel9 είδα για το VS2005 (VB.NET)&lt;BR&gt;την έννοια του dynamic interface. Τι είναι και πως δουλεύουν;&lt;/P&gt;</description></item><item><title>Απ: Τι είναι τα Interface και τα σχετικά... τι κάνουν, πως υλοποιούνται...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7423.aspx</link><pubDate>Wed, 30 Nov 2005 09:16:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7423</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7423.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=7423</wfw:commentRss><description>&lt;P&gt;Χμμμ… Από πού να τα πιάσεις και που να τα αφήσεις τα Interfaces… &lt;BR&gt;Ας ξεκινήσουμε καλύτερα από το τι είναι κλάση. Χωρίς να μπούμε σε επιστημονικούς ορισμούς, με μία κλάση καθορίζουμε τα πεδία (fields), τις ιδιότητες (properties), τα γεγονότα (events) και τις μεθόδους (methods) ενός τύπου. Ένα interface προσδιορίζει ότι ένας τύπος θα πρέπει να υλοποιεί συγκεκριμένα properties ή/και methods αλλά δεν ενδιαφέρεται για το ποιος τύπος θα είναι αυτός και πως θα τα υλοποιήσει. &lt;/P&gt;
&lt;P&gt;Ένα παράδειγμα του παραπάνω είναι το εξής: Έχω ένα interface που ονομάζεται «Παράθυρο» και αυτό το interface προσδιορίζει μία μέθοδο που ονομάζεται «Άνοιξε». Αυτό το interface μπορεί να το χρησιμοποιήσει η κλάση «Σπίτι» αλλά και η κλάση «Αυτοκίνητο». Η κάθε μία θα υλοποιήσει την μέθοδο «Άνοιξε» με δικό της τρόπο αλλά και οι δύο, από τη στιγμή που θα πουν ότι χρησιμοποιούν το interface «Παράθυρο», πέρα από οτιδήποτε άλλο κάνουν, είναι υποχρεωμένες να υλοποιήσουν τη μέθοδο «Άνοιξε».&lt;/P&gt;
&lt;P&gt;Σε κώδικα θα είχαμε κάτι όπως το παρακάτω:&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Interface&lt;/span&gt; IWindow&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; Method Open&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Interface&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Κατά σύμβαση στο ονόματα των interfaces βάζουμε το “I” μπροστά.&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Class&lt;/span&gt; House&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Implements&lt;/span&gt; IWindow &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; Method Open &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Implements&lt;/span&gt; IWindow.Open&lt;br /&gt;  {turn lever &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;and&lt;/span&gt; push code here}&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; Method&lt;br /&gt;&lt;br /&gt;{other stuff here}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Class&lt;/span&gt; Car&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Implements&lt;/span&gt; IWindow &lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; Method Open &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Implements&lt;/span&gt; IWindow.Open&lt;br /&gt;  {press green button &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;on&lt;/span&gt; the door}&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; Method&lt;br /&gt;&lt;br /&gt;{other stuff here}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Η αλήθεια είναι ότι εκ πρώτης όψεως φαίνεται λίγο χαζό… Για ποιόν λόγο να θέλει κανείς να κάνει κάτι τέτοιο και να μην υλοποιήσει απλώς τη μέθοδο Open στις κλάσεις του;&lt;/P&gt;
&lt;P&gt;Βασικά, τα Interfaces χρησιμοποιούνται για να επιβάλουν πρότυπα. Ένα απλό παράδειγμα από αυτό είναι το εξής: Φαντάσου ότι έχεις μια ομάδα από developers και ο καθένας έχει αναλάβει να υλοποιήσει ένα τμήμα από ένα μεγάλο project. Αν γίνει συμφωνία να χρησιμοποιούν όλοι συγκεκριμένα interfaces (που έχουν προκύψει από το σχεδιασμό) τότε είναι δυσκολότερο κάποιος να ξεχάσει να συμπεριλάβει κάποια μέθοδο, κάποιος άλλος να υλοποίηση τη μέθοδο αλλά με διαφορετικές παραμέτρους από αυτές που συμφωνήθηκαν, κοκ.&lt;/P&gt;
&lt;P&gt;Τώρα, θα μου πεις, «άρα, εγώ που είμαι ένας απλός και μόνος developer δε με απασχολεί το θέμα». Εδώ λοιπόν είναι όλο το ζουμί των interfaces! Όταν κάνεις development σε .NET είσαι ήδη μέλος μιας μεγάλης ομάδας από developers και μπορείς να χρησιμοποιήσεις interfaces που έχουν ήδη καθοριστεί!&lt;/P&gt;
&lt;P&gt;Ένα πιο πρακτικό παράδειγμα:&lt;/P&gt;
&lt;P&gt;Έχεις δει ότι στο .ΝΕΤ framework όλα τα array έχουν τη μέθοδο sort. Αν λοιπόν έχω ένα array από αριθμούς και πω arrayname.sort τότε αυτό ταξινομείται. Αν όμως αντί για αριθμούς έχω objects από υπαλλήλους, τότε τι είδους ταξινόμηση γίνεται; Οι καλοί άνθρωποι που σχεδίασαν το Framework είχαν προβλέψει τέτοιες περιπτώσεις. Δηλαδή όχι ακριβώς αυτή την περίπτωση αλλά γενικά κάποιος να θέλει να ταξινομήσει objects βάσει της δικής του λογικής. Και γι αυτόν το λόγο καθόρισαν ότι υπάρχει ένα Interface που λέγεται IComparable. Αυτό προσδιορίζει μία μέθοδο που λέγεται CompareTo, παίρνει ως όρισμα ένα Object και επιστρέφει έναν ακέραιο. Έτσι λοιπόν, μπορώ στην κλάση μου να πω ότι «εγώ χρησιμοποιώ το IComparable και έτσι υλοποιώ το function CompareTo». &lt;/P&gt;
&lt;P&gt;Όταν θα γεμίσω λοιπόν το array με τα objects μου και πω array.sort η μέθοδος αυτή θα κοιτάξει μήπως τα objects που περιέχει το array υλοποιούν το IComparable και τότε θα τρέξει την CompareTo (που είναι σίγουρη ότι υλοποιούν) και βάσει του αριθμού που θα τις επιστρέψουν, θα αποφασίσει ποιο είναι το μεγαλύτερο object για να κάνει τη ταξινόμηση. Είναι κάτι σαν μηχανισμός plug-in δηλαδή!&lt;/P&gt;
&lt;P&gt;Ιδού η κλάση&amp;nbsp; Employee&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Class&lt;/span&gt; Employee&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Implements&lt;/span&gt; IComparable&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; name &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; level &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Integer&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; HiringDate &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; DateTime&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Sub&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt;(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; name &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;String&lt;/span&gt;, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; level &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Integer&lt;/span&gt;, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; hiringDate &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; DateTime)&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Me&lt;/span&gt;.name &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; name&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Me&lt;/span&gt;.level &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; level&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Me&lt;/span&gt;.HiringDate &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; hiringDate&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Public&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Function&lt;/span&gt; CompareTo(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; obj &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Object&lt;/span&gt;) &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Integer&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Implements&lt;/span&gt; System.IComparable.CompareTo&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt; obj &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Is&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Nothing&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Then&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Return&lt;/span&gt; 1&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt; &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Not&lt;/span&gt; (&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;TypeOf&lt;/span&gt; obj &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Is&lt;/span&gt; Employee) &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Then&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Throw&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; ArgumentException&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; anEmployee &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; Employee &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; obj&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt; level &amp;lt; anEmployee.level &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Then&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Return&lt;/span&gt; -1&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Else&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt; level &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; anEmployee.level &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Then&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt; HiringDate &amp;lt; anEmployee.HiringDate &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Then&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Return&lt;/span&gt; -1&lt;br /&gt;                &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Else&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt; HiringDate &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; anEmployee.HiringDate _&lt;br /&gt;                    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Then&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Return&lt;/span&gt; 0&lt;br /&gt;                    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Else&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Return&lt;/span&gt; 1&lt;br /&gt;                    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Else&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Return&lt;/span&gt; 1&lt;br /&gt;            &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;If&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Αν θα διαβάσεις την υλοποίηση του CompareTo, θα δεις ότι η ταξινόμηση των υπαλλήλων-objects γίνεται με βάση το property level και αν αυτό είναι ίδιο, με βάση την παλαιότητα (HireDate property).&lt;/P&gt;
&lt;P&gt;Και ορίστε πως γεμίζουμε το array και το ταξινομούμε:&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;Dim&lt;/span&gt; myEmployees(9) &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; Employee&lt;br /&gt;myEmployees(0) &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Employee(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"a"&lt;/span&gt;, 2, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; DateTime(1990, 1, 1))&lt;br /&gt;myEmployees(1) &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Employee(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"b"&lt;/span&gt;, 2, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; DateTime(2000, 1, 1))&lt;br /&gt;myEmployees(2) &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Employee(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"c"&lt;/span&gt;, 2, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; DateTime(1990, 1, 1))&lt;br /&gt;myEmployees(3) &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Employee(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"d"&lt;/span&gt;, 4, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; DateTime(2000, 1, 1))&lt;br /&gt;myEmployees(4) &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Employee(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"e"&lt;/span&gt;, 4, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; DateTime(1990, 1, 1))&lt;br /&gt;myEmployees(5) &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Employee(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"f"&lt;/span&gt;, 4, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; DateTime(2000, 1, 1))&lt;br /&gt;myEmployees(6) &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Employee(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"g"&lt;/span&gt;, 1, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; DateTime(1990, 2, 5))&lt;br /&gt;myEmployees(7) &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Employee(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"h"&lt;/span&gt;, 1, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; DateTime(2000, 1, 1))&lt;br /&gt;myEmployees(8) &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Employee(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"i"&lt;/span&gt;, 1, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; DateTime(1990, 1, 1))&lt;br /&gt;myEmployees(9) &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Employee(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"j"&lt;/span&gt;, 0, &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; DateTime(2001, 1, 1))&lt;br /&gt;&lt;br /&gt;Console.WriteLine(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"The Array instance initially contains values:"&lt;/span&gt;)&lt;br /&gt;PrintIndexAndValuesUsingALoop(myEmployees)&lt;br /&gt;&lt;br /&gt;Array.Sort(myEmployees)&lt;br /&gt;Console.WriteLine(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"Sorted Array:"&lt;/span&gt;)&lt;br /&gt;PrintIndexAndValuesUsingALoop(myEmployees)&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Η χρήση και η αξία των interfaces δεν σταματά εδώ. Απλά, αυτό είναι ό,τι πιο πρακτικό μπορεί να συναντήσεις. Κατόπιν, μπορείς να κάνεις διάφορα κολπάκια καθώς θα εμβαθύνεις στον object oriented προγραμματισμό, αλλά αυτό είναι άλλη ιστορία.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Τι είναι τα Interface και τα σχετικά... τι κάνουν, πως υλοποιούνται...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7416.aspx</link><pubDate>Wed, 30 Nov 2005 07:36:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7416</guid><dc:creator>thanad</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7416.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=72&amp;PostID=7416</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana&gt;Επειδή δεν έχω καταλάβει, μπορεί κάποιος να μου το εξηγήσει ?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Ευχαριστώ εκ των προτέρων.&lt;img src="/cs/emoticons/emotion-1.gif" alt="Smile [:)]" /&gt;&lt;/FONT&gt;&lt;/P&gt;</description></item></channel></rss>