ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 2. Εισαγωγή στους Η/Υ και τον προγραμματισμό Χειμερινό εξάμηνο 2014 Πέτρος Κωμοδρόμος kmdrms@ucy.ac.cy http://www.eng.ucy.ac.cy/petrs 1
Θέματα Ιστορικά στοιχεία Η/Υ Βασικές αρχές υλικού (hardware) και λογισμικού (sftware) Λειτουργικά συστήματα και δίκτυα (perating systems and netwrks) Αναπαράσταση αριθμών και δεδομένων στους Η/Υ Τύποι γλωσσών προγραμματισμού (prgramming languages) Εισαγωγή στον αντικειμενοστραφή προγραμματισμό (OOP) Διαδικασία ανάπτυξης λογισμικού Java Αξιοποίηση Java σε σύγχρονες εφαρμογές πληροφορικής Αντικειμενοστραφής προγραμματισμός, Design Patterns και UML 2
Ιστορικά στοιχεία H/Y και πληροφορικής 1939, Atanasff και Berry: πρώτος ψηφιακόs Η/Υ 1939-44, Hward Aiken: πρώτος μεγάλης κλίμακας Η/Υ (Harvard Mark I) 1943, Alan Turing: πρώτος προγραμματιζόμενος ψηφιακόs Η/Υ (COLOSSUS) 1944: πρώτος γενικής χρήσης ψηφιακόs Η/Υ (ENIAC) 3
Δεκαετία 1960: Ολοκληρωμένα κυκλώματα σημαντική μείωση μεγέθους Η/Υ 1969: ARPANET: Γέννηση του διαδίκτυου Δεκαετία 1970: πρώτοι μικροϋπολογιστές 1976: Κατασκευάζεται ο πρώτος υπερυπολογιστής (Cray-1) 1981: Κατασκευάζεται ο προσωπικός Η/Υ IBM PC 1989-90, Tim Berners-Lee: Wrld-Wide Web (WWW), HTML, & HTTP 1993 & 1994: Δημιουργούνται τα Msaic & Netscape WWW brwsers 4
Πρόοδος Τεχνολογίας Ηλεκτρονικών Υπολογιστών 5 ΜΒ σκληρός Δίσκος (1956) 128 GΒ (128 x 1024 MB) USB Memry key (2011) 5
Η/Υ Ηλεκτρονικοί Υπολογιστές (Η/Υ) Δυνατότητα εκτελέσεως υπολογισμών και λογικών αποφάσεων Δισεκατομμύρια φορές μεγαλύτερη ταχύτητα από του ανθρώπου Προγράμματα υπολογιστών Εντολές βάσει των οποίων ένας Η/Υ εκτελεί κάποια συγκεκριμένη εργασία Υλικό (hardware) Ηλεκτρονικά και μηχανικά τμήματα ενός υπολογιστικού συστήματος Λογισμικό (sftware) Προγράμματα και δεδομένα που εκτελούνται σε ένα Η/Υ 6
Βασικά στοιχεία ψηφιακών Η/Υ Βασικές λειτουργίες: αποθήκευση πληροφοριών ανάκληση πληροφοριών ταχύτατη εκτέλεση μαθηματικών πράξεων Υλικό (hardware): Βασική αρχιτεκτονική: Eίσοδος δεδομένων (Ιnput data) K.M.E. (CPU) Επεξεργαστής (prcessr) Πρωτεύων μνήμη (RAM) Έξοδος αποτελεσμάτων (Output data) 7
Βασικά στοιχεία ψηφιακών Η/Υ Λογισμικό(sftware): Προγράμματα Η/Υ: Προγράμματα συστημάτων: λειτουργικά συστήματα (Unix, MSDOS, Windws, Linux, κλ.π.), μεταγλωττιστές, κ.λπ. Προγράμματα εφαρμογών: π.χ. Ntepad, Wrd, Excel, Pwerpint, Οutlk, Netscape, Internet Explrer, Matlab, Autcad, κ.λπ. Δεδομένα προγραμμάτων Η/Υ 8
Σύνηθες λογικές μονάδες υπολογιστικού συστήματος Μονάδα εισόδου (input unit) Ποντίκι (muse), πληκτρολόγιο (keybard) Μονάδα εξόδου (utput unit) Εκτυπωτής (printer), οθόνη (mnitr), μεγάφωνα (audi speakers), κ.λπ. Μονάδα μνήμης (memry unit) Διατηρεί άμεσα δεδομένα όσο είναι σε λειτουργία ο Η/Υ Αριθμητική και λογική μονάδα (arithmetic and lgic unit - ALU) Εκτελεί υπολογισμούς Κεντρική μονάδα επεξεργασίας (central prcessing unit - CPU) Συντονίζει την λειτουργία όλων των επιμέρους συσκευών του Η/Υ Δευτερεύουσα μνήμη αποθήκευσης (secndary strage unit) Σκληρός δίσκος (hard drive), δισκέττα (flppy drive), CD (cmpact disc), DVD (digital vide disc), κλ.π. 9
Λειτουργικά συστήματα (perating systems) Επεξεργασία κατά δεσμίδες (batch prcessing) Εκτέλεση εργασιών (jb, task) ξεχωριστά μία-μία με τη σειρά Ανάπτυξη λειτουργικών συστημάτων για έλεγχο και διαχείριση της εκτέλεσης των διεργασιών Πολυπρογραμματισμός (multiprgramming) Πολλαπλές ταυτόχρονες εργασίες ( simultaneus jbs) Χρονικός καταμερισμός (timesharing) της χρήσης του Η/Υ Μη προεκτοπιστικός χρονοπρογραμματισμός (nn-preemptive scheduling) Προεκτοπιστικός χρονοπρογραμματισμός (preemptive scheduling) 10
Κατηγορίες υπολογιστικών συστημάτων Προσωπικοί υπολογιστές (persnal cmputers - PCs) Ανεξάρτητοι/αυτόνομοι Η/Υ για ατομική χρήση Κατανεμημένο (distributed) υπολογιστικό σύστημα Οι διεργασίες που πρέπει να εκτελεστούν κατανέμονται σε ομάδα Η/Υ Πελάτης/εξυπηρετητής (client/server) Η/Υ Οι εξυπηρετητές προσφέρουν συγκεκριμένα δεδομένα ή προγράμματα Οι πελάτες έχουν πρόσβαση στα δεδομένα ή προγράμματα του εξυπηρετητή H Java μπορεί να χρησιμοποιηθεί και στις 3 κατηγορίες Η/Υ 11
Διαδίκτυο (Internet) και Παγκόσμιος ιστός πληροφοριών (Wrld Wide Web - WWW) Διαδίκτυο (internet): Παγκόσμιο δίκτυο Η/Υ Αναπτύχθηκε πριν 40 χρόνια στις Η.Π.Α. για στρατιωτικούς σκοπούς Αρχικά συνέδεσε ένα μικρό αριθμό υπολογιστικών κέντρων Σήμερα παρέχει πρόσβαση σε εκατοντάδες εκατομμύρια Η/Υ Παγκόσμιος ιστός (Wrld Wide Web - WWW) Διευκολύνει την εύρεση και πρόσβαση σε πληροφορίες διαφόρων τύπων και πολυμέσων (multimedia) μέσω υπερκειμένων (hypertext) αξιοποιώντας την γλώσσα HTML (Markup Language) H Java μπορεί να αξιοποιήσει τόσο το διαδίκτυο όσο και το WWW 12
Γλώσσες προγραμματισμού (Prgramming Languages) Γλώσσα μηχανής (machine language): Άμεσα κατανοητή από τον συγκεκριμένο Η/Υ Πολύ δύσκολος και αργός προγραμματισμός (απλές εντολές σε μορφή αριθμών) Εξαρτώμενη αποκλειστικά από τον συγκεκριμένο Η/Υ Γλώσσα Assembly Χρήση αγγλικών λέξεων αντί αριθμών για τον καθορισμό απλών εντολών Μεταφραστές (Assemblers) μετατρέπουν τα προγράμματα σε γλώσσα μηχανής Ανάγκη χρήσης πάρα πολλών εντολών ακόμη και για την πιο απλή διεργασία 13
Γλώσσες προγραμματισμού (Prgramming Languages) Γλώσσα ψηλού επιπέδου (high-level language) Χρήση αγγλικών λέξεων για τον καθορισμό σύνθετων εντολών και εργασιών συμπεριλαμβανομένων μαθηματικών εντολών και λογικών ελέγχων Ο μεταγλωττιστής (cmpiler) μετατρέπει τον πηγαίο κώδικα (surce cde) σε γλώσσα μηχανής δημιουργώντας ένα εκτελέσιμο πρόγραμμα (executable prgram) Κάποιες γλώσσες (π.χ. VB) χρησιμοποιούν μεταφραστής/διερμηνευτή (interpreter) Διερμηνεύοντας άμεσα το πρόγραμμα το εκτελεί χωρίς μεταγλώττιση Πολύ πιο αργό αφού δεν αξιοποιεί πλήρως το διαθέσιμο υλικό (hardware) 14
Γλώσσες προγραμματισμού FORTRAN (FORmula TRANslatr) Δημιουργήθηκε κατά τα μέσα της δεκαετίας του 50 Κατάλληλη για πολύπλοκους μαθηματικούς υπολογισμούς COBOL (COmmn Business Oriented Language) Δημιουργήθηκε προς το τέλος της δεκαετία του 50 Κατάλληλη για εμπορικές εφαρμογές για αποδοτική διαχείριση ογκωδών δεδομένων Basic (Beginner s All Purpse Symblic Instructin Cde) Δημιουργήθηκε στα μέσα της δεκαετίας του 60 για να είναι δυνατή η ανάπτυξη πολύ απλών προγραμμάτων από σχετικά άπειρους προγραμματιστές Pascal Δημιουργήθηκε το 1971 για τη διδασκαλία δομημένου προγραμματισμού (structured prgramming) με τον οποίο πιο ευανάγνωστα, εύκολα ελέγξιμα και τροποποιήσιμα προγράμματα μπορούσαν να αναπτυχθούν 15
Ada C C++ Java C# Δημιουργήθηκε κατά τα τέλη της δεκαετίας του 70 Προσφέρει δυνατότητες παράλληλης εκτέλεσης διάφορων διεργασιών (multitasking) Δημιουργήθηκε το 1972 από τον Dennis Ritchie στα Bell Labs Παρέχει πάρα πολλές δυνατότητες και με αυτή έχουν γραφτεί τα περισσότερα λειτουργικά συστήματα (perating systems) Δημιουργήθηκε τη δεκαετία του 80 από τον Bjarne Strustrup στα Bell Labs Επέκταση της C με ικανότητες αντικειμενοστραφούς προγραμματισμού Δημιουργήθηκε το 1995 από τον James Gsling βάσει της C++ Καθαρά αντικειμενοστραφής προγραμματισμός με δυνατότητες διαδικτύου Δημιουργήθηκε το 2000 σαν βασική γλώσσα της τεχνολογίας.net Βασίστηκε στις C++ και Java ανταγωνιζόμενη εμπορικώς την τελευταία 16
Java Αρχικά δημιουργήθηκε για έξυπνες ηλεκτρονικές συσκευές Αξιοποιήθηκε για το διαδίκτυο και το WWW H γλώσσα προγραμματισμού Java είναι: μία καθαρά αντικειμενοστραφής γλώσσα προγραμματισμού ανεξάρτητη πλατφόρμας (platfrm-independent) (PC, Mac, Unix, Linux, κ.λπ.) ανεξάρτητη από το είδος των γραφικών του Η/Υ 17
Προσφέρει δυνατότητες Java αφαιρετικότητας (abstractin) απόκρυψης (infrmatin hiding) συμπερίληψης (encapsulatin) κληρονομικότητας (inheritance) πολυμορφισμού (plymrphism) πολλαπλές διεργασίες (multithreading) διαχείριση σφαλμάτων (exceptin handling) επαναχρησιμοποίησης (reusability) επεκτασιμότητας (extensibility) 18
Java Η Java μπορεί να χρησιμοποιηθεί για την: ανάπτυξη εύκολα επαναχρησιμοποιούμενου αντικειμενοστραφούς λογισμικού ανάπτυξη μεγάλων λογισμικών πακέτων επέκταση των δυνατοτήτων και υπηρεσιών που προσφέρει ένας εξυπηρετητής (WWW server) ανάπτυξη εφαρμογών με στοιχεία γραφικών δημιουργία εφαρμογών για μικροσυσκευές (κινητά, PDA s, κλ.π.) ανάπτυξη εφαρμογών με αξιοποίηση του διαδικτίου ανάπτυξη εφαρμογών με παράλληλη εκτέλεση πολλαπλών διεργασιών 19
Διαθέσιμες πλατφόρμες Java Java Standard Editin (SE) Σύνηθες εφαρμογές με δυνατότητες δικτύου/διαδικτύου Java Enterprise Editin (EE) Μεγάλης κλίμακας εφαρμογές κυρίως για μεγάλες επιχειρήσεις Java Micr Editin (ΜE) Εφαρμογές για συσκευές με περιορισμένες δυνατότητες μνήμης 20
Java Standard Editin (SE) http://www.racle.cm/technetwrk/java Κατεβάστε το τελευταίο JDK8 (Java SE8) μαζί με το NetBeans Applicatin Prgramming Interface (API): μια συλλογή από στοιχεία τα οποία μπορούν να χρησιμοποιηθούν για την ανάπτυξη λογισμικού Java SE 8.0 Develpment Kit (JDK) παρέχει τα ελάχιστα δυνατά εργαλεία για ανάπτυξη προγραμμάτων Java Πλούσια συλλογή κλάσεων (classes) προς χρήση: Java APIs Συμπεριλαμβάνουν χρήσιμες μεθόδους Μπορούν να αξιοποιηθούν για γρήγορη και αποδοτική δημιουργία επεκτάσιμων προγραμμάτων με τη Java 21
Αντικειμενοστραφής προγραμματισμός Αντικείμενα (bjects) Προγραμματιστικά στοιχεία που αντιπροσωπεύουν πραγματικά αντικείμενα Παραδείγματα αντικειμένων άνθρωποι, κτίρια, αυτοκίνητα, ζώα, δέντρα, ποδήλατα, παιδιά, δοκοί, κ.λπ. Χαρακτηριστικά, γνωρίσματα (attributes) Βάρος, ύψος, χρώμα, πυκνότητα, σχήμα, ηλικία Συμπεριφορές (behavirs) Οι άνθρωποι τρώνε, μιλάνε, περπατούν, δουλεύουν, κ.λπ. Οι δοκοί φορτίζονται, παραμορφώνονται, κ.λπ. Τα κτίρια διεγείρονται σεισμικά, ταλαντώνονται, κ.λπ. 22
Ανάπτυξη αντικειμενοστραφούς λογισμικού Επαναχρησιμοποίηση έτοιμου λογισμικού (sftware reuse) Αξιοποίηση τάξεων και αντίστοιχων μεθόδων (classes/methds): από τις διαθέσιμες βιβλιοθήκες τάξεων που έχουμε ήδη αναπτύξει και ελέγξει στο παρελθόν που έχουν κάποιοι άλλοι αναπτύξει και ελέγξει Εξοικονόμηση απαιτούμενου χρόνου για την ανάπτυξη λογισμικού Χρησιμοποιώντας τις βιβλιοθήκες τάξεων της Java (API classes): αυξάνει η αποδοτικότητα του λογισμικού διατηρούμε την δυνατότητα μεταφοράς (prtability) του λογισμικού σε άλλη πλατφόρμα Η/Υ ελαχιστοποιείται ο χρόνος ανάπτυξης του λογισμικού 23
Αντικειμενοστραφής Ανάλυση, Σχεδιασμός και Προγραμματισμός (Object-Oriented Analysis, Design and Prgramming) Αντικειμενοστραφής προγραμματισμός (bject-riented analysis/design/prgramming OOA/OOD/OOP) Αντιπροσωπεύονται πραγματικά αντικείμενα Προσομοιώνονται οι ενέργειες και αλληλοεπιδράσεις μεταξύ αντικειμένων Οι τάξεις συμπεριλαμβάνουν χαρακτηριστικά και συμπεριφορές (encapsulate attributes and peratins) έχοντας δυνατότητες επιλεκτικής απόκρυψης κάποιων πληροφοριών (infrmatin hiding) και περιορισμού των δυνατοτήτων πρόσβασης σε δεδομένα Unified Mdeling Language (UML) γραφική απεικόνιση της σχεδίασης ενός αντικειμενοστραφούς συστήματος Σύγχρονες μέθοδοι σχεδίασης λογισμικού (Design Patterns) 24