merianos Δημοσ. 22 Ιουλίου 2008 Δημοσ. 22 Ιουλίου 2008 Για σε όλους ! ! ! Θα ήθελα να μου εξηγήσετε κάτι που μπορεί να είναι απλό αλλά δεν έχω βρει την κατάλληλη πηγή ακόμα. Το Interface στον Object Oriented προγραμματισμό τι ακριβώς κάνει ? ? ? Και που χρησιμεύει ? ? ? Ευχαριστώ πολύ ! ! !
merianos Δημοσ. 22 Ιουλίου 2008 Μέλος Δημοσ. 22 Ιουλίου 2008 Γενικά. Έχω δει Interfaces και στην Java, και στη VB.NET, και στη C# και στη C++. Τι ακριβώς κάνει όμως το Interface ? ? Αυτό που έχω καταλάβει είναι ότι φτιάχνεις τ Interface και δηλώνεις τις μεθόδους και τοις ιδιότητες που θα πρέπει η κλάση που θα υλοποιεί το Interface να τοις έχει ούτως η άλλος. Για παράδειγμα Αυτό είναι το Interface (γενική δομή) Interface Method1 Method2 Metohd3 Property1 Property2 /Interface Αυτή είναι η πρώτη κλάση που υλοποιεί το Interface class myclass1 implements Interface Method1 Method2 Metohd3 Property1 Property2 /class Αυτή είναι η δεύτερη κλάση που υλοποιεί το Interface class myclass2 implements Interface Metohd3 Property1 /class Η πρώτη κλάση είναι σωστή γιατί υλοποιεί όλες τοις μεθόδους και τοις ιδιότητες του Interface ενώ η δεύτερη κλάση είναι λάθος και δεν θα μεταγλωττιστεί. Δεν μπορώ όμως να καταλάβω το λόγο ύπαρξης ενός Interface.
ippo00 Δημοσ. 22 Ιουλίου 2008 Δημοσ. 22 Ιουλίου 2008 Κοίθτα στις MS γλώσσες δεν ξέρω τι παίζει αλλά Java πρέπει να υλοποιήσεις τα πάντα μόνο αν είναι Concrete class. Τέλος πάντων, θέμα οργάνωσης είναι το interface.
i.cherouvim Δημοσ. 22 Ιουλίου 2008 Δημοσ. 22 Ιουλίου 2008 http://java.sun.com/docs/books/tutorial/java/concepts/interface.html Μία επόμενη χρήση είναι οτι το interface παρέχει ένα view του αντικειμένου ως κάτι άλλο. Πχ το παρακάτω: >public interface Movable { public void moveTo(Location location); } Μπορεί να το υλοποιήσουν το Person, Animal, Vehicle, αλλά μάλλον όχι το Building και το Mountain. Έτσι στο canvas του υποτιθέμενο παιχνιδιού που φτιάχνεις θα μπορείς να τα έχεις όλα σε ένα Collection<Movable>, έτσι ώστε σε κάθε κύκλο να μπορείς να τα μετακινείς.
ippo00 Δημοσ. 22 Ιουλίου 2008 Δημοσ. 22 Ιουλίου 2008 Ναι, απλά αυτό που λεεί το παιδί είναι "αν τα υλοποιούσα χωρίς interface δεν θα δούλευάν;" Προφανώς ναι. Απλά το interface είναι κάτι μεταξύ υπόσχεσης προς τον χρήστη μιας κλάσης και έναν καλό τρόπο να αποφύγουμε πολλά μπερδέματα.
i.cherouvim Δημοσ. 22 Ιουλίου 2008 Δημοσ. 22 Ιουλίου 2008 Το "παιδί" ρώτησε τι είναι το interface και που χρησιμεύει, και πάνω σε αυτό έδωσα λίγη βοήθεια. Όσο για τα μπερδέματα, απλά η χρήση interfaces δεν συνεπάγεται καθαρό και ευέλικτο design αυτομάτως.
gtroza Δημοσ. 23 Ιουλίου 2008 Δημοσ. 23 Ιουλίου 2008 Δεν μπορώ όμως να καταλάβω το λόγο ύπαρξης ενός Interface. είναι ¨μηχανισμός¨ χειρισμού μιάς εφαρμογής .
i.cherouvim Δημοσ. 23 Ιουλίου 2008 Δημοσ. 23 Ιουλίου 2008 Άλλο πράγμα το user interface... http://en.wikipedia.org/wiki/Interface_(Java) http://en.wikipedia.org/wiki/User_interface
merianos Δημοσ. 25 Ιουλίου 2008 Μέλος Δημοσ. 25 Ιουλίου 2008 Σας ευχαριστώ όλους για τη συμμετοχή σας στο Post μου. Αυτό που θέλω να μάθω όμως είναι ποιος ο λόγος ύπαρξης τον Interfaces ( προγραμματιστικά ). Για παράδειγμα κατανοώ πως οι κλάσεις χρησιμεύουν για τον ορισμό αντικειμένων. Οι συναρτήσεις για την υλοποίηση συγκεκριμένων εργασιών, οι μεταβλητές για προσωρινή αποθήκευση τιμών, κ.ο.κ. Οι Interfaces όμως ? ? ?
Ros_Original Δημοσ. 25 Ιουλίου 2008 Δημοσ. 25 Ιουλίου 2008 Σκοπός ενός Interface είναι η δυνατότητα να ανεξαρτητοποιήσεις την χρήση των λειτουργιών ενός αντικειμένου από την εκάστοτε υλοποίηση. Σκέψου ότι σου ζητάω να μου υλοποιήσεις μια δομή λίστας οκ? Η βασικές δυνατότητες μιας λίστας είναι Εισαγωγή, Διαγραφή, Αναζήτηση. Εσύ λοιπόν θα μου δώσεις μια κλάση που υλοποιεί μια λίστα και τις μεθόδους της με χρήση πινάκων, ας την ονομάσουμε List_with_Arrays. Οπότε στο κώδικα μου εγώ θα δηλώσω ένα τέτοιο αντικείμενο και θα το χρησιμοποιώ παντού. Ξαφνικά αργότερα, αποφασίζεις να μου δώσεις μια διαφορετική υλοποίηση που θα κάνει την ίδια δουλειά χρησιμοποιώντας Vectors, List_with_Vectors. Με την σειρά μου εγώ θα πρέπει να αντικαταστήσω στον κώδικα μου όλα τα τμήματα που είχα από την προηγούμενη δομή με την καινούρια. Και αν αυτά δεν είναι συμβατά για π.χ έχεις αλλάξει το όνομα μιας μεθόδου? Θα πρέπει να αλλάξω περισσότερο κώδικα (μπλιαχ!) Αν ωστόσο ορίσεις ένα Interface που θα το υλοποιούν όλες οι διαφορετικές κλάσεις (εναλλακτικές υλοποιήσεις) που θα μου παρέχεις και θα κάνουν την ίδια δουλειά, τότε εγώ θα είμαι σίγουρος πως ό,τι και να μου δώσεις θα έχει πάντα τις ίδιες μεθόδους και θα χρησιμοποιείται με τον ίδιο τρόπο ==> δεν χρειάζεται να αλλάξω τίποτα στο κώδικα μου. Με ένα Interface λοιπόν αναγκάζεις τις εκάστοτε κλάσεις που το υλοποιούν, να υλοποιούν και όλες τις συναρτήσεις αυτού παρέχοντας σου παρόμοια λειτουργικότητα!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.