Συνέχεια του αντικειμενoστραφούς προγραμματισμού Επέκταση των κλάσεων σε Visual Components (Window Controls) Κατασκευή του Interface στο Design Time,



Σχετικά έγγραφα
Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

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

Δημιουργία μιας εφαρμογής Java με το NetBeans

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

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

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

ΜICROSOFT VISUAL STUDIO Eργ 1: Ανάπτυξη απλής εφαρµογής: Solutions, Projects, GUI, Events, Debugging. Εισαγωγή

To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Visual Basic Γλώσσα οπτικού

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Γ3.3.Μ7 ΕΠΑΝΆΛΗΨΗ ΜΈΡΟΣ Α: ΈΝΝΟΙΕΣ ΤΙ ΕΊΝΑΙ Η VISUAL BASIC ΤΙ ΜΠΟΡΟΎΜΕ ΝΑ ΚΆΝΟΥΜΕ ΜΕ ΤΗ VISUAL BASIC ΑΝΤΙΚΕΊΜΕΝΑ: ΦΌΡΜΑ ΚΑΙ ΧΕΙΡΙΣΤΉΡΙΑ ΕΤΙΚΈΤΑ LABEL

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

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

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

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

ΟΔΗΓΙΕΣ ΔΗΜΙΟΥΡΓΙΑΣ ΕΦΑΡΜΟΓΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΑΜΕΣΟΥ ΑΡΧΕΙΟΥ ΣΕ ΠΕΡΙΒΑΛΛΟΝ VISUAL STUDIO NET

ΜΑΘΗΜΑ Άνοιγμα Της Εφαρμογής Επεξεργασίας Κειμένου. 2. Κύρια Οθόνη Της Εφαρμογής Κειμένου ΣΤΟΧΟΙ:

ΜΑΘΗΜΑ 10 Ο ΟΡΓΑΝΩΣΗ ΤΗΣ Β ΓΙΑ ΧΡΗΣΤΕΣ (NON-EXPERTS) Α. ΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΕΠΙΛΟΓΩΝ 1. TOOLS DATA UTILITIES SWITCHBOARD MANAGER YES

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795

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

Visual Flowchart Γενικά

4 η Εργαστηριακή Άσκηση

Εισαγωγή στη Χρήση της Εφαρµογής Compaq Visual Fortran & του Microsoft Developer Studio

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΔΗΜΙΟΥΡΓΙΑ & ΧΡΗΣΗ ΒΙΒΛΙΟΘΗΚΩΝ

Ράβδος Εργαλείων, σχεδόν τα ίδια εργαλεία και εικονίδια υπάρχουν όπως στα άλλα προγράμματα που έχετε μάθει μέχρι σήμερα.

ΣΗΜΕΙΩΣΕΙΣ ΓΙΑ ΤΗ VISUAL BASIC Γ ΓΥΜΝΑΣΙΟΥ

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

Το MS Visual Studio επιτρέπει στον προγραμματιστή να αναπτύξει προγράμματα σε δύο διαφορετικές εκδόσεις της γλώσσας C++ : ISO/IEC C++ που αποτελεί

Ανάπτυξη εφαρμογής Input-Output

Ανάπτυξη εφαρμογής Input-Output

2 η Εργαστηριακή Άσκηση

ΜΑΘΗΜΑ Άνοιγμα Της Εφαρμογής Υπολογιστικών Φύλλων. 2. Κύρια Οθόνη Της Εφαρμογής Υπολογιστικών Φύλλων ΣΤΟΧΟΙ:

1. Άνοιγμα Και Κλείσιμο Της Εφαρμογής Φυλλομετρητή Ιστού (Internet Explorer)

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

B. Ενσωμάτωση Ιθαγενών Μεθόδων

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

New Project Windows Forms Applications

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

Εγχειρίδιο Χρήσης Εφαρμογής TRS Client

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Microsoft Excel Κεφάλαιο 2: Η δομή ενός φύλλου εργασίας... 26

Δραστηριότητα 1. Προγραμματίζω τον υπολογιστή (10 ώρες).

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

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

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

Joomla! with K2 - User Guide

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

Microsoft Office. Δρ. Νικόλαος Σγούρος

Δομημένος Προγραμματισμός

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

(3) Από την εργαλειοθήκη επιλέξτε το εργαλείο «ετικέτας (Label)». Δημιουργήστε μια ετικέτα στην φόρμα σας.

