Αρχή » Αρθρογραφία
Ο αντικειμενοστραφέις προγραμματισμός σε βάθος για την JAVA
Τεχνολογία » Software - 16/10/2008Ο Πέτρος Κοσμάς. Java/J2EE Developer, μας έστειλε το παρακάτω βοήθημα σχετικά με τη Java. Αξίζει να το διαβάσετε αν θέλετε να ασχοληθείτε με τον προγραμματισμό.
Τι είναι αντικείμενο;
- Μια αφηρημένη οντότητα
- Υπαρκτές οντότητες στον κόσμο μας: Άνθρωπος, σπίτι, τράπεζα
Αλληλεπιδράσεις μεταξύ αντικειμένων
- Οι λογαριασμοί μας σε τράπεζες
- Οι τραπεζικές υπηρεσίες έκδοσης Δανείων
Η Κλάση (class)
– Αφηρημένη έννοια περιγραφής ενός αντικειμένου
- της εσωτερικής οργάνωσης του
- του τρόπου με τον οποίο επικοινωνεί με το περιβάλλον του
Π.Χ ένας άνθρωπος τρώει ,ένας σκύλος γαβγίζει
Στην Java ώς γλώσσα προγραμματισμού ένα απο τα βασικότερα πράγματα είναι να κατανοήσουμε την ένοια του αντικειμενοστραφείς προγραμματισμού και την φιλοσοφία του.
Απο την αρχή της επιστήμης των υπολογιστών, ένα πρόγραμμα έχει αντιμετωπισθεί όπως μια λογική διαδικασία που παίρνει τα δεδομένα εισόδου, τα επεξεργάζεται, και παράγει τα δεδομένα εξόδου.
Το πρώτο βήμα στον αντικειμενοστραφή προγραμματισμό είναι να προσδιοριστούν όλα τα αντικείμενα που θα διαμορφώσουντο πρόγραμμα και την διαμόρφωση με το ένα και το άλλο, μια άσκηση γνωστή συχνά ως διαμόρφωση στοιχείων.
Μόλις προσδιορίσετε ένα αντικείμενο, το γενικεύετε ως κατηγορία αντικειμένων και καθορίζετε το είδος στοιχείων που περιέχει και οποιεσδήποτε ακολουθίες λογικής που μπορούν να το χειριστούν.
Κάθε ευδιάκριτη ακολουθία λογικής είναι γνωστή ως μέθοδος. Μια πραγματική περίπτωση μιας κατηγορίας καλείται ένα «αντικείμενο» ή, σε μερικά περιβάλλοντα, «περίπτωση μιας κατηγορίας.» Η περίπτωση αντικειμένου ή κατηγορίας είναι αυτό που τρέχουμε στον υπολογιστή.
Οι μέθοδοι παρέχουν οδηγίες στον υπολογιστή και τα χαρακτηριστικά του αντικειμένου παρέχουν τα σχετικά στοιχεία.Τα αντικείμενα - επικοινωνούν το ένα με το άλλο - με τις καθορισμένες με σαφήνεια διεπαφές αποκαλούμενες μηνύματα.
Ο αντικειμενοστραφείς προγραμματισμός αποτελεί ένα ύφος ανάπτυξης που είναι βασισμένο στην έννοια ενός «αντικειμένου» - μια οντότητα που εκθέτει τα χαρακτηριστικά και τη συμπεριφορά.
όπως Ακριβώς κάθε οντοτητα στον πραγματικό κόσμο υπάρχει,έτσι και στον Αντικειμενοστραφή Προγραμματισμό κάθε ομάδα αντιτίθενται από τις κοινές συμπεριφορές και τις ιδιότητές τους.
Η βιολογία ταξινομεί όλα τα σκυλιά, τις γάτες, τους ελέφαντες, και τους ανθρώπους ως θηλαστικά. Τα κοινά χαρακτηριστικά δίνουν στην κοινωνία αυτών των θηλαστικών ορισμένα κοινά στοιχεία. Στον κόσμο του αντικειμενοστραφείς προγραμματισμού η ένοια είναι παρόμοια.
Μια κατηγορία καθορίζει οτι όλα εκείνα τα χαρακτηριστικά έιναι κοινά για έναν τύπο αντικειμένου. Συγκεκριμένα, η κατηγορία καθορίζει όλες εκείνες τις ιδιότητες και συμπεριφορές που εκτίθενται από το αντικείμενο. Η κατηγορία καθορίζει συγκεκριμένα σε ποια μηνύματα τα αντικείμενά ανταποκρίνονται.
Σημείωση :
Μια κλάση καθορίζει τις κοινές ιδιότητες και συμπεριφορές σε έναν τύπο αντικειμένου.
Τα αντικείμενα ενός ορισμένου τύπου μοιράζονται την ίδια συμπεριφορα και τις ιδιότητα(Μεθόδοι-μεταβλητές).
Ένα αντικείμενο μπορεί να ασκήσει τη συμπεριφορά ενός άλλου αντικειμένου με την εκτέλεση μιας λειτουργίας σε εκείνο το αντικείμενο. Αυτό που είναι σημαντικό είναι ότι κάθε μια από αυτές τις ενέργειες αποσπά τη συμπεριφορά ενός αντικειμένου.
Ένα παράδειγμα :
Σε ένα πρόγραμμα έτσι :
public class Human {
String name="";
double kg=0.0;
double power=0.0;
//Μέθοδος
public void introduce(){
System.out.println("My name is :"+name);
}//end of introduce
public void fight(){
System.out.println("Fighting with power "+power);
}//end of fight
}//end of class Human
Ας υποθέσουμε λοιπόν απο την παραπάνω κλάση θέλουμε να δημιουργήσουμε Μερικά αντικείμενα
Human banker=new Human();
Human hero=new Human();
Kάθε στιγμιότυπο περιλαμβάνει τα ίδια ακριβώς στοιχεία και τις ίδιες ακριβώς δυνατότητες όπως
τo Human (Functionality).
Τί το κάνει να διαφέρει ;
Η ΣΥΜΠΕΡΙΦΟΡΑ !
banker.name="Petros";
hero.name="Batman";
Άν εκτελέσουμε τις δύο μεθόδους σε μία Main() της JAVA
banker.introduce();
hero.introduce();
ΟΘΟΝΗ
My name is :Petros
My name is :Batman
Σημείωση:
Η συμπεριφορά ενός αντικειμένου αποτελεί την κατάσταση που βρίσκεται με μία μεταβολή κάποιας ενέργειας. Ο banker έγινε Petros.
Μια συμπεριφορά είναι μέτρα που λαμβάνονται από ένα αντικείμενο όταν περνιέται ένα μήνυμα ή σε απάντηση σε μια αλλαγή. Ένα αντικείμενο μπορεί να ασκήσει τη συμπεριφορά ενός άλλου αντικειμένου με την εκτέλεση μιας λειτουργίας του σε εκείνο το αντικείμενο.
Αυτό που είναι σημαντικό είναι ότι κάθε μια από αυτές τις ενέργειες αποσπά τη συμπεριφορά ενός αντικειμένου.
Τα βασικά στοιχεία του αντικειμενοστραφείς προγραμματισμού
- Encapsulation(ΕΝΘΥΛΑΚΩΣΗ)
- Polymorphism(ΠΟΛΥΜΟΡΦΙΣΜΟΣ)
- Inheritance(KΛΗΡΟΝΟΜΙΚΟΤΗΤΑ)
Προκειμένου να διαμορφώσουμε και να κατανοήσουμε την κυριότητα του αντικειμενοστραφείς προγραμματισμού, πρέπει πρώτα να καθορίσουμε ένα στερεό θεμέλιο επάνω στο οποίο μπορούμε να το επεκτείνουμε στην κατανόηση μας. Κατ' αρχάς, θα πρέπει να προσδιορίσουμε, να καθορίσουμε, και να ερευνήσουμε τις βασικές έννοιες του αντικειμενοστραφείς προγραμματισμού. Μόνο τότε, θα μπορούμε να εφαρμόσουμε κατάλληλα την βασική δομή του. Ένας τέτοιος Τέτοιο θέμα μας φέρνει φυσικά στις τρεις έννοιες που πρέπει να είναι παρούσες για μια γλώσσα που θεωρείται αληθινά αντικειμενοστρεφής. Αυτές οι τρεις έννοιες αναφέρονται συχνά ως τρεις αρχές του αντικειμενοστρεφούς προγραμματισμού.
Η ενθυλάκωση επιτρέπει μία κλάση να αναλυθεί σε ένα πρόγραμμα ως διάφορα μικρότερα, ανεξάρτητα κομμάτια. Κάθε κομμάτι είναι ανεξάρτητο και κάνει την εργασία του ανεξάρτητα από τα άλλα κομμάτια.
Η ενθυλάκωση διατηρεί αυτή την ανεξαρτησία με το να κρύβει τις εσωτερικές λεπτομερειες κάθε κομματιού μίας κλάσης για τον εαυτό του.Μας επιτρέπει να χτίσουμε κάθε ανεξάρτητο κομμάτι μίας κλάσης και την λειτουργία κρύβωντας τις λεπτομέριες της εκτέλεσής από τον εξωτερικό κόσμο.
γιατί πρέπει να κρύβουμε κομμάτια του κώδικα σε μία κλάση ;
Ας υποθέσουμε οτι έχουμε ένα αυτοκίνητο με τα εξείς χαρακτηριστικά
- Τιμόνι
- γκάζι
- μηχανή
- διακόπτης
- μπαταρία
- κυκλώματα
όταν ανοίγουμε τον διακόκτη ενός αυτοκινήτου περιμένουμε το αυτοκίνητο να ξεκινήσει.
Μας ενδιαφέρει τι γίνεται την ώρα που ξεκινάει ο διακόπτης ;ΟΧΙ
το μόνο που μας ενδιαφέρει είναι το αυτοκίνητο να ξεκινησει ασχέτως αν πίσω απο τον διακόπτη κρύβονται άλλες λειτουργίες.
Άρα ο σωστός μηχανικός αυτοκινήτων αφήνει τις λειτουργίες για τον εαυτό του .H διαδικασία επικοινωνίας του διακόπτη με την μπαταρία δέν μας ενδιαφέρει.
ετσι λοιπόν στον κόσμο του αντικειμενοστραφείς προγραμματισμού η ενθυλάκωση αποτελεί στοιχείο για κάποιον που θα χρησιμοποιήσει την κλάση αυτή.
ο διακόπτης αποτελεί ανοιχτό στοιχείο γιατί με αυτόν θα ξεκινήσουμε το αυτοκίνητο.
Η μπαταρία,τα κυκλώματα,και η μηχανή αποτελούν ιδιωτικα στοιχεία.
ο διακόπτης επικοινωνεί μέσω των κυκλωμάτων και την μπαταρία για να ξεκινήσει η μηχανή.
Και επειδή εμείς επικοινωνούμε μέσω του διακόπτη αποτελεί δημόσιο στοιχείο.
Ενώ οι Αντικειμενοστραφείς γλώσσες προγραμματισμού ενθαρρύνουν την ενθυλάκωση, δεν την εγγυώνται. Είναι εύκολο να χτιστεί ο εξαρτώμενος, εύθραυστος κώδικας αλλά η αποτελεσματική ενθυλάκωση έρχεται μόνο με την σωστή και προσχεδιασμένη ανάλυση. Ένα από τα πρώτα βήματα στην αποτελεσματική ενθυλάκωση είναι να τηρούμε τις έννοιες και τουρ προσδορισμούς ενός αντικειμένου πίσω από την κάθε κλάση μας αποτελεσματικά.
Πέτρος Κοσμάς (Java/J2EE Developer)
peter_kosmas@yahoo.com
peter kosmas
Tags: προγραμματισμός, java, j2ee. Προσθήκη άρθρου σε: Freestuff | Del.icio.us | | | | ForaCamp (top) |
Σχόλια
- KALO mporw na pw oti einai ARKETA kalo !!! fenetai oti to egrpapses monos sou ! kalutero apo tis moufes pou grafoun oi kathigites kai den 3eroun ti tous ginetai stin java kai pedevomaste!!!!
By: giorgos Athanasiou @ 17/10/2008 - Kala ola ayta re aderfaki mou alla ti ginete me ton polymorphismo ? Ws edw kala to piges ! pes mas kai tipota gia ton Polymorphismo kai to xrwstaw 4 e3amhna to kolo Mathima
By: Σωτήρης Γεωργίου @ 23/10/2008 - Des sto www.javaworld.gr exei polla paradeigmata
By: Makis @ 26/05/2009 - Καλό ρε φίλε αλλα δέν έχεις βάλει και πολλά στην σελίδα σου ...
:)
έστω λίγα και καλά
...
By: Θανάσης Αστερίου @ 30/07/2009