Δημιουργία εκτεταμένου μοντέλου EMF
Τελευταία ενημέρωση: 31 Μαΐου 2006
Αυτό το πρόγραμμα εκμάθησης αποτελεί την συνέχεια της ενότητας
Δημιουργία μοντέλου EMF, στην οποία
δημιουργείτε ένα απλό μοντέλο βιβλιοθήκης.
Σε εκείνο το πρόγραμμα εκμάθησης παρουσιάσαμε τον τρόπο δημιουργίας ενός μοντέλου EMF από
μοντέλο Rose ή από ένα σύνολο αρχείων διεπαφών Java. Σε αυτό το πρόγραμμα εκμάθησης, θα
γίνει μια παρουσίαση του τρόπου δημιουργίας ενός μοντέλου EMF που επεκτείνει ένα υπάρχον
μοντέλο.
Αρχικά, ας δούμε πάλι το μοντέλο βιβλιοθήκης:
Θα επεκτείνουμε αυτό το μοντέλο βιβλιοθήκης δημιουργώντας ένα νέο πακέτο που
ονομάζεται schoollibrary. Αυτό το πακέτο περιλαμβάνει τρεις κλάσεις, δύο από τις οποίες
επεκτείνουν κλάσεις στο μοντέλο βιβλιοθήκης:
Αυτό το πρόγραμμα εκμάθησης θα παρουσιάσει βήμα προς βήμα τη δημιουργία ενός μοντέλου
EMF για το πακέτο schoollibrary, χρησιμοποιώντας το μοντέλο βιβλιοθήκης που έχετε ήδη
δημιουργήσει.
Όπως και στο προηγούμενο πρόγραμμα εκμάθησης, θα παρουσιάσουμε τη δημιουργία αυτού του
νέου μοντέλου από ένα μοντέλο Rose και από ένα σύνολο διεπαφών Java.
Τα αποτυπώματα οθόνης βασίζονται στην έκδοση 3.2.0 RC6 του Eclipse SDK και στην έκδοση
2.2.0 RC6a του EMF.
Περιεχόμενα
περιεχόμενα
Βήμα 0: Προϋποθέσεις
Το μοντέλο βιβλιοθήκης και η λειτουργία επεξεργασίας δημιουργήθηκαν στο προηγούμενο
πρόγραμμα εκμάθησης, Δημιουργία μοντέλου
EMF.
- Εκκινήστε το Eclipse και επαληθεύστε ότι αυτά τα τρία έργα εμφανίζονται στην προβολή
Πλοήγηση, στην προοπτική Πόρος: "library", library.edit" και "library.editor".

Αν αυτά τα πακέτα δεν περιλαμβάνονται στη λίστα, θα χρειαστεί να επαναλάβετε το
προηγούμενο πρόγραμμα εκμάθησης, ή να δείτε το Παράρτημα για τον
τρόπο ταυτόχρονης δημιουργίας των δύο μοντέλων.
περιεχόμενα
Βήμα 1α: Εισαγωγή μοντέλου από το Rose
Αποθηκεύστε το αρχείο μοντέλου Rose schoollibrary.mdl
κάπου στον σταθμό εργασίας σας. Αυτό το αρχείο περιλαμβάνει τα πακέτα library και schoollibrary.
Όταν γίνεται κοινή χρήση πακέτων ανάμεσα σε διάφορα μοντέλα, θα πρέπει να τοποθετούμε
κάθε πακέτο στο δικό του αρχείο .cat και απλά να προσθέτουμε παραπομπές για κάθε πακέτο
σε ένα αρχείο .mdl. Για τους σκοπούς αυτού του προγράμματος εκμάθησης, αντιγράψαμε και
επεκτείναμε το πακέτο library στο ίδιο αρχείο μοντέλου. Η γεννήτρια συμπεριφέρεται
ακριβώς με τον ίδιο τρόπο, είτε το αρχείο .mdl περιέχει τα ίδια τα πακέτα είτε περιέχει
παραπομπές σε εξωτερικά αρχεία .cat.
Δημιουργήστε ένα νέο έργο EMF στον χώρο εργασίας:
- Εμφανίστε το πλαίσιο διαλόγου "Αρχείο/Δημιουργία/Έργο...".