Δομημένος Προγραμματισμός

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

Εισαγωγή στο περιβάλλον Code::Blocks

Οπτικός Προγραμματισμός σε NetBeans με Java Swing

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

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

Εγχειρίδιο Οδηγιών. BrainStorm. Διαχείριση Πινάκων. Εισαγωγή, Μεταβολή, Διαγραφή Κατάταξη, Εντοπισμός Εγγραφών

Εγχειρίδιο Χρήσης Ενημέρωσης Λογισμικού Bluetooth Windows 7

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Εισαγωγή ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ Microsoft WINDOWS (95-98-NT-2000-XP)

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

Η γλώσσα προγραμματισμού C

ΔΟΜΗΜΕΝΟΣ ΟΠΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΠAΡΑΘΥΡΙΚΟ ΠΕΡΙΒΑΛΛΟΝ με τη Γλώσσα Προγραμματισμού VISUAL BASIC (1 ο ΕΠΙΠΕΔΟ)

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

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

ΔΕ10: Πληροφοριακά Συστήματα Διοίκησης IΙ Εργαστήριο # 2

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ MOODLE

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

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

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7 Κεφάλαιο 1: Windows XP Κεφάλαιο 2: Επιφάνεια εργασίας (desktop)... 15

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

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Βασίλειος Κοντογιάννης ΠΕ19

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

Μικρή Εισαγωγή στο wxdev-c++

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Βάσεις δεδομένων (Access)

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Transcript:

