ΕΠΛ133 Αντικειμενοστρεφής Προγραμματισμός Syllabus & Introduction PDF
Document Details
Uploaded by Deleted User
University of Cyprus
Δρ. Χριστόφορος Χριστοφόρου
Tags
Summary
This document is a syllabus for a course on object-oriented programming (OOP) using Java. It outlines the course objectives, prerequisites, teaching methods, schedule and contact information for the course. The course is focused on teaching OOP concepts and Java programming.
Full Transcript
1 ΕΠΛ133 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Object-Oriented Programming) Syllabus & Introduction Διδάσκων Δρ. Χριστόφορος Χριστοφόρου [email protected] ...
1 ΕΠΛ133 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Object-Oriented Programming) Syllabus & Introduction Διδάσκων Δρ. Χριστόφορος Χριστοφόρου [email protected] 2 Στόχοι Μαθήματος ❑ Κατανόηση και Εξοικείωση με τις βασικές αρχές Αντικειμενοστρεφούς Προγραμματισμού (object-oriented programming - OOP): ❑ Classes (Κλάσεις) και Objects (Αντικείμενα) ❑ Abstraction (Αφαιρετικότητα), Encapsulation (Ενθυλάκωση), Inheritance (Κληρονομικότητα), Polymorphism (Πολυμορφισμός) ❑ Ανάπτυξη ικανότητας στη χρήση Αντικειμενοστρεφούς Μεθοδολογίας για την Σχεδίαση και Υλοποίηση Προγραμμάτων. ❑ Εξοικείωση με τον Αντικειμενοστρεφή Προγραμματισμό και εφαρμογή του με χρήση της γλώσσας προγραμματισμού Java. ❑ Αντικειμενοστρεφής Προγραμματισμός σε Ολοκληρωμένα Περιβάλλοντα Ανάπτυξης (Integrated Development Environments (IDE) – π.χ., Eclipse) 3 Προ-απαιτούμενα ❑ ΕΠΛ131(Αρχές Προγραμματισμού Ι) ❑ Βασικός στόχος αυτού του μαθήματος ήταν η απόκτηση ικανότητας επίλυσης διαφόρων προβλημάτων με προγραμματισμό. Συγκεκριμένα: ❑Η θεμελίωση βασικών αρχών προγραμματισμού, αλγοριθμικών τεχνικών και δομών προγραμμάτων στην Java. ❑ Η απόκτηση δεξιοτήτων στην επίλυση προβλημάτων με διαδικασιακό τρόπο και η θεμελίωση της αλγοριθμικής σκέψης. ❑ Εφαρμογή των βασικών αρχών προγραμματισμού μέσω της γλώσσας προγραμματισμού Java. 4 Τρόπος Διδασκαλίας ❑ Το μάθημα καλύπτει θεωρία και πρακτική. Αποτελείται από 3 ώρες διαλέξεων, 1 ώρα φροντιστηρίου και 3 ώρες εργαστηρίου την εβδομάδα ❑ Διαλέξεις (Υποχρεωτική παρακολούθηση) και Φροντιστήριο ❑ Εκμάθηση θεωρητικών εννοιών και βασικών αρχών του Αντικειμενοστρεφούς (Α/Σ) Προγραμματισμού ❑ Ανάπτυξη ικανότητας στη χρήση Αντικειμενοστρεφούς Μεθοδολογίας για την Σχεδίαση και Υλοποίηση Προγραμμάτων ❑ Παραδείγματα Υλοποίησης Α/Σ προγραμμάτων με τη χρήση της Java ❑ Εργαστήρια (Υποχρεωτική παρακολούθηση) ❑ Η θεωρία σε πράξη ❑ Πρακτική εξάσκηση Α/Σ προγραμματισμού με χρήση της Java 5 Πληροφορίες Μαθήματος ❑ Διαλέξεις ❑ Τρίτη, Παρασκευή: 09:00-10:30 ❑ Κτήριο ΧΩΔ02, Αίθουσα 011 ❑ Φροντιστήριο ❑ Τρίτη: 08:00 – 09:00 → 8:20 – 9:00 ❑ Κτήριο ΧΩΔ02, Αίθουσα 011 ❑ Εργαστήριο ❑ Υπεύθυνος: Δρ. Παναγιώτου Χριστόφορος ❑ Κτήριο ΘΕΕ01, Αίθουσα Β121 ❑ Α: Τρίτη, Παρασκευή: 13:30 – 15:00 ❑ B: Τρίτη, Παρασκευή: 15:00 – 16:30 6 Πληροφορίες Μαθήματος ❑ Επικοινωνία με διδάσκοντα (Χριστόφορος Χριστοφόρου) ❑ Γραφείο: Β116, κτήριο ΘΕΕ01 – Or Microsoft Teams ❑ Ώρες γραφείου: Παρασκευή 13:00 - 15:00 ή κατόπιν συνεννοήσεως ❑ Επικοινωνία: 22892749, [email protected] ❑ Subject: [EPL133] [Όνομα Φοιτητή] 7 Πληροφορίες Μαθήματος ❑ Σελίδα Μαθήματος στο Blackboard: blackboard.ucy.ac.cy - Πληροφορίες - Διαφάνειες - Ανακοινώσεις - Επικοινωνία 8 Συμβόλαιο Μαθήματος ❑ Γραπτές Εξετάσεις 75% ❑ Εξέταση Ημιεξαμήνου 25% ❑ Τελική Εξέταση 50% ❑ Εργαστήρια και εργαστηριακές ασκήσεις 25% ❑ Επιτυχημένη ολοκλήρωση του μαθήματος: ❑ Ο τελικός συνολικός βαθμός είναι τουλάχιστον 5, και ❑ Επιτυχία βαθμολογίας ≥ 40% στην Τελική Εξέταση. 9 Βιβλίο Μαθήματος Βασική Βιβλιογραφία ❑ Διαλέξεις Μαθήματος!!! ❑ Walter Sawitch, "Absolute Java". 6th Edition (Global Edition). Pearson 2016. Σαν επιπλέον βοηθήματα προτείνονται επίσης: ❑ Java Tutorials: http://docs.oracle.com/javase/tutorial/ ❑ Paul Deitel, Harvey Deitel, “Java, How to Program”, 9th Edition, DEITEL, 2012 10 Βιβλιογραφία 11 Ενδεικτικό Περιεχόμενο Διαλέξεων ❑ Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό ❑ Σχεδιασμός Κλάσεων, Δημιουργία Αντικειμένων και Διαχείριση Μνήμης ❑ Αφαιρετικότητα, Ενθυλάκωση, Κληρονομικότητα, Πολυμορφισμός ❑ Αφαιρετικές (abstract) Κλάσεις, Διαπροσωπείες & Εσωτερικές Κλάσεις ❑ Διαχείριση Εξαιρέσεων (Exception Handling) ❑ Γενόσημοι Τύποι και Συλλογές (Generics and Collections) ❑ Είσοδος/'Εξοδος σε Αρχεία 12 Υπενθύμιση ❑ Τα φροντιστήρια και τα εργαστήρια αρχίζουν την 2η Εβδομάδα Μαθημάτων. ❑ Τα φροντιστήρια θα γίνονται κατόπιν συνεννόησης. ❑ Η Ενδιάμεση Εξέταση ενδέχεται να οριστεί για Παρασκευή, 25 Οκτωβρίου 2024. Ερωτήσεις? 14 Γλώσσα Προγραμματισμού JAVA - Ιστορικό ❑ Η ανάπτυξη της γλώσσα Java ξεκίνησε το 1991 από την “Green team” της Sun Microsystems. ❑ "Πατέρας" της Java θεωρείται ο James Gosling (Canadian. Often referred to as "Dr. Java"; born May 19, 1955) ❑ Η συγκεκριμένη γλώσσα διατηρούσε μεγάλη συγγένεια με τη C++ αλλά είχε πιο έντονο αντικειμενοστρεφή χαρακτήρα και χαρακτηριζόταν από την απλότητά της. ❑ Ο στόχος ήταν η δημιουργία ενός κατάλληλου εργαλείου που θα μπορούσε να χρησιμοποιηθεί ως πλατφόρμα ανάπτυξης λογισμικού για "έξυπνες" μικροσυσκευές. 15 Γλώσσα Προγραμματισμού JAVA - Ιστορικό ❑ To αρχικό όνομα που είχε δοθεί στη γλώσσα ήταν Oak (βελανιδιά). Η γλώσσα ονομάστηκε έτσι από μία βελανιδιά που βρισκόταν έξω από το γραφείο του και που έβλεπε καθημερινά. ❑ Όταν η ομάδα ανάπτυξης της Oak ενημερώθηκε πως το συγκεκριμένο όνομα είναι ήδη κατοχυρωμένο (από την "Oak Technology") αποφάσισε να την μετονομάσει σε Java (είδος καφέ). Το όνομα προέκυψε από τις συχνές συναντήσεις τους σε τοπικές καφετέριες. ❑ To 1996 έχουμε την πρώτη επίσημη παρουσίαση της Java από την Sun Microsystems, όπου τυγχάνει ευρείας αποδοχής. 16 Γλώσσα Προγραμματισμού JAVA - Ιστορικό ❑ Tο 2007 η Sun Microsystems αποφασίζει να κάνει όλον τον πηγαίο κώδικα της Java open source με μοναδική εξαίρεση ένα μικρό κομμάτι (το "font rendering engine" το οποίο ονομάζεται "Ducet“; υπεύθυνο για την απεικόνιση των γραμμάτων στην οθόνη), του οποίου τα πνευματικά δικαιώματα δεν κατείχε η ίδια. ❑ Αντ' αυτού, η Sun Microsystems παρείχε μια διασύνδεση ώστε οι χρήστες να μπορούν να προσθέτουν τις δικές τους υλοποιήσεις για font rendering. ❑ Η Sun Microsystems εξαγοράστηκε το 2010 από την Oracle. 17 Άλλες Γλώσσες Αντικειμενοστρεφή Προγραμματισμού ❑ Python ❑ C++ ❑ C# ❑ Ruby ❑ Objective C ❑ Perl 18 Γιατί την Java? ❑ Έχετε ήδη διδαχτεί τις βασικές αρχές προγραμματισμού στην Java! ❑ Υλοποιεί και υποστηρίζει τα βασικά χαρακτηριστικά του αντικειμενοστρεφούς προγραμματισμού. ❑ Είναι μια γλώσσα που μπορεί να χρησιμοποιηθεί για ανάπτυξη μεγάλων λογισμικών συστημάτων. ❑ Είναι πλούσια σε βιβλιοθήκες (API) και εργαλεία. Ύπαρξη χιλιάδων εφαρμογών και βιβλιοθηκών ανοικτού και ελεύθερου λογισμικού (open-source) για υποστήριξη προγραμματισμού σε διάφορους τομείς (Π.χ., δικτυακό προγραμματισμό, προγραμματισμό Βάσης Δεδομένων, εφαρμογών κινητών τηλεφώνων, ιστού κλπ.) 19 Γιατί την Java? ❑ Είναι απλή στην χρήση (είναι όσο απλή μπορεί να είναι μία γλώσσα προγραμματισμού) και μαθαίνεται γρήγορα. ❑ Εφαρμόζεται παντού. H Java είναι πανταχού παρούσα! Χρησιμοποιείται σε κινητά, σταθερούς υπολογιστές, εφαρμογές μεγάλης κλίμακας και συνεχώς αποκτά παρουσία σε ανερχόμενους κλάδους (π.χ., Internet of Things) ❑ Διαχρονική ανάπτυξη (1996 - today), βελτίωση και επέκταση μέσω νέων εκδόσεων της γλώσσας (Java SE 22; March, 21st 2024) για ανταπόκριση σε νέες ανάγκες προγραμματισμού. 20 Γιατί την Java? ❑ Προσφέρει πολλές επαγγελματικές ευκαιρίες. Η ζήτηση για προγραμματιστές Java είναι μεγάλη, καθώς χρησιμοποιείται ευρέως στον κλάδο της τεχνολογίας αλλά και στις πολύ διαδεδομένες Android εφαρμογές. 21 Γιατί την Java? ❑ Υποστηρίζεται από μια παγκόσμια και ισχυρή κοινότητα προγραμματιστών. H κοινότητα προγραμματιστών Java είναι μια από τις πιο σημαντικές στον κόσμο του προγραμματισμού. Αυτό είναι πολύ λογικό δεδομένου ότι πρόκειται για μια ισχυρή γλώσσα, ευρείας εφαρμογής και ανοιχτού λογισμικού (open-source). Τεράστια κοινότητα προγραμματιστών FROM DATA COLLECTED APR, 2021 22 Where is Java Used? ❑ Mobile Apps ❑ Web-based Apps ❑ Enterprise and Server Apps To sum it up in one line ❑ Gaming Applications “Java is used for ❑ Cloud-based Apps almost everything.” ❑ Desktop Apps https://www.quora.com/Where-is-Java-used ❑ Big Data Applications ❑ Data Storage and Processing ❑ Embedded Systems and Robotics 23 Αντικειμενοστρεφής Προγραμματισμός ❑ Μεθοδολογία που χρησιμοποιεί την έννοια των «αντικειμένων» (objects) για την επίλυση υπολογιστικών προβλημάτων. ❑ Σκεφτόμαστε με τη έννοια ότι τα πάντα είναι αντικείμενα, τα οποία έχουν κάποια χαρακτηριστικά (Attributes) και κάποια Συμπεριφορά (Behaviour), και όχι προσταγές προς τη μηχανή (π.χ., C) ❑ Θα διερευνήσουμε τις έννοιες που σχετίζονται με τη μεθοδολογία αυτή χρησιμοποιώντας την γλώσσα προγραμματισμού JAVA. Σημαντικό είναι όμως πρώτα να καταλάβετε τι είναι τα Αντικείμενα (Objects)!!! Αυτό θα το δούμε στην επόμενη διάλεξη! Ερωτήσεις? Additional Slides 26 Γλώσσα Προγραμματισμού JAVA - Ιστορικό ❑ Ο όρος Αντικειμενοστρεφής (Α/Σ) Προγραμματισμός εισήχθη με τη γλώσσα SmallTalk, η οποία αναπτύχθηκε στο Xerox PARC από τον Alan Kay και άλλους στη δεκαετία του 1970. ❑ Η Smalltalk και ο Α/Σ Προγραμματισμός παρουσιάστηκαν στο ευρύ κοινό με άρθρο στο περιοδικό BYTΕ τον Αύγουστο του 1981. 27 Need for multi-threading – An example: Imagine a stockbroker application with lots of complex capabilities. These are few of its functions: ❑ To download the last stock option prices ❑ To check prices for warnings ❑ Analyze historical data for company XYZ that we want to buy stocks ❑ These are time-consuming functions. ❑ In a single-threaded runtime environment, these actions execute one after another. ❑ The next action can happen only when the previous one is finished. 28 Need for multi-threading – An example: Now, if a historical analysis takes half an hour, and the user selects to perform a download and check prices afterward, the warning may come too late to buy or sell stock as a result. This is a sort of application that could be benefited from multithreading execution. ❑ Ideally, the download should happen in the background (that is, in another thread). ❑ That way, other processes could happen at the same time so that, for example, a warning could be communicated instantly. All the while, the user is interacting with other parts of the application. ❑ The historical analysis, too, could happen in a separate thread, so the user can work with the rest of the application while the results are being calculated. 29 Μερικά Κύρια χαρακτηριστικά της JAVA ❑ Απλή (Simple) ❑ Its coding style is very clean and easy to understand → Αντιθέτως με την C++, η JAVA αφαιρεί κάποια πολύπλοκα προγραμματιστικά χαρακτηριστικά ή χαρακτηριστικά που σχετίζονται με κακές πρακτικές προγραμματισμού (π.χ., explicit pointers, multiple inheritance, κτλ.) ❑ Επίσης, αντιθέτως με τη C, C++, στη Java, η διαχείριση της μνήμης ελέγχεται αποκλειστικά από αυτήν μέσω ενός υποπρογράμματος που ονομάζεται Garbage collector (αποκομιστής απορριμάτων) και ο προγραμματιστής δεν εμπλέκεται ποτέ στη διαδικασία αυτή (there is no need to remove the unreferenced objects explicitly). 30 Μερικά Κύρια χαρακτηριστικά της JAVA ❑ Αντικειμενοστρεφής (Pure Object-oriented) ❑ Παρόμοια με την C++, είναι μια αντικειμενοστρεφής γλώσσα προγραμματισμού που χρησιμοποιεί την έννοια των «αντικειμένων» (objects) για την επίλυση υπολογιστικών προβλημάτων. ❑ Almost everything in Java is an object. All programs and data, live within objects and classes. We cannot develop an executable program in Java without making use of a class. 31 Μερικά Κύρια χαρακτηριστικά της JAVA ❑ Φορητή (Portable) & Ανεξάρτητη Αρχιτεκτονικής (Architecture Neutral) → Platform/Machine Independent ❑ Είναι φορητή σε επίπεδο μεταγλωττισμένου κώδικα → Ένα από τα πιο ισχυρά χαρακτηριστικά της Java. ❑ Αυτό πρακτικά σημαίνει πως ένας προγραμματιστής μπορεί να γράψει και μεταγλωττίσει ένα πρόγραμμα σε Windows και στη συνέχεια να πάρει το αρχείο που παράχθηκε από τη μεταγλώττιση και να το τρέξει σε ένα μηχάνημα Unix χωρίς καμία αλλαγή. ❑ Απαραίτητη προϋπόθεση είναι στο μηχάνημα αυτό (Unix) να είναι εγκατεστημένο το αντίστοιχο JRE (το οποίο περιέχει το Java Virtual Machine (JVM)). Οι εφαρμογές Java μεταγλωττίζονται (compile) σε bytecode (.class αρχεία) και μπορούν να ερμηνευτούν (interpret) από οποιοδήποτε σύστημα που υλοποιεί την εικονική μηχανή Java (Java Virtual Machine). 32 Μερικά Κύρια χαρακτηριστικά της JAVA Write Once, Run Everywhere (WORE) Was a slogan created by Sun Microsystems to illustrate the cross-platform benefits of the Java language. * cross-platform software is computer software that is designed to work in several computing platforms (Microsoft Windows, Linux, and macOS). 33 Μερικά Κύρια χαρακτηριστικά της JAVA ❑ Αξιόπιστη (Robust) ❑ Είναι ικανή να χειρίζεται και να αποφεύγει σφάλματα που συμβένουν κατά το χρόνο εκτέλεσης (run time errors) → Java provides the concept of Exception handling which identifies runtime errors and handles then accordingly. ❑ Δεν υποστηρίζει δείκτες μνήμης (pointers), γεγονός που εξαλείφει την πιθανότητα αντικατάστασης της μνήμης και καταστροφής δεδομένων. ❑ Επιπλέον, η αυτόματη διαχείριση μνήμης (garbage collector; συλλογή σκουπιδιών) εξαλείφει τις διαρροές μνήμης (memory leaks) και άλλα προβλήματα που σχετίζονται με τη δυναμική δέσμευση/αποδέσμευση μνήμης. 34 Μερικά Κύρια χαρακτηριστικά της JAVA Παρέχει Ασφάλεια (Secure) ❑ Security is an important issue for any programming language. ❑ Java supports access modifiers (e.g., public, private, protected) to prevent memory access from malicious programmers or softwares. ❑ Thus in Java, we can not gain access to a particular variable (or data) if the programmer does not want it. 35 Μερικά Κύρια χαρακτηριστικά της JAVA ❑ Πολυνηματική (Multi-threaded) ❑ Java provides built-in support for multi-threading. ❑ Multithreaded means handling multiple tasks simultaneously or executing multiple parts (processes) of the same program in parallel → A Java thread is actually a lightweight process. ❑ Each part of such a program is called thread and each thread defines a separate path of execution. ❑ Multithreading is a specialized form of multitasking. 36 Mονο-νηματική εκτέλεση (Single-threaded execution) «Νήμα» εκτέλεσης (ροή εντολών διεργασίας) Πρόγραμμα Single-core CPU 37 Πολυ-νηματική εκτέλεση (Multi-threaded execution) Core Core Core Πρόγραμμα Core Core Core Core Core Core Core Multi-core CPU Core Core 38 Μερικά Κύρια χαρακτηριστικά της JAVA ❑ Main Advantages of multi-threading: ❑ Maximum utilization of processing and memory resources is possible. ❑ There is no need to wait for the application to finish one task (thread) before beginning another one → Time-saving ❑ It improves the performance of complex applications. Threads in Java can be created by using two mechanisms: 1. Extending the Thread class 2. Implementing the Runnable Interface