2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008



Σχετικά έγγραφα
Αντικειμενοστρεφής Προγραμματισμός

3 Αλληλεπίδραση Αντικειμένων

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Κλάσεις και Αντικείμενα

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Κλάσεις και Αντικείµενα

Αντικειμενοστρεφής Προγραμματισμός

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Προγραμματισμός Ι (ΗΥ120)

Αντικειμενοστρεφής Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Ανάπτυξη και Σχεδίαση Λογισμικού

Κλάσεις και αντικείμενα #include <iostream.h<

Δομημένος Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Η βασική συνάρτηση προγράμματος main()

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Αντικειμενοστραφής Προγραμματισμός

Λογισµικό (Software SW) Γλώσσες

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Βασικά Στοιχεία της Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

Προγράμματα με δομή Κληρονομικότητας

Ηβασικήσυνάρτηση προγράμματος main()

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

4 Συλλογές Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

Οι εντολές ελέγχου της ροής ενός προγράμματος.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Αντικειµενοστραφής Προγραµµατισµός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Οντοκεντρικός Προγραμματισμός

2.1 Αντικειµενοστρεφής προγραµµατισµός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #3

Βασικά Στοιχεία της Java

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Ανάπτυξη και Σχεδίαση Λογισμικού

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Τύποι δεδομένων, τελεστές, μεταβλητές

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Προγραμματισμός ΙI (Θ)

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 13/12/07

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

Η γλώσσα προγραμματισμού Strange

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Αντικειµενοστρεφής Προγραµµατισµός

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Mεταβλητές (variables) και Σταθερές (constants)

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Αντικειμενοστρεφής Προγραμματισμός

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Pascal. 15 Νοεμβρίου 2011

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Ενδεικτική περιγραφή μαθήματος

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

Αντικειμενοστρεφής Προγραμματισμός

Transcript:

Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει μόνον ένα είδος εισιτηρίου. Διατηρεί το σύνολο των χρημάτων που έχει εισπράξει. Το πρόγραμμα για να είναι απλό παραλείπει πολλούς ελέγχους. Εμπιστεύεται τον χρήστη ότι θα εισάγει το σωστό ποσό για το εισιτήριο. Δεν δίνει ρέστα. 36 Ο Σκελετός της Κλάσης για τη Μηχανή Δομή μιας Κλάσης public class TicketMachine // η τιμή του εισιτηρίου private int price; // τα χρήματα που έριξε ο χρήστης στον κερματοδέκτη private int balance; // το συνολικό ποσό που έχει μπει στη μηχανή private int total; Οορισμόςμιαςκλάσηςπεριλαμβάνειμια επικεφαλίδα και το σώμα της. Στην επικεφαλίδα είναι το όνομα της κλάσης. Το σώμα της κλάσης περικλείεται σε. // κατασκευάζει μηχανή για εισιτήρια με συγκεκριμένη τιμή public TicketMachine(int ticketcost)... // επιστρέφει το ποσό που έχει δοθεί για το εισιτήριο public int getbalance()... // εισάγει χρήματα στον κερματοδέκτη της μηχανής public void insertmoney(int amount)... public class TicketMachine εδώ μπαίνει το σώμα της κλάσης // εκδίδει ένα εισιτήριο public void printticket()... Project: naive-ticket-machine: 2.1.1 τα πεδία και οι μέθοδοι της μηχανής εισιτηρίων 37 Κεφαλαία / πεζά γράμματα έχει σημασία στη Java. 38 Δομή μιας Κλάσης Ορισμός Πεδίων Το σώμα της κλάσης περιέχει: Πεδία που αποθηκεύουν τα δεδομένα για κάθε αντικείμενο Κατασκευαστές που είναι μέθοδοι που δημιουργούν νόμιμα αντικείμενα Μεθόδους που υλοποιούν τη συμπεριφορά των αντικειμένων. public class TicketMachine πεδία κατασκευαστές μέθοδοι 39 Ονομάζονται και μεταβλητές στιγμιότυπου (instance variables). Συνήθως τα βάζουμε πρώτα μέσα στην κλάση. Δηλώνουμε: εμβέλεια τύπο δεδομένων όνομα Χρησιμοποιούμε Inspect για να δούμε τις τιμές τους (BlueJ). public class TicketMachine private int price; private int balance; private int total; κατασκευαστές μέθοδοι 40 http://www.syros.aegean.gr/users/gaviotis/tmp2 1

