290 likes | 395 Views
Εισαγωγή. Κατανόηση της διαδικασίας ανάπτυξης λογισμικού, εργαλεία και προτεραιότητες. Παραδείγματα αλγορίθμων Βασικά θέματα OOP Κατανόηση μεταφραστών ( compilers ) και διερμηνευτών ( interpreters ) Τι είναι η Java Virtual Machine, bytecodes
E N D
Κατανόηση της διαδικασίας ανάπτυξης λογισμικού, εργαλεία και προτεραιότητες. Παραδείγματα αλγορίθμων Βασικά θέματα OOP Κατανόηση μεταφραστών (compilers)καιδιερμηνευτών (interpreters) Τι είναι η Java Virtual Machine, bytecodes Παραδείγματα μικρών console applications, GUI applications, and applets in Java Περιεχόμενα: Δρ. Μαρία Ι. Ανδρέου
Μεγάλα συστήματα επιχειρήσεων Βάσεις Δεδομένων Στρατιωτικά Ενσωματωμένα Συστήματα Επιστημονική Ερεύνα Τεχνητή Νοημοσύνη Επεξεργαστές κειμένου και άλλα προσωπικά εργαλεία Internet, e-mail, etc. Γραφικά/ ψηφιακή φωτογραφεία Παιχνίδια Εφαρμογές Λογισμικού (Software Applications) Δρ. Μαρία Ι. Ανδρέου
Έμφαση στην αποδοτικότητα Γρήγοροι αλγόριθμοι Προγράμματα μικρού μεγέθους Περιορισμένη χρήση της μνήμης Συχνά Κρυπτογραφημένος Κώδικας όχι user-friendly Έμφαση σε Παραγωγικότητα του προγραμματιστή Ομαδική εργασία Επαναχρησιμοποίηση του κώδικα Εύκολη συντήρηση Φορητότητα (portability) Καλύτερη τεκμηρίωση User-friendly Ανάπτυξη Λογισμικού (Software Development) Αρχικά (1950s): Τώρα: Δρ. Μαρία Ι. Ανδρέου
Γλώσσες Προγραμματισμού C C++ C# Assembly languages LISP Scheme Java Logo 1940 1950 1960 1970 1980 1990 2000 Fortran Pascal Machine code Basic Smalltalk Smalltalk-80 Δρ. Μαρία Ι. Ανδρέου
Αλγόριθμοι “μια αφηρημένη, τυπική και βήμα-βήμα συνταγή που μας λέει πώς να εκτελέσουμε ένα συγκεκριμένο έργο ή πώς να λύσουμε ένα συγκεκριμένο πρόβλημα.” • Παραδείγματα: • Binary Search (guess-the-number game) • long division • Euclid’s algorithm for finding the greatest common factor (c. 300 BC) Δρ. Μαρία Ι. Ανδρέου
Properties of Algorithms • Abstract: do not depend on a particular language or machine • General: apply to any “size” of task or any input values • Short: Use iterations or recursion to repeat the same steps multiple times Δρ. Μαρία Ι. Ανδρέου
Stop Pseudocodeand Flowcharts Input: pos0, dir0 pos pos0 dir dir0 1. Start at pos0, facing dir0 2. If wall in front, turn 90º clockwise else go forward 3. If back to initial position and direction, stop 4. Proceed to Step 2 Wall in front? No Yes dir dir + 90º pos pos + forward pos = pos0 and dir = dir0? No Yes Δρ. Μαρία Ι. Ανδρέου
OOP —Object-Oriented Programming • Ένα OOP μοντελοποιεί ένα κόσμο από ενεργά αντικείμενα (active objects). • Ένα αντικείμενο μπορεί να έχει τη δική του «μνήμη» («memory») η οποία μπορεί να περιλαμβάνει και άλλα αντικείμενα. • Ένα αντικείμενο ΕΧΕΙ ένα σύνολο μεθόδων (methods)που μπορούν να επεξεργαστούν μηνύματα (messages)συγκεκριμένων τύπων. Δρ. Μαρία Ι. Ανδρέου
OOP (συνέχ.) • Μια μέθοδος μπορεί να αλλάξει την κατάσταση του αντικειμένου, να στείλει μηνύματα σε άλλα αντικείμενα, να δημιουργεί νέα αντικείμενα. • Ένα αντικείμενο ανήκει σε μια συγκεκριμένη κατηγορία (class), και η λειτουργικότητα (functionality)τουκαθορίζεται από την κατηγορία στην οποία ανήκει. • Ένα προγραμματιστής δημιουργεί μια OOP εφαρμογή καθορίζοντας τις κατηγορίες (classes). Δρ. Μαρία Ι. Ανδρέου
Οι βασικές έννοιες στο OOP : • Κληρονομικότητα (Inheritance): μια υποκατηγορία (subclass)επεκτείνει (extends)μια υπερκατηγορία superclass; Τα αντικείμενα της subclass κληρονόμου (inherit)χαρακτηριστικά (features)της superclass και μπορούν να τα ξανα-ορίσουν ή/και να προσθέσουν νέα χαρακτηριστικά. • Προγράμματα καθοδηγούμενα από γεγονότα (Event-driven programs): το πρόγραμμα προσομοιώνει (simulates)ασύγχρονο χειρισμό γεγονότων (asynchronous handling of events); Μέθοδοι καλούνται αυτόματα σε ανταπόκριση των γεγονότων. Δρ. Μαρία Ι. Ανδρέου
Ωφελήματα από OOP • Διευκολύνει ομαδική ανάπτυξη λογισμικού • Είναι πιο εύκολο να επαναχρησιμοποιήσουμε μέρη από το software components για να αναπτύξουμε ένα νέο software • Ευκολότερο GUI (Graphical User Interface) και multimedia programming Δρ. Μαρία Ι. Ανδρέου
Editor Ο προγραμματιστής γράφειsource code Compiler Μεταφράζει το source σεobject code Linker Μετατρέπει ένα ή περισσότερα object modules σε ένα εκτελέσιμο executable πρόγραμμα Debugger Βήμα βήμα μπορούμε να δούμε την εκτέλεση του προγράμματος σε αργή κίνηση “in slow motion,” μας βοηθά να εντοπίζουμε λογικά λάθη (logical mistakes “bugs”) Software Development Tools Δρ. Μαρία Ι. Ανδρέου
Compiled Languages:Edit-Compile-Link-Run Editor Source code Compiler Object code Linker Executable program Editor Source code Compiler Object code Editor Source code Compiler Object code Δρ. Μαρία Ι. Ανδρέου
IDE —Integrated Development Environment • συνδυάζει editor, compiler, linker, debugger, και άλλα εργαλεία • έχει GUI (graphical user interface) • Compiles + links + τρέχουν με το πάτημα ενός κουμπιού • Μας βοηθά να κάνουμε εύκολα compile ένα πρόγραμμα το οποίο αποτελείται από πολλά source files Δρ. Μαρία Ι. Ανδρέου
Compiler: Ελέγχει για συντακτικά λάθη παράγει machine-code instructions ΔΕΝ χρειάζεται για να τρέξει το executable program Το executable τρέχει πιο γρήγορα Interpreter: Ελέγχει για συντακτικά λάθη Εκτελεί κατάλληλες εντολές καθώς διερμηνεύει ένα program statements Πρέπει να παραμένει installed ενόσω το πρόγραμμα διερμηνεύεται το interpreted program είναι πιο αργό Compiler vs. Interpreter Editor Source code Interpreter Δρ. Μαρία Ι. Ανδρέου
Java’s Hybrid Approach:Compiler + Interpreter • ένας Java compilerμετατρέπει ένα Java source code σε εντολές (instructions)για τηJava Virtual Machine. • Αυτές οι εντολές, καλούνταιbytecodes, είναι οι ίδιες για κάθε για κάθε computer / operating system. • ένας Java interpreterεκτελεί bytecodes σε ένα συγκεκριμένο computer. Δρ. Μαρία Ι. Ανδρέου
Java’s Compiler + Interpreter Δρ. Μαρία Ι. Ανδρέου
Σε τι βοηθούν τα Bytecodes; • Platform-independent. • Φορτώνονται από τον Internet πιο γρήγορα από το source code. • Ο Interpreter είναι πιο γρήγορος και πιο μικρός από ότι θα ήταν στην περίπτωση που θα φόρτωνε Java source. • Ο Source code δεν φανερώνεται στον end users. • Ο Interpreter εκτελεί περισσότερους ελέγχους ασφάλειας που προέρχονται από κακόβουλους κώδικες Δρ. Μαρία Ι. Ανδρέου
javac Java compiler java Java interpreter appletviewer ελέγχει applets χωρίς a browser jar packs classes σεjar files (packages) javadoc παράγει HTML documentation (“docs”) από το source jdb command-line debugger Java SDK (a.k.a. JDK) —Software Development Kit Όλα αυτά είναι command-line tools, no GUI Δρ. Μαρία Ι. Ανδρέου
Java SDK (συνέχ.) • Διαθέσιμο free από τη Sun Microsystems. • Όλα τα documentation is online: • Πολλές άλλες πηγές για Java resources on the Internet: http://java.sun.com/j2se/1.4/docs http://www.skylit.com/javamethods/appxg.html Δρ. Μαρία Ι. Ανδρέου
Console applications GUI applications Τύποι Προγραμμάτων • Applets Δρ. Μαρία Ι. Ανδρέου
Console Applications • Simple text dialog: prompt input, prompt input ... result C:\javamethods\Ch03> set classpath=.;C:\javamethods\EasyIO C:\javamethods\Ch03> javac Greetings2.java C:\javamethods\Ch03> java Greetings2 Enter your first name: Josephine Enter your last name: Javadoc Hello, Josephine Javadoc Congratulations on your third program! C:\javamethods\Ch03> _ Δρ. Μαρία Ι. Ανδρέου
Greetings2.java The EasyReader class (written by the Java Methods authors) is used for getting keyboard input. EasyReader.classmust be in the same folder as your program (or set the classpath to include its location). public class Greetings2 { public static void main(String[ ] args) { EasyReader console = new EasyReader(); System.out.print("Enter your first name: "); String firstName = console.readLine(); System.out.print("Enter your last name: "); String lastName = console.readLine(); System.out.println("Hello, " + firstName + " " + lastName); System.out.println("Congratulations on your third program!"); } } Prompts Δρ. Μαρία Ι. Ανδρέου
Command-Line Arguments C:\javamethods\Ch03> javac Greetings.java C:\javamethods\Ch03> java Greetings Josephine Javadoc Hello, Josephine Javadoc public class Greetings { public static void main(String[ ] args) { String firstName = args[ 0 ]; String lastName = args[ 1 ]; System.out.println("Hello, " + firstName + " " + lastName); } } Command-line arguments are passed to main as an array of Strings. Δρ. Μαρία Ι. Ανδρέου
Command-Line Args (cont’d) • Can be used in GUI applications, too • IDEs provide a way to set them (Or prompt for them) Josephine Javadoc Δρ. Μαρία Ι. Ανδρέου
GUI Applications Menus Clickable panel Buttons Slider Δρ. Μαρία Ι. Ανδρέου
HelloGui.java The ExitButtonListener class (written by the Java Methods authors) is used for handling the “window close” button. ExitButtonListener.classmust be in the same folder as your program (or set the classpath to include its location). import java.awt.*; import javax.swing.*; public class HelloGui extends JFrame { ... < other code > public static void main(String[ ] args) { HelloGui window = new HelloGui(); window.addWindowListener(new ExitButtonListener()); window.setSize(300, 100); window.show(); } } GUI libraries Δρ. Μαρία Ι. Ανδρέου
HelloApplet.java import java.awt.*; import javax.swing.*; public class HelloApplet extends JApplet { public void init() { ... } ... < other methods > } No main in applets: the init method is called by the applet viewer or the browser Δρ. Μαρία Ι. Ανδρέου