SlideShare una empresa de Scribd logo
1 de 3
Descargar para leer sin conexión
Πανεπιστήμιο Κύπρου
                                  Τμήμα Πληροφορικής
             ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός
                              Διδάσκων: Δρ. Χαράλαμπος Πουλλής
                                          Εργασία 3


Πρώτο Μέρος: Prime Finder
Γράψτε ένα πρόγραμμα σε JAVA το οποίο να εκτυπώνει τους N μικρότερους πρώτους αριθμούς, όπου N μια σταθερά που
θα δηλώνεται μέσα στο πρόγραμμα. Το αρχείο να ονομαστεί PrimeFinder.java και να γράψετε με σχόλια το
ονοματεπώνυμο και τον αριθμό ταυτότητας σας στο πάνω μέρος του προγράμματος. Βεβαιωθείτε ότι το πρόγραμμα σας
είναι ορθό και τρέχει.




Δεύτερο Μέρος: Υλοποίηση προγράμματος «τρίλιζα» σε JAVA
Γράψτε ένα πρόγραμμα πού θα παίζει τρίλιζα (σε αυτή την άσκηση δεν ενδιαφέρουν τα γραφικά, π.χ. ο χρήστης θα μπορεί
να επιλέξει κάποιο τετράγωνο χρησιμοποιώντας αριθμό 1…9 ή συντεταγμένες x,y όπου x=1..3 και y=1..3). Στόχος του
προγράμματος είναι η προσομοίωση του παιχνιδιού και η αλληλεπίδραση με τον χρήστη. Για ευκολία μπορείτε να
κάνετε τις ακόλουθες παραδοχές:

1.     Το παιχνίδι μπορεί να λειτουργήσει ως «χρήστης εναντίον χρήστη», δηλ. ο χρήστης παίζει εναντίον κάποιου άλλου
       χρήστη.
2.     Το πρόγραμμα θα δέχεται «κινήσεις» και θα αναγνωρίζει πότε το παιχνίδι τελείωσε (νίκη, ήττα η ισοπαλία)
3.     Ο χρήστης θα μπορεί να παίξει μια η περισσότερες φορές. Για όσο τρέχει το πρόγραμμα, θα μπορεί να κρατάει
       αποτελέσματα των παιχνιδιών (στην μνήμη).

Το πρόγραμμά σας θα πρέπει να τοποθετηθεί στη δική του βιβλιοθήκη (πακέτο). Ο κώδικάς σας θα πρέπει να είναι
τεκμηριωμένος και να ακολουθεί τις προγραμματιστικές συμβάσεις της JAVA. Στο πρόγραμμα σας θα πρέπει να
χρησιμοποιήσετε και να δικαιολογήσετε τα εξής:
      •      Υπερφόρτωση (Overloading)
      •      Κληρονομικότητα (extend, implements, abstract, interface) και Όψιμη Πρόσδεση (late binding)
      •      Τις λέξεις-κλειδιά this, super
      •      Τις ορατότητες πρόσβασης public, private

Για ευκολία μπορείτε να χρησιμοποιήσετε έτοιμες βιβλιοθήκες της Java αλλά μόνο για χειρισμό της εισόδου (standard
input/output) η/και αποθήκευση δεδομένων (δηλ. arrays, arraylist, vector).
Τρίτο Μέρος: Μαγικά Τετράγωνα
 Ένα μαγικό τετράγωνο τάξης N είναι μία διευθέτηση από NxN αριθμούς, συνήθως ακέραιους από 0 - 9, σε μορφή
τετραγώνου, ούτως ώστε όλοι οι N αριθμοί σε όλες τις σειρές, σε όλες τις στήλες, και τις δύο διαγώνιες έχουν άθροισμα την
ίδια “μαγική” σταθερή τιμή. ( Βλ: http://en.wikipedia.org/wiki/Magic_square )




Δεδομένα:
Σας δίνονται 2 αρχεία: Test1.txt και Test2.txt.

Ζητούμενα:
1.    Δημιουργείστε μία κλάση Square με πεδία δεδομένων που να αρμόζουν στην πιο πάνω περιγραφή.
2.    Δημιουργείστε μία μέθοδο void read(String fileName) που να παίρνει σαν παράμετρο ένα όνομα κάποιου αρχείου
      που περιέχει σειρές αριθμών διαχωρισμένους από tab('t'). Η μέθοδος πρέπει να διαβάζει τους αριθμούς από το
      αρχείο και να αρχικοποιεί τις δομές δεδομένων της κλάσης αναλόγως.
3.    Δημιουργείστε μία μέθοδο String isMagic() που να ελέγχει αν πρόκειται για μαγικό τετράγωνο και να επιστρέφει
      ανάλογα την απάντηση “This is a magic square” ή “This is NOT a magic square”.
4.    Δημιουργείστε μία μέθοδο void create() η οποία να δημιουργεί ένα μαγικό τετράγωνο χρησιμοποιώντας τον
      αλγόριθμο Siamese. ( Βλ.: http://en.wikipedia.org/wiki/Siamese_method )

Αλγόριθμος Siamese:
Ξεκινούμε από την κεντρική στήλη της πρώτης σειράς βάζοντας τον αριθμό 1. Ακολούθως η βασική κίνηση για τους
υπόλοιπους αριθμούς είναι να μετακινηθούμε διαγώνια (πάνω δεξιά). Άν υπάρχει ήδη αριθμός στην καινούργια θέση τότε
πάμε στην αρχική θέση και μετακινούμαστε ένα τετράγωνο προς τα κάτω. Άν μία κίνηση βγεί εκτός του τετραγώνου τότε
συνεχίζουμε από την τελευταία σειρά της επόμενης στήλης ( ή της πρώτης στήλης αν η κίνηση γίνεται από την τελευταία
στήλη).




Hints: Χρησιμοποιείστε τη στατική μέθοδο String.split για την επεξεργασία των περιεχομένων των αρχείων. Περισσότερες
πληροφορίες στο JAVA API ( http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html ).

ΠΑΡΑΔΟΤΕΑ
Θα πρέπει να υποβάλλετε ένα αρχείο zip για βαθμολόγηση, μέσω του BlackBoard:
1.    Πρώτο μέρος: ένα αρχείο .java , δηλαδή PrimeFinder.java.
2.    Δεύτερο μέρος: ένα σύντομο σχέδιο του προγράμματός σας (.pdf) με επεξηγήσεις για τις κλάσεις που έχετε
      υλοποιήσει και τη διαπροσωπεία τους. Η περιγραφή θα περιλαμβάνει και δικαιολόγηση για το πώς και γιατί
      χρησιμοποιήσατε την Υπερφόρτωση (Overloading), την Κληρονομικότητα και Όψιμη Πρόσδεση (late binding), τις
      λέξεις this και super, και τις ορατότητες πρόσβασης public & private. Τα αρχεία/προγράμματά σας (.java) με
      ακριβείς οδηγίες για το πώς αυτά μπορούν να εγκατασταθούν και να τρέξουν σε περιβάλλον Linux, χωρίς την χρήση
      ειδικών εργαλείων (π.χ. Eclipse). Δηλαδή το αρχείο zip θα περιέχει το pdf , τα αρχεία .java και τις οδηγίες
      εγκατάστασης.
3.    Τρίτο μέρος: ένα αρχείο .java, δηλαδή Square.java
ΟΔΗΓΙΕΣ
1.     Μη τήρηση των ημερομηνιών παράδοσης των εργασιών συνεπάγεται τις ανάλογες βαθμολογικές επιπτώσεις (μέχρι
και μηδενισμό της εργασίας).
2.     Αποφύγετε τις αντιγραφές. Οι αντιγραφείς θα μηδενίζονται και διακινδυνεύουν να υποστούν πειθαρχικές κυρώσεις.

Ημερομηνίες
Ανακοίνωση άσκησης: 13/10/2009
Τελευταία ημερομηνία παράδοσης: 27/10/2007

Más contenido relacionado

Similar a Exercise3

Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationISSEL
 
Οδηγός εγκατάστασης DSpace
Οδηγός εγκατάστασης DSpaceΟδηγός εγκατάστασης DSpace
Οδηγός εγκατάστασης DSpaceGeorgios Gkoumas
 
Nikolaos Oikonomou
Nikolaos OikonomouNikolaos Oikonomou
Nikolaos OikonomouISSEL
 
Strings in Python
Strings in PythonStrings in Python
Strings in Pythonstzinieris
 
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...Manos Tsardoulias
 
Evangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentationEvangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentationISSEL
 
553193902-2-Intro-to-Java.pdf
553193902-2-Intro-to-Java.pdf553193902-2-Intro-to-Java.pdf
553193902-2-Intro-to-Java.pdfDimitraPapalitsa
 
Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Dimitris Psounis
 
Κωνσταντίνος Σιδέρης 7254
Κωνσταντίνος Σιδέρης 7254Κωνσταντίνος Σιδέρης 7254
Κωνσταντίνος Σιδέρης 7254ISSEL
 
διδακτικο σεναριο στη δομή επιλογής
διδακτικο σεναριο στη δομή επιλογήςδιδακτικο σεναριο στη δομή επιλογής
διδακτικο σεναριο στη δομή επιλογήςEffie Tsiabou
 
μάθημα4 9/11
μάθημα4 9/11μάθημα4 9/11
μάθημα4 9/11eseralid
 
Big Data with Apache Spark and Graphx
Big Data with Apache Spark and GraphxBig Data with Apache Spark and Graphx
Big Data with Apache Spark and GraphxGeorge Sidiras
 
Σενάριο για Το Λογισμικο του H/Y - Kατηγορίες Λογισμικού 2
Σενάριο για Το Λογισμικο του H/Y - Kατηγορίες  Λογισμικού 2Σενάριο για Το Λογισμικο του H/Y - Kατηγορίες  Λογισμικού 2
Σενάριο για Το Λογισμικο του H/Y - Kατηγορίες Λογισμικού 2Christos Xilogiannis
 

Similar a Exercise3 (20)

Scratch 2003
Scratch 2003Scratch 2003
Scratch 2003
 
Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentation
 
Οδηγός εγκατάστασης DSpace
Οδηγός εγκατάστασης DSpaceΟδηγός εγκατάστασης DSpace
Οδηγός εγκατάστασης DSpace
 
Nikolaos Oikonomou
Nikolaos OikonomouNikolaos Oikonomou
Nikolaos Oikonomou
 
Avouris teaching python
Avouris teaching pythonAvouris teaching python
Avouris teaching python
 
Strings in Python
Strings in PythonStrings in Python
Strings in Python
 
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
 
Evangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentationEvangelos papathomas diploma thesis presentation
Evangelos papathomas diploma thesis presentation
 
Python. 1 2 δομή ακολουθίας
Python. 1 2 δομή ακολουθίαςPython. 1 2 δομή ακολουθίας
Python. 1 2 δομή ακολουθίας
 
Python Κεφ. 1.5 συναρτήσεις
Python Κεφ. 1.5 συναρτήσειςPython Κεφ. 1.5 συναρτήσεις
Python Κεφ. 1.5 συναρτήσεις
 
553193902-2-Intro-to-Java.pdf
553193902-2-Intro-to-Java.pdf553193902-2-Intro-to-Java.pdf
553193902-2-Intro-to-Java.pdf
 
Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2
 
279 - Light waves II
279 - Light waves II279 - Light waves II
279 - Light waves II
 
Κωνσταντίνος Σιδέρης 7254
Κωνσταντίνος Σιδέρης 7254Κωνσταντίνος Σιδέρης 7254
Κωνσταντίνος Σιδέρης 7254
 
διδακτικο σεναριο στη δομή επιλογής
διδακτικο σεναριο στη δομή επιλογήςδιδακτικο σεναριο στη δομή επιλογής
διδακτικο σεναριο στη δομή επιλογής
 
μάθημα4 9/11
μάθημα4 9/11μάθημα4 9/11
μάθημα4 9/11
 
Big Data with Apache Spark and Graphx
Big Data with Apache Spark and GraphxBig Data with Apache Spark and Graphx
Big Data with Apache Spark and Graphx
 
Σενάριο για Το Λογισμικο του H/Y - Kατηγορίες Λογισμικού 2
Σενάριο για Το Λογισμικο του H/Y - Kατηγορίες  Λογισμικού 2Σενάριο για Το Λογισμικο του H/Y - Kατηγορίες  Λογισμικού 2
Σενάριο για Το Λογισμικο του H/Y - Kατηγορίες Λογισμικού 2
 
Senario bakopoulos nikolaos
Senario bakopoulos nikolaosSenario bakopoulos nikolaos
Senario bakopoulos nikolaos
 
Python Programming, 1st Test 2016-17
Python Programming, 1st Test 2016-17Python Programming, 1st Test 2016-17
Python Programming, 1st Test 2016-17
 

Exercise3

  • 1. Πανεπιστήμιο Κύπρου Τμήμα Πληροφορικής ΕΠΛ233: Αντικειμενοστρεφής Προγραμματισμός Διδάσκων: Δρ. Χαράλαμπος Πουλλής Εργασία 3 Πρώτο Μέρος: Prime Finder Γράψτε ένα πρόγραμμα σε JAVA το οποίο να εκτυπώνει τους N μικρότερους πρώτους αριθμούς, όπου N μια σταθερά που θα δηλώνεται μέσα στο πρόγραμμα. Το αρχείο να ονομαστεί PrimeFinder.java και να γράψετε με σχόλια το ονοματεπώνυμο και τον αριθμό ταυτότητας σας στο πάνω μέρος του προγράμματος. Βεβαιωθείτε ότι το πρόγραμμα σας είναι ορθό και τρέχει. Δεύτερο Μέρος: Υλοποίηση προγράμματος «τρίλιζα» σε JAVA Γράψτε ένα πρόγραμμα πού θα παίζει τρίλιζα (σε αυτή την άσκηση δεν ενδιαφέρουν τα γραφικά, π.χ. ο χρήστης θα μπορεί να επιλέξει κάποιο τετράγωνο χρησιμοποιώντας αριθμό 1…9 ή συντεταγμένες x,y όπου x=1..3 και y=1..3). Στόχος του προγράμματος είναι η προσομοίωση του παιχνιδιού και η αλληλεπίδραση με τον χρήστη. Για ευκολία μπορείτε να κάνετε τις ακόλουθες παραδοχές: 1. Το παιχνίδι μπορεί να λειτουργήσει ως «χρήστης εναντίον χρήστη», δηλ. ο χρήστης παίζει εναντίον κάποιου άλλου χρήστη. 2. Το πρόγραμμα θα δέχεται «κινήσεις» και θα αναγνωρίζει πότε το παιχνίδι τελείωσε (νίκη, ήττα η ισοπαλία) 3. Ο χρήστης θα μπορεί να παίξει μια η περισσότερες φορές. Για όσο τρέχει το πρόγραμμα, θα μπορεί να κρατάει αποτελέσματα των παιχνιδιών (στην μνήμη). Το πρόγραμμά σας θα πρέπει να τοποθετηθεί στη δική του βιβλιοθήκη (πακέτο). Ο κώδικάς σας θα πρέπει να είναι τεκμηριωμένος και να ακολουθεί τις προγραμματιστικές συμβάσεις της JAVA. Στο πρόγραμμα σας θα πρέπει να χρησιμοποιήσετε και να δικαιολογήσετε τα εξής: • Υπερφόρτωση (Overloading) • Κληρονομικότητα (extend, implements, abstract, interface) και Όψιμη Πρόσδεση (late binding) • Τις λέξεις-κλειδιά this, super • Τις ορατότητες πρόσβασης public, private Για ευκολία μπορείτε να χρησιμοποιήσετε έτοιμες βιβλιοθήκες της Java αλλά μόνο για χειρισμό της εισόδου (standard input/output) η/και αποθήκευση δεδομένων (δηλ. arrays, arraylist, vector).
  • 2. Τρίτο Μέρος: Μαγικά Τετράγωνα Ένα μαγικό τετράγωνο τάξης N είναι μία διευθέτηση από NxN αριθμούς, συνήθως ακέραιους από 0 - 9, σε μορφή τετραγώνου, ούτως ώστε όλοι οι N αριθμοί σε όλες τις σειρές, σε όλες τις στήλες, και τις δύο διαγώνιες έχουν άθροισμα την ίδια “μαγική” σταθερή τιμή. ( Βλ: http://en.wikipedia.org/wiki/Magic_square ) Δεδομένα: Σας δίνονται 2 αρχεία: Test1.txt και Test2.txt. Ζητούμενα: 1. Δημιουργείστε μία κλάση Square με πεδία δεδομένων που να αρμόζουν στην πιο πάνω περιγραφή. 2. Δημιουργείστε μία μέθοδο void read(String fileName) που να παίρνει σαν παράμετρο ένα όνομα κάποιου αρχείου που περιέχει σειρές αριθμών διαχωρισμένους από tab('t'). Η μέθοδος πρέπει να διαβάζει τους αριθμούς από το αρχείο και να αρχικοποιεί τις δομές δεδομένων της κλάσης αναλόγως. 3. Δημιουργείστε μία μέθοδο String isMagic() που να ελέγχει αν πρόκειται για μαγικό τετράγωνο και να επιστρέφει ανάλογα την απάντηση “This is a magic square” ή “This is NOT a magic square”. 4. Δημιουργείστε μία μέθοδο void create() η οποία να δημιουργεί ένα μαγικό τετράγωνο χρησιμοποιώντας τον αλγόριθμο Siamese. ( Βλ.: http://en.wikipedia.org/wiki/Siamese_method ) Αλγόριθμος Siamese: Ξεκινούμε από την κεντρική στήλη της πρώτης σειράς βάζοντας τον αριθμό 1. Ακολούθως η βασική κίνηση για τους υπόλοιπους αριθμούς είναι να μετακινηθούμε διαγώνια (πάνω δεξιά). Άν υπάρχει ήδη αριθμός στην καινούργια θέση τότε πάμε στην αρχική θέση και μετακινούμαστε ένα τετράγωνο προς τα κάτω. Άν μία κίνηση βγεί εκτός του τετραγώνου τότε συνεχίζουμε από την τελευταία σειρά της επόμενης στήλης ( ή της πρώτης στήλης αν η κίνηση γίνεται από την τελευταία στήλη). Hints: Χρησιμοποιείστε τη στατική μέθοδο String.split για την επεξεργασία των περιεχομένων των αρχείων. Περισσότερες πληροφορίες στο JAVA API ( http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html ). ΠΑΡΑΔΟΤΕΑ Θα πρέπει να υποβάλλετε ένα αρχείο zip για βαθμολόγηση, μέσω του BlackBoard: 1. Πρώτο μέρος: ένα αρχείο .java , δηλαδή PrimeFinder.java. 2. Δεύτερο μέρος: ένα σύντομο σχέδιο του προγράμματός σας (.pdf) με επεξηγήσεις για τις κλάσεις που έχετε υλοποιήσει και τη διαπροσωπεία τους. Η περιγραφή θα περιλαμβάνει και δικαιολόγηση για το πώς και γιατί χρησιμοποιήσατε την Υπερφόρτωση (Overloading), την Κληρονομικότητα και Όψιμη Πρόσδεση (late binding), τις λέξεις this και super, και τις ορατότητες πρόσβασης public & private. Τα αρχεία/προγράμματά σας (.java) με ακριβείς οδηγίες για το πώς αυτά μπορούν να εγκατασταθούν και να τρέξουν σε περιβάλλον Linux, χωρίς την χρήση ειδικών εργαλείων (π.χ. Eclipse). Δηλαδή το αρχείο zip θα περιέχει το pdf , τα αρχεία .java και τις οδηγίες εγκατάστασης. 3. Τρίτο μέρος: ένα αρχείο .java, δηλαδή Square.java
  • 3. ΟΔΗΓΙΕΣ 1. Μη τήρηση των ημερομηνιών παράδοσης των εργασιών συνεπάγεται τις ανάλογες βαθμολογικές επιπτώσεις (μέχρι και μηδενισμό της εργασίας). 2. Αποφύγετε τις αντιγραφές. Οι αντιγραφείς θα μηδενίζονται και διακινδυνεύουν να υποστούν πειθαρχικές κυρώσεις. Ημερομηνίες Ανακοίνωση άσκησης: 13/10/2009 Τελευταία ημερομηνία παράδοσης: 27/10/2007