- Αναπτύξτε το "Eclipse Modeling Framework" και επιλέξτε "Έργο EMF". Πατήστε το κουμπί Επόμενο.

- Δώστε ένα όνομα στο έργο, π.χ. "schoollibrary" και στη συνέχεια πατήστε το κουμπί
Επόμενο.

- Επιλέξτε "Μοντέλο κλάσεων Rose" και πατήστε το κουμπί Επόμενο.

- Πατήστε το κουμπί "Αναζήτηση" και χρησιμοποιήστε το πλαίσιο διαλόγου αρχείου
για να εντοπίσετε το αρχείο μοντέλου Rose. Το αρχείο θα εξεταστεί και θα σας προταθεί ένα
προεπιλεγμένο όνομα για το μοντέλο γεννήτριας. Αν επιθυμείτε, μπορείτε να αλλάξετε το όνομα στο
πλαίσιο καταχώρησης. Στη συνέχεια, πατήστε το κουμπί Επόμενο.
- Το μοντέλο Rose περιέχει δύο πακέτα, τα "org.eclipse.example.library" και "org.eclipse.example.schoollibrary". Επιλέγουμε
μόνο το πακέτο που επιθυμούμε να δημιουργήσουμε, το "org.eclipse.example.schoollibrary".
Ωστόσο, λόγω του ότι το δεύτερο πακέτο παραπέμπει σε κλάσεις του πρώτου, πρέπει να
καθορίσουμε τη θέση αυτού του μοντέλου ώστε να μπορεί να χρησιμοποιηθεί ξανά. Πατήστε το
κουμπί Αναζήτηση.

- Στο πλαίσιο διαλόγου επιλογής αρχείου, αναπτύξτε τον φάκελο που περιέχει το μοντέλο
βιβλιοθήκης και επιλέξτε το μοντέλο γεννήτριας "library.genmodel". Πατήστε το κουμπί OK.

- Αναπτύξτε το μοντέλο "Library" και επιλέξτε το πακέτο "org.eclipse.example.library".
Σημειώστε ότι το μήνυμα σφάλματος εξαφανίζεται. Πατήστε το κουμπί Ολοκλήρωση.

- Θα δημιουργηθούν ένα μοντέλο Ecore (schoollibrary.ecore) και ένα μοντέλο γεννήτριας
(schoollibrary.genmodel). Το δεύτερο ανοίγει στην κύρια προβολή.

περιεχόμενα
Βήμα 1β: Ορισμός του μοντέλου με χρήση Java με σημειώσεις
Ακολουθούν οι διεπαφές Java με σημειώσεις για το πακέτο schoollibrary. Μπορούμε να
δημιουργήσουμε το μοντέλο EMF από αυτά τα αρχεία διεπαφών, αντί από ένα μοντέλο Rose.
SchoolLibrary.java
package org.eclipse.example.schoollibrary;
import org.eclipse.example.library.Library;
/**
* @model
*/
public interface SchoolLibrary extends Library
{
/**
* @model
*/
String getLocation();
}
|
Asset.java
package org.eclipse.example.schoollibrary;
/**
* @model
*/
public interface Asset
{
/**
* @model
*/
float getValue();
}
|
SchoolBook.java
package org.eclipse.example.schoollibrary;
import org.eclipse.example.library.Book;
/**
* @model
*/
public interface SchoolBook extends Book, Asset
{
}
|
Δημιουργήστε ένα νέο κενό έργο EMF στον χώρο εργασίας:
- Εμφανίστε το πλαίσιο διαλόγου "Αρχείο/Δημιουργία/Έργο...".

- Αναπτύξτε το "Eclipse Modeling Framework" και επιλέξτε "Κενό έργο EMF". Πατήστε το κουμπί Επόμενο.

