Professional Documents
Culture Documents
THỪA KẾ ............................................................................ 15
INTERFACE ....................................................................... 27
XỬ LÝ NGOẠI LỆ ............................................................. 29
LỚP VÀ ĐỐI TƯỢNG (1/3)
MỤC TIÊU
Sau khi sinh viên hoàn thành các yêu cầu của buổi này, sinh viên có thể:
1. Hiểu được nguyên tắc đầu tiên (trụ cột đầu tiên) của lập trình hướng đối
tượng: Đóng gói (Encapsulation)
2. Hiểu cách mô hình các đối tượng/lớp đơn giản trong thế giới thực thành các
đối tượng/lớp trong lập trình
3. Biết và Hiểu rõ các thành phần cơ bản của một lớp
a. Fields
b. Constructors
c. Methods
4. Có kỹ năng xây dựng các lớp đơn giản, cùng với các phương thức tính toán
đơn giản thông qua ngôn ngữ lập trình C#
1
Ví dụ:
Thong tin tai khoan hien tai:
- Ma so tai khoan: 123456
- So tien: 1000000
Ví dụ:
Thong tin quyen sach hien tai:
- Ma so sach: B1234
- Ten sach: Mindset
- Gia sach: 70000
- Giam gia: 7000
2
- Ma so sach: B1234
- Ten sach: Mindset
- Gia sach: 70000
- Giam gia: 24000
Viết phương thức Main() dùng constructor để tạo 1 sinh viên, sau đó in thông
tin sinh viên ra màn hình và tính tuổi của sinh viên đó.
Ví dụ:
Thong tin sinh vien:
- Ma sinh vien: TH151234
- Ho ten: Nguyen Van A
- Nam sinh: 1997
- Dia chi: 123 Nguyen Trai, P10, Q5, TP.HCM
3
Bài 4. Xây dựng lớp Circle
Một hình tròn có bán kính r
Khai báo field
Thêm các constructors:
o Constructor dùng để tạo đối tượng hình tròn có bán kính r
o Constructor không có tham số (còn gọi là parameterless
constructor hay default constructor) để tạo đối tượng hình tròn có
bán kính r bằng 1
Thêm các phương thức Get/Set cho field
Thêm phương thức Input() để nhập thông tin của hình tròn từ bàn phím
Thêm phương thức Output() để xuất thông tin của hình tròn ra màn hình
Thêm phương thức tính diện tích của hình tròn: 𝑆 = 𝜋. 𝑟 2
Thêm phương thức tính chu vi của hình tròn: 𝐶 = 2. 𝜋. 𝑟
Ví dụ:
Thong tin hinh tron:
Ban kinh r: 1
4
LỚP VÀ ĐỐI TƯỢNG (2/3)
MỤC TIÊU
Sau khi sinh viên hoàn thành các yêu cầu của buổi này, sinh viên có thể:
1. Có kỹ năng sử dụng các properties
2. Có kỹ năng sử dụng các lớp đã xây dựng:
a. Tạo Mảng các đối tượng của lớp đã xây dựng
b. Tạo Field của lớp có kiểu là lớp khác
5
Bài 4. Dùng properties với lớp Circle
Trong lớp Circle thay thế các phương thức Get/Set thành properties. Và kiểm tra
tính hợp lệ trước khi thay đổi dữ liệu của field
Bán kính r là phải là số không âm
Ví dụ:
Nhap so duong tron n: 3
6
Bài 6. Tạo lớp Color
Trên máy tính, màu (color) được biểu diễn bằng các giá trị red, green, blue (có
giá trị từ 0 đến 255) và alpha (hay transparency, mức độ trong suốt của màu, cũng
có giá trị từ 0 đến 255, với 0 là hoàn toàn trong suốt, 255 là đậm đặc). Hãy tạo lớp
Color
Thêm các instance variables (một cách gọi khác của fields)
Thêm các constructors
o Constructor không tham số (default constructor) để tạo đối tượng
sao cho các fields: red, green, blue, alpha có giá trị mặc định là 255
(màu trắng)
o Constructor có tham số để tạo đối tượng màu có 4 thông tin trên
o Constructor có tham số là đối tượng color cho trước. Constructor
này có nhiệm vụ tạo đối tượng màu và sao chép thông tin của đối
tượng color trong tham số vào đối tượng mới tạo (Người ta còn gọi
constructor này là Copy constructor)
public Color() {}
public Color(int red, int green, int blue, int alpha) {}
public Color(Color color) {}
Thêm các properties cho các fields với các ràng buộc của các field như đã
mô tả
Thêm phương thức tính giá trị mức xám (grayscale) của màu (grayscale
bằng trung bình của red, green, blue)
Bài 7. Xây dựng lớp Ball, sử dụng lớp Color làm field
Trái banh có các fields: kích thước (size hay radius), màu sắc (color) và số lần
ném banh (timeOfThrown)
Khai báo các fields cho Ball (field color nên dùng kiểu Color đã tạo trong
bài trước)
Thêm các constructors
7
o Constructor không tham số để tạo đối tượng Ball có những thông
tin mặc định: kích thước bằng 1, số lần ném banh là 0, màu là màu
mặc định
o Constructor có tham số để tạo đối tượng có 3 thông tin trên
Thêm các properties cho các fields (nhớ ràng buộc dữ liệu hợp lý)
Thêm phương thức Pop (Pop nghĩa là mô hình việc làm cho trái banh nổ):
Banh nổ nghĩa là thay đổi size thành giá trị 0
Thêm phương thức Throw (Throw nghĩa là mô hình việc ném trái banh):
Ném banh nghĩa là cộng 1 vào số lần ném (nhưng chỉ cộng khi banh chưa
bị nổ)
Viết phương thức Input() để nhập thông tin trái banh
Viết phương thức Output() xuất thông tin trái banh
8
LỚP VÀ ĐỐI TƯỢNG (3/3)
MỤC TIÊU
Sau khi sinh viên hoàn thành các yêu cầu của buổi này, sinh viên có thể:
Có kỹ năng sử dụng các lớp đã xây dựng:
a. Tạo Field của lớp là mảng/danh sách có kiểu là lớp khác
b. Tạo Phương thức có tham số là lớp
c. Tạo Phương thức có kiểu trả về là lớp
MỤC TIÊU
Sau khi sinh viên hoàn thành các yêu cầu của buổi này, sinh viên có thể:
1. Hiểu được ý nghĩa của operator overloading
2. Biết được các phép toán được overload và phép toán không được overload
3. Có kỹ năng sử dụng operator overloading
11
Bài 2. Overload phép toán so sánh
Hai vector được gọi là bằng nhau khi các thành phần của 2 vector tương ứng bằng
nhau, nghĩa là với: 𝑎⃗ = (𝑎1 , 𝑎2 ); 𝑏⃗⃗ = (𝑏1 , 𝑏2 );
𝑎 = 𝑏1
𝑎⃗ == 𝑏⃗⃗ ⟺ { 1
𝑎2 = 𝑏2
Trong lớp vector hãy overload phép toán so sánh bằng “==” giữa hai vector
Viết phương thức Main() kiểm tra phép toán “==” vừa overload
12
VD:
Nhap phan so thu 1:
tu = 1
mau = 2
13
THỪA KẾ
MỤC TIÊU
Sau khi sinh viên hoàn thành các yêu cầu của buổi này, sinh viên có thể:
1. Hiểu được nguyên tắc thứ hai (trụ cột thứ hai) của lập trình hướng đối
tương: thừa kế (inheritance)
2. Xây dựng lớp mới (lớp dẫn xuất) bằng cách thừa kế từ lớp cũ (lớp cơ sở)
và thêm các fields, properties và method mới
3. Sử dụng constructor của lớp cơ sở
4. Sử dụng constructor của lớp cơ sở
Bài 1. Lớp cơ sở
Một người (Person) cần mô hình trên máy gồm có các thông tin: tên (name) và
email
Khai báo các Fields
Cài đặt các Properties
Viết default constructor để tạo đối tượng có giá trị mặc định
Viết parameter constructor để tạo đối tượng có 2 thông tin trên
15
Viết default constructor để tạo đối tượng có giá trị mặc định
Viết parameter constructor để tạo đối tượng có 3 thông tin trên
Viết phương thức Main() tạo 1 đối tượng sinh viên (dùng constructor để tạo) và
xuất thông tin sinh viên lên màn hình
16
Lớp dẫn xuất: Xây dựng lớp tam giác (Triangle) và lớp hình chữ nhật
(Rectangle)
Hình Tam giác và hình chữ nhật cũng là một hình có các thông tin như sau:
height
height
base width
Trong đó tham số base của tam giác có thể coi như là width
Xây dựng 2 lớp dẫn xuất là lớp hình tam giác (Triangle) và lớp hình chữ nhật
(Rectangle) thừa kế từ lớp Shape.
Sơ đồ kế thừa:
17
Cài đặt các properties (Chú ý: lớp Triangle tạo property có tên là Base
thay vì Width)
Cài đặt thêm phương thức Area() để tính diện tích các hình tương ứng
1
𝑆𝑡𝑎𝑚 𝑔𝑖á𝑐 = × ℎ𝑒𝑖𝑔ℎ𝑡 × 𝑤𝑖𝑑𝑡ℎ
2
𝑆𝑐ℎữ 𝑛ℎậ𝑡 = ℎ𝑒𝑖𝑔ℎ𝑡 × 𝑤𝑖𝑑𝑡ℎ
MỤC TIÊU
Sau khi sinh viên hoàn thành các yêu cầu của buổi này, sinh viên có thể:
1. Hiểu được nguyên tắc thứ ba (trụ cột thứ ba) của lập trình hướng đối tượng:
đa hình (polymorphím) – sau các nguyên tắc đóng gói (encapsulation) và
thừa kế (inheritance).
2. Có kỹ năng thực hiện các bước xây dựng lớp/phương thức có tính đa
hình
a. Hiểu được từ khóa virtual trong lớp cơ sở
b. Có kỹ năng override method của lớp dẫn xuất
3. Sử dụng các lớp/phương thức có tính đa hình
Bài 1. Biết và Hiểu các bước xây dựng phương thức có tính đa hình
Có 3 loại xe hơi (Car): LandRover, Ford, Honda cần mô hình trên máy tính
LandRover Ford Honda
Mỗi loại xe trên tương ứng với một lớp: Lớp LandRover, lớp Ford, lớp Honda
Mỗi loại xe khi di chuyển (Move) sẽ dùng những động cơ khác nhau
Xe LandRover : Dùng động cơ 2.0 L engine
Xe Ford : Dùng động cơ V engine
Xe Honda : Dùng động cơ i-vtec engine
Như vậy, mỗi lớp có phương thức Move() riêng để xuất ra màn hình thông tin
động cơ của xe mình đang dùng.
19
Hãy thiết kế các lớp và viết phương thức Move() của các lớp sao cho:
- Lúc đầu người dùng tạo ra một danh sách chứa các đối tượng trên (danh
sách này vừa chứa xe LandRover, vừa chứa xe Ford và vừa chứa xe
Honda, mỗi loại xe có thể được tạo nhiều lần)
- Với danh sách đối tượng đã tạo, khi ra lệnh Move (Gọi phương thức
Move()) cho từng đối tượng trong danh sách, các đối tượng sẽ dùng các
động cơ tương ứng của mình để di chuyển (yêu cầu, chỉ cần xuất ra màn
hình xe di chuyển bằng động cơ nào trong phương thức Move()). Người ta
nói, phương thức Move() như vậy có tính đa hình
Cụ thể, hãy thiết kế các lớp và viết các phương thức Move() sao cho phương thức
Main() hoạt động và cho kết quả như sau:
static void Main()
{
Car[] cars = new Car[3];
20
Sơ đồ kế thừa:
Chú ý: Phương thức Main() có thể viết khác đi (Dùng collection có tên List)
static void Main()
{
List<Car> cars = new List<Car>();
cars.Add(new LandRover());
cars.Add(new Ford());
cars.Add(new Honda());
Bài 2. Tính đa hình của phương thức tính diện tích Area() của các hình
Có 2 loại hình khác nhau cần quản lý: hình chữ nhật (Rectange), hình tròn
(Circle).
radius
height o
width
22
Trong bài 2,
Viết phương thức nhập dữ liệu Input() cho lớp hình chữ nhật và hình tròn
sao cho phương thức này có tính đa hình
Viết phương thức xuất dữ liệu Output() cho lớp hình chữ nhật và hình tròn
sao cho phương thức này có tính đa hình
Trong phương thức Main()
o Nhập n hình khác nhau (n nhập từ bàn phím).
o Xuất thông tin các hình đã nhập
o Tính và xuất diện tích từng hình đã nhập. Tính và xuất diện tổng diện
tích các hình đã nhập
Phương thức Main() hoạt động cho kết quả có dạng như sau:
Nhap so hinh n: 2
Nhap hinh thu 1:
Loai hinh (Neu hinh chu nhat nhap ‘C’, hinh tron nhap ‘T’): C
Height: 3
Width: 4
23
ĐA HÌNH (2/2)
MỤC TIÊU
Sau khi sinh viên hoàn thành các yêu cầu của buổi này, sinh viên có thể:
1. Phân tích, thiết kế bài toán đơn giản có tính đa hình
2. Sử dụng các lớp/phương thức có tính đa hình
25
Thông tin chung của các thí sinh: sbd (số báo danh), hoten (họ tên), bai1,
bai2, bai3 (điểm của bài 1, 2, 3), tongdiem (tổng điểm cuối cùng của từng
thí sinh)
Thông tin riêng cho đối tượng Chuyên: tiengAnh (điểm tiếng Anh)
Thông tin riêng cho đối tượng Siêu cúp: csdl (điểm CSDL)
26
INTERFACE
MỤC TIÊU
Sau khi sinh viên hoàn thành các yêu cầu của buổi này, sinh viên có thể:
1. Định nghĩa (khai báo) interface
2. Hiện thực (cài đặt) interface
3. Sử dụng interface
Khai báo interface IBook cho một quyển sách. Trong interface IBook có:
Các properties của quyển sách
Phương thức tính giá một quyển sách
Xây dựng lớp Book hiện thực (cài đặt) interface IBook trên
Chú ý: Phương thức tính giá bán của 1 quyển sách được tính như sau:
Giá bán một quyển sách = Giá sách – Giảm giá .
Bài 2. Cơ bản về Interface – Nhiều lớp thực hiện cùng 1 interface và thực hiện
tính đa hình
Lớp Rectangle (hình chữ nhật) có: chiều rộng và chiều cao
Lớp Cirlce (hình tròn) có: bán kính
Xây dựng interface IShape có phương thức tính diện tích của hình
Xây dựng lớp Rectange và lớp Circle cài đặt interface IShape trên
27
Bài 3. Tính lương nhân viên
Công ty phần mềm TinySoft đang cần quản lý các nhân viên của mình. Nhân viên
công ty thuộc một trong hai bộ phận: Programmer và Tester. Thông tin cơ bản
của nhân viên gồm: mã nhân viên, họ tên nhân viên
Lương hàng tháng của mỗi bộ phận như sau:
Programmer: Mỗi lập trình viên có lương hàng tháng riêng. Nếu trong
tháng số lỗi lập trình < 20 thì được tăng thêm 10% lương.
Tester: Mỗi nhân viên kiểm thử phần mềm ngoài mức lương cơ bản hàng
tháng, nhân viên còn nhận được tiền overtime (gọi tắt là OT: tiền làm qua
đêm). Số tiền OT bằng số giờ OT nhân với 200.000 đồng
Yêu cầu:
Xây dựng interface chứa phương thức tính lương, lớp abstract chứa các
thông tin cơ bản của Programmer và Tester
Xây dựng lớp Programmer, Tester
Hãy viết chương trình nhập n nhân viên và tính lương của n nhân viên này.
28
XỬ LÝ NGOẠI LỆ
MỤC TIÊU
Sau khi sinh viên hoàn thành các yêu cầu của buổi này, sinh viên có thể:
1. Bắt exception
2. Ném exception
3. Hiểu và Sử dụng được một số lớp exception có sẵn
29
Bước 1: Xây dựng lớp Person trong file Person.cs
30
Với property của field age:
31
Bước 4: Thêm khối try … catch để bắt ngoại lệ
Dùng phương thức này để viết chương trình nhập 10 số: 𝒂𝟏 , 𝒂𝟐 , … , 𝒂𝟏𝟎 , sao cho
𝟏 < 𝒂𝟏 < ⋯ < 𝒂𝟏𝟎 < 𝟏𝟎𝟎. Nếu người dùng nhập số không hợp lệ thì yêu cầu
người dùng nhập lại
32