Σχόλια Κατασκευαστές Κατανοητός πηγαίος κώδικας Ο μεταγλωττιστής τα αγνοεί. Σε μια γραμμή, ξεκινούν με // Πολλές γραμμές, περικλείονται με /*... Πηγαίος κώδικας naive-ticket-machine /** απλή μηχανή έκδοσης εισιτηρίων * @author Χ. Πρωτάρης * @version 2005-02-21 public class TicketMachine // η τιμή του εισιτηρίου private int price; // τα χρήματα που έριξε ο χρήστης private int balance; // το συνολικό ποσό στη μηχανή private int total; κατασκευαστές μέθοδοι 41 Οι κατασκευαστές θέτουν ένα νέο αντικείμενο σε μια νόμιμη αρχική κατάσταση. Έχουντοίδιοόνομαμετηνκλάση. Συχνά τροφοδοτούνται με τιμές που αναθέτουν στα πεδία του στιγμιότυπου που δημιουργείται. /** * Κατασκευάζει μηχανή εισιτηρίων δοθέντος κόστους public TicketMachine(int ticketcost) price = ticketcost; balance = 0; total = 0; 42 Πέρασμα Δεδομένων Μέσω Παραμέτρων Επικοινωνία Μεθόδων Οι παράμετροι είναι μονόδρομος μηχανισμός αποστολής δεδομένων από το σημείο του προγράμματος όπου καλείται μια μέθοδος προς τον κώδικα που την υλοποιεί. Με τις τιμές που στέλνονται, διαμορφώνεται η συμπεριφορά της μεθόδου. Η μέθοδος μπορεί να επιστρέψει (σε αυτόν που την κάλεσε) μόνο μια τιμή. Ο τύπος δεδομένων της επιστρεφόμενης τιμής εμφανίζεται στην υπογραφή της μεθόδου. 43 44 Πέρασμα Παραμέτρων Εμβέλεια Τα ονόματα των παραμέτρων μέσα στον ορισμό της μεθόδου ονομάζονται τυπικές παράμετροι (formal parameters). Οι τιμές των παραμέτρων που παρέχονται κατά την κλήση των μεθόδων ονομάζονται πραγματικές παράμετροι (actual parameters). /** * Κατασκευάζει μηχανή εισιτηρίων δοθ public TicketMachine(int ticketcost) εντολές Εμβέλεια (scope) ενός ονόματος είναι το τμήμα του κώδικα όπου αυτό το όνομα είναι προσπελάσιμο. Οι μεταβλητές στιγμιότυπου έχουν εμβέλεια ολόκληρη την κλάση. Οι τυπικές παράμετροι έχουν εμβέλεια το σώμα της μεθόδου όπου δηλώνονται. Υπόδειξη: βρείτε τις που περικλείουν ένα όνομα - αυτή είναι η εμβέλειά του. 45 46 http://www.syros.aegean.gr/users/gaviotis/tmp2 2