- Δώστε ένα όνομα στο έργο, π.χ. schoollibrary και πατήστε το κουμπί Ολοκλήρωση.

Προσθέστε μια εξάρτηση πρόσθετης λειτουργίας στο υπάρχον έργο βιβλιοθήκης:
- Στην προβολή Εξερεύνηση πακέτων, αναπτύξτε το "schoollibrary/META-INF" και πατήστε
δύο φορές στο "MANIFEST.MF" για να ανοίξετε τη λειτουργία επεξεργασίας δηλώσεων πρόσθετων
λειτουργιών.

- Μεταβείτε στην καρτέλα "Εξαρτήσεις" και πατήστε το κουμπί "Προσθήκη..." που βρίσκεται
στην ενότητα "Απαιτούμενες πρόσθετες λειτουργίες".

- Επιλέξτε την πρόσθετη λειτουργία "library" και πατήστε το κουμπί OK.

- Αποθηκεύστε την αλλαγή στο αρχείο δήλωσης και κλείστε τη λειτουργία επεξεργασίας.

Θα μπορούσατε να δημιουργήσετε και να πληκτρολογήσετε τις διεπαφές όπως στο
προηγούμενο πρόγραμμα εκμάθησης, αλλά αυτή τη φορά θα παρουσιάσουμε τον τρόπο εισαγωγής
τους από το συμπιεσμένο αρχείο
schoollibrary.zip. Αποθηκεύστε
αυτό το αρχείο κάπου στον σταθμό εργασίας σας ή σε κάποιο κενό έργο στον πάγκο εργασίας
σας.
- Πατήστε με το δεξί κουμπί του ποντικιού στο φάκελο src και επιλέξτε Εισαγωγή... από το αναδυόμενο μενού.

- Αναπτύξτε ην επιλογή "Γενικά" και επιλέξτε "Αρχείο αποθήκευσης" ως προέλευση εισαγωγής. Πατήστε το κουμπί Επόμενο.

- Πατήστε το κουμπί Αναζήτηση και εντοπίστε το συμπιεσμένο αρχείο. Βεβαιωθείτε ότι
είναι επιλεγμένα όλα περιεχόμενα του συμπιεσμένου αρχείου.
Μπορείτε να αναπτύξετε τη διακλάδωση φακέλου και να πατήσετε "schoollibrary" για να δείτε
τα αρχεία που περιέχει. Βεβαιωθείτε ότι θα εισαχθούν στο "schoollibrary/src". Πατήστε το κουμπί Ολοκλήρωση.

- Αναπτύξτε το φάκελο "src" και δείτε τις διεπαφές που έχουν εισαχθεί.

Δημιουργήστε το μοντέλο EMF:
- Πατήστε με το δεξί κουμπί του ποντικιού στο φάκελο "model" και επιλέξτε
"Δημιουργία/Άλλο..." από το αναδυόμενο μενού.

- Αναπτύξτε το "Eclipse Modeling Framework" και επιλέξτε "Μοντέλο EMF". Πατήστε το κουμπί Επόμενο.

- Αλλάξτε το όνομα αρχείου σε schoollibrary.genmodel και πατήστε το κουμπί Επόμενο.

- Επιλέξτε "Java με σημειώσεις" και πατήστε το κουμπί Επόμενο.

- Επιλέξτε το πακέτο "org.eclipse.example.schoollibrary" και πατήστε το κουμπί Ολοκλήρωση.

- Θα δημιουργηθούν ένα μοντέλο Ecore (schoollibrary.ecore) και ένα μοντέλο γεννήτριας
(schoollibrary.genmodel). Το δεύτερο είναι ανοικτό στην κύρια προβολή.

