Παρουσίαση Delphi Μέμος-Μπαγκράτσας Ιωάννης 1232 Μαργαρίτης Νικόλαος 1226
Object Oriented Pascal Το Delphi χρησιμοποιεί την Object Oriented Pascal. Ο περισσότερος κώδικας γράφεται αυτόματα κάθε φορά που επεξεργαζόμαστε τα components (θα δούμε πιο κάτω τι είναι). Σε αρκετές περιπτώσεις θα χρειαστεί να γράψουμε εμείς τον κώδικα για διάφορες συναρτήσεις του προγράμματός μας.
Βασικά χαρακτηριστικά Βασικοί τύποι δεδομένων: Integer Char String Boolean Και διάφοροι άλλοι τύποι. Παράδειγμα δήλωσης μεταβλητής: var avar : Integer; {μεταβλητή τύπου Integer} Παράδειγμα δήλωσης σταθεράς: const aconst : Char; {σταθερά τύπου Char}
Βασικά χαρακτηριστικά Βασικές πράξεις: +, -, /, * Παράδειγμα: avar := a + b/c a*d; Η πρωτεραιότητα των τελεστών είναι ίδια με αυτή που χρισιμοποιούμε στα μαθηματικά.
Βασικά χαρακτηριστικά Τελεστές σύγκρισης: =, <, >, <=, >=, not Παράδειγμα: a:=9; b:=9; a>=b {TRUE} Προσοχή: = είναι τελεστής σύγκρισης, ενώ := τελεστής εκχώρησης τιμής.
Βασικά χαρακτηριστικά Δομές Ελέγχων: if...then...else case statements Παράδειγμα if...then...else if cond_expr_1 then begin true_statements; end else begin false_statements; end;
Βασικά χαρακτηριστικά Παραδειγμα case statements case operator of '*' : result:= number1 * number2;.. '-' : result:= number1 - number2; otherwise invalid_operator := 1
Βασικά χαρακτηριστικά Δομές επανάληψης for loops while loops repeat loops goto loops Παράδειγμα for loop: for i := 1 to 10 do do_something; Παράδειγμα while loop: while i <= 10 begin i := i + 1; do_something; end; {do_something 10 φορές}
Βασικά χαρακτηριστικά Παράδειγμα repeat loop: i := 0; repeat i := i + 1; do_something; until i = 10; Παράδειγμα goto loop: { Some code} label label_name; {more code} goto label_name;
Arrays Οι πίνακες είναι μια ομαδοποίηση μεταβλητών του ίδιου τύπου δεδομένων. Παράδειγμα πίνακα: program Arrays; var a: array[1..5] of Integer; {Δήλωση πίνακα ακεραίων 5 θέσεων} begin a[1] := 12; a[2] := 23; a[3] := 34; a[4] := 45; a[5] := 56; end.
Pointers Ένας pointer (δείκτης) είναι μια μεταβλητή που περιέχει την διεύθηνση μνήμης μιας άλλης μεταβλητής. Παράδειγμα: program Pointers; var i: integer; p: ^integer; {δήλωση δείκτη ακεραίων} begin p := @i; {αρχικοποίηση τιμής με την διεύθυνση p^ := 2; μιας άλλης μεταβλητής} end.
Καλό είναι κάθε φορά που δεσμεύουμε μνήμη, όταν δεν την χρειαζόμαστε πια να την αποδεσμεύουμε με την FreeMem Δυναμική Δέσμευση Μνήμης Δυναμική δέσμευση μνήμης σημαίνει ότι ο χώρος μνήμης που χρησιμοποιούμε δεν βρίσκεται στη στοίβα του προγράμματος αλλά στη σωρό. Με αυτό το τρόπο μπορούμε να διατηρούμε το χώρο μνήμης μια μεταβλητής ακόμα και όταν διαγράφεται το μπλοκ μνήμης ενός υποπρογράμματος. Ο καλύτερος τρόπος για να δεσμεύσουμε μνήμη είναι να χρησιμοποιήσουμε την AllocMem.
Δυναμική Δέσμευση Μνήμης Παράδειγμα Δυναμικής Δέσμευσης μνήμης: var APtr : String; begin APtr := AllocMem(SizeOf(String)); APtr^ := `Per'; end; Παράδειγμα Αποδέσμευσης μνήμης: FreeMem(APtr);
Procedures and Functions Οι διαδικασίες (procedures) και οι συναρτήσεις (functions) είναι υποπρογράμματα που καλούνται από το κυρίως πρόγραμμα. Η βασική διαφορά τους είναι ότι οι διαδικασίες δεν επιστρέφουν κάποια τιμή σε αντίθεση με τις συναρτήσεις. Παράδειγμα διαδικασίας: procedure Hello(i : Integer); begin do_something; end; {Πέρνει όρισμα ένα ακέραιο}
Procedures and Functions Παράδειγμα συνάρτησης: program Functions; var Answer: Integer; function Add(i, j:integer): Integer; begin Add := i + j; end; begin Answer := Add(1,2); Writeln(Add(1,2)); end.
Type, Records Μπορούμε να δημιουργήσουμε δικούς μας τύπους δεδομένων χρησιμοποιώντας τη δεσμευμένη λέξει type. Συνήθως τη λέξει type τη χρησιμοποιούμε μαζί με τις εγγραφες (records). Μια εγγραφή είναι ένας αφηρημένος τύπος δεδομένων που περιέχει διάφορα πεδία.
Type, Records Παράδειγμα εγγραφής: program Types; Type StudentRecord = Record Number: Integer; Name: String; end; var Student: StudentRecord; begin Student.Number := 12345; Student.Name := 'John Smith'; end. {η δήλωση της εγγραφής} {τα πεδία της} {μεταβλητή καινουριου τύπου} {χρήση των πεδίων}
Classes Οι κλάσεις είναι συλλογή πεδίων και μεθόδων (συναρτήσεων ή διαδικασιών), που συνεργάζονται για την επίτευξη προγραμματιστικών σκοπών. Μπορούν να περιλαμβάνουν: Private, public και protected πεδία Constructors Destructors Μεθόδους (συναρτήσεις ή διαδικασίες) Ένα pointer με ονομα Self
Classes Private δηλώνουμε τα πεδία που μπορούν να χρησιμοποιηθούν μόνο από τις μεθόδους της κλάσης στην οποία ανήκουν. Public δηλώνουμε τα πεδία που μπορούμε να χρησιμοποιήσουμε έξω από τα όρια της κλάσης. Protected δηλώνουμε τα πεδία που δε θέλουμε να χρησιμοποιούνται έξω από τα όρια μιας κλάσης, αλλά μόνο από τις κλάσεις που κληρονομούνε από αυτήν.
Classes Παράδειγμα κλάσης: animal = class private height : Integer; weight :Integer; public function getweight; function getheight; procedure setweight(weight : Integer); procedure set height(height : Integer); constructor create; {o constructor της κλάσης} destructor kill; {ο destructor της κλάσης} end;
Classes Yλοποίηση Constructor: constructor dog.create; begin inherited create; height := 0; weight := 0; end; Υλοποίηση Destructor: destructor dog.kill; begin end; (συνήθως οι destructors χρησιμοποιούνται για αποδέσμευση μνήμης ή για κλείσιμο αρχείων όταν καταστρέφονται τα αντικείμενα)
Κληρονομικότητα Κληρονομικότητα λέμε το να δημιουργούμε κλάσεις με βάση μία κλάση που έχουμε ήδη φτιάξει. Οι κλάσεις αυτές θα μπορούν να έχουν πεδία της μητρικής (ήδη υπάρχουσας) κλάσης. Παράδειγμα κληρονομικότητας (μητρική κλάση animal). dog = class(animal); private name : String; public procedure barks; end; (H κλάση dog κληρονομεί από την κλάση animal)
Υπερφόρτωση μεθόδων Με τον όρο υπερφόρτωση μεθόδων στην αντικειμενοστραφής pascal,εννοούμε το να μπορούμε να έχουμε παραπάνω από μία μεθόδους με το ίδιο όνομα αλλά με διαφορετικό πλήθος ορισμάτων. Παράδειγμα υπερφόρτωσης: procedure car(weight,height : Integer); procedure car(weight,height : Integer, label : String);
Delphi IDE Τα κύρια μέρη του Delphi είναι: Main menu και toolbars Component palette Form Designer Code Editor Object Inspector
Object Inspector Form Desinger Components Pallete Code Editor Main menu and toolbars
Projects Projects είναι μια συλλογή αρχείων που συνεργάζονται για την δημιουργία ενός εκτελέσιμου αρχείου ή ενος DLL. Επίσης υπάρχουν και τα project groups που είναι συλλογή από projects. Ένα project πρέπει να έχει το λιγότερο 4 αρχεία: project source file main form unit main form resource file project resource file
Projects files Project file Είναι το αρχείο που περιέχει τον αρχικό κώδικα κατα την εκκίνηση του project. Main form unit Περιέχει δηλώσεις κλάσεων και τις βασικής φόρμας. Main form resource file και project resource file Είναι δυαδικά αρχεία που περιγράφουν τη βασική φόρμα και τις εικόνες της εφαρμογής.
Types of Files.pas: Πηγαίος κώδικας της Object Pascal.dfm: Δυαδικό αρχείο περιγραφής φόρμας.dsk: Αυτό το αρχείο αποθηκεύει τη μορφή του Desktop.dof: Περιέχει τις επιλογές του project.exe: Το εκτελέσιμο.cfg: Περιέχει τις ρυθμίσεις του compiler και του linker για το συγκεκριμένο project.dcu: Τα αρχεία που παράγει ο compiler.dpr: Πηγαίος κώδικας του project.res: Το πηγαίο μεταφρασμένο δυαδικο αρχείο
Project
Frameworks Framework είναι μια συλλογή κλάσεων για την απλοποίηση προγραμματισμού σε παραθυρικό περιβάλλον. Πολλά frameworks έχουν κλάσεις για παράθυρα, κουμπιά, εικόνες bitmap κτλ.
Components Components είναι αντικείμενα που πραγματοποιούν ένα προγραμματιστικό σκοπό. Στο Delphi χρησιμοποιούμε VCL (Visual Components Library) components. Properties, Methods και Events χαρακτηρίζουν τον τρόπο λειτουργίας ενός VCL components.
Properties Properties είναι τα στοιχεία ενός component που ελέγχουν τον τρόπο λειτουργίας του. Ο object inspector περιέχει όλα τα properties που μπορούμε να επεξεργαστούμε κατά τη διάρκεια του σχεδιασμού ενος component. Αρκετά properties είναι κοινά όπως το Name που έχει το όνομα του αντικειμένου. Η επεξεργασία των τιμών γίνεται από την δεξιά στήλη του object inspector
Methods Οι μέθοδοι σε ένα component είναι functions και procedures που κάνουν το component να εκτελέσει μια συγκεκριμένη διεργασία.
Events Τα παράθυρα λέγεται ότι είναι οδηγούμενα-απο-ταγεγονότα (event-driven) περιβάλλοντα. Event-driven σημαίνει ότι η εκτέλεση ενός προγράμματος εξαρτάται απο διάφορα γεγονότα που θα γίνουν στο περιβάλλον του προγράμματος όπως mouse clicks κλπ. Υπάρχουν συγκεκριμένες μέθοδοι που επεξεργάζονται αυτά τα γεγονότα. Αυτές οι μέθοδοι λέγονατι event hadlers.
Events με Object Inspector Μέσω του object inspector μπορούμε να χειριστούμε πολύ εύκολα τους event handlers. Επιλέγοντας το tab events στον object inspector μπορούμε να δούμε κάποιους πρώτυπους event handlers. Κάνοντας διπλό κλικ στη δεξιά στήλη εμφανιζεται ο κώδικας του handler όπου τον επεξεργαζόμαστε όπως θέλουμε εμείς.
Component Pallete Τα components τα εισάγουμε μέσω του component pallete κάνοντας click σε αυτό που θέλουμε και ξανά click εκεί που θέλουμε να το τοποθετήσουμε μέσα στο form. Ύστερα μπορούμε να τα μετακινήσουμε ή να αυξήσουμε το μέγεθος τους όπως επιθυμούμε.
Component Pallete Παράδειγμα δημιουργίας ενός κουμπιού: Απο το standard tab επιλέγουμε το εικονίδιο ok. Κάνουμ κλικ στο form και εμφανίζεται ένα κουμπί.
Object Tree View Με το Object Tree View μπορούμε να βλέπουμε όλα τα αντικείμενα που έχουμε δημιουργήσει.
Compile, Run Για να κάνουμε build ή compile το πρόγραμμα, επιλέγουμε τις αντίστοιχες εντολές από το menu Project Για να τρέξουμε το πρόγραμμα, επιλέγουμε run από το menu run ή πατάμε το αντίστοιχο κουμπί στο toolbar
Hell, oh World! Ένα απλό πρόγραμμα σε Delphi. Ξεκινώντας, επιλέγουμε απο το menu File, new application.
Hell, oh World! Στο Object Ispector, αλλάζουμε το Caption από Form1 σε Hell, oh World και το name σε Hell. Από το Components Pallete, κάνουμε κλικ στο εικονίδιο button και κλικ στο form για να εμφανιστεί ένα κουμπί. Επίσης κάνουμε κλικ στο εικονίδιο label και μετά κλικ στο form για να εμφανιστεί ένα νέο label.
Hell, oh World To αρχικό form θα πάρει την μορφή
Hell, oh World Κάνουμε διπλό κλικ στο button για να γράψουμε κώδικα. Προσθέτουμε την εντολή Label1.Caption := 'Hell, oh World';
Hell, oh World Κάνοντας κλικ στο εικονίδιο run εκτελείται το πρόγραμμα, το οποίο, με το που πατάμε το button, εμφανίζει Hell, oh World
ΤΕΛΟΣ