Εισαγωγή

29
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Εισαγωγή

description

Εισαγωγή. Κατανόηση της διαδικασίας ανάπτυξης λογισμικού, εργαλεία και προτεραιότητες. Παραδείγματα αλγορίθμων Βασικά θέματα OOP Κατανόηση μεταφραστών ( compilers ) και διερμηνευτών ( interpreters ) Τι είναι η Java Virtual Machine, bytecodes - PowerPoint PPT Presentation

Transcript of Εισαγωγή

Page 1: Εισαγωγή

Δρ. Μαρία Ι. Ανδρέου

Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό(Object-Oriented Programming)

Εισαγωγή

Page 2: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-2

Περιεχόμενα:

Κατανόηση της διαδικασίας ανάπτυξης λογισμικού, εργαλεία και προτεραιότητες.

Παραδείγματα αλγορίθμων Βασικά θέματα OOP Κατανόηση μεταφραστών (compilers) και

διερμηνευτών (interpreters) Τι είναι η Java Virtual Machine, bytecodes Παραδείγματα μικρών console applications,

GUI applications, and applets in Java

Page 3: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-3

Εφαρμογές Λογισμικού (Software Applications) Μεγάλα συστήματα

επιχειρήσεων Βάσεις Δεδομένων Στρατιωτικά Ενσωματωμένα

Συστήματα Επιστημονική Ερεύνα Τεχνητή Νοημοσύνη

Επεξεργαστές κειμένου και άλλα προσωπικά εργαλεία

Internet, e-mail, etc. Γραφικά / ψηφιακή

φωτογραφεία Παιχνίδια

Page 4: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-4

Ανάπτυξη Λογισμικού (Software Development)

Αρχικά (1950s):

Έμφαση στην αποδοτικότητα – Γρήγοροι αλγόριθμοι – Προγράμματα μικρού

μεγέθους– Περιορισμένη χρήση της

μνήμης Συχνά

Κρυπτογραφημένος Κώδικας

όχι user-friendly

Έμφαση σε– Παραγωγικότητα του

προγραμματιστή– Ομαδική εργασία– Επαναχρησιμοποίηση

του κώδικα– Εύκολη συντήρηση – Φορητότητα (portability)

Καλύτερη τεκμηρίωση User-friendly

Τώρα:

Page 5: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-5

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

1940 1950 1960 1970 1980 1990 2000

Machinecode

Assembly languages

Fortran

BasicPascal

Scheme

C C++

JavaLISP

Smalltalk Smalltalk-80

C#

Logo

Page 6: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-6

Αλγόριθμοι “μια αφηρημένη, τυπική και βήμα-βήμα συνταγή που μας λέει πώς να εκτελέσουμε ένα συγκεκριμένο έργο ή πώς να λύσουμε ένα συγκεκριμένο πρόβλημα.”

Παραδείγματα:– Binary Search (guess-the-number game) – long division– Euclid’s algorithm for finding the greatest

common factor (c. 300 BC)

Page 7: Εισαγωγή

Εισαγωγή στο ΟΟΡ και 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

Page 8: Εισαγωγή

Εισαγωγή στο ΟΟΡ και 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

Page 9: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-9

OOP —Object-Oriented Programming Ένα OOP μοντελοποιεί ένα κόσμο από ενεργά

αντικείμενα (active objects).

Ένα αντικείμενο μπορεί να έχει τη δική του «μνήμη» («memory») η οποία μπορεί να περιλαμβάνει και άλλα αντικείμενα.

Ένα αντικείμενο ΕΧΕΙ ένα σύνολο μεθόδων (methods) που μπορούν να επεξεργαστούν μηνύματα (messages) συγκεκριμένων τύπων.

Page 10: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-10

OOP (συνέχ.) Μια μέθοδος μπορεί να αλλάξει την

κατάσταση του αντικειμένου, να στείλει μηνύματα σε άλλα αντικείμενα, να δημιουργεί νέα αντικείμενα.

Ένα αντικείμενο ανήκει σε μια συγκεκριμένη κατηγορία (class), και η λειτουργικότητα (functionality) του καθορίζεται από την κατηγορία στην οποία ανήκει.

Ένα προγραμματιστής δημιουργεί μια OOP εφαρμογή καθορίζοντας τις κατηγορίες (classes).

Page 11: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-11

Οι βασικές έννοιες στο OOP :

