ΟΣΣ2 - 4 Δεκεμβρίου 2005 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Advertisements

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Αντικείμενα, Κλάσεις και Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
Για τη διεκπεραίωση ενός προβλήματος πρέπει να ακολουθηθεί η εξής διαδικασία:  να γραφεί ο αλγόριθμος να συνταχθεί το πρόγραμμα σε γλώσσα υψηλού επιπέδου.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
Εισαγωγή στη JAVΑ (μέρος Α’)
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
Applets Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Applets Εκτελούνται από τον appletviewer και από Java enabled web browsers Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 8: Κατασκευαστές. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές) Ένα μεγάλο παράδειγμα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java.
Εισαγωγή στη C# Μαρίνος Θεμιστοκλέους Ανδρούτσου 150 Γραφείο 206 Τηλ Ώρες Γραφείου: Τετάρτη 5-6 μμ.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Software Engineering for Web Applications
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Εισαγωγή στον Προγραμματισμό με Python, ΑΠΘ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Εισαγωγή στον Προγραμματισμό με Python Εβδομάδα 1: Βασικά στοιχεία.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

ΟΣΣ2 - 4 Δεκεμβρίου 2005 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Υλικό Βιβλία Εισαγωγή στη Java (Λιακέας) Thinking Like a Computer Scientist Thinking in Java … Άλλο υλικό στο CD (WebCasts, κλπ) Web Site

Περιεχόμενα Γενικά περί Java Αντ/φής Πρ/σμός Δομή προγράμματος Java Δομή κλάσης, δημιουργός, μέθοδος, πεδία Αντικείμενα, δημιουργία αντικειμένων Παραδείγματα

Χαρακτηριστικά της Java Εκτελέσιμος κώδικας (bytecode) που εκτελείται από την ειδική ‘μηχανή’ JVM (Java Virtual Machine): –ανεξαρτησία από το λειτουργικό σύστημα –ανεξαρτησία από το υλικό (hardware) Αξιόπιστη και εύχρηστη Αντικειμενοστρεφής και δομημένη Μεγάλη ποικιλία από έτοιμες βιβλιοθήκες κώδικα …

Τύποι προγραμμάτων Java Εφαρμογές –Προγράμματα standalone –Απαιτείται μια JVM (JDK) Applets –Εκτελούνται από το Internet –Απαιτείται κάποιος Java enabled WWW browser (περιέχει μια JVM)

Αντικειμενοστρεφής Προγραμματισμός Ιδιαίτερα διαδεδομένος σήμερα Επαναχρησιμοποίηση κώδικα (Code Re-use) Τα αντικείμενα (Objects) είναι στιγμιότυπα κατηγοριών (classes) και απεικονίζουν τον πραγματικό κόσμο Βιβλιοθήκες κλάσεων κάνουν τον προγραμματισμό να μοιάζει με συναρμολόγηση κώδικα

Γιατί Αντ/φής Πρ/σμός? Αδόμητος προγραμματισμός Main Program Data

Γιατί Αντ/φής Πρ/σμός? Αδόμητος προγραμματισμός Διαδικασιακός προγραμματισμός Main Program Data Procedure 1 Procedure 3Procedure 2

Γιατί Αντ/φής Πρ/σμός? Αδόμητος προγραμματισμός Δομημένος προγραμματισμός Module 1 Main Program Data Procedure 1 Procedure 3 Procedure 2 Module 1

Γιατί Αντ/φής Πρ/σμός? Αδόμητος προγραμματισμός Διαδικασιακός προγραμματισμός Δομημένος προγραμματισμός Αντ/φής πρ/σμός Object Data Object Data Object Data Object Data

Δομή ενός προγράμματος Java Πρόγραμμα: μια ή περισσότερες κλάσεις Κλάση: γενική κατηγορία που περιγράφει χαρακτηριστικά και μεθόδους που αφορούν μια οντότητα (αντικείμενο) του πραγματικού κόσμου Αντικείμενο: ένα στιγμιότυπο μιας κλάσης

Απλό πρόγραμμα JAVA class Welcome { /* Welcome program by J M Bishop Dec 1996 * Java 2 April 2000 * Illustrates a simple program displaying a message. */ Welcome () { System.out.println("Welcome to Java Gently!"); } public static void main (String [ ] args) { new Welcome(); }

Δομή μιας κλάσης Μεταβλητή: περιέχει την τιμή ενός χαρακτηριστικού ενός αντικειμένου, επί της οποίας μπορεί να γίνει κάποιου είδους επεξεργασία από μια μέθοδο -Παράδειγμα μεταβλητής: price, mugs Μέθοδος: ομάδα εντολών που συνεργάζονται για να εκτελέσουν μια λειτουργία του αντικειμένου -Παράδειγμα μεθόδου: main, write, paint

Δημιουργός Δημιουργός (constructor): ειδική μέθοδος κάθε κλάσης που εκτελείται κάθε φορά που δημιουργείται ένα αντικείμενο της κλάσης

Εφαρμογή: Τραπεζικοί Λογαριασμοί Να δημιουργούνται πρόσωπα Να δημιουργούνται λογαριασμοί Να συνδέονται λογαριασμοί με πρόσωπα Να γίνονται αναλήψεις και καταθέσεις χρημάτων

Υλοποίηση Εφαρμογής Διαχείρισης Τραπεζικών Λογαριασμών (BankAccount) Η εφαρμογή δημιουργεί έναν τραπεζικό λογαριασμό (με έναν κωδικό και ένα αρχικό ποσό) στον οποίο προσθέτει τα πρόσωπα που θα έχουν πρόσβαση σε αυτόν και τις ενέργειες που θα μπορούν να κάνουν επ’αυτού (ανάληψη, κατάθεση, κλείσιμο) Ο κώδικας περιέχεται στο αρχείο BankAccount.doc (ιστοσελίδα)

Οι κλάσεις της εφαρμογής Person (μέθοδοι Person(), getID(), getName(), getPermissions()) Permissions (μέθοδοι Permissions(), canDeposit(), canWithdraw(), canClose(), print()) BankAccount, (μέθοδοι BankAccount(), addPerson(), deposit(), withdraw(), permissionsFor(), findPerson(), printStatus(), printPersons() Main()

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); }

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) public void withdraw(String id, long amount) public void close(String id) public Permissions permissionsFor(String id) public Person findPerson(String id) public void printStatus() public void printPersons() }

Έρωτήματα (1) 1.Να σχεδιάσετε ένα διάγραμμα κλάσεων για την εφαρμογή (κλάσεις, πεδία, μέθοδοι) 2.Αφού κατανοήσετε τον τρόπο λειτουργίας του κώδικα να υλοποιήσετε Τη μέθοδο BankAccount.addPerson(String id, String name, Permissions per) η οποία προσθέτει σε ένα λογαριασμό ένα πρόσωπο με τα στοιχεία id, name, per. Να προσθέσετε έναν έλεγχο για το μέγιστο επιτρεπόμενο αριθμό προσώπων πάντα στη μέθοδο BankAccount.addPerson() Τη μέθοδο BankAccount.withdraw() σύμφωνα με τη BankAccount.deposit()

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

public static void main(String[] args) { System.out.println("Permissions for person P153251"); p.print(); bankAccount.deposit("P153251", 2000); bankAccount.printStatus(); bankAccount.printPersons(); }