Περιγραφή συστήματος «BankAccount»

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

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

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

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

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Copy Constructor Deep and Shallow Copies

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης:

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

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

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

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

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

Από τη UML στον Κώδικα. Μέρος Α

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

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

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

Δομές ελέγχου ροής προγράμματος

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

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

Διάγραμμα Κλάσεων. Class Diagram

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

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

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΑΛΥΣΗΣ UML ΜΕ JAVA. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι

Η λέξη κλειδί this. Γαβαλάς Δαμιανός

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 7 : ΣΥΝΘΕΤΕΣ ΚΛΑΣΕΙΣ ΚΑΙ ΜΕΘΟΔΟΙ

Για την υλοποίηση του προγράμματος χρειάζονται 3 βασικές κλάσεις.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

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

Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματισμός Υπολογιστών με C++

Εισαγωγή στον Προγραμματισμό

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας

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

ΕΠΛ131 Αρχές Προγραμματισμού

Προγραμματισμός Υπολογιστών με C++

ΕΠΛ Φροντιστήριο 3

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Χρήση Δομών String processing Στατικές μέθοδοι και μεταβλητές

public class ArrayStack implements Stack {

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

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.

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

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

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

ΕΡΓΑΣΙΑ 4 - Αντικειμενοστραφής Υλοποίηση του Συστήματος Κατανομής Θέσεων σε Προγράμματα Σπουδών

Transcript:

Περιγραφή συστήματος «BankAccount» Οι κλάσεις Το σύστημα Τραπεζικών Λογαριασμών «BankAccount» αποτελείται από τρεις κλάσεις: BankAccount (Τραπεζικός Λογαριασμός) Person (Άτομο ή δικαιούχος) Permissions ( ικαιώματα επί Λογαριασμού) Ακόμη, απαιτείται µία κλάση, την ονοµάζουμε συνήθως Main, η οποία περιέχει την μέθοδο main(), µε την κλήση της οποίας αρχίζει κάθε φορά η εκτέλεση του συστήματος. Οι συσχετίσεις Η λογική του συστήματος, µέσω της οποίας ορίζονται και οι συσχετίσεις μεταξύ των κλάσεων, είναι ότι µια τράπεζα, μετά από αίτηση ατόμου ή ατόμων, ανοίγει κάποιον λογαριασμό. Ένας λογαριασμός (BankAccount), μπορεί επομένως να ανήκει σε ένα Ατομο ή σε περισσότερα τους ενός άτομα. Η σχέση μεταξύ των δύο κλάσεων επομένως είναι του είδους συναρµολόγηση (aggregation) µε πολλαπλότητα «Μ:Ν». Στο παράδειγμά µας ωστόσο, εξετάζουμε την σχέση μεταξύ των δύο κλάσεων, για λόγους απλούστευσης, ως «1:Ν». Ένας λογαριασμός δηλαδή μπορεί να ανήκει σε 1 ή Ν άτομα. Ο λόγος που ορίζουμε τη σχέση της συναρμολόγησης είναι ότι τα αντικείμενα των δύο αυτών κλάσεων μπορούν να συνυπάρχουν σε ομάδες αλλά και μεμονωμένα. Η τράπεζα έχει τη δυνατότητα να ορίζει διαφορετικά δικαιώματα σε κάθε άτομοδικαιούχο ενός λογαριασμού. Για την υλοποίηση της δυνατότητας αυτής ορίζεται µία ξεχωριστή κλάση, η «Permissions», η οποία όμως πρέπει να ανήκει αποκλειστικά σε κάθε δικαιούχο. Υπ αυτή την έννοια, η σχέση της κλάσης Person µε αυτής της Permissions θα πρέπει να είναι ισχυρή, δηλαδή σύνθεση (composition). Σε περίπτωση δηλαδή που για κάποιο λόγο διαγραφεί από το σύστημα ένα άτομο να διαγράφονται αυτομάτως και τα δικαιώματά του. Ερωτήματα Αφού κατανοήσετε τον τρόπο λειτουργίας του κώδικα πηγής (source code) που σας παρέχεται να υλοποιήσετε: Τη μέθοδο BankAccount.addPerson(String id, String name, Permissions per) η οποία προσθέτει σ ένα λογαριασμό ένα πρόσωπο με τα στοιχεία id, name, per. Να προσθέσετε έναν έλεγχο για το μέγιστο επιτρεπόμενο αριθμό προσώπων πάντα στη μέθοδο BankAccount.addPerson() Τη μέθοδο BankAccount.withdraw() σύμφωνα με τη BankAccount.deposit() 1

Στη μέθοδο main() θα πρέπει: να προσθέσετε μία εντολή η οποία θα δημιουργεί ένα λογαριασμό μετά τη δημιουργία του λογαριασμού να προσθέσετε εντολές που να προσθέτουν τρία πρόσωπα δικαιούχους του λογαριασμού με δυνατότητα για διαφορετικές ενέργειες να προσθέσετε μία πράξη κατάθεσης κάποιου ποσού στο λογαριασμό που δημιουργήθηκε 2

Source code public class Person { String id; String name; Permissions per; public Person(String id, String name, Permissions per) { this.id = id; this.name = name; this.per = per; public String getid(){ return id; public String getname(){ return name; public Permissions getpermissions(){ return per; public class Permissions { boolean candeposit, canwithdraw, canclose; public Permissions(boolean candeposit, boolean canwithdraw, boolean canclose) { this.candeposit = candeposit; this.canwithdraw = canwithdraw; this.canclose = canclose; public boolean candeposit(){ return candeposit; public boolean canwithdraw(){ return canwithdraw; public boolean canclose(){ return canclose; public void print(){ System.out.println("Can Deposit = "+candeposit+", Can Withdraw = "+canwithdraw+", Can Close = "+canclose); 3

public class BankAccount { long accountnumber; long balance; Person[] persons; final int MAX = 10; int currentemptypos = 0; String lastaction = ""; public BankAccount(long accountnumber, long initialamount) { this.accountnumber = accountnumber; this.balance = initialamount; persons = new Person[MAX]; public void addperson(string id, String name, Permissions per){ /* Να συμπληρωθεί το σώμα της μεθόδου */ public void deposit(string id, long amount){ if (p == null) have the permissions to deposit!"); if (p.getpermissions().candeposit){ balance = balance + amount; lastaction = "DEPOSIT"; else{ have the permissions to deposit!"); /* Να συμπληρωθούν τα ορίσματα και το σώμα της μεθόδου */ public void withdraw(){ public void close(string id){ if (p == null) have the permissions to close the account!"); if (p.getpermissions().canclose){ lastaction = "CLOSE"; balance = 0; else{ have the permissions to close the account!"); 4

public Permissions permissionsfor(string id){ if (p!= null) return p.per; System.out.println("No person with id: "+id+" exist!!"); return null; public Person findperson(string id){ for (int i=0; i < persons.length; i++) if (persons[i].getid().equals(id)) return persons[i]; return null; public void printstatus(){ System.out.println("Balance: "+balance); System.out.println("Last Action: "+lastaction); public void printpersons(){ System.out.println("Persons"); for (int i=0; i < persons.length; i++){ if (persons[i]!= null) System.out.println("ID: "+persons[i].id +", NAME: "+persons[i].name); public static void main(string[] args) { /* Να προσθέσετε μία εντολή που να δημιουργεί ένα λογαριασμό με έναν κωδικό και αρχικό ποσό της επιλογής σας*/ /* Να βάλετε εντολές που να προσθέτουν τρία άτομα στο λογαριασμό που δημιουργήθηκε */ // Print the permissions for these persons Permissions p = bankaccount.permissionsfor("p153251"); System.out.println("Permissions for person P153251"); p.print(); /* Να κάνετε εδώ μία πράξη κατάθεσης κάποιου ποσού στο λογαριασμό που δημιουργήθηκε */ // Print the status and persons. bankaccount.printstatus(); bankaccount.printpersons(); 5