περιεχόμενα
Βήμα 2: Δημιουργία κώδικα μοντέλου EMF και λειτουργίας επεξεργασίας
Το μοντέλο γεννήτριας εμφανίζει ένα κεντρικό αντικείμενο, το οποίο αντιπροσωπεύει
ολόκληρο το μοντέλο. Τα θυγατρικά στοιχεία του αντικειμένου μοντέλου αναπαριστούν τα
πακέτα του μοντέλου.
- Αναπτύξτε το μοντέλο για να δείτε τα διάφορα στοιχεία του. Σημειώστε ότι το εικονίδιο
του πακέτου "Library" επικαλύπτεται από ένα βέλος, που υποδεικνύει ότι αποτελεί παραπομπή
στο πακέτο που έχει οριστεί στο υπάρχον έργο βιβλιοθήκης.

- Μπορείτε να δημιουργήσετε τον κώδικα του μοντέλου και των λειτουργιών επεξεργασίας
για όλα τα πακέτα στο μοντέλο με ένα μόνο βήμα, πατώντας στο κεντρικό στοιχείο και
επιλέγοντας "Δημιουργία όλων" από το αναδυόμενο μενού.
Αυτή η επιλογή θα δημιουργήσει
επίσης μια πρόσθετη λειτουργία tests, που περιέχει κώδικα δοκιμής JUnit.

- Ο κώδικας δημιουργείται στα έργα schoollibrary, schoollibrary.edit,
schoollibrary.editor
και schoollibrary.tests. Δεν θα δημιουργηθεί κώδικας για το μοντέλο στο οποίο γίνεται
παραπομπή και τη βιβλιοθήκη.

Ο κώδικας θα πρέπει να μεταγλωττίζεται αυτόματα κατά τη δημιουργία του, και θα πρέπει
να αναμεταγλωττίζεται κάθε φορά που αλλάζει.
Αν έχετε απενεργοποιήσει την αυτόματη δόμηση στις προτιμήσεις του πάγκου εργασίας, μην
ξεχάσετε να αναδομήσετε τον κώδικα κάθε φορά που αλλάζει.
περιεχόμενα
Βήμα 3: Εκτέλεση της δημιουργημένης λειτουργίας επεξεργασίας
Για να δοκιμάσετε τις νέες πρόσθετες λειτουργίες, θα πρέπει να εκκινήσετε μια δεύτερη
χρήση του Eclipse. Οι πρόσθετες λειτουργίες θα εκτελεστούν σε αυτόν τον πάγκο
εργασίας.
- Επιλέξτε ένα από τα έργα και στη συνέχεια επιλέξτε "Εκτέλεση ως/Εφαρμογή Eclipse" από
το μενού "Εκτέλεση" ή από το αναπτυσσόμενο μενού της γραμμής εργαλείων.

- Περιμένετε να εμφανιστεί μια δεύτερη χρήση του Eclipse IDE. Εμφανίστε το
πλαίσιο διαλόγου "Βοήθεια/Πληροφορίες για την πλατφόρμα Eclipse", πατήστε το κουμπί
"Λεπτομέρειες πρόσθετων λειτουργιών" και βεβαιωθείτε ότι υπάρχουν οι δημιουργημένες
πρόσθετες λειτουργίες.

Ο οδηγός μοντέλου Schoollibrary μπορεί πλέον να χρησιμοποιηθεί για τη δημιουργία μιας
νέας χρήσης του μοντέλου.
- Εμφανίστε το πλαίσιο διαλόγου "Αρχείο/Δημιουργία/Έργο...". Αναπτύξτε την επιλογή
"Γενικά", επιλέξτε "Έργο" και πατήστε το κουμπί Επόμενο. Δώστε στο έργο ένα όνομα και πατήστε το κουμπί
Ολοκλήρωση.

- Πατήστε με το δεξί κουμπί του ποντικιού στο έργο και επιλέξτε "Δημιουργία/Άλλο..." από το αναδυόμενο μενού.

- Αναπτύξτε την επιλογή "Οδηγοί δημιουργίας παραδειγμάτων μοντέλων EMF" και επιλέξτε
"Μοντέλο Schoollibrary". Πατήστε το κουμπί Επόμενο.

- Καταχωρήστε ένα όνομα αρχείου για το μοντέλο schoollibrary. Βεβαιωθείτε ότι λήγει με
την επέκταση ".schoollibrary". Στη συνέχεια, πατήστε το κουμπί Επόμενο.

