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

Σχετικά έγγραφα
(derived data types) ...

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

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

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

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

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

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

Διαφάνειες παρουσιάσεων Αρχικές Διαφάνειες σε Pascal: Σ.Ζάχος, Ν.Παπασπύρου Προσαρμογή σε Fortran: Α.Παγουρτζής, Δ.Σούλιου

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

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

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

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

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

Outline. 4 Object-Oriented Programming

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

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016. ΦΥΣ145 Υπολογιστικές Μέθοδοι στην Φυσική

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

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

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

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

Κεφάλαιο 7: Υπορουτίνες

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Δομή προγράμματος στη Fortran

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

ΚΕΦΑΛΑΙΟ 2. Περιγραφή της Κίνησης. 2.1 Κίνηση στο Επίπεδο

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

Δομή προγράμματος στη Fortran

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

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

8 FORTRAN 77/90/95/2003

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

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

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

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

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

Υπο-προγράμματα στη Fortran

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

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

Πίνακες. (i) FORTRAN και Αντικειµενοστραφής Προγραµµατισµός

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

Συναρτήσεις και Υπορουτίνες

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C

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

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

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

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

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

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

ιαφάνειες παρουσίασης #4

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

ιαφάνειες παρουσίασης #5 (β)

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 28 Μαρτίου 2009 Οµάδα 1 η

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

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

ιαφάνειες παρουσίασης #4

ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

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

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

Δομές ελέγχου. ομαδοποίηση εντολών εκτέλεση εντολών υπό συνθήκη επανάληψη εντολών

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

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Αντικειμενοστραφής Προγραμματισμός και JavaScript

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

ιαφάνειες παρουσίασης #3

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

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

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

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

Εισαγωγή στον Προγραμματισμό H/Y (Fortran 90/95/2003)

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

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

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

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

ύο βασικές ιδέες Ενότητες Απόκρυψη Πληροφορίας, Αφηρηµένοι Τύποι εδοµένων 1) ιαχώρισε το πρόβληµα σεµικρότερα καλώς καθορισµένα υπο-προβλήµατα

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

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

Προγραμματισμός PASCAL

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

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

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

Mock Exam 7. 1 Hong Kong Educational Publishing Company. Section A 1. Reference: HKDSE Math M Q2 (a) (1 + kx) n 1M + 1A = (1) =

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

Πίνακες. (i) FORTRAN και Αντικειµενοστραφής Προγραµµατισµός

ιαφάνειες παρουσίασης #5

Παρουσίαση Delphi. Μέμος-Μπαγκράτσας Ιωάννης 1232 Μαργαρίτης Νικόλαος 1226

Μορφοποίηση της εξόδου

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Transcript:

Fortran και Αντικειμενοστραφής προγραμματισμός www.corelab.ntua.gr/courses/fortran_naval/naval Δδάσκοντες: Άρης Παγουρτζής (pagour@cs.ntua.gr) (Επίκουρος Καθηγητής ΣΗΜΜΥ ) Δώρα Σούλιου (dsouliou@mail.ntua.gr) (ΕΔΙΠ ΣΗΜΜΥ) 8η ενότητα Σύνθετοι τύποι δεδομένων Δημιουργία τύπων Στοιχεία αντικειμενοστραφούς προγραμματισμού Fortran 2003 Αρχικές Διαφάνειες σε Pascal: Ε. Ζάχος, Ν. Παπασπύρου Προσαρμογή σε Fortran - συμπληρώσεις: Α. Παγουρτζής, Δ. Σούλιου 1

Δημιουργία νέων τύπων δεδομένων (derived) type όνομα_τύπου δήλωση 1... δήλωση k end type όνομα_τύπου Όπου δήλωση i (i=1,,k) είναι κάποιος γνωστός τύπος δεδομένων (π.χ. integer :: a). Tο όνομα του νέου τύπου δεδομένων ακολουθεί τους γνωστούς κανόνες oνοματολογίας. Π.χ.: type computer_usage_info Character (15) :: lastname, firstname Integer :: id_number, resource_limit Character (6) :: passwd Real :: resources_used end type computer_usage_info 2

Παραδείγματα type Point real :: x,y end type Point Πως ορίζουμε ότι μία μεταβλητή είναι δομή τύπου Point; type (Point) :: P,Q Γράφοντας type (computer_usage_info) :: user1,user2 ορίζουμε πως οι μεταβλητές user1 και user2 είναι δομές τύπου computer_usage_info Ενώ γράφοντας type (computer_usage_info), dimension(50) :: user_list ή type (computer_usage_info) :: user_list(50) ορίζουμε έναν πίνακα 50 θέσεων σε κάθε μία από τις οποίες είναι μία δομή του παραπάνω τύπου 3

Ανάθεση τιμών σε σύνθετες μεταβλητές Οι τιμές που μπορεί να πάρει μια μεταβλητή ενός σύνθετου τύπου δεδομένων είναι ένα σύνολο τιμών για τα επιμέρους πεδία της. Για παράδειγμα οι μεταβλητές P και Q που έχουν οριστεί ως τύπου Point μπορούν να πάρουν τιμές ως εξής: P=Point(2.5,4.7) ή P=Point(a,2*b) όπου a,b πραγματικοί Για δήλωση σταθεράς π.χ. center γράφουμε Type(Point), Parameter:: center=point(3.4,8.6) Για πίνακα με στοιχεία τύπου computer_usage_info γράφουμε: User_list(1)= computer_usage_info("papadopoulos", "Costas", 2345, 700, "passwd1", 240) 4

Πρόσβαση στα επιμέρους πεδία structure_name%component_name Για παράδειγμα P%x αναφέρεται στη x-συντεταγμένη του σημείου. Κάθε πεδίο χρησιμοποιείται όπως κάθε άλλη μεταβλητή ίδιου τύπου. Απόδοση τιμών σε επιμέρους πεδία: P%x=4.35 Είσοδος έξοδος: Read *, user1%lastname Print *, user2%firstname 5

Εμφωλευμένες Δομές Type Point real :: x, y End Type Point Type Circle Type (Point) :: Center Real :: radius End Type Circle Type(Circle) : C C=Circle (Point (4.5, 3.4), 10.0) To C είναι κύκλος με κέντρο το σημείο (4.5, 3.4) και ακτίνα 10. Ισοδύναμα: C%Center%x=4.5; C%Center%y=3.4; C%radius=10.0 6

Δημιουργία νέου τύπου δεδομένων: παράδειγμα προσαρμογή από: [E.J. Akin (2003), Object Oriented Programming via Fortran 90/95] program create_a_type implicit none type chemical_element character (len=2):: symbol integer:: atomic_number real:: atomic_mass end type type (chemical_element):: argon,carbon,neon type (chemical_element):: Periodic_Table(109) real:: mass carbon%symbol="ca" carbon%atomic_number=6 carbon%atomic_mass =12.010 argon=chemical_element("ar",18,26.98) 7

Δημιουργία νέου τύπου δεδομένων: παράδειγμα write(*,*)"dwse onoma stoixeiou me 2 & grammata, atomiko arithmo, maza" read(*,*) neon Periodic_Table(5)=argon Periodic_Table(17)=carbon Periodic_Table(55)=neon Αν ο χρήστης δώσει: Ne 23 56.87 mass=periodic_table(5)%atomic_mass το πρόγραμμα θα τυπώσει: write(*,*) mass 26.98!Η ατομική μάζα του argon write(*,*) neon Ne 23 56.87!Τα στοιχεία του neon write(*,*) Periodic_Table(17) Ca 6 12.01!Τα στοιχεία του carbon end program create_a_type 8

Δημιουργία σύνθετου τύπου δεδομένων προσαρμογή από: [E.J. Akin (2003), Object Oriented Programming via Fortran 90/95] program create_composite_type implicit none type chemical_element character (len=2) :: symbol integer :: atomic_number real :: atomic_mass end type type history character (len=31) :: scientist_name integer :: year_found type (chemical_element) :: chemelement end type history type (chemical_element) :: argon,carbon,neon,oxygen type (history) :: oxygen_history type (chemical_element) :: Periodic_Table(109) real :: mass 9

Δημιουργία σύνθετου τύπου δεδομένων argon=chemical_element("ar",18,26.98) write(*,*)"dwse onoma (2 letters), atomiko arithmo, maza" read(*,*) neon carbon%atomic_mass =12.010; carbon%atomic_number=6 carbon%symbol="ca" Periodic_Table(5)=argon Periodic_Table(17)=carbon Periodic_Table(55)=neon mass=periodic_table(5)%atomic_mass write(*,*) mass write(*,*) neon write(*,*) Periodic_Table(17) oxygen=chemical_element("o", 76, 190.2) oxygen_hist=history ("Joseph Pristley", 1774, oxygen) write(*,*) oxygen_hist end program create_composite_type 10

Δημιουργία σύνθετου τύπου δεδομένων Αν ο χρήστης δώσει: Ne 23 56.87 Το πρόγραμμα θα τυπώσει: 26.98 Ne 23 56.87 Ca 6 12.01 Joseph Pristley 1774 O 76 190.2 11

Δομές σαν παράμετροι συναρτήσεων PROGRAM POINTS_LINES Implicit none Type Point real :: x, y End Type Point Type(Point) :: P1,P2; character(1) :: response 12

Δομές σαν παράμετροι συναρτήσεων DO write (*,'(1X,A)', Advance="no") & "Enter coordinates of points P1,P2: " read *, P1%x, P1%y, P2%x, P2%y print '(1X,2(A,"(",F5.2,",",F5.2,")"),A,F5.2)',& "Distance between ",P1%X,P1%Y," and ",P2%X,P2%Y,& " is ", Distance(P1,P2) Call FindLine(P1,P2) Write (*,*) "More points (y or n)? " read *, response If (response/="y") Exit END DO Contains FUNCTION DISTANCE(P1,P2)... SUBROUTINE FINDLINE(P1,P2)... END PROGRAM POINTS_LINES 13

Δομές σαν παράμετροι συναρτήσεων FUNCTION DISTANCE(P1,P2) Type(Point), INTENT(IN) :: P1,P2 Real :: Distance Distance=SQRT((P2%X-P1%X)**2+(P2%Y-P1%Y)**2) END FUNCTION DISTANCE SUBROUTINE FINDLINE(P1,P2) Type(Point), INTENT(IN) :: P1,P2 Real :: m,b IF (P1%x==P2%x)THEN PRINT *, "Line is vertical line x= ", P1%X ELSE m=(p2%y-p1%y)/(p2%x-p1%x) b=p1%y-m*p1%x PRINT *, "Equation of line is y= ", m, "x+ ", b END IF END SUBROUTINE FINDLINE 14

Ψευδο-OOP στην Fortran 90/95 προσαρμογή από: [Fortran Wiki] module klasi_rectangle implicit none type Rectangle real :: base, height end type Rectangle contains function rectangle_area(r) result(area) type (Rectangle), intent(in):: r real :: area area=r%base * r%height end function rectangle_area end module klasi_rectangle 15

Ψευδο-OOP στην Fortran 90/95 module klasi_circle implicit none real :: pi=3.141592653589931 type Circle real :: radius end type Circle contains function circle_area(c) result(area) type (Circle), intent (in):: c real :: area area=pi*((c%radius)*(c%radius)) end function circle_area end module klasi_circle 16

Ψευδο-OOP στην Fortran 90/95 προσαρμογή από: [Fortran Wiki] program geometry use klasi_circle use klasi_rectangle implicit none interface compute_area module procedure rectangle_area, circle_area end interface type (Rectangle) type (Circle) real :: tetragwno :: kyklos :: emvado 17

Ψευδο-OOP στην Fortran 90/95... tetragwno=rectangle(2.1,4.3) emvado = compute_area(tetragwno) write(6,100) tetragwno, emvado 100 format("area of ", f3.1," by ", f3.1," & rectangle is ", f5.2) kyklos=circle(5.4) emvado=compute_area(kyklos) write(6,200) kyklos, emvado 200 format("area of circle with ",f3.1, & " radius is ",f9.5) end program geometry ΕΞΟΔΟΣ: Area of 2.1 by 4.3 rectangle is 9.03 Area of circle with 5.4 radius is 91.60885 18

Ψευδο-OOP στην Fortran 90/95 [Fortran Wiki] module class_circle!προσαρμογή από [Fortran Wiki] implicit none private public :: Circle, circle_area, circle_print real :: pi = 3.1415926535897931d0! Class-wide! private constant type Circle real :: radius end type Circle contains function circle_area(this) result(area) type(circle), intent(in) :: this real :: area area = pi * this%radius**2 end function circle_area 19

subroutine circle_print(this) type(circle), intent(in) :: this real :: area area = circle_area(this) print *, 'Circle: r = ', this%radius, ' area = ', area end subroutine circle_print end module class_circle program circle_test use class_circle implicit none type(circle) :: c! Δήλωση μεταβλητής τύπου! Circle c = Circle(1.4)! Χρήση του έμμεσου constructor! με radius = 1.4 call circle_print(c)! Κλήση υπορουτίνας της κλάσης end program circle_test 20

OOP στη Fortran 2003 module class_circle!προσαρμογή από [Fortran Wiki] implicit none private real :: pi = 3.1415926535897931d0! Class-wide private constant type, public :: Circle real :: radius contains procedure :: area => circle_area procedure :: print => circle_print end type Circle Τα αντικείμενα «περιέχουν» και υποπρογράμματα! 21

OOP στη Fortran 2003 contains function circle_area(this) result(area) class(circle), intent(in) :: this real :: area area = pi * this%radius**2 end function circle_area subroutine circle_print(this) class(circle), intent(in) :: this real :: area area = this%area()! Call type-bound function print *, 'Circle: r = ', this%radius, & ' area = ', area end subroutine circle_print end module class_circle 22

OOP στη Fortran 2003 program circle_test!προσαρμογή από [Fortran Wiki] use class_circle implicit none real :: r type(circle) :: c! Δήλωση μετ/τής τύπου Circle read *, r! Διάβασμα ακτίνας κύκλου c = Circle(r)! Χρήση του έμμεσου constructor! με radius = r call c%print! Κλήση υπορουτίνας του τύπου end program circle_test 23

OOP στη Fortran 2003: κληρονομικότητα 24

OOP στη Fortran 2003: κληρονομικότητα Χρήση του δηλωτικού extends Μεταβλητές και υποπρογράμματα της «μητρικής» κλάσης κληρονομούνται χωρίς να δηλώνονται ξανά 25

OOP στη Fortran 2003: κληρονομικότητα Αντί για this μπορεί να χρησιμοποιηθεί άλλο όνομα. Υπενθύμιση ότι η πραγματική παράμετρος είναι το αντικείμενο που περιέχει το υποπρόγραμμα. 26

OOP στη Fortran 2003: κληρονομικότητα Υποπρογράμματα με είσοδο αντικείμενο της θυγατρικής κλάσης Centered_circle 27

OOP στη Fortran 2003: κληρονομικότητα 28

Μετάφραση από ξεχωριστά αρχεία Έστω ότι έχουμε γράψει τα modules στο αρχείο modfile.f03 και το κυρίως πρόγραμμα στο αρχείο progfile.f03. Πώς κάνουμε compilation; Δύο τρόποι Σε 1 βήμα: gfortran modfile.f03 progfile.f03 o program Σε 2 βήματα: 1. gfortran c modfile.f03 παράγεται αρχείο modfile.o (objective code file) 2. gfortran modfile.o progfile.f03 o program Παρόμοια για περισσότερα αρχεία. 29

Αντικειμενοστραφής προγραμματισμός (i) Αντικειμενοστραφές (object-oriented) μοντέλο ανάπτυξης λογισμικού Το πρόγραμμα είναι οργανωμένο ως ένα σύνολο από αλληλεπιδρώντα αντικείμενα Κάθε αντικείμενο περιέχει: δεδομένα (data), που χαρακτηρίζουν την κατάστασή του μεθόδους (methods), δηλαδή κώδικα που υλοποιεί τη συμπεριφορά του ενθυλάκωση (encapsulation) 30

Αντικειμενοστραφής προγραμματισμός (ii) Βασικές αρχές Κατά την ανάλυση και τη σχεδίαση, δείτε τα αντικείμενα βάσει της διεπαφής τους (interface) και όχι βάσει της υλοποίησής τους Προσπαθήστε να κρύψετε όσο το δυνατόν μεγαλύτερο μέρος της υλοποίησης Προσπαθήστε να επαναχρησιμοποιήσετε αντικείμενα Προσπαθήστε να ελαχιστοποιήσετε τις διασυνδέσεις μεταξύ αντικειμένων 31

Αντικειμενοστραφής προγραμματισμός (iii) Κύρια χαρακτηριστικά Κληρονομικότητα (inheritance) Πολυμορφισμός (polymorphism) Απόκρυψη πληροφορίας (information hiding) 32

Αντικειμενοστραφής προγραμματισμός (iv) Πλεονεκτήματα Φυσική περιγραφή, τουλάχιστον για ορισμένες περιοχές εφαρμογών Αφαίρεση, δόμηση, επαναχρησιμοποίηση Ιδιαίτερα διαδεδομένος σήμερα, πληθώρα γλωσσών και εργαλείων τον υποστηρίζουν Μειονεκτήματα Υπερτιμημένος... Διόγκωση κώδικα 33