Κληρονομικότητα (Inheritance): μια υποκατηγορία (subclass) επεκτείνει (extends) μια υπερκατηγορία superclass; Τα αντικείμενα της subclass κληρονόμου (inherit) χαρακτηριστικά (features) της superclass και μπορούν να τα ξανα-ορίσουν ή/και να προσθέσουν νέα χαρακτηριστικά.

Προγράμματα καθοδηγούμενα από γεγονότα (Event-driven programs): το πρόγραμμα προσομοιώνει (simulates) ασύγχρονο χειρισμό γεγονότων (asynchronous handling of events); Μέθοδοι καλούνται αυτόματα σε ανταπόκριση των γεγονότων.

Page 12: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-12

Ωφελήματα από OOP

Διευκολύνει ομαδική ανάπτυξη λογισμικού

Είναι πιο εύκολο να επαναχρησιμοποιήσουμε μέρη από το software components για να αναπτύξουμε ένα νέο software

Ευκολότερο GUI (Graphical User Interface) και multimedia programming

Page 13: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-13

Software Development Tools

Editor– Ο προγραμματιστής γράφει

source code Compiler

– Μεταφράζει το source σε object code

Linker– Μετατρέπει ένα ή

περισσότερα object modules σε ένα εκτελέσιμο executable πρόγραμμα

Debugger– Βήμα βήμα μπορούμε

να δούμε την εκτέλεση του προγράμματος σε αργή κίνηση “in slow motion,” μας βοηθά να εντοπίζουμε λογικά λάθη (logical mistakes “bugs”)

Page 14: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-14

Compiled Languages:Edit-Compile-Link-Run

Editor Sourcecode

Compiler Objectcode

Linker Executableprogram

Editor Sourcecode

Compiler Objectcode

Editor Sourcecode

Compiler Objectcode

Page 15: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-15

IDE —Integrated Development Environment συνδυάζει editor, compiler, linker, debugger,

και άλλα εργαλεία

έχει GUI (graphical user interface)

Compiles + links + τρέχουν με το πάτημα ενός κουμπιού

Μας βοηθά να κάνουμε εύκολα compile ένα πρόγραμμα το οποίο αποτελείται από πολλά source files

Page 16: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-16

Compiler vs. Interpreter Compiler:

Ελέγχει για συντακτικά λάθη

παράγει machine-code instructions

ΔΕΝ χρειάζεται για να τρέξει το executable program

Το executable τρέχει πιο γρήγορα

Interpreter:Ελέγχει για συντακτικά λάθη

Εκτελεί κατάλληλες εντολές καθώς διερμηνεύει ένα program statements

Πρέπει να παραμένει installed ενόσω το πρόγραμμα διερμηνεύεται

το interpreted program είναι πιο αργό

Editor Sourcecode

Interpreter

Page 17: Εισαγωγή

Εισαγωγή στο ΟΟΡ και 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.

Page 18: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-18

Java’s Compiler + Interpreter

Editor

Hello.java

Source code

Compiler

Hello.class

Bytecodes

Interpreter

Hello, World!

Interpreter

Hello, World!

Page 19: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-19

Σε τι βοηθούν τα Bytecodes; Platform-independent.

Φορτώνονται από τον Internet πιο γρήγορα από το source code.

Ο Interpreter είναι πιο γρήγορος και πιο μικρός από ότι θα ήταν στην περίπτωση που θα φόρτωνε Java source.

Ο Source code δεν φανερώνεται στον end users.

Ο Interpreter εκτελεί περισσότερους ελέγχους ασφάλειας που προέρχονται από κακόβουλους κώδικες

Page 20: Εισαγωγή

Εισαγωγή στο ΟΟΡ και 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

Page 21: Εισαγωγή

Εισαγωγή στο ΟΟΡ και 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

Page 22: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-22

Τύποι Προγραμμάτων

Console applications

GUI applications

Applets

Page 23: Εισαγωγή

Εισαγωγή στο ΟΟΡ και 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

Page 24: Εισαγωγή

Εισαγωγή στο ΟΟΡ και 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

Page 25: Εισαγωγή

Εισαγωγή στο ΟΟΡ και 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.

Page 26: Εισαγωγή

Εισαγωγή στο ΟΟΡ και 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)

Page 27: Εισαγωγή

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου 1-27

GUI Applications

Menus

Buttons

Clickable panel

Slider

Page 28: Εισαγωγή

Εισαγωγή στο ΟΟΡ και 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

Page 29: Εισαγωγή

Εισαγωγή στο ΟΟΡ και 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