C# COMPLETE COURSE
ΕΝΟΤΗΤΑ 1 - CREATING YOUR FIRST C# APP USING VISUAL STUDIO
INTRODUCTION
Πριν γράψουμε τις πρώτες μας γραμμές κώδικα, θα ήταν πολύ χρήσιμο να έχετε μια βασική κατανόηση του .NET και των βασικών του στοιχείων και λειτουργιών όπως CLI, CLR και CLS. Αμέσως μετά θα δούμε όλα τα βήματα που περιλαμβάνονται στην δημιουργία ενός C# project μέσα από το Visual Studio.
WHAT IS .NET?
Ας ξεκινήσουμε από την πιο βασική ερώτηση που συνήθως ρωτάνε οι αρχάριοι προγραμματιστές – τι ακριβώς είναι το .NEΤ; Το .NET είναι μια πλατφόρμα ανάπτυξης κώδικα για ένα μεγάλο εύρος εφαρμογών όπως desktop, web και mobile. To .ΝΕΤ μπορεί να εγκατασταθεί σε διάφορα λειτουργικά συστήματα όπως Windows, Linux και Mac ενώ ταυτόχρονα υποστηρίζει πολλές διαφορετικές γλώσσες προγραμματισμού όπως VB, C#, F# κτλ.
Σαν Desktop Applications ονομάζουμε εκείνες τις εφαρμογές τις οποίες εγκαθιστούμε τοπικά σε έναν υπολογιστή και η χρήση τους περιορίζεται σε έναν μόνο τελικό χρήστη. Τέτοια προγράμματα συνήθως δεν έχουν πρόσβαση στο Ίντερνετ για αυτό και ονομάζονται Standalone applications. Σαν Standalone application θα μπορούσαμε να θεωρήσουμε την εφαρμογή Calculator (Αριθμομηχανή) που υπάρχει σε κάθε εγκατάσταση Windows λειτουργικού συστήματος. Το μεγάλο μειονέκτημα τέτοιους είδους εφαρμογών είναι ότι πρέπει να εγκατασταθούν σε κάθε υπολογιστή στον οποίο πρόκειται να χρησιμοποιηθεί.
Με το .NET όμως έχουμε την επιλογή να δημιουργήσουμε και Web Applications οι οποίες γίνονται εγκατάσταση σε ένα κεντρικό υπολογιστή (ονομάζεται server) και πολλαπλοί χρήστες ταυτόχρονα μπορούν αλληλοεπιδράσουν με την εφαρμογή μέσω ενός browser αφού γράψουν το σωστό URL. Παραδείγματα τέτοιου είδους εφαρμογών θεωρούνται το Facebook, το LinkedIn κτλ.
Μπορούμε επίσης να αναπτύξουμε και mobile applications με το .NET. Ο κώδικας που θα αναπτύξουμε είναι συμβατός και μπορεί να εγκατασταθεί σε όλα τα γνωστά κινητά τηλέφωνα όπως Android και iPhone.
Μετά από αυτή τη μικρή εισαγωγή καταλαβαίνουμε ότι όταν αναφερόμαστε στο .NET δεν μιλάμε συγκεκριμένα για μια γλώσσα προγραμματισμού αλλά για μια ευρύτερη τεχνολογία που μπορεί να δημιουργήσει όλο το εύρος των εφαρμογών.
Μερικά από τα πλεονεκτήματα που αποκτάμε με την δημιουργία εφαρμογών σε .NET είναι:
- Η εκτέλεση του κώδικα μέσα από το ασφαλές περιβάλλον που μας εξασφαλίζει το CLR (θα μιλήσουμε σε λίγο για αυτό).
- Η υποστήριξη για διάφορες γλώσσες προγραμματισμού που μπορούμε να χρησιμοποιήσουμε (αν και η επιλογή μας είναι C#).
- Η χρήση κώδικα σαν service για να μπορεί να χρησιμοποιηθεί η λογική που αναπτύξαμε και από άλλες εφαρμογές.
Υπάρχουν δύο μεγάλες κατηγορίες από λειτουργίες στις οποίες θα μπορούσαμε να διαιρέσουμε τις εφαρμογές μας – τις εφαρμογές που αναπτύσσουμε κυρίως σαν standalone και εκείνες που θα είναι διαθέσιμες σαν υπηρεσίες ή σαν Web εφαρμογές.
WHAT IS CLΙ? (Common Language Infrastructure)
Για να καταλάβουμε σωστά και απόλυτα τι ακριβώς είναι το CLI, ας δούμε και ας εξηγήσουμε βήμα προς βήμα τι ακριβώς συμβαίνει από την στιγμή που έχουμε ολοκληρώσει την ανάπτυξη του κώδικα μας και πραγματοποιούμε την εντολή εκτέλεσης του. Για την καλύτερη κατανόηση της διαδικασίας θα χρησιμοποιήσουμε το παρακάτω απλό διάγραμμα.
Στην αρχή λοιπόν έχουμε την ανάπτυξη του κώδικα από τον προγραμματιστή σε μια από τις γλώσσες προγραμματισμού που υποστηρίζει το .NET framework όπως C#, VB.NET κτλ. Όλες αυτές οι γλώσσες προγραμματισμού θεωρούνται high-level languages γιατί με απλές εντολές, που εύκολα μπορεί να κατανοήσει και να εκτελέσει ο προγραμματιστής, πραγματοποιούνται πολύπλοκες ενέργειες. Σε αυτό το επίπεδο εφαρμόζονται όλες εκείνες οι θεωρίες τις οποίες θα αναλύσουμε και εμείς στα δωρεάν μαθήματα C# όπως πολυμορφισμός, αντικειμενοστραφής προγραμματισμός, κληρονομικότητα κτλ. Μην ανησυχείτε για αυτές τις έννοιες. Θα τις αναλύσουμε σε βάθος σε μελλοντικά δωρεάν μαθήματα C#.
Το πρόβλημα όμως είναι ότι άσχετα από το πόσο φιλική ως προς τις εντολές της είναι μια γλώσσα προγραμματισμού, δεν μπορεί να γίνει άμεσα κατανοητή από το hardware του υπολογιστή. Για αυτό και είναι επιτακτική ανάγκη να μεταφραστεί ο κώδικα μας σε native machine code δηλαδή σε μορφή κώδικα που μπορεί άμεσα να αντιληφθεί το hardware. Και η ανάγκη αυτής της μετάφρασης μεγαλώνει ακόμα περισσότερο όταν συνειδητοποιήσουμε ότι εκτός από το hardware έχουμε και μια μεγάλη γκάμα από λειτουργικά συστήματα. Για αυτή τη μετάφραση λοιπόν θα χρειαστεί εσωτερικά στο .NET να πραγματοποιηθούν δύο βήματα.
Στο πρώτο βήμα μεταφράζεται ο κώδικας μας σε μια ενδιάμεση γλώσσα που ονομάζεται Microsoft Intermediate Language ή αλλιώς IL προς συντομία. Ο λόγος που υπάρχει αυτή η ενδιάμεση γλώσσα είναι γιατί αν και το .NET υποστηρίζει πολλές διαφορετικές γλώσσες προγραμματισμού ο τρόπος εκτέλεσης τους θα πρέπει να παραμένει ο ίδιος. Για να το πετύχει αυτό λοιπόν η Microsoft δημιούργησε αυτό το ενδιάμεσο στάδιο έτσι ώστε όλες οι γλώσσες αρχικά να μεταφράζονται σε μια κοινή γλώσσα. Αν δεν υπήρχε αυτό το ενδιάμεσο στάδιο τότε θα έπρεπε το .ΝΕΤ να είχε διαθέσιμα διαφορετικά περιβάλλοντα εκτέλεσης για κάθε γλώσσα προγραμματισμού. Μεταφράζοντας όμως τον αρχικό κώδικα σε IL καταφέρνει να εκτελέσει τον αρχικό κώδικα οποιασδήποτε γλώσσας με τον ίδιο τρόπο.
Αφού λοιπόν μετατραπεί ο αρχικός μας κώδικας σε γλώσσα IL τώρα θα πρέπει να το αναλάβει το CLR (Common Language Runtime). Ο λόγος που χρειαζόμαστε το CLR είναι γιατί το IL δεν είναι native language δηλαδή δεν καταλαβαίνει IL γλώσσα το hardware. Το CLR, σαν το επόμενο βήμα, αναλαμβάνει να μετατρέψει τον IL κώδικα σε native machine κώδικα και επίσης να προσφέρει και κάποιες εξτρά υπηρεσίες κατά την διάρκεια εκτέλεσης του κώδικα όπως garbage collection, διαχείριση λαθών μέσω του exception management κτλ.
Τώρα λοιπόν που έχει μεταφραστεί ο κώδικας από IL σε Native Machine Code, το hardware του υπολογιστή μας μπορεί να το καταλάβει και να προχωρήσει στην διαδικασία εκτέλεσης της εφαρμογής.
FEW EXTRA WORDS ON CLR (Common Language Runtime)
Όπως ήδη έχουμε αναφέρει, το CLR αναλαμβάνει να εκτελέσει στην ουσία το πρόγραμμα μας. Το πλεονέκτημα του όμως, και κατά συνέπεια ο λόγος για τον οποίο αναφερόμαστε σε αυτό ξανά, είναι ότι μπορεί να εκτελέσει οποιονδήποτε κώδικα που έχει γραφτεί σε γλώσσα που υποστηρίζεται από το .NET και σε οποιοδήποτε λειτουργικό σύστημα.
Επίσης είναι ο κεντρικός μηχανισμός εκτέλεσης οποιοδήποτε είδους εφαρμογής συμπεριλαμβανομένου desktop, Web, mobile κτλ. Για να μπορέσει να τα πραγματοποιήσει όλα αυτά υποστηρίζεται από μια σειρά από βοηθητικά modules όπως Class Loader, Memory Manager, Gargabe Collector, JIT Compiler, Exception Manager, Thread Manager και Security Manager. Όλες αυτές οι έννοιες θα γίνουν απόλυτα αντιληπτές αργότερα σε μελλοντικά δωρεάν μαθήματα C#. Για τώρα μας αρκεί να γνωρίζουμε ότι υπάρχει ένα πολύπλοκος μηχανισμός που ονομάζεται CLR που έχει αναλάβει να κάνει τα εξής:
Class Loader - Να φορτώσει κλάσεις από τον κώδικα στην μνήμη.
Memory Manager - Να διαχειριστεί τα αντικείμενα που φορτώνονται στην μνήμη.
Garbage Collector - Να καθαρίσει την μνήμη από αντικείμενα τα οποία δεν χρησιμοποιούνται πλέον από την εφαρμογή.
JIT (Just-In-Time) Compiler - Να μεταφράσει τον κώδικα από MSIL σε Native Machine Language για τις κλάσεις που έχουν φορτωθεί στην μνήμη από τον Class Loader.
Exception Manager - Να χειριστεί όλα τα λάθη που μπορεί να προκύψουν κατά την εκτέλεση της εφαρμογής, όπως πρόβλημα με το διάβασμα της βάσης ή κάποιας αριθμητικής πράξης που τα στοιχεία της δεν είναι σωστά, και ταυτόχρονα να μας προμηθεύσει με μηνύματα λάθους για γρηγορότερη επίλυση του προβλήματος.
Thread Manager - Να διαχειριστεί ταυτόχρονα όλα τα threads και τις υπηρεσίες που έχουμε προγραμματίσει να ξεκινάνε όταν εκτελείται η εφαρμογή μας.
Security Manager - Να ελέγξει κάποιες βασικές αρχές ασφάλειας όπως αν το πρόγραμμα έχει τα απαραίτητα δικαιώματα να αποκτήσει πρόσβαση σε αρχεία του υπολογιστή ή αν ο κώδικας έχει αλλάξει κατά κάποιο τρόπο κατά την διάρκεια εκτέλεσης σε βαθμό που να θεωρείται ότι πρόκειται για κάποιο είδος επίθεσης από κάποιο άλλο κακόβουλο πρόγραμμα.
INSTALLING VISUAL STUDIO 2022
Αφού αποκτήσατε μια βασική γνώση του .NET, φαντάζομαι θα ανυπομονείτε να γράψετε και να εκτελέσετε το πρώτο σας πρόγραμμα σε C#. Πριν όμως φτάσουμε σε αυτό το σημείο θα πρέπει πρώτα να εγκαταστήσουμε ένα IDE μέσα από το οποίο θα μπορέσουμε να γράψουμε αλλά και να εκτελέσουμε τον κώδικα μας. Εδώ η Microsoft έχει να μας προτείνει δύο δωρεάν λύσεις: το Visual Studio Code και το Visual Studio. Το πρώτο είναι πολύ απλό και ελαφρύ στην χρήση του και μπορεί να εγκατασταθεί σε όλα τα λειτουργικά συστήματα όμως δεν έχει όλα τα advanced χαρακτηριστικά που αναζητάμε σαν προγραμματιστές. Για αυτό το λόγο θα επιλέξουμε την δεύτερη επιλογή που είναι να εγκαταστήσουμε την δωρεάν έκδοση του Visual Studiο μέσα από την οποία όχι μόνο θα βρούμε την έξτρα βοήθεια που αναζητάμε μέσα από μια πληθώρα επιλογών αλλά και αργότερα θα είναι το εργαλείο επιλογής της εκάστοτε εταιρείας που θα επιλέξετε να εργαστείτε σαν C# Junior Developer.
Πηγαίνουμε στο visualstudio.microsoft.com και επιλέγουμε την έκδοση Community 2022.
Η διαδικασία εγκατάστασης του Visual Studio είναι σχετικά απλή και δεν θα αντιμετωπίσετε προβλήματα. Όταν κατεβεί το μικρό σε μέγεθος αρχείο, απλά κάντε διπλό κλικ επάνω του να ξεκινήσετε την εγκατάσταση. Το μόνο σημείο που ίσως θα χρειαστείτε βοήθεια είναι στο παράθυρο όπου σας ζητείται να διαλέξετε ποια πακέτα τεχνολογιών θέλετε να εγκαταστήσετε. Για την σειρά δωρεάν μαθημάτων C# Complete Course θα χρειαστούμε μόνο την επιλογή .ΝΕΤ Desktop Development. Αν όμως αργότερα θέλετε να πειραματιστείτε και με C# κώδικα για το Web τότε θα πρέπει να επιλέξετε και το ASP.NET and Web Development. Οποιαδήποτε στιγμή μετά το πέρας της εγκατάστασης μπορείτε να επιστρέψετε σε αυτό το παράθυρο και να προσθέσετε και άλλα πακέτα οπότε μην ανησυχείτε αν κάνετε κάποιο λάθος. Σας προτείνω όμως να μην τα βάλετε όλα τα πακέτα από την αρχή αν δεν τα χρειάζεστε, γιατί θα καταναλωθεί ένας αρκετά μεγάλος χώρος από τον σκληρό σας δίσκο.
Πριν πατήσετε το Install κουμπί, απλά θα ήθελα να σας ενημερώσω ότι από το tab Individual Components μπορείτε να διαλέξετε την έκδοση του .NET επάνω στην οποία θα γράψετε τον κώδικα σας. Αυτόματα, το Visual Studio, πάντα θα σας κάνει compile και θα εκτελεί τον C# κώδικα με βάση την τελευταία έκδοση. Αν όμως, υπάρχει κάποιο project που χρησιμοποιεί παλαιότερο κώδικα και θέλετε να είσαστε συμβατοί με αυτόν, τότε μπορείτε να εγκαταστήσετε την αντίστοιχη έκδοση από εδώ. Στην δική μας περίπτωση δεν χρειάζεται να κάνετε καμία αλλαγή στην λίστα που εμφανίζεται όμως τώρα γνωρίζετε που ακριβώς θα πρέπει να πάτε για να προσθέσετε και άλλες εκδόσεις .ΝΕΤ.
Τώρα μπορείτε να πατήσετε το Install κουμπί και να περιμένετε να ολοκληρωθεί η διαδικασία της εγκατάστασης του Visual Studio. Μόλις τελειώσει η εγκατάσταση, θα βρείτε το εικονίδιο Visual Studio 2022 στη λίστα με τα προγράμματα σας.
Όταν ξεκινήσει το Visual Studio για πρώτη φορά θα σας ζητηθεί να επιλέξετε αν θέλετε να ανοίξετε ένα project που ήδη υπάρχει ή να δημιουργήσετε ένα καινούργιο. Για να δούμε όμως καλύτερα τις επιλογές που έχουμε όταν δημιουργούμε ένα project, πατάμε στην επιλογή Continue Without Code.
Τώρα έχετε βρεθεί μέσα στο περιβάλλον του Visual Studio χωρίς φυσικά να υπάρχει κάποιο ανοιγμένο project. Για να δημιουργήσουμε το πρώτο μας project πηγαίνουμε στο File -> New -> New Project.
Τώρα θα εμφανιστεί μια αρκετά μεγάλη λίστα με προτεινόμενα project templates. Εμείς στα δωρεάν μαθήματα C# που θα καλύψουμε εδώ θα χρειαστεί να δημιουργούμε κάθε φορά ένα Console App Project. Για να μπορέσουμε να το βρούμε πιο εύκολα μπορούμε να φιλτράρουμε τις επιλογές μας από τα drop down menus. Το Console App είναι ένα C# project που μας δείχνει το αποτέλεσμα στο terminal. Προσέξτε μόνο μην το μπερδέψετε με το Console App (.NET Framework) που αναφέρεται σε παλαιότερη έκδοση του .NET. Αφού βρείτε το template του Console App πατήστε Next.
Στο αμέσως επόμενο παράθυρο πρέπει να δηλώσουμε ένα όνομα για το project μας (Project name) και που θέλουμε να το αποθηκεύσουμε (Location). Ας το ονομάσουμε FirstExample και αφού επιλέξουμε ένα φάκελο στο σκληρό μας δίσκο για να το αποθηκεύσουμε πατάμε Next.
Στο τελευταίο παράθυρο που θα εμφανιστεί, από τις διαθέσιμες .NET πλατφόρμες επιλέγουμε την πιο πρόσφατη και επίσης για τώρα βεβαιωθείτε ότι έχετε τσεκάρει την επιλογή Do not use top-level statements. Σε μελλοντικά δωρεάν μαθήματα C# θα καταλάβετε απόλυτα τι ακριβώς έχουμε επιλέξει εδώ. Για τώρα, απλά ακολουθείστε τα ίδια βήματα κάθε φορά που δημιουργείτε ένα καινούργιο Console App πρόγραμμα. Πατήστε Create για να δημιουργηθεί το πρώτο μας project.
Το project μας έχει δημιουργηθεί και ο βασικός κώδικας είναι γραμμένος μέσα σε ένα αρχείο με το όνομα Program την κατάληξη cs (που σημαίνει C Sharp). Δεν θα αναλύσουμε την δομή του κώδικα σε αυτό το πρώτο μας μάθημα, αυτό θα αρχίζουμε να το κάνουμε σιγά σιγά από την επόμενη ενότητα. Όμως για τώρα θα πρέπει να δούμε πως το εκτελούμε αυτό το πρόγραμμα.
Πατώντας επάνω στο αρχείο Program.cs μας εμφανίζεται ο κώδικας που είναι γραμμένος μέσα στο αυτό.
Αν προσέξετε επάνω στο κεντρικό μενού, θα δείτε ένα πράσινο κουμπί με το όνομα του project μας. Αν το πατήσουμε, το πρόγραμμα μας θα εκτελεστεί και το μήνυμα Hello, World που είναι γραμμένο στο κώδικα θα εμφανιστεί στο terminal σαν αποτέλεσμα. Θα τα εξηγήσουμε όλα αυτά την επόμενη φορά όμως.
ΕΙΣΗΓΗΤΗΣ
Μιχάλης Κασάπογλου
Ο Μιχάλης Κασάπογλου, είναι ένας από τους πιο έμπειρους τεχνικούς εκπαιδευτές στον χώρο του προγραμματισμού με πάνω από 20 χρόνια εμπειρία. Έχει εργαστεί σαν IT Operations Manager, Senior Programmer, και Training Team Leader ενώ κατέχει και αρκετές πιστοποιήσεις που καλύπτουν ένα μεγάλο φάσμα τεχνολογιών στο προγραμματισμό, σε βάσεις δεδομένων και cloud. Στον ελεύθερο του χρόνο διατηρεί ένα τεχνολογικό blog στο οποίο θα βρείτε αρκετά δωρεάν μαθήματα προγραμματισμού για αρχάριους.