FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

ηµιουργία νέου τύπου δεδοµένων από το χρήστη

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

(derived data types) ...

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

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

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

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

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

Wrapper Classes, Abstract Classes and Interfaces

Προγραµµατιστικές τεχνικές

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

8 FORTRAN 77/90/95/2003

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

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

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

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

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

Βασικά της γλώσσας JAVA

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

Προγραμματιστικές τεχνικές

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

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

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

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

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Χρήση Αντικειμενοστραφούς Προγραμματισμού στον Υπολογιστικό Ηλεκτρομαγνητισμό

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

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Εισαγωγή στην επιστήμη των υπολογιστών

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

Κλάσεις στην Python. Δημιουργία κλάσεων

Μονοδιάστατοι πίνακες

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Το πλήθος των δεικτών και οι µεγαλύτερες τιµές που µπορούν να πάρουν ορίζεται µε µία δηλωτική εντολή που λέγεται Dimension.

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

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: «Σχεδιασμός και ανάπτυξη ιστοσελίδων ηλεκτρονικής εκπαίδευσης (e learning) σε θέματα αντικειμενοστραφή προγραμματισμού.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

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

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

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

Κλάσεις στην Python. Δημιουργία κλάσεων

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

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

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

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Κεφάλαιο 8ο: Αρχεία. 8.1 Τι είναι αρχείο;

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

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

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

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

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

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ ΥΠΟΛΕΙΠΟΜΕΝΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

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

Ειδικά Θέματα Προγραμματισμού

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 1: Βασικές Αρχές Αντικειμενοστραφούς Σχεδίασης Συστημάτων και Εφαρμογών (1ο Μέρος)

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

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

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

Π2 Το Σύστηµα Κανόνων CLIPS

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

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Transcript:

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017 M8 Αντικειμενοστραφής Προγραμματισμός - Ασκήσεις Γεώργιος Παπαλάμπρου Επικ. Καθηγητής ΕΜΠ Εργαστήριο Ναυτικής Μηχανολογίας george.papalambrou@lme.ntua.gr ΕΜΠ/ΣΝΜΜ Εργαστήριο Ναυτικής Μηχανολογίας 1

