Đăng ký Đăng nhập
Trang chủ Xây dựng chương trình tra cứu thông tin giao thông trên hệ điều hành ios...

Tài liệu Xây dựng chương trình tra cứu thông tin giao thông trên hệ điều hành ios

.PDF
107
141
77

Mô tả:

LỜI CAM ĐOAN Đồ án tốt nghiệp là kết quả tổng hợp các kiến thức mà sinh viên đã được học và nghiên cứu trong suốt quả trình học tập tại trường. Nhận thức rõ được điều đó, với tinh thần tự giác học hỏi, cố gắng nỗ lực của bản thân và sự hướng dẫn tận tình của cô giáo ThS. Phạm Thị Liên, em đã hoàn thành xong đồ án tốt nghiệp của mình. Em xin cam đoan: Nội dung đồ án của em không sao chép nội dung cơ bản từ đồ án khác và sản phẩm đồ án là của chính bản thân em nghiên cứu và xây dựng lên. Mọi thông tin sai lệch em xin hoàn toàn chịu trách nhiệm trước hội đồng bảo vệ. Thái Nguyên, tháng 6 năm 2016 Sinh Viên Trần Trọng Hiếu 1 LỜI CẢM ƠN Em xin gửi lời cảm ơn chân thành và sự tri ân sâu sắc tới các thầy cô của trường Đại học Công nghệ thông tin và Truyền thông nói chung và các thầy cô khoa Công nghệ thông tin nói riêng đã tạo điều kiện giúp đỡ em trong thời gian làm bài thực tập tốt nghiệp. Đặc biệt, em xin chân thành cảm ơn cô giáo ThS. Phạm Thị Liên đã nhiệt tình chỉ bảo và hướng dẫn em trong suốt quá trình thực hiện và hoàn thành đồ án này. Trong quá trình thực tập do kiến thức của bản thân còn hạn chế nên bài báo cáo của em khó tránh khỏi những thiếu sót. Em rất mong nhận được sự đóng góp ý kiến từ quý thầy cô để em có thể học hỏi thêm nhiều kiến thức và hoàn thiện tốt hơn. Em xin chân thành cảm ơn! Thái Nguyên, tháng 6 năm 2016 Sinh Viên Trần Trọng Hiếu 2 MỤC LỤC LỜI CAM ĐOAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 LỜI CẢM ƠN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 MỤC LỤC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 DANH MỤC HÌNH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 DANH MỤC BẢNG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 LỜI NÓI ĐẦU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Chương 1. TÌM HIỂU VỀ CƠ SỞ LÝ THUYẾT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.1. Ngôn ngữ lập trình hướng đối tượng OBJECTIVE-C . . . . . . . . . . . . . . . . . . . 11 1.1.1. Lịch sử phát triển ngôn ngữ Objective-C . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.1.2. Giới thiệu về Objective-C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.1.3. Các yếu tố căn bản của Ojective-C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2. Giới thiệu về hệ điều hành iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.2.1. Quá trình phát triển của iOS qua các bản nâng cấp . . . . . . . . . . . . . . . . . 21 1.2.2. Kiến trúc hệ điều hành iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.2.3. Đặc điểm của hệ điều hành iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.3. Ngôn ngữ lập trình hướng đối tượng Objective-c và công cụ lập trình XCode SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.3.1. Bộ công cụ hỗ trợ lập trình xcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.3.2. XCode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.3.3. iPhone Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1.3.4. Xây dựng và cài đặt ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.3.5. Mô hình MVC (Model-View-Controller). . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.3.6. Một số đối tượng giao diện cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Chương 2. TÌM HIỂU GOOGLE MAPS SDK, GOOGLE PLACE API VÀ XÂY DỰNG WEBSERVICE CHO ỨNG DỤNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.1. Google Maps SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3 2.1.1. Tổng quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.1.2. Các loại bản đồ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.1.3. Đổi chế độ hiển thị bản đồ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.1.4. Tích hợp Google Maps vào ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.1.5. Các thành phần giao diện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.2. Google Places API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.2.1. Các truy vấn địa điểm khả dụng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.2.2. Tìm kiếm địa điểm gần nhất – Nearby Search . . . . . . . . . . . . . . . . . . . . . . 43 2.2.3. Thông tin chi tiết về địa điểm - Place Detail. . . . . . . . . . . . . . . . . . . . . . . . 45 2.2.4. Gợi ý kết quả tìm kiếm - Place autocomplete . . . . . . . . . . . . . . . . . . . . . . . 45 2.3. Xây dựng web service cho ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.3.1. Mô tả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.3.2. Các hàm API của web service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Chương 3. ĐẶC TẢ, PHÂN TÍCH, THIẾT KẾ HỆ THỐNG . . . . . . . . . . . . . . . . . . 52 3.1. Đặc tả bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.2. Mô tả hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.2.1. Tra cứu luật giao thôn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.2.2. Tra cứu quy định xử phạt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.2.3. Tra cứu biển báo giao thông . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.2.4. Tìm kiếm và hiển thị các địa điểm gần nhất . . . . . . . . . . . . . . . . . . . . . . . . 55 3.2.5. Đăng và xem thông tin giao thông . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.3. Phân tích thiết kế hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.3.1. Biểu đồ Use case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.3.2. Biểu đồ trình tự . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.3.3. Biểu đồ hoạt động . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.3.4. Biểu đồ lớp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 3.4. Thiết kế cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.4.1. Thiết kế bảng cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4 3.4.2. Sơ đồ thực thể liên kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Chương 4. XÂY DỰNG CHƯƠNG TRÌNH TRA CỨU THÔNG TIN GIAO THÔNG TRÊN HỆ ĐIỀU HÀNH iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.1. Các thư viện và framework sử dụng trong chương trình. . . . . . . . . . . . . . . . . 70 4.2. Màn hình khởi động. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.3. Các View Controller trong chương trình. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.3.1. View gốc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.3.2. View tra cứu quy định xử phạt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.3.3. View tra cứu biển báo giao thông . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.3.4. View tra cứu luật giao thông . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.3.5. View hiển thị bản đồ giao thông . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.4. Giao diện sau khi cài đặt của chương trình. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.4.1. Giao diện chính và menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.4.2. Chức năng tra cứu quy định xử phạt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.4.3. Chức năng tra cứu luật biển báo giao thông . . . . . . . . . . . . . . . . . . . . . . . . 74 4.4.4. Chức năng tra cứu luật giao thông . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.4.5. Chức năng hiển thị bản đồ, tìm kiếm địa điểm. . . . . . . . . . . . . . . . . . . . . . 75 4.4.6. Chức năng tìm địa điểm gần nhất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.4.7. Chức năng đăng nhập đăng ký tài khoản . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.4.8. Chức năng đăng và hiển thị thông tin giao thông . . . . . . . . . . . . . . . . . . . 77 KẾT LUẬN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 TÀI LIỆU THAM KHẢO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5 DANH MỤC HÌNH Hình 1.1: Kiến trúc hệ điều hành iOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Hình 1.2: Quá trình cài đặt XCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Hình 1.3: Giao diện XCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Hình 1.4: Các mẫu ứng dụng trong XCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Hình 1.5: Giao diện iPhone Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Hình 1.6: Mô hình MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Hình 1.7: Model-View-Controller Layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Hình 1.8: UILabel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Hình 1.9: Thuộc tính của Label. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Hình 1.10: UIButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Hình 1.11: Thuộc tính của Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Hình 1.12 : UIImage khi kéo ra thiết kế giao diện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Hình 1.13: Table View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Hình 2.1: Các chế độ hiển thị của Google Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Hình 3.1: Mô tả chức năng tra cứu luật giao thông. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Hình 3.2: Mô tả chức năng tra cứu quy định xử phạt. . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Hình 3.3: Mô tả chức năng tra cứu biển báo giao thông . . . . . . . . . . . . . . . . . . . . . . . . 54 Hình 3.4: Mô tả chức năng tìm kiếm và hiển thị các địa điểm gần nhất. . . . . . . . . 55 Hình 3.5: Mô tả chức năng đăng và xem thông tin giao thông. . . . . . . . . . . . . . . . . . 56 Hình 3.6: Biểu đồ Use case tổng quát. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Hình 3.7: Biểu đồ Use case chức năng tra cứu luật giao thông . . . . . . . . . . . . . . . . . 57 Hình 3.8: Biểu đồ Use case chức năng xem bản đồ giao thông . . . . . . . . . . . . . . . . . 59 Hình 3.9: Biểu đồ trình tự chức năng tra cứu luật giao thông đường bộ . . . . . . . . 63 Hình 3.10: Biểu đồ trình tự chức năng tra cứu biển báo giao thông. . . . . . . . . . . . . 63 Hình 3.11: Biểu đồ trình tự chức năng tra cứu quy định xử phạt . . . . . . . . . . . . . . . 63 Hình 3.12: Biểu đồ trình tự chức năng tra cứu thông tin địa điểm . . . . . . . . . . . . . . 64 6 Hình 3.13: Biểu đồ trình tự chức năng tra cứu thông tin giao thông . . . . . . . . . . . . 64 Hình 3.14: Biểu đồ trình tự chức năng tìm kiếm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Hình 3.15: Biểu đồ trình tự chức năng đăng nhập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Hình 3.16: Biểu đồ trình tự chức năng đăng thông tin giao thông . . . . . . . . . . . . . . 65 Hình 3.17: Biểu đồ trình tự chức năng báo cáo địa điểm sai. . . . . . . . . . . . . . . . . . . . 65 Hình 3.18: Biểu đồ trình tự chức năng đăng ký . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Hình 3.19: Biểu đồ hoạt động chức năng đăng ký. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Hình 3.20: Biểu đồ hoạt động chức năng xem bản đồ giao thông. . . . . . . . . . . . . . . 67 Hình 3.21: Biểu đồ hoạt động chức năng đăng thông tin giao thông . . . . . . . . . . . . 67 Hình 3.22: Biểu đồ trình tự cho chức năng đăng ký . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Hình 3.23: Biểu đồ lớp hệ thống. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Hình 3.24: Sơ đồ thực thể liên kết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Hình 4.1. Các thư viện và framework hệ thống được sử dụng . . . . . . . . . . . . . . . . . . 70 Hình 4.2: Thiết kế màn hình khởi động cho ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . 70 Hình 4.3: Thiết kế Root View Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Hình 4.4: Thiết kế View quy định xử phạt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Hình 4.5: Thiết kế View tra cứu biển báo giao thông . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Hình 4.6: Thiết kế View tra cứu luật giao thông . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Hình 4.7: Thiết kế View hiển thị thông tin giao thông . . . . . . . . . . . . . . . . . . . . . . . . . 73 Hình 4.8: Giao diện và menu của chương trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Hình 4.9: Chức năng tra cứu các hành vi vi phạm theo từng loại phương tiện . . 74 Hình 4.10: Chức năng tra cứu biển báo giao thông. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Hình 4.11: Chức năng tra cứu luật giao thông . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Hình 4.12: Chức năng hiển thị bản đồ, tìm kiếm địa điểm. . . . . . . . . . . . . . . . . . . . . . 75 Hình 4.13. Chức năng tìm địa điểm gần nhất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Hình 4.14: Chức năng đăng nhập đăng ký tài khoản . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 7 DANH MỤC BẢNG Bảng 1.1: Các kiểu dữ liệu trong Objective-C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Bảng 1.2: Các phép toán trong Objective-C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Bảng 1.3: Các định dạng ảnh được hỗ trợ trên iPhone . . . . . . . . . . . . . . . . . . . . . . . . . 36 Bảng 2.1: Các loại bản đồ Google Maps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Bảng 2.2: Các loại địa điểm trong Google Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Bảng 3.1: Bảng user trong cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Bảng 3.2: Bảng places trong cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 8 LỜI NÓI ĐẦU Dưới sự phát triển vượt bậc của Công nghệ thông tin, thời đại Internet bùng nổ chiếc điện thoại di động không chỉ đơn giản là phương tiện liên lạc mà nó còn là công cụ hữu ích cho con người. Xu hướng sử dụng Smartphone và máy tính bảng đang gia tăng nhanh chóng trên thế giới nói chung và Việt Nam nói riêng, trong đó theo nghiên cứu của IDC năm 2012 Việt Nam có tốc độ tăng trưởng 266%. Android, iOS, Windows Phone là những hệ điều hành chạy trên Smartphone và máy tính bảng phổ biến nhất thế giới: Android 75%, iOS 17,3%, Windows Phone 3,2%. Khi tham gia giao thông, mọi người vẫn còn e ngại về kiến thức luật của mình. Không nắm vững các quy tắc giao thông, tình huống bị xử phạt là điểm chung của đại đa số người tham gia giao thông Việt Nam. Với tình hình đó, cùng với nhu cầu cập nhật liên tục các thông tin giao thông trên các tuyến đường của người dùng. Em đã xây dựng chương trình “Tra cứu thông tin giao thông trên hệ điều hành iOS” nhằm cung cấp một chương trình tra cứu các thông tin về quy định xử phạt, biến báo, luật giao thông, tình hình giao thông trực tuyến trên bản đồ giúp người sử dụng chấp hành đúng luật, dễ dàng tránh và xử lý các sự cố bất ngờ xảy ra trên đường giao thông, nâng cao ý thức chấp hành luật giao thông của người dùng. Nội dung tìm hiểu:  Tên đề tài: Xây dựng chương trình tra cứu thông tin giao thông trên hệ điều hành ios  Các vấn đề cần giải quyết  Tìm hiểu về ngôn ngữ lập trình Objective – C  Tìm hiểu về hệ điều hành iOS  Tìm hiểu về phương pháp phát triển ứng dụng trên hệ điều hành iOS  Tìm hiểu về Google Maps SDK, Google Place API 9  Tìm hiểu về cách xây dựng webservice dựa trên PHP và MySQL  Dự kiến kết quả: Xây dựng được ứng dụng hoàn thiện chạy trên iPhone  Bố cục bài báo cáo  Toàn bộ bài báo cáo đồ án tốt nghiệp gồm 4 chương sau  Chương 1: Tìm hiểu về cơ sở lý thuyết  Chương 2: Tìm hiểu về Google Maps SDK, Google Place API và xây dựng webservice cho ứng dụng  Chương 3: Đặc tả, phân tích, thiết kế hệ thống  Chương 4: Xây dựng chương trình tra cứu thông tin giao thông trên hệ điều hành iOS  10 Chương 1. TÌM HIỂU VỀ CƠ SỞ LÝ THUYẾT 1.1. Ngôn ngữ lập trình hướng đối tượng OBJECTIVE-C 1.1.1. Lịch sử phát triển ngôn ngữ Objective-C Vào đầu những năm 1980, Brad J. Cox đã thiết kế ra ngôn ngữ Objective-C dựa trên ngôn ngữ SmallTalk-80. Có thể hình dung rằng Objective-C là ngôn ngữ lập trình được đặt ở lớp trên củangôn ngữ lập trình C truyền thống, điều này có nghĩa rằng ngôn ngữ C được bổ sung thêm các thành phần mở rộng (extensions) để hình thành nên một ngôn ngữ lập trình mới đó chính là Objective-C. Ngôn ngữ Objective-C này cho phép chúng ta tạo và quản lý các đối tượng (Objects). Đến năm cuối tháng 12 năm 1996, hãng Apple đã mua lại công ty NeXT Software và môi trường NEXTSTEP/OPENSTEP đã trở thành thành phần cột lỗi của hệ điều hành OS X mà Apple giới thiệu sau này. Phiên bản chính thức của môi trường phát triển này do Apple giới thiệu ban đầu có tên là Cocoa. Bằng việc hỗ trợ sẵn ngôn ngữ Objective-C, đồng thời tích hợp một số công cụ phát triển khác như Project Builder (đây chính là tiền thân của XCode) và Interface Builder, Apple đã tạo ra một môi trường mạnh mẽ để phát triển ứng dụng trên MAC OS X. Đến năm 2007, Apple tung ra bảng nâng cấp cho ngôn ngữ Objective-C và gọi đó là Objective-C 2.0. Cho đến khi Apple chính thức giới thiệu iPhone vào năm 2007, các rất rất nhiều các developers mong muốn được tham gia phát triển ứng dụng trên thiết bị mang tính cách mạng về công nghệ này. Ban đầu, Apple không khuyến khích việc tham gia phát triển ứng dụng từ bên thứ ba này mà chỉ cho phép các ứng dụng chạy trên nền web được chạy thông qua ứng dụng dạng trình duyệt Safari mà họ cấy sẵn trong iPhone. Điều này làm cho các ứng dụng khi muốn chạy phải yêu cầu kết nối tới máy chủ web host ứng dụng của các developers tham gia phát triển. Rõ ràng động tác này của Apple không thể đáp ứng nhu cầu của các developers cho có rất nhiều hạn chế trong việc phát triển ứng dụng web11 based như thế. Ngay sau đó, Apple đã trấn an giới phát triển ứng dụng bằng việc chính thức thông báo rằng các developers sẽ có thể phát triển các ứng dụng thuần iPhone. Tức là các ứng dụng nằm trong iPhone và chạy trên hệ điều hành của iPhone giống như các ứng dụng có sẵn của Apple như Contacts, Stocks, Weather,…chạy trên thiết bị đặc biệt này. Đến năm 2010, với việc chính thức giới thiệu thêm thiết bị iPad, Apple chuyển sang sử dụng thuật ngữ tổng quát hơn đó chính làiOS để chỉ hệ điều hành dùng trên các thiết bị di động có thể có sự khác biệt về kích thước vật lý và độ phân giải như iPhone, iPod, iPad và các phiên bản khác nhau của chúng. iOS SDK giờ đây sẽ cho phép các developers phát triển ứng dụng trên bất cứ thiết bị iOS này. iOS 6 chính là phiên bản hiện tại của hệ điều hành đầy thú vị này. 1.1.2. Giới thiệu về Objective-C Objective-C là một ngôn ngữ lập trình hướng đối tượng (OOP) được xây dựng dựa trên ngôn ngữ lập trình C. Tuy nhiên ta phải thấy sự khác nhau giữa C và Objective-C ở chỗ Objective-C là ngôn ngữ lập trình hướng đối tượng còn C lại là ngôn ngữ lập trình hướng thủ tục. Objective-C là ngôn ngữ chính được sử dụng để phát triển hệ điều hành MacOS X cũng như iOS (hệ điều hành chạy trên các thiết bị iPhone, iPod hay iPad). Do Objective-C được phát triển từ C nên chúng ta có thể sử dụng C trong chương trình viết bằng Objective-C. Objective-C compiler sẽ chuyển tất cả mã lệnh viết bằng C sang thành mã biên dịch bằng Objective-C. Chính vì vậy mà Objective-C có đầy đủ sức mạnh của ngôn ngữ C và những cải tiến của một ngôn ngữ lập trình hướng đối tượng hiện đại. Objective-C đơn giản và nhỏ gọn nhưng lại là một thành phần mở rộng rất mạnh mẽ của ngôn ngữ chuẩn ANSI C. Objective-C cung cấp đầy đủ các khả năng lập trình hướng đối tượng nhưng lại được thực thi theo cách khá đơn giản và dễ dàng. Là ngôn ngữ hướng đối tượng nên Objective-C giải quyết các vấn đề lập 12 trình dựa trên khái niệm các Objet. Nó bao gồm 3 phần:  Interface: Interface của một lớp (class) thông thường được định nghĩa trong file header với đuôi .h. Nó chính là phần khai báo của một lớp.  Implementation: Mã nguồn của chương trình được viết trong phần implementation của một lớp và được định nghĩa trong một file có đuôi .m. Đây là phần định dạng nghĩa của lớp.  Instantiation: Sau khi khai báo và định nghĩa một lớp, chúng ta có thể thực thể hóa lớp này bằng việc cấp phát bộ nhớ cho new object của lớp đó.  Ngôn ngữ lập trình Objective-C được chọn vì một số lý do dưới đây:  Nó là ngôn ngữ lập trình hướng đối tượng và các chức năng cung cấp bởi Cocoa framework chỉ có thể được mang lại bởi các kỹ thuật hướng đối tượng.  Nó là thành phần mở rộng của chuẩn ANSI C vì vậy các chương trình viết bằng C của framework này sẽ không bị mất đi tính năng nào và người dùng được hưởng các lợi thế của ngôn ngữ C. Với ngôn ngữ này, người dùng có thể lựa chọn cả lập trình hướng đối tượng và lập trình thủ tục khi cần thiết.  Nó đơn giản và dễ học bởi cú pháp của nó khá ngắn gọn nên nó giúp cho lập trình viên đạt được hiệu quả mong muốn mà không gặp nhiều khó khăn.  Nó rất năng động nếu so sánh với các ngôn ngữ mở rộng khác dựa trên C. Trình biên dịch đóng một vai trò rất quan trọng trong việc bảo vệ thông tin liên quan đến các đối tượng để sử dụng lúc run time.  Nó là một ngôn ngữ mạnh bởi vì các quyết định có thể được đưa ra lúc biên dịch sẽ được trì hoãn cho tới khi chương trình chạy. 1.1.3. Các yếu tố căn bản của Ojective-C  Khai báo biến và cách sử dụng Biến  Biến được sử dụng để lưu trữ các giá trị của ứng dụng. Biến gồm có: kiểu dữ liệu, tên biến và giá trị của biến. 13  Cú pháp: Kiểu_dữ_liệu tên_biến; Hoặc Kiểu_dữ_liệu tên_biến = giá_trị_của_biến;  Quy tắc đặt tên  Ngôn ngữ Objective-C có phân biệt hoa thường.  Tên biến không có dấu tiếng việt.  Tên biến không có khoảng trắng.  Tên biến không được bắt đầu bằng số.  Tên biến không được có các ký tự đặc biệt ( ngoại trừ dấu gạch dưới _ )  Tên biến không được đặt trùng với các từ khoá của ngôn ngữ objectiveC. VD: void, if, static, ...  Kiểu dữ liệu Kiểu dữ liệu sẽ giúp trình biên dịch xác định được loại dữ liệu (số nguyên, số thực, chuỗi,…) mà chúng ta muốn lưu trữ là gì từ đó sẽ cấp phát lượng bộ nhớ tương ứng với loại dữ liệu mà chúng ta cần lưu trữ. Objective-C hỗ trợ các kiểu dữ liệu cơ bản như sau: Loại dữ liệu Kí tự Số nguyên Tên kiểu Số ô nhớ Miền giá trị char 1 byte -128 … 127 unsigned char 1 byte 0 … 255 int 4 bytes -2147483648 … 2147483647 unsigned int 4 bytes 0 … 4294967295 short 2 bytes -32768 .. 32767 unsigned short 2 bytes 0 .. 65535 long 4 bytes -2147483648 .. 2147483647 unsigned long 4 bytes 0 … 4294967295 14 Số thực logic -9,223,372,036,854,775,808 .. long long 8 bytes float 4 bytes 0 .. 3.4028235e+38 double 8 bytes 0 .. 1.7976931E+308 Long double 16 bytes 0 .. 1.1897315E+509 BOOL 1 byte 0, 1; True, False; Yes, No 9,223,372,036,854,775,807 Bảng 1.1: Các kiểu dữ liệu trong Objective-C  Phép toán Phép toán Ký hiệu Ví dụ Cộng + A+B Trừ - A-B Nhân * A*B Chia / A/B Lấy phần dư % A%B Bảng 1.2: Các phép toán trong Objective-C Lưu ý: phép lấy phần dư chỉ được dùng trên 2 toán hạng kiểu số nguyên (nếu không sẽ sinh lỗi cú pháp) Ví dụ: 9 % 5 = 4  Từ khóa Khai báo class, category và protocol  Một số từ khóa thông dụng trong Objective-C  @interface: Khai báo class hoặc interface.  @implementation: Định nghĩa class hoặc category.  @protocol: Khai báo protocol  @end: Kết thúc trong việc khai báo, định nghĩa category hoặc protocol.  @private: Giới hạn phạm vi trong lớp mà biến thể hiện được khai báo.  @protected: Giới hạn phạm vi trong lớp và lớp con kế thừa mà biến thể 15 hiện được khai báo.  @public: không giới hạn phạm vi truy xuất.  @class: khai báo trước một tên lớp đã được định nghĩa ở một nơi khác.  @selector(method_name): Trả về một selector đã được biên dịch mà được định nghĩa thông qua method_name.  @protocol(protocol_name): Trả về một protocol protocol_name (một thể hiện của một lớp Protocol). @protocol là hợp lệ (không có protocol_name) trong trường hợp khai báo trước  @synchronized: Định nghĩa một block mã nguồn trong nó phải được thực hiện đồng bộ  #import: Dùng để include một file, tương tự include trong C, C++. Phạm vi truy xuất các biến  @private: Giới hạn phạm vi trong lớp mà biến thể hiện được khai báo  @protected (default): Giới hạn phạm vi trong lớp và lớp con kế thừa mà biến thể hiện được khai báo  @public: Không giới hạn phạm vi truy xuất  Mặc định là protected. Xử lý ngoại lệ  Ngôn ngữ cũng hỗ trợ các cấu trúc try – catch – throw - finally giống như C++ @try - @catch - @throw - @finally cách thức sử dụng cũng hoàn toàn tương tự.  Câu lệnh trong Objective-C Các câu lệnh điều khiển if, switch và các câu lệnh lặp for, while… tương tự như C/C++ hoặc Java  Lệnh If  Lệnh if if () { 16 }  Lệnh if … else if () { } else { }  Các câu lệnh lặp  For for (; ; ) { }  While while () { }  Do … While do { } while ()  Câu lệnh rẽ nhánh: Switch  switch () { case : break; default: break; 17 }  Mảng Mảng là 1 tập hợp nhiều biến nhớ có cùng kiểu, gọi là kiểu phần tử của mảng, được cấp phát ở những vị trí liên tục trong bộ nhớ. Mỗi phần tử (biến nhớ) trong mảng được xác định dựa trên tên mảng và các chỉ số xác định vị trí của phần tử trong mảng. Chỉ số phần tử của mảng là các số nguyên không âm. Mảng NSArray Cú pháp NSArray *tên_mảng; Để khởi tạo giá trị cho các phần tử trong mảng ta sử dụng hàm  Chuỗi – Đối tượng NSString Khởi tạo chuỗi  Đối với chuỗi trong Objective-C phải bắt đầu bằng @. VD: @“UIT”  Để kiểm tra giá trị của chuỗi ta dung hàm NSLog VD: NSLog(@“%@”,@“UIT”); Đối tượng NSString  Cách khai báo:  NSString *Chuoi1;  Các hàm xử lý chuỗi đối với NSString:  length: lấy độ dài của chuỗi  characterAtIndex: Lấy ra kỹ tự ở vị trí chỉ định  componentsSeparatedByString: Cắt chuỗi thành nhiều phần  substringFromIndex: Lấy ra chuỗi con tính từ vị trí chỉ định đến cuối chuỗi  substringToIndex: Lấy ra chuỗi con tính từ vị trí chỉ định đến đầu 18 chuỗi  rangeOfString: Tìm xem một chuỗi nào có có tồn tại trong chuỗi cho trước hay không  stringByReplacingOccurrencesOfString:withString: Thay thế một chuỗi bằng một chuỗi mới trong chuỗi cho trước  compare: So sánh hai chuỗi với nhau  intValue: Lấy số nguyên ra từ chuỗi.  Object Objective-C cho phép định danh một đối tượng mà không cần phải chỉ ra một lớp cụ thể của đối tượng đó, điều này cho phép định kiểu động. ID: Trong Objective-C, định danh đối tượng là một kiểu dữ liệu khác biệt: id. Kiểu này được định nghĩa như là một con trỏ trỏ đến một đối tượng, trong thực tế, một con trỏ trỏ đến các biến thể hiện của một đối tượng, với dữ liệu duy nhất. Giống như hàm hoặc mảng trong C, một đối tượng được định danh bởi một địa chỉ. Tất cả các đối tượng, bất kể là biến thể hiện hay phương thức, đều có kiểu là id. id anObject; 19  Lớp Định nghĩa lớp Một lớp trong Objective-C được định nghĩa gồm 2 file thành phần tương tự C, C++. Một file *.h định nghĩa trước các biến thành phần và tên các phương thức, file *.m định nghĩa phần thực thi cho các phương thức trong file *.h File ClassName.h #import @interface ClassName { variable1 declaration; variable2 declaration; } method1 declaration; method2 declaration; @end Objective-C sử dụng từ khóa @interface để khai báo một tên lớp trong file h. Từ khóa @end được sử dụng ở cuối phần khai báo. File ClassName.m #import “ClassName.h” @implementation ClassName -method 1 //triển khai phương thức 1 -method 2 // triển khai phương thức 2 @end Objective-C sử dụng từ khóa @implementation để khai báo phần thực thi thực sự của lớp trong file m. Từ khóa @end được sử dụng ở cuối phần khai báo.  Phương thức Class method  Ký hiệu dấu + 20
- Xem thêm -

Tài liệu liên quan