Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 55 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
55
Dung lượng
1,66 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ ĐINH QUANG HUY XÂY DƢ̣NG Ƣ́NG DỤNG OCR CHO THIẾT BI ̣iPHONE LUẬN VĂN THẠC SĨ Hà Nội – 2011 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ ĐINH QUANG HUY XÂY DƢ̣NG Ƣ́NG DỤNG OCR CHO THIẾT BI ̣iPHONE Ngành: Công Nghê ̣ Thông Tin Chuyên ngành: Công Nghê ̣ Phầ n Mề m Mã số: 60 48 10 LUẬN VĂN THẠC SĨ NGƢỜI HƢỚNG DẪN KHOA HỌC: TS PHẠM BẢO SƠN Hà Nội – 2011 MỤC LỤC CHƢƠNG TỔNG QUAN VỀ OCR VÀ Ƣ́NG DỤNG OCR 1.1 Tổ ng quan về toán nh ận dạng văn – OCR 1.2 Mục tiêu xây dƣ̣ng ƣ́ng du ̣ng OCR CHƢƠNG THƢ VIỆN MỞ TESSERACT 2.1 Lịch sử đời 2.2 Tổng quan kiến trúc 2.3 Xác định dòng từ 2.4 Nhận dạng từ 2.5 Bộ phân loại kí tự tĩnh 11 2.6 Phân tích ngơn ngữ 13 2.7 Phân lớp động 13 CHƢƠNG KIẾN TRÚ C CỦA Ƣ́NG DỤNG OCR 15 3.1 Kiến trúc hệ điều hành iPhone 15 3.2 Kiến trúc ̣ điề u hành iOS 15 3.3 Mô ̣t số chƣ́c và dich ̣ vu ̣ của lớp Cocoa Touch 17 3.4 Mô ̣t số API bản của lớp thƣ viện Cocoa Touch 20 3.5 Mơ hình kiến trúc chƣơng trình OCR 24 3.6 Mơ hình thiết kế 26 CHƢƠNG CHƢƠNG TRÌNH THƢ̣C NGHIỆM 28 4.1 Giới thiệu mô trƣờng phát triển cách cài đặt 28 4.2 Giới thiệu công cu ̣ phát triể n ƣ́ng 30 4.3 Chƣơng trình thực nghiệm 32 4.4 Kế t quả thƣ̣c nghiê ̣m 34 KẾT LUẬN 36 TÀI LIỆU THAM KHẢO 37 PHỤ LỤC GIỚI THIỆU NGÔN NGƢ̃ LẬP TRÌNH OBJECTIVE -C 38 DANH MỤC HÌNH VẼ Hình Mơ hình tổng quan hệ thống OCR Hình Thị phần thiết bị di động chia theo hệ điều hành - Nguồ n : Gartner (tháng 2/2011) Hình Ứng dụng OCR cho iPhone Hình Minh họa đƣờng sở đƣợc hiệu chỉnh cong Hình Ví dụ minh họa từ đƣợc cắt theo chiều cao cố định Hình Minh họa từ có khoảng cách khó xác định Hình Ví dụ điểm cắt thích hợp nhát căt 10 Hình Minh ho ̣a chƣ̃ bi ̣đƣ́t đoa ̣n 11 Hình (a) Kí tự ‗h‘ mẫu, (b) ‗h‘ đứt đoạn, (c) nét đặc trƣng so với mẫu 11 Hình 10 Chuẩn hóa ký tự theo đƣờng sở mo-men 14 Hình 11 Các ứng dụng dựa hệ điều hành iOS 16 Hình 12 Các lớp thƣ viê ̣n của iOS 16 Hình 13 Cấ u trúc phân ̣ các lớp bô ̣ thƣ viê ̣n Cococa 24 Hình 14 Mơ hin ̀ h MVC 26 Hình 15 Mơ hình Cococa MVC của Apple 26 Hình 16 Mô hin ̀ h Use-Case của ƣ́ng du ̣ng 27 Hình 17 Mơ hin ̀ h cô ̣ng tác của ƣ́ng du ̣ng OCR 27 Hình 18 So sánh iPad iPhone 29 Hình 19 Cài đặt iPhone SDK 31 Hình 20 Bộ công cụ Xcode, Interface Builder, iPhone simulator 32 Hình 21 Giao diện chƣơng trình thực nghiệm 33 Hình 22 Kể thử nghiệm chƣơng trình 34 DANH MỤC BẢNG BIỂU Bảng Kết thực nghiệm chƣơng trình 35 I GIỚI THIỆU Các kết nghiên cứu lĩnh vực nhận dạng quang học (OCR) đạt đƣợc thành công vƣợt bậc việc giúp chuyển đổi tài liệu văn từ dạng hình ảnh sang dạng văn chỉnh sửa, soạn thảo đƣợc Hƣớng nghiên cứu OCR đời từ trƣớc có máy tính điện tử, đến hình thành thị trƣờng phần mềm chuyên xử lý nhận dạng văn Có nhiều phần mềm tiếng nhờ có độ xác cao hỗ trợ nhiều ngôn ngữ nhƣ phần mềm FineReader hãng AABBYY, OmmiPage hãng Scansoft đƣợc dùng để nhận dạng văn tiếng Anh,… VNDOCR Viện công nghệ thông tin cho văn tiếng Việt Các phần mềm chủ yếu hoạt động dựa tảng máy tính cá nhân Trong đó, thiết bị di động thơng minh (smartphone) ngày mạnh lực xử lý nhƣng chƣa có nhiều phần mềm ứng dụng OCR cho thiết bị Mục tiêu luân văn nghiên cứu thƣ viện mở Tesseract [6] xây dựng ứng dụng OCR cho thiết bị di dộng dựa hệ điều hành iOS Nội dung luận văn nghiên cứu, làm rõ kiến trúc thƣ viện mã nguồn mở Teseract Đây thƣ viện mã nguồn mở có độ xác tốt hoạt động nhiều tảng hệ điều hành khác Luận văn sâu vào việc tìm hiểu kiến trúc hệ điều iOS, hệ điều hành hãng Apple dùng chi thiết bị di động nhƣ iPhone, iPod Touch, iPad, qua giúp tác giả phân tích, thiết kế kiến trúc cho ứng dụng OCR phù hợp với việc thực thi hệ điều hành dành cho thiết bị di động Kết luận sản phẩm phần mềm ứng dụng OCR cho thiết bị iPhone Sản phẩm có tính ứng dụng thực tiễn cao Ngƣời sử dụng cài đặt phần mềm sử dụng carmera có sẵn thiết bị để chụp lại ảnh tài liệu cần nhận dạng, chuyển đổi Các liệu hình ảnh đƣợc nhận dạng chuyển đổi sang dạng liệu văn Sau đó, thơng qua công cụ dịch Google, liệu văn đƣợc dịch sang ngơn ngữ hiểu đƣợc ngƣời dùng II LỜI CẢM ƠN Trƣớc tiên xin gửi lời cảm chân thành tới thầy, cô giáo trƣờng Đại Học Công Nghệ đặc biệt thầy TS Phạm Bảo Sơn Thầy Sơn ngƣời trực tiếp giảng dậy nhƣ ngƣời hƣớng dẫn khoa học Trong trình học tập trƣờng lên lớp thầy trƣờng giúp ích cho tơi nhiều việc mở rộng tầm hiểu biết khơng kiến thức chun mơn mà cịn kinh nghiệm thực tiễn Trong trình làm luận văn khoa học, dẫn kịp thời thầy Phạm Bảo Sơn giúp tơi có đƣợc hƣớng nghiên cứu khoa học đƣợc xác Trong trình học tập nghiên cứu khoa học, tơi nhận đƣợc nhiều cổ vũ động viên khích lệ tinh thần gia đình đặc biệt từ vợ - Vũ Thị Xuân Hƣơng gái Đinh Thanh Trúc Gia đình chỗ dựa vững tinh thần giúp tơi vƣợt qua đƣợc khó khăn sống Mọi ngƣời gia đình ln quan tâm chăm sóc dành nhiều thời gian cho phục vụ công việc nghiên cứu khoa học qua giúp tơi hồn thành đề tài luận văn Tôi xin cảm ơn tới ngƣời bạn, đồng nghiệp sát cánh bên Trung tâm CNTT – Học viện Cơng Nghệ Bƣu Chính Viễn Thông Tại nhận đƣợc chia sẻ kinh nghiệm công việc, kinh nghiệm thực tiễn nghiên cứu khoa học Qua giúp tơi có đƣợc nhiều kinh nghiệm việc nghiên cứu làm khoa học Một lần xin cảm ơn tất thầy cô giáo, ngƣời thân gia đình, bạn bè, đồng nghiệp giúp đỡ nhiều kiến thức chuyên môn, kinh nghiệm thực tế, động viên khích lệ tinh thần trình hồn học tập, nghiên cứu khoa học tơi Những đóng góp phần thành cơng luận văn Mọi đóng góp luận văn xin gửi địa email quanghuyqn@gmail.com Xin chân thành cảm ơn CHƢƠNG TỔNG QUAN VỀ OCR VÀ ỨNG DỤNG OCR 1.1 Tởng quan về tốn nhận dạng văn – OCR Ngày nay, hầu nhƣ tất thông tin đƣợc lƣu trữ xử lý máy tính Mỗi ngày, nhập khối lƣợng liệu lớn vào máy tính Nhƣng dƣờng nhƣ thân máy tính khơng đủ thơng minh để nhận biết kí hiệu, kí tự, hình ảnh … mà ngƣời sử dụng Điều làm giảm lớn hiệu cơng việc ngƣời Do đó, vấn đề nhận dạng đời giống nhƣ cầu nối ngƣời máy tính nhằm tăng khả xử lý thơng tin máy tính Nằm số toán nhận dạng, nhận dạng văn nhằm giải vấn đề nhận dạng kí tự xuất văn Nó có ý nghĩa đặc biệt quan trọng xử lý thơng tin phần lớn thơng tin mà ngƣời sử dụng dạng kí tự Hơn nữa, ngày nhiều thiết bị di động thông minh (smartphone) hay thiết bị cầm tay nhỏ gọn nhƣ máy PDA (Personal Digital Assitants, thiết bị điện tử cầm tay), công cụ tiện dụng xử lý thông tin cá nhân Các thiết bị này, ngày nay, thƣờng đƣợc trang bị thành phần xử lý tốc độ cao thƣờng tích hợp sẵn camera có độ phân giải cao Do đó, xây dựng ứng dụng nhận dạng ký tự cho loại thiết bị nhằm nâng cao tiện ích sử dụng ngƣời dùng hoạt động phục vụ công việc nghiên cứu học tập công cụ dịch tự động cho ngƣời du lịch nƣớc Vấn đề nhận dạng văn đƣợc nghiên cứu gần bốn thập kỉ qua Nhƣng năm gần đây, kỹ thuật nhận dạng đƣợc phát triển đủ mạnh để xây dựng ứng dụng thƣơng mại Có nhiều loại vấn đề nhận dạng chữ nhƣ việc thể đặc trƣng hệ thống nhận dạng hay vấn đề chia cắt kí tự từ để nhận dạng.vv Các thƣ viện, phần mềm OCR đặc trƣng thƣờng có mơ hình xử lý với bƣớc nhƣ hình bên dƣới Hình Mơ hình tởng quan hệ thống OCR 1.2 Mục tiêu xây dựng ứng dụng OCR Hiê ̣n các sản phẩ m thiế t bi ̣m áy tính bảng , điê ̣n thoa ̣i thơng minh ngày phổ biến Các sản phẩm ngày mạnh mẽ hiệu xử lý nhƣ giầ u tính sƣ̉ du ̣ng nhờ có nhiề u phầ n mề m ƣ́ng du ̣ng đó Có nhiề u cơng ty liñ h vƣ̣c thiế t bi ̣di đô ̣ng tham gia vào thị phần nhƣ Nokia, Sony, LG, Samsam, Apple…Trong các sản phẩ m điê ̣n thoa ̣i thông minh thiết bị iPhone hãng Apple - Mỹ giành đƣợc nhiều quan tâm không chỉ ngƣời sƣ̉ du ̣ng mà cả cô ̣ng đồ ng phát triể n ƣ́ng du ̣ng cho thiế t bi ̣này 33 Vùng hiển thị kết nhận dạng Gửi email dịch tự động OCR Nút điều khiển thay đổi ngôn ngữ Nút điều khiển chọn nguồn ảnh Hình 21 Giao diện chƣơng trình thực nghiệm Dữ liệu đầu vào lấy trực tiếp từ máy ảnh số thiết bị từ sƣu tập ảnh có sãn máy Chƣơng trình thực nghiệm cho phép xử lý với nhiều định dạng ảnh khác nhƣ BMP, JPG, PNG, TIF… 34 Ảnh chụp thiết bị iPhone Kết nhận dạng ảnh chụp Hình 22 Kể thử nghiệm chƣơng trình 4.4 Kế t quả thƣ ̣c nghiêm ̣ Chƣơng trình thực nghiệm sử dụng thƣ viện Tesseract 2.04 làm cơng cụ để nhận dạng Trong khóa luận tơi xin trình bầy kết thực nghiệm độ xác thời gian xử lý chƣơng trình đƣợc cài đặt thiết bị iPhone 3GS Các ảnh nguồn đƣa vào để đánh giá độ xác thời gian xử lý đƣợc đƣợc chụp từ loại sách báo, biển quảng cáo, bao bì sản phẩm Kết thực nghiệm nhƣ sau: 35 Số ảnh mẫu 100 Số từ mẫu 3950 Số từ nhận dạng xác 3430 Tỷ lệ xác Bảng 86.87 % Kế t quả thƣ̣c nghiêm ̣ chƣơng trin ̀ h Chƣơng trình thực nghiệm cho kết tốt với độ tin cậy cao 96.7% với ảnh chụp từ ấn phẩm sách báo tạp chí Các ấn phẩm thƣờng đƣợc in với font chữ đồng cố định khơng chứa nhiều họa tiết phía sau Đối với ảnh chụp thử nghiệm từ biển quảng cáo, hay bao bì sản phẩm cho kết với độ xác khơng cao 31.3% Các mẫu ảnh loại thƣờng chứa nhiều font chữ khác thƣờng có nhiều họa tiết, hoa văn phía sau nên ảnh hƣởng lớn đến kết nhận dạng 36 KẾT LUẬN Cuốn luận văn trình bầy làm sáng tỏ kiến trúc thƣ viện mở Tesseract, thƣ viện mở phục vụ việc xây dựng ứng dụng OCR Các kỹ thuật đƣợc áp dụng, bƣớc xử lý thƣ viện Tesseract đƣợc trình bầy cách đủ đọng Qua nắm bắt đƣợc kiến trúc giúp tham gia vào việc cải tiến giúp nâng cao lực xử lý mã nguồn mở Cuốn luận văn làm rõ đƣợc kiến trúc hệ điều hành iOS Các lớp thƣ viện iOS phục vụ cho việc xây dựng ứng dụng cho thiết bị di động cùa hãng Apple đƣợc trình bầy Từ nghiên cứu tác giả đề xuất kiến trúc ứng dụng OCR cho thiết bị iPhone xây dựng ứng dụng thử nghiệm Ứng dụng thực nghiệm cho kết tốt, 96.7% ảnh chụp loại văn in nhƣ sách, báo, tạp chí…Tuy nhiên ảnh chụp từ loại nhƣ nhãn mác sản phẩm, bao bì sản phẩm, biển quảng cáo cho kết xác nhiều yếu tố làm suy giảm nhƣ: nhiều font chữ khác nhau, hình ảnh, vân đƣợc sử dụng phía ảnh Hƣớng nghiên cứu luân văn cải tiến tốc độ xử lý tính tiện dụng ứng dung Việc nghiên cứu xây dựng từ điển tích hợp cho ứng dụng giúp làm cho ứng dụng hoạt động đƣợc nhanh chóng Nâng cao tốc độ xử lý, nhƣ tính linh hoạt việc cho phép ngƣời sử dụng lựa chọn vùng nhận dạng chế độ xem trƣớc hình ảnh (preview) mà khơng cần phải lƣu lại ảnh chụp để xử lý 37 TÀI LIỆU THAM KHẢO [1] R.W Smith, The Extraction and Recognition of Text from Multimedia Document Images, PhD Thesis, University of Bristol, November 1987 [2] R Smith, “A Simple and Efficient Skew Detection Algorithm via Text Row Accumulation”, Proc of the 3rd Int Conf on Document Analysis and Recognition (Vol 2), IEEE 1995, pp 1145-1148 [3] Smith, R., ―An Overview of the Tesseract OCR Engine‖ Proc 9th Int Conf on Document Analysis and Recognition, 2007, pp629-633 [4] David A Forsyth, Jean Ponce, Computer vision – A modern approach, Prentice Hall, 2002 [5] Apple inc, iOS Technology Overview, Apple, 2010 [6] Tesseract Open-Source OCR: http://code.google.com/p/tesseract-ocr [7] G Nagy, ―At the frontiers of OCR‖, Proc IEEE 80(7), IEEE, USA, Jul 1992, pp 1093-1100 38 PHỤ LỤC GIỚI THIỆU NGƠN NGƢ̃ LẬP TRÌ NH OBJECTIVE-C Giới thiệu tởng quan Objective-C ngơn ngữ lập trình xuất từ lâu, đƣợc thiết kế phát triển từ năm 1980 Hiện tại, Objective-C lại trở nên phổ biến đƣợc Apple chọn làm ngơn ngữ lập trình cho hệ thống Mac iPhone.Objective-C đƣợc thiết kế Brad Cox ông làm việc cho công ty Stepstone vào đầu năm 1980 Objective-C đƣợc thiết kế để phục vụ mục đích lập trình hƣớng đối tƣợng Nó hoạt động giống nhƣ tập hợp thành phần mở rộng mạnh mẽ ngôn ngữ C Objective-C kết hợp đặc điểm ƣu tú C ngôn ngữ SmallTalk Objective-C đơn giản để học có đầy đủ khả ngơn ngữ lập trình hƣớng đối tƣợng.Objective-C đơn giản nhỏ gọn nhƣng lại thành phần mở rộng mạnh ngôn ngữ chuẩn ANSI C Objective-C cung cấp đầy đủ khả lập trình hƣớng đối tƣợng nhƣng lại đƣợc thực thi theo cách đơn giản dễ dàng Hầu hết ngôn ngữ lập trình hƣớng đối tƣợng cung cấp: ● Một thƣ viện Objects ● Các công cụ phát triển cần thiết ● Hỗ trợ hƣớng đối tƣợng thƣ viện liên quan Objective-C cung cấp đầy đủ thành phần Bạn sử dụng Objective-C để phát triển phần mềm hoàn thiện Apple chọn Objective-C làm ngơn ngữ lập trình cho hệ thống máy Mac iPhone Là ngôn ngữ hƣớng đối tƣợng nên Objective-C giải vấn đề lập trình dựa khái niệm Object Nó bao gồm phần: ● Interface:Interface lớp(class) thông thƣờng đƣợc định nghĩa file header với h Nó phần khai báo lớp 39 ● Implementation:Mã nguồn chƣơng trình đƣợc viết phần implementation lớp đƣợc định nghĩa file có m Đây phần định nghĩa lớp ● Instantiation:Sau khai báo định nghĩa lớp, thực thể hóa lớp việc cấp phát nhớ cho new object lớp Tóm lại Objective-C là: - Thành phần mở rộng ngơn ngữ lập trình C - Là ngơn ngữ lập trình hƣớng đối tƣợng đơn giản nhƣng mạnh mẽ - Là ngôn ngữ đƣợc Apple sử dụng để phát triển ứng dụng cho hệ thống máy Mac iPhone Tại lại sử dụng Objective-C Ngôn ngữ lập trình Objective-C đƣợc chọn cho Cocoa framework số lý dƣới đây: ● Nó ngơn ngữ lập trình hƣớng đối tƣợng chức cung cấp Cocoa framework đƣợc mang lại kỹ thuật hƣớng đối tƣợng ● Nó thành phần mở rộng chuẩn ANSI C chƣơng trình viết C framework khơng bị tính ngƣời dùng đƣợc hƣởng lợi ngôn ngữ C Với ngôn ngữ này, ngƣời dùng lựa chọn lập trình hƣớng đối tƣợng lập trình thủ tục cần thiết ● Nó đơn giản dễ học cú pháp ngắn gọn nên giúp cho lập trình viên đạt đƣợc hiệu mong muốn mà khơng gặp nhiều khó khăn ● Nó động so sánh với ngôn ngữ mở rộng khác dựa C Trình biên dịch đóng vai trị quan trọng việc bảo vệ thơng tin liên quan đến đối tƣợng để sử dụng lúc run time 40 ● Nó ngơn ngữ mạnh định đƣợc đƣa lúc biên dịch đƣợc trì hỗn chƣơng trình chạy Sự động Objective-C có hai lợi đáng kể: ● Nó hỗ trợ ràng buộc động mở tạo cấu trúc đơn giản giao diện tƣơng tác ngƣời dùng ● Nó cho phép phát triển cơng cụ phát triển phức tạp Một giao diện cho hệ thống run time tạo điều kiện cho việc tiếp cận thông tin lúc run time giúp cho việc monitor ứng dụng viết Objective-C Cú pháp ngôn ngữ Objective-C Trong phần khám phá từ khóa (keyword) đƣợc sử dụng ngơn ngữ lập trình Objectvie-C Nhƣ bạn biết, Objectvie-C mở rộng ngơn ngữ lập trình C, chƣơng trình đƣợc viết C hay C++ hồn tồn đƣợc biên dịch nhƣ Objectvie-C Ngồi từ khóa dùng C C++, Objectve C cung cấp thêm số từ khóa khác Để tránh xung đột với từ khóa ngôn ngữ khác, Objectvie-C dùng ―@‖ đứng trƣớc từ khóa Những từ khóa đƣợc gọi Compiler Directives ● Các Directives đƣợc sử dụng để khai báo, định nghĩa classes, categories, protocols: Directive Ý nghĩa @interface Sử dụng để khai báo class hay interface @implemen tation @protocol Dùng để định nghĩa class hay category Sử dụng để khai báo thủ tục hình thức (formal 41 protocol) @end ● Kết thúc khai báo, định nghĩa category protocol Các Directive đƣợc sử dụng để xác định khả truy cập thực thể (Mặc định @protected) Directive Ý nghĩa @private Giới hạn phạm vi truy cập biến thực thể lớp mà đƣợc khai báo @protecte Giới hạn phạm vi truy cập biến thực thể lớp khai báo lớp khác kế thừa lớp d @public ● Không giới hạn phạm vi truy cập biến Các Directives liên quan đến việc xử lý ngoại lệ (Exception handling) Directive @try Ý nghĩa Định nghĩa khối mã lệnh mà khối phát sinh ngoại lệ @throw Tung ngoại lệ @catch Bắt (khối lệnh đƣợc thực thi ngoại lệ phát sinh) ngoại lệ bên khối mã lệnh @try trƣớc @finally Một khối mã lệnh đƣợc thực thi khơng cần biết có ngoại lệ xảy @try hay không 42 ● Các Directive sử dụng cho mục đích cụ thể Directive Definition @class Khai báo tên lớp đƣợc định nghĩa @selector(method_na me) Trả selector đƣợc biên dịch xác định phƣơng thức có tên tham số dấu ngoặc Trả protocol( thực thể Protocol @protocol(protocol_n class) có tên dấu ngoặc @protocol(khơng ame) có tham số) hợp lệ khai báo chuyển tiếp(forward declarations) @encode(type_spec) @”string” Cho ta chuỗi đƣợc encode tham số type_spec Định nghĩa chuỗi NSString object khởi tạo chuỗi với 7-bit chuẩn ASCII-encoded @”string1″ @”string2″ … @”stringN” @synchronized() Định nghĩa chuỗi NSString object Chuỗi đƣợc tạo kết việc nối chuỗi xác định directives Định nghĩa khối mã lệnh mà đƣợc chạy (execute) thread thời điểm ● Một số từ khóa riêng Objectvie-C 43 ● in out byref oneway inout bycopy Những từ khóa sử dụng cho mục đích quản lý nhớ Objective-C Chúng đƣợc gọi từ khóa nhƣng thực chất phƣơng thức lớp cha đầu tiên (root class) NSObject alloc ● retain release autorelease Một số từ khóa khác: ○ bool từ khóa objective-C nhƣng giá trị YES NO Trong C C++ có giá trị TRUE FALSE ○ ‘super’ ‘self’ gọi từ khóa, nhƣng self đối số ẩn của phƣơng thức super dẫn cho trình biên dịch cách sử dụng từ khóa self khác ● Các Directives tiền xử lý (Preprocessor Directives) Các directives tiền xử lý thông báo đặc biệt: Directive // #import Definition Sử dụng để bắt đầu dòng thích (comment) tệp code Giống nhƣ C C++ đƣợc sử dụng để include file nhƣng không include nhiều lần ● Phƣơng thức 44 - Cách khai báo phƣơng thức Objectvie-C Không tham số: Có tham số: : : ; - Lời gọi phƣơng thức không trả về: [ ]; [ : ]; [ : : ]; Trả kết quả: = [ ]; = [ : : ]; ● Lớp đối tƣợng Objectvie-C sử dụng khái niệm Interface Implementation để phân biêt file Header file Source C (*.h *.c) lớp Objective-C định nghĩa giao diện (.h) phần thực thi file m bạn ý m khác với C C++ @interface: #import @interface Fraction: NSObject { int numerator; @private int denominator; } -(void) print; -(void) setNumerator: (int) n; 45 -(void) setDenominator: (int) d; -(int) numerator; -(int) denominator; @end phần thực thi @implementation #import Fraction.h @implementation Fraction -(void) print { printf( %i/%i, numerator, denominator ); } -(void) setNumerator: (int) n { numerator = n; } -(void) setDenominator: (int) d { denominator = d; } -(int) denominator { return denominator; } -(int) numerator { return numerator; } @end 46 Một số lƣu ý lập trình Objectvie-C: Một số tính chất đặc điểm ngơn ngữ lập trình Objective-C: ● Là ngơn ngữ hƣớng đối tƣợng ● Mở rộng từ C ● Nhẹ nhàng (không dùng kỹ thuật máy ảo -Virtual machine) ● Mềm dẻo (mở rộng từ C nên bạn dùng C thuần cấu trúc ngơn ngữ run-time) ● Reflection (có hỗ chợ) ● nil thay cho NULL C: bạn gửi thông điệp cho nil, nhƣng làm nhƣ với NULL ● BOOL có giá trị YES NO true false ● Khái niệm methods message đc sử dụng mang ý nghĩa nhƣ Objective-C theo message có thuộc tính đặc biệt Một message chuyền động từ obj tới obj khác Việc gọi thơng điệp obj khơng có nghĩa obj thực message chuyển tiếp tới obj khác chƣa biết trƣớc tóm lại có khả đáp trả thơng điệp khơng trực tiệp gián tiếp ● Sử dụng #import để thay cho #include (đây chế thông minh #include C/C++ bạn phải thêm lần ) ● Objectvie-C cho phép đơn kế thừa Mặc định tất lớp kế thừa từ NSObject ● Cặp @… @end cặp giới hạn phạm vi lớp ● Các thuộc tính dc khái báo cặp { … } khai báo phƣơng thức bên ngồi ● Nếu phƣơng thức bắt đâu ―+‖ có nghĩa thuộc phạm vi lớp (static), cịn ―-‖ phạm vi object 47 ● Các phạm vi truy xuất public,protected private giống nhƣ C++ mặc định protected ● Các truy nhập phần tử sử dụng toán tử ―.‖ object ―->‖ trỏ ● khơng có tầm vực truy xuất phƣơng thức (tức ObC phƣơng thức có tầm vực public) Khi làm việc với Objectvie-C bạn cần ý đƣợc xây dựng C việc bạn sử dụng cú pháp C trộn lẫn với cú pháp thống Objectvie-C hồn tồn chấp nhận, nhìn sử dụng việc trộn lẫn nhiều gây phức tạp việc review code sau