Slide bài giảng ngôn ngữ lập trình .Net ASP.NET, hướng dẫn lập trình web cơ bản, giảng viên trường ĐHSP Huế, Gv. Nguyễn Lương Thục
Trang 1Công nghệ NET
(Microsoft Net Technology)
(30 tiết)
Trang 2Nội dung
Trang 3Bài 1
Nhìn qua về công nghệ NET
Trang 4Công nghệ NET là gì?
Microsoft NET là một họ đầy đủ sản phẩm được xây dựng theo tiêu chuẩn công nghiệp
và các chuẩn Internet Nó cung cấp cho từng vấn đề trong phát triển , quản lý , sử dụng các dịch vụ XML.
.NET là một tập hợp các công nghệ phần mềm của Microsoft cho phép kết nối thông tin , mọi người , các hệ thống, các thiết bị , …thông qua công nghệ Web
Trang 5Công nghệ NET là gì? (tiếp)
• Có 4 vấn đề trong công nghệ NET, gồm:
1 Khách thông minh (Smart Clients) – Điện thoại thông minh (Smart phones),
Thiết bị cầm tay (PDAs), Máy gia dụng thông minh (Smart Appliances)
2 Các dịch vụ web (Web Services – UDDI, SOAP)
3 Các Servers (NET Standard Server, NET Web Server, Windows Server…)
4 Các công cụ phát triển (Development Tools – Visual studio net, ASP net,
ADO net)
Trang 6Công nghệ NET là gì? (tiếp)
• Microsoft NET kết nối các chuyên gia IT tạo ra một lượng lớn các kinh nghiệm cá nhân
về NET, sử dụng các tiêu chuẩn công nghiệp và công nghệ trong khuôn khổ NET Framework
Trang 8.NET Framework là gì? (tiếp)
• .Net framework bao gồm:
• Common Language Runtime (CLR)
• Visual Studio net
• Net Framework Classes (Class Libraries)
• ASP.net
• ADO.net
• Hỗ trợ nhiều ngôn ngữ object-oriented, Markup, Scripting,…
Trang 9.NET Framework là gì? (tiếp)
Thông số về Common Language
System.Web
Windows Application Services
DrawingControls
ASP.NET Application Services
Web FormsWeb Services
System.WinForms
Data and System Base Classes
Service ProcessSecurity
NetIO
ThreadingSQL
XMLADO.NET
Common Language Runtime
Trang 10Common Language Runtime
• CLR cung cấp một môi trường run-time, trong đó quản lý việc thực hiện code và cung cấp các services.
• Cung cấp khả năng tương tác giữa ngôn ngữ lập trình và các xử lý ngoại lệ của ngôn ngữ.
• Cải thiện các chương trình trong việc việc trình diễn, khả năng mở rộng, và sử dụng những yếu tố sẵn có.
Trang 11Visual Studio NET
• Là một IDE (Integrated development environment) bao gồm một tập đầy đủ các công cụ phát triển
các các loại ứng dụng: desktop applications, ASP Web applications, XML web services, và mobile services.
• Các ngôn ngữ lập trình gồm C++, C#, VB.NET, F#
• Các phiên bản của Visual Studio NET phát triển tương ứng với các phiên bản của NET
Framework
Trang 12• Net framework cung cấp một API cho tất cả các ngôn ngữ lập trình trong gói NET
• Tất cả các thư viện là Object -Oriented
• Thư viện được mở rộng như các API của java
• Tăng hiệu suất phát triển bằng cách giảm số lượng các API cần phải tìm hiểu
• Cho phép kế thừa các ngôn ngữ và gỡ rối
• Cho phép tạo ra các ứng dụng bảo mật
Các lớp trong Microsoft Net Framework
Trang 13• Cung cấp các thư viện, dịch vụ cho phép tạo, phát triển và thực hiện các ứng dụng Web (Web Applications) và các dịch vụ Web (Web Services)
• Với việc hỗ trợ của Web Forms và các GUI, việc sử dụng ASP.net để thiết kế các ứng dụng web thuận lợi, dễ dàng hơn rất nhiều.
• ASP.NET thường sử dụng ADO.net để truy xuất cơ sở dữ liệu.
ASP.NET
Trang 14• Là một tập các lớp cho phép làm việc với các cơ sở dữ liệu quan hệ trong khuôn khổ NET framework
• ADO.NET có các lớp cho phép kết nối và truy vấn với nhiều loại CSDL khác nhau như: Oracle, Sybase, Informix, DB2, Microsoft SQL Server, Ingres, PostgreSQL, MySQL, Yard- SQL, mSQL, và tất cả các loại ODBC tương thích khác
• ADO.NET hỗ trợ việc truy xuất dữ liệu từ HTTP
ADO NET
Trang 15• Có Common Language Runtime ( CLR )
• Hỗ trợ từ Microsoft thông qua Net Framework
• Net cung cấp các thư viện chung cho tất cả các ngôn ngữ, do đó không cần phải học quá nhiều API.
• Khả năng hỗ trợ cho các thiết bị thông minh như điện thoại di động, PDA và các thiết bị di động khác.
• Được thiết kế và định nghĩa theo các chuẩn Web cho phép giải quyết các bài toán với giải pháp tốt nhất.
• Cho phép dễ dàng thực hiện thiết kế các dạng ứng dụng
window-form , web-window-form
• Tăng cường tính bảo mật với các dịch vụ web và các giao thức
• Với ADO.NET việc quản trị cớ sở dữ liệu rất dễ dàng
Tại sao nên dùng công nghệ net?
Trang 16Bài 2
Ngôn ngữ lập trình VB.NET và C#
Trang 17Giới thiệu
• VB.NET và C# là 2 trong các ngôn ngữ lập trình được tích hợp trong bộ Microsoft Visual Studio
• Về cú pháp, VB.NET theo cú pháp của Basic, C# theo cú pháp của C
• Cả hai đều cho phép dễ dàng phát triển các ứng dụng (cả WinForm và WebForm) sử dụng công nghệ NET
Trang 18Overloads Shared Sub
Main(ByVal args() As String)
Dim name As String = "VB.NET"
public static void Main(string[] args) {
string name = "C#";
if (args.Length == 1)
name = args[0];
Console.WriteLine("Hello, " + name + "!");
} } }
Trang 19Cách viết chú thích
' Single line only
REM Single line only
''' <summary>XML comments</summary>
// Single line/* Multiple line */
/// <summary>XML comments on single line</summary>/** <summary>XML comments on multiple lines</summary> */
Trang 20decimalDateTime (not a built-in C# type)structs
enumerations
objectsstringarraysdelegates
Trang 21Khởi tạo biến (Initializing)
Dim correct As Boolean = True
Dim b As Byte = &H2A 'hex or &O52 for octal
Dim person As Object = Nothing
Dim name As String = "Dwight"
Dim grade As Char = "B"c
Dim today As Date = #12/31/2010 12:15:00 PM#
Dim amount As Decimal = 35.99@
Dim gpa As Single = 2.9!
Dim pi As Double = 3.14159265
Dim lTotal As Long = 123456L
Dim sTotal As Short = 123S
Dim usTotal As UShort = 123US
Dim uiTotal As UInteger = 123UI
Dim ulTotal As ULong = 123UL
bool correct = true;
byte b = 0x2A; // hexobject person = null;
string name = "Dwight";
short sTotal = 123;
ushort usTotal = 123;
uint uiTotal = 123; // or 123Uulong ulTotal = 123; // or 123UL
Trang 22Kiểu NULL (Nullable Types)
Dim x? As Integer = Nothing
Kiểu không định danh (Anonymous Types)
Dim stu = New With {.Name = "Sue", Gpa = 3.4}
Dim stu2 = New With {Key Name = "Bob", Gpa = 2.9}
Biến không xác định kiểu
Dim s = "Hello!"
Dim nums = New Integer() {1, 2, 3}
Dim hero = New SuperHero With {.Name = "Batman"}
Lấy thông tin về kiểu (Type Information)
Dim x As Integer
Console.WriteLine(x.GetType()) ' System.Int32
Console.WriteLine(GetType(Integer)) ' System.Int32
Console.WriteLine(TypeName(x)) ' Integer
Dim c as New Circle
isShape = TypeOf c Is Shape ' True if c is a Shape
isSame = o1 Is o2 // True if o1 and o2
reference same object
int? x = null;
var stu = new {Name = "Sue", Gpa = 3.5};
var stu2 = new {Name = "Bob", Gpa = 2.9};
var s = "Hello!";
var nums = new int[] { 1, 2, 3 };
var hero = new SuperHero() { Name = "Batman" };
int x;
Console.WriteLine(x.GetType()); // System.Int32Console.WriteLine(typeof(int)); // System.Int32Console.WriteLine(x.GetType().Name); // Int32
Circle c = new Circle();
isShape = c is Shape;
isSame = Object.ReferenceEquals(o1, o2)
Trang 23Chuyển đổi kiểu (Type Conversion / Casting)
Dim d As Single = 3.5
Dim i As Integer = CType(d, Integer) ‘set to 4
i = CInt(d) ' same result as CType
i = Int(d) ' set to 3 (Int function truncates the decimal)
Dim s As New Shape
Dim c As Circle = TryCast(s, Circle) ' Returns Nothing
if type cast fails
c = DirectCast(s, Circle) ' Throws InvalidCastException
if type cast fails
float d = 3.5f;
i = Convert.ToInt32(d); // Set to 4 (rounds) int i = (int)d; // set to 3 (truncates decimal)
Shape s = new Shape();
Circle c = s as Circle; // Returns null
if type cast fails
c = (Circle) s; // Throws InvalidCastException
if type cast fails
Trang 24Const MAX_STUDENTS As Integer = 25
ReadOnly MIN_DIAMETER As Single = 4.93
const int MAX_STUDENTS = 25;
readonly float MIN_DIAMETER = 4.93f;
Trang 25Kiểu liệt kê (Enumerations)
enum Action {Start, Stop, Rewind, Forward};
enum Status {Flunk = 50, Pass = 70, Excel = 90};
Action a = Action.Stop;
if (a != Action.Start) Console.WriteLine(a + " is " + (int) a); // "Stop is 1"
Console.WriteLine((int) Status.Pass); // 70Console.WriteLine(Status.Pass); // Pass
Trang 26Toán tử bit (Bitwise)
And Or Xor Not << >>
Toán tử logic (Logical)
AndAlso OrElse And Or Xor Not
Note: AndAlso and OrElse perform short-circuit logical evaluations
Nối chuổi (String Concatenation)
&
== < > <= >= !=
+ - * /
% (mod)/ (integer division if both operands are ints)Math.Pow(x, y)
Trang 27Toán tử điều kiện
Gán nếu đối số là khác null:
x = If(y, 5) ' if y is not Nothing then x = y, else x = 5
Gán 1 trong 2 đối số:
greeting = If(age < 20, "What's up?", "Hello")
Lệnh If:
If age < 20 Then greeting = "What's up?“
If age < 20 Then greeting = "What's up?" Else greeting = "Hello"
x = y ?? 5; // if y != null then x = y, else x = 5
greeting = age < 20 ? "What's up?" : "Hello";
if (age < 20) greeting = "What's up?"; else greeting = "Hello";
if (x != 100 && y < 5) {
x *= 5;
y *= 2;
}
Trang 28Select Case color
Case "pink", "red"
Trang 30Vòng lặp kiểm tra sau:
Vòng lặp duyệt các phần tử của Array hoặc collection
Dim names As String() = {"Fred", "Sue", "Barney"}
For Each s As String In names
string[] names = {"Fred", "Sue", "Barney"};
foreach (string s in names)
Console.WriteLine(s);
Trang 32
Mảng (Array)
Mảng với khởi tạo giá trị phần tử:
Dim nums() As Integer = {1, 2, 3}
For i As Integer = 0 To nums.Length - 1
names(5) = "Bobby" ' Sai
Điều chỉnh lại kích thước mảng:
ReDim Preserve names(6)
Mảng nhiều chiều:
Dim twoD(rows-1, cols-1) As Single
twoD(2, 0) = 4.5
Dim jagged()() As Integer = { _
New Integer(4) {}, New Integer(1) {}, New Integer(2) {} }
Trang 33Hàm (Functions)
Tham trị (pass by value) và tham biến (reference):
Sub TestFunc(ByVal x As Integer, ByRef y As Intege,
Truy xuất số đối số biến đổi:
Function Sum(ByVal ParamArray nums As Integer()) As Integer
Dim total As Integer = Sum(4, 3, 2, 1) ' returns 10
void TestFunc(int x, ref int y, out int z) {
Trang 34Tham số có giá trị mặc định:
Sub SayHello(ByVal name As String,
Optional ByVal prefix As String = "")
Console.WriteLine("Greetings, " & prefix & " " & name)
Trang 35Phép nối chuổi (sử dụng & hoặc +)
Dim school As String = "Harding" & vbTab
school = school & "University"
school &= "University"
\r // carriage-return \n // line-feed \t // tab \\ // backslash \" // quote
Chỉ sử dung (+)
string school = "Harding\t";
school = school + "University";
school += "University";
Trang 36Ký tư:
Dim letter As Char = school.Chars(0) ' letter is H
letter = "Z"c ' letter is Z
letter = Convert.ToChar(65) ' letter is A
letter = Chr(65) ' same thing
Dim word() As Char = school.ToCharArray()
Không cần ký tự quy ước:
Dim filename As String = "c:\temp\x.dat"
So sánh chuổi:
Dim mascot As String = "Bisons"
If (mascot = "Bisons") Then ' true
If (mascot.Equals("Bisons")) Then ' true
If (mascot.ToUpper().Equals("BISONS")) Then ' true
If (mascot.CompareTo("Bisons") = 0) Then ' true
Đối sánh mẫu (matching) với Like – (Regex đầy đủ hơn)
If ("John 3:16" Like "Jo[Hh]? #:*") Then 'true
char letter = school[0]; // letter is H letter = 'Z'; // letter is Z letter = Convert.ToChar(65); // letter is A letter = (char)65; // same thing char[] word = school.ToCharArray();
string filename = @"c:\temp\x.dat";
Hoặc viết:
string filename = "c:\\temp\\x.dat";
string mascot = "Bisons";
if (mascot == "Bisons") // true
Trang 37Dim names As String = "Michael,Dwight,Jim,Pam"
Dim parts() As String = names.Split(",".ToCharArray())
Chuyển Date thành String:
Dim dt As New DateTime(1973, 10, 12)
Dim s As String = dt.ToString("MMM dd, yyyy") ' Oct 12, 1973
Chuyển Integer thành String:
Dim x As Integer = 2
Dim y As String = x.ToString() ' y is "2"
Chuyển String thành Integer:
Dim x As Integer = Convert.ToInt32("-5") ' x is -5
Thực hiện với chuổi:
Dim buffer As New System.Text.StringBuilder("two ")
buffer.Insert(0, "one ");
buffer.Replace("two", "TWO");
Console.WriteLine(buffer);
Trang 38Biểu thức Regex (Regular Expressions)
Dim s As String = "My number is 305-1881, not 305-1818."
Dim r As New Regex("(\d+-\d+)")
Dim m As Match = r.Match(s) ' Matches 305-1881 and 305-1818
string s = "My number is 305-1881, not 305-1818.";
Regex r = new Regex("(\\d+-\\d+)");
for (Match m = r.Match(s); m.Success; m = m.NextMatch()) Console.WriteLine("Found number: " + m.Groups[1] + " at position " + m.Groups[1].Index);
Trang 39Lấy các nhiều thành phần so khớp:
Dim r As New Regex("(\d\d):(\d\d) (am|pm)")
Dim m As Match = r.Match("We left at 03:15 pm.")
If m.Success Then
Console.WriteLine("Hour: " & m.Groups(1).ToString) '03
Console.WriteLine("Min: " & m.Groups(2).ToString) '15
Console.WriteLine("Ending:" & m.Groups(3).ToString) 'pm
End If
Thay thế:
Dim r As New Regex("h\w+?d", RegexOptions.IgnoreCase)
Dim s As String = r.Replace("I heard this was HARD!", "easy") ' I easy this was easy!
Thay thế các mẫu được so khớp:
Dim s As String = Regex.Replace("123 < 456", "(\d+) (\d+)", "$2 > $1") ' 456 > 123
Cắt chuổi trên cơ sở mẫu:
Dim names As String = "Michael, Dwight, Jim, Pam"
Dim r As New Regex(",\s*")
Dim parts() As String = r.Split(names) ' One name in each slot
Regex r = new Regex("@(\d\d):(\d\d) (am|pm)");
Match m = r.Match("We left at 03:15 pm.");
if (m.Success) { Console.WriteLine("Hour: " + m.Groups[1]);
string names = "Michael, Dwight, Jim, Pam";
Regex r = new Regex(@",\s*");
string[] parts = r.Split(names);
Trang 40Xử lý ngoại lệ (Exception Handling)
Catch ex As Exception When y = 0
' Đối số và When là tùy chọn
catch (Exception ex) {
// Đối số là tùy chọn,, không có "When"
Trang 41Không gian tên (Namespaces)
Có thể định nghĩa không gian tên:
} } }
using Harding.Compsci.Graphics;
Trang 42Lớp và các giao tiếp (Classes & Interfaces)
Các dạng truy xuất khác nhau:
abstract sealed static
abstract sealed static virtual
Không có, nếu cần, sử dụng kiểu static class
Trang 43Các lớp bộ phận:
Partial Class Team
Protected name As String
Public Overridable Sub DisplayName()
protected string name;
public virtual void DislpayName() {
}
Trang 44Định nghĩa một giao tiếp:
Implements IAlarmClock, ITimer
Public Sub Ring() Implements IAlarmClock.Ring
class WristWatch : IAlarmClock, ITimer {
public void Ring() { Console.WriteLine("Wake up!");
}
public DateTime TriggerDateTime { get; set; }
}