1
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN
NGUYỄN LÊ THIÊN THƠ
TÌM HIỂU CAMERA 3D, ỨNG DỤNG LẬP
TRÌNH GIAO TIẾP GIỮA NGƯỜI VÀ MÁY
BẰNG CÁC CỬ CHỈ CỦA TAY
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN
CÁN BỘ HƯỚNG DẪN:
TS. ĐINH ĐỒNG LƯỠNG
NHA TRANG – NĂM 2016
2
LỜI NÓI ĐẦU
Sự tương tác giữa người sử dụng với máy tính ngày càng trở nên phong
phú, đa dạng song hành với sự phát triển của công nghệ thông tin cho đến
ngày nay. Trong những thập niên 70, bàn phím hầu như là công cụ duy nhất
để điều khiển máy tính. Sau đó đến khi giao diện đồ họa phát triển, con chuột
máy tính đã được phát minh và hỗ trợ việc tương tác với máy tính trở nên
thuận tiện hơn. Cùng với sự phát triển của công nghệ, và các thuật toán, con
người có thể giao tiếp với máy tính thông qua các màn hình cảm ứng chạm
cũng như giọng nói. Tháng 04 năm 2010, sự xuất hiện của Camera 3D Kinect
– một thiết bị được phát triển bởi Microsoft thực sự là cuộc cách mạng trong
lĩnh vực giao tiếp người – máy. Đến tháng 01 năm 2014, Intel ra mắt công
nghệ Intel RealSense với khả năng cảm nhận không gian 3D góp phần đưa sự
tương tác người – máy lên tầm cao mới. Tuy xuất hiện đã lâu nhưng Intel
RealSense cùng những tiện ích của nó còn khá mới lạ tại Việt Nam, chính vì
vậy tôi đã chọn đề tài này với mong muốn tìm hiểu, trải nghiệm công nghệ
Intel RealSense và ứng dụng công nghệ này vào việc điều khiển bàn phím,
chuột thông qua hình dạng và cử chỉ của bàn tay. Từ đó, tôi xây dựng ứng
dụng có thể áp dụng vào việc điều khiển trình chiếu Power Point thông qua cử
chỉ bàn tay mà không cần đến các thiết bị như bàn phím hay chuột.
Em xin gửi đến Thầy TS. Đinh Đồng Lưỡng lời cảm ơn chân thành và sâu
sắc nhất. Nhờ sự hướng dẫn và giúp đỡ tận tình của Thầy trong suốt 15 tuần,
em đã thực hiện và hoàn thành Đồ Án Tốt Nghiệp này. Sự nhiệt tình hướng
dẫn, chỉ bảo của thầy trong suốt quá trình thực hiện đề tài đã giúp em có thêm
rất nhiều động lực, định hướng để hoàn thành đề tài. Em xin cảm ơn Thầy!
Đồng thời, em xin trân trọng cảm ơn các Thầy Cô của Trường Đại Học
Nha Trang nói chung và của Khoa Công Nghệ Thông Tin nói riêng đã tận
tình dạy dỗ em suốt quảng thời gian ngồi trên ghế giảng đường đại học.
3
Những kiến thức, kỹ năng mà Thầy Cô đã dạy cho em thực sự khiến em hoàn
thiện bản thân hơn trong học tập, làm việc lẫn cuộc sống.
Nha Trang, ngày 04 tháng 06 năm 2016
Nguyễn Lê Thiên Thơ
4
MỤC LỤC
LỜI NÓI ĐẦU .............................................................................................. 1
DANH MỤC TỪ VIẾT TẮT ........................................................................ 6
DANH MỤC HÌNH ẢNH, BẢNG BIỂU ...................................................... 7
CHƯƠNG I. TỔNG QUAN .......................................................................... 8
1.1 Giới thiệu về Camera 3D ....................................................................... 8
1.2 Công nghệ Camera Intel RealSense 3D ............................................... 10
1.3 Giới thiệu Intel RealSense SDK .......................................................... 11
1.4 Các ứng dụng của Camera 3D hiện tại và tương lai ............................. 13
1.5 Yêu cầu đề tài ...................................................................................... 15
1.6 Phương pháp ....................................................................................... 16
1.7 Cấu trúc của báo cáo đồ án tốt ngiệp ................................................... 17
CHƯƠNG II. CỞ SỞ LÝ THUYẾT............................................................ 19
2.1 Ngôn ngữ lập trình C++ ...................................................................... 19
2.2 Thư viện OpenCV ............................................................................... 21
2.3 Thư viện Intel RealSense SDK ............................................................ 24
2.3.1 Kiến trúc Intel RealSense SDK ..................................................... 24
2.3.2 Các Interface cốt lõi trong Intel RealSense SDK ........................... 25
2.4 Mô-đun Hand Tracking ....................................................................... 26
CHƯƠNG III. KHẢO SÁT BÀI TOÁN ..................................................... 29
3.1 Cấu trúc dữ liệu ................................................................................... 29
3.1.1 Dữ liệu 3D..................................................................................... 29
3.1.2 Dữ liệu tay – Hand Data ................................................................ 30
3.2 Phương pháp giải quyết ....................................................................... 33
5
3.2.1 Đóng gói dữ liệu ............................................................................ 33
3.2.2 Xử lý dữ liệu ................................................................................. 37
CHƯƠNG IV. XÂY DỰNG MÔ-ĐUN XỬ LÝ ......................................... 40
4.1 Các định nghĩa hằng số........................................................................ 40
4.2 Các phương thức xử lý ........................................................................ 41
4.3 Interface HandDetail ........................................................................... 42
4.3.1 Định nghĩa kiểu dữ liệu Enum ....................................................... 42
4.3.2 Thuộc tính ..................................................................................... 43
4.3.3 Phương thức .................................................................................. 45
CHƯƠNG V. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ............................ 47
5.1 Kết luận ............................................................................................... 47
5.2 Hướng phát triển ................................................................................. 48
TÀI LIỆU THAM KHẢO ........................................................................... 49
PHỤ LỤC ................................................................................................... 50
6
DANH MỤC TỪ VIẾT TẮT
2D
2-Dimension
3D
3-Dimension
E3
Electronic Entertainment Expo
CES
Consumer Electronics Show
PC
Personal Computer
SDK
Software Development Kit
GB
Gigabyte
USB
Universal Serial Bus
OpenCL
Open Computing Language
OpenCV
Open Computer Vision
XML
eXtensible Markup Language
OOP
Oject Oriented Programming
ISO
International Organization for Standardization
IEC
International Electrotechnical Commission
7
DANH MỤC HÌNH ẢNH, BẢNG BIỂU
Hình 1.1: Camera 3D (Kinect) ...................................................................... 7
Hình 1.2: Cấu tạo Camera Intel RealSense 3D .............................................. 8
Hình 1.3: Camera SR300 ............................................................................ 11
Hình 1.4: Camera R200 .............................................................................. 12
Hình 1.5: Các game điều khiển bằng cử chỉ và khuôn mặt .......................... 14
Hình 1.6: Minh họa các bước xử lý trong chương trình ............................... 16
Hình 2.1: Kiến trúc thư viện OpenCV ........................................................ 21
Hình 2.2: Kiến trúc Intel RealSense SDK .................................................... 23
Hình 2.3: Hệ thống các Interface C++/C# ................................................... 24
Hình 3.1: Sự khác biệt giữa dữ liệu 2D và 3D ............................................. 28
Hình 3.2: Minh họa các bước xử lý ............................................................. 32
Hình 3.3: Khuôn mẫu lớp Tree .................................................................... 33
Hình 3.4: Khuôn mẫu lớp Node................................................................... 33
Hình 3.5: Minh họa cấu trúc dữ liệu dạng cây ............................................. 34
Hình 3.6: Xây dựng cấu trúc cây ................................................................. 35
Hình 3.7: Minh họa nhánh trong cấu trúc cây .............................................. 36
Hình 3.8: Minh họa cách xác định tư thế ngón tay....................................... 37
Hình 3.9: Minh họa chuyển động của các điểm trên bàn tay........................ 38
8
CHƯƠNG I. TỔNG QUAN
1.1 Giới thiệu về Camera 3D
Kinect (tên gọi trước đó là Project Natal) là thiết bị camera có khả năng
thu nhận các cảm biến chuyển động được phát triển bởi Microsoft và được
công bố vào tháng 6 năm 2009 tại hội nghị thường niên E3. Thời gian đầu
xuất hiện, Kinect là thiết bị chuyên dụng của thế hệ máy Xbox 360, phục vụ
cho việc chơi game.
Hình 1.1 – Camera 3D (Kinect)
Kinect thực sự tạo ra cơn sốt không chỉ trong cộng đồng Game mà cả
trong giới nghiên cứu, lập trình viên và nhà thiết kế trên thế giới. Kinect đã
được ứng dụng vào nhiều lĩnh vực trong đời sống như: giáo dục, y khoa,
robot, giao tiếp người – máy.
Đầu năm 2014, Intel nâng tầm công nghệ Camera 3D lên tầm cao mới khi
giới thiệu chiếc Camera Intel RealSense 3D tại triển lãm CES 2014. Camera
3D có khả năng ghi nhận chiều sâu đối tượng, tương tự mắt con người, ngoài
9
ra hỗ trợ công nghệ nhận dạng khuôn mặt, khả năng nhận biết cử chỉ của các
ngón tay, hiểu và theo dõi cảm xúc trên gương mặt. Camera Intel Realsense
3D có các phiên bản dành cho các thiết bị như laptop, All in One, 2in1, tablet
và smartphone.
Hình 1.2 – Cấu tạo Camera Intel RealSense 3D
Camera Intel RealSense 3D bao gồm 3 thành phần riêng biệt: ống kính
thường, ống kính hồng ngoại và ống kính laser hồng ngoại. Khi kết hợp với
nhau, những ống kính này cho phép thiết bị suy ra chiều sâu bằng cách phát
hiện ánh sáng hồng ngoại được phản xạ trở lại từ đối tượng phía trước nó. Dữ
liệu trực quan này, được lấy kết hợp với phần mềm theo dõi chuyển động
Intel RealSense, tạo ra một giao diện cảm ứng không cần chạm có khả năng
phản hồi theo chuyển động của tay, cánh tay, đầu và nét mặt người dùng, cho
phép họ tương tác với thiết bị một cách dễ dàng.
10
Chiếc Camera Intel RealSense 3D đầu tiên được tích hợp ống kính cảm
biến chiều sâu như mắt người cùng độ phân giải full 1080p. Thiết bị này còn
có khả năng nhận biết sự chuyển động của ngón tay, cho phép nhận dạng cử
động với độ chính xác cao, cũng như hiểu được cử động và cảm xúc trên
gương mặt.
1.2 Công nghệ Camera Intel RealSense 3D
Công nghệ Camera Intel RealSense 3D, ban đầu được gọi là Intel
Perceptual Computing, đây là một nền tảng cho phép con người thực hiện
việc tương tác với máy tính thông qua các cử chỉ và cảm xúc trên khuôn mặt
qua không giản mở. Điều này cho phép con người có thể điều khiển chiếc
máy tính của mình, ra lệnh, nhận diện hay quét vật thể qua không gian mà
không cần chạm hoặc bấm.
Để làm được điều này, Camera 3D là bộ phận đóng vai trò then chốt trong
quá trình hoạt động của Intel RealSense. Chức năng của nó là ghi nhận các
thao tác, cử chỉ và biểu cảm khuôn mặt của người dùng để từ đó máy tính có
thể thực thi các tác vụ theo yêu cầu.
Intel RealSense cho phép người dùng tương tác với máy tính (PC để bàn
hoặc laptop) thông qua cử chỉ của cơ thể bao gồm hai tay, khuôn mặt, điệu bộ
thay thế cho kiểu tương tác với PC, laptop truyền thống qua bàn phím, chuột.
Như vậy, với thao tác điều khiển mới này thì máy tính sẽ nhận diện qua cử
chỉ, khuôn mặt của người dùng. Công nghệ này có thể giúp người dùng kích
hoạt và mở máy tính bằng chức năng nhận diện khuôn mặt hoặc in văn bản,
chơi game, vẽ, ghi chú, thậm chí là chơi nhạc cụ chỉ bằng những cử chỉ tương
tác bằng tay mà không cần phải chạm vào máy.
RealSense hoạt động bằng cách sử dụng camera trên máy, camera này kết
nối với một thư viện trong đó lưu giữ những thông tin được đơn giản hóa về
11
các trải nghiệm thường ngày của con người như học tập, giao tiếp, chơi game
hay bộc lộ cảm xúc vui, buồn, giận dữ. Từ đó, máy tính có thể hiểu và thực
thi những yêu cầu mà người dùng truyền đạt đến chúng.
1.3 Giới thiệu Intel RealSense SDK
Intel RealSense SDK là một thư viện gồm các định nghĩa tiêu chuẩn và
các thuật toán nhận diện đối tượng. Chúng được sử dụng thông qua các
Interface đã được tiêu chuẩn hóa. Mục đích của Intel RealSense SDK nhằm
che giấu sự phực tạp của các thuật toán, giúp lập trình viên tập trung hơn vào
việc sử các thuật toán đó để tạo nên những ứng dụng mang tính thực tế.
Intel RealSense SDK có các yêu cầu tối thiểu về phần mềm và phần cứng
như sau:
Yêu cầu phần cứng:
- Bộ vi xử lý Intel Core thế hệ thứ 4 – Haswell
- 8GB dung lượng ổ cứng
- Intel RealSense Camera (cổng kết nối USB 3.0)
Yêu cần phần mềm:
- Hệ điều hành 64 bit Microsoft Windows 8.1 hoặc 10
- Microsoft Visual Studio 2010-2015 với gói cập nhật mới nhất
- Framework Microsoft .NET 4.0 dành cho C#
- Unity PRO 4.1.0
- Một trong số các phiên bản trình duyệt sau:
Microsoft Internet Explorer 11.0.9600
Microsoft Edge 20.10240.16384.0
Google Chrome 42.0.2311
Mozilla Firefox 37.0
- Java JDK 1.7.0_11
12
- OpenCL 1.2
Các ngôn ngữ lập trình được Intel RealSense SDK hỗ trợ:
- C++
- C#
- Java
- JavaScript
- C# UWP
Hiện nay, Intel RealSense SDK hỗ trợ cho 2 loại thiết bị là Camera SR300
và R200:
Hình 1.3 – Camera SR300
Camera SR300 là thế hệ liền sau của Camera F200 với những cải tiến
đáng kể về phạm vi khung nhìn, tiết kiệm điện, tốc độ nhận diện và chất
lượng ảnh.
13
Hình 1.4 – Camera R200
1.4 Các ứng dụng của Camera 3D hiện tại và tương lai
Tại CES 2014 với Camera RealSense 3D, Intel và tập đoàn Microsoft đã
kết hợp trình diễn một cuộc gọi video (video call) sống động thông qua phần
mềm Skype và Lync. Chiếc camera đã cho thấy khả năng kiểm soát và xóa
bỏ phông nền phía sau vật thể, chỉ còn thấy người gọi và không bị ảnh hưởng
bởi những tác động xung quanh trong suốt quá trình gọi. Với khả năng này,
người dùng sẽ có nhiều lựa chọn hơn: họ có thể chọn xuất hiện trước màn ảnh
cùng với phông nền phía sau hoặc xóa bỏ tất cả để cùng chia sẻ một bài thuyết
trình, thưởng thức một bộ phim hoặc cùng xem một sự kiện thể thao.
Intel hy vọng rằng từ những ứng dụng nhận dạng cử chỉ, giọng nói và cảm
ứng sẽ khuyến khích trẻ em tham gia tích cực hơn trong các trò chơi hữu ích
cho việc học tập. Để nhấn mạnh tiềm năng trong giáo dục giải trí, Eden công
bố việc hợp tác với Scholastic, công ty xuất bản giáo dục trẻ em và truyền
thông toàn cầu, để thiết kế các trải nghiệm tương tác cho hai thương hiệu toàn
cầu Clifford Big Red Dog và I Spy, với việc trình diễn chức năng đa người
dùng trong một trò chơi Clifford, Intel chứng minh các thiết bị này sẽ giúp
các trẻ em từ 3 tuổi trở lên có thể học tập và nâng cao kỹ năng đọc viết thông
qua việc sử dụng cánh tay, chuyển động bàn tay, nói chuyện và chạm.
Tại triển lãm CES 2016, Intel đã cho ra mắt chiếc smartphone đầu tiên
được trang bị Camera Intel RealSense 3D. Điều đặc biệt trên Camera
14
RealSense của Intel là cho phép smartphone có thể nhận diện các vật thể 3D
và cử chỉ. Camera RealSense này có tên ZR300, bao gồm một số cảm biến
như gia tốc, con quay hồi chuyển, theo dõi chuyển động và mô-đun Camera
RealSense R200. Theo Intel, camera RealSense ZR300 hỗ trợ cho Project
Tango của Google để theo dõi và đồng bộ hóa thông tin giữa các cảm biến.
Kết hợp với mức tiêu thụ điện năng thấp, camera này có thể cung cấp những
trải nghiệm đa năng, chẳng hạn như lập bản đồ nhà và chuyển hướng, bổ sung
khả nằng quét 3D cho các ứng dụng cũng như trải nghiệm thực tế ảo.
RealSense ZR300 được sản xuất với chất lượng cao và khả năng cho chiều
sâu trường ảnh ở độ phân giải VGA 60 khung hình/giây. Đây là thiết bị dành
cho những ai muốn tạo ra ứng dụng có thể tận dụng lợi thế của Camera
RealSense do Intel sản xuất.
Hiện công nghệ camera Intel Realsense đã được tích hợp vào chiếc máy
laptop Lenovo Ideapad 500 với các ứng dụng mang lại trải nghiệm 3D đến
người sử dụng:
- Quét khuôn mặt để mở máy truy cập vào Window bằng Window Hello
được tích hợp trên Window 10.
- Điều khiển bằng cử chỉ để cuộn trang trong trình duyệt hoặc văn bản.
- Phần mềm chơi nhạc Kagura.
- Các game điều khiển bằng cử chỉ và khuôn mặt: Lego Portal Racers,
Warrior Wave, bắn phi thuyền Space Astro Blaster.
15
Hình 1.5 – Các game điều khiển bằng cử chỉ và khuôn mặt
1.5 Yêu cầu đề tài
Nội dung yêu cầu thực hiện trong đề tài:
- Tìm hiểu camera 3D, sự cần thiết của dữ liệu 3D trong việc nhận dạng
các đối tượng.
- Giới thiệu và trình bày đặc tính của camera 3D Realsense, tìm hiều thư
viện SDK hỗ trợ Camera Realsense, cách thu ảnh 3D realtime và trích chọn
đặc trưng của tay.
- Nhận dạng các tư thế của tay thông qua điểm đặc trưng như keypoint,
figuretips, nhận dạng các di chuyển của tay.
- Ứng dụng trong giao tiếp người và máy tính thông qua các hình dạng, cử
chỉ tay, sử dụng ngôn ngữ lập trình C++.
16
1.6 Phương pháp
Từ khi ra mắt đến nay, công nghệ Intel RealSense đang dần được tích hợp
sẵn trong các sản phẩm thương mại cùng những ứng dụng đi kèm mang đến
trải nghiệm mới lạ cho người dùng. Tuy nhiên, chúng còn khá mới lạ đối với
phần lớn người dùng phổ thông đặc biệt là nhận diện hành động cử chỉ qua
không gian 3D. Do đó, tôi chọn Hand Tracking để ứng dụng Camera Intel
RealSense 3D vào việc điều khiển trình chiếu Microsoft Office Power Point
bằng cử chỉ tay.
Hand Tracking là một thuật ngữ trong lĩnh vực thị giác máy tính
(Computer Vision) dùng để chỉ sự nhận diện, theo dõi di chuyển của bàn tay
thông qua dữ liệu đầu vào từ thiết bị camera.
Thư viện Intel RealSense SDK cung cấp các Interface cho phép người sử
dụng truy xuất dữ liệu 3D của bàn tay từ Camera thông qua mô-đun Hand
Tracking. Do đó, tôi vận dụng thư viện để xây dựng chương trình nhận diện
tư thế và cử chỉ của tay, thông qua đó điều khiển máy tính mà không cần thao
tác với chuột hay bàn phím.
Chương trình gồm các bước chính sau:
- Bước 1: Thu thập dữ liệu, dữ liệu được lấy từ Camera dưới dạng từng
khung ảnh (frame) gồm ảnh 2D và dữ liệu 3D.
- Bước 2: Nhận diện các thành phần của tay, chương trình sử dụng các
mô-đun Hand Tracking trong thư viện SDK hỗ trợ cùng với việc xử lý để
nhận diện các thành phần bàn tay.
- Bước 3: Nhận diện các cử điệu tay và ứng dụng điều khiển, chương trình
thực hiện xử lý dữ liệu và gọi các phương thức điều khiển máy tính.
17
Hình 1.6 – Minh họa các bước xử lý trong chương trình
1.7 Cấu trúc của báo cáo đồ án tốt ngiệp
Báo cáo này được trình bày thành 5 chương và một phụ lục:
- Chương I: Tổng quan
Giới thiệu tổng quan về camera 3D nói chúng và RealSense camera nói
riêng, những ứng dụng của chúng hiện tại và tương lại, chương này trình bày
lý do tôi chọn đề tài cũng như tổng quan về phương pháp giải quyết bài toàn
của tôi.
- Chương II: Cơ sở lý thuyết
Phần này tập trung giới thiệu lý thuyết cơ bản được sử dụng trong quá
trình tìm hiểu và thực hiện đồ án gồm các kiến thức như:
18
+ Ngôn ngữ lập trình C++ và phương pháp lập trình hướng đối tượng.
+ Thư viện OpenCV.
+ Kiến trúc và những Interface cốt lõi trong Intel RealSense SDK.
+ Mô-đun Hand Tracking trong Intel RealSenseSDK.
- Chương III. Khảo sát bài toán
Phần này trình bày cách thức lưu trữ dữ liệu 3D, phương pháp xử lý dữ
liệu để đưa ra các kết quả nhận diện bàn tay.
+ Dữ liệu 3D: sự khác biệt so với dữ liệu 2D và tính cần thiết của dữ
liệu 3D, dữ liệu về bàn tay trong – Hand Data trong Intel RealSense
SDK.
+ Phương pháp giải quyết: cách thức đóng gói dữ liệu và xử lý dữ liệu
để đưa ra các kết quả nhận diện về hình dạng và cử chỉ của bàn tay.
- Chương IV. Xây dựng mô-đun xử lý HandDetail
Phần này trình bày mô-đun xử lý chính trong chương trình và diễn giải
các thành phần bên trong mô-đun.
+ Các định nghĩa hằng số.
+ Các phương thức xử lý.
+ Interface HandDetail.
- Chương V. Kết luận và hướng phát triển.
Phần này trình bày các kết quả đạt được, ưu khuyết điểm trong đồ án
này, hướng phát triển trong tương lai của đề tài.
19
CHƯƠNG II. CỞ SỞ LÝ THUYẾT
2.1 Ngôn ngữ lập trình C++
C++ là một loại ngôn ngữ lập trình. Đây là một dạng ngôn ngữ đa mẫu
hình tự do có kiểu tĩnh và hỗ trợ lập trình thủ tục, dữ liệu trừu trượng, lập
trình hướng đối tượng, và lập trình đa hình.
Bjarne Stroustrup của Bell Labs đã phát triển C++ trong suốt thập niên
1980 như là một bản nâng cao của ngôn ngữ C. Những bổ sung nâng cao bắt
đầu với sự thêm vào của khái niệm lớp, tiếp theo đó là các khái niệm hàm
ảo, chồng toán tử, đa kế thừa, tiêu bản, và xử lý ngoại lệ. Tiêu chuẩn của ngôn
ngữ C++ đã được thông qua trong năm 1998 như là ISO/IEC 14882:1998.
Phiên bản hiện đang lưu hành là phiên bản C++14, ISO/IEC 14882:2014.
Hiện tại tiêu chuẩn mới nhất của ngôn ngữ C++ là C++14, phát hành ngày
15/12/2014.
Từ thập niên 1990, C++ đã trở thành một trong những ngôn ngữ thương
mại phổ biến nhất trong khi đó.
C++ dẫn nhập thêm một số chức năng hướng đối tượng lên C, cung cấp
khả năng lập trình hướng đối tượng (OOP) cho người sử dụng.
OOP là kĩ thuật lập trình hỗ trợ công nghệ đối tượng, giúp tăng năng suất,
đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách
cho phép lập trình viên tập trung vào các đối tượng phần mềm ở bậc cao hơn.
Ngoài ra, nhiều người còn cho rằng OOP dễ tiếp thu hơn cho những người
mới học về lập trình hơn là các phương pháp trước đó.
Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảm nhẹ các
thao tác viết mã cho người lập trình, cho phép họ tạo ra các ứng dụng mà các
yếu tố bên ngoài có thể tương tác với các chương trình đó giống như là tương
tác với các đối tượng vật lý.
20
Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ
liệu mà chúng được nhìn nhận như là một đơn vị duy nhất. Mỗi đối tượng có
một tên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành
qua tên của nó. Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo,
xử lý dữ liệu bên trong của nó, và gửi ra hay trả lời đến các đối tượng khác
hay đến môi trường.
OOP bao gồm 4 tính chất sau:
- Tính trừu tượng (abstraction): là khả năng chương trình bỏ qua một số
khía cạnh của thông tin mà nó đang trực tiếp làm việc lên, nghĩa là nó có khả
năng tập trung vào những cốt lõi cần thiết. Mỗi đối tượng phục vụ như là một
"động tử" có thể hoàn tất các công việc một cách nội bộ, báo cáo, thay đổi
trạng thái của nó và liên lạc với các đối tượng khác mà không cần cho biết
làm cách nào đối tượng tiến hành được các thao tác. Tính chất này thường
được gọi là sự trừu tượng của dữ liệu. Tính trừu tượng còn thể hiện qua việc
một đối tượng ban đầu có thể có một số đặc điểm chung cho nhiều đối tượng
khác như là sự mở rộng của nó nhưng bản thân đối tượng ban đầu này có thể
không có các biện pháp thi hành. Tính trừu tượng này thường được xác định
trong khái niệm gọi là lớp trừu tượng hay lớp cơ sở trừu tượng.
- Tính đóng gói (encapsulation): không cho phép người sử dụng các đối
tượng thay đổi trạng thái nội tại của một đối tượng. Chỉ có các phương thức
nội tại của đối tượng cho phép thay đổi trạng thái của nó. Việc cho phép môi
trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách
nào là hoàn toàn tùy thuộc vào người viết mã. Đây là tính chất đảm bảo sự
toàn vẹn của đối tượng.
- Tính đa hình (polymorphism): thể hiện thông qua việc gửi các thông
điệp (message). Việc gửi các thông điệp này có thể so sánh như việc gọi các
hàm bên trong của một đối tượng. Các phương thức được dùng trả lời cho
- Xem thêm -