Bài giảng Lập trình hướng đối tượng - Chương 2: Các kiến thức cơ bản về lập trình C# đã học

Chương 2  
Các kiến thức cơ bản về lập trình C# ₫ã học  
2.0 Dẫn nhập  
2.1 Cấu trúc của 1 ứng dụng C# nhỏ  
2.2 Kiểu dữ liệu ₫ịnh sẵn  
2.3 Kiểu liệt kê  
2.4 Kiểu record  
2.5 Kiểu array  
2.6 Phân tích top-down theo hướng ₫ối tượng  
2.7 Namespace  
2.8 Assembly  
2.9 Kết chương  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 1  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.0 Dẫn nhập  
Chương này giới thiệu cấu trúc của chương trình VC# nhỏ và ₫ơn  
giản gồm 1 số biến dữ liệu và 1 số hàm xử lý các biến dữ liệu, từ  
₫ó tổng kết lại các kiểu dữ liệu khác nhau có thể ₫ược dùng trong  
1 chương trình.  
Chương này cũng giới thiệu phương pháp ₫ặt tên cho các phần tử  
cấu thành ứng dụng lớn 1 cách khoa học, cách chứa các phần tử  
cấu thành ứng dụng lớn trong các module vật lý.  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 2  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.1 Cấu trúc của 1 ứng dụng C# nhỏ  
Trong môn kỹ thuật lập trình, chúng ta ₫ã viết ₫ược 1 số ứng dụng C#  
nhỏ và ₫ơn giản. Trong trường hợp này, 1 ứng dụng C# là 1 class gồm  
nhiều thuộc tính dữ liệu và nhiều hàm chức năng. Chương trình bắt  
₫ầu chạy từ hàm Main.  
dữ liệu  
chương trình  
Điểm nhập  
dữ liệu cục  
bộ trong  
từng hàm  
chương  
trình  
(Main)  
các hàm  
chức năng  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 3  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.1 Cấu trúc của 1 ứng dụng C# nhỏ  
using System;  
namespace GPTB2 {  
class Program {  
//₫ịnh nghĩa các biến cần dùng  
static double a, b, c;  
static double delta;  
static double x1, x2;  
//₫ịnh nghĩa hàm nhập 3 thông số a,b,c của phương trình bậc 2  
static void NhapABC() {  
String buf;  
Console.Write("Nhập a : "); buf= Console.ReadLine();  
a = Double.Parse(buf);  
Console.Write("Nhập b : "); buf = Console.ReadLine();  
b = Double.Parse(buf);  
Môn : Lập trình hướng ₫ối tượng  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 4  
2.1 Cấu trúc của 1 ứng dụng C# nhỏ  
Console.Write("Nhập c : "); buf = Console.ReadLine();  
c = Double.Parse(buf);  
}
//₫ịnh nghĩa hàm tính nghiệm của phương trình bậc 2  
static void GiaiPT()  
{
//tính biệt số delta của phương trình  
delta = b * b - 4 * a * c;  
if (delta >= 0) //nếu có nghiệm thực  
{
x1 = (-b + Math.Sqrt(delta)) / 2 / a;  
x2 = (-b - Math.Sqrt(delta)) / 2 / a;  
}
}
Môn : Lập trình hướng ₫ối tượng  
Khoa Khoa học & Kỹ thuật Máy tính  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 5  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.1 Cấu trúc của 1 ứng dụng C# nhỏ  
//₫ịnh nghĩa hàm xuất kết quả  
static void XuatKetqua()  
{
if (delta < 0)  
//báo vô nghiệm  
Console.WriteLine("Phương trình vô nghiệm");  
else //báo có 2 nghiệm  
{
Console.WriteLine("Phương trình có 2 nghiệm thực : ");  
Console.WriteLine("X1 = " + x1);  
Console.WriteLine("X2 = " + x2);  
}
}
Môn : Lập trình hướng ₫ối tượng  
Khoa Khoa học & Kỹ thuật Máy tính  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 6  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.1 Cấu trúc của 1 ứng dụng C# nhỏ  
//₫ịnh nghĩa chương trình (hàm Main)  
static void Main(string[] args)  
{
NhapABC(); //1. nhập a,b,c  
GiaiPT();  
//2. giải phương trình  
XuatKetqua(); //3. xuất kết quả  
//4. chờ người dùng ấn Enter ₫ể ₫óng cửa sổ Console lại.  
Console.Write("Ấn Enter ₫ể dừng chương trình : ");  
Console.Read();  
}
} //kết thúc class  
} //kết thúc namespace  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 7  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.1 Cấu trúc của 1 ứng dụng C# nhỏ  
Quan sát cấu trúc của chương trình C# nhỏ ở slide 3, chúng ta có 1 số  
nhận xét sau :  
1. Dữ liệu chương trình thường rất phong phú, ₫a dạng về chủng  
loại Cơ chế ₫ịnh nghĩa kiểu dữ liệu nào ₫ược dùng ₫ể ₫ảm  
bảo người lập trình có thể ₫ịnh nghĩa kiểu riêng mà ứng dụng  
của họ cần dùng ?  
2. Nếu ứng dụng lớn chứa rất nhiều hàm chức năng và phải xử lý  
rất nhiều dữ liệu thì rất khó quản lý chúng trong 1 class ₫ơn  
giản cần 1 cấu trúc phù hợp ₫ể quản lý ứng dụng lớn.  
3. Chương trình thường phải nhờ các hàm chức năng ở các class  
khác ₫ể hỗ trợ mình. Thí dụ ta ₫ã gọi hàm Read, Write của class  
Console ₫ể nhập/xuất dữ liệu cho chương trình Cơ chế nhờ  
vả nào ₫ược dùng ₫ể ₫ảm bảo các thành phần trong ứng dụng  
không “quậy phá” nhau?  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 8  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.2 Kiểu dữ liệu cơ bản ₫ịnh sẵn  
Các thuật giải chức năng của chương trình sẽ xử lý dữ liệu. Dữ liệu  
của chương trình thường rất phong phú, ₫a dạng về chủng loại.  
Trước hết ngôn ngữ C# (hay bất kỳ ngôn ngữ lập trình nào) phải  
₫ịnh nghĩa 1 số kiểu ₫ược dùng phổ biến nhất trong các ứng dụng,  
ta gọi các kiểu này là “kiểu ₫ịnh sẵn”.  
Mỗi dữ liệu thường ₫ược ₫ể trong 1 biến. Phát biểu ₫ịnh nghĩa  
biến sẽ ₫ặc tả các thông tin về biến ₫ó :  
1. tên nhận dạng ₫ể truy xuất.  
2. kiểu dữ liệu ₫ể xác ₫ịnh các giá trị nào ₫ược lưu trong biến.  
3. giá trị ban ₫ầu mà biến chứa...  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 9  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.2 Kiểu dữ liệu cơ bản ₫ịnh sẵn  
Biến thuộc kiểu ₫ịnh sẳn sẽ chứa trực tiếp giá trị, thí dụ biến  
nguyên chứa trực tiếp các số nguyên, biến thực chứa trực tiếp các  
số thực Ta gọi kiểu ₫ịnh sẵn là kiểu giá trị (value type) ₫ể phân  
biệt với kiểu tham khảo (reference type) trong lập trình hướng ₫ối  
tượng ở các chương sau.  
Kiểu tham khảo (hay kiểu ₫ối tượng) sẽ ₫ược trình bày trong  
chương 2 trở ₫i. Đây là kiểu quyết ₫ịnh trong lập trình hướng ₫ối  
tượng. Một biến ₫ối tượng là biến có kiểu là tên interface hay tên  
class. Biến ₫ối tượng không chứa trực tiếp ₫ối tượng, nó chỉ chứa  
thông tin ₫ể truy xuất ₫ược ₫ối tượng Ta gọi kiểu ₫ối tượng là  
kiểu tham khảo (reference type).  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 10  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.2 Kiểu dữ liệu cơ bản ₫ịnh sẵn  
bool : kiểu luận lý, có 2 giá trị true và false.  
byte : kiểu nguyên dương 1 byte, có tầm trị từ 0 ₫ến 255.  
sbyte : kiểu nguyên có dấu 1 byte, có tầm trị từ -128 ₫ến 127.  
char : kiểu ký tự Unicode 2 byte, có tầm trị từ mã 0000 ₫ến FFFF.  
short : kiểu nguyên có dấu 2 byte, tầm trị từ -32768 ₫ến 32767.  
ushort : kiểu nguyên dương 2 byte, tầm trị từ 0 ₫ến 65535.  
int : kiểu nguyên có dấu 4 byte, tầm trị từ -2,147,483,648 ₫ến  
2,147,483,647.  
uint : kiểu nguyên dương 4 byte, tầm trị từ 0 ₫ến 4,294,967,295.  
63  
63  
long : kiểu nguyên có dấu 8 byte, tầm trị từ -2 ₫ến 2 -1.  
63  
ulong : kiểu nguyên dương 8 byte, tầm trị từ 0 ₫ến 2 -1.  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 11  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.2 Kiểu dữ liệu cơ bản ₫ịnh sẵn  
float : kiểu thực chính xác ₫ơn, dùng 4 byte ₫ể miêu tả 1 giá trị  
−45  
38  
thực, có tầm trị từ 1.5 × 10 to 3.4 × 10 . Độ chính xác  
khoảng 7 ký số thập phân.  
double : kiểu thực chính xác kép, dùng 8 byte ₫ể miêu tả 1 giá trị  
−324  
308  
thực, có tầm trị từ 5.0 × 10 to 1.7 × 10 . Độ chính xác  
khoảng 15 ký số thập phân.  
decimal : kiểu thực chính xác cao, dùng 16 byte ₫ể miêu tả 1 giá  
−28  
28  
trị thực, có tầm trị từ 1.0 × 10 to 7.9 × 10 . Độ chính xác  
khoảng 28-29 ký số thập phân.  
object (Object) : kiểu ₫ối tượng bất kỳ, ₫ây là 1 class ₫ịnh sẵn ₫ặc  
biệt.  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 12  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.3 Kiểu do người lập trình tự ₫ịnh nghĩa - Liệt kê  
Ngoài các kiểu cơ bản ₫ịnh sẵn, C# còn hỗ trợ người lập trình tự  
₫ịnh nghĩa các kiểu dữ liệu ₫ặc thù trong từng ứng dụng.  
Kiểu liệt kê bao gồm 1 tập hữu hạn và nhỏ các giá trị ₫ặc thù cụ  
thể. Máy sẽ mã hóa các giá trị kiểu liệt kê thành kiểu byte, short...  
//₫ịnh nghĩa kiểu chứa các giá trị ngày trong tuần  
enum DayInWeek {Sat, Sun, Mon, Tue, Wed, Thu, Fri};  
//₫ịnh nghĩa kiểu chứa các giá trị ngày trong tuần  
enum DayInWeek {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};  
//₫ịnh nghĩa biến chứa các giá trị ngày trong tuần  
DayInWeek day = DayInWeek.Tue;  
//₫ịnh nghĩa kiểu chứa các giá trị nguyên trong tầm trị ₫ặc thù  
enum ManAge : byte {Max = 130, Min = 0};  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 13  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.4 Kiểu do người lập trình tự ₫ịnh nghĩa - Record  
Kiểu record bao gồm 1 tập hữu hạn các thông tin cần quản lý.  
//₫ịnh nghĩa kiểu miêu tả các thông tin của từng sinh viên cần quản lý  
public struct Sinhvien {  
public String hoten;  
public String diachi;  
//các field khác  
}
Thật ra kiểu struct là trường hợp ₫ặc biệt của class ₫ối tượng mà ta  
sẽ trình bày chi tiết từ chương 2.  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 14  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.5 Kiểu do người lập trình tự ₫ịnh nghĩa - Array  
Trong trường hợp ta có nhiều dữ liệu cần xử lý thuộc cùng 1 kiểu  
(thường xảy ra), nếu ta ₫ịnh nghĩa từng biến ₫ơn ₫ể miêu tả từng  
dữ liệu thì rất nặng nề, thuật giải xử lý chúng cũng gặp nhiều khó  
khăn. Trong trường hợp này, tốt nhất là dùng kiểu Array ₫ể quản  
lý nhiều dữ liệu cần xử lý. Array có thể là :  
. array 1 chiều.  
. array nhiều chiều.  
. array "jagged".  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 15  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Array 1 chiều  
int[] intList; //1.₫ịnh nghĩa biến array là danh sách các số nguyên  
//2. khi biết ₫ược số lượng, thiết lập số phần tử cho biến array  
intList = new int[5];  
//3. gán giá trị cho từng phần tử khi biết ₫ược giá trị của nó  
intList[0] = 1; intList[1] = 3; intList[2] = 5;  
intList[3] = 7; intList[4] = 9;  
Nếu có ₫ủ thông tin tại thời ₫iểm lập trình, ta có thể viết lệnh ₫ịnh  
nghĩa biến array như sau :  
int[] intList = new int[5] {1, 3, 5, 7, 9};  
hay ₫ơn giản :  
int[] intList = new int[] {1, 3, 5, 7, 9};  
hay ₫ơn giản hơn nữa :  
int[] intList = {1, 3, 5, 7, 9};  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 16  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Array nhiều chiều  
int[,] matran; //1. ₫ịnh nghĩa biến array là ma trận các số nguyên  
//2. khi biết ₫ược số lượng, thiết lập số phần tử cho biến array  
matran = new int[3,2];  
//3. gán giá trị cho từng phần tử khi biết ₫ược giá trị của nó  
matran[0,0] = 1; matran[0,1] = 2; matran[1,0] = 3;  
matran[1,1] = 4; matran[2,0] = 5; matran[2,1] = 6;  
Nếu có ₫ủ thông tin tại thời ₫iểm lập trình, ta có thể viết lệnh ₫ịnh  
nghĩa biến array như sau :  
int[,] matran = new int[3,2] {{1, 2}, {3, 4}, {5,6}};  
hay ₫ơn giản :  
int[,] matran = new int[,] {{1, 2}, {3, 4}, {5,6}};  
hay ₫ơn giản hơn nữa :  
int[,] matran = {{1, 2}, {3, 4}, {5,6}};  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 17  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Array "jagged"  
Array "jagged" là array mà từng phần tử là array khác, các array ₫ược  
chứa trong array "jagged" có thể là array 1 chiều, n chiều hay là array  
"jagged' khác.  
int[][] matran; //1. ₫ịnh nghĩa biến array "jagged"  
//2. khi biết ₫ược số lượng, thiết lập số phần tử cho biến array  
matran = new int[3][];  
for (int i = 0; i < 3; i++) matran[i] = new int[2+i];  
//3. gán giá trị cho từng phần tử khi biết ₫ược giá trị của nó  
matran[0][0] = 1; matran[0][1] = 2; matran[1][0] = 3;  
matran[1][1] = 4; matran[2][0] = 5; matran[2][1] = 6;  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 18  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Array "jagged"  
Nếu có ₫ủ thông tin tại thời ₫iểm lập trình, ta có thể viết lệnh ₫ịnh  
nghĩa biến array như sau :  
int[][] array = new int [3][];  
array[0] = new int[] {1, 2};  
array[1] = new int[] {3, 4};  
array[2] = new int[] {5,6};  
hay ₫ơn giản :  
int[][] array = new int [][] {new int[]{1, 2}, new int[]{3, 4}, new int[] {5,6}};  
hay ₫ơn giản hơn nữa :  
int[][] array = {new int[]{1, 2}, new int[]{3, 4}, new int[] {5,6}};  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 19  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
2.6 Phương pháp phân tích từ-trên-xuống  
Như ₫ã thấy ở slide trước, nếu ứng dụng lớn chứa rất nhiều hàm  
chức năng và phải xử lý rất nhiều dữ liệu thì rất khó quản lý chúng  
trong 1 class ₫ơn giản cần 1 cấu trúc phù hợp ₫ể quản lý ứng  
dụng lớn. Phương pháp ₫ược dùng phổ biến nhất là phương pháp  
phân tích top-down.  
Nội dung của phương pháp này là phân rã class ứng dụng lớn  
thành n class nhỏ hơn (với n ₫ủ nhỏ ₫ể việc phân rã ₫ơn giản).  
Mỗi class nhỏ hơn, nếu còn quá phức tạp, lại ₫ược phân rã thành  
m class nhỏ hơn nữa (với m ₫ủ nhỏ), cứ như vậy cho ₫ến khi các  
class tìm ₫ược hoặc là class ₫ã xây dựng rồi hoặc là class khá ₫ơn  
giản, có thể xây dựng dễ dàng.  
Hình vẽ của slide kế cho thấy trực quan của việc phân tích top-  
down theo hướng ₫ối tượng.  
Môn : Lập trình hướng ₫ối tượng  
Chương 2 : Các kiến thức cơ bản về lập trình C# ₫ã học  
Slide 20  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Tải về để xem bản đầy đủ
pdf 26 trang myanh 22420 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 2: Các kiến thức cơ bản về lập trình C# đã học", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_2_cac_kien_thuc_c.pdf