Προς το περιεχόμενο

OOP Interface ? ? ?


merianos

Προτεινόμενες αναρτήσεις

Δημοσ.

Για σε όλους ! ! !

 

Θα ήθελα να μου εξηγήσετε κάτι που μπορεί να είναι απλό αλλά δεν έχω βρει την κατάλληλη πηγή ακόμα. Το Interface στον Object Oriented προγραμματισμό τι ακριβώς κάνει ? ? ? Και που χρησιμεύει ? ? ?

 

Ευχαριστώ πολύ ! ! !

Δημοσ.

Γενικά. Έχω δει 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.

Δημοσ.

Κοίθτα στις MS γλώσσες δεν ξέρω τι παίζει αλλά Java πρέπει να υλοποιήσεις τα πάντα μόνο αν είναι Concrete class. Τέλος πάντων, θέμα οργάνωσης είναι το interface.

Δημοσ.

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>, έτσι ώστε σε κάθε κύκλο να μπορείς να τα μετακινείς.

Δημοσ.

Ναι, απλά αυτό που λεεί το παιδί είναι "αν τα υλοποιούσα χωρίς interface δεν θα δούλευάν;" Προφανώς ναι. Απλά το interface είναι κάτι μεταξύ υπόσχεσης προς τον χρήστη μιας κλάσης και έναν καλό τρόπο να αποφύγουμε πολλά μπερδέματα.

Δημοσ.

Το "παιδί" ρώτησε τι είναι το interface και που χρησιμεύει, και πάνω σε αυτό έδωσα λίγη βοήθεια.

 

Όσο για τα μπερδέματα, απλά η χρήση interfaces δεν συνεπάγεται καθαρό και ευέλικτο design αυτομάτως.

Δημοσ.
Δεν μπορώ όμως να καταλάβω το λόγο ύπαρξης ενός Interface.

 

είναι ¨μηχανισμός¨ χειρισμού μιάς εφαρμογής

.

Δημοσ.

Σας ευχαριστώ όλους για τη συμμετοχή σας στο Post μου. Αυτό που θέλω να μάθω όμως είναι ποιος ο λόγος ύπαρξης τον Interfaces ( προγραμματιστικά ).

 

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

 

Οι Interfaces όμως ? ? ?

Δημοσ.

Σκοπός ενός Interface είναι η δυνατότητα να ανεξαρτητοποιήσεις την χρήση των λειτουργιών ενός αντικειμένου από την εκάστοτε υλοποίηση.

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

Η βασικές δυνατότητες μιας λίστας είναι Εισαγωγή, Διαγραφή, Αναζήτηση.

 

Εσύ λοιπόν θα μου δώσεις μια κλάση που υλοποιεί μια λίστα και τις μεθόδους της με χρήση πινάκων, ας την ονομάσουμε List_with_Arrays. Οπότε στο κώδικα μου εγώ θα δηλώσω ένα τέτοιο αντικείμενο και θα το χρησιμοποιώ παντού. Ξαφνικά αργότερα, αποφασίζεις να μου δώσεις μια διαφορετική υλοποίηση που θα κάνει την ίδια δουλειά χρησιμοποιώντας Vectors, List_with_Vectors.

 

Με την σειρά μου εγώ θα πρέπει να αντικαταστήσω στον κώδικα μου όλα τα τμήματα που είχα από την προηγούμενη δομή με την καινούρια. Και αν αυτά δεν είναι συμβατά για π.χ έχεις αλλάξει το όνομα μιας μεθόδου? Θα πρέπει να αλλάξω περισσότερο κώδικα (μπλιαχ!)

 

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

 

Με ένα Interface λοιπόν αναγκάζεις τις εκάστοτε κλάσεις που το υλοποιούν, να υλοποιούν και όλες τις συναρτήσεις αυτού παρέχοντας σου παρόμοια λειτουργικότητα!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...