ΠΠΜ 401: Ανάπτυξη...

Click here to load reader

  • date post

    25-Jul-2020
  • Category

    Documents

  • view

    2
  • download

    0

Embed Size (px)

Transcript of ΠΠΜ 401: Ανάπτυξη...

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 1

    8. Μέθοδοι (Methods)

    Χειμερινό εξάμηνο 2012

    Πέτρος Κωμοδρόμος

    [email protected]

    http://www.eng.ucy.ac.cy/petros

    ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής

    mailto:[email protected] mailto:[email protected]

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 2

    Θέματα

     Μέθοδοι που παρέχονται από τη τάξη Math του Java API

     Χρήση στατικών μεθόδων και δεδομένων (static methods and fields)

     Κλήση μεθόδων και μεταφορά δεδομένων μεταξύ μεθόδων

     Χρήση πακέτων (packages) για ομαδοποίηση κοινών κλάσεων

     Δημιουργία τυχαίων αριθμών (random-number generation)

     Ορατότητα δηλώσεων (visibility of declarations)

     Υπερφόρτωση μεθόδων (method overloading)

     Αναδρομικές μέθοδοι (recursive methods)

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 3

    Τμήματα προγραμμάτων (program modules)

     Μέθοδοι (methods/ functions )

    • Διαχωρισμός συγκεκριμένων έργων/ενεργειών σε αυτόνομες μεθόδους

    o Διαίρει και βασίλευε (divide-and-conquer)

     απλοποίηση του προβλήματος

    o Ευκολότερος προγραμματισμός μίας απλής μεθόδου

    o Καλύτερος έλεγχος για λάθη

    o Αποφυγή επανάληψης κώδικα και επαναχρησιμοποίηση μεθόδων

     Κλάσεις (classes)

     Πακέτα (packages)

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 4

    Java Application Programming Interface (API)

     http://java.sun.com/javase/6/docs/api/index.html

     Είναι επίσης γνωστό σαν Java Class Library

     Περιέχει προκαθορισμένες κλάσεις (classes) και μεθόδους (methods), οι οποίες

    ομαδοποιούνται σε πακέτα (packages) όπως π.χ.:

    • java.lang: βασικές κλάσεις και μέθοδοι, απαραίτητες σε κάθε πρόγραμμα

    • java.math: κλάσεις και μέθοδοι για μαθηματικές πράξεις

    • java.io: κλάσεις και μέθοδοι για είσοδο/έξοδο δεδομένων/αποτελεσμάτων

    • java.awt: κλάσεις για τη δημιουργία γραφικών (graphics) και περιβαλλόντων διασύνδεσης

    (user interfaces)

    • javax.swing: κλάσεις για τη δημιουργία γραφικών και περιβαλλόντων διασύνδεσης

    χρησιμοποιώντας μόνο Java ("lightweight”, all-Java language)

    • javax.sql: κλάσεις και μέθοδοι για πρόσβαση σε δομές δεδομένων (database)

    • java.applet: κλάσεις και μέθοδοι για Java applets

    http://java.sun.com/javase/6/docs/api/index.html

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 5

    Java API Packages: http://java.sun.com/j2se/1.5.0/docs/api/

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 6

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 7

    Στατικές Μέθοδοι (static/class methods)

     Αφορούν τη τάξη (class) και όχι συγκεκριμένο αντικείμενο (object)

     Μπορούν να κληθούν και να χρησιμοποιηθούν χωρίς την ανάγκη ύπαρξης και

    χρήσης κάποιου αντικειμένου της τάξης

     Καλούνται, όπως πιο κάτω:

    ClassName.methodName( arguments )

     Παράδειγμα: Όλες οι μέθοδοι της τάξης Math, η οποία ορίζεται στο πακέτο

    java.lang, είναι στατικές:

    Math.sqrt(40.75 )

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 8

    Στατικές μέθοδοι της τάξης (κλάσης) Math - Math class methods

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 9

    Μεταβλητές σταθερών τιμών και στατικές μεταβλητές

    (constant and static data fields)

     Μεταβλητές σταθερών τιμών (constant data fields)

    • Ορίζονται χρησιμοποιώντας το keyword final

    • Δεν επιτρέπονται αλλαγές μετά την αρχικοποίηση (initialization) τους

     Στατικές μεταβλητές (static data fields)

    • Ορίζονται χρησιμοποιώντας το keyword static

    • Υπάρχει μόνο μία μεταβλητή για όλη τη κλάση

     Μεταβλητές σταθερών τιμών (constant and static data fields)

    • Ορίζονται χρησιμοποιώντας και τα δύο keywords (final και static )

    • π.χ. Math.PI και Math.E

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 10

    Μέθοδος main

     public static void main( String args[] )

    • Δηλώνεται σαν στατική (static) μέθοδος, ώστε να μπορεί να κληθεί χωρίς την

    ανάγκη προηγούμενης δημιουργίας αντίστοιχου αντικειμένου

    • Δηλώνεται σαν public μέθοδος, ώστε να μπορεί να κληθεί από οποιαδήποτε άλλη

    κλάση, μέθοδο, κ.λπ.

     Η JVM καλεί τη μέθοδο main της κλάσης η οποία δίνεται μετά την εντολή

    java κατά την εκτέλεση του προγράμματος χρησιμοποιώντας την εντολή java

    java ClassName argument1 argument2 ….

     Σε κάθε κλάση μπορεί να δηλωθεί μέθοδος main

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 11

    Μέθοδοι με πολλαπλές παραμέτρους - Παράδειγμα

    Prompt the user to enter and

    read three double values

    Call method maximum

    Display maximum value

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 12

    Declare the maximum method

    Compare y and maximumValue

    Compare z and maximumValue

    Return the maximum value

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 13

    Create a MaximumFinder object

    Call the determineMaximum method

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 14

    Κλήση Μεθόδων

     Χρησιμοποιώντας το όνομα μεθόδου που ανήκει στην ίδια τάξη (κλάση)

    • Δεν μπορεί από στατική μέθοδο να κληθεί μη στατική μέθοδος

     Χρησιμοποιώντας μια μεταβλητή που αναφέρεται σε κάποιο αντικείμενο (variable

    containing a reference to an object) ακολουθούμενη από την τελεία (.) και το όνομα

    κάποιας μεθόδου της κλάσης του συγκεκριμένου αντικειμένου.

     Χρησιμοποιώντας το όνομα μιας κλάσης ακολουθουμένης από την τελεία (.) και το

    όνομα κάποιας στατικής μεθόδου της κλάσης

  • ΠΠΜ 500: Προχωρημένη Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 15

    Στοίβα Κλήσης Μεθόδων (Method Call Stack)

     Στοίβα (stack)

    • Last-in, first-out (LIFO) data structures (δομές δεδομένων)

    o Items are pushed (inserted) onto the top

    o Items are popped (removed) from the top

     Στοίβα εκτέλεσης