Εισαγωγή Το αντικείμενο OOP είναι ευρύ και ειδικευμένο. Παρουσιάζονται εδώ οι βασικές αρχές με περιγραφικό τρόπο. Ο αναγνώστης μπορεί να βρεί περισσότερα στοιχεία στις εξής πηγές: 1. Metcalf et al., κεφ. 14. 2. Holcomb, K., SCIENTIFIC PROGRAMMING IN FORTRAN 2003, A tutorial Including Object-Oriented Programming, [https://wiki.uiowa.edu/download/attachments/109785161/fortran-novella- Holcomb.pdf, sec. 11] 3. Akin, E., Object Oriented Programming via Fortran 90/95 [pdf από web, sec. 3, 5, 6] - προτείνεται 4. FORTRAN Wiki: http://fortranwiki.org/fortran/show/objectoriented+programming 2

Τύποι Δεδομένων Akin, E., Object Oriented Programming via Fortran 90/95 [pdf από web] 3

Τύποι Δεδομένων Συχνά χρειάζεται να δημιουργήσουμε δικούς μας τύπους δεδομένων, βασισμένους σε τύπους δεδομένων που διαθέτει η γλώσσα Fortran. Οι τύποι οριζόµενοι από τον χρήστη είναι χρήσιµοι στις περιπτώσεις που θέλουµε να δηµιουργήσουµε λίστες με ανόµοια δεδοµένα (διαφορετικού τύπου) ή κατά το Object Oriented Programming. 4

Τύποι Δεδομένων - Παράδειγμα ΜΣ Ως παράδειγμα θεωρούμε συγκέντρωση στοιχείων από µετεωρολογικούς σταθµούς. Τότε έχουµε πλήθος από µετεωρολογικούς σταθµούς σε κάθε νοµό και συλλέγουμε από τον κάθε ένα στοιχεία για το πρόγραµµα πρόβλεψης καιρού. Από κάθε σταθµό παίρνουµε ένα σετ από δεδοµένα διαφορετικού τύπου: τον κωδικό (ακέραιος), το όνοµα (χαρακτήρας), το γεωγραφικό µήκος, πλάτος, το υψόµετρο (πραγµατικοί) και τη θερµοκρασία, υγρασία και βροχόπτωση του 24ώρου (πραγµατικά διανύσµατα 24 θέσεων). Κανονικά θα έπρεπε να δηλωθεί κάθε τύπος χωριστά και µάλιστα σαν µητρώο ή διάνυσµα µε µέγεθος ίσο µε το πλήθος των σταθµών. 5

Τύποι Δεδομένων - Παράδειγμα ΜΣ Από τη στιγµή που το σετ των ανόµοιων δεδοµένων επαναλαµβάνεται για κάθε σταθµό, δηµιουργούµε σε ένα Module προγράμματος ένα νέο τύπο µεταβλητής, τον τύπο Station ως εξής: MODULE NewType TYPE Station INTEGER:: code CHARACTER(LEN=15):: name REAL:: latitude, longitude, altitude! Gplatos, Gmikos, Ypsometro REAL, DIMENSION(24):: temperature, humidity, rain END TYPE END MODULE NewType Ο νέος τύπος µπορεί να περιέχει τα δεδοµένα ενός σταθµού. Αν τον δηλώσουµε σαν µητρώο κάθε στοιχείο του θα αντιστοιχεί σε έναν σταθµό και θα περιέχει 8 διαφορετικά είδη δεδοµένων. Στο κυρίως πρόγραµµα θέτουμε USE NewType ώστε να µπορούµε να δηλώσουµε µε το νέο τύπο Station όσες µεταβλητές απαιτούνται 6

Μονάδες προγράμματος (modules) Δεν είναι απαραίτητο για ένα module να είναι στο δικό του αρχείο, αλλά αυτή είναι η συνήθης πρακτική, εκτός εάν η μονάδα είναι πολύ μικρή Ο compiler πρέπει να γνωρίζει την μονάδα πριν από οποιαδήποτε άλλο τμήμα του προγράμματος μπορεί να το χρησιμοποιήσει. Η χρήση στο κυρίως πρόγραμμα γίνεται μέσω της δήλωσης use: Πρόγραμμα circle_test.f95 program circle_test use class_circle implicit none... Πρόγραμμα class_circle.f95 module class_circle implicit none private real :: pii = 23.14!constant end module class_circle 7

Τύποι Δεδομένων - Παράδειγμα ΜΣ Η δήλωση γίνεται µε την εντολή TYPE(Station) και η ανάγνωση των δεδοµένων γίνεται µε ένα απλό impled DO. Προσοχή θα χρειαστεί στο FORMAT όπου θα εµφανίζονται µε τη σειρά κωδικοί περιγραφής για όλες τις µεταβλητές που περιέχονται στον τύπο STATHMOS. Πράγµατι, ηεντολή 20 διαβάζει: 1 ακέραιο, 1 σειρά χαρακτήρων, 3 πραγµατικούς & 3 διανύσµατα των 24 πραγµατικών PROGRAM Kairos USE NewType IMPLICIT NONE... INTEGER, PARAMETER:: Nattiki=200, Nviotia=130, Nevoia=150... TYPE(Station):: attiki(nattiki), viotia(nviotia), evoia(nevoia)... READ(10,20) (attiki(i), i=1,nattiki) 20 FORMAT(I5,A15,3F6.1,3(24F8.2))... 8

Τύποι Δεδομένων - Παράδειγμα ΜΣ Κατά την εκτέλεση του προγράµµατος όταν αναφερόµαστε σε ένα από τα περιεχόµενα του τύπου χρησιµοποιούµε το σύµβολο % για να χωρίσουµε το όνοµα της µεταβλητής από τα ονόµατα των περιεχοµένων. Έτσι το attiki(78)%rain(10:14) θα δώσει από τον σταθµό 78 της Αττικής ένα διάνυσµα µε 5 τιµές βροχόπτωσης. Το ηµερήσιο άθροισµα βροχόπτωσης για τους σταθμούς Αττικής και Βοιωτίας θα είναι: DO i = 1, Nattiki attiki_raindaily(i)=sum(attiki(i)%rain(1:24)) END DO DO i = 1, Nviotia viotia_raindaily(i)=sum(viotia(i)%rain(1:24)) END DO Τέλος, για κάθε τύπο δεδοµένων µπορούν να οριστούν και πράξεις ή συναρτήσεις που ισχύουν µόνο για τον συγκεκριµένο τύπο (χρήση στο OOP). 9

Έννοιες ΟOP Akin, E., Object Oriented Programming via Fortran 90/95 [pdf από web] Sec. 2, Data types Sec. 3, Object Oriented Programming Concepts Sec. 5, Object Oriented Methods Sec. 6, Inheritance and Polymorphism 10

Έννοιες ΟOP Οι σύγχρονες γλώσσες OO παρέχουν στον προγραμματιστή τρείς δυνατότητες που βελτιώνουν και απλοποιούν το σχεδιασμό προγραμμάτων OOP: ενθυλάκωση, κληρονομικότητα και πολυμορφισμός (encapsulation, inheritance, polymorphism) Σχετικά θέματα περιλαμβάνουν αντικείμενα, κλάσεις και απόκρυψη δεδομένων (objects, classes, data hiding). Ένα αντικείμενο συνδυάζει διάφορους κλασικούς τύπους δεδομένων σε μια ομάδα που ορίζει ένα νέο τύπο μεταβλητής ή δομή. Μια κλάση ενοποιεί τους νέους τύπους οντοτήτων και υποστηρίζει δεδομένα με ρουτίνες (λειτουργίες και υπορουτίνες) που έχουν πρόσβαση ή / και τροποποιούν αυτά δεδομένα. Κάθε αντικείμενο που δημιουργείται από μια κλάση, παρέχοντας τα απαραίτητα δεδομένα, καλείται υλοποίηση (instance) της κλάσης. από Akin (2003), παρ. 3.1, σελ. 3 11

Έννοιες ΟOP Σε παλαιότερες γλώσσες, όπως C και F77, τα δεδομένα και οι λειτουργίες είναι ξεχωριστές οντότητες. Μια σύγχρονη γλώσσα OO (όπως C++, Python, Java) παρέχει τρόπο σύζευξης ή ενθυλάκωσης των δεδομένων και των λειτουργιών τους σε μια ενιαία οντότητα. Αυτός είναι ένας περισσότερο φυσικός τρόπο να μοντελοποιήσουμε πραγματικές οντότητες που έχουν δεδομένα και λειτουργικότητα. από Akin (2003), παρ. 3.1, σελ. 33 12

Έννοιες ΟOP Η ενθυλάκωση γίνεται με ένα μπλοκ «module» στην F90 και με ένα μπλοκ «class» στη C ++. Αυτή η ενθυλάκωση περιλαμβάνει επίσης ένας μηχανισμό με τον οποίο ορισμένα ή όλα τα δεδομένα και οι ρουτίνες υποστήριξης μπορούν να αποκρύπτονται από το χρήστη. Η προσβασιμότητα των προδιαγραφών και των ρουτινών μιας τάξης συνήθως ελέγχεται από δηλώσεις «public» και «private». Η απόκρυψη δεδομένων επιτρέπει σε καάποιον να προστατεύει πληροφορίες σε ένα μέρος ενός προγράμματος από την πρόσβαση και ειδικά από την αλλαγή σε άλλα μέρη του προγράμματος. Στην C ++ η προεπιλογή είναι ότι τα δεδομένα και οι λειτουργίες είναι τύπου «private» εκτός εάν δηλωθούν ως «public», ενώ η F90 κάνει την αντίθετη επιλογή προεπιλεγμένης λειτουργία προστασίας. Σε μια ενότητα "F90" η δήλωση «contains» μεταξύ άλλων συνδυάζει τα δεδομένα, τις προδιαγραφές και τους χειριστές πριν από τις λειτουργίες και τις υπορουτίνες που την ακολουθούν. από Akin (2003), παρ. 3.1, σελ. 33 13

Έννοιες ΟOP Οι ιεραρχίες των τάξεων μπορούν να απεικονιστούν όταν συνειδητοποιήσουμε ότι μπορούμε να χρησιμοποιήσουμε μία ή περισσότερες προηγούμενες κλάσεις (για δεδομένα και λειτουργικότητα) για την οργάνωση πρόσθετων κλάσεων. Έτσι λειτουργικότητα προγραμματισμένη σε προηγούμενες κλάσεις ενδέχεται να μην χρειάζεται να επαναληφθεί για να είναι εφαρμόσιμη στις μεταγενέστερες κλάσεις. Ο μηχανισμός αυτός στην OOP ονομάζεται κληρονομικότητα (inheritance). από Akin (2003), παρ. 3.1, σελ. 33 14

Παράδειγμα 1 FTN-OOP Για παράδειγμα, εάν έχουμε ορίσει μια κλάση Employee, τότε μια κλάση Manager θα κληρονομήσει όλα τα δεδομένα και τη λειτουργικότητα της Employee. Θα χρειαζόταν μόνο να προσθέσουμε μόνο τα εντελώς νέα δεδομένα και λειτουργίες που απαιτούνται για έναν Manager. Μπορεί επίσης να χρειαστούμε έναν μηχανισμό για να επαναπροσδιορίσουμε συγκεκριμένες λειτουργίες κλάσης Employee που διαφέρουν για μια κλάση Manager. Χρησιμοποιώντας την έννοια iεραρχίας κλάσης, απαιτείται λιγότερος προγραμματισμός για την δημιουργία του τελικού προγράμματος. Στην F90 η αρχική κλάση μεταφέρεται στην ιεραρχία της επόμενης κλάσης με τη χρήση «use» ακολουθούμενη από το όνομα του module που καθορίζει την κλάση. Employee: όνομα, επίθετο, θέση, μισθός -> Manager: από Employee + νέα χαρακτηριστικά, πχ bonus από Akin (2003), παρ. 3.1, σελ. 33 15

Παράδειγμα 2 FTN-OOP Δίνεται πρόγραμμα γεωμετρίας που χρησιμοποιεί δύο διαφορετικές κλάσεις: class circle και class rectangle, όπως αναπαρίσταται γραφικά στα Σχήματα 3.1, 3.2. Ο κώδικας σε F90 όπως φαίνεται στο Σχ. 3.3 Κάθε εμφανιζόμενη κλάση έχει τους τύπους δεδομένων και τις προδιαγραφές για τον ορισμό του αντικειμένου και της λειτουργικότητας Ο τελεστής % χρησιμοποιείται για την επιλογή συγκεκριμένων στοιχείων ενός καθορισμένου τύπου. από Akin (2003), παρ. 3.2, σελ. 34 Σχ. 3.3 16

Παράδειγμα 2 FTN-OOP Μέσα στο κυρίως πρόγραμμα geometry, καλείται η ρουτίνα compute_area (γραμμή 40) για να επιστρέψει την επιφανεια για οποιαδήποτε από τις καθορισμένες κλάσεις γεωμετρίας. Δηλαδή, ένα γενικό όνομα ρουτίνας χρησιμοποιείται για όλες τις κλάσεις και με τη σειρά του δίνει την αντίστοιχη λειτουργικότητα. Για να επιτευχθεί αυτή η διακλάδωση το πρόγραμμα κάνει χρήση του use για κάθε κλάση (γραμμές 25 και 26). από Akin (2003), παρ. 3.2, σελ. 34 17

Παράδειγμα 2 FTN-OOP Σε αυτό το παράδειγμα έχουμε χρησιμοποιήσει διαφορετικά ονόματα, rectangular area and circle area, στα δικά τους modules κλάσης, αλλά αυτό δεν είναι απαραίτητο. Η δήλωση use επιτρέπει σε κάποιον να μετονομάσει τηις ρουτίνες της κλάσης ή / και να φέρει μόνο επιλεγμένα μέλη της λειτουργικότητας. από Akin (2003), παρ. 3.2, σελ. 34 18

Παράδειγμα 2 FTN-OOP από Akin (2003), παρ. 3.2, σελ. 34 19

Παράδειγμα 2 FTN-OOP Αρχείο <circle_test1.f95> στο dropbox../m8_codes FORTRAN Wiki: http://fortranwiki.org/fortran/show/objectoriented+programming, προσαρμοσμένο από Akin (2003), σελ. 34 20

Περισσότερα στοιχεία OOP από Akin (2003), κεφ. 5 21

Περισσότερα στοιχεία OOP από Akin (2003), κεφ. 5 22

Περισσότερα στοιχεία OOP από Akin (2003), κεφ. 5 Για την χρήση των interfaces: http://www.cs.mtu.edu/~shene/courses/c s201/notes/chap06/interface.html 23

Περισσότερα στοιχεία OOP από Akin (2003), κεφ. 5 24

Περισσότερα στοιχεία OOP από Akin (2003), κεφ. 5 25

Περισσότερα στοιχεία OOP από Akin (2003), κεφ. 6 26

Περισσότερα στοιχεία OOP από Akin (2003), κεφ. 6 27

Περισσότερα στοιχεία OOP από Akin (2003), κεφ. 6 28

Περισσότερα στοιχεία OOP από Akin (2003), κεφ. 6 29

Περισσότερα στοιχεία OOP από Akin (2003), κεφ. 6 30