Εισαγωγή
description
Transcript of Εισαγωγή
Δρ. Μαρία Ι. Ανδρέου
Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό(Object-Oriented Programming)
Εισαγωγή
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-2
Περιεχόμενα:
Κατανόηση της διαδικασίας ανάπτυξης λογισμικού, εργαλεία και προτεραιότητες.
Παραδείγματα αλγορίθμων Βασικά θέματα OOP Κατανόηση μεταφραστών (compilers) και
διερμηνευτών (interpreters) Τι είναι η Java Virtual Machine, bytecodes Παραδείγματα μικρών console applications,
GUI applications, and applets in Java
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-3
Εφαρμογές Λογισμικού (Software Applications) Μεγάλα συστήματα
επιχειρήσεων Βάσεις Δεδομένων Στρατιωτικά Ενσωματωμένα
Συστήματα Επιστημονική Ερεύνα Τεχνητή Νοημοσύνη
Επεξεργαστές κειμένου και άλλα προσωπικά εργαλεία
Internet, e-mail, etc. Γραφικά / ψηφιακή
φωτογραφεία Παιχνίδια
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-4
Ανάπτυξη Λογισμικού (Software Development)
Αρχικά (1950s):
Έμφαση στην αποδοτικότητα – Γρήγοροι αλγόριθμοι – Προγράμματα μικρού
μεγέθους– Περιορισμένη χρήση της
μνήμης Συχνά
Κρυπτογραφημένος Κώδικας
όχι user-friendly
Έμφαση σε– Παραγωγικότητα του
προγραμματιστή– Ομαδική εργασία– Επαναχρησιμοποίηση
του κώδικα– Εύκολη συντήρηση – Φορητότητα (portability)
Καλύτερη τεκμηρίωση User-friendly
Τώρα:
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-5
Γλώσσες Προγραμματισμού
1940 1950 1960 1970 1980 1990 2000
Machinecode
Assembly languages
Fortran
BasicPascal
Scheme
C C++
JavaLISP
Smalltalk Smalltalk-80
C#
Logo
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-6
Αλγόριθμοι “μια αφηρημένη, τυπική και βήμα-βήμα συνταγή που μας λέει πώς να εκτελέσουμε ένα συγκεκριμένο έργο ή πώς να λύσουμε ένα συγκεκριμένο πρόβλημα.”
Παραδείγματα:– Binary Search (guess-the-number game) – long division– Euclid’s algorithm for finding the greatest
common factor (c. 300 BC)
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-7
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
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-8
Pseudocodeand Flowcharts
1. Start at pos0, facing dir02. If wall in front, turn 90º clockwise else go forward3. If back to initial position and direction, stop4. Proceed to Step 2
Wall in front?
dir dir + 90º
pos = pos0and dir = dir0?
YesNo
YesNo
pos pos0dir dir0
pos pos + forward
Input:pos0, dir0
Stop
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-9
OOP —Object-Oriented Programming Ένα OOP μοντελοποιεί ένα κόσμο από ενεργά
αντικείμενα (active objects).
Ένα αντικείμενο μπορεί να έχει τη δική του «μνήμη» («memory») η οποία μπορεί να περιλαμβάνει και άλλα αντικείμενα.
Ένα αντικείμενο ΕΧΕΙ ένα σύνολο μεθόδων (methods) που μπορούν να επεξεργαστούν μηνύματα (messages) συγκεκριμένων τύπων.
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-10
OOP (συνέχ.) Μια μέθοδος μπορεί να αλλάξει την
κατάσταση του αντικειμένου, να στείλει μηνύματα σε άλλα αντικείμενα, να δημιουργεί νέα αντικείμενα.
Ένα αντικείμενο ανήκει σε μια συγκεκριμένη κατηγορία (class), και η λειτουργικότητα (functionality) του καθορίζεται από την κατηγορία στην οποία ανήκει.
Ένα προγραμματιστής δημιουργεί μια OOP εφαρμογή καθορίζοντας τις κατηγορίες (classes).
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-11
Οι βασικές έννοιες στο OOP :
Κληρονομικότητα (Inheritance): μια υποκατηγορία (subclass) επεκτείνει (extends) μια υπερκατηγορία superclass; Τα αντικείμενα της subclass κληρονόμου (inherit) χαρακτηριστικά (features) της superclass και μπορούν να τα ξανα-ορίσουν ή/και να προσθέσουν νέα χαρακτηριστικά.
Προγράμματα καθοδηγούμενα από γεγονότα (Event-driven programs): το πρόγραμμα προσομοιώνει (simulates) ασύγχρονο χειρισμό γεγονότων (asynchronous handling of events); Μέθοδοι καλούνται αυτόματα σε ανταπόκριση των γεγονότων.
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-12
Ωφελήματα από OOP
Διευκολύνει ομαδική ανάπτυξη λογισμικού
Είναι πιο εύκολο να επαναχρησιμοποιήσουμε μέρη από το software components για να αναπτύξουμε ένα νέο software
Ευκολότερο GUI (Graphical User Interface) και multimedia programming
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-13
Software Development Tools
Editor– Ο προγραμματιστής γράφει
source code Compiler
– Μεταφράζει το source σε object code
Linker– Μετατρέπει ένα ή
περισσότερα object modules σε ένα εκτελέσιμο executable πρόγραμμα
Debugger– Βήμα βήμα μπορούμε
να δούμε την εκτέλεση του προγράμματος σε αργή κίνηση “in slow motion,” μας βοηθά να εντοπίζουμε λογικά λάθη (logical mistakes “bugs”)
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-14
Compiled Languages:Edit-Compile-Link-Run
Editor Sourcecode
Compiler Objectcode
Linker Executableprogram
Editor Sourcecode
Compiler Objectcode
Editor Sourcecode
Compiler Objectcode
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-15
IDE —Integrated Development Environment συνδυάζει editor, compiler, linker, debugger,
και άλλα εργαλεία
έχει GUI (graphical user interface)
Compiles + links + τρέχουν με το πάτημα ενός κουμπιού
Μας βοηθά να κάνουμε εύκολα compile ένα πρόγραμμα το οποίο αποτελείται από πολλά source files
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-16
Compiler vs. Interpreter Compiler:
Ελέγχει για συντακτικά λάθη
παράγει machine-code instructions
ΔΕΝ χρειάζεται για να τρέξει το executable program
Το executable τρέχει πιο γρήγορα
Interpreter:Ελέγχει για συντακτικά λάθη
Εκτελεί κατάλληλες εντολές καθώς διερμηνεύει ένα program statements
Πρέπει να παραμένει installed ενόσω το πρόγραμμα διερμηνεύεται
το interpreted program είναι πιο αργό
Editor Sourcecode
Interpreter
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-17
Java’s Hybrid Approach:Compiler + Interpreter
ένας Java compiler μετατρέπει ένα Java source code σε εντολές (instructions) για τη Java Virtual Machine.
Αυτές οι εντολές, καλούνται bytecodes, είναι οι ίδιες για κάθε για κάθε computer / operating system.
ένας Java interpreter εκτελεί bytecodes σε ένα συγκεκριμένο computer.
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-18
Java’s Compiler + Interpreter
Editor
Hello.java
Source code
Compiler
Hello.class
Bytecodes
Interpreter
Hello, World!
Interpreter
Hello, World!
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-19
Σε τι βοηθούν τα Bytecodes; Platform-independent.
Φορτώνονται από τον Internet πιο γρήγορα από το source code.
Ο Interpreter είναι πιο γρήγορος και πιο μικρός από ότι θα ήταν στην περίπτωση που θα φόρτωνε Java source.
Ο Source code δεν φανερώνεται στον end users.
Ο Interpreter εκτελεί περισσότερους ελέγχους ασφάλειας που προέρχονται από κακόβουλους κώδικες
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-20
Java SDK (a.k.a. JDK) —Software Development Kit 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
Όλα αυτά είναι command-line tools, no GUI
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-21
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
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-22
Τύποι Προγραμμάτων
Console applications
GUI applications
Applets
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-23
Console Applications
C:\javamethods\Ch03> set classpath=.;C:\javamethods\EasyIOC:\javamethods\Ch03> javac Greetings2.javaC:\javamethods\Ch03> java Greetings2
Enter your first name: JosephineEnter your last name: JavadocHello, Josephine JavadocCongratulations on your third program!
C:\javamethods\Ch03> _
Simple text dialog:prompt input, prompt input ... result
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-24
Greetings2.java
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!"); }}
EasyReader.class must be in the same folder as your program (or set the classpath to include its location).
The EasyReader class (written by the Java Methods authors) is used for getting keyboard input.
Prompts
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-25
Command-Line ArgumentsC:\javamethods\Ch03> javac Greetings.javaC:\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 mainas an array of Strings.
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-26
Command-Line Args (cont’d)
Can be used in GUI applications, too IDEs provide a way to set them
Josephine Javadoc
(Or prompt for them)
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-27
GUI Applications
Menus
Buttons
Clickable panel
Slider
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-28
HelloGui.java
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(); }}
The ExitButtonListener class (written by the Java Methods authors) is used for handling the “window close” button.ExitButtonListener.class must be in the same folder as your program (or set the classpath to include its location).
GUI libraries
Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-29
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