Professional Documents
Culture Documents
Net1 - Presentation
Net1 - Presentation
NET
Έτος Έκδοση
2002 1.0, Visual Studio .NET, Windows Forms, ASP.NET
2003 1.1, Visual Studio .NET 2003
2005 2.0, Visual Studio 2005, υποστήριξη generics, anonymous methods
2006 3.0, WPF, WCF, WF
2007 3.5, Visual Studio 2008, LINQ
2010 4.0, Visual Studio 2010, Parallel Extensions, TPL
2012 4.5, Visual Studio 2012
2014 4.6, Visual Studio 2016
2016 .NET Core 1.0, Visual Studio 2017
2017 4.7, .NET Core 2.0
2018 4.8 (TBA), .NET Core 3.0 (TBA), Visual Studio 19 (TBA)
Τι είναι;
Εισερχόμενο
Εκτέλεση κώδικα στο Εφαρμογή Razor View
HTTP Τελικό Response
server Engine
Request
ASP.NET MVC
Web Server
Controller/Action View
(Kestrel, IIS)
Το View κάνει
Model χρήση του Model
DB
που ανακτάται
από τον Controller
ASP.NET MVC Web Project
return View(model);
class Hello
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
Βασικές Ιδέες της C#
• Γενικής χρήσης
• Πλήρως αντικειμενοστραφής (object-oriented)
• Επηρεασμένη κυρίως από Java και ML/LISP
• Μεταγλωττίζεται σε IL και άρα τρέχει σε όλες τις πλατφόρμες
που μπορεί να τρέξει το .NET (Core)
• Παράγει .NET Assembly
• Αυτόματη διαχείριση μνήμης
• Ιδιότητες (properties) και συμβάντα (events)
• Generics
• Διαχείριση εξαιρέσεων
• Ασύγχρονος κώδικας
Αντικείμενα
• Ο ακρογωνιαίος λίθος του αντικειμενοστραφούς προγραμματισμού
• Διαθέτουν «κατάσταση» (state) και «συμπεριφορά» (behavior)
• Αποθηκεύουν την κατάστασή τους σε «πεδία» («μεταβλητές» σε κάποιες
άλλες γλώσσες) και επιδεικνύουν συμπεριφορά μέσω «μεθόδων»
(«συναρτήσεων» σε κάποιες άλλες γλώσσες)
• Αποκρύπτουν την εσωτερική τους κατάσταση και απαιτούν όλη η
αλληλεπίδραση με εκείνα να γίνεται μέσω των μεθόδων τους
(«ενθυλάκωση»)
Παράδειγμα:
Ένα ποδήλατο έχει ως κατάσταση την τρέχουσα ταχύτητα (γρανάζι) και
διαθέτει ως μέθοδο την αλλαγή αυτής. Για ποδήλατο 6 ταχυτήτων, η μέθοδος
αυτή δεν επιτρέπει τιμές έξω από το όριο του 1 και 6.
Κλάσεις
• Μια κατηγορία ομοειδών αντικειμένων
• Λειτουργεί ως το «καλούπι» από το οποίο δημιουργούνται όλα τα ομοειδή αυτά αντικείμενα
• Περιγράφει τα πεδία και τις μεθόδους των αντικειμένων αυτών
• Τα αντικείμενα μιας κλάσης λέγονται επίσης και «περιπτώσεις» (instances) της κλάσης αυτής
Παράδειγμα: το ποδήλατο
class Bicycle
{
private byte _gear;
public byte GetGear() { return _gear; }
public void SetGear(byte newGear)
{
if (newGear > 0 && newGear < 7)
_gear = newGear;
}
}
Ορατότητα
• Τύποι: public, protected, internal, protected internal, ή private
• Εφαρμόσιμο στις κλάσεις, στις μεθόδους, στα πεδία, στις ιδιότητες και στα συμβάντα
• Με τη διαβαθμισμένη ορατόιτητα επιτυγχάνουμε την «απόκρυψη της πληροφορίας» και συνεπώς την
«ενθυλάκωση»
namespace Vehicles.Bicycles
{
public class Bicycle
{
// Υλοποίηση της κλάσης
}
public class MountainBike
{
// Υλοποίηση της κλάσης
}
}
// Χρήση
// Fully qualified
var b = new Vehicles.Bicycles.Bicycle();
using Vehicles.Bicycles; // Φόρτωση namespace
var mb = new MountainBike(); // Χωρίς αναφορά στο namespace
Πεδία
class Foo
{
// Πρόσβαση – τύπος – όνομα (αρχική τιμή)
private int field = 42;
}
Μέθοδοι
class Foo
{
// Πρόσβαση – τύπος – όνομα - ορίσματα
public int Process(string input)
{
// …
return 42;
}
}
Ιδιότητες
class Foo
{
public int state;
public int State
{
get { return state; }
set { state = value; }
}
}
Attributes
[ClassAttribute]
class Foo
{
[MethodAttribute(param1=“value1”)]
public void DoProcess()
{
}
}
Μεταβλητές
class Foo
{
public void Process()
{
// Explicit typing
string x;
// Με αρχική τιμή
string y = "foo";
// Implicit typing
var z = "baz";
}
}
Εμβέλεια μεταβλητών
● String – string
● Character - char
● Integer - int
● Float - float
● Boolean - bool
● Object – object
● Και άλλοι αριθμητικοί τύποι διαφόρων μεγεθών (byte, short, double, long)
● Όταν μια μέθοδος δεν επιστρέφει κάτι, ο τύπος της είναι void
● Arrays – όνομα τύπου + [], π.χ. int[]
Αριθμητικοί Τελεστές
Τελεστής Πράξη Παράδειγμα
- Αφαίρεση x-y
+ Πρόσθεση x+y
* Γινόμενο x*y
= Εκχώρηση τιμής x = 15
+= Πρόσθεση x += 2
-= Αφαίρεση x -= 5
*= Γινόμενο x *= 2
/= Πηλίκο διαίρεσης x /= 2
%= Υπόλοιπο διαίρεσης x %= 2
Τελεστές Σύγκρισης
Τελεστής Πράξη Παράδειγμα
== Ίσο x == y
!= Διάφορο x !=y
< Μικρότερο x<y
> Μεγαλύτερο x>y
<= Μικρότερο ή ίσο x <= y
>= Μεγαλύτερο ή ίσο x >= y
Τελεστές αύξησης/μείωσης
|| OR x || y
^ XOR x^y
! NOT !x
() Εφαρμογή f(x)
[] Ευρετηριωμένη x[y]
πρόσβαση
new Αρχικοποίηση var x = new Foo()
αντικειμένου
(T)x Μετατροπή τύπου (int)x
https://docs.microsoft.com/en-us/dotnet/csharp/language-
reference/operators/
if (συνθήκη_1) if (x > 0)
{ {
a = “positive”;
} }
else if (συνθήκη_2) else if (x < 0)
{ {
a = “negative”;
} }
else else
{ {
a = “zero”;
} }
Δομή ελέγχου ροής switch
● O/RM
Startup.cs:
● C# Guide (Microsoft):
https://docs.microsoft.com/en-us/dotnet/csharp/index
● C# Tutorial:
https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/