Đăng ký Đăng nhập
Trang chủ 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ử c...

Tài liệu 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

.PDF
76
462
114

Mô tả:

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 -

Tài liệu liên quan