You are on page 1of 4

Προγραµµατισµός διαδραστικών συστηµάτων Ι (3ο Εξάµηνο)

Θέµατα Εξετάσεων, Χειµερινό Εξάµηνο 2007

Διδάσκων: Γιάννης Ζάννος (iani@ionio.gr)

1. Τι είναι αντικειµενοστραφής προγραµµατισµός


Αντικειµενοστραφής Προγραµµατισµός (Object Oriented Programming, OOP) είναι µία µέθοδος προγραµµατισµού
(programming paradigm) που βασίζεται κατά κύριο λόγο στην έννοια του αντικειµένου (object). Αυτό σηµαίνει ότι
κάθε είδους πράγµα που θέλει να χειριστεί ο προγραµµατιστής είναι ένα αντικείµενο. Παραδείγµατος χάριν ένας
αριθµός (π.χ. 3.14), µία συνάρτηση (function), ένα εικονίδιο, µία ψηφιοποιηµένη εικόνα, ένα βίντεο, ένα γραφικό
σχέδιο, ένα ακουστικό sample (ψηφιοποιηµένο δείγµα ήχου), µιά µουσική νότα, µιά σειρά από µουσικές νότες, είναι
όλα αντικείµενα. Η χρήση της έννοιας του αντικειµένου σαν βάση απλοποιεί και ενοποιεί την διαδικασία του
προγραµµατισµού, γιατί µας επιτρέπει να περιγράψουµε το πρόβληµα που καλείται να λύσει ένα πρόγραµµα σαν
ένα σύνολο αντικειµένων µε συγκεκριµένες ιδιότητες και συµπεριφορά, πράγµα που αντιστοιχεί µε τον τρόπο που
αντιµετωπίζουµε νοητικά τα αντίστοιχα αντικείµενα στον πραγµατικό κόσµο. Παραδείγµατος χάριν:

Ένα αντικείµενο που αντιπροσωπεύει ένα παραλληλόγραµµο που προβάλλεται στην οθόνη, αντιπροσωπεύεται σαν
αντικείµενο του είδους rectangle (“παραλληλόγραµµο”), έχει τις ιδιότητες left, top, width, height, που δείχνουν
αντίστοιχα τις αποστάσεις της αριστερής και της επάνω πλευράς του παραλληλογράµµου από το αριστερό και το
επάνω µέρος της οθόνης, και το πλάτος και το ύψος του παραλληλογράµµου.

Η επικοινωνία µε τα αντικείµενα ενός προγράµµατος γίνεται αποκλειστικά µε µηνύµατα. Δηλαδή, στο παραπάνω
παράδειγµα, για να µάθουµε ποιό είναι το ύψος του παραλληλογάµµου, στέλνουµε σε αυτό το µήνυµα height, γιά να
µάθουµε το εµβαδόν, στέλνουµε το µήνυµα area, κλπ. Επίσης µπορούµε να στείλουµε και µυνύµατα που αλλάζουν
τις ιδιότητες ενός αντιικειµένου, π.χ γία να στρέψουµε ένα παραλληλόγραµο, του στέλνουµε το µήνυµα rotate.

2. Ποιά είναι τα κύρια χαρακτηριστικά ενός αντικειµένου.


Τα δύο κύρια χαρακτηριστικά που ορίζουν κάθε αντικείµενο είναι πρώτον οι ιδιότητές του (properties) και δεύτερον
η συµπεριφορά του (behavior).

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 στο οποίο ανήκει.

3. Τι σηµαίνει η έννοια Class στον αντικειµενοστραφή προγραµµατισµό


Η έννοια class περιγράφει το είδος του αντικειµένου. Παραδείγµατος χάριν, ένας ακέραιος αριθµός όπως το 1
ανήκει στό είδος Integer. Ποιό συγκεκριµένα, το class ενός αντικειµένου καθορίζει τις ιδιότητές του και την
συµπεριφορά του. Είδαµε επάνω ορισµένα παραδείγµατα από classes: Rectangle, List, Customer, Address. To Class
όρίζει πλήρως όλες τις ιδιότητες και την συµπεριφορά των αντικείµενων που ανήκουν σε αυτό (που δηµιουργούνται
από αυτό). Τα αντικείµενα που δηµιουργούνται από ένα Class λέγονται στιγµιότυπα (instances) αυτού του Class
(βλ. παρακάτω).