Διάρκεια Ζωής Ανάθεση Διάρκεια ζωής (lifetime) ενός ονόματος είναι το χρονικό διάστημα που υφίσταται αυτό το όνομα. Παραδείγματα Ένα αντικείμενο ξεκινά να ζει όταν καλούμε κάποια μέθοδο με new... απότομενούτηςκλάσηςτουκαι πεθαίνει όταν κάνουμε Remove. Ένα πεδίο έχει ίδια διάρκεια ζωής με το αντικείμενο στο οποίο ανήκει. Ακόμη και αν ένα όνομα ζει, δεν μπορούμε να το προσπελάσουμε αν βρισκόμαστε έξω από την εμβέλειά του. 47 Μια τιμή αποθηκεύεται σε ένα πεδίο (ή άλλη μεταβλητή) μέσω της εντολής ανάθεσης. Σύνταξη μεταβλητή = παράσταση; Παραδείγματα price = ticketcost; tokos = epitokio * kefalaio; Οι δύο πλευρές της ανάθεσης πρέπει να έχουν τον ίδιο τύπο δεδομένων, πχ int, String, Μια μεταβλητή αποθηκεύει μια τιμή, έτσι κάθε προηγούμενητιμήχάνεται. 48 Ορισμός Μεθόδων Μέθοδοι Ανάγνωσης Οι μέθοδοι υλοποιούν τη συμπεριφορά των αντικειμένων, δηλαδή τι λειτουργίες μπορούν να εκτελεστούν πάνω τους. Κάθε μέθοδος αποτελείται από μια επικεφαλίδα που ονομάζεται υπογραφή και ένα σώμα. /** * Επιστρέφει την τιμή του εισιτηρίου public int getprice() return price; 49 Οι μέθοδοι ανάγνωσης (accessor methods) επιστρέφουν πληροφορία για την κατάσταση του αντικειμένου. επιστρεφόμενος τύπος προσδιοριστής εμβέλειας όνομα μεθόδου λίστα public int getprice() παραμέτρων (κενή) return price; εντολή επιστροφής αρχή και τέλος του σώματος (μπλοκ εντολών) 50 Μέθοδοι Εγγραφής Μέθοδος Εκτύπωσης Οι μέθοδοι εγγραφής (mutator methods) αλλάζουν την κατάσταση του αντικειμένου, τροποποιώντας την τιμή κάποιων πεδίων. Συνήθως περιέχουν εντολές ανάθεσης. Συνήθως παραλαμβάνουν τιμές από τον καλούντα. προσδιοριστής εμβέλειας επιστρεφόμενος τύπος (void) όνομα μεθόδου τυπική παράμετρος public void insertmoney(int amount) balance = balance + amount; public void printticket() // εκτύπωση εισιτηρίου System.out.println("##################"); System.out.println("# " + price + " λεπτά"); System.out.println("##################"); // συσσώρευση στο ταμείο total = total + balance; // καθαρισμός του κερματοδέκτη balance = 0; το πεδίο που τροποποιείται εντολή ανάθεσης Πρόσθεση αριθμών 51 52 Συνένωση συμβολοσειρών http://www.syros.aegean.gr/users/gaviotis/tmp2 3

Παρατηρήσεις για τις Μεθόδους Ανακεφαλαίωση της Μηχανής Εισιτηρίων Συνήθως το όνομά τους περιγράφει μια ενέργεια. Πχ κάποιο ρήμα, όπως insertmoney, computearea, searchpeople Κάθε μέθοδος έχει: 1. Όνομα 2. Μηδέν, μία ή περισσότερες παραμέτρους 3. Τύπο επιστρεφόμενου αποτελέσματος 4. Εμβέλεια (=από πού μπορεί να κληθεί) 5. Σώμα, που περιέχει τις εντολές της Περιγραφή του προβλήματος Σχεδίαση της δομής της κλάσης Στατική δομή Πεδία Δυναμική συμπεριφορά Μέθοδοι (& κατασκευαστής) Σύνταξη κλάσης Επικεφαλίδα Σώμα Ορισμός πεδίων Τύπος δεδομένων Όνομα Κατασκευαστής Παράμετροι εισόδου Αρχικοποίηση πεδίων Μέθοδοι Ανάγνωσης public τυπος getπεδίο() Εγγραφής public void putπεδίο(τυπος τιμη) 53 54 Βελτιώσεις της Μηχανής Εισιτηρίων Κάνοντας Επιλογές 1. Κατά την κατασκευή να ελέγχει ότι η τιμή του εισιτηρίου είναι λογική. 2. Κατά την εισαγωγή χρημάτων να ελέγχει ότι το ποσό είναι λογικό. 3. Κατά την έκδοση του εισιτηρίου: Να μην εκδίδει εισιτήριο, αν το αντίτιμο δεν επαρκεί. Αν μετά περισσεύουν χρήματα, να επιστρέφει ρέστα. Χρειάζεται να βελτιώσουμε τη συμπεριφορά προσθέτοντας ΕΛΕΓΧΟΥΣ. Η εντολή επιλογής (conditional statement) επιτρέπει την εκτέλεση μιας από δύο ενέργειες ανάλογα με το αποτέλεσμα ενός ελέγχου. public void insertmoney(int amount) if (amount > 0) balance = balance + amount; else System.out.println("Απαιτείται θετικό ποσό: " + amount); 55 56 Σύνταξη Εντολής Επιλογής δεσμευμένη λέξη if δεσμευμένη λέξη else λογική συνθήκη που ελέγχεται αν είναι αληθής ή ψευδής if ( παράσταση ) εντολές-α else εντολές-β ενέργειες που εκτελούνται όταν ισχύει η παράσταση ενέργειες που εκτελούνται όταν ισχύει η παράσταση Το τμήμα else... μπορεί να παραληφθεί 57 Τελεστές Λογικών Παραστάσεων == ίσο!= άνισο > μεγαλύτερο από < μικρότερο από <= μικρότερο ή ίσο >= μεγαλύτερο ή ίσο Διακρίνετε την ισότητα από την ανάθεση! x = y x == y Εντολή Παράσταση Αποθηκεύει την τιμή του y στην μεταβλητή x Eίναι η τιμή του x ίση με την τιμή στο y; 58 http://www.syros.aegean.gr/users/gaviotis/tmp2 4

Βελτιωμένη Έκδοση Εισιτηρίων public void printticket() if (balance >= price) // προσομοίωσε την έκδση του εισιτηρίου System.out.println("##################"); System.out.println("# ΕΙΣΙΤΗΡΙΟ #"); System.out.println("# " + price + " λεπτά."); // ενημέρωσε το συνολικό ποσό. total = total + price; // μείωσε το ποσό στον κερματοδέκτη. balance = balance - price; //end if else Συνένωση συμβολοσειρών System.out.println(" Βάλε ακόμη " + (price - balance) + " λεπτά."); // end else Project: better-ticket-machine: επιθεώρηση κώδικα 59 Τοπικές Μεταβλητές Τα πεδία είναι ένα είδος μεταβλητής. Αποθηκεύουν τιμές κατά τη διάρκεια ζωής ενός αντικειμένου. Είναι προσπελάσιμες από το εσωτερικό της κλάσης. Οι μέθοδοι μπορούν να έχουν πιο βραχύβιες μεταβλητές. «Ζουν» μόνο όσο διαρκεί η εκτέλεση της μεθόδου. Διατηρούν προσωρινά δεδομένα. Είναι προσπελάσιμες μόνο από το εσωτερικό της μεθόδου. Ονομάζονται τοπικές μεταβλητές (local variables). Υποχρεωτικά δηλώνονται πριν να χρησιμοποιηθούν. 60 Δήλωση Τοπικών Μεταβλητών Είδη Μεταβλητών Οι τοπικές μεταβλητές πρέπει να δηλώνονται πριν να χρησιμοποιηθούν. Η δήλωση μέσα στο σώμα που θα χρησιμοποιηθούν. Χωρίς προσδιοριστή εμβέλειας Εντολή δήλωσης Τοπική μεταβλητή public int refundbalance() int amounttorefund ; amounttorefund = balance; balance = 0; return amounttorefund; 61 Πεδία ή μεταβλητές στιγμιότυπου Δηλώνονται στο σώμα κλάσης Προσδιορίζουν την κατάσταση του αντικειμένου Εμβέλεια: εσωτερικό κλάσης Διάρκεια ζωής: όσο ζει το αντικείμενο (Τυπικές) παράμετροι Δηλώνονται στην επικεφαλίδα μεθόδων Παίρνουν τιμή από τις πραγματικές παραμέτρους κατά την κλήση της μεθόδου. Αυτό ονομάζεται σύνδεση (binding). Εμβέλεια: εσωτερικό μεθόδου Διάρκεια ζωής: όσο εκτελείται η μέθοδος Τοπικές μεταβλητές Δηλώνονται στο σώμα μεθόδου Εμβέλεια: εσωτερικό του μπλοκ που δηλώνονται Διάρκεια ζωής: από τη δήλωση μέχρι το τέλος της εκτέλεσης του μπλοκ 62 Άλλες Παρατηρήσεις Επεκτάσεις της Μηχανής Έκδοσης Εισιτηρίων Οι κατασκευαστές είναι μέθοδοι Ονομάζονται υποχρεωτικά όπως και η κλάση. Δεν έχουν επιστρεφόμενο τύπο. Κάθε μεταβλητή έχει 1. είδος (τοπική, παράμετρος, στιγμιότυπου) 2. τύπο δεδομένων 3. εμβέλεια 4. διάρκεια ζωής 5. τιμή Έλεγχος του ποσού του εισιτηρίου Έλεγχος του ποσού που εισάγεται Έλεγχος επάρκειας ποσού για έκδοση και ρέστα Προσθήκη μεθόδου για επιστροφή χρημάτων (άδειασμα κερματοδέκτη) Προσθήκη μεθόδου για άδειασμα ταμείου Έκδοση εισιτηρίων διαφόρων τιμών Να μετράει πόσα εισιτήρια εκδόθηκαν συνολικά. 63 64 http://www.syros.aegean.gr/users/gaviotis/tmp2 5

Όροι Ενότητας 2 Τεκμήρια Ενότητας 2 Μεταβλητή στιγμιότυπου Παράμετρος Τοπική μεταβλητή Τυπική παράμετρος Πραγματική παράμετρος Εμβέλεια Διάρκεια ζωής Τελεστής Μεταβλητή Παράσταση Κατασκευαστής Μέθοδος Μέθοδοι ανάγνωσης Μέθοδοι εγγραφής Δήλωση μεταβλητής Εντολή ανάθεσης Εντολή επιλογής Εντολή επιστροφής Σχόλιο Μπλοκ εντολών Επικεφαλίδα κλάσης Επικεφαλίδα μεθόδου (υπογραφή) class // /* = return + - * / System.out.println ==!= < > <= >= if else 65 66 http://www.syros.aegean.gr/users/gaviotis/tmp2 6