Professional Documents
Culture Documents
Diadrasiichou1 s3 ws07
Diadrasiichou1 s3 ws07
Ένα αντικείµενο που αντιπροσωπεύει ένα παραλληλόγραµµο που προβάλλεται στην οθόνη, αντιπροσωπεύεται σαν
αντικείµενο του είδους rectangle (“παραλληλόγραµµο”), έχει τις ιδιότητες left, top, width, height, που δείχνουν
αντίστοιχα τις αποστάσεις της αριστερής και της επάνω πλευράς του παραλληλογράµµου από το αριστερό και το
επάνω µέρος της οθόνης, και το πλάτος και το ύψος του παραλληλογράµµου.
Η επικοινωνία µε τα αντικείµενα ενός προγράµµατος γίνεται αποκλειστικά µε µηνύµατα. Δηλαδή, στο παραπάνω
παράδειγµα, για να µάθουµε ποιό είναι το ύψος του παραλληλογάµµου, στέλνουµε σε αυτό το µήνυµα height, γιά να
µάθουµε το εµβαδόν, στέλνουµε το µήνυµα area, κλπ. Επίσης µπορούµε να στείλουµε και µυνύµατα που αλλάζουν
τις ιδιότητες ενός αντιικειµένου, π.χ γία να στρέψουµε ένα παραλληλόγραµο, του στέλνουµε το µήνυµα rotate.
1. Ιδιότητες (properties)
Συνήθως οι ιδιότητες ενός αντικειµένου αποθηκεύονται ως δεδοµένα µέσα στο αντικείµενο, σε µεταβλητές µε
συγκεκριµένα ονόµατα. Παραδείγµατος χάριν, σε ένα παραλληλόγραµµο η ιδιότητα του ύψους (height)
αντιπροσωπεύεται από έναν αριθµό που είναι αποθηκευµένος στην µεταβλητή µε όνοµα height. Αντίστοιχα, η
ιδιότητα “ηλικία” σε ένα αντικείµενο του είδους “άνθρωπος” µπορεί να αποθηκευθεί σαν αριθµός στην µεταβλητή
ονόµατος age. Το κάθε αντικείµενο µπορεί να έχει τις δικές του µεταβλητές που λέγονται instance variables. Οι
ιδιότητες του αντικειµένου µπορούν λοιπόν να αποθηκευθούν στις µεταβλητές του αντικειµένου, τις λεγόµενες,
instance variables.
Συνήθως, κάθε αντικείµενο έχει ένα συγκεκριµένο αριθµό απο ιδιότητες µε συγκεκριµένα ονόµατα. Π.χ. ένα
αντικείµενο του είδους “πελάτης” (Austomer) µπορεί να έχει τις ιδιότητες “όνοµα”, “διεύθυνση”, “αριθµός
τηλεφώνου”, και ένα αντικείµενο του είδους “διεύθυνση” (Address) µπορεί να έχει τις ιδιότητες “οδός”, “αριθµός”,
“πόλη”, “ταχυδροµικός τοµέας” και “χώρα”.
Υπάρχουν όµως και αντικείµενα που έχουν ακαθόριστο αριθµό µεταβλητών χωρίς ονόµατα. Τέτοια αντικείµενα
ανήκουν στο είδος “συλλογή” (Collection) και τα υποείδη του. Παραδείγµατος χάριν, ένα τέτοιο υποείδος είναι η
“λίστα” (List). Μία λίστα µπορεί να περιέχει απεριόριστο αριθµό άλλων αντικειµένων διατεταγµένα στη σειρά. Τα
αντικείµενα που περιέχει η λίστα, δεν βρίσκονται τοποθετηµένα σε µεταβλητές µε συγκεκριµένα ονόµατα, αλλά
διαβάζονται σύµφωνα µε τον αύξοντα αριθµό της θέσης που βρίσκονται. Το πρώτο αντικέιµενο στη σειρά έχει τον
1/4
αριθµο 0, το δέυτερο τον αριθµο 1 κ.ο.κ. Για να βρούµε λοιπόν το δέκατο αντικείµενο σε µιά λίστα l, στέλνουµε
στην λίστα το µύνηµα:
l.at(9)
2. Συµπεριφορά (behavior)
Η συµπεριφορά ενός αντικειµένου (πιο σωστά: “τρόπος συµπεριφοράς”) αντιπροσωπεύεται από το σύνολο των
µηνυµάτων που “καταλαβαίνει” το αντικείµενο (δηλαδή, τα µηνύµατα στα οποία ξέρει πως να αντιδράσει όταν τα
λάβει), και από τον τρόπο που αντιδρά στο κάθε µήνυµα όταν τό λάβει. Παραδείγµατος χάριν, η συµπεριφορά ενός
αντικειµενου του είδους Rectangle (παραλληλόγραµµο) καθορίζεται από το εξής σύνολο µηνυµάτων:
left (return the distance from the left edge of the screen to your left edge)
top (return the distance from the top edge of the screen to your top edge)
height (return your height)
width (return your width)
area (return your area)
rotate(a) (rotate yourself by a degrees)
transpose(x, y) (transpose your position by x to the right and y to the bottom)
scale(x, y) (scale your size by x in width and y in height)
Με άλλα λόγια, η συµπεριφορά ενός αντικειµένου είναι το “λεξιλόγιο” το οποίο κατέχει το αντικείµενο, και ο
τρόπος µε τον οποίο αυτό αντιδρά σε κάθε “λεξη” (µήνυµα) του λεξιλογίου.
Όπως θα δούµε παρακάτω, οι ιδιότητες και η συµπεριφορά ενός αντικειµένου καθορίζονται από το είδος του,
δηλαδή από το class στο οποίο ανήκει.
Pfont: Περιέχει τον ορισµό µιάς γραµµατοσειράς που χρησιµοποιείται για να σχηµατισθούν κείµενα στο παράθυρο
του χρήστη.
Psound: Περιέχει δεδοµένα για να αναπαραχθούν ή να αποθηκευθούν δεδοµένα ήχου σε format wav.
2/4
7. Τι είναι µήνυµα (message) και τι µέθοδος (method)
Μήνυµα είναι ένα όνοµα στο οποίο αντιστοιχεί ένα πρόγραµµα (method) γιά ένα αντικείµενο ενός είδους (Class).
Παραδείγµατος χάριν, το area είναι ένα µήνυµα στο οποίο αντιστοιχεί ένα πρόγραµµα που υπολογίζει το εµβαδόν
ενός οποιουδήποτε παραλληλογραµµου (Rectangle). Δηλαδή όταν στείλουµε το µήνυµα area σε ένα οποιοδήποτε
αντικείµενο του είδους rectangle, αυτό το αντικείµενο θα µας απαντήσει δίνοντάς µας το εµβαδόν του. Αν δηλαδή
υποθέσουµε ότι στην µεταβλητή r περιέχεται ένα αντικείµενο του είδους Rectangle (παραλληλόγραµµο) τότε γιά να
υπολογίσουµε το εµβαδόν του r θα γράψουµε:
r.area;
Με την συνταξη r.area στέλνουµε το µήνυµα area στο αντικείµενο που περιέχεται στο r και το αντικείµενο µας
απαντά µε το εµβαδόν του.
Method, καθώς έγινε σαφές από τα παραπάνω είναι ένα πρόγραµµα (function), που είναι συνδεδεµένο µε ένα όνοµα
(message) στά αντικείµενα ένός class. Δηλαδή, και το function και το method είναι προγράµµατα. Η διαφορά τους
είναι ότι το function καλείται ανεξάρτητα από κάποιο αντικείµενο, ενώ ένα method είναι πάντοτε συνδεδεµένο µε
αντικείµενα µίας ορισµένης class και µε ένα συγκεκριµένο µήνυµα, το οποίο χρησιµοποιείται για να καλέσει το
method.
Ο ορισµός µιάς µεταβλητής γίνεται στήν αρχή του προγράµµατος, ή σε κάθε περίπτωση πριν χρησιµοποιηθεί η
µεταβλητή. Από την στιγµή που θα ορισθεί η µεταβλητή, µπορεί πλέον να χρησιµοποιηθεί γιά να αποθηκεύσει µιά
τιµή και γιά να χρησιµοποιηθεί αυτή η τιµή σε άλλα σηµεία του προγράµµατος. Μπορούµε να γράψουµε
διαφορετικές τιµές στην ίδια µεταβλητή σε διαφορετικά σηµεία του προγράµµατος. Όµως ανά πάσα στιγµή µία
µεταβλητή µπορεί να αποθηκεύσει ένα αντικείµενο µόνο. Αν θέλουµε να βάλουµε πολλά αντικείµενα µαζί σε µιά
µεταβλητή, τότε πρέπει υποχρεωτικά να τα “πακετάρουµε” σε ένα αντικείµενο του είδους “συλλογή” (Collection).
9. Περιγράψετε το συντακτικό του ορισµού (declaration = “δήλωση”) µιας µεταβλητής στην Java
<type> <variable name> (optional: []) (optional: = <initial value statement>);
Type δηλώνει τον τύπο της µεταβλητής (int, float, οποιοδήποτε class), variable name είναι το όνοµα της
µεταβλητής, το επιλέξιµο σύµβολο [] δηλώνει ότι προκειται περί array, και το επιλεξιµο = initial value statement
µπορεί να δώσει µιά αρχική τιµή στην µεταβλητή.
Π.χ.
Όπου float είναι ο τύπος (δεκαδικός αριθµός) vertex είναι το όνοµα, [] δηλώνει ότι η µεταβλητή περιέχει ένα array
από δεκαδικούς αριθµούς και το = vertices[vertexCount] δηµιουργεί ένα array που το µέγεθός του δίνεται από την
τιµή της µεταβλητής vertexCount.
3/4
11. Περιγράψετε το συντακτικό του ορισµού µιας συνάρτησης στην Java
<return type> <function name>(<argument>, ... )
{
<body>
}
<return type> ορίζει το είδος των δεδοµένων που επιστρέφει η συνάρτηση όταν τελείωνει.
(<argument>, ...) είναι µία λίστα από 0 ή περισσότερα ορίσµατα που µπορεί να δεχθεί η συνάρτηση. Το κάθε όρισµα
χωρίζεται από το επόµενο µε κόµµα (,) και έχει την µορφή:
<type> <argname>
όπου type είναι ο τύπος του ορίσµατος (τό είδος ή class) και argname είναι το όνοµα του ορίσµατος.
<body> είναι το σώµα της συνάρτησης. Αποτελείται από µιά σειρά από statements που χωρίζονται µεταξυ τους µε
semicolon (;).
12. Ονοµάσετε και περιγράψετε την λειτουργία των 2 βασικών συναρτήσεων που χρησιµοποιεί το σύστηµα
γραφικών processing για την δηµιουργία και τον σχεδιασµό των γραφικών κατα το τρέξιµο του βασικού
προγράµµατος.
void setup()
{
setup καλείται µονο µία φορά, κατά την αρχή του προγράµµατος του χρήστη. Χρησιµεύει στο να δηµιουργεί όλα τα
απαραίτητα δεδοµένα για να τρέξει το πρόγραµµα στην συνέχεια. Παραδείγµατος χάριν: Δηµιουργεί το παράθυρο
που θα δείξει τα γραφικά στις κατάλληλες διαστάσεις, θέτει τα χρώµατα του υπόβαθρου (background) και του
περιγράµµατος των σχηµάτων, φορτώνει αρχεία ήχων ή φωτογραφιών.
void draw()
{
draw καλείται επανειληµµένα καθ’ όλη την διάρκεια που δείχνεται το παράθυρο που δείχνει τα γραφικά του
προγράµµατος του χρήστη. Καλείται σε βρόχο (loop) µε σταθερή συχνότητα γιά να ανανεώσει την εικόνα που
δείχνεται στο παράθυρο γραφικών του χρήστη. Χρησιµεύει στο ζωγραφίζει τα γραφικά που θέλει να δείξει ο
χρήστης. Η συχνότητα ανανέωσης που δίνει το σύστηµα είναι 10 frames/sec. Ο χρήστης µπορεί να αλλάξει την
συχνότητα αυτή καλώντας την function framerate:
4/4