ΕΠΛ 133: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

Σχετικά έγγραφα
ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

Τι σημαίνει; n Για την αποδοτική δέσμευση δομών δεδομένων μη. n Για την αποφυγή «διαρροών μνήμης» (memory leaks).

ΕΠΛ233 Βασικά στοιχεία προγραµµατισµού στη JAVA

Αντικειμενοστρεφής Προγραμματισμός

! Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση. ! Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: ομές εδομένων και Αλγόριθμοι

Αντικείμενα και Κλάσεις

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

Αρχές Τεχνολογίας Λογισμικού

ΕΠΛ131 Αρχές Προγραμματισμού Ι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Διαδικαστικά

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

3. Περιγράμματα Μαθημάτων Προγράμματος Σπουδών

Περίγραμμα. Η πλατφόρμα της Java. Computer Language Levels. Program terminology. Syntax and Semantics

Δοµές Δεδοµένων. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Φθινοπωρινό Εξάµηνο Ευάγγελος Μαρκάκης

3. Περιγράμματα Μαθημάτων Προγράμματος Σπουδών

Περίγραμμα. Υπερφόρτωση. 1 Μ. Δικαιάκος, EΠΛ133. n Κάθε δεδομένο είναι. n Πεδία Δεδομένων ή Μεταβλητές Στιγμιοτύπου (fields or. n Mεθόδους (methods)

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2520

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Περιγραφή Μαθήματος. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Χαρίδημος Κονδυλάκης Εισαγωγή

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2690

Λειτουργικά Συστήματα. Εισαγωγή

Homework for 1/27 Due 2/5

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΕΙΔΙΚΟ ΕΝΤΥΠΟ ΠΕΡΙΓΡΑΦΗΣ ΜΑΘΗΜΑΤΩΝ. Υποχρεωτικής επιλογής (Κατεύθυνσης)

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΒΙΟΛΟΓΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

Αρχιτεκτονική Υπολογιστών

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΒΙΟΛΟΓΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

3. Περιγράμματα Μαθημάτων Προγράμματος Σπουδών

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ- ΑΝΑΛΥΣΗ ΔΕΔΟΜΕΝΩΝ & ΣΤΑΤΙΣΤΙΚΑ ΠΑΚΕΤΑ (ΣΤ3) ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ. ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ ΣT3 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ 2 ο

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Εισαγωγή Χειμερινό Εξάμηνο Νίκος Μαμουλής

ΕΠΛ131 Αρχές Προγραμματισμού

Πέτρος Γ. Οικονομίδης Πρόεδρος και Εκτελεστικός Διευθυντής

Προγραμματισμός Χειμερινό Εξάμηνο 2014

Περιγράμματα Μαθημάτων Προγράμματος Σπουδών

Γενικά (για τις γραπτές εξετάσεις)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ. Τμήμα Μηχανικών Οικονομίας και Διοίκησης ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ ΓΕ0175 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ 9

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Διεργασίες και Νήματα (2/2)

ΕΙΔΙΚΟ ΕΝΤΥΠΟ ΠΕΡΙΓΡΑΦΗΣ ΜΑΘΗΜΑΤΩΝ. Υποχρεωτικής επιλογής (Κατεύθυνσης)

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

ΕΡΩΤΗΜΑΤΟΛΟΓΙΟ ΑΞΙΟΛΟΓΗΣΗΣ ΜΑΘΗΜΑΤΟΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΒΙΟΛΟΓΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

Πληροφορίες για το μάθημα. Ευάγγελος Παπαπέτρου

3 Αλληλεπίδραση Αντικειμένων

ΕΙΔΙΚΟ ΕΝΤΥΠΟ ΠΕΡΙΓΡΑΦΗΣ ΜΑΘΗΜΑΤΩΝ. Υποχρεωτικής επιλογής (Κατεύθυνσης)

ΕΠΛ664 ΑΝΑΛΥΣΗ ΚΑΙ ΕΠΑΛΗΘΕΥΣΗ ΣΥΣΤΗΜΑΤΩΝ

Δίκτυα Υπολογιστών. Πληροφορίες για το μάθημα. Ευάγγελος Παπαπέτρου. Τμ. Μηχ. Η/Υ & Πληροφορικής, Παν. Ιωαννίνων

Μ.Π.Σ. «ΠΡΟΗΓΜΕΝΕΣ ΜΕΘΟΔΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΡΟΙΟΝΤΩΝ ΑΠΟ ΞΥΛΟ» Μάθημα: Σχεδίαση και Εφαρμογές Διαδραστικών Συστημάτων. Διδάσκοντας: Α.

Διδάσκων: Παναγιώτης Ανδρέου

Κωδικός Τίτλος Μαθήματος ΠΜ ΕΠΛ131 Αρχές Προγραμματισμού Ι 7.5. Ημέρα Διάλεξη Εργαστήριο Φροντιστήριο Δευτέρα, Πέμπτη 9:00 10:30, ΘΕΕ01, 202

ΕΙΔΙΚΟ ΕΝΤΥΠΟ ΠΕΡΙΓΡΑΦΗΣ ΜΑΘΗΜΑΤΩΝ. Υποχρεωτικής επιλογής (Κατεύθυνσης)

ΗΥ 134. Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 1. Εισαγωγή. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Διδασκαλία και επικοινωνία

Εισαγωγικές έννοιες. Ιωάννης Γ. Τσούλος 2014

Γραπτή εξέταση. Γαβαλάς Δαμιανός Δικτυακά Πολυμέσα ΙΙ Διάλεξη #12 η : Επανάληψη, προετοιμασία για τις γραπτές εξετάσεις

Αντικειμενοστρεφής Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΒΙΟΛΟΓΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

SUPERPOSITION, MEASUREMENT, NORMALIZATION, EXPECTATION VALUES. Reading: QM course packet Ch 5 up to 5.6

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Περιγραφή Μαθήματος. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

ΕΠΛ202: Εξερευνήσεις στην Πληροφορική

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

3. Περιγράμματα Μαθημάτων Προγράμματος Σπουδών

Web Data Mining ΕΡΓΑΣΤΗΡΙΟ 2 & 3. Prepared by Costantinos Costa Edited by George Nikolaides. EPL Data Mining on the Web

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Οντοκεντρικός Προγραμματισμός

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Διάλεξη 17: Έλεγχος Λογισμικού

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΒΙΟΛΟΓΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

ΗΥ 252: Αντικειµενοστρεφής Προγραµµατισµός

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Αποτελέσματα. ΜΟΔΙΠ Πανεπιστημίου Κρήτης Ερωτηματολόγιο 'Ανάλυση ΙΙ' Ερωτηματολόγιο

3. Περιγράμματα Μαθημάτων Προγράμματος Σπουδών

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 1: Εισαγωγικές έννοιες

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Δίκτυα Υπολογιστών I

Αποτελέσματα. Πληροφοριακό Σύστημα ΜΟΔΙΠ Πανεπιστημίου Κρήτης Ερωτηματολόγιο 'Μιγαδική Ανάλυση' Ερωτηματολόγιο

Θέματα Ατομικής Διπλωματικής Εργασίας Ακαδημαϊκό Έτος 2017/2018. Γεωργία Καπιτσάκη (Επίκουρη Καθηγήτρια)

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Μηχανική Λογισμικού για Διαδικτυακές & Φορητές Εφαρμογές

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Transcript:

ΕΠΛ 133: Αντικειμενοστρεφής Προγραμματισμός (Object-orieted programmig) Διδάσκων: Μάριος Δικαιάκος Εργαστήρια: Πύρρος Μπράτσκας Βρείτε αν ένα έτος είναι δίσεκτο 1 2 Δίσεκτο έτος: διαιρείται δια 4 αλλά όχι δια εκατό, εκτός αν διαιρείται δια 400 EIΣΟΔΟΣ (iput) 2017 /** * Created by mdd o 15/01/2017. */ public class LeapYear { public static void mai(strig[] args) { it year = Iteger.parseIt(args[0]); Πρόγραµµα Java // divisible by 4 boolea isleapyear = (year % 4 == 0); // divisible by 4 ad ot 100 isleapyear = isleapyear && (year % 100!= 0); // divisible by 4 ad ot 100 uless divisible by 400 isleapyear = isleapyear (year % 400 == 0); ΕΞΟΔΟΣ (output) true ή false System.out.pritl(isLeapYear); 3 4 /** * Created by mdd o 15/01/2017. */ public class LeapYear { public static void mai(strig[] args) { it year = Iteger.parseIt(args[0]); // divisible by 4 boolea isleapyear = (year % 4 == 0); // divisible by 4 ad ot 100 isleapyear = isleapyear && (year % 100!= 0); // divisible by 4 ad ot 100 uless divisible by 400 isleapyear = isleapyear (year % 400 == 0); System.out.pritl(isLeapYear); 5 6

isleapyear(it) year 2017 false tostrig() 7 8 public class LeapYear { public boolea isleapyear(it year) { boolea isleapyear; // divisible by 4 isleapyear = (year % 4 == 0); // divisible by 4 ad ot 100 isleapyear = isleapyear && (year % 100!= 0); public class TestLeapYear { public static void mai(strig[] args) { it year = Iteger.parseIt(args[0]); LeapYear leapyearcheck = ew LeapYear(); // divisible by 4 ad ot 100 uless divisible by 400 isleapyear = isleapyear (year % 400 == 0); retur isleapyear; System.out.pritl(leapYearCheck.isLeapYear(year)); 9 10 Περίγραμμα Πληροφορίες Μαθήματος ΕΠΛ233 - Πρακτικά θέματα και Στόχοι μαθήματος Αντικειμενοστρεφείς Γλώσσες Προγραμματισμού και JAVA Η πλατφόρμα της JAVA Θεμελίωση Προβλημάτων Αφαιρετικότητα Επίλυση Προβλημάτων Διαδικασία Επίλυσης Υπολογιστικών Προβλημάτων Μ. Δικαιάκος, EΠΛ233 11 Διαλέξεις και Φροντιστήριο Τρίτη: 10:30-12:00, 12:00-13:00 (φροντιστήριο) Παρασκευή: 10:30-12:00 Αίθουσα 119, Κτήριο ΧΩΔ02 Εργαστήριο Α: Δευτέρα, Πέμπτη: 14:30-16:30, Β121, ΘΕΕ01 Β: Δευτέρα, Πέμπτη: 18:30-20:30, Β121, ΘΕΕ01 Ιστοσελίδα: http://www.cs.ucy.ac.cy/courses/epl133 Ανακοίνωση και παράδοση εργασιών μέσω Moodle: http://moodle.cs.ucy.ac.cy (κλειδί εγγραφής: epl133) Φόρουμ μέσω piazza: http://www.piazza.com 12

Πληροφορίες Μαθήματος Αξιολόγηση Προαπαιτούμενα: ΕΠΛ131(Αρχές Προγραμματισμού Ι) Επικοινωνία με διδάσκοντα (Μ. Δικαιάκο): Γραφείο: 012, κτήριο ΘΕΕ01 Ώρες γραφείου: Tρίτη: 14:00-16:00 ή κατόπιν συννενοήσεως Επικοινωνία: mdd at cs dot ucy dot ac dot cy Επικοινωνία με υπεύθυνο εργαστηρίων (Π. Μπράτσκα): Γραφείο: Β118, κτήριο ΘΕΕ01 Ώρες γραφείου: Πέμπτη, 10:00-12:00 ή κατόπιν συννενοήσεως Επικοινωνία: bratskas at cs dot ucy dot ac dot cy 13 Εργασίες και Διαγνωστικά: 23% Ενδιάμεση Εξέταση: 25% Γραπτή Τελική Εξέταση: 50% Συμμετοχή: 2% Προβιβάσιμος βαθμός: (Ενδιάµεση εξέταση * 0.33) + (Τελική εξέταση * 0.67) > 4,5 14 Γενικοί Κανόνες Παρακολούθηση: Υποχρεωτική. Καθυστερημένη είσοδος στην τάξη μετά την έναρξη του μαθήματος ΑΠΑΓΟΡΕΥΕΤΑΙ. Χρήση κινητών τηλεφώνων στην τάξη ΑΠΑΓΟΡΕΥΕΤΑΙ. Η συμμετοχή στην τάξη και στο φόρουμ του μαθήματος αξιολογείται και συνυπολογίζονται στον τελικό βαθμό. Χρήση κινητού στην τάξη συνεπάγεται τον μηδενισμό του βαθμού συμμετοχής στην τάξη. Μ. Δικαιάκος, EΠΛ425 15 Κώδικας συμπεριφοράς Η είσοδος στην τάξη μετά την έναρξη του μαθήματος απαγορεύεται. Οι εργασίες θα ελέγχονται από πρόγραμμα για την ανακάλυψη αντιγραφών. Αντιγραμμένες εργασίες θα μηδενίζονται και οι παραβάτες κινδυνεύουν να υποστούν ολικό μηδενισμό στο μάθημα και πειθαρχική δίωξη. Οι εργασίες θα εξετάζονται και προφορικά. Άγνοια ή ελλιπής κατανόηση του τι έχετε παραδώσει θα συνεπάγεται μηδενισμό της εργασίας. Ψηφοφορίες στην τάξη! Ερωτήσεις πολλαπλών (4) επιλογών. Κάθε επιλογή αντιστοιχεί σε ένα χρώμα: Μπλε, Πράσινο, Κόκκινο, Πορτοκαλί Κάθε φοιτητής ψηφίζει μόνος του (χωρίς συνεργασία) με τη λήξη του χρόνου, υψώνοντας την κάρτα αντίστοιχου χρώματος. Μπορεί να σας ζητηθεί να εξηγήσετε την απάντησή σας Δεν είναι λοταρία Αν χρειαστεί, δίνεται χρόνος για να συζητήσετε την απάντηση με τους διπλανούς σας, να φθάσετε σε συμφωνία και να ξαναψηφίσετε. Μπορεί να σας ζητηθεί να εξηγήσετε την απάντησή σας 18 17

Εγχειρίδια Στις ερωτήσεις πολλαπλής επιλογής πότε επιτρέπεται να συζητήσουμε με τους διπλανούς μας για να φθάσουμε σε συμφωνία; Βασικά εγχειρίδια Ποτέ! Πριν την πρώτη ψηφοφορία Πριν τη δεύτερη ψηφοφορία Μετά τη δεύτερη ψηφοφορία Χρήσιμα εγχειρίδια EΠΛ233 19 "Absolute Java" Walter Sawitch. 6th Editio (Global Editio). Pearso 2016. Thikig i Java by Bruce Eckel, 4th editio. (Pretice Hall, 2006) Java Tutorials: http://docs.oracle.com/javase/tutorial/ Object-orieted Desig ad Patters by Cay Horstma, 2d editio. (Wiley, 2006). "The Practice of Programmig." B. Kerigha και R. Pike, Addisso Wesley, 1999. Eclipse i actio. A guide for Java developers by David Gallardo, Ed Burette ad Robert McGover. (Maig, 2003). 20 Βιβλιογραφία Πληροφορίες για το μάθημα Ιστοσελίδα: http://www.cs.ucy.ac.cy/courses/ EPL133 Ανακοινώσεις / φόρουμ @ Piazza: 21 http://moodle.cs.ucy.ac.cy Bίντεο @ Youtube https://piazza.com/ucy.ac.cy/fall2015/epl233/home Eργασίες @ Μοοdle: (κωδικός εγγραφής: epl133) https://www.youtube.com/chael/ 22 Aπώτεροι Στόχοι Βαθύτερη γνώση του αντικειμένου «Πολυμαθίη νόον έχειν ού διδάσκει» (Ηρακλείτου, απόσπασμα Β40 - Διογένης Λαέρτιος ΙΧ 1) Η πολυμάθεια δεν μας βάζει νού Γνώση που να οδηγεί σε δυνατότητα δημιουργικής σκέψης «τας ανανεώσεις των ευρέσεων και των τεχνών και των μαθήσεων, και τα λοιπά τα στεφανούντα το σώμα εν τω κόσμω τούτω τω ορατώ» (Ισαάκ Σύρου, Λόγος ΞΓ, «Περί τάξεως πρώτης της γνώσεως», Τα Ευρεθέντα Ασκητικά) 23 24

O κανόνας των 10.000 ωρών 25 26 28 it takes roughly te thousad hours of practice to achieve mastery i a field 27 H αξία της εξάσκησης Gladwell studied the lives of extremely successful people to fid out how they achieved success. Gates ad Alle had thousads of hours of programmig practice prior to foudig Microsoft. Practice Makes Improvemet Fallig i Love With Practice 29 30

Mάθηση στην εποχή του Web Thaks to the plasticity of our euroal pathways, the more we use the Web [the mobile, social media etc] the more we trai our brai to be distracted - to process iformatio very quickly ad very efficietly but without sustaied attetio. [N. Carr, The Shallows 2011] Learig how to thik really meas learig how to exercise some cotrol over how ad what you thik. [ ] It meas beig coscious ad aware eough to choose what you pay attetio to ad to choose how you costruct meaig from experiece. David Foster Wallace, 2005 31 As the may studies of hypertext ad multimedia show, our ability to lear ca be severely compromised whe our brais become sigificatly overloaded with diverse stimuli olie. More iformatio ca mea less kowledge. N. Carr, The Shallows, 2011 As we exteralise problem solvig ad other cogitive chores to our computers, we reduce our brai s ability to build stable kowledge structures [ ] that ca later be applied i ew situatios N. Carr, The Shallows, 2011 33 34 35 36

Θεματολογία Χρήση κινητού στην τάξη συνεπάγεται τον μηδενισμό του βαθμού συμμετοχής στην τάξη. Αρχές επίλυσης Υπολογιστικών Προβλημάτων μέσω προγραμματισμού Η/Υ. Eις βάθος εισαγωγή στις Aρχές Αντικειμενοστρεφούς Προγραμματισμού (object-orieted programmig - OOP) μέσω της γλώσσας JAVA. Aρχές Αντικειμενοστρεφούς Σχεδίασης για την διατύπωση και επίλυση υπολογιστικών προβλημάτων. Αφαιρετικότητα Δεδομένων στον Α/Σ Προγραμματισμό. Προχωρημένες Προγραμματιστικές Τεχνικές JAVA. Προγραμματισμός σε Ολοκληρωμένα Περιβάλλοντα Ανάπτυξης (Itegrated Developmet Eviromets) 38 Μαθησιακοί Στόχοι Ευχέρεια καθορισμού της κατάλληλης θεμελίωσης - αφαιρετικής διατύπωσης ενός προς επίλυση πολύπλοκου προβλήματος. Η αφαιρετική διατύπωση είναι απαραίτητο βήμα για τη λύση του προβλήματος Ευχέρεια επινόησης τυπικών (formal) λύσεων σε «καλώς ορισμένα» προβλήματα, με χρήση αντικειμενοστρεφούς σχεδιασμού. Ευχέρεια υλοποίησης, ελέγχου, αποσφαλμάτωσης αντικειμενοστρεφών προγραμμάτων Java σε περιβάλλον ολοκληρωμένης ανάπτυξης όπως το Eclipse για την αποδοτική υλοποίηση αλγορίθμων. Ευχέρεια επικοινωνίας των πορισμάτων της εργασίας σας (αντικειμενοστρεφή σχέδια, προγράμματα JAVA) σε άλλους προγραμματιστές. Η επίτευξη των μαθησιακών στόχων θα αξιολογείται διαρκώς στη διάρκεια του μαθήματος μέσω γραπτών εξετάσεων, εργασιών, κουίζ προφορικής αξιολόγησης και θα κρίνει την επιτυχία/αποτυχία σας στο μάθημα 39 40 Περίγραμμα ΕΠΛ233 - Πρακτικά θέματα και Στόχοι μαθήματος Αντικειμενοστρεφείς Γλώσσες Προγραμματισμού και JAVA Η πλατφόρμα της JAVA Αντικειμενοστρεφής Προγραμματισμός και JAVA. Γιατί; Θεμελίωση Προβλημάτων Αφαιρετικότητα Επίλυση Προβλημάτων Διαδικασία Επίλυσης Υπολογιστικών Προβλημάτων Μ. Δικαιάκος, EΠΛ233 41 42

Γιατί την JAVA; Γιατί η JAVA; Accordig to the code committed by 10m users of GitHub, Java is the programmig laguage that grew more tha ay other betwee 08-15. 19/8/2015 43 44 Αντικειμενοστρεφής Προγραμματισμός Γλώσσα Προγραμματισμού JAVA Μεθοδολογία που χρησιμοποιεί την έννοια (αφαίρεσηabstractio) των «αντικειμένων» (objects) και των μεταξύ τους «αλληλεπιδράσεων» (iteractios) τους για την επίλυση υπολογιστικών προβλημάτων και την δημιουργία λογισμικών προγραμμάτων. Δημιουργήθηκε το 1991 απο την Gree team της Su Microsystems. Επίσημη ανακοίνωση της Γ.Π. το 1995. «Πατέρας» της Java θεωρείται ο James Goslig http://ighthacks.com/roller/jag/ Ο στόχος ήταν ο εύκολος προγραμματισμός ηλεκτρονικών συσκευών και συστημάτων για ευρεία κατανάλωση. Η Su Microsystems εξαγοράστηκε το 2010 από την Oracle. http://www.java.com/e/javahistory/ Θα διερευνήσουμε τις έννοιες που σχετίζονται με τη μεθοδολογία αυτή χρησιμοποιώντας την γλώσσα προγραμματισμού JAVA. Βασισμένη στη C και C++ αλλά με σημαντικές αλλαγές και βελτιώσεις. 45 46 Κύρια χαρακτηριστικά JAVA Κύρια χαρακτηριστικά JAVA (cot'd) Απλή (Simple) Αντιθέτως με την C++ η JAVA δεν έχει header files, poiter arithmetic, poiter sytax, structures, uios, operator overloadig, virtual base classes, κ.α.) Αξιόπιστη (Robust) Έλεγχος για προβλήματα κατά την διάρκεια της μεταγλώττισης(compile-time) παρά της εκτέλεσης(rutime). Αντικειμενοστρεφής (Object-orieted) Παρόμοια με την C++ με την μόνη διαφορά στη πολλαπλή κληρονομικότητα (multiple iheritace). Ανεξαρτησία Αρχιτεχτονικής (Architecture Neutral) Cross-platform. Write oce, ru everywhere. Liux, Su Solaris, Apple, Widows Φορητή (Portable) Απαλλαγή από τις συγχύσεις με big-edia/little-edia Όλοι οι αρχέγονοι τύποι (primitive data types) είναι προσδιορισμένοι με ακρίβεια. 47 48

Mονο-νηματική εκτέλεση Κύρια χαρακτηριστικά JAVA (cot'd) Πολυνηματική (Multi-threaded) Δυναμική (Dyamic) Ευκολία προσδιορισμού τύπου κατά την διάρκεια της εκτέλεσης (Ru-time iformatio) Siglethreaded executio public class Charge { private double rx, ry; private double q; «Νήµα» εκτέλεσης (ροή εντολών διεργασίας) // positio // charge public Charge(double x0, double y0, double q0) { rx = x0; ry = y0; q = q0; public double potetialat(double x, double y) { double k = 8.99e09; double dx = x - rx; double dy = y - ry; retur k * q / Math.sqrt(dx*dx + dy*dy); Κατανεμημένη (Distributed) Πρόγραµµα public Strig tostrig() { retur q + " at " + "(" + rx + ", " + ry + ")"; Βιβλιοθήκες για προγραμματισμό δικτύων με TCP/IP κ.τ.λ. Sigle-core CPU 49 H πολυνηματική εκτέλεση προγραμμάτων JAVA γίνεται μόνο σε πολυπύρηνους επεξεργαστές; Πολυ-νηματική εκτέλεση Multi-threaded executio Πρόγραµµα public class Charge { private double rx, ry; private double q; // positio // charge public Charge(double x0, double y0, double q0) { rx = x0; ry = y0; q = q0; public double potetialat(double x, double y) { double k = 8.99e09; double dx = x - rx; double dy = y - ry; retur k * q / Math.sqrt(dx*dx + dy*dy); Ναι. Δεν μπορούν να συνυπάρξουν πολλαπλά νήματα στον ίδιο πυρήνα. Όχι - ο μεταγλωττιστής ανιχνεύει το είδος του επεξεργαστή και αναλόγως προσαρμόζει τον τελικό κώδικα για τον αριθμό των διαθέσιμων πυρήνων. Όχι - πολλαπλά νήματα μπορούν να τρέξουν και σε μονοπύρηνο επεξεργαστή. Το λειτουργικό σύστημα ρυθμίζει την πολυπλεξία των νημάτων σε μια διεργασία και έναν πυρήνα. Ναι. Οι εκδόσεις της JAVA που υποστηρίζουν πολυνηματικότητα, δεν υποστηρίζονται σε πολυπύρυνες αρχιτεκτονικές. public Strig tostrig() { retur q + " at " + "(" + rx + ", " + ry + ")"; Multi-core CPU 51 Α/Σ Γλώσσες Προγραμματισμού Simula 67 Smalltalk Pytho Ruby Scala C++ C# Objective C JavaScript (?) PhP (?) 50 52 EΠΛ233 Α/Σ Προγραμματισμός: Ιστορικό 53 Ο όρος Α/Σ ΓΠ εισήχθη με τη γλώσσα Smalltalk, η οποία αναπτύχθηκε στο Xerox PARC από τον Ala Kay και άλλους στη δεκαετία του 1970. Οι επινοητές της Smalltalk εμπνεύστηκαν από τη γλώσσα Simula 67, αλλά η Smalltalk περιείχε ένα πλήρως δυναμικό σύστημα για την δημουργία και δυναμική αλλαγή κλάσεων. Η Smalltalk και ο Α/Σ.Π. παρουσιάστηκαν στο ευρύ κοινό με άρθρο στο περιοδικό BYTΕ τον Αύγουστο του 1981. 54

Xerox Parc Xerox PARC has bee the ivetor ad icubator of may elemets of moder computig i the cotemporary office work place: Laser priters, Computer-geerated bitmap graphics The graphical user iterface, featurig widows ad icos, operated with a mouse The WYSIWYG text editor Iterpress, a resolutio-idepedet graphical page-descriptio laguage ad the precursor to PostScript Etheret as a local-area computer etwork Fully formed object-orieted programmig i the Smalltalk programmig laguage ad itegrated developmet eviromet. Model view cotroller software architecture SCALA Ποιές από τις παρακάτω ΔΕΝ είναι αντικειμενοστρεφής γλώσσα προγραμματισμού; SmallTalk Prolog JAVA 55 EΠΛ233 56