- Επιλέξτε SchoolLibrary ως αντικείμενο μοντέλου και πατήστε το κουμπί Ολοκλήρωση.

- Το νέο μοντέλο ανοίγει στην κύρια προβολή.

Το κεντρικό αντικείμενο σε αυτή τη λειτουργία επεξεργασίας αντιστοιχεί στον πόρο
My.schoollibrary. Σημειώστε ότι το θυγατρικό αντικείμενο είναι όντως μια σχολική βιβλιοθήκη.
- Αναπτύξτε τον πόρο "platform:/resource/librarytest/My.schoollibrary" για να δείτε το
αντικείμενο "School Library". Επιλέξτε αυτό το αντικείμενο.

- Αν η προβολή Ιδιότητες δεν εμφανίζεται ήδη, πατήστε με το δεξί κουμπί του ποντικιού
στο αντικείμενο "School Library" και επιλέξτε "Εμφάνιση προβολής ιδιοτήτων" από το
αναδυόμενο μενού. Καταχωρήστε μερικές τιμές για τα γνωρίσματα Θέση και Όνομα.
- Πατήστε με το δεξί κουμπί του ποντικιού στη σχολική βιβλιοθήκη και επιλέξτε "Νέο
θυγατρικό στοιχείο" από το αναδυόμενο μενού.
Σημειώστε ότι μπορούν να δημιουργηθούν τρία είδη αντικειμένων σε μια σχολική βιβλιοθήκη:
"Writer", "Book" και "School Book". Τα αντικείμενα Writer και Book ορίζονται στο πακέτο
library, ενώ το SchoolBook ορίζεται στο πακέτο schoollibrary.

- Δημιουργήστε δύο αντικείμενα writer, ένα αντικείμενο book και ένα αντικείμενο school
book. Σημειώστε ότι στο αντικείμενο SchoolBook μεταβιβάζονται όλα τα γνωρίσματα του
αντικειμένου Book και προστίθεται ένα επιπλέον γνώρισμα (τιμή), όπως σχεδιάζαμε.

- Αποθηκεύστε το μοντέλο.

Τερματίστε τη δεύτερη χρήση του Eclipse, επιστρέφοντας στον αρχικό πάγκο
εργασίας ανάπτυξης.
περιεχόμενα
Βήμα 4: Τροποποίηση της λειτουργίας επεξεργασίας
Αυτή η ενότητα του προγράμματος εκμάθησης θα σας παρουσιάσει τον τρόπο τροποποίησης
του κώδικα που δημιουργείται.
Θα αλλάξουμε απλά μια ετικέτα στη δημιουργημένη λειτουργία επεξεργασίας, αλλά θα
χρησιμοποιήσουμε αρκετούς διαφορετικούς τρόπους.
Αρχικά, θα αλλάξουμε το μοντέλο γεννήτριας, επηρεάζοντας τον κώδικα που
δημιουργείται.
- Στο μοντέλο γεννήτριας schoollibrary, επιλέξτε την κλάση SchoolLibrary.
Στην προβολή Ιδιότητες, αλλάξτε την τιμή της ιδιότητας "Λειτουργία ετικετών" σε "location
: EString". Αυτό καθορίζει ποια λειτουργία θα χρησιμοποιείται στην ετικέτα των αντικειμένων
SchoolLibrary.

