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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Τύποι δεδομένων και τελεστές,
Advertisements

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Αντικείμενα, Κλάσεις και Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Πολυμορφισμός – Late Binding.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
Μεθοδολογίες Προγραμματισμού ΙΙ Αναδόμηση Λογισμικού - 2 Software Refactoring - Εφαρμογές Παναγιώτης Σφέτσος, PhD
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Εισαγωγή στη JAVΑ (μέρος Α’)
Applets Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Data Types, Variables, and Arithmetic.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
2η ΟΣΣ – Σύγχρονες μέθοδοι προγραμματισμού - Java
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Applets Εκτελούνται από τον appletviewer και από Java enabled web browsers Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη.
Βασικά στοιχεία της Java
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 8: Κατασκευαστές. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές) Ένα μεγάλο παράδειγμα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java.
Εισαγωγή στη C# Μαρίνος Θεμιστοκλέους Ανδρούτσου 150 Γραφείο 206 Τηλ Ώρες Γραφείου: Τετάρτη 5-6 μμ.
ΟΣΣ2 - 4 Δεκεμβρίου 2005 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Εισαγωγή στον Προγ/μό Η/Υ
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κλάσεις και αντικείμενα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό με Python, ΑΠΘ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Εισαγωγή στον Προγραμματισμό με Python Εβδομάδα 1: Βασικά στοιχεία.
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Τύποι δεδομένων και τελεστές,
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

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

Υλικό Βιβλία Εισαγωγή στη 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): ειδική μέθοδος κάθε κλάσης που εκτελείται κάθε φορά που δημιουργείται ένα αντικείμενο της κλάσης

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

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

public static void main(String[] args) { BankAccount bankAccount = new BankAccount( , 10000); bankAccount.addPerson("P455211", "Kameas Achilles", new Permissions(true, true, true)); bankAccount.addPerson("P153251", "Drossos Nicolas", new Permissions(true, false, false)); bankAccount.addPerson("Z113271", "Zaharakis John", new Permissions(false, true, false)); Permissions p = bankAccount.permissionsFor("P153251"); System.out.println("Permissions for person P153251"); p.print(); bankAccount.deposit("P153251", 2000); bankAccount.printStatus(); bankAccount.printPersons(); }

Καθορισμός τύπου μεταβλητής - Type Casting Γενικά μπορούμε να αναθέσουμε αριθμητικές τιμές ενός τύπου σε μεταβλητές ‘μεγαλύτερου’ τύπου, π.χ. μια τιμή int σε μεταβλητή long Για το αντίθετο χρησιμοποιείται type casting, π.χ. float kilograms; double estimate = 45; kilograms = (float) (estimate * 1.2);

Κλάση Math Περιέχεται στο πακέτο java.lang που αυτόματα εισάγεται (imported) σε κάθε πρόγραμμα Παρέχει αριθμητικές συναρτήσεις (μεθόδους)

Παραδείγματα μεθόδων της Math final double PI // η σταθερά π double sqrt(double) double random() long round(double) value max(value, value) –value μπορεί να είναι int, long, float, double

Παράδειγμα χρήσης της Math class RandomInvestigation { RandomInvestigation () { double random1, random2; random1 = Math.random(); random2 = Math.random(); System.out.println("The numbers are: " + random1 + " and " + random2); System.out.println("Max is " + Math.max (random1, random2)); } public static void main (String [] args) { new RandomInvestigation (); }