4. Δώσετε παραδείγµατα µερικών κοινών Classes στην Java.


• Integer (ακέραιος αριθµός)
• Float (δεκαδικός αριθµός)
• String (ακολουθία χαρακτήρων κειµένου)
• Date (ηµεροµηνία)
• Point (σηµείο)
• Rectangle (παραλληλόγραµµο)
• File (αρχείο)
• FileDialog (παράθυρο διαλόγου γιά επιλογή αρχείου)
5. Δώσετε παραδείγµατα µερικών κοινών Classes στo Processing.
PImage: περιέχει δεδοµένα µιάς εικόνας που συνήθως έχει φορτωθεί από αρχείο στον σκληρό δίσκο.

Pfont: Περιέχει τον ορισµό µιάς γραµµατοσειράς που χρησιµοποιείται για να σχηµατισθούν κείµενα στο παράθυρο
του χρήστη.

Psound: Περιέχει δεδοµένα για να αναπαραχθούν ή να αποθηκευθούν δεδοµένα ήχου σε format wav.

6. Τι είναι το στιγµιότυπο (instance) µιάς Class.


Το στιγµιότυπο µιάς class είναι ένα αντικείµενο που έχει ως είδος αυτήν την Class. Παραδείγµατος χάριν αν στην
µεταβλητή µε όνοµα r περιέχεται ένα αντικείµενο του είδους Rectangle τότε αυτό το αντικείµενο λέγεται ότι είναι
στιγµιότυπο του είδους Rectangle.

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.

8. Τι είναι µεταβλητή (variable)


Μεταβλητή είναι ένας “σελιδοδείκτης” πού αντιπροσωπεύεi µιά θέση στην µνήµη ενός προγράµµατος όπου
µπορούµε να τοποθετήσουµε ένα αντικείµενο για να αποθηκευθεί ή απ’ όπου µπορούµε να διαβάσουµε ένα
αντικείµενο που έχει αποθηκευθεί προηγουµένως. H µεταβλητή συνήθως έχει ένα όνοµα που έχει δηλωθεί στην
αρχή του προγράµµατος και που το χρησιµοποιούµε γιά να αποθηκεύσουµε δεδοµένα σε αυτήν ή για να
ανακαλέσουµε ήδη αποθηκευµένα δεδοµένα.

Ο ορισµός µιάς µεταβλητής γίνεται στήν αρχή του προγράµµατος, ή σε κάθε περίπτωση πριν χρησιµοποιηθεί η
µεταβλητή. Από την στιγµή που θα ορισθεί η µεταβλητή, µπορεί πλέον να χρησιµοποιηθεί γιά να αποθηκεύσει µιά
τιµή και γιά να χρησιµοποιηθεί αυτή η τιµή σε άλλα σηµεία του προγράµµατος. Μπορούµε να γράψουµε
διαφορετικές τιµές στην ίδια µεταβλητή σε διαφορετικά σηµεία του προγράµµατος. Όµως ανά πάσα στιγµή µία
µεταβλητή µπορεί να αποθηκεύσει ένα αντικείµενο µόνο. Αν θέλουµε να βάλουµε πολλά αντικείµενα µαζί σε µιά
µεταβλητή, τότε πρέπει υποχρεωτικά να τα “πακετάρουµε” σε ένα αντικείµενο του είδους “συλλογή” (Collection).

9. Περιγράψετε το συντακτικό του ορισµού (declaration = “δήλωση”) µιας µεταβλητής στην Java
<type> <variable name> (optional: []) (optional: = <initial value statement>);

Type δηλώνει τον τύπο της µεταβλητής (int, float, οποιοδήποτε class), variable name είναι το όνοµα της
µεταβλητής, το επιλέξιµο σύµβολο [] δηλώνει ότι προκειται περί array, και το επιλεξιµο = initial value statement
µπορεί να δώσει µιά αρχική τιµή στην µεταβλητή.

Π.χ.

float vertex[] = vertices[vertexCount];

Όπου float είναι ο τύπος (δεκαδικός αριθµός) vertex είναι το όνοµα, [] δηλώνει ότι η µεταβλητή περιέχει ένα array
από δεκαδικούς αριθµούς και το = vertices[vertexCount] δηµιουργεί ένα array που το µέγεθός του δίνεται από την
τιµή της µεταβλητής vertexCount.

10. Τι είναι function (συνάρτηση)


Function είναι ένα πρόγραµµα αποτελούµενο από µία σειρά από statements που αντιπροσωπεύει έναν αλγόριθµο.
Το πρόγραµµα αυτό µπορεί να κληθεί µέσα σε ένα άλλο πρόγραµµα. Κλήση εδώ σηµαίνει ότι το πρόγραµµα θα
τρέξει µέχρει να τελειώσει τον αλγόριθµό του. Για να περάσουµε δεδοµένα στο function που θα επεξεργασθεί κατά
την εκτέλεσή του, µπορούµε να του δώσουµε τιµές σε ορίσµατα (arguments) που έχουν ορισθεί κατά τον ορισµό της
συνάρτησης. Όταν τελειώσει το πρόγραµµα επιστρέφει στο πρόγραµµα που το καλεί κάποιο δεδοµένο ανάλογα µε
το τί έχει ορισθεί στον ορισµό του function. Η τιµή αυτή λέγεται return value.

3/4
11. Περιγράψετε το συντακτικό του ορισµού µιας συνάρτησης στην Java
<return type> <function name>(<argument>, ... )
{
<body>
}

<return type> ορίζει το είδος των δεδοµένων που επιστρέφει η συνάρτηση όταν τελείωνει.

<function name> είναι το όνοµα της συνάρτησης

(<argument>, ...) είναι µία λίστα από 0 ή περισσότερα ορίσµατα που µπορεί να δεχθεί η συνάρτηση. Το κάθε όρισµα
χωρίζεται από το επόµενο µε κόµµα (,) και έχει την µορφή:

<type> <argname>

όπου type είναι ο τύπος του ορίσµατος (τό είδος ή class) και argname είναι το όνοµα του ορίσµατος.

<body> είναι το σώµα της συνάρτησης. Αποτελείται από µιά σειρά από statements που χωρίζονται µεταξυ τους µε
semicolon (;).

12. Ονοµάσετε και περιγράψετε την λειτουργία των 2 βασικών συναρτήσεων που χρησιµοποιεί το σύστηµα
γραφικών processing για την δηµιουργία και τον σχεδιασµό των γραφικών κατα το τρέξιµο του βασικού
προγράµµατος.

1. Συνάρτηση (function) 1: setup

void setup()
{

setup καλείται µονο µία φορά, κατά την αρχή του προγράµµατος του χρήστη. Χρησιµεύει στο να δηµιουργεί όλα τα
απαραίτητα δεδοµένα για να τρέξει το πρόγραµµα στην συνέχεια. Παραδείγµατος χάριν: Δηµιουργεί το παράθυρο
που θα δείξει τα γραφικά στις κατάλληλες διαστάσεις, θέτει τα χρώµατα του υπόβαθρου (background) και του
περιγράµµατος των σχηµάτων, φορτώνει αρχεία ήχων ή φωτογραφιών.

2. Συνάρτηση (function) 2: draw

void draw()
{

draw καλείται επανειληµµένα καθ’ όλη την διάρκεια που δείχνεται το παράθυρο που δείχνει τα γραφικά του
προγράµµατος του χρήστη. Καλείται σε βρόχο (loop) µε σταθερή συχνότητα γιά να ανανεώσει την εικόνα που
δείχνεται στο παράθυρο γραφικών του χρήστη. Χρησιµεύει στο ζωγραφίζει τα γραφικά που θέλει να δείξει ο
χρήστης. Η συχνότητα ανανέωσης που δίνει το σύστηµα είναι 10 frames/sec. Ο χρήστης µπορεί να αλλάξει την
συχνότητα αυτή καλώντας την function framerate:

framerate(25); // call the draw function 25 times per second

4/4

You might also like