Οπτικός Προγραμματισμός ( C++ Builder 5.0 ) Συνέχεια του αντικειμενoστραφούς προγραμματισμού Επέκταση των κλάσεων σε Visual Components (Window Controls) Κατασκευή του Interface στο Design Time, και καθορισμός πολλών παραμέτρων των αντικειμένων (properties). Επιλογή από βιβλιοθήκη έτοιμων visual components και προσαρμογή στις ανάγκες της εφαρμογής Τα σύγχρονα λειτουργικά συστήματα είναι Object Oriented και βασίζονται σε visual objects (windows, controls, buttons κ.λ.π.) Κατασκευή visual objects που μπορεί να είναι επαναχρησιμοποιήσιμα από άλλες εφαρμογές (ActiveX Controls, COM objects) Πολλές πλατφόρμες ανάπτυξης Οπτικού Προγραμματισμού, C++Builder, Delphi, MS Visual C++, Visual Basic, Visual Java Σπύρος Καζαρλής
Event-Driven Programming ( EDP ) Οδηγούμενος από συμβάντα προγρ/σμός - ακολουθιακός προγρ/σμός Προγραμματισμός για ανταπόκριση σε συμβάντα Το πρόγραμμα δεν καθορίζει την σειρά ενεργειών του χρήστη, αλλά αποκρίνεται σε αυτές Το πρόγραμμα δεν μπορεί να γνωρίζει την επόμενη ενέργεια του χρήστη Δύο κατηγορίες συμβάντων : User Events , System Events Όταν συμβαίνει ένα event, ο C++ Builder κοιτάει άν έχετε φτιάξει κώδικα χειρισμού του event και τον εκτελεί. Αλλιώς τίποτα δεν συμβαίνει. Φτιάχνουμε κώδικα μόνο για τα events που μας ενδιαφέρουν, αγνοώντας τα υπόλοιπα
Το Ολοκληρωμένο Περιβάλλον Ανάπτυξης ( IDE )
IDE - Το Μενού "File" New New Application New Form New Frame Open Open Project Reopen Save Save As Save Project As Save All Close All Include Unit Hdr (Unit Header File) Print Exit
Compile, Make, Build, Run Project Menu Compile Unit Alt+F9 Μεταγλωττίζει το τρέχον cpp αρχείο Make Project Ctrl+F9 Μεταγλωττίζει ότι έχει αλλάξει και παράγει το exe, κάνοντας link Build Project Μεταγλωττίζει όλα τα πηγαία αρχεία και παράγει το exe, κάνοντας link Run Menu Run F9 εκτελεί το πρόγραμμα
IDE - Οι μπάρες εργαλείων ( toolbars ) 1 Standard Toolbar New Δημιουργία νέου αρχείου κ.λ.π. Open Άνοιγμα αρχείου, project κ.λ.π. Save Αποθήκευση του τρέχοντος αρχείου Save All Αποθήκευση όλων των αρχείων Open Project Άνοιγμα υπάρχοντος project Add File to Project Προσθήκη αρχείου στο project Remove File from Project Αφαίρεση αρχείου από το project View Toolbar View Unit Εμφάνιση πηγαίου κώδικα View Form Εμφάνιση Φόρμας Toggle Form/Unit Εναλλαγή μεταξύ Φόρμας και κώδικα New Form Δημιουργία νέας φόρμας
IDE - Οι μπάρες εργαλείων ( toolbars ) 2 Debug Toolbar Run Εκτέλεση της εφαρμογής Pause Προσωρινή παύση της εφαρμογής Trace Into Εκτέλεση μίας γραμμής κώδικα, με διακλάδωση στις υπορουτίνες Step Over Εκτέλεση μιας γραμμής κώδικα, χωρίς διακλάδωση στις υπορουτίνες Custom Toolbar Help Contents Εμφάνιση περιεχομένων βοήθειας Μπορείτε να προσθέσετε τις δικές σας επιλογές σε αυτή τη μπάρα εργαλείων μέσω της επιλογής : View – Toolbars - Customize
IDE - Οι μπάρες εργαλείων ( toolbars ) 3 Components Palette Περιέχει μία βιβλιοθήκη από έτοιμα components, για χρήση σε εφαρμογές, ομαδοποιημένα σε κατηγορίες. Οι πιό κοινές κατηγορίες είναι : Standard Additional Win32 System Dialogs Win 3.1 Desktops Toolbar Pick List Επιλογή από τις ήδη αποθη- κευμένες επιφάνειες εργασίας Save Current Desktop Αποθηκεύει τις ρυθμίσεις της επιφάνειας εργασίας Set Debug Desktop Καθορίζει την τρέχουσα επιφά- νεια εργασίας ως αυτή που θα ισχύει κατά την εκτέλεση προγραμμάτων
Επιθεωρητής Αντικειμένων - Object Inspector Εμφανίζει την κλάση και το όνομα του τρέχοντος component (Form, button, …) Επιτρέπει την επιλογή αντικειμένου (component) από αυτά που έχουν ενσωμα- τωθεί στην εφαρμογή. Έχει δύο σελίδες : Σελίδα ιδιοτήτων (properties) Εμφανίζει τις ιδιότητες του αντικειμένου που μπορούν να καθοριστούν κατά την σχεδίαση (published properties) Σελίδα συμβάντων (events) Εμφανίζει τα συμβάντα που σχετίζονται με το αντικείμενο και για κάθε συμβάν την ρουτίνα που το χειρίζεται (αν έχει καθοριστεί)
Βασικά πλήκτρα του C++ Builder Πλήκτρα λειτουργιών του περιβάλλοντος - IDE Alt + F9 Compile Unit (Μεταγλώττιση ενός πηγαίου αρχείου) Ctrl + F9 Make Project (Μεταγλώττιση και κατασκευή exe) F9 Run (εκτέλεση της εφαρμογής) F12 Toggle Form/Unit (Εναλλαγή φόρμας / πηγαίου κώδικα F1 Βοήθεια του C++ Builder για το σημείο που βρισκόμαστε Πλήκτρα του επεξεργαστή κειμένου (κώδικα) Ctrl + X Cut (αποκοπή επιλεγμένου τμήματος κειμένου) Ctrl + C Copy (αντιγραφή επιλεγμένου τμήματος κειμένου) Ctrl + V Paste (επικόλληση τμήματος κειμένου) Ctrl + S Save (αποθήκευση του τρέχοντος πηγαίου αρχείου) Shift+Ctrl+n Τοποθετεί το σημάδι με αριθμό “n” (0..9) Ctrl+n Πηγαίνει στο σημάδι “n” (0..9)
Πώς κτίζεται μία εφαρμογή - Forms and Units Το βασικό αντικείμενο πάνω στο οποίο κτίζεται μία εφαρμογή είναι οι Φόρμες (Forms). Η Φόρμα είναι στην ουσία ένα πλαίσιο πάνω στο οποίο ενσωματώνονται άλλα αντικείμενα όπως Μενού, Κουμπιά, Κουτιά εισαγωγής κειμένου, Ετικέτες κ.λ.π. Οι Φόρμες είναι αντικείμενα που παράγονται από την κλάση TForm. Όταν ξεκινά ο C++ Builder εμφανίζει ήδη ένα κενό Project και μία έτοιμη κενή φόρμα με όνομα Form1 και κλάση TForm1 που είναι παράγωγη της TForm. Κάθε φόρμα έχει και ένα αντίστοιχο αρχείο πηγαίου κώδικα (unit) με επέκταση (.cpp) που περιέχει τις απαραίτητες δηλώσεις και ρουτίνες για την φόρμα. Εκεί γράφουμε τον κώδικα για τον χειρισμό των συμβάντων της φόρμας (event handlers). Κάθε unit έχει και ένα αρχείο επικεφαλίδων (header file) με επέκταση (.h) όπου βρίσκονται οι δηλώσεις της κλάσης και των ρουτινών της. Τα αρχικά ονόματα της φόρμας και του αρχείου πηγαίου κώδικα μπορούν να τροποποιηθούν κατά βούληση
Πώς κτίζεται μία εφαρμογή - Διαδοχικά βήματα Δημιουργία ενός νέου Project εφαρμογής με την επιλογή File – New Application Αλλαγή των ιδιοτήτων της βασικής φόρμας, άμεσα (π.χ. αλλαγή μεγέθους) ή μέσω του Object Inspector, σύμφωνα με τις απαιτήσεις της εφαρμογής. Ενσωμάτωση στη φόρμα αντικειμένων (components) από το Component Palette με διαδικασία drag&drop. Αλλαγή των ιδιοτήτων των αντικειμένων άμεσα ή με τη βοήθεια του Object Inspector. Συγγραφή των ρουτινών διαχείρισης συμβάντων (event handlers) για την φόρμα και τα αντικείμενα (για όποια αντικείμενα και για όποια συμβάντα χρειάζεται). Μεταγλώττιση του κώδικα (compile) και διόρθωση των σφαλμάτων Κτίσιμο του εκτελέσιμου (exe) με την επιλογή Project-Make Project όπου γίνεται η σύνδεση (linking) με τις βιβλιοθήκες και διόρθωση τυχόν σφαλμάτων. Εκτέλεση της εφαρμογής (Run) και δοκιμή.
Το μοντέλο Properties-Methods-Events (PME) Κάθε αντικείμενο (Φόρμα, Κουμπί, Ετικέτα, ...) που χρησιμοποιούμε από την βιβλιοθήκη του C++ Builder το χειριζόμαστε μέσω των Ιδιοτήτων του (Properties) μέσω των Μεθόδων του (Methods) και μέσω των Συμβάντων του (Events). Οι ιδιότητες είναι στην ουσία μέλη-δεδομένα (data members) της κλάσης του κάθε αντικειμένου που μπορούν να καθοριστούν είτε κατά τη σχεδίαση (design time) είτε κατά την εκτέλεση (run time) της εφαρμογής (π.χ. τίτλος, χρώμα, μέγεθος, font, κ.λ.π.). Οι μέθοδοι είναι συναρτήσεις-μέλη (function members) της κλάσης του κάθε αντικειμένου που μας επιτρέπουν να χειριζόμαστε τα δεδομένα της κλάσης (π.χ. Edit1->Clear(), Form1->Show() ). Τα συμβάντα είναι ενέργειες που μπορεί να κάνει ο χρήστης με το συγκεκριμένο αντικείμενο (π.χ. διπλό κλικ, πάτημα κουμπιού, αλλαγή κειμένου, επιλογή από μενού, αλλαγή μεγέθους, drag&drop κ.λ.π.). Για όσα συμβάντα χρειάζεται, ο χρήστης αναπτύσσει τον κώδικα διαχείρισης του συμβάντος (event handler) όπου καθορίζεται το τί θα συμβεί όταν λάβει χώρα το συγκεκριμένο event (π.χ. Onclick, OnClose, OnResize, OnDragDrop, κ.λ.π.)
Άσκηση 1 - 1 Δημιουργία νέου project. Αλλαγή του Caption της Form1 σε «Ασκηση 1-1». Ενσωμάτωση κουμπιού από το Standard toolbar. Αλλαγή του caption σε “Close”. Δημιουργία Event handler για το event “OnClick”. void __fastcall TForm1::Button1Click(TObject *Sender) { Form1->Close(); }
Άσκηση 1 - 2 Δημιουργία νέου project. Επανάληψη των βημάτων της άσκησης 1-1. Ενσωμάτωση δεύτερου κουμπιού και αλλαγή του Caption σε «Εμφάνιση». Ενσωμάτωση EditBox. Δημιουργία Event Handler για το Onclick Event του δεύτερου κουμπιού. void __fastcall TForm1::Button2Click(TObject *Sender) { MessageBox(NULL,Edit1->Text.c_str(),"Μηνυμα",MB_OK); }