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



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

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

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Εισαγωγή στον Προγραμματισμό

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

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

Introduction to Java. Getting started, Java Basics. Prepared by Costantinos Costa for EPL 233. ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός 1

Προγραμματισμός Διαδικτύου

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #1 η : Εισαγωγή: Λογισμικό, Γλώσσες Προγραμματισμού, Java

Προγραμματισμός Διαδικτύου

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Προγραμματισμός Διαδικτύου

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

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

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

Εισαγωγή Συμβόλαιο Μαθήματος

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

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

Προγραμματισμός Διαδικτύου

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

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

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

Προγραμματισμός Διαδικτύου

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

Ενότητα 2 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Δομές Δεδομένων και Αλγόριθμοι

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Προγραμματισμός Διαδικτύου

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

05β Η ιδεατή μηχανή της Java

Α. Ερωτήσεις Ανάπτυξης

Εισαγωγή στον προγραμματισμό

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

Ειδικά Θέματα Προγραμματισμού

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

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

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή

Δομημένος Προγραμματισμός ΙΙΙ - Java

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Δομές Δεδομένων (Data Structures)

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

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

ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ. Τίτλος Μαθήματος. Διαλέξεις - Θεωρητική Διδασκαλία, Εποπτευόμενο Εργαστήριο Επίδειξη, Μελέτες (Projects)

Δομημένος Προγραμματισμός

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Δείχτες Επιτυχίας και Δείχτες Επάρκειας

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

. Μεθοδολογία Προγραμματισμού. Εισαγωγή στη Java. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο :

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. 4o Εργαστήριο Σ.Α.Ε

Κεφάλαιο 1 Προγραμματισμός Υπολογιστή. Εφαρμογές Πληροφορικής Κεφ. 7 Καραμαούνας Πολύκαρπος 1

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Hancock. Ζωγραφάκης Ιωάννης Εξαρχάκος Νικόλαος. ΕΠΛ 428 Προγραμματισμός Συστημάτων

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

Python και Android. Νίκος Νοδαράκης. 17 Μαΐου 2010

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

Προγραμματισμός Διαδικτύου

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

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

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

Σχεδιασµός βασισµένος σε συνιστώσες

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

Πληροφορίες για το μάθημα

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΑΝΑΠΤΥΞΗΣ BloodShed Dev-C++

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

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version

Οδηγίες Εγκατάστασης και χρήσης προγραμμάτων για την γλώσσα C

Εισαγωγή στη γλώσσα προγραμματισμού C++14

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

Προγραμματισμός Διαδικτύου

Outline. 4 Object-Oriented Programming

Εισαγωγή στα Πληροφοριακά Συστήματα. Ενότητα 5: Λογισμικό - Software

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

Αναπτύσσοντας developer tools στην Αpple. Αργύριος Κυρτζίδης Προπτυχιακός φοιτητής ΗΜΜΥ

Το λειτουργικό σύστημα. Προγραμματισμός II 1

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

Διάλεξη 1: Δομές Δεδομένων και Αλγόριθμοι - Εισαγωγή. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Βασικές Αρχές Προγραμματισμού

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών

Transcript:

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

Πληροφορίες Μαθήματος Διαλέξεις Δευτέρα, Πέμπτη 10:30-12:00 Κτήριο ΘΕΕ01, Αίθουσα 202 Εργαστήριο Τετάρτη 10:30-12:00, Κτήριο ΘΕΕ01, Αίθουσα Β121 Τετάρτη 12:00-13:29, Κτήριο ΘΕΕ01, Αίθουσα Β121

Πληροφορίες Μαθήματος Προαπαιτούμενα: ΕΠΛ132(Αρχές Προγραμματισμού ΙΙ) ΕΠΛ231(Δομές δεδομένων και αλγόριθμοι) Καθηγητής: Χαράλαμπος Πουλλής Γραφείο: Β120, κτήριο θεε01 Ώρες γραφείου: Δευτέρα, Πέμπτη 2-3 μ.μ. και κατόπιν συννενοήσεως Επικοινωνία: poullis@cs.ucy.ac.cy Βοηθοί Διδασκαλίας: TBD

Αξιολόγηση Εβδομαδιαίες Εργασίες: 20% Ενδιάμεση Εξέταση: 30% Γραπτή Τελική Εξέταση: 50% Προβιβάσιμος βαθμός Ενδιάμεση εξέταση (pass) Τελική εξέταση (pass)

