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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας "κληρονομώντας" όλες τις ιδιότητες και μεθόδους μιας υπάρχουσας κλάσης. Με τον τρόπο αυτό μπορούμε να δημιουργούμε "ειδικότερες" κατηγορίες αντικειμένων προσθέτοντας επιπλέον χαρακτηριστικά ή λειτουργίες. Έστω για παράδειγμα η κλάση Employee που αναφέρεται σε έναν υπάλληλο επιχείρησης, με μοναδικές ιδιότητες (χάριν απλότητας) το όνομα και το μηνιαίο μισθό του υπαλλήλου, και μοναδική μέθοδο (πλην του κατασκευαστή) την printstatement() που εκτυπώνει το όνομα και το μηνιαίο μισθό: public class Employee { private String name; private double salary; public Employee(String text, double amount) { name = text; salary = amount; public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary); Αν θεωρήσουμε ότι το σύστημα πρέπει να διαχειρίζεται και μια ειδικότερη κατηγορία υπαλλήλου (π.χ. Διοικητικό Υπάλληλο) ο οποίος πέραν του ονόματος και του μισθού έχει επιπρόσθετα ως ιδιότητες τις ώρες υπερωριακής απασχόλησης ανά μήνα καθώς και την αμοιβή ανά ώρα υπερωρίας, μια λύση θα ήταν να "αντιγράψουμε" την κλάση Employee σε μια νέα κλάση και να προσθέσουμε τα επιπλέον χαρακτηριστικά. Ωστόσο, λαμβάνοντας υπόψη ότι στην ανάπτυξη λογισμικού αποφεύγουμε τη δημιουργία "κλώνων" (τμημάτων κώδικα που επαναλαμβάνονται) η ενδεικνυόμενη λύση είναι η χρήση κληρονομικότητας, δηλαδή η δημιουργία μιας νέας κλάσης AdministrativeEmployee που κληρονομεί την υπάρχουσα: public class AdministrativeEmployee extends Employee{ private int overtimehours; private double overtimewage; Η νέα κλάση "απορροφά" από την υπάρχουσα όλες τις ιδιότητες και τη συμπεριφορά της και μπορεί να δηλώσει επιπλέον ιδιότητες ή/και μεθόδους. Σε ένα διάγραμμα κλάσεων της UML ο συμβολισμός της κληρονομικότητας πραγματοποιείται με τη χρήση μιας προσανατολισμένης ακμής (με κλειστό τρίγωνο στο άκρο της κλάσης από την οποία κληρονομούμε) ως εξής:

2 Αλέξανδρος Χατζηγεωργίου, 2012 Employee - name - salary + printstatement() AdministrativeEmployee - overtimehours - overtimewage Η κλάση Employee από την οποία κληρονομεί η AdministrativeEmployee ονομάζεται υπερκλάση (και συνήθως απεικονίζεται ψηλότερα) ενώ η κλάση που κληρονομεί ιδιότητες και λειτουργίες ονομάζεται υποκλάση (σε άλλες γλώσσες χρησιμοποιούνται οι όροι "βασική κλάση/παράγωγη κλάση" ή και "γονική κλάση/κλάση απόγονος". Στη γλώσσα Java δεν επιτρέπεται η πολλαπλή κληρονομικότητα (δηλαδή μια κλάση δεν μπορεί να έχει περισσότερες από μία υπερκλάσεις), ενώ μπορεί να υπάρχει κληρονομικότητα και σε βάθος μεγαλύτερο του 1. Δηλαδή μια κλάση μπορεί να κληρονομεί μια κλάση, η οποία κληρονομεί από κάποια άλλη, κ.ο.κ. Ωστόσο, για λόγους συντηρησιμότητας, δεν συνιστάται η χρήση ιεραρχιών κληρονομικότητας μεγάλου βάθους. Σημειώνεται ότι στην Java οι κατασκευαστές δεν κληρονομούνται. Κατά συνέπεια, αν θέλουμε να δημιουργούνται αντικείμενα της κλάσης AdministrativeEmployee παρέχοντας όνομα, μισθό, ώρες υπερωρίας και υπερωριακή αμοιβή, θα πρέπει να εφοδιάσουμε την υποκλάση με κατάλληλο κατασκευαστή. public AdministrativeEmployee(String text, double amount, int hours, double wage) και εντός του σώματος του κατασκευαστή μπορούμε να αναθέσουμε αρχικές τιμές στις αντίστοιχες ιδιότητες: public AdministrativeEmployee(String text, double amount, int hours, double wage) { name = text; salary = amount; overtimehours = hours; overtimewage = wage; ωστόσο, μια ιδιότητα που έχει δηλωθεί με ιδιωτική ορατότητα (private), αν και κληρονομείται από την υποκλάση, δεν επιτρέπεται η πρόσβαση (ανάγνωση ή αλλαγή τιμής). Για να επιτραπεί η πρόσβαση σε ιδιότητες στις υποκλάσεις το προσδιοριστικό ορατότητας θα πρέπει να μεταβληθεί σε protected

3 (προστατευμένη) που υποδηλώνει ότι μια ιδιότητα δεν είναι προσπελάσιμη από αντικείμενα άλλων κλάσεων, επιτρέπεται όμως η πρόσβαση από αντικείμενα των υποκλάσεων. Μια εναλλακτική ιδιότητα θα ήταν η προσπέλαση των ιδιοτήτων της υπερκλάσης μέσω κατάλληλων δημόσια διαθέσιμων μεθόδων (get() και set()) που θα μπορούσε να περιλαμβάνει για το σκοπό αυτό η υπερκλάση. Μια τρίτη δυνατότητα είναι η κλήση του κατασκευαστή της υπερκλάσης ώστε η ανάθεση των τιμών των δύο πρώτων παραμέτρων στις ιδιότητας name και salary να πραγματοποιηθεί από τον κώδικα του κατασκευαστή της υπερκλάσης. Για την κλήση του κατασκευαστή χρησιμοποιείται η δεσμευμένη λέξη super() μεταβιβάζοντας τις αντίστοιχες παραμέτρους. Για τις υπόλοιπες δύο ιδιότητες που δηλώνονται στην υποκλάση η ανάθεση τιμών γίνεται κατά τα γνωστά: public AdministrativeEmployee(String text, double amount, int hours, double wage) { super(text, amount); overtimehours = hours; overtimewage = wage; Αν δεν προστεθεί οποιαδήποτε άλλη μέθοδος, η υποκλάση διατηρεί τις μεθόδους της υπερκλάσης (δηλαδή είναι απολύτως επιτρεπτό να αποστείλουμε το μήνυμα printstatement() σε αντικείμενο τύπου AdministrativeEmployee και ως αποτέλεσμα θα εκτυπωθεί το όνομα και ο μισθός). Αν όμως στόχος είναι, η εκτύπωση των μηνιαίων αποδοχών να πραγματοποιείται με διαφορετικό τρόπο για τα αντικείμενα της υποκλάσης (κάτι που είναι το συνηθέστερο δεδομένου ότι προφανώς θέλουμε να εκτυπώνονται και οι αποδοχές λόγω υπερωριακής απασχόλησης) τότε θα πρέπει να επικαλύψουμε ή να επανα-ορίσουμε τη μέθοδο printstatement() για την υποκλάση, δηλαδή να ορίσουμε τη μέθοδο με την ίδια υπογραφή όπως στην υπερκλάση αλλά με διαφορετική υλοποίηση: public void printstatement() { super.printstatement(); System.out.println("and extra income: " + (overtimehours * overtimewage)); H εντολή super.printstatement() έχει ως αποτέλεσμα την κλήση της μεθόδου printstatement() της υπερκλάσης. (θα ήταν αδύνατο να κληθεί η printstatement() της κλάσης AdministrativeEmployee δεδομένου ότι σε εκείνο το σημείο ορίζεται η ίδια η μέθοδος printstatement()). Χρησιμοποιώντας τη δεσμευμένη λέξη super και το όνομα μιας μεθόδου της υπερκλάσης μπορούμε να καλέσουμε οποιαδήποτε μέθοδο της υπερκλάσης. Πλέον, αν κληθεί η μέθοδος printstatement() επί ενός αντικειμένου AdministrativeEmployee θα κληθεί η δική του μέθοδος και όχι αυτή που κληρονομείται από την υπερκλάση.

4 Αλέξανδρος Χατζηγεωργίου, 2012 Αρχή της Υποκατάστασης Σύμφωνα με την αρχή της υποκατάστασης (substitution principle), οπουδήποτε χρησιμοποιείται σε ένα πρόγραμμα-πελάτη ένα αντικείμενο μιας υπερκλάσης, θα πρέπει να είναι απολύτως επιτρεπτό (και να μην δημιουργούνται προβλήματα εκτέλεσης ή εσφαλμένης συμπεριφοράς του προγράμματος) να χρησιμοποιούνται στη θέση του και αντικείμενα υποκλάσεων. Για παράδειγμα, αν σε μια κλάση χρησιμοποιούνται αντικείμενα της κλάσης Employee θα πρέπει να είναι απολύτως επιτρεπτό στη θέση των αντικειμένων Employee να χρησιμοποιηθούν αντικείμενα AdministrativeEmployee. Ο λόγος είναι ότι μια σχέση κληρονομικότητας αποτελεί μια σχέση τύπου "είναι" (is-a). Με άλλα λόγια, τα αντικείμενα των υποκλάσεων "είναι" και στιγμιότυπα των υπερκλάσεών τους. Για παράδειγμα, ένας Διοικητικός Υπάλληλος έχει προφανώς τα ειδικά χαρακτηριστικά ενός Διοικητικού Υπαλλήλου, δεν παύει όμως να είναι και ένας "Υπάλληλος" της γενικής κατηγορίας, περιλαμβάνοντας τις ιδιότητες και λειτουργίες ενός υπαλλήλου. Αν παραβιάζεται εννοιολογικά η αρχή αυτή για τη σημασία της σχέσης κληρονομικότητας, τότε η χρήση της κληρονομικότητας είναι εσφαλμένη. Με άλλα λόγια ένας Υπάλληλος δεν μπορεί κληρονομεί από μια κλάση "Επιχείρηση" δεδομένου ότι ένας Υπάλληλος δεν "είναι" και επιχείρηση. Στα πλαίσια της αρχής της υποκατάστασης σε μια αναφορά προς αντικείμενα της υπερκλάσης, π.χ. μια αναφορά Employee: Employee ref; που μπορούμε φυσικά να αναθέσουμε τις διευθύνσεις αντικειμένων τύπου Employee, δηλαδή: Employee ref = new Employee("John", 850); είναι απολύτως επιτρεπτό να αναθέσουμε και τις διευθύνσεις αντικειμένων τύπου AdministrativeEmployee: Employee ref = new AdministrativeEmployee("John", 850, 10, 15); Το ερώτημα που τίθεται είναι γιατί μπορεί να είναι χρήσιμη αυτή η δυνατότητα; Για να γίνει αντιληπτό, ας θεωρήσουμε ότι σε μια κλάση που χρησιμοποιεί την ιεραρχία Υπαλλήλων-Διοικητικών Υπαλλήλων (κλάσηπελάτης), έστω τη Main, διατηρούμε μια λίστα όλων των υπαλλήλων. Κανονικά θα έπρεπε να έχουμε μια ξεχωριστή λίστα για κάθε κατηγορία υπαλλήλων. Κάθε εργασία που θα έπρεπε να εκτελείται επί όλων των υπαλλήλων (π.χ. εκτύπωση της μισθοδοσίας τους καλώντας τη μέθοδο printstatement()) θα έπρεπε να πραγματοποιείται "σαρώνοντας" όλες τις δομές δεδομένων για κάθε κατηγορία υπαλλήλου. Σε ένα πραγματικό σύστημα οι εργασίες επί των υπαλλήλων θα ήταν πολλές και κατά συνέπεια θα έπρεπε σε όλα τα αντίστοιχα σημεία του κώδικα να γίνονται ενέργειες για όλες τις δομές. Το πραγματικό όμως πρόβλημα σχετίζεται με τη συντήρηση του λογισμικού: Αν προστεθούν νέες υποκατηγορίες υπαλλήλων θα έπρεπε να προσθέτουμε νέες δομές δεδομένων για να φιλοξενήσουν τα αντικείμενα της κάθε νέας υποκατηγορίας.

5 Η λύση στο πρόβλημα είναι η χρήση μιας δομής δεδομένων τύπου Employee η οποία λόγω της αρχής της υποκατάστασης θα μπορεί να δεχθεί αντικείμενα τύπου Employee αλλά και αντικείμενα οποιαδήποτε υποκλάσης της Employee. Η μέθοδος main για παράδειγμα θα μπορούσε να είναι: public static void main(string[] args) { ArrayList<Employee> employees = new ArrayList<Employee>(); employees.add(new Employee("John", 900)); employees.add(new AdminEmployee("Bob", 800, 15, 10)); employees.add(new AdminEmployee("Nick", 700, 10, 12)); Πολυμορφισμός Αν στη συνέχεια επιθυμούμε την εκτέλεση της μεθόδου printstatement() σε κάθε είδος υπαλλήλου που περιλαμβάνεται στη δομή employees μπορούμε στη main να προσθέσουμε το κάτωθι τμήμα κώδικα που "σαρώνει" τη δομή των υπαλλήλων και αποστέλλει σε κάθε αντικείμενο της δομής το ίδιο μήνυμα printstatement(): for(int i=0; i<employees.size(); i++) employees.get(i).printstatement(); //πολυμορφική κλήση Η κλήση της μεθόδου printstatement() στο ανωτέρω for loop παρουσιάζει ιδιαίτερο ενδιαφέρον στα πλαίσια του αντικειμενοστρεφούς προγραμματισμού. H Java δεν γνωρίζει κατά τη διάρκεια της μεταγλώττισης (at compile time) τι αντικείμενο περιλαμβάνεται σε κάθε θέση της δομής employee. Κατά συνέπεια δεν γνωρίζει και τι αντικείμενο επιστρέφεται από την εκτέλεση της εντολής employees.get(i) σε κάθε επανάληψη (Υπάλληλος ή Διοικητικός Υπάλληλος). Για το λόγο αυτό δεν μπορεί να "αποφασίσει" κατά τη διάρκεια της μεταγλώττισης ποια μέθοδος printstatement() θα πρέπει να κληθεί (αυτή της κλάσης Employee ή αυτή της κλάσης AdminEmployee). Για την αντιμετώπιση του ζητήματος η Java "καθυστερεί" την απόφαση αυτή μέχρι την εκτέλεση του προγράμματος όπου είναι πλέον γνωστό τι αντικείμενο βρίσκεται σε κάθε θέση της δομής employees. Αν η Java διαπιστώσει ότι πρόκειται για αντικείμενο τύπου Employee καλείται η μέθοδος printstatement() της κλάσης Employee. Αν η Java διαπιστώσει ότι πρόκειται για αντικείμενο τύπου AdminEmployee καλείται η μέθοδος printstatement() της κλάσης AdminEmployee (που έχει διαφορετική υλοποίηση σύμφωνα με τα προηγούμενα). Η δυνατότητα αυτή της Java (και άλλων αντικειμενοστρεφών γλωσσών) ονομάζεται "δυναμική διασύνδεση" ή "καθυστερημένη διασύνδεση" μεθόδου και αντίστοιχης κλάσης (dynamic ή late binding). To όφελος που προκύπτει είναι εξαιρετικά σημαντικό: ουσιαστικά στον κώδικα του for αποστέλλουμε το ίδιο ακριβώς μήνυμα σε ένα πλήθος αντικειμένων (το μήνυμα printstatement()) και κάθε αντικείμενοπαραλήπτης ανταποκρίνεται με διαφορετικό τρόπο, αυτόν που αντιστοιχεί στην κλάση του αντικειμένου. (ένα μήνυμα -> πολλές μορφές απόκρισης). H δυνατότητα αυτή ονομάζεται πολυμορφισμός και η αντίστοιχη κλήση της μεθόδου "πολυμορφική κλήση". Χάρη στον πολυμορφισμό, αν μελλοντικά

6 Αλέξανδρος Χατζηγεωργίου, 2012 προστεθούν νέες υποκατηγορίες υπαλλήλων (π.χ. Τεχνικοί Υπάλληλοι, Εξωτερικοί Συνεργάτες, Πωλητές κλπ με ξεχωριστό τρόπο μισθοδοσίας και διαφορετική υλοποίηση της printstatement()), τότε προφανώς θα πρέπει να προστεθούν στο σύστημα οι αντίστοιχες κλάσεις, αλλά ο κώδικας του ανωτέρου τμήματος (ο βρόχος επανάληψης for) δεν θα πρέπει να τροποποιηθεί καθόλου. Δηλαδή ένα τμήμα κώδικα μπορεί να επεκτείνει τη λειτουργικότητά του (να χειριστεί και άλλες κατηγορίες υπαλλήλων) χωρίς να χρειάζεται η τροποποίησή του (Αρχή της Ανοικτής-Κλειστής Σχεδίασης). Φυσικά στο ανωτέρω παράδειγμα το τμήμα κώδικα που επωφελείται από τον πολυμορφισμό είναι μικρό (ο κώδικας του for) αλλά σε ένα πραγματικό σύστημα την ίδια "ανεξαρτησία" μπορούν να έχουν πλήθος από κλάσεις ακόμα και ολόκληρα πληροφοριακά συστήματα. Για να γίνει απολύτως κατανοητό ότι η Java δεν είναι σε θέση να γνωρίζει τι ακριβώς υπάρχει ή θα τοποθετηθεί σε κάθε θέση της δομής employees (και επομένως δεν μπορεί να ξέρει ποια μέθοδο πρέπει να καλέσει για κάθε αντικείμενο που βρίσκεται σε μια θέση της δομής) το πρόγραμμα θα μπορούσε να ρωτά τον χρήστη τι αντικείμενο επιθυμεί να εισάγει κάθε φορά: public static void main(string[] args) { ArrayList<Employee> employees = new ArrayList<Employee>(); Scanner scan = new Scanner(System.in); boolean more = true; while(more) { System.out.println("What kind of employee do you want to add? (1: Employee, 2 AdminEmployee)"); int answer = scan.nextint(); scan.nextline(); System.out.println("Enter name: "); String name = scan.nextline(); System.out.println("Enter salary: "); double salary = scan.nextdouble(); if(answer == 1) { employees.add(new Employee(name, salary)); else { System.out.println("Enter overtime hours: "); int hours = scan.nextint(); System.out.println("Enter overtime wage: "); double wage = scan.nextdouble(); employees.add(new AdminEmployee(name, salary, hours, wage)); scan.nextline(); //Ερώτημα για το αν θα επαναληφθεί εισαγωγή υπαλλήλου System.out.println("More employees? (y/n)"); String moredata = scan.nextline(); if(moredata.equals("n")) more = false;

7 for(int i=0; i<employees.size(); i++) employees.get(i).printstatement(); //πολυμορφική κλήση Στο ανωτέρω παράδειγμα είναι πλέον σαφές ότι κατά τη διάρκεια της μεταγλώττισης του τμήματος κώδικα που αφορά στην αποστολή του μηνύματος printstatement() σε όλους ανεξαιρέτως τους υπαλλήλους (βρόχος for στο τέλος) η Java δεν μπορεί να γνωρίζει τι αντικείμενο υπάρχει σε κάθε θέση της δομής αφού αυτό καθορίζεται από τον χρήστη κατά τη διάρκεια της εκτέλεσης.

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))

Διαβάστε περισσότερα

Σύνθεση και Κληρονομικότητα

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγ/μό Η/Υ Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video ιάγραµµα κλάσεων [Class diagram] Εβδοµάδα 2: Υπο-τύποι και πολυµορφισµός [sub-typing and polymorphism] Database Music Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη

Διαβάστε περισσότερα

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

Διαβάστε περισσότερα

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

Διαβάστε περισσότερα

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

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΕΡΓΑΣΤΗΡΙΟ - 3 ΘΕΜΑΤΑ: Κλάσεις Αντικείμενα Δομητές/Κατασκευαστές - Μέθοδοι - Παράμετροι

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

Διαβάστε περισσότερα

(Διαφάνειες Νίκου Βιδάκη)

(Διαφάνειες Νίκου Βιδάκη) (Διαφάνειες Νίκου Βιδάκη) JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό

Διαβάστε περισσότερα

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1 Στόχοι Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός) Αντώνιος Συμβώνης www.math.ntua.gr/~symvonis Καλή γνώση βασικών αρχών προγραμματισμού Καλή γνώση βασικών αρχών αντικειμενοστρεφή

Διαβάστε περισσότερα

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

Διαβάστε περισσότερα

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

Διάγραμμα Κλάσεων. Class Diagram Διάγραμμα Κλάσεων Class Diagram Γενικά Ορίζει τις κλάσεις αντικειμένων σε ένα σύστημα, τις μεθόδους και τις συναρτήσεις τους, και τις συσχετίσεις μεταξύ των κλάσεων. Περιγράφουν την δομή και συμπεριφορά

Διαβάστε περισσότερα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος 11

Περιεχόμενα. Πρόλογος 11 Περιεχόμενα Πρόλογος 11 1 Εισαγωγή 19 1.1 Πριν από την ανάγνωση αυτού του βιβλίου 20 1.2 Μια θεώρηση του υπολογιστή 22 1.3 Εφαρμογές και μικροεφαρμογές Java 24 1.4 JavaScript και JSP 26 1.5 Η δομή του

Διαβάστε περισσότερα

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

Διαβάστε περισσότερα

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩN ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ι ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟΔΟΣ: ΙΟΥΝΙΟΣ 2015 (10/7/2015) ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α 1. (3.5 μονάδες)

Διαβάστε περισσότερα

Μέθοδοι. Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων

Μέθοδοι. Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων Μέθοδοι Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων Μέθοδοι Οιµέθοδοικαθορίζουντηνσυµπεριφοράενόςαντικειµένου. Τα βασικά µέρη από τα οποία αποτελείται µία µέθοδος είναι τα εξής: Το όνοµα της µεθόδου

Διαβάστε περισσότερα

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

Διαβάστε περισσότερα

ΣΥΣΧΕΤΙΣΕΙΣ ΚΛΑΣΕΩΝ (Class relationships)

ΣΥΣΧΕΤΙΣΕΙΣ ΚΛΑΣΕΩΝ (Class relationships) ΣΥΣΧΕΤΙΣΕΙΣ ΚΛΑΣΕΩΝ (Class relationships) Σκοπός Σκοπός των συσχετίσεων είναι να αναπαριστούν την αλληλεπίδραση μεταξύ των κλάσεων και των αντικειμένων. Απεικονίζονται διαγραμματικά με μία γραμμή μεταξύ

Διαβάστε περισσότερα

Προγραμματισμός Διαδικτύου

Προγραμματισμός Διαδικτύου 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Προγραμματισμός Διαδικτύου Ενότητα 3 : Κατηγορίες και κληρονομικότητα Ιωάννης Τσούλος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 6: Αφαιρετικότητα, Βιβλιοθήκες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφαιρετικότητα -Βιβλιοθήκες (packages) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός

Διαβάστε περισσότερα

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

Διαβάστε περισσότερα

Είσοδος και Έξοδος. (Input and Output) Διαφάνειες από τους Robert Sedgewick και Kevin Wayne. Τι θα δούµε σήµερα

Είσοδος και Έξοδος. (Input and Output) Διαφάνειες από τους Robert Sedgewick και Kevin Wayne. Τι θα δούµε σήµερα Είσοδος και Έξοδος (Input and Output) Διδάσκοντες: Νικόλας Νικολάου Εαρινό Εξάµηνο 2013/14 Τι θα δούµε σήµερα Συσκευές Εισόδου / Εξόδου Εκτύπωση στο StdOut Ανάγνωση δεδοµένων από Γραµµή Εντολής Ανάγνωση

Διαβάστε περισσότερα

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΕΡΓΑΣΤΗΡΙΟ - 4 ΘΕΜΑΤΑ: Κλάσεις Αντικείμενα Δομητές/Κατασκευαστές - Μέθοδοι - Παράμετροι

Διαβάστε περισσότερα

API: Applications Programming Interface

API: Applications Programming Interface ÒØ Ñ ÒÓ ØÖ ÔÖÓ» Ñ ÒØ Ñ ÒÓ ØÖ ÔÖÓ Ö ÑÑ Ø Ñ ½ Ö Ø Ò Ô Ö Ø ÒØ Ñ ÒÛÒ ÒÒÓ ôòøóù ÔÖ Ñ Ø Ó ÑÓÙ Ì ÔÓ ÓÑ ÒÛÒ Ì µ (i) ÒÓÐÓØ ÑôÒ (ii)ôö Ü º Ð ØÖ Ò Ò ÖÛÔÓ ØÖ ÔÐ Ò Ø Ó Ó Ù Ø Ñ Ø ººº ½ºÈÖÛØ ÓÒØ Ø ÔÓ int double char

Διαβάστε περισσότερα

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

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 15: Αναδρομή (Recursion) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η έννοια της αναδρομής Μη αναδρομικός / Αναδρομικός Ορισμός Συναρτήσεων Παραδείγματα Ανάδρομης Αφαίρεση της Αναδρομής

Διαβάστε περισσότερα

(Απλή) Κληρονομικότητα

(Απλή) Κληρονομικότητα Πολλαπλή κληρονομικότητα, υςχετίςεισ μεταξύ κλάςεων ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡ/ΜΟ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) (Απλή) Κληρονομικότητα Student + calctuition(): double GraduateStudent + calctuition(): double

Διαβάστε περισσότερα

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα Πολυμορφισμός Late Binding ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Πολυμορφισμός Late Binding Κληρονομικότητα Η κληρονομικότητα είναι κεντρική έννοια στον αντικειμενοστραφή προγραμματισμό. Η ιδέα είναι να ορίσουμε

Διαβάστε περισσότερα

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 5: Κλάσεις και Αντικείμενα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Κλάσεις και Αντικείμενα - Κατασκευή, Πρόσβαση Αντικειμένων - Διαχείριση Μνήμης, Garbage

Διαβάστε περισσότερα

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

4 Συλλογές Αντικειμένων 4 Συλλογές Αντικειμένων Πώς χειριζόμαστε αντικείμενα σε ομάδες με επανάληψη Η Απαίτηση Συλλογών Αντικειμένων Πολλές εφαρμογές χρειάζονται πλήθος αντικειμένων: Κατάλογος βιβλίων Φοιτητολόγιο Πελατολόγιο

Διαβάστε περισσότερα

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

Διαβάστε περισσότερα

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων Εργαστήριο Java Lab09 Αντικείμενο: Πολυνηματικές εφαρμογές Η χρήση περισσότερων από μιας ροής εντολών μέσα σε ένα πρόγραμμα είναι γνωστή ως multithreading. H κάθε μια ροή εντολών μέσα στο πρόγραμμα ονομάζεται

Διαβάστε περισσότερα

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 7: Ενθυλάκωση (encapsulation), Τροποποιητές(modifiers) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ενθυλάκωση -Τροποποιητές Πρόσβασης (Access Modifiers), public, protected, private,

Διαβάστε περισσότερα

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

Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #6 η : Η λέξη κλειδί this, υπερφόρτωση μεθόδων, κληρονομικότητα, πολυμορφισμός, υπερκάλυψη, επίπεδα προσπέλασης Γαβαλάς Δαμιανός dgavalas@aegean.gr

Διαβάστε περισσότερα

Συλλογές, Στοίβες και Ουρές

Συλλογές, Στοίβες και Ουρές Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει

Διαβάστε περισσότερα

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

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΑΙ ΠΟΛΥΜΟΡΦΙΣΜΟΣ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΑΙ ΠΟΛΥΜΟΡΦΙΣΜΟΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Επέκταση κλάσεων στη C++ Τροποποίηση μεθόδων (method overriding) Κληρονομικότητα και κατασκευαστές, καταστροφείς,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 1/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 1/11/07 Κάποια πράγματα ξανά για τις μεταβλητές: - Δήλωση μεταβλητής: [=τιμή]; (προς το παρόν παραλείπουμε την ορατότητα)

Διαβάστε περισσότερα

Φροντιστήριο 5. Ημερομηνία: 01/12/2006 Θεματική Ενότητα: Μοντελοποίηση Συμπεριφοράς Θέμα: Διαγράμματα αλληλεπίδρασης και καταστάσεων

Φροντιστήριο 5. Ημερομηνία: 01/12/2006 Θεματική Ενότητα: Μοντελοποίηση Συμπεριφοράς Θέμα: Διαγράμματα αλληλεπίδρασης και καταστάσεων Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών Φθινόπωρο 2006 ΗΥ351: Ανάλυση και Σχεδίαση Πληροφοριακών Συστημάτων Information Systems Analysis and Design Φροντιστήριο 5 Ημερομηνία: 01/12/2006 Θεματική

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΜΑΘΗΜΑ: ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΣΧΕΔΙΑΣΜΟΣ Διδάσκων: Γ. Χαραλαμπίδης, Επ.

Διαβάστε περισσότερα

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

Διαβάστε περισσότερα

Προγραµµατισµός ΙΙ Java 2

Προγραµµατισµός ΙΙ Java 2 Προγραµµατισµός ΙΙ Java 2 Προχωρηµένα Θέµατα Πακέτα Τις κλάσεις που κατασκευάζουµε µπορούµε να τις οργανώνουµε σε πακέτα εν «κουβαλάµε» µια-µια τις κλάσεις που επιθυµούµε αλλά ένα συµπαγές αρχείο, το πακέτο

Διαβάστε περισσότερα

Ανάπτυξη συστήματος λογισμικού βάσει της μεθοδολογίας ICONIX

Ανάπτυξη συστήματος λογισμικού βάσει της μεθοδολογίας ICONIX Αλέξανδρος Ν. Χατζηγεωργίου Ανάπτυξη συστήματος λογισμικού βάσει της μεθοδολογίας ICONIX Διαχείριση Παραγγελιών ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Θεματική Ενότητα ΠΛΗ 24 2008

Διαβάστε περισσότερα

Περιεχόμενο του μαθήματος

Περιεχόμενο του μαθήματος ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Η Αντικειμενοστρεφής Τεχνολογία Δρ Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 202-203 Περιεχόμενο του μαθήματος Η έννοια

Διαβάστε περισσότερα

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου J-GANNO ΓΕΝΙΚΕΥΜΕΝΟ ΠΑΚΕΤΟ ΥΛΟΠΟΙΗΣΗΣ ΤΕΧΝΗΤΩΝ ΝΕΥΡΩΝΙΚΩΝ ΙΚΤΥΩΝ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ JAVA Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β,

Διαβάστε περισσότερα

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

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

Διαβάστε περισσότερα

Generics και ArrayLists

Generics και ArrayLists ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Generics και ArrayLists Προσοχή!!! Να εκτελεστούν πρώτα όλες οι ασκήσεις τις Θεωρίας

Διαβάστε περισσότερα

Παράδειγμα Σύνθεσης: Class Name

Παράδειγμα Σύνθεσης: Class Name Παράδειγμα Σύνθεσης: Class Name class Name{ private String first; private String middle; private String last; // Object represent names of people //e.g., "William" //e.g., "Jefferson" //e.g., "Clinton"

Διαβάστε περισσότερα

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Εντολές ελέγχου συγκρίσεων επιλογής ή διακλαδώσεων ( if switch) Μία από τις σημαντικότερες

Διαβάστε περισσότερα

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA 1. Εισαγωγή Τι είναι Νήµα; Κάθε νήµα εκτέλεσης είναι ουσιαστικά

Διαβάστε περισσότερα

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ Διάλεξη 2 Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις Διοργάνωση : ΚΕΛ ΣΑΤΜ Διαφάνειες: Skaros, MadAGu Παρουσίαση: MadAGu Άδεια: Creative Commons 3.0 2 Internal

Διαβάστε περισσότερα

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΪΟΥ-ΙΟΥΝΙΟΥ 2015

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΪΟΥ-ΙΟΥΝΙΟΥ 2015 ΛΥΚΕΙΟ ΑΡΧ. ΜΑΚΑΡΙΟΥ Γ - ΔΑΣΟΥΠΟΛΗ ΣΧΟΛΙΚΟ ΕΤΟΣ 2014-2015 ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΪΟΥ-ΙΟΥΝΙΟΥ 2015 ΜΑΘΗΜΑ: ΠΛΗΡΟΦΟΡΙΚΗ ΗΜΕΡΟΜΗΝΙΑ: 10 /6 / 2015 ΒΑΘΜΟΣ:... ΤΑΞΗ: Β ΧΡΟΝΟΣ: 2 ώρες ΥΠ. ΚΑΘΗΓΗΤΗ:...

Διαβάστε περισσότερα

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr. Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

Διαβάστε περισσότερα

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

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

Διαβάστε περισσότερα

ΠΡΟΤΥΠΑ ΣΧΕΔΙΑΣΗΣ. 6.1 Εισαγωγή

ΠΡΟΤΥΠΑ ΣΧΕΔΙΑΣΗΣ. 6.1 Εισαγωγή ΠΡΟΤΥΠΑ ΣΧΕΔΙΑΣΗΣ 6.1 Εισαγωγή Τα προβλήματα που αντιμετωπίζει ένας προγραμματιστής κατά τη διάρκεια σχεδίασης και υλοποίησης ενός συστήματος λογισμικού, πολύ σπάνια εμφανίζονται για πρώτη φορά μόνο στο

Διαβάστε περισσότερα

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ. Σχηματική παράσταση του προγράμματος. logariasmos

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ. Σχηματική παράσταση του προγράμματος. logariasmos ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΒΑΣΙΚΗ ΚΑΙ ΠΑΡΑΓΩΓΕΣ ΚΛΑΣΕΙΣ #include class logariasmos //basikh klash //prostateymeno dedomeno-melos float ypoloipo; logariasmos() //dhlosh constructor ypoloipo=0; float pareypoloipo()

Διαβάστε περισσότερα

Προγραμματισμός ΙΙ (Java) 1. Εισαγωγή

Προγραμματισμός ΙΙ (Java) 1. Εισαγωγή Προγραμματισμός ΙΙ (Java) 1. Εισαγωγή 1 Στόχοι Όσοι ολοκληρώνουν το μάθημα με επιτυχία να: Γνωρίζουν καλά τις βασικές αρχές του αντικειμενοστρεφούς προγραμματισμού: αντικείμενα, κλάσεις, γνωρίσματα, μεθόδους,

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

Περιγραφή Παραδείγματος. Σκοπός του Παραδείγματος. Περίπτωση Χρήσης και Σενάρια. Σύντομο Παράδειγμα μιας συνοπτικής μεθοδολογίας ανάπτυξης

Περιγραφή Παραδείγματος. Σκοπός του Παραδείγματος. Περίπτωση Χρήσης και Σενάρια. Σύντομο Παράδειγμα μιας συνοπτικής μεθοδολογίας ανάπτυξης Περιγραφή Παραδείγματος Σύντομο Παράδειγμα μιας συνοπτικής μεθοδολογίας ανάπτυξης Κράτηση δωματίου σε ξενοδοχείο Ουπάλληλοςδίνειταστοιχείατουπελάτητο δωμάτιο(μονό, διπλό κλπ) και την περίοδο. Τοσύστημαβρίσκειτοδωμάτιοκαικάνει

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιαχείριση Εξαιρέσεων. Εισαγωγή στη ιαχείριση Εξαιρέσεων

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιαχείριση Εξαιρέσεων. Εισαγωγή στη ιαχείριση Εξαιρέσεων Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 6η: 06/04/2006 1 ιαχείριση

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική

Διαβάστε περισσότερα

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά 2008-2009

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά 2008-2009 ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά 2008-2009 ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ 2009 ΜΑΘΗΜΑ: ΠΛΗΡΟΦΟΡΙΚΗ ΤΑΞΗ : Β ΗΜΕΡΟΜΗΝΙΑ: Τετάρτη, 3 Ιουνίου 2009 ΩΡΑ: 07:45 10:15 ΟΔΗΓΙΕΣ: Το εξεταστικό δοκίμιο αυτό αποτελείται

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Nα κατασκευάσουν πίνακες από δεδομένα. Να κατασκευάσουν συναρτήσεις με πίνακες. Να κάνουν χρήση

Διαβάστε περισσότερα

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1) Αντικείμενα (Objects) στην Java Αντικείμενα στη Java Παύλος Εφραιμίδης Ένα πρόγραμμα Java κατά την εκτέλεσή του δημιουργεί αντικείμενα τα αντικείμενα αλληλεπιδρούν, στέλνοντας μηνύματα το ένα στο άλλο

Διαβάστε περισσότερα

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

Διαβάστε περισσότερα

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

Διαβάστε περισσότερα

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

Διαβάστε περισσότερα

ΑΡΧΕΣ ΣΧΕΔΙΑΣΗΣ. 5.1 Εισαγωγή

ΑΡΧΕΣ ΣΧΕΔΙΑΣΗΣ. 5.1 Εισαγωγή ΑΡΧΕΣ ΣΧΕΔΙΑΣΗΣ 5.1 Εισαγωγή Κατά τη διάρκεια της σχεδίασης οποιουδήποτε τεχνικού έργου, επιδιώκεται η αποσύνθεση του συστήματος σε τμήματα, η ανάθεση αρμοδιοτήτων σε κάθε τμήμα και η επικύρωση ότι όλα

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

ΗΥ-252 Οντοκεντρικός Προγραµµατισµός Βασίλης Χριστοφίδης. Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 12 Σεπτεµβρίου 2002

ΗΥ-252 Οντοκεντρικός Προγραµµατισµός Βασίλης Χριστοφίδης. Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 12 Σεπτεµβρίου 2002 Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών ΗΥ-252 Οντοκεντρικός Προγραµµατισµός Βασίλης Χριστοφίδης Ονοµατεπώνυµο: Αριθµός Μητρώου: Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 12 Σεπτεµβρίου 2002 Άσκηση

Διαβάστε περισσότερα

Εισαγωγή στη C# και το.net 4.0

Εισαγωγή στη C# και το.net 4.0 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΡΓΑΣΤΗΡΙΟ ΤΕΧΝΟΛΟΓΙΑΣ ΠΟΛΥΜΕΣΩΝ Εισαγωγή στη C# και το.net 4.0 Σημειώσεις Σεμιναρίου Ενότητα 3 Κλάσεις και αντικείμενα Πεδία Μέθοδοι Επιμέλεια: Βασίλης Κόλιας 1.0.0 Πίνακας

Διαβάστε περισσότερα

Βάση Δεδομένων. User Interface - 1 User Interface - 2

Βάση Δεδομένων. User Interface - 1 User Interface - 2 2. Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Ο αντικειμενοστραφής προγραμματισμός, (OOP - Object Oriented Programming), είναι μια προγραμματιστική φιλοσοφία όπως και ο προστακτικός ή ο λογικός προγραμματισμός.

Διαβάστε περισσότερα

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string 12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string Aλφαριθµητικά της C int main() const int max=80; char str[max); //κάθε char δεσµεύει

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Αλφαριθμητικά και Αρχεία Αλφαριθμητικά (strings) Αρχεία (files) τα βασικά στοιχεία Αλφαριθμητικά της C Συμβολοσειρές (= ακολουθίες

Διαβάστε περισσότερα

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:01 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

Διάλεξη 11: Αντικειμενοστρεφής Σχεδιασμός ΙII

Διάλεξη 11: Αντικειμενοστρεφής Σχεδιασμός ΙII Διάλεξη 11: Αντικειμενοστρεφής Σχεδιασμός ΙII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Παράδειγμα Διαδικασίας Ανάπτυξης Λογισμικού: Βιβλίο Διευθύνσεων(συν.) - Φάση 3: Υλοποίηση(αναλυτικά

Διαβάστε περισσότερα