- Για να τεθούν οι αλλαγές αυτές σε εφαρμογή, πρέπει να επαναδημιουργηθεί η κλάση
παροχέα στοιχείων για το SchoolLibrary. Αποθηκεύστε τις αλλαγές και στη συνέχεια πατήστε
με το δεξί κουμπί του ποντικιού στο SchoolLibrary και επιλέξτε "Δημιουργία κώδικα
τροποποίησης" από το αναδυόμενο μενού. Με αυτό τον τρόπο δημιουργείται μόνο αυτός ο
παροχέας στοιχείων, μαζί με τεχνουργήματα τροποποίησης για το περιέχον πακέτο και
μοντέλο.
Μπορείτε επίσης να επιλέξετε την επαναδημιουργία όλου του κώδικα, αλλά αυτό διαρκεί
περισσότερη ώρα.
Ο ακόλουθος πίνακας συνοψίζει τα αρχεία που δημιουργούνται από τα στοιχεία μενού
"Δημιουργία κώδικα μοντέλου", "Δημιουργία κώδικα τροποποίησης", "Δημιουργία κώδικα
λειτουργίας επεξεργασίας" και "Δημιουργία κώδικα δοκιμών" στα συμφραστικά μενού διαφόρων
αντικειμένων. Το στοιχείο μενού "Δημιουργία όλων" ισοδυναμεί με την επιλογή και των τριών
στοιχείων μενού.
|
Δημιουργία κώδικα μοντέλου |
Δημιουργία κώδικα τροποποίησης |
Δημιουργία κώδικα λειτουργίας επεξεργασίας |
Δημιουργία κώδικα δοκιμών |
Μοντέλο <M> |
MANIFEST.MF
build.properties
plugin.properties
plugin.xml
<M>Plugin.java *
...και τα αρχεία για κάθε πακέτο
|
MANIFEST.MF
build.properties
plugin.properties
plugin.xml
<M>EditPlugin.java
...και τα αρχεία για κάθε πακέτο
|
MANIFEST.MF
build.properties
plugin.properties
plugin.xml
<M>EditorPlugin.java
<M>EditorAdvisor.java *
...και τα αρχεία για κάθε πακέτο
|
MANIFEST.MF
build.properties
plugin.properties
plugin.xml
<M>AllTests.java
...και τα αρχεία για κάθε πακέτο
|
Πακέτο <P> |
<P>Package.java
<P>PackageImpl.java
<P>Factory.java
<P>FactoryImpl.java
<P>Switch.java
<P>AdaptorFactory.java
<P>ResourceImpl.java *
<P>ResourceFactoryImpl.java *
<P>Validator.java *
<P>XMLProcessor.java *
...και τα αρχεία για κάθε κλάση και απαρίθμηση
και για το μοντέλο
|
<P>ItemProviderAdaptorFactory.java
...και τα αρχεία για κάθε κλάση
και για το μοντέλο
|
<P>Editor.java
<P>ModelWizard.java
<P>ActionBarContributor.java
...και τα αρχεία για το μοντέλο
|
<P>Tests.java
<P>Example.java
...και τα αρχεία για κάθε κλάση
και για το μοντέλο
|
Κλάση <C> |
<C>.java
<C>Impl.java
...και τα αρχεία για το πακέτο
|
<C>ItemProvider.java
...και τα αρχεία για το πακέτο
|
|
<C>Test.java
...και τα αρχεία για το πακέτο
|
Απαρίθμηση <E> |
<E>.java
...και τα αρχεία για το πακέτο
|
|
|
|
* Αυτά τα αρχεία δεν δημιουργούνται από προεπιλογή.
Τώρα, μπορούμε να δοκιμάσουμε την αλλαγή μας.
- Εκκινήστε μια δεύτερη χρήση του Eclipse ("Εκκίνηση/Εκκίνηση ως/Εφαρμογή Eclipse") και
ανοίξτε πάλι τον πόρο "My.schoollibrary". Αναπτύξτε το αντικείμενο πόρου και
επιλέξτε τη σχολική βιβλιοθήκη.
Σημειώστε ότι στην ετικέτα της σχολικής βιβλιοθήκης εμφανίζεται η θέση και όχι το όνομα
της.
Ας υποθέσουμε ότι το πρόθημα School Library δεν σας αρέσει και θέλετε να το αλλάξετε.
Ο μόνος τρόπος για να γίνει αυτό είναι με την τροποποίηση του κώδικα, αλλά αυτό είναι
εύκολο.
Όπως περιγράφεται στο θέμα
Επισκόπηση του EMF.Edit, το
EMF.Edit χρησιμοποιεί παροχείς στοιχείων για να καθορίσει, μεταξύ άλλων, ποια ετικέτα θα
εμφανίζεται για κάθε είδος αντικειμένου. Συγκεκριμένα, αυτό γίνεται με τη μέθοδο
getText(), την οποία θα πρέπει να αλλάξετε.
- Στην προβολή Εξερεύνηση πακέτων, αναπτύξτε το έργο "schoollibrary.edit". Εντοπίστε και
ανοίξτε το "SchoolLibraryItemProvider.java".

- Εντοπίστε τη μέθοδο "getText()" στην προβολή Διάρθρωση και επιλέξτε την.

- Ο δρομέας στη λειτουργία επεξεργασίας Java θα μετακινηθεί σε αυτή τη μέθοδο.

- Αφαιρέστε τη δεύτερη κλήση getString() από την πρόταση return. Για να εξασφαλιστεί
ότι η αλλαγή δεν θα χαθεί όταν επαναδημιουργηθεί ο κώδικας, το προσδιοριστικό Javadoc
@generated θα πρέπει επίσης να αφαιρεθεί.

- Αποθηκεύστε την αλλαγή, εκκινήστε τη δεύτερη χρήση του Eclipse και ανοίξτε το My.schoollibrary. Σημειώστε
ότι η ετικέτα της σχολικής βιβλιοθήκης περιέχει πλέον μόνο την τιμή του γνωρίσματος
θέσης της.
Αλλάξαμε την υλοποίηση του getText() από την αρχική του μορφή.
Η ιδιότητα λειτουργίας ετικέτας στην κλάση SchoolLibrary του μοντέλου γεννήτριας δεν
επιδρά πλέον στον δημιουργημένο κώδικα. Αυτό οφείλεται στο ότι αφαιρέσαμε το
προσδιοριστικό Javadoc @generated, αποτρέποντας με αυτόν τον τρόπο την αντικατάσταση της
μεθόδου κατά τη δημιουργία κώδικα.
Ας υποθέσουμε τώρα ότι δεν έχετε ακόμα αποφασίσει αν η λειτουργία επεξεργασίας θα
πρέπει να εμφανίζει την τιμή του γνωρίσματος θέσης ή του γνωρίσματος ονόματος.
Θέλετε να μπορείτε να την αλλάξετε μέσω του μοντέλου γεννήτριας αργότερα. Ωστόσο, δεν
θέλετε να εμφανίζεται το πρόθημα "School Library". Ουσιαστικά, θα θέλατε να κρατήσετε τη
δημιουργημένη υλοποίηση διαθέσιμη ώστε να χρησιμοποιηθεί από μια δική σας μέθοδο που
αφαιρεί το πρόθημα από οτιδήποτε επιστρέφει. Η νέα μέθοδος πρέπει να ονομάζεται getText(), άρα η δημιουργημένη μέθοδος
πρέπει να μετονομαστεί.
Ευτυχώς, η γεννήτρια κώδικα EMF υποστηρίζει αυτή τη λειτουργία: όταν μια μέθοδος που
πρόκειται να δημιουργηθεί θα προκαλούσε διένεξη με μια μέθοδο που δεν έχει προσδιοριστικό
@generated, αναζητά μια μέθοδο με το ίδιο όνομα και επίθημα "Gen". Αν η μέθοδος υπάρχει
και έχει το προσδιοριστικό "@generated", η υλοποίηση θα δημιουργηθεί σε αυτήν την μέθοδο.
- Μετονομάστε τη μέθοδο getText() σε getTextGen(), κρατώντας ανέπαφο το
προσδιοριστικό @generated. Για να επιβεβαιώσετε ότι θα δημιουργηθεί, αφαιρέστε το κύριο
σώμα της μεθόδου και αντικαταστήστε το με μια απλή πρόταση return. Δημιουργήστε μια
μέθοδο getText() που αφαιρεί το πρόθημα από τη σειρά χαρακτήρων που επιστρέφει το getTextGen().

- Αποθηκεύστε το SchoolLibraryItemProvider.java, επιστρέψτε στο μοντέλο γεννήτριας,
επιλέξτε "SchoolLibrary" και δημιουργήστε ξανά τον κώδικα τροποποίησης.

- Επιστρέψτε στη μέθοδο getTextGen() στο SchoolLibraryItemProvider.java.
Σημειώστε ότι η αρχική υλοποίηση έχει δημιουργηθεί ξανά.

Μπορείτε να μεταβείτε στο μοντέλο γεννήτριας, να αλλάξετε την ιδιότητα λειτουργίας
ετικέτας, να δημιουργήσετε ξανά τον κώδικα και να επαληθεύσετε ότι επηρεάζεται ο
δημιουργημένος κώδικας.
περιεχόμενα
Παράρτημα: Ένας εναλλακτικός τρόπος δημιουργίας του μοντέλου
Αν το κύριο μοντέλο βιβλιοθήκης και η λειτουργία επεξεργασίας του δεν έχουν ήδη
δημιουργηθεί σε διαφορετικούς φακέλους μπορείτε να δημιουργήσετε τα μοντέλα
βιβλιοθήκης και σχολικής βιβλιοθήκης σε ένα κοινό σύνολο έργων με ένα βήμα. Αυτό μπορεί
να γίνει είτε από το μοντέλο Rose είτε από το σύνολο διεπαφών Java με σημειώσεις.
Αν ξεκινήσετε με το μοντέλο Rose, η διαδικασία είναι ίδια με αυτή που περιγράφηκε
παραπάνω, με διαφορά ότι και τα δύο πακέτα επιλέγονται για δημιουργία κώδικα.
- Στη τελευταία σελίδα του οδηγού δημιουργίας έργου, επιλέξτε τα πακέτα
org.eclipse.example.library και org.eclipse.example.schoollibrary, αντί να κάνετε
παραπομπή σε κάποιο από τα δύο.
Αν ξεκινήσετε με τις διεπαφές Java με σημειώσεις, και τα δύο πακέτα εισάγονται σε ένα
κενό έργο EMF πριν τη δημιουργία του κώδικα.
- Εισαγάγετε τα πακέτα από το library.zip και το
schoollibrary.zip.
- Στην τελευταία σελίδα του οδηγού δημιουργίας έργου, επιλέξτε τα πακέτα
org.eclipse.example.library και org.eclipse.example.schoollibrary.

Όταν πραγματοποιείτε εκκίνηση του περιβάλλοντος εκτέλεσης για να δοκιμάσετε τη νέα
λειτουργία επεξεργασίας, ενδεχομένως να παρατηρήσετε μια μικρή διαφορά στη λειτουργία
επεξεργασίας του μοντέλου βιβλιοθήκης, συγκριτικά με το πώς ήταν όταν δημιουργήθηκε
ξεχωριστά από το μοντέλο schoollibrary.
- Δημιουργήστε ή ανοίξτε ένα μοντέλο βιβλιοθήκης, αναπτύξτε το αντικείμενο πόρου και
πατήστε με το δεξί κουμπί του ποντικιού στο αντικείμενο Library. Επιλέξτε το στοιχείο
μενού "Νέο θυγατρικό στοιχείο".

Υπάρχουν τρία είδη θυγατρικών στοιχείων διαθέσιμα, ενώ στο προηγούμενο πρόγραμμα
εκμάθησης υπήρχαν μόνο δύο. Συγκεκριμένα, συμπεριλαμβάνεται το "School Book", το οποίο
προέρχεται από το πακέτο schoollibrary. Προηγουμένως, η γεννήτρια κώδικα δεν γνώριζε την
ύπαρξή του καθώς δημιουργούσε τον παροχέα στοιχείων για το στοιχείο Library. Τώρα, καθώς
τα δύο πακέτα δημιουργήθηκαν ταυτόχρονα το βασικό πακέτο γνωρίζει τα πάντα για το πακέτο
που το επεκτείνει.
περιεχόμενα