Tải bản đầy đủ (.pdf) (34 trang)

BÁO CÁO THỰC TẬP TỐT NGHIỆP TẠI SAMSUNG(SRV)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (823.19 KB, 34 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA VIỄN THƠNG I

BÁO CÁO THỰC TẬP TỐT NGHIỆP

Hà Nội 08/2023


LỜI MỞ ĐẦU
Kính thưa Ban lãnh đạo Học Viện và Khoa Viễn Thông 1.
Thực hiện nhiệm vụ học tập của nhà trường trong đợt thực tập tốt nghiệp, được sự đồng ý của
ban lãnh đạo Khoa Viễn Thông 1 và các giảng viên hướng dẫn. Bám sát đề cương của Khoa
đưa ra, những lý luận và kiến thức đã học. Trong quá trình thực tập tại Trung tâm Nghiên cứu
và Phát triển Samsung Việt Nam (SRV), em đã được trau dồi thêm kiến thức về ngành viễn
thơng nói chung, mảng lập trình nói riêng cũng như cơ cấu và tình hình hoạt động của cơng
ty nơi em được thực tập.
Được sự tận tình giúp đỡ hướng dẫn của các giảng viên Khoa Viễn Thông 1 cùng với giáo
viên hướng dẫn thực tập tại công ty và nỗ lực học tập, tìm tịi học hỏi, em đã hồn thành báo
cáo thực tập tốt nghiệp của mình.
Báo cáo này gồm 2 phần chính:
Phần I: Giới thiệu về đơn vị thực tập
Phần II: Nội dung thực tập
Trong quá trình thực hiện báo cáo, tuy đã cố gắng nhưng em vẫn còn những hạn chế về thời
gian tìm hiểu, kiến thức cũng như là kinh nghiệm và vẫn cịn nhiều sai sót. Em rất mong được
nhận những ý kiến đóng góp và nhận xét của để em có thể hồn thiện hơn.

1


LỜI CẢM ƠN
Để hoàn thành được báo cáo thực tập tốt nghiệp này thì em xin cảm ơn tới phía ban lãnh đạo


của Trung tâm Nghiên cứu và Phát triển Samsung Việt Nam (SRV) đã tạo điều kiện cho em
được thực tập tại đây. Ngoài ra, em cảm ơn các anh hướng dẫn tại đây đã ln nhiệt tình chỉ
dẫn, giảng dạy cho em những kiến thức về lập trình cơ bản để em có thể hồn thiện hơn.
Em xin gửi lời cảm ơn tới ban lãnh đạo Học Viện, Khoa Viễn Thơng 1 đã thiết lập khung
chương trình có mơn học “Thực tập” để em có thể vận dụng những kiến thức học được trên
giảng đường áp dụng vào cơng việc và được tham quan, tìm hiểu về mơi trường doanh nghiệp.
Em xin gửi lời cảm ơn sâu sắc và chân thành tới giảng viên hướng dẫn Lê Thanh Thủy. Cơ
đã ln dìu dắt, giúp đỡ và chỉ bảo tận tình cho em để hồn thành tốt Thực tập.
Em xin chân thành cảm ơn!
Hà Nội, ngày 22 tháng 08 năm 2023

2


MỤC LỤC
DANH MỤC TỪ VIẾT TẮT ............................................................................................................. 4
DANH MỤC HÌNH VẼ ...................................................................................................................... 5
Chương 1: Tổng quan về đơn vị thực tập......................................................................................... 6
I. Giới thiệu về đơn vị thực tập ...................................................................................................... 6
II. Lĩnh vực hoạt động .................................................................................................................... 6
Chương 2: Nội dung thực tập ............................................................................................................ 7
I. Đào tạo kĩ năng giải thuật cơ bản .............................................................................................. 7
1.1 Thuật toán và các thành phần cơ bản của thuật toán .......................................................... 7
1.2 Cấu trúc dữ liệu sơ cấp: mảng, chuỗi, ngăn xếp, hàng đợi. ................................................ 8
1.2.1: Mảng ................................................................................................................................... 8
1.2.2: Chuỗi .................................................................................................................................. 8
1.2.3: Ngăn xếp ............................................................................................................................. 9
1.2.4: Hàng đợi (Queue) .............................................................................................................. 9
1.3: Hướng dẫn gỡ lỗi khi triển khai thuật toán....................................................................... 10
II. Đào tạo kỹ năng giải thuật lập trình ...................................................................................... 11

2.1: Giới thiệu về đồ thị: Đồ thị vơ hướng, đồ thị có trọng số .................................................. 11
2.2: Thuật toán Dijsktra ............................................................................................................. 12
2.3: Thuật toán Depth-First Search ............................................................................................ 12
2.4: Thuật toán Breadth-First Search ....................................................................................... 13
2.5: Thuật toán quay lui ............................................................................................................. 14
III. Đào tạo kĩ năng sử dụng Office ............................................................................................. 15
IV. Xây dựng dự án game bằng ngơn ngữ C++ .......................................................................... 18
4.1: Tìm hiểu về hướng đối tượng trong C++ ........................................................................... 18
4.1.1: Các tính chất cơ bản ........................................................................................................ 18
4.2: Xây dựng game xếp hình .................................................................................................... 29
4.2.1: Giới thiệu game ................................................................................................................ 29
4.2.2: Lập trình game xếp hình ................................................................................................. 30
V. Kết luận ..................................................................................................................................... 32

3


DANH MỤC TỪ VIẾT TẮT
Từ viết
tắt

Viết đầy đủ

Giải thích nghĩa

Input/Output

Đầu vào/Đầu ra

MVC


Model - View - Controller

Mơ hình - Quan sát - Điều khiển

RAII

Resource Acquisition Is
Initialization

Thu hồi tài nguyên là khi khởi tạo

SFML

Simple and Fast Multimedia Library Thư viện Đa phương tiện nhanh và đơn giản

I/O

STL
SVMC

UML

Standard Template Library

Thư viện mẫu chuẩn

SamsungVietnam Researching and
Developing Center


Trung tâm Nghiên Cứu và Phát triển Điện
thoại di động Samsung Việt Nam

Unified Modeling Language

Ngơn ngữ mơ hình hóa thống nhất

4


DANH MỤC HÌNH VẼ
Hình 1 Tính đóng gói (Encapsulation)............................................................................................ 18
Hình 2 Thiết kế một lớp với hai thuộc tính private ....................................................................... 19
Hình 3 Thiết kế một lớp với một thuộc tính private...................................................................... 19
Hình 4 Tính kế thừa (Inheritance) .................................................................................................. 20
Hình 5 Đa hình với nạp chồng phương thức .................................................................................. 21
Hình 6 Ví dụ thiết kế lớp Employee ................................................................................................ 21
Hình 7 Thiết kế lớp Manager ghi đè lại phương thức của lớp Employee ................................... 22
Hình 8 Hàm makeSound() trả về kết quả khác nhau với mỗi đối tượng khác nhau ................. 23
Hình 9 Đa hình thơng qua các đối tượng đa hình ......................................................................... 24
Hình 10 Cấp phát động bộ nhớ thơng thường ............................................................................... 25
Hình 11 Sử dụng RAII để tránh memory leak ............................................................................... 26
Hình 12 Ví dụ về Singleton .............................................................................................................. 26
Hình 13 Sơ đồ đơn giản về Observer .............................................................................................. 27
Hình 14 Sơ đồ MVC ......................................................................................................................... 28
Hình 15 Cách tạo một thread .......................................................................................................... 29

5



Chương 1: Tổng quan về đơn vị thực tập
I. Giới thiệu về đơn vị thực tập





Tên đơn vị: Trung tâm nghiên cứu và phát triển Samsung Việt Nam
Tên tiếng Anh: Samsung Research and Development Center Vietnam
Tên viết tắt: SRV
Địa chỉ: Tịa Samsung, Khu đơ thị Tây Hồ Tây, đường Hồng Minh Thảo, phường
Xuân Tảo, quận Bắc Từ Liêm, Hà Nội, Bắc Từ Liêm, Bắc Từ Liêm

SRV là Trung tâm Nghiên cứu và Phát triển Điện lớn nhất của Tập đoàn Samsung tại khu vực
Đông Nam Á. SRV là một trong những khoản đầu tư dự án quan trọng nhất của Tổ hợp
Samsung Việt Nam. SRV chính thức đi vào hoạt động từ tháng 2/2012. Hoạt động kinh doanh
của SRV bao gồm một loạt các Nghiên cứu và Phát triển Phần mềm, Phần cứng cho các sản
phẩm khác nhau như điện thoại thơng minh, máy tính bảng, đồng hồ thơng minh.

II. Lĩnh vực hoạt động
SRV hoạt động trong 4 lĩnh vực chính bao gồm:
• Phát triển phần mềm thương mại hóa cho các thiết bị thông minh của Samsung nhằm
đáp ứng tốt nhất nhu cầu khắt khe từ thị trường và cung cấp gói phần mềm tuyệt vời
nhất cho từng khu vực
• Nghiên cứu và phát triển các giải pháp phần mềm tiên tiến, dịch vụ hiện đại cho người
tiêu dùng, doanh nghiệp cả trong nước và toàn cầu với mục tiêu trở thành nhà cung cấp
dịch vụ phần mềm hàng đầu thế giới
• Đánh giá và đảm bảo chất lượng tuyệt vời của các gói phần mềm mạng, máy chủ cho
hệ thống mạng 4G/5G cho người tiêu dùng toàn cầu thơng qua các cơng cụ tự động hóa
thơng minh

• Phát triển và thiết kế phần cứng, cơ khí cho tất cả các thiết bị, sản phẩm chủ lực của
Samsung cũng như hỗ trợ quy trình sản xuất phần cứng chuyên dụng tại các nhà máy
SEV/T tại Việt Nam

6


Chương 2: Nội dung thực tập
I. Đào tạo kĩ năng giải thuật cơ bản
1.1 Thuật toán và các thành phần cơ bản của thuật toán
Thuật toán là một tập hợp các công việc được thực hiện theo một thứ tự nhất định để giải quyết
một bài toán trong một số bước đi từ trạng thái đầu vào ban đầu cho đến trạng thái đầu ra kết
quả mong muốn.
- Các thành phần chính của thuật tốn bao gồm:
1. Đầu vào (Input): Đây là dữ liệu mà thuật toán cần để thực hiện cơng việc. Dữ liệu này
có thể là số, văn bản, hình ảnh, hoặc bất kỳ dạng dữ liệu nào liên quan đến vấn đề cần
giải quyết.
2. Đầu ra (Output): Đây là kết quả mà thuật toán tạo ra sau khi hồn thành q trình xử
lý. Đầu ra thường liên quan trực tiếp đến mục tiêu mà thuật toán cố gắng đạt được.
3. Bước xử lý (Processing Steps): Đây là chuỗi các bước cụ thể và logic mà thuật toán sẽ
thực hiện trên dữ liệu đầu vào để tạo ra kết quả mong muốn. Các bước này có thể bao
gồm các phép toán số học, so sánh, lặp lại, và các thao tác khác liên quan đến loại vấn
đề cụ thể.
4. Lưu trữ (Memory/Storage): Một thuật tốn có thể sử dụng bộ nhớ để lưu trữ tạm thời
các giá trị trung gian hoặc dữ liệu quan trọng trong quá trình xử lý. Điều này có thể cần
thiết để thực hiện các phép toán trên dữ liệu hoặc để kiểm soát q trình lặp lại.
5. Điều kiện (Conditions): Thuật tốn có thể phải thực hiện các quyết định dựa trên các
điều kiện hoặc tiêu chí cụ thể. Các điều kiện này quyết định liệu thuật tốn có thực hiện
một bước nhất định hay không, hoặc chọn một con đường xử lý khác.
6. Lặp lại (Iteration/Loops): Trong một số trường hợp, thuật toán cần thực hiện một chuỗi

các bước xử lý lặp lại một hoặc nhiều lần. Điều này thường được thực hiện thơng qua
các vịng lặp (loops), cho phép thuật tốn xử lý dữ liệu một cách lặp đi lặp lại cho đến
khi đạt được điều kiện thốt khỏi vịng lặp.
7. Điểm bắt đầu (Starting Point): Thuật toán cần biết từ đâu để bắt đầu thực hiện các bước
xử lý. Điểm bắt đầu này có thể là dữ liệu đầu vào ban đầu hoặc một vị trí cụ thể trong
q trình xử lý.
8. Kết thúc (Termination): Một thuật tốn cần có điều kiện dừng để xác định khi nào nó
sẽ kết thúc việc thực hiện. Điều này đảm bảo rằng thuật tốn khơng tiếp tục thực hiện
vơ hạn mà sẽ kết thúc khi đã đạt được mục tiêu hoặc khơng cịn cần thiết nữa.
Các thành phần này cùng nhau tạo nên cấu trúc và logic của một thuật tốn, giúp nó hoạt động
hiệu quả để giải quyết vấn đề cụ thể.

7


1.2 Cấu trúc dữ liệu sơ cấp: mảng, chuỗi, ngăn xếp, hàng đợi.
1.2.1: Mảng
Mảng (Array) là một tập hợp tuần tự các phần tử có cùng kiểu dữ liệu và các phần tử được lưu
trữ trong một dãy các ô nhớ liên tục trên bộ nhớ. Các phần tử của mảng được truy cập bằng
cách sử dụng “chỉ số”. Mảng có kích thước N sẽ có chỉ số từ 0 tới N – 1.
Tất cả mảng đều bao gồm các vị trí nhớ liền kề nhau. Địa chỉ thấp nhất tương ứng với thành
phần đầu tiền và địa chỉ cao nhất tương ứng với thành phần cuối cùng của mảng.
Ưu điểm của mảng:
• Truy câp phàn tử vơi thời gian hằng số O(1)
• Sử dụng bộ nhớ hiệu quả
• Tính cục bộ về bộ nhớ
Nhược điểm của mảng:
• Khơng thể thay đổi kích thước của mảng khi chương trình đang thực hiện
1.2.2: Chuỗi
Chuỗi là một tập hợp các ký tự (char) được lưu trữ trên các ô nhớ liên tiếp và ln ln có 1

ký tự null là \0 báo hiệu kết thúc chuỗi.
Các hoạt động trên chuỗi bao gồm trích xuất, cắt, nối, tìm kiếm và sắp xếp các ký tự.
Chuỗi thường hỗ trợ các thao tác xử lý văn bản và biểu diễn ngôn ngữ tự nhiên.
Ưu điểm của chuỗi:






Dễ sử dụng
Hỗ trợ thư viện
Xử lý văn bản
Đa dạng
Các phép tốn tích hợp

Nhược điểm của chuỗi:
• Thao tác trên chuỗi có thể tốn thời gian và tài nguyên, đặc biệt là khi chuỗi có kích
thước lớn.
• Sử dụng chuỗi có thể dẫn đến vấn đề quản lý bộ nhớ, đặc biệt khi thêm/xóa ký tự hoặc
khi tạo các bản sao của chuỗi.
• Khó xử lý dữ liệu nhị phân

8


1.2.3: Ngăn xếp
Ngăn xếp (stack) là một cấu trúc dữ liệu tuân theo nguyên tắc "Last In, First Out" (LIFO), có
nghĩa là phần tử cuối cùng được thêm vào là phần tử đầu tiên được lấy ra.
Cách hoạt động cơ bản trên ngăn xếp:







Push: Thêm một phần tử vào đỉnh của ngăn xếp.
Pop: Lấy ra phần tử ở đỉnh của ngăn xếp.
Top (Peek): Xem giá trị của phần tử ở đỉnh của ngăn xếp mà khơng loại bỏ nó.
IsEmpty: Kiểm tra xem ngăn xếp có rỗng hay khơng.
Size: Đếm số lượng phần tử trong ngăn xếp.

Ưu điểm của ngăn xếp:
• Dễ sử dụng: Các hoạt động trên ngăn xếp rất đơn giản và dễ hiểu, giúp quản lý thứ tự
thực hiện các tác vụ.
• Quản lý thứ tự: Ngăn xếp thường được sử dụng để duy trì thứ tự xử lý, đảm bảo rằng
các tác vụ mới nhất được thực hiện trước.
• Undo/Redo: Ngăn xếp thường được sử dụng trong các ứng dụng để hỗ trợ hoạt động
undo và redo.
Nhược điểm của ngăn xếp:
• Giới hạn kích thước: Ngăn xếp thường có giới hạn về kích thước, vượt q giới hạn
này có thể dẫn đến tràn bộ nhớ (stack overflow).
• Khơng phù hợp cho tìm kiếm phức tạp: Việc truy cập vào các phần tử khác ngồi đỉnh
ngăn xếp có thể làm cho việc tìm kiếm phức tạp.
1.2.4: Hàng đợi (Queue)
Hàng đợi (queue) là một cấu trúc dữ liệu tuân theo nguyên tắc "First In, First Out" (FIFO), có
nghĩa là phần tử đầu tiên được thêm vào hàng đợi là phần tử đầu tiên được lấy ra.
Các hoạt động cơ bản trên hàng đợi:







Enqueue (Push): Thêm một phần tử vào cuối hàng đợi.
Dequeue (Pop): Lấy ra phần tử ở đầu hàng đợi.
Front (Peek): Xem giá trị của phần tử ở đầu hàng đợi mà khơng loại bỏ nó.
IsEmpty: Kiểm tra xem hàng đợi có rỗng hay khơng.
Size: Đếm số lượng phần tử trong hàng đợi.

Ưu điểm của hàng đợi:
• Dễ sử dụng: Các hoạt động trên hàng đợi thường rất đơn giản và dễ hiểu.
• Quản lý thứ tự: Hàng đợi thường được sử dụng để quản lý thứ tự xử lý các tác vụ theo
nguyên tắc FIFO.
9


• Sử dụng trong lập lịch và đồng bộ hóa: Hàng đợi có thể được sử dụng để lập lịch các
tác vụ hoặc đồng bộ hóa các tiến trình.
Nhược điểm của hàng đợi:
• Hiệu suất: Một số hoạt động trên hàng đợi có thể tốn thời gian, đặc biệt khi hàng đợi
có số lượng lớn phần tử.
• Giới hạn kích thước: Hàng đợi thường có giới hạn về kích thước, vượt quá giới hạn này
có thể dẫn đến tràn bộ nhớ (queue overflow).
1.3: Hướng dẫn gỡ lỗi khi triển khai thuật toán
Gỡ lỗi khi triển khai thuật toán là một phần quan trọng trong quá trình phát triển phần mềm
và xử lý dữ liệu. Dưới đây là một số hướng dẫn để có thể gỡ lỗi một cách hiệu quả khi triển
khai thuật toán:
Hiểu rõ thuật toán: Trước hết, hãy đảm bảo bạn hiểu rõ cách hoạt động của thuật toán. Đọc
tài liệu và mã nguồn của thuật toán để hiểu cách nó nên hoạt động và kết quả bạn nên mong

đợi.
Kiểm tra dữ liệu đầu vào: Xác định liệu dữ liệu đầu vào của thuật tốn có đúng định dạng và
giá trị hay không. Đôi khi lỗi xuất phát từ việc không đúng định dạng dẫn đến việc thuật toán
hoạt động sai.
Sử dụng log và lỗi kiểm: Đặt lệnh log và điểm kiểm tra trong mã của bạn để theo dõi q trình
thực thi của thuật tốn. Điều này giúp bạn xác định được vị trí mà lỗi xảy ra và giải quyết nó.
Gỡ lỗi từng bước: Chia quá trình triển khai thành các bước nhỏ và kiểm tra từng bước một.
Điều này giúp bạn xác định bước nào đang gặp vấn đề và tập trung vào nó.
Sử dụng công cụ gỡ lỗi: Sử dụng các công cụ gỡ lỗi như debugger trong môi trường phát triển
của bạn. Các công cụ này cho phép bạn theo dõi giá trị của biến, dừng thực thi ở một điểm cụ
thể, và điều tra cách thuật toán hoạt động.
Kiểm tra giới hạn và biên: Đảm bảo rằng thuật toán của bạn xử lý các trường hợp đặc biệt và
giới hạn một cách chính xác. Thử nghiệm với các trường hợp biên có thể giúp bạn xác định
được lỗi không rõ ràng.
Kiểm tra lại logic: Xem xét lại logic của thuật toán để đảm bảo rằng bạn đã áp dụng nó đúng
cách. Đơi khi lỗi xuất phát từ một phần nhỏ trong logic toàn bộ.
Thử nghiệm dữ liệu: Sử dụng các tập dữ liệu thử nghiệm khác nhau để đảm bảo thuật toán
hoạt động đúng trên mọi trường hợp.
Tra cứu lỗi: Khi bạn gặp lỗi cụ thể, hãy sử dụng cơng cụ tìm kiếm hoặc tham khảo các diễn
đàn, cộng đồng phát triển để tìm cách khắc phục lỗi đó. Đơi khi người khác đã gặp phải vấn
đề tương tự và đã có cách giải quyết.
10


Sáng tạo trong việc gỡ lỗi: Đôi khi, vấn đề không rõ ràng và cần phải suy luận hoặc thử nghiệm
nhiều hơn để tìm ra nguyên nhân. Hãy sáng tạo và không ngần ngại thử các phương pháp khác
nhau.

II. Đào tạo kỹ năng giải thuật lập trình
2.1: Giới thiệu về đồ thị: Đồ thị vơ hướng, đồ thị có trọng số

Đồ thị là một khái niệm quan trọng trong lĩnh vực tốn học và khoa học máy tính. Nó mơ tả
một tập hợp các điểm (gọi là đỉnh hoặc nút) và các kết nối giữa chúng (gọi là cạnh). Đồ thị
thường được sử dụng để mơ hình hóa mối quan hệ hoặc liên kết giữa các đối tượng khác nhau.
Có hai loại chính của đồ thị: đồ thị vơ hướng và đồ thị có hướng.
• Đồ thị vơ hướng (Undirected Graph): Đồ thị vô hướng là một loại đồ thị mà các cạnh
khơng có hướng, tức là nếu có cạnh nối từ đỉnh A đến đỉnh B, thì cũng có cạnh nối từ
đỉnh B đến đỉnh A. Đồ thị vô hướng thường được biểu diễn bằng cách sử dụng các
đường thẳng nối các đỉnh và khơng có mũi tên để chỉ hướng.
• Đồ thị có trọng số (Weighted Graph): Đồ thị có trọng số là một loại đồ thị mà mỗi cạnh
được gắn một trọng số hoặc giá trị. Trọng số này thường thể hiện một loại thơng tin
nào đó liên quan đến mối quan hệ giữa các đỉnh. Ví dụ, trong một mạng giao thơng,
trọng số có thể biểu thị khoảng cách giữa các địa điểm. Trọng số có thể là số thực hoặc
số ngun.
• Ví dụ về đồ thị vơ hướng và đồ thị có trọng số:
Đồ thị vô hướng:
Đỉnh: {A, B, C, D}
Cạnh: {(A, B), (B, C), (C, D), (A, C)}
Trong trường hợp này, các cạnh không có hướng và chỉ biểu diễn mối quan hệ giữa các
đỉnh.
Đồ thị có trọng số:
Đỉnh: {A, B, C, D}
Cạnh: {(A, B, 5), (B, C, 3), (C, D, 7), (A, C, 2)}
Trong trường hợp này, các cạnh không chỉ biểu diễn mối quan hệ giữa các đỉnh mà cịn
có trọng số tương ứng cho mỗi cạnh.
Khi làm việc với đồ thị có trọng số, chúng ta thường cần sử dụng các thuật tốn đồ thị
phức tạp để tính tốn đường đi ngắn nhất, cây bao trùm tối thiểu, hoặc các vấn đề liên
quan khác.

11



2.2: Thuật toán Dijsktra
Thuật toán Dijkstra là một thuật toán quan trọng trong lĩnh vực đồ thị, được sử dụng để tìm
đường đi ngắn nhất từ một đỉnh gốc đến tất cả các đỉnh khác trong đồ thị có trọng số khơng
âm. Thuật tốn này giúp giải quyết các vấn đề như tìm đường đi ngắn nhất trong các mạng
giao thơng, mạng máy tính, hoặc trong bất kỳ ứng dụng nào yêu cầu tối ưu hóa đường đi.
Ý tưởng cơ bản của thuật toán như sau:
Bước 1: Từ đỉnh gốc, khởi tạo khoảng cách tới chính nó là 0, khởi tạo khoảng cách nhỏ nhất
ban đầu tới các đỉnh khác là +∞. Ta được danh sách các khoảng cách tới các đỉnh.
Bước 2: Chọn đỉnh a có khoảng cách nhỏ nhất trong danh sách này và ghi nhận. Các lần sau
sẽ không xét tới đỉnh này nữa.
Bước 3: Lần lượt xét các đỉnh kề b của đỉnh a. Nếu khoảng cách từ đỉnh gốc tới đỉnh b nhỏ
hơn khoảng cách hiện tại đang được ghi nhận thì cập nhật giá trị và đỉnh kề a vào khoảng cách
hiện tại của b.
Bước 4: Sau khi xét tất cả đỉnh kề b của đỉnh a. Lúc này ta được danh sách khoảng cách tới
các điểm đã được cập nhật. Quay lại Bước 2 với danh sách này. Thuật toán kết thúc khi chọn
được khoảng cách nhỏ nhất từ tất cả các điểm.
Thuật tốn Dijkstra có độ phức tạp thời gian là O(V^2) trong phiên bản cơ bản, với V là số
lượng đỉnh trong đồ thị. Tuy nhiên, có thể cải tiến thuật toán bằng cách sử dụng hàng đợi ưu
tiên (min-heap) để giảm độ phức tạp xuống O(E + V * log(V)), với E là số lượng cạnh trong
đồ thị.
Thuật toán Dijkstra là một cơng cụ hữu ích để giải quyết các vấn đề tìm đường đi ngắn nhất
trong các mạng với trọng số khơng âm.
2.3: Thuật tốn Depth-First Search
Thuật tốn Depth-First Search (DFS) là một trong những thuật toán quan trọng trong lĩnh vực
đồ thị. DFS được sử dụng để duyệt qua tất cả các đỉnh và cạnh của một đồ thị một cách theo
chiều sâu. Thuật toán này thường được sử dụng để tìm kiếm, kiểm tra liên thơng, xác định các
thành phần liên thơng, và trong các bài tốn khác liên quan đến đồ thị.
Mô tả cơ bản về thuật toán DFS:
Khởi tạo: Bắt đầu từ một đỉnh bất kỳ trong đồ thị.

Duyệt đỉnh: Đánh dấu đỉnh hiện tại là đã duyệt. Sau đó, kiểm tra tất cả các đỉnh kề với đỉnh
hiện tại mà chưa được duyệt.
Lặp lại bước 2: Điều này đồng nghĩa với việc chọn một đỉnh kề chưa được duyệt và thực hiện
bước 2 với đỉnh đó. Lặp lại q trình này cho đến khi khơng cịn đỉnh kề nào chưa được duyệt.
Quay lui: Khi đã duyệt qua tất cả các đỉnh kề của một đỉnh, quay lui đến đỉnh gốc hoặc đỉnh
trước đó mà chưa được duyệt hết các đỉnh kề.
12


Lặp lại bước 2 và 3: Tiếp tục lặp lại bước 2 và 3 cho đến khi tất cả các đỉnh trong đồ thị đều
đã được duyệt.
DFS thường được thực hiện bằng cách sử dụng đệ quy hoặc ngăn xếp (stack). Khi sử dụng đệ
quy, thuật toán tự động theo chiều sâu vào đến khi khơng cịn đỉnh nào để duyệt. Khi sử dụng
ngăn xếp, thuật toán duyệt một đỉnh, đánh dấu nó và đẩy các đỉnh kề chưa duyệt vào ngăn
xếp.
DFS có nhiều ứng dụng quan trọng, bao gồm:
• Tìm kiếm trong đồ thị: DFS có thể được sử dụng để tìm kiếm một đỉnh cụ thể hoặc
kiểm tra sự tồn tại của đỉnh trong đồ thị.
• Kiểm tra liên thơng: DFS có thể xác định xem một đồ thị có liên thơng hay khơng.
• Tìm thành phần liên thơng: DFS có thể giúp xác định các thành phần liên thơng riêng
biệt trong một đồ thị.
• Topological Sort: DFS có thể sử dụng để thực hiện sắp xếp topological trên các đồ thị
có hướng.
• Thuật tốn tìm đường đi: DFS có thể được sử dụng để tìm đường đi giữa hai đỉnh trong
đồ thị.
Tuy DFS là một thuật toán mạnh mẽ và đa dụng, nhưng cần phải chú ý để tránh rơi vào vịng
lặp vơ tận trong trường hợp đồ thị vơ hướng chứa chu trình.
2.4: Thuật tốn Breadth-First Search
Thuật toán Breadth-First Search (BFS) là một thuật toán quan trọng trong lĩnh vực đồ thị,
được sử dụng để duyệt qua tất cả các đỉnh và cạnh của một đồ thị một cách theo chiều rộng.

BFS giúp tìm kiếm các đỉnh và cạnh ở xa đỉnh gốc trước khi di chuyển đến những phần gần
hơn. Thuật toán này thường được sử dụng để tìm kiếm đường đi ngắn nhất trong đồ thị có
trọng số khơng âm, kiểm tra liên thơng, và trong các bài toán khác liên quan đến đồ thị.
Mơ tả cơ bản về thuật tốn BFS:
Khởi tạo: Bắt đầu từ một đỉnh bất kỳ trong đồ thị. Đánh dấu đỉnh này là đã duyệt và đưa nó
vào hàng đợi (queue).
Lặp qua hàng đợi: Lặp qua tất cả các đỉnh trong hàng đợi. Đối với mỗi đỉnh, lấy ra khỏi hàng
đợi và kiểm tra tất cả các đỉnh kề chưa được duyệt. Đánh dấu các đỉnh kề và đưa chúng vào
hàng đợi.
Lặp lại bước 2: Lặp lại bước 2 cho đến khi khơng cịn đỉnh nào trong hàng đợi.
Kết quả cuối cùng của thuật toán BFS là việc duyệt qua tất cả các đỉnh của đồ thị theo chiều
rộng, bắt đầu từ đỉnh gốc.
BFS thường được sử dụng với hàng đợi để lưu trữ các đỉnh chờ duyệt. Đỉnh được duyệt đầu
tiên sẽ là đỉnh gốc, sau đó tất cả các đỉnh kề chưa được duyệt của đỉnh gốc sẽ được thêm vào
hàng đợi. Sau đó, các đỉnh kề của các đỉnh trong hàng đợi sẽ được duyệt lần lượt.
13


Một số ứng dụng phổ biến của BFS bao gồm:
• Tìm đường đi ngắn nhất: BFS có thể được sử dụng để tìm đường đi ngắn nhất giữa hai
đỉnh trong đồ thị có trọng số khơng âm.
• Kiểm tra liên thơng: BFS có thể xác định xem một đồ thị có liên thơng hay khơng.
• Tìm thành phần liên thơng: BFS có thể giúp xác định các thành phần liên thơng riêng
biệt trong một đồ thị.
• Tìm kiếm theo chiều rộng trên cây: BFS có thể được sử dụng để duyệt qua các nút trên
cây theo chiều rộng, bắt đầu từ nút gốc.
Tuy BFS là một thuật tốn hữu ích, đặc biệt trong các vấn đề liên quan đến tìm kiếm và duyệt
đồ thị, nhưng cần chú ý để tránh rơi vào vịng lặp vơ tận trong trường hợp đồ thị có chu trình.
2.5: Thuật tốn quay lui
Thuật tốn quay lui là một kỹ thuật tìm kiếm hồn tồn trong khơng gian tìm kiếm của các

giải pháp có thể thỏa mãn một tập hợp ràng buộc. Nó thường được sử dụng để giải quyết các
bài toán tổ hợp, tối ưu hóa, hoặc tìm kiếm một tập hợp các giải pháp có điều kiện ràng buộc.
Trong thuật tốn quay lui, bạn bắt đầu từ một giải pháp gốc và tìm kiếm tất cả các giải pháp
có thể bằng cách thử từng lựa chọn một cách tuần tự, quay lui khi cần thiết.
Mtả cơ bản về thuật toán quay lui:
Khởi tạo: Bắt đầu từ một giải pháp gốc (thường là trạng thái trống hoặc một giá trị mặc định).
Kiểm tra điều kiện kết thúc: Kiểm tra xem giải pháp hiện tại có thỏa mãn điều kiện kết thúc
(ví dụ: đã xếp hết các hộp vào xe tải) hay chưa. Nếu có, đây là một giải pháp hợp lệ và quá
trình tìm kiếm kết thúc.
Thử từng lựa chọn một: Duyệt qua tất cả các lựa chọn có thể từ vị trí hiện tại. Điều này thường
bao gồm việc thử tất cả các giá trị có thể của biến hoặc tất cả các hướng di chuyển có thể.
Kiểm tra điều kiện tiếp tục: Kiểm tra xem liệu việc thử lựa chọn hiện tại có thể dẫn đến một
giải pháp hợp lệ hay không. Nếu không, quay lui lại bước trước và thử lựa chọn khác.
Lặp lại bước 2 đến 4: Lặp lại các bước từ 2 đến 4 cho đến khi tìm ra một giải pháp hợp lệ hoặc
đã thử hết tất cả các lựa chọn.
Thuật toán quay lui thường được thực hiện bằng đệ quy, trong đó mỗi lần đệ quy tìm kiếm
một bước tiếp theo của giải pháp. Khi giải pháp không thỏa mãn ràng buộc, thuật toán sẽ quay
lui lại bước trước đó và thử lựa chọn khác.
Một số ứng dụng của thuật tốn quay lui bao gồm:
• Xếp hậu: Xếp các qn hậu trên bàn cờ sao cho khơng có hai qn hậu nào ăn được
nhau.
• Tìm kiếm đường đi: Tìm kiếm đường đi từ điểm A đến điểm B trong một mê cung.
• Tìm kiếm tất cả các cách chia: Tìm tất cả các cách chia một tập hợp thành các tập con.
14


Tuy thuật tốn quay lui có thể giải quyết nhiều bài tốn phức tạp, nhưng nó có thể địi hỏi thời
gian và tài nguyên lớn nếu không được tối ưu hóa đúng cách.

III. Đào tạo kĩ năng sử dụng Office

Kỹ năng sử dụng Microsoft Office (hoặc các ứng dụng văn phịng khác) là một yếu tố quan
trọng trong nhiều cơng việc và hoạt động hàng ngày. Dưới đây là một số kỹ năng cơ bản mà
cần có để sử dụng Microsoft Office hiệu quả:
Microsoft Word:
Microsoft Word là công cụ soạn thảo văn bản được sử dụng phổ biến hiện nay. Nó cho phép
người dùng làm việc với văn bản thơ (text), những hiệu ứng như phông chữ, màu sắc, cùng
với hình ảnh đồ họa (graphic) và nhiều hiệu ứng đa phương tiện khác (multimedia) như âm
thanh, video khiến cho việc soạn thảo văn bản được thuận tiện hơn. Bên cạnh đó, Microsoft
Word cũng hỗ trọ các cơng cụ như kiểm tra chính tả, ngữ pháp của nhiều ngơn ngữ khác nhau
để hỗ trọ người sử dụng.
Các tính năng chính của Microsoft Word bao gồm:
• Tạo và chỉnh sửa văn bản: Word cho phép bạn tạo và chỉnh sửa văn bản dễ dàng. Bạn
có thể nhập liệu, xóa, sửa, sao chép và dán văn bản trong tài liệu của mình.
• Định dạng văn bản: Word cung cấp các công cụ định dạng để bạn tùy chỉnh kiểu chữ,
kích thước, màu sắc và căn chỉnh của văn bản. Bạn có thể tạo tiêu đề, đoạn văn, danh
sách đánh số, danh sách định dạng và nhiều phần tử văn bản khác.
• Hình ảnh và đối tượng: Word cho phép bạn chèn hình ảnh, biểu đồ, bảng, clipart và các
đối tượng khác vào tài liệu của mình. Bạn có thể tùy chỉnh vị trí và kích thước của các
đối tượng này.
• Chèn phần tử: Ngồi hình ảnh và đối tượng, Word cũng cho phép bạn chèn tiêu đề, chú
thích hình ảnh, chú thích bàn luận, thư mục và các phần tử khác vào tài liệu.
• Trang bìa và mẫu: Word cung cấp các mẫu trang bìa và tài liệu để bạn có thể bắt đầu
tạo tài liệu một cách nhanh chóng và chun nghiệp.
• Chức năng kiểm tra chính tả và ngữ pháp: Word có chức năng kiểm tra chính tả và ngữ
pháp, giúp bạn tìm ra và sửa lỗi ngơn ngữ trong tài liệu.
• In ấn và chia sẻ: Bạn có thể in ấn tài liệu từ Word hoặc chia sẻ tài liệu thơng qua email
hoặc lưu trữ trực tuyến.
• Tạo biểu đồ và sơ đồ: Word cung cấp các công cụ để tạo biểu đồ và sơ đồ trực quan
trong tài liệu của bạn.
Microsoft Word là một công cụ mạnh mẽ để tạo và định dạng văn bản và tài liệu. Nó được sử

dụng rộng rãi trong mơi trường văn phịng, giáo dục và cá nhân.
Microsoft Excel:
Excel là chương trình xử lý bảng tính. Bảng tính của Excel cũng bao gồm nhiều ô được tạo
bởi các dòng và cột, việc nhập dữ liệu và lập cơng thức tính tốn trong Excel cũng có những
15


điểm tương tự. Tuy nhiên, Excel có nhiều tính năng ưu việt và có giao diện đơn giản và dễ sử
dụng, chủ yếu là thiết lập, xử lý bảng và tính tốn theo các hàm.
Các tính năng chính của Microsoft Excel bao gồm:
• Bảng tính: Excel cho phép bạn tạo và quản lý các bảng tính. Mỗi bảng tính gồm hàng
và cột, mỗi ơ trong bảng tính chứa một giá trị hoặc dữ liệu.
• Nhập liệu và định dạng: Bạn có thể nhập liệu vào các ơ trong bảng tính, bao gồm các
giá trị số, văn bản, ngày tháng, và nhiều dạng dữ liệu khác. Excel cũng cho phép bạn
định dạng dữ liệu như thay đổi phơng chữ, kích thước, màu sắc, và kiểu định dạng.
• Cơng thức và hàm: Excel cung cấp nhiều cơng thức và hàm tính tốn giúp bạn thực
hiện các phép tính phức tạp. Ví dụ, bạn có thể sử dụng SUM để tổng hợp dãy số,
AVERAGE để tính trung bình, IF để kiểm tra điều kiện và trả về giá trị tương ứng, và
nhiều hàm khác.
• Biểu đồ và đồ thị: Excel cho phép bạn tạo biểu đồ và đồ thị từ dữ liệu trong bảng tính.
Điều này giúp hiển thị thơng tin dưới dạng hình ảnh dễ hiểu, giúp bạn thấy được xu
hướng và mối quan hệ trong dữ liệu.
• Tổng hợp và lọc dữ liệu: Excel cung cấp các tính năng tổng hợp dữ liệu như bộ lọc,
tổng hợp dữ liệu, và tính tốn tóm tắt cho các tập dữ liệu lớn.
• Phân tích dữ liệu: Excel có khả năng thực hiện phân tích dữ liệu cơ bản bằng cách sử
dụng các cơng thức, hàm, và tính năng tổng hợp.
• Chia sẻ và in ấn: Bạn có thể chia sẻ bảng tính qua email, in ấn thành báo cáo, hoặc lưu
trữ trực tuyến để truy cập từ xa.
Microsoft Excel là một công cụ quan trọng để xử lý dữ liệu, thực hiện tính tốn và phân tích
trong nhiều lĩnh vực khác nhau.

Microsoft PowerPoint:
Microsoft PowerPoint là bộ soạn thảo và thiết lập hệ trình chiếu.
Các tính năng chính của Microsoft PowerPoint bao gồm:
• Slide trình bày: PowerPoint sử dụng giao diện dạng slide, trong đó mỗi slide đại diện
cho một trang trong bản trình bày. Bạn có thể tạo nhiều slide với nội dung khác nhau
và sắp xếp chúng để tạo thành một chuỗi logic.
• Chọn mẫu và giao diện: PowerPoint cung cấp nhiều mẫu slide và giao diện để bạn lựa
chọn. Điều này giúp bạn tạo ra các bản trình bày chuyên nghiệp và thú vị mà khơng
cần phải thiết kế từ đầu.
• Thêm nội dung: Bạn có thể thêm văn bản, hình ảnh, video, âm thanh, biểu đồ, sơ đồ và
nhiều phần tử khác vào các slide. Các công cụ định dạng giúp bạn tùy chỉnh văn bản
và hình ảnh để tạo ra các slide đẹp và dễ đọc.
• Hiệu ứng và chuyển động: PowerPoint cho phép bạn thêm hiệu ứng và chuyển động
vào các phần tử trên slide, giúp tạo sự chú ý và sự sống động cho bản trình bày.
16


• Chế độ xem: PowerPoint cung cấp nhiều chế độ xem, bao gồm xem trình bày, xem thiết
kế, xem chỉnh sửa, xem thư báo cáo, và nhiều chế độ khác để bạn kiểm tra và sửa lỗi
trong bản trình bày.
• Chia sẻ và in ấn: PowerPoint cho phép bạn chia sẻ bản trình bày qua email, lưu trữ trực
tuyến hoặc in ấn thành tài liệu trình bày.
• Ghi chú và thuyết trình: Trong chế độ thuyết trình, bạn có thể thêm ghi chú riêng biệt
cho mỗi slide, giúp bạn thuyết trình một cách mượt mà mà khơng bị qn mất thông
tin quan trọng.
Microsoft PowerPoint là một công cụ mạnh mẽ để tạo và trình bày các bài thuyết trình chuyên
nghiệp, dễ dàng chia sẻ thông tin và giao tiếp ý tưởng một cách hiệu quả.
Microsoft Outlook:
Microsoft Outlook là một ứng dụng phần mềm email và quản lý thông tin cá nhân được phát
triển bởi Microsoft. Nó là một phần của bộ Microsoft Office và được sử dụng rộng rãi trong

môi trường doanh nghiệp và cá nhân để quản lý email, lịch làm việc, danh bạ, nhiệm vụ, và
nhiều chức năng khác liên quan đến quản lý thời gian và thông tin.
Các chức năng chính của Microsoft Outlook bao gồm:
• Email: Outlook cho phép bạn gửi, nhận và quản lý email. Bạn có thể sắp xếp email
theo chủ đề, thẻ, hay hộp thư đến. Outlook cung cấp chức năng tự động phân loại và
đánh dấu email quan trọng. Nó cũng hỗ trợ chức năng đọc email ngoại tuyến và tạo
chữ ký email cá nhân.
• Lịch làm việc: Outlook cho phép bạn lên kế hoạch và quản lý lịch làm việc. Bạn có thể
thêm sự kiện, hẹn hị, cuộc họp, và chia sẻ lịch với người khác. Nó cũng cung cấp tính
năng gửi lời mời đến người khác tham gia các sự kiện.
• Danh bạ: Outlook cho phép bạn quản lý danh bạ liên hệ của mình. Bạn có thể thêm
thơng tin như tên, địa chỉ email, số điện thoại, vị trí cơng việc, và nhiều thơng tin khác.
Danh bạ có thể được tổ chức theo nhóm hoặc thẻ.
• Nhiệm vụ và cơng việc: Outlook cung cấp tính năng quản lý nhiệm vụ và cơng việc.
Bạn có thể tạo nhiệm vụ, đặt hạn chót, theo dõi tiến độ, và đánh dấu cơng việc đã hồn
thành.
• Thư mục: Outlook cho phép bạn quản lý các thư mục để tổ chức email, lịch làm việc,
danh bạ và các phần khác. Bạn có thể tạo thư mục riêng, chuyển thư mục và xóa thư
mục khơng cần thiết.
• Các tính năng khác: Outlook cịn cung cấp nhiều tính năng khác như gửi và nhận tin
nhắn nhanh chóng, quản lý cài đặt cá nhân, tạo chữ ký số, quản lý email theo luật, và
nhiều tính năng bảo mật khác.
Microsoft Outlook là một ứng dụng đa năng, giúp bạn quản lý thơng tin cá nhân, làm việc
nhóm và duyệt email một cách hiệu quả.
17


IV. Xây dựng dự án game bằng ngôn ngữ C++
4.1: Tìm hiểu về hướng đối tượng trong C++
Lập trình hướng đối tượng được hiểu đơn giản là một phương pháp để giải quyết những bài

tốn bằng lập trình sao cho chúng trở nên dễ phát triển, dễ bảo trì. Nó sẽ chia nhỏ chương trình
ra thành các đối tượng và các mối quan hệ. Mỗi đối tượng sẽ có những thuộc tính (dữ liệu),
hành vi (phương thức) giống hoặc khác nhau.
Trước khi tìm hiểu về hướng đối tượng trong C++, sinh viên được tổng kết lại một lần nữa
những kiến thức cơ bản về C++ bao gồm: biến và hằng, các kiểu dữ liệu cơ bản, mảng và con
trỏ, tham chiếu, tham trị, các cấu trúc dữ liệu, hàm, .... Đây là những kiến thức bắt buộc phải
nắm chắc thì mới có thể tìm hiểu về hướng đối tượng.
4.1.1: Các tính chất cơ bản
A.Tính đóng gói (Encapsulation)
Đây là kỹ thuật giúp lập trình viên có thể che giấu đi những thông tin bên trong đối tượng
bằng cách sử dụng phạm vi truy cập private cho các thuộc tính. Muốn giao tiếp, lấy ra, sử
dụng các thơng tin này thì phải thơng qua các phương thức public, từ đó sẽ hạn chế các lỗi
khi phát triển một chương trình. Ví dụ trong thực tế, ta không thể thấy được các thuộc tính
thực của một người (tính cách, sở thích, các thơng tin như chiều cao, cân năng, tuổi,...). Những
điều mà ta biết đều thơng qua các hành động của người đó, chẳng hạn như nói cho ta biết về
tuổi, sở thích,... Tuy nhiên, các thông tin này chưa chắc đã thực sự là thuộc tính thật của người
đó (giống như việc các phương thức không trả về giá trị thực của thuộc tính mà trả về một giá
trị khác)

Hình 1 Tính đóng gói (Encapsulation)
Những lợi ích mà tính đóng gói đem lại có thể kể đến như:
• Hạn chế được những truy xuất khơng hợp lệ tới thuộc tính của đối tượng.
• Giúp cho trạng thái của các đối tượng ln đúng, không bị thay đổi, làm sai đi bản chất
của nó. Ví dụ thuộc tính gpa của lớp Student là public thì sẽ rất khó để kiểm sốt
được giá trị vì hồn tồn có thể thay đổi giá trị của nó mà khơng gặp cản trở gì. Ngược
lại, nếu để gpa là private và cung cấp hàm setGpa() (dùng để thiết lập gpa) thì gpa
18


ln được đảm bảo tính chất của nó là khơng âm và nhỏ hơn hoặc bằng 4. Muốn thay

đổi gpa, ta phải thơng qua hàm này.
• Ẩn đi những thơng tin khơng cần thiết về đối tượng
• Cho phép thay đổi cấu trúc bên trong lớp mà không ảnh hưởng tới lớp khác. Ví dụ ban
đầu, ta thiết kế lớp Student giống như sau:

Hình 2 Thiết kế một lớp với hai thuộc tính private
Sau này, nếu muốn gộp 2 thuộc tính firstName và lastName thành fullName thì lớp Student
sẽ giống như sau:

Hình 3 Thiết kế một lớp với một thuộc tính private
Lúc này, cấu trúc lớp Student đã bị thay đổi nhưng các đối tượng sử dụng lớp này vẫn không
cần phải thay đổi do các đối tượng này chỉ quan tâm tới phương thức getFullName(). Nếu
khơng có phương thức này, ta phải sửa tất cả những chỗ sử dụng thuộc tính firstName và
lastName của lớp Student.
B. Tính kế thừa (Inheritance)
Khi lập trình, chắc chắn sẽ có trường hợp mà các đối tượng có chung một số thuộc tính và
phương thức. Ví dụ như viết chương trình lưu thơng tin về các học sinh và giáo viên. Với học
sinh thì cần lưu thông tin về tên tuổi, địa chỉ, điểm và với giáo viên thì cần lưu thơng tin về
19


tên, tuổi, địa chỉ, tiền lương. Lúc này nếu viết chương trình riêng rẽ thì code sẽ trung lặp khá
nhiều.
Với kế thừa, vấn đề này sẽ được giải quyết. Kế thừa trong hướng đối tượng là thừa hưởng lại
những thuộc tính, phương thức của một lớp. Nghĩa là nếu lớp A kế thừa lớp B thì lớp A sẽ có
những thuộc tính, phương thức của lớp B. Do đó, trong ví dụ trên, ta có thể tạo một lớp Person
và cho lớp Student, Teacher kế thừa lại.
Ta có thể xem hình dưới đây để hình dung rõ hơn:

Hình 4 Tính kế thừa (Inheritance)

C. Tính đa hình (Polymorphism)
Tính chất này gắn liền với thực tế. Cụ thể, trong từng hoàn cảnh, trường hợp, các đối tượng sẽ
có vai trị khác nhau. Ví dụ, cùng là một người nhưng khi ở cơng ty thì có vai trị là nhân viên,
khi đi siêu thi thì có vai trị là khác hàng,... Trong lập trình, khi một đối tượng, phương thức
có nhiều hơn một hình thái thì đó chính là tính đa hình. Đa hình được thể hiện dưới 3 hình
thức:
• Đa hình với nạp chồng phương thức (Overloading):
Ví dụ: phương thức cộng sẽ có các hình thái là cộng 2 số ngun, cộng 2 số thức, cộng 3
số nguyên, ....Cùng là phương thức cộng những lại có nhiều hình thái khác nhau

20


Hình 5 Đa hình với nạp chồng phương thức
• Đa hình với ghi đè phương thức (Overriding):
Ví dụ: phương thức getSalary() dùng để tính lương sẽ có các hình thái là tính lương cho
quản lý, cho nhân viên,...
Với nhân viên, ta viết các thuộc tính, phương thức như sau:

Hình 6 Ví dụ thiết kế lớp Employee
21


Với quản lý, về cơ bản thì quản lý cũng giống như nhân viên, có tên và lương nên quản lý sẽ
kế thừa lại từ nhân viên. Tuy nhiên, quản lý sẽ có lương cao hơn, phần cao hơn ta giả sử là
thuộc tính private bonus. Lúc này, ta ghi đè (overriding) Manager cũng gồm 2 thuộc tính cơ
bản là name, salary nhưng thêm vào đó là cả bonus.

Hình 7 Thiết kế lớp Manager ghi đè lại phương thức của lớp Employee



Đa hình thơng qua các đối tượng đa hình (polymorphic objects):

22


Hình 8 Hàm makeSound() trả về kết quả khác nhau với mỗi đối tượng khác nhau
Các biến thuộc lớp cha có thể tham chiếu tới đối tượng của các lớp con nên biến thuộc lớp
cha cũng có nhiều hình thái nên đây cũng là đa hình.
Ví dụ:

23


Hình 9 Đa hình thơng qua các đối tượng đa hình
Trong ví dụ này, lớp cha là Animal có phương thức ảo là sound() (tiếng kêu). Các lớp con
Dog, Cat, Duck cũng có phương thức này nhưng hình thái là khác nhau vì mỗi con vật lại có
một tiếng kêu khác nhau.
D.Tính trừu tượng (Abstraction)
Tính chất này đơn giản hóa đi những thơng tin bên trong đối tượng. Nó cho phép người dùng
giao tiếp với các thành phàn của đối tượng mà không cần phải biết về cách mà các thành phần
này được xây dựng (chính xác hơn là khơng cần biết các thành phần này được xây dựng, code
như thế nào mà chỉ cần biết chúng được dùng để làm gì).
Ví dụ: Khi ta đi rút tiền ở cây ATM, ta không cần quan tâm tới cách mà cây ATM hoạt động
hay các thành phần bên trong nó, cái mà ta quan tâm duy nhất và chỉ có thể nhìn thấy duy nhất
đó chính là tính năng rút tiền. Trong trường hợp này, các thông tin không cần thiết của cây
ATM như đếm tiền, trừ tiền trong tài khoản, gửi dữ liệu về máy chủ đã được ẩn đi.
24



×