Συνέχεια του αντικειμενoστραφούς προγραμματισμού Επέκταση των κλάσεων σε Visual Components (Window Controls) Κατασκευή του Interface στο Design Time, και καθορισμός πολλών παραμέτρων των αντικειμένων (properties). Επιλογή από βιβλιοθήκη έτοιμων visual components και προσαρμογή στις ανάγκες της εφαρμογής Τα σύγχρονα λειτουργικά συστήματα είναι Object Oriented και βασίζονται σε visual objects (windows, controls, buttons κ.λ.π.) Κατασκευή visual objects που μπορεί να είναι επαναχρησιμοποιήσιμα από άλλες εφαρμογές (ActiveX Controls, COM objects) Πολλές πλατφόρμες ανάπτυξης Οπτικού Προγραμματισμού, MS Visual Studio (Visual C++, Visual Basic, Visual Java, Visual C#, Visual F#) C++Builder, Delphi, Eclipse, QT, Σπύρος Καζαρλής

Ο εγγενής ή μη διαχειριζόμενος κώδικας (Native / Unmanaged) αποτελεί κώδικα που γράφεται για συγκεκριμένο Λειτουργικό Σύστημα, και είναι μεταφρασμένος σε χαμηλό επίπεδο (κώδικας μηχανής με κλήσεις ρουτινών του ΛΣ). Πλεονεκτήματα: Οι παραγόμενες εφαρμογές είναι γρήγορες και αποδοτικές και μικρότερες συνολικά σε μέγεθος (bytes). Μειονεκτήματα: απαιτούν από τον προγ/στή συνετή διαχείριση της μνήμης (new/delete) και δεν μεταφέρονται σε άλλα Λειτ. Συστήματα. Ο διαχειριζόμενος κώδικας (Managed) αποτελεί κώδικα που μεταφράζεται σε ένα ενδιάμεσο επίπεδο (CLR-VM ή Middleware) το οποίο και τελικά μεταφράζεται κατά την εκτέλεση σε κώδικα μηχανής και κλήσεις ρουτινών ΛΣ που να είναι συμβατοί με την συγκεκριμένη πλατφόρμα εκτέλεσης μέσω ενός Just-In-Time Compiler (JIT). Πλεονεκτήματα: Αυτόματη διαχείριση μνήμης (garbage collection) και μεταφερσιμότητα (portability) Μειονεκτήματα: Οι παραγόμενες εφαρμογές είναι αργές, λιγότερο αποδοτικές και μεγαλύτερες συνολικά σε μέγεθος (bytes).

Πλατφόρμες παραγωγής Native / Unmanaged κώδικα: Συνήθως ο κώδικας C, C++ C++ Builder Delphi (Object Pascal) MS Visual C++ (MFC Library) Πλατφόρμες παραγωγής Μanaged κώδικα: Όλες οι γλώσσες του.net framework MS Visual C++ (.NET framework) (C#, Java, F#, Visual Basic, κ.λ.π.) Όλες οι εφαρμογές Java που τρέχουν μέσω του Java Virtual Machine Στο Microsoft Visual Studio μπορεί κανείς να προγραμματίσει σε γλώσσα C/C++ τόσο σε Native Code χρησιμοποιώντας την βιβλιοθήκη MFC (Microsoft Foundation Class Library) και παράγοντας MFC Applications, όσο και σε Managed Code χρησιμοποιώντας το.net framework και παράγοντας Windows Forms Applications που χρησιμοποιούν το ενδιάμεσο επίπεδο CLR (Common Language Runtime).

1983-1992 Microsoft C 1.0-7.0 1993 Microsoft Visual C++ 1.0 1995 Microsoft Visual Studio v 4.0 1997 Microsoft Visual Studio 97 (v 5.0) 1998 Microsoft Visual Studio v 6.0 2002 Microsoft Visual Studio.NET (v. 7.0) 2005 Microsoft Visual Studio 2005 (v. 8.0) 2008 Microsoft Visual Studio 2008 (v. 9.0) 2010 Microsoft Visual Studio 2010 (v. 10.0) 2012 Microsoft Visual Studio 2012 (v. 11.0) 2013 Microsoft Visual Studio 2013 (v. 12.0)

Οδηγούμενος από συμβάντα προγρ/σμός - ακολουθιακός προγρ/σμός Προγραμματισμός για ανταπόκριση σε συμβάντα Το πρόγραμμα δεν καθορίζει την σειρά ενεργειών του χρήστη, αλλά αποκρίνεται σε αυτές Το πρόγραμμα δεν βασίζεται σε ακολουθία ενεργειών ( void main() ). Υπάρχει συνάρτηση main() που κάνει αρχικοποιήσεις και εκτελεί τον βρόχο μηνυμάτων (Application::Run() ή CWinApp::InitInstance()). Το πρόγραμμα δεν μπορεί να γνωρίζει την επόμενη ενέργεια του χρήστη Δύο κατηγορίες συμβάντων : User Events, System Events Όταν συμβαίνει ένα event, η εφαρμογή ελέγχει άν υπάρχει αντίστοιχη κατασκευασμένη συνάρτηση με τον κώδικα για τον χειρισμό του event και την εκτελεί. Αλλιώς τίποτα δεν συμβαίνει. Φτιάχνουμε κώδικα μόνο για τα events που μας ενδιαφέρουν, αγνοώντας τα υπόλοιπα

New Project: Δημιουργία νέου Project New Web Site: Δημιουργία νέου Web Site. New Team Project: Δημιουργία Ομαδικού Project New File: Δημιουργία νέου αρχείου π.χ..cpp New Project from Existing Code: Δημιουργία νέου Project με βάση κώδικα που προυπάρχει

Open Project/Solution: Άνοιγμα υπάρχοντος Project ή ομάδας Projects Open Web Site: Άνοιγμα υπάρχοντος Web Site Team Project: Άνοιγμα ομαδικού Projet File: Άνοιγμα μεμονωμένου αρχείου π.χ..cpp Convert: μετατροπή Project

Add New Project Add New Web Site Add Existing Project Add Existing Web Site Close Close Solution Save file.ext Save file.ext as Save All Export Template (wizard) Source Control Page Setup Print Recent File / Projects Exit

Build Menu Build Solution F7 Μεταγλωττίζει όλα τα τροποποιημένα source αρχεία (make) και κάνει Link παράγοντας το.exe, για όλα τα Projects που περιλαμβάνονται στο Solution. Rebuild Solution Ctrl+Alt+F7 Μεταγλωττίζει όλα τα source αρχεία τροποποιημένα ή μη, και κάνει Link παράγοντας το.exe, για όλα τα Projects που περιλαμβάνονται στο Solution. Στην ουσία κάνει πρώτα Clean και μετά Build Clean Solution Διαγράφει όλα τα ενδιάμεσα και τελικά παραγόμενα αρχεία του Project, ώστε να μπορεί να παραχθεί νέο Build από την αρχή.

Build Menu Build Project Μεταγλωττίζει όλα τα τροποποιημένα source αρχεία και κάνει Link παράγοντας το.exe, για το τρέχον Project. Rebuild Project Μεταγλωττίζει όλα τα source αρχεία του τρέχοντος Project αλλαγμένα ή μη, και κάνει Link παράγοντας το.exe. Clean Project Διαγράφει όλα τα ενδιάμεσα και τελικά παραγόμενα αρχεία του Project, Project Only Build Only (Project), Rebuild Only (Project), Clean (Project), Link (Project) Χρησιμεύουν για μεταγλώττιση μόνο του επιλεγμένου Project σε ένα Solution, χωρίς τις τυχόν εξαρτήσεις του.

Build Menu Profile Guided Optimization Επιτρέπει την βελτιστοποίηση του κώδικα με βάση στοιχεία που συλλέγονται κατά την εκτέλεση της εφαρμογής (Profile) Batch Build Επιτρέπει τον πλήρη έλεγχο των εκδόσεων που παράγονται κατά το «κτίσιμο» της εφαρμογής (Debug Release, Win32 x64) Configuration Manager Καθορίζει τις παραμέτρους του «κτισίματος» της εφαρμογής Compile Ctrl + F7 Μεταγλωττίζει το τρέχον πηγαίο αρχείο ελέγχοντας για συντακτικά σφάλματα, και παράγει το αντίστοιχο αρχείο αντικειμενικού κώδικα.obj

Στο MS Visual Studio ο προγραμματιστής μπορεί να καθορίσει την παραγωγή του εκτελέσιμου προγράμματος σε μία από τις ακόλουθες επιλογές: 1. Debug Build: Κατά την μεταγλώττιση παράγονται πληροφορίες για debugging του κώδικα στο αρχείο <project>.pdb και δεν γίνεται βελτιστοποίηση του κώδικα. Συνήθως χρησιμοποιείται κατά την ανάπτυξη μίας εφαρμογής, καθώς διευκολύνει την διόρθωση σφαλμάτων. Τα παραγόμενα αρχεία εξόδου μαζί με το τελικό.exe δημιουργούνται στον φάκελο <Project>/DEBUG 2. Release Build: Δεν παράγονται πληροφορίες debugging και γίνεται βελτιστοποίηση του κώδικα. Χρησιμοποιείται για την τελική έκδοση του προγράμματος μετά την εκσφαλμάτωση. Τα παραγόμενα αρχεία εξόδου μαζί με το τελικό.exe δημιουργούνται στον φάκελο <Project>/RELEASE

Solution Explorer Εμφανίζει όλα τα Project ενός Solution και όλα τα αρχεία που αποτελούν ένα Project. External Dependencies: Τα.h αρχεία που χρησιμοποιεί το Project Header Files: Τα.h αρχεία με τις δηλώσεις κλάσεων και τύπων των πηγαίων αρχείων (.cpp) του Project Resource Files: Συνοδευτικά αρχεία με πόρους του Project (εικονίδια, μενού, εικόνες, διάλογοι, αλφαριθμητικά, κ.λ.π.) Source Files: Τα πηγαία αρχεία κώδικα του Project (.cpp)

Class View Εμφανίζει τις Κλάσεις που έχουν δηλωθεί στο Project Για κάθε κλάση μπορεί να εμφανίζει τα μέλη της κλάσης, Data Members και Function Members. Εμφανίζει τις απεικονίσεις Events/Messages και αντίστοιχων υπορουτινών που χειρίζονται τα Events αυτά.

Property Manager Εμφανίζει όλες τις παραμέτρους «κτισίματος» της εφαρμογής στις εκδόσεις Debug και Release καθώς και για εκδόσεις των 32 και 64 bits. Καθορίζεται αν η εφαρμογή κάνει χρήση χαρακτήρων των 2 byte (Unicode Multibyte Characters) ή όχι (ASCII 1 byte characters) Επίσης καθορίζεται ο τρόπος σύνδεσης με τις βιβλιοθήκες (MFC Library) : Δυναμική διασύνδεση με την βιβλιοθήκη (Dynamic Link to MFC) Στατική διασύνδεση με την βιβλιοθήκη (Static Link to MFC)

Resource View Εμφανίζει και επιτρέπει τον καθορισμό των πόρων (Resources) του project: Accelerator : Καθορίζει πλήκτρα συντομεύσεων (shortcut keys) που χρησιμοποιούνται στην εφαρμογή Dialog: Εμφανίζει τους διαλόγους δευτερεύοντες φόρμες που χρησιμοποιεί η εφαρμογή. Icon: Τα εικονίδια που χρησιμοποιούνται στην εφαρμογή Menu: Τα Μενού επιλογών που χρησιμοποιούνται στην εφαρμογή String Table: Πίνακας με αλφαριθμητικά που χρησιμοποιούνται στην εφαρμογή και καθορίζονται κεντρικά.

Πλήκτρα λειτουργιών του περιβάλλοντος -IDE Ctrl + F7 Compile (Μεταγλώττιση ενός πηγαίου αρχείου.cpp) F7 Build Solution (Μεταγλώττιση και παραγωγή exe) F5 Start Debugging (Run) (εκτέλεση της εφαρμογής) F1 Βοήθεια του MS Visual Studio για το σημείο που βρισκόμαστε Πλήκτρα του επεξεργαστή κειμένου (κώδικα) Ctrl + X Cut (αποκοπή επιλεγμένου τμήματος κειμένου) Ctrl + C Copy (αντιγραφή επιλεγμένου τμήματος κειμένου) Ctrl + V Paste (επικόλληση τμήματος κειμένου) Ctrl + S Save (αποθήκευση του τρέχοντος πηγαίου αρχείου) Ctrl+K+K Τοποθετεί σημάδι Bookmark και το αφαιρεί (toggle) F2, Shift-F2 Πηγαίνει στο επόμενο ή το προηγούμενο bookmark

Αρχικά θα μελετηθεί η μεθοδολογία παραγωγής οπτικών εφαρμογών με χρήση της βιβλιοθήκης.net (.NET Framework 4.0). Οι εφαρμογές αυτές ονομάζονται Windows Forms και αποτελούν παραδείγματα Διαχειριζόμενου Κώδικα - Managed Code. Οι εφαρμογές μεταγλωττίζονται σε ενδιάμεσο επίπεδο που ονομάζεται CLR (Common Language Runtime). Ο ενδιάμεσος κώδικας μεταγλωττίζεται κατά την εκτέλεση σε γλώσσα μηχανής κατάλληλη για την εκάστοτε πλατφόρμα υλικού και λειτουργικού συστήματος. Για την παραγωγή ενός τέτοιου Project θα πρέπει να επιλέξουμε File New Project και από το μενού που ακολουθεί να επιλέξουμε Visual C++ και Windows Forms Application. Τέλος θα πρέπει να επιλέξουμε το όνομα του Project και το Φάκελο (Folder) στον οποίο θα δημιουργηθεί.

Κατά την παραγωγή του Project παράγεται μία βασική φόρμα με το όνομα Form1 που αποτελεί το βασικό παράθυρο της εφαρμογής που θα εμφανιστεί κατά την εκτέλεση. Για κάθε φόρμα παράγεται ένα αντίστοιχο αρχείο.h που περιέχει την δήλωση της κλάσης της φόρμας, και περιέχει ολόκληρο τον κώδικα που σχετίζεται με αυτήν, συμπεριλαμβανομένων των ρουτινών διαχείρισης συμβάντων (event handlers). Π.χ. στο αρχείο «Form1.h» η δήλωση της κλάσης της φόρμας θα είναι: public ref class Form1 : public System::Windows::Forms::Form { } Η φόρμα είναι στην ουσία ένα πλαίσιο πάνω στο οποίο ενσωματώνονται άλλα αντικείμενα όπως Μενού, Κουμπιά, Κουτιά εισαγωγής κειμένου, Ετικέτες κ.λ.π. Τα αρχικά ονόματα της φόρμας και του αρχείου.h μπορούν να τροποποιηθούν κατά βούληση

Κατά την προβολή της φόρμας δηλαδή του Form1.h σε Design Mode εμφανίζονται στο δεξιό άκρο του IDE δύο βοηθητικά Panel: Το Toolbox που περιέχει λίστα με τα Controls που μπορεί ο προγραμματιστής να ενσωματώσει επάνω στην βασική φόρμα, και Τα Properties (ιδιότητες) που καθορίζουν ένα σημαντικό αριθμό από ιδιότητες του επιλεγμένου κάθε φορά αντικειμένου. Τα Controls που ενσωματώνονται στην φόρμα αποτελούν αντικείμενα άλλων κλάσεων που εισάγονται ως μέλη δεδομένα στην κλάση της φόρμας (data members) με την αρχή της περιεκτικότητας: private: System::Windows::Forms::Button^ button1;

Τα Properties (Ιδιότητες) αποτελούν εγγενή μέλη δεδομένα της κλάσης του κάθε αντικειμένου που καθορίζουν την εμφάνιση ή την συμπεριφορά του. Το κάθε Property μπορεί να είναι διαφορετικού τύπου: Απλών τύπων όπως int, bool ή αντικείμενα κλάσεων όπως Size(Width, Height) Η τοποθέτηση των τιμών που έχουν καθοριστεί για κάθε ιδιότητα μέσω του Panel Properties γίνεται κατά την εκτέλεση της μεθόδου void InitializeComponent(void) { // Form1 this->text = L"Form1"; // Button1 this->button1->name = L"button1"; } που αποτελεί βασική μέθοδο της κλάσης της φόρμας και εκτελείται κατά την αρχικοποίησή της.

Στο Panel με τις Ιδιότητες των αντικειμένων διακρίνουμε και ένα εικονίδιο με ένα κίτρινο κεραυνό το οποίο μας εμφανίζει τα Events του αντικειμένου Για κάθε event εμφανίζεται στα δεξιά του το όνομα της ρουτίνας διαχείρισης του Event, εφόσον έχουμε δημιουργήσει τέτοια ρουτίνα για το Event αυτό Για να δημιουργήσουμε ρουτίνα διαχείρισης ενός συμβάντος κάνουμε διπλό κλίκ επάνω στο συμβάν και δημιουργείται μία κενή ρουτίνα στην οποία θα πρέπει να γράψουμε τον επιθυμητό κώδικα διαχείρισης του συμβάντος. private: System::Void button1_click (System::Object^ sender, System::EventArgs^ e) { MessageBox::Show("Button is pressed", "My Application", MessageBoxButtons:: OKCancel, MessageBoxIcon::Asterisk); }

1. Δημιουργία ενός νέου Project εφαρμογής.net με την επιλογή File New Project Windows Forms Application 2. Αλλαγή των ιδιοτήτων της βασικής φόρμας, άμεσα (π.χ. αλλαγή μεγέθους) ή μέσω του panel Properties, σύμφωνα με τις απαιτήσεις της εφαρμογής. 3. Ενσωμάτωση στη φόρμα αντικειμένων (Controls) από το Toolbox με διαδικασία drag&drop ή click-select-click-drop. 4. Αλλαγή των ιδιοτήτων των αντικειμένων άμεσα ή με τη βοήθεια του panel Properties. 5. Συγγραφή των ρουτινών διαχείρισης συμβάντων (event handlers) για την φόρμα και τα αντικείμενα (για όποια αντικείμενα και για όποια συμβάντα χρειάζεται) μέσα στο Form1.h 6. Μεταγλώττιση του κώδικα (compile) και διόρθωση των σφαλμάτων 7. Κτίσιμο του εκτελέσιμου (exe) με την επιλογή Build Project / Build Solution όπου γίνεται η σύνδεση (linking) με τις βιβλιοθήκες και διόρθωση τυχόν σφαλμάτων. 8. Εκτέλεση της εφαρμογής (Start Debugging) και δοκιμή.

Κάθε αντικείμενο (Φόρμα, Κουμπί, Ετικέτα,...) που χρησιμοποιούμε από την εργαλειοθήκη του MS Visual Studio το χειριζόμαστε μέσω των Ιδιοτήτων του (Properties) μέσω των Μεθόδων του (Methods) και μέσω των Συμβάντων του (Events). Οι ιδιότητες είναι στην ουσία μέλη-δεδομένα (data members) της κλάσης του κάθε αντικειμένου που μπορούν να καθοριστούν είτε κατά τη σχεδίαση (design time) είτε κατά την εκτέλεση (run time) της εφαρμογής (π.χ. τίτλος, χρώμα, μέγεθος, font, κ.λ.π.). Οι μέθοδοι είναι συναρτήσεις-μέλη (function members) της κλάσης του κάθε αντικειμένου που μας επιτρέπουν να χειριζόμαστε τα δεδομένα της κλάσης (π.χ. Button1->Focus(), Form1->Close() ). Τα συμβάντα είναι ενέργειες που μπορεί να κάνει ο χρήστης με το συγκεκριμένο αντικείμενο (π.χ. διπλό κλικ, πάτημα κουμπιού, αλλαγή κειμένου, επιλογή από μενού, αλλαγή μεγέθους, drag&drop κ.λ.π.). Για όσα συμβάντα χρειάζεται, ο χρήστης αναπτύσσει τον κώδικα διαχείρισης του συμβάντος (event handler) όπου καθορίζεται το τί θα συμβεί όταν λάβει χώρα το συγκεκριμένο event (π.χ. Click, KeyPress, Resize, TextChanged, κ.λ.π.)

Οι ιδιότητες των αντικειμένων καθορίζουν συγκεκριμένα χαρακτηριστικά εμφάνισης και λειτουργίας των Controls και μπορούν να καθορίζονται είτε κατά την σχεδίαση είτε κατά την εκτέλεση. Κάθε Ιδιότητα αποτελείται από δύο πεδία: όνομα ιδιότητας και τιμή. Όλες οι ιδιότητες απλές και σύνθετες αποτελούν αντικείμενα κλάσεων του CLI (Common Language Interface). Μπορεί να είναι πολλών ειδών: 1. Πεδία Κειμένου: π.χ. Button->Text 2. Ιδιότητες Boolean: (true/false) π.χ. TextBox->AllowDrop 3. Επεκτάσιμα Πεδία ( ) : Αποτελούν Structures (Classes) των περισσότερων του ενός πεδίων π.χ. Form->Location (X,Y) 4. Πεδία Ενέργειας: ( ) Απαιτούν μία ενέργεια όπως η υπόδειξη ενός αρχείου εικόνας π.χ. Form->Icon 5. Αριθμητικές Ιδιότητες: π.χ. Button->TabIndex 6. Απαριθμητοί Τύποι: TextBox->BorderStyle = Fixed3D

Οι μέθοδοι των αντικειμένων είναι συναρτήσεις μέσω των οποίων χειριζόμαστε τα δεδομένα και τις ιδιότητες των αντικειμένων. Είναι δηλαδή συναρτήσεις-μέλη των κλάσεων των αντικειμένων. Οι μέθοδοι μπορεί να παίρνουν ή να μην παίρνουν παραμέτρους που καθορίζουν την λειτουργία τους και μπορεί να επιστρέφουν ή να μην επιστρέφουν κάποιο αποτέλεσμα (void) Παραδείγματα : Form1->Activate(), TextBox->AppendText( Hello ), CheckBox1->Hide(), Label1->Invalidate(), PictureBox1->Refresh(),

Τα συμβάντα είναι ενέργειες που μπορεί να κάνει ο χρήστης με το συγκεκριμένο αντικείμενο (π.χ. διπλό κλικ, πάτημα κουμπιού, αλλαγή κειμένου, επιλογή από μενού, αλλαγή μεγέθους, drag&drop κ.λ.π.) Τα Windows ειδοποιούν την εφαρμογή για ένα event στέλνοντας σε αυτήν ένα μήνυμα (windows message). Υπάρχουν περίπου 175 διαφορετικά μηνύματα. Η ρουτίνα διαχείρισης του event δημιουργείται πατώντας διπλό κλικ στο event στο Panel με τα Properties και εφόσον έχουμε επιλέξει το κατάλληλο Control. Στη συνέχεια γράφουμε τον κώδικα. Παράδειγμα: private: System::Void button1_click(system::object^ sender, System::EventArgs^ e) { this->close(); }

Οι Event handlers έχουν τουλάχιστον μία παράμετρο (System::Object ^ sender) που είναι ένα tracking handle (Λαβή Εντοπισμού) για το αντικείμενο που παρήγαγε το μήνυμα. Μπορεί δύο αντικείμενα να μοιράζονται τον ίδιο Event Handler. Παράδειγμα : Αν έχουμε σε μία φόρμα δύο κουμπιά με ονόματα Show και Hide μπορεί να έχουν την ίδια ρουτίνα για το Click event τους με όνομα button_click που να είναι ως εξής : private: System::Void button_click(system::object^ sender, System::EventArgs^ e) {if (sender==hide) label1->hide(); else label1->show(); } Τα ονόματα των event handlers μπορούν να αλλαχτούν από τον χρήστη. Η ρουτίνα button_click θα δημιουργηθεί για το event του πρώτου button και θα επιλεγεί για το ίδιο event του δεύτερου button.

Αποτελεί ένα προκατασκευασμένο διάλογο που χρησιμοποιείται για την εμφάνιση μηνυμάτων. Εμφανίζεται καλώντας την μέθοδο Show της βασικής κλάσης: MessageBox::Show( Μηνυμα, Τίτλος", MessageBoxButtons::OKCancel, MessageBoxIcon::Asterisk); MessageBoxButtons : καθορίζει ποια κουμπιά θα εμφανιστούν Μέλη: AbortRetryIgnore, OK, OKCancel, RetryCancel, YesNo, YesNoCancel. MessageBoxIcon : καθορίζει το εικονίδιο που θα εμφανιστεί στο παράθυρο. Μέλη : Asterisk, Error, Exclamation, Hand, Information, None, Question, Stop, Warning.

Επιστρέφει αποτέλεσμα τύπου System.Windows.Forms::DialogResult που έχει μία από τις τιμές : Abort, Cancel, Ignore, No, None, OK, Retry, Yes. Παράδειγμα: // Initializes the variables to pass to the MessageBox::Show method String^ message = "You did not enter a name. Cancel this operation?"; String^ caption = "No Name Specified"; MessageBoxButtons buttons = MessageBoxButtons::YesNo; System::Windows::Forms::DialogResult result; // Displays the MessageBox result = MessageBox::Show( message, caption, buttons ); if ( result == ::DialogResult::Yes ) { this->close(); } //κλείσιμο του γονικού παραθύρου

Η μέθοδος Show μπορεί να κληθεί και με διαφορετιοκό αριθμό παραμέτρων, όπως Show(Text) Show(IWin32Window, Text) Show(Text, Caption) Show(IWin32Window, Text, Caption) Show(Text, Caption, MessageBoxButtons) Show(IWin32Window, Text, Caption, MessageBoxButtons) Show(Text, Caption, MessageBoxButtons, MessageBoxIcon) Show(IWin32Window, Text, Caption, MessageBoxButtons, MessageBoxIcon) Η παράμετρος IWin32Window καθορίζει το handle του παραθύρου μπροστά από το οποίο θα εμφανιστεί το MessageBox

Δημιουργία νέου project Windows Forms. Αλλαγή του Text της Form1 σε «Ασκηση 1-1». Ενσωμάτωση κουμπιού από το Toolbox. Αλλαγή του Text σε Close. Δημιουργία Event handler για το event OnClick. private: System::Void button1_click(system::object^ sender, System::EventArgs^ e) { this->close(); }

Δημιουργία νέου project. Επανάληψη των βημάτων της άσκησης 1-1. Ενσωμάτωση δεύτερου κουμπιού και αλλαγή του Text σε «Display». Ενσωμάτωση TextBox. Δημιουργία Event Handler για το Click Event του δεύτερου κουμπιού. private: System::Void button2_click(system::object^ sender, System::EventArgs^ e) { MessageBox::Show(textBox1->Text,"Άσκηση 1-2", MessageBoxButtons::OKCancel,MessageBoxIcon::Asterisk); }

Δημιουργούμε νέο Project και τοποθετούμε τα Controls στις θέσεις τους. Αλλάζουμε το Text στα Controls Γράφουμε τους Event Handlers: private: System::Void button5_click (System:: Object^ sender, System::EventArgs^ e) { textbox1->clear(); textbox2->clear(); textbox3->clear(); } private: System::Void button7_click (System:: Object^ sender, System::EventArgs^ e) { this->close(); }

private: System::Void button1_click (System:: Object^ sender, System::EventArgs^ e) { double n1,n2; if (IsNumber(textBox1->Text) && IsNumber(textBox2->Text) ) { n1=convert::todouble(textbox1->text); n2=convert::todouble(textbox2->text); if (sender==button1) textbox3->text= Convert::ToString(n1+n2); else if (sender==button2) textbox3->text= Convert::ToString(n1-n2); else if (sender==button3) textbox3->text= Convert::ToString(n1*n2); else if (sender==button4) textbox3->text= Convert::ToString(n1/n2); } }

private: System::Boolean IsNumber(String^ s) { double d; return Double::TryParse(s,d); } Για την επιλογή «Σχετικά με την Εφαρμογή»: Δημιουργούμε νέα Φόρμα (Solution Explorer->Header Files-> Add ->New Item-> Windows Form) Στην κορυφή της Form1.h γράφουμε : #include Form2.h Και για να εμφανιστεί: private: System::Void button6_click (System:: Object^ sender, System::EventArgs^ e) { Form2^ frm = gcnew Form2; frm->showdialog(); }