Εγχειρίδια Βασικά εγχειρίδια Thinking in Java by Bruce Eckel, 4 th edition. (Prentice Hall, 2006) Eclipse in action. A guide for Java developers by David Gallardo, Ed Burnette and Robert McGovern. (Manning, 2003) Χρήσιμα εγχειρίδια Object-oriented Design and Patterns by Cay Horstmann, 2 nd edition. (Wiley, 2006) Java in a Nutshell by David Flanagan, 5 th edition. (O'Reilly, 2005)

Ιστοσελίδα http://www.cs.ucy.ac.cy/~poullis/classes/2009fall/epl233/ Ανακοινώσεις Να ελέγχετε την ιστοσελίδα τακτικά.

Στόχος Μαθήματος Κατανόηση των αρχών του Αντικειμενοστρεφούς Προγραμματισμού. Η εφαρμογή αυτών με τη χρήση της γλωσσας προγραμματισμού JAVA.

Αντικειμενοστρεφής Προγραμματισμός Μεθοδολογία που χρησιμοποιεί αντικείμενα (objects) και τις αλληλεπιδράσεις (interactions) τους για την επίλυση υπολογιστικών προβλημάτων και την δημιουργία λογισμικών προγραμμάτων. Θα διερευνήσουμε τις έννοιες που σχετίζοντε με τη μεθοδολογία αυτή χρησιμοποιώντας την γλώσσα προγραμματισμού JAVA.

JAVA Γλώσσα Προγραμματισμού (Γ.Π.). Ιστορικό της JAVA Δημιουργήθηκε το 1991 απο την Green team της Sun Microsystems. Επίσημη ανακοίνωση της Γ.Π. το 1995. Ο στόχος ήταν ο εύκολος προγραμματισμός ηλεκτρονικών συσκευών και συστημάτων για ευρεία κατανάλωση. http://www.java.com/en/javahistory/ Βασισμένη στη C και C++ αλλά με σημαντικές αλλαγές και βελτιώσεις.

Κύρια χαρακτηριστικά JAVA Απλή (Simple) Αντιθέτως με την C++ η JAVA δεν έχει header files, pointer arithmetic, pointer syntax, structures, unions, operator overloading, virtual base classes, κ.α.) Αντικειμενοστρεφείς (Object-oriented) Παρόμοια με την C++ με την μόνη διαφορά στη πολλαπλή κληρονομικότητα (multiple inheritance).

Κύρια χαρακτηριστικά JAVA (cont'd) Αξιόπιστη (Robust) Έλεγχος για προβλήματα κατά την διάρκεια της μεταγλώττισης(compile-time) παρά της εκτέλεσης(runtime). Ανεξαρτησία Αρχιτεχτονικής (Architecture Neutral) Cross-platform. Write once, run everywhere. Φορητή (Portable) Linux, Sun Solaris, Apple, Windows Απαλλαγή από τις συγχήσεις με big-endian/little-endian Όλοι οι αρχέγονοι τύποι(primitive data types) είναι προσδιορισμένοι με ακρίβεια.

Κύρια χαρακτηριστικά JAVA (cont'd) Πολυνηματική (Multi-threaded) Δυναμική (Dynamic) Ευκολία προσδιορισμού τύπου κατά την διάρκεια της εκτέλεσης (Run-time information) Κατανεμημένη (Distributed) Βιβλιοθήκες για προγραμματισμό δικτύων με TCP/IP κ.τ.λ.

Πλεονεκτήματα vs Μειονεκτήματα Πλεονεκτήματα: Ασφάλεια Εύκολος προγραμματισμός δικτύων (Network-centric programming) Ανεξαρτησία αρχιτεκτονικής Μειονεκτήματα: Επίδοση(performance) Λόγω του διερμηνέα, η εκτέλεση προγραμμάτων είναι πιο αργή από την εκτέλεση ιθαγενή κώδικα (native code) Δυσκολία διαχείρησης μνήμης

Τι χρειάζεστε για να ξεκινήσετε; Γλώσσα Προγραμματισμού Java (Java programming language) Η γλώσσα που γράφονται όλα τα προγράμματα JAVA (applets, servlets and JavaBeans components)

Τι χρειάζεστε για να ξεκινήσετε; Γλώσσα Προγραμματισμού Java (Java programming language) Πλατφόρμα Java (Java Platform or Java Runtime Environment) Προκαθορισμένες κλάσεις(class) που υπάρχουν σε κάθε εγκατάσταση Java. Οργανωμένες σε μορφή βιβλιοθηκών (packages). Διαθέσιμες για χρήση από όλα τα προγράμματα JAVA.

Τι χρειάζεστε για να ξεκινήσετε; Γλώσσα Προγραμματισμού Java (Java programming language) Πλατφόρμα Java (Java Platform or Java Runtime Environment) Εικονική Μηχανή Java ή Διερμηνέας Java (Java Virtual Machine or Java Interpreter) Ο μεταγλωττιστής μετατρέπει τον πηγαίο κώδικα(source code) σε διφυοσυλλαβές (byte-codes) Οι διφυοσυλλαβές είναι φορητή γλώσσα μηχανής(portable machine language) της αρχιτεχτονικής της Κεντρικής Μονάδας Επεξεργασίας (CPU). Ο διερμηνέας μετατρέπει τις διφυοσυλλαβές ανάλογα με το λειτουργικό σύστημα

Διαδικασία Προγραμματισμού User Type in Text Editor (Kwrite, Emacs) Correct Save Source code (class_name.java) Compile Compilation errors Not OK Java Compiler (javac) OK Bytecodes (class_name.class) Interpret Output Run Java Virtual Machine

Πρώτο πρόγραμμα στη Java Τι ακολουθεί;

Πρώτο πρόγραμμα στη Java Τι ακολουθεί; Μεταγλώττιση (compiling)

Πρώτο πρόγραμμα στη Java Τι ακολουθεί; Μεταγλώττιση (compiling) Δημιουργία διφυοσυλλαβών (Fibonacci.class)

Πρώτο πρόγραμμα στη Java Τι ακολουθεί; Μεταγλώττιση (compiling) Δημιουργία διφυοσυλλαβών (Fibonacci.class) Εκτέλεση (execution) Αποτέλεσμα

Υπάρχει πιο εύκολος τρόπος δημιουργίας προγραμμάτων;

IDEs: Integrated Development Environments (Ενσωματωμένο Περιβάλλον Ανάπτυξης) Eclipse IDE

Αρκούν αυτά; ΑΛΓΟΡΙΘΜΟΙ + ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ = ΠΡΟΓΡΑΜΜΑΤΑ (Niclaus Wirth) Η ικανότητα να επιλύουµε προβλήµατα εξαρτάται σε καθοριστικό βαθμό από τη χρήση αλγορίθμων και δομών δεδομένων. Κάθε πρόγραμμα βασίζεται σε αλγορίθµους και δοµές δεδοµένων. Ο σχεδιασμός των δομών δεδομένων αποτελεί καθοριστική απόφαση στον σχεδιασμό ενός προγράμματος. Αφού έχουμε επιλέξει τις δομές που θα χρησιμοποιήσουμε, ο σχεδιασμός ή η επιλογή των αλγορίθμων επίλυσης τού προβλήματός μας, και ο προγραμματισμός του σε κάποια γλώσσα προγραμματισμού, είναι εύκολες υποθέσεις. Συνήθως, οι δομές δεδομένων και οι αλγόριθμοι που χρησιμοποιούμε είναι γνωστά και μελετημένα. Άρα, πρέπει να γνωρίζετε δομές δεδομένων και αλγορίθμους και τα χαρακτηριστικά τους, για να μπορείτε να επιλέγετε τα κατάλληλα για την επίλυση υπολογιστικών προβλημάτων.

Πόσα πρέπει να ξέρω; Υπάρχουν βασικοί αλγόριθμοι, η χρήση των οποίων εμφανίζεται σχεδόν σε κάθε πρόγραμμα (κυρίως αλγόριθμοι αναζήτησης και ταξινόμησης). Οι δομές δεδομένων που χρησιμοποιούνται συνήθως είναι γνωστές, ή προκύπτουν από τη σύνθεση γνωστών δομών: Πίνακες (arrays) Λίστες (lists) Πίνακες κατακερματισμού (hash tables) Δένδρα (trees)

Αντικείμενα και Κλάσεις Τα συστατικά στοιχεία των προγραμμάτων JAVA είναι οι κλάσεις: μια μορφή ʻεγγραφημάτων ʼ, όπως τα struct της C, ενισχυμένων όμως με λειτουργικότητες ( ʻσυμπεριφορές ʼ), κώδικα, έλεγχο πρόσβασης σε πεδία δεδομένων κλπ. Οι κλάσεις, χρησιμοποιούνται κυρίως για να κατασκευάζουμε αντικείμενα, τα οποία αποτελούν και τη βασική δομή δεδομένων του Α/Σ Προγραμματισμού. Κατά την εκτέλεσή του, ένα αντικειμενοστρεφές προγράμμα μπορεί να ιδωθεί σαν ένα σύνολο αντικειμένων που αλληλεπιδρούν μεταξύ τους εξυπηρετώντας το ένα το άλλο.

Παράδειγμα

Παράδειγμα

Παράδειγμα

Πρόγραμμα: GradeCalculator Υπολογίζει την τελική βαθμολογία σας στο μάθημα.