Xây dựng ứng dụng thi và học tiếng anh trên thiết bị di động iOS
Trang 1BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
-XÂY DỰNG ỨNG DỤNG THI VÀ HỌC TIẾNG
ANH TRÊN THIẾT BỊ DI ĐỘNG iOS
LUẬN VĂN ĐẠI HỌC
Chuyên ngành: Công nghệ thông tin
CÁN BỘ HƯỚNG DẪN: NGUYỄN HỒNG VŨ
TP HỒ CHÍ MINH, tháng 7 năm 2016
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Khóa luận đáp ứng yêu cầu của luận văn cử nhân tin học
Tp.HCM, ngày …… tháng …… năm 2016
Giáo viên hướng dẫn
Trang 3NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Khóa luận đáp ứng yêu cầu của luận văn cử nhân tin học
Tp.HCM, ngày …… tháng …… năm 2016
Giáo viên phản biện
Trang 4LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi Các số liệu, kết quảnêu trong Luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trìnhnào khác
Tôi xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện Luận văn này
đã được cảm ơn và các thông tin trích dẫn trong Luận văn đã được chỉ rõ nguồn gốc
Sinh viên thực hiện Luận văn
Em cũng xin gửi lời cảm ơn sâu sắc và chân thành đến các quý Thầy Cô trong KhoaCông nghệ thông tin đã tận tình hướng dẫn, giảng dạy em trong suốt 4 năm học vừaqua, đó là nguồn kiến thức vô cùng quý báu để chúng em có thể tự tin bắt tay vào thựchiện đề tài này
Trang 5Cuối cùng, em muốn gửi lòng biết ơn sâu sắc tới gia đình và bạn bè đã ủng hộ em trongsuốt con đường học tập đại học, là nguồn động viên về mặt tinh thần cũng như vật chấtđể em có thể vượt qua những khó khăn trong học tập và trong quá trình làm luận văn.
Và riêng đối với chính mình, em cũng đã cố gắng hết sức khả năng của mình để hoànthành thật tốt luận văn đã được đề ra Tuy vậy, do còn thiếu kinh nghiệm thực tế nênkhi làm luận văn cũng không tránh nhiều sai sót, chúng em kính mong nhận được ýkiến đóng góp từ quý thầy cô và bạn bè
TÓM TẮT KHÓA LUẬN
Ngày nay, Công nghệ thông tin (CNTT) đã chứng tỏ ưu thế và dần trở thành một phương tiện, một công cụ không thể thiếu được với sự phát triển mọi nghành nghề trong xã hội Trong những năm qua, nhiều nghành đã từng bước ứng dụng CNTT vào lĩnh vực chuyên môn và đã đạt được những kết quả đáng khích lệ
Khóa luận này nhằm mục đích phát triển ứng dụng học và thi tiếng anh online nhằm đơn giản hoá việc học tiếng anh cho người dùng trên thiết bị di động và máy tínhbảng
Khóa luận gồm các chương chính:
Chương 1: Tổng quan đề tài
Chương 2: Khảo sát hiện trạng
Chương 3: Giới thiệu ngôn ngữ Swift
Thành phố Hồ Chí Minh, ngày 04 tháng 07 năm 2016
Sinh Viên
Trang 6 Chương 4: Mô tả ứng dụng
Chương 5: Thiết kế giao diện và cài đặt phân hệ client
Chương 6: Tổng kết và kết luận
Chương 7: Danh mục tham khảo
Trang 7MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ii
LỜI CAM ĐOAN iv
LỜI CÁM ƠN iv
TÓM TẮT KHÓA LUẬN v
MỤC LỤC i
DANH SÁCH CÁC HÌNH ẢNH v
DANH SÁCH CÁC BẢNG viii
KÝ HIỆU, VIẾT TẮT THUẬT NGỮ ix
Chương 1 TỔNG QUAN ĐỀ TÀI 1
1.1 Lý do chọn đề tài 1
1.2 Mục đích của đề tài 1
1.3 Đối tượng hướng đến trong đề tài 1
1.4 Phạm vi nghiên cứu 1
Chương 2 KHẢO SÁT HIỆN TRẠNG 3
2.1 Hiện trạng thị phần sử dụng Smartphone nói chung 3
2.1.1 Tổng quan chung 3
2.1.2 Thị phần thiết bị sử dụng HĐH iOS 7
2.2 Hiện trạng sử dụng các ứng dụng tiếng anh hiện nay 9
Chương 3 GIỚI THIỆU NGÔN NGỮ SWIFT 12
3.1 Giới thiệu chung 12
3.1.1 Đặc điểm 13
3.2 Một số cú pháp cơ bản trong Swift 15
3.2.1 Quy tắc đặt tên 15
Trang 83.2.2 Kiểu dữ liệu trong Swift 15
3.2.3 Phép toán 16
3.2.4 Từ khoá thông dụng trong Swift 16
3.2.5 Khai báo biến trong Swift 16
3.2.6 Chuyển kiểu dữ liệu 17
3.2.7 Array, Dictionary 18
3.2.8 Chuỗi 19
3.2.9 Kiểm tra kiểu dữ liệu 19
3.2.10 Ép kiểu dữ liệu 20
3.2.11 Khai báo vòng lặp,câu điều kiện 20
3.2.12 Hàm và Class , Object 23
3.2.13 Protocol 24
3.3 Mô hình MVC (Model – View – View Controller) 25
3.4 Một số thao tác cơ bản 29
3.4.1 App Icon 29
3.4.2 Loading Screen 29
3.4.3 Thay đổi App Name 30
3.4.4 Ẩn Status Bar 31
3.4.5 Background 32
3.4.6 Thêm Framework 33
3.5 Một số đối tượng cơ bản 35
3.5.1 Đối tượng Label – Button – Text Field 35
3.6 Kết nối cơ sở dữ liệu với Sqlite 38
3.6.1 Giới thiệu 38
3.6.2 Cài đặt Sqlite Manager cho Firefox 38
3.6.3 Cấu hình ứng dụng để tương tác với Sqlite 39
3.6.4 Các hàm trong Sqlite 39
Trang 9Chương 4 MÔ TẢ ỨNG DỤNG 41
4.1 Mô tả chung 41
4.2 Mô tả ứng dụng 42
4.3 Mô tả client 42
4.4 Mô tả Server 43
4.4.1 Webserver 43
4.4.2 Webservice 43
4.4.3 Lưu trữ dữ liệu 43
4.5 Kiến trúc của hệ thống 44
4.5.1 Kiến trúc tổng thể 44
Chương 5 THIẾT KẾ GIAO DIỆN VÀ CÀI ĐẶT PHÂN HỆ CLIENT 45
5.1 Thiết kế 45
5.1.1 Mô hình CDM 45
5.2 Danh sách chức năng 46
5.3 Thiết kế giao diện 48
5.4 Cài đặt 69
5.4.1 Cài đặt ứng dụng iOS 69
5.4.2 Các vấn đề trong quá trình lập trình trên iOS 70
Chương 6 TỔNG KẾT VÀ ĐÁNH GIÁ 76
6.1 Tổng kết 76
6.2 Đánh giá 76
Chương 7 DANH MỤC THAM KHẢO 79
Các tài liệu tham khảo 79
Website 79
PHỤ LỤC 80
A Đặc tả use case phân hệ Client 80
Trang 11DANH SÁCH CÁC HÌNH ẢNH
Hình 2-1 Biểu tượng của Apple và Android 3
Hình 2-2 Bảng số liệu thị phần Smartphone trên thế giới 4
Hình 2-3 Thiết kế của màn hình Window phone 4
Hình 2-4 Top 4 hệ điều hành dành cho di động 5
Hình 3-1 Biểu tượng của Swift 12
Hình 3-2 Biểu tượng của Swift 13
Hình 3-3 Khai báo biến gán thuộc tính,do “hang” là hằng nên sẽ bị lỗi 17
Hình 3-4 Chuyển dữ liệu bất kỳ sang String 17
Hình 3-5 Khai báo array và cách sử dụng 18
Hình 3-6 Khai báo array rỗng 18
Hình 3-7 Chuyển dữ liệu bất kỳ sang String 20
Hình 3-8 Chuyển dữ liệu bất kỳ sang String 20
Hình 3-7 Khai báo vòng lặp while 21
Hình 3-8 Khai báo vòng lặp for và câu điều kiện 21
Hình 3-9 Khai báo vòng lặp và câu điều kiện 22
Hình 3-10 Khai báo switch case 22
Hình 3-11 Khai báo hàm 23
Hình 3-12 Khai báo class 23
Hình 3-13 Khởi tạo class 24
Hình 3-14 Khai báo class , khời tạo có tham số 24
Hình 3-15 Mô hình MVC 25
Hình 3-16 Model – View – View Controller 26
Hình 3-17 Đối tượng thông dụng trong iOS 28
Hình 3-18 Thay đổi tập tin plist 30
Hình 3-19 Sửa bundle name hiển thị 31
Hình 3-20 Thêm dòng mới 31
Hình 3-21 Thay đổi background bằng image 32
Hình 3-22 Attributes inspector 33
Hình 3-23 Link Framework và libraries 34
Hình 3-24 Link Framework và libraries 34
Hình 3-25 Label 35
Hình 3-26 Thuộc tính Label 35
Hình 3-27 Button 36
Trang 12Hình 3-28 Thuộc tính Button 37
Hình 3-29 Text Field 37
Hình 3-30 Thuộc tính của Text Field 38
Hình 3-31 Add SQLite 39
Hình 3-32 Thêm Framework hỗ trợ sqlite 39
Hình 4-1 Hình minh họa hệ thống 41
Hình 5-1 Mô tả CDM hệ thống 46
Hình 5-2 Màn hình start 49
Hình 5-3 Màn hình đăng nhập 50
Hình 5-4 Màn hình đăng ký 50
Hình 5-5 Màn hình home 52
Hình 5-6 Màn hình slide menu 53
Hình 5-7 Màn hình sub menu 1 54
Hình 5-8 Màn hình sub menu 2 55
Hình 5-9 Màn hình sub categories từ màn hình home vào 56
Hình 5-10 Màn hình sub categories child từ màn hình sub categories vào 56
Hình 5-11 Popup Test Option 57
Hình 5-12 Popup random test 58
Hình 5-13 Màn hình danh sách bộ đề thi cho user 59
Hình 5-14 Màn hình xem danh sách đánh giá của người dùng ứng dụng 60
Hình 5-16 Màn hình kết quả với user đã đăng nhập , thi theo bộ đề 63
Hình 5-17 Màn hình social network 64
Hình 5-18 Màn hình request bộ đề 65
Hình 5-19 Màn hình History 66
Hình 5-20 Màn hình Setting 67
Hình 5-21 Màn hình Profile 1 68
Hình 5-22 Màn hình Profile 2 68
Hình 5-23 Màn hình mời bạn bè chơi 69
Hình 5-24 Tạo Session Download trên background 71
Hình 5-25 Delegate finish việc download với 1 task 71
Hình 5-26 Delegate tính số byte đã download 71
Hình 5-27 Delegate cuối cùng khi đã hoàn thành việc download 71
Hình 5-28 HTTP dạng get 73
Hình 5-29 HTTP dạng post 74
Hình 5-30 Get data từ jSon (rankingId , title) 75
Trang 14DANH SÁCH CÁC BẢNG
Bảng 5-1 Bảng danh sách chức năng của app 48
Bảng 5-1 Bảng mô tả giao diện màn hình start 49
Bảng 5-2 Bảng mô tả giao diện cho màn hình đăng nhập , đăng ký 51
Bảng 5-4 Bảng mô tả giao diện cho màn hình home 52
Bảng 5-5 Bảng mô tả giao diện cho màn hình home và slide menu 54
Bảng 5-6 Bảng mô tả giao diện màn hình danh sách bộ đề thi cho user 59
Bảng 5-7 Bảng mô tả giao diện cho màn hình chi tiết bộ đề 60
Bảng 5-8 Màn hình thi trắc nghiệm 61
Bảng 5-9 Bảng mô tả giao diện màn hình thi trắc nghiệm 62
Bảng 5-10 Bảng mô tả giao diện cho màn hình chi tiết bộ đề 63
Bảng 5-11 Bảng mô tả giao diện màn hình social network 64
Bảng 5-12 Bảng mô tả giao diện màn hình request bộ đề 65
Bảng 0-1 Bảng mô tả usecase Đăng nhập 81
Bảng 0-2Bảng mô tả usecase đăng xuất 83
Bảng 0-3 Bảng mô tả usecase Test bộ đề 84
Bảng 0-4 Bảng mô tả usecase Xem ứng dụng top new 85
Bảng 0-5 Bảng mô tả Use-case học theo categories 86
Bảng 0-6 Bảng mô tả Usecase request đề thi 87
Bảng 0-7 Bảng mô tả usecase Xem lịch sử 88
Bảng 0-8Bảng mô tả usecase Xem danh sách ứng dụng theo danh mục 89
Bảng 0-9 Bảng mô tả usecase Tìm kiếm 90
Bảng 0-10 Bảng mô tả usecase Xem ứng dụng yêu thích 91
Bảng 0-11 Bảng mô tả usecase Xóa ứng dụng yêu thích 92
Bảng 0-12 Bảng mô tả usecase Xem thông tin user 93
Trang 15KÝ HIỆU, VIẾT TẮT THUẬT NGỮ
Trang 16Chương 1 TỔNG QUAN ĐỀ TÀI
1.1 Lý do chọn đề tài
Trong cuộc sống chúng ta tiếng Anh là một ngôn ngữ rất quan trọng Khi ta làm việc bất cứ chuyên ngành nào cũng phải dùng tiếng anh Chúng ta cần tiếng Anh để có thể giao tiếp với khách hàng cũng như đọc tài liệu Do đó, em đã quyết định chọn đề tàiTìm hiểu ngôn ngữ Swift và xây dựng ứng dụng học, thi thử tiếng anh trên iOS để mọi người có thể dễ dàng hơn trong việc học Anh văn ở bất cứ nơi đâu chỉ với một chiếc smart phone Ngoài ra APP cũng cung cấp cho người dùng thi thử các bài thi mẫu của TOEIC, IELS mang lại lợi ích vô cùng to lớn cho việc học anh văn Ngoài ra, việc xây dựng ứng dụng có thể cung cấp các ứng dụng tiện ích cho cộng đồng và góp phần vào
sự phát triển của các thiết bị thông minh
1.2 Mục đích của đề tài
Mục đích của đề tài là tìm hiểu công nghệ Swift, xây dựng ứng dụng học và thi tiếng Anh để mọi người có thể cải thiện kỹ năng tiếng anh một cách hiệu quả Thao tác đơn giản trên APP
1.3 Đối tượng hướng đến trong đề tài
Đối tượng hướng đến trong đề tài là những người sử dụng các thiết bị iOS có nhu cầu học tiếng Anh, và thi thử các đề tiếng Anh mẫu
1.4 Phạm vi nghiên cứu
Phạm vi nghiên cứu của đề tài là tìm hiểu ngôn ngữ Swift cũng như các Kỹ thuật và Công nghệ lập trình trên thiết bị iOS, làm việc với hệ thống Client-Sever, các thao tác
Trang 17trên WebSever.
Trang 18Chương 2 KHẢO SÁT HIỆN TRẠNG
2.1 Hiện trạng thị phần sử dụng Smartphone nói chung
2.1.1 Tổng quan chung
Android và iOS chiếm 95,7% tổng số smartphone được giao trong Q4/2015, chiếm93,8% trong cả năm So với hồi quý 3/2015 thì thị phần của bộ đôi hệ điều hành diđộng này đã tăng trưởng 4,5% và tăng 6,1% so với một năm trước đó IDC trước đâycũng cho biết rằng tổng lượng smartphone được giao đã lần đầu tiên cán mốc 1 tỉ máytrong năm 2015
Hình 2-1 Biểu tượng của Apple và Android
78,1% iOS xếp hạng thứ hai với 51 triệu đơn vị được chuyển giao, tăng 6,7% so vớinăm trước đó và đang giữ thị phần 17,6% Theo sau là Windows Phone với 8,8 triệumáy được giao trong ba tháng cuối năm 2015, tăng 46,7% so với năm 2014 và có thịphần 3%
Trang 19Hình 2-2 Bảng số liệu thị phần Smartphone trên thế giới
Năm 2015, Windows Phone ghi nhận mức tăng trưởng mạnh nhất với 46,7% trong giai đoạn Q3 - Q4/2015 và tăng đến 90,9% so với cả năm 2014 Nokia dẫn đầu toàn thị trường này với thị phần 89,3% Trong khi đó, BlackBerry thì đứng hạng 4 với chỉ 1,7 triệu chiếc điện thoại được giao, giảm mạnh 77% so với một năm về trước và
có thị phần hết sức nhỏ bé: 0,6% Đây là OS di động duy nhất ghi nhận mức giảm thị phần, và BlackBerry 7 vẫn đang vượt trội hơn so với BlackBerry 10
Hình 2-3 Thiết kế của màn hình Window phone
Trang 20BlackBerry bị trượt mất vị trí thứ 3 (giảm từ 6,4% xuống còn 2,9%) Nhưng dù sao chúng ta vẫn có tin tốt lành đến từ dâu đen, khi các sản phẩm mới chạy nền tảng
OS 10 tiêu thụ hết 1 triệu chiếc smartphone trong đầu năm 2015.Tuy nhiên, phần lớn các thiết bị di động của BlackBerry bán ra trong quý đầu đều là các mô hình OS 7
Hình 2-4 Top 4 hệ điều hành dành cho di động
Nền tảng Linux chỉ chiếm 1% trên tổng số thị phần (giảm 2,1%), nhưng khả năng trong khoảng thời gian đến, các con số sẽ được cải thiến bởi loạt nền tảng mới được ra mắt như Tizen, Mozilla, SailFish và Ubuntu Cuối cùng, thị phần nền tảng già cỗi Symbian sụt giảm chỉ còn 0,6% Tuy vậy, IDC vẫn mong đợi các nền tảng sơ khai trước đây vẫn có thể tồn tại đến năm 2015
Số lượng trong quý I/2015
Tỉ lệ % trong quý
Tỉ lệ tăng trưởng sau
1 năm
Trang 21I/2016 I/2015 Samsun
Total 334.9(triệu,chiếc) 100.0% 334.4(triệu chiếc) 100.0% 0.2%
Bảng 0-1 Bảng số liệu máy giao trong năm 2016
2.1.2 Thị phần thiết bị sử dụng HĐH iOS
Hình 2-5 Thị phần các thiết bị iOS
Trang 22Theo số liệu thống kê được Apple công bố đầu 4/2016, có 87% người dùng đã nângcấp hệ điều hành iOS 9, iOS 8 chiếm 11% và chỉ 2% sử dụng phiên bản thấp hơniOS đang thể hiện ưu thế trong việc chống phân mảng so với hệ điều hành Android.Thống kê cho thấy, phần lớn người dùng đang sử dụng phiên bản Android 4.1 JellyBean trong khi đó, phiên bản mới nhất 4.4 KitKat chỉ đạt 5,3% Quan trọng hơn,Android KitKat được giới thiệu với khả năng tối ưu hóa cho các thiết bị cấu hình thấp,tuy nhiên hầu hết những máy cao cấp mới nhận được bản nâng cấp này
Hình 2-6 Thống kê thị phần Android
Số lượng thiết bị iOS tăng 73% trong tổng số thiết bị được kích hoạt quý bốn, tăng72% trong quý ba và 69% trong quý hai của năm 2015 Android có sự sụt giảm nhẹ khi
số lượng thiết bị kích hoạt giảm 1% trong quý cuối năm, chiếm 26% tổng số thiết bịkích hoạt
Trang 23Hình 2-7 Thống kê thị phần Máy tính Bảng
Trong các thiết bị iOS của Apple, iPhone vẫn là sản phẩm được lựa chọn nhiều nhấtchiếm 54% số máy kích hoạt, iPad chiếm 19% Tính riêng máy tính bảng dành chodoanh nghiệp, iPad áp đảo hoàn toàn khi chiếm tới 91, 4% lượng máy kích hoạt trongquý cuối năm 2015
2.2 Hiện trạng sử dụng các ứng dụng tiếng anh hiện nay
Hình 2-8 Biểu tượng của iOS
Trang 24[3] Hiện nay, hệ điều hành iOS đã và đang phát triển lớn mạnh, với tốc độ tăng trưởng thật ấn tượng, hàng loạt kho ứng dụng iOS “mọc lên như nấm” Tương tự tại Việt Nam, hệ điều hành iOS đã là nguồn cảm hứng để những người Việt quảng bá với thế giới về hình ảnh chợ ứng dụng iOS không chỉ đa dạng, mà còn mang "chất Việt".Theo Tổng cục Thống kê Việt Nam, tính đến 6 tháng đầu năm nay số thuê bao di động đang hoạt động tại Việt Nam đạt 120,7 triệu, một thị trường đầy tiềm năng phát triển cho các nền tảng di động Xu hướng sử dụng điện thoại thông minh (Smartphone), máytính bảng (tablet) đang nở rộ, giá sản phẩm cũng giảm nhiều tạo sức hút trên thị trường.Thiết bị di động dùng iOS đã tạo được bước đi khá vững chắc tại thị trường Việt Nam trong hai năm trở lại đây.
Tính đến cuối tháng 6-2015, chợ ứng dụng Appstore hiện có hơn 1.000.000 ứng dụng (app) Số lượng ứng dụng hay và chất lượng tại đây tăng nhanh mỗi ngày
Hình 2-9 Learning English
Với đặc thù hệ điều hành mã nguồn mở và tự do khám phá nên hệ điều hành
iOS(Swift) là điểm nhấn của nhiều bạn trẻ khi bước vào con đường lập trình viên di động Điều này đã đưa các lập trình viên và iOS lại gần nhau hơn Tuy vậy, với số lượng người tham gia lập trình, số ứng dụng tung ra quá lớn, khâu kiểm duyệt sản phẩm của Appstore lại "rất thoáng", khiến tỉ lệ các ứng dụng độc hại trên Appstore cao hơn nhiều so với Google Play (kho ứng dụng dành cho hệ điều hành Android)
Trang 25Theo khảo sát cơ bản, hiện có nhiều website chia sẻ thông tin và ứng dụng iOS tại Việt Nam nhưng chất lượng của các nội dung chia sẻ vẫn còn là dấu hỏi, theo dạng "có bị gìthì ráng mà chịu" Nhiều chuyên gia bảo mật lên tiếng cảnh báo những nơi chia sẻ không chính thức ngoài Appstore hay các chợ ứng dụng uy tín có thể là nơi tội phạm mạng lợi dụng phát tán các ứng dụng độc hại, ứng dụng quảng cáo giả mạo đánh lừa người dùng Do đó, cần hết sức cảnh giác khi cài đặt các ứng dụng từ nguồn lạ, đáng nghi hay không có nhiều đánh giá cao từ cộng đồng sử dụng.
Vấn đề tác quyền cũng là một trong những điều rất đáng lo ngại khi bước vào một sân chơi mang tầm quốc tế Thống kê sơ bộ của Nhịp Sống Số cho thấy khá nhiều ứng dụng Việt thuộc lĩnh vực đọc sách/ truyện được phát triển bởi các nhóm hay công ty với số lượng tải rất lớn trên Appstore vẫn "làm ngơ" với bản quyền nội dung mà họ tích hợp vào sản phẩm Cụ thể, các ứng dụng mang nội dung văn học đã tùy tiện tích hợp toàn bộ nội dung tiểu thuyết, sách điện tử (ebook) đang hút khách trên thị
trường mà không thông qua bản quyền với các nhà xuất bản Nhiều người dùng còn bị đánh lừa khi một số ứng dụng cố tình lập lờ tên gọi hay logo trùng lặp với các đơn vị
uy tín nhằm thu hút lượt khách tải về
Trang 26Chương 3 GIỚI THIỆU NGÔN NGỮ SWIFT
3.1 Giới thiệu chung
Hình 3-5 Biểu tượng của Swift
Swift là một ngôn ngữ lập trình hướng đối tượng của Apple dành cho việc phát triểniOS và OS X, được giới thiệu bởi Apple tại hội nghị WWDC 2014.Swift được mongđợi sẽ tồn tại song song cùng Objective-C, ngôn ngữ lập trình hiện tại dành cho các hệđiều hành của Apple.Swift được thiết kế là một ngôn ngữ có khả năng phòng chống lỗicao Nó được biên dịch với trình biên dịch LLVM
- Được xem như một phần của Xcode 6.x IDE (hiện đang được Apple phát hànhdưới Xcode 7 dạng beta), Swift cũng là một ngôn ngữ cho giao diện lập trìnhCocoa và Cocoa Touch cho hệ điều hành OS X cho máy tính và iOS cho diđộng.
- Swift là một ngôn ngữ lập trình hoàn toàn mới có thể giúp quá trình phát triểnứng dụng trở nên dễ dàng hơn, nhanh hơn và ổn định hơn, tất cả nhằm tạo ranhững sản phẩm ứng dụng cho người dùng cuối tốt hết mức có thể
Trang 273.1.1 Đặc điểm
3.1.1.1 Cấu trúc ngôn ngữ bậc cao: đơn giản, chính xác
Các ngôn ngữ dạng script như Python rất dễ viết và test (kiểm thử), song chúng khôngmạnh mẽ và cũng không đủ nhanh để thực hiện các tác vụ phức tạp của ứng dụng Nóicách khác, Python không thực sự phù hợp để viết các game nặng, vốn có yêu cầu phảitận dụng tối đa sức mạnh của thiết bị Các ngôn ngữ lập trình truyền thống (ví dụ nhưObjective-C) mang tới hiệu năng khi chạy trên iPhone/iPad, cho phép tạo ra các ứngdụng phức tạp như iMovie hoặc Call of Duty Song, việc sử dụng Objective-C thường
đi kèm với một lượng lớn thời gian compile và test ứng dụng Việc học cách viếtObjective-C cũng là một quá trình dài, có thể gây khó khăn với các lập trình viên ítkinh nghiệm
Nếu thực hiện được tất cả các lời hứa của Apple, Swift sẽ mang tất cả các điểm mạnhcủa cả 2 loại ngôn ngữ script và compile truyền thống Trong một số thử nghiệmbenchmark, Swift cho hiệu năng nhanh hơn Python và thậm chí là nhanh hơn cảObjective-C Trên bộ IDE (phần mềm lập trình) Xcode của Apple, mã nguồn Swift sẽđược đồ thị hóa dựa trên tính năng playground theo thời gian thực Điều này có nghĩarằng lập trình viên có thể chạy và test mã nguồn Swift một cách dễ dàng không kém gìPython cả
3.1.1.2 Những lợi ích của Swift
Hình 3-6 Biểu tượng của Swift
Trang 28- Khả năng phát triển ứng dụng di động và kiểm tra thành quả của mình theo thờigian thực sẽ giúp cho quá trình code của các lập trình viên trở nên nhanh và dễdàng hơn rất nhiều Ngoài ra, việc không phải chạy chương trình compiler vàcác chương trình test quá thường xuyên cũng sẽ tiết kiệm được sức mạnh phầncứng cho nhà phát triển Thay vì tập trung kiểm tra, thử nghiệm các tính năngnhỏ lẻ, lập trình viên Swift có thể dành nhiều thời gian để thực hiện các bài test
ở mức độ tích hợp cao hơn một cách kỹ càng hơn
- Lợi ích thứ 2 của Swift là các dòng code rất ngắn và dễ đọc Trong bài trình bàycủa Apple, 3 dòng code Objective C có thể gói gọn vào 1 dòng code Swift Điềunày sẽ đẩy nhanh quá trình phát triển ứng dụng và tăng hiệu quả cho quá trìnhbảo trì/vá lỗi trong tương lai
- Việc lập trình với Swift cũng trực quan hơn nhờ phương thức sắp xếp hợp lý ởgiao diện sử dụng và kiểu hiển thị kết quả theo thời gian thực trong X CodeRuntime Tức trong lúc viết mã, kết quả sẽ ngay lập tức hiện ra để tiện việcchỉnh sửa và hình ảnh cũng có thể xem ngay từ bên trong IDE Ngoài ra, XCode cũng sẽ dựng các kịch bản thực hiện trong các ứng dụng, tính năng nàygiúp lập trình viên có thể quản lý ứng dụng khỏi bị sự cố tràn bộ nhớ
- Cuối cùng và có lẽ là quan trọng nhất, nếu Swift tạo ra các ứng dụng có sức épphần cứng thấp hơn Objective-C, chúng ta sẽ được tận hưởng trải nghiệm game
ấn tượng hơn trên các thiết bị iOS Khi kết hợp Swift cùng nền tảng Metal mớicủa Apple, ngay cả vi xử lý A7 cũ kỹ cũng có thể mang tới những trải nghiệm
đồ họa ấn tượng nhất
3.1.1.3 Điểm yếu của Swift
- Điểm yếu lớn nhất của Swift sẽ là tuổi đời quá trẻ của ngôn ngữ lập trình này
Trang 29- Các nhà phát triển sẽ phải học lại một ngôn ngữ lập trình hoàn toàn mới
- Các nhà phát triển ứng dụng iOS sẽ mất một khoảng thời gian đáng kể để làmchủ ngôn ngữ mới của Apple
- Giảm tốc độ phát triển của hệ sinh thái ứng dụng Apple
- Một mối lo ngại khác có thể kể đến là các ứng dụng rác Do Swift sẽ giúp quátrình phát triển ứng dụng trở nên dễ dàng hơn trước đây rất nhiều, số lượng ứngdụng chất lượng kém xuất hiện trên gian hàng App Store có thể sẽ ra tăng Song,đây cũng không hẳn là một mối lo ngại thực sự cho Apple và người dùng củaQuả táo Trải qua giai đoạn chuyển tiếp này, Swift sẽ giúp mang các ứng dụngiOS và Mac lên một tầm cao mới
3.2 Một số cú pháp cơ bản trong Swift
3.2.1 Quy tắc đặt tên
- Ngôn ngữ swift 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ó ký tự đặc biệt ngoài dấu _
- Tên biến không được đăt trùng với từ khoá ngôn ngữ (func, int , if , static)
3.2.2 Kiểu dữ liệu trong Swift
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ớiloại dữ liệu mà chúng ta cần lưu trữ Swift hỗ trợ các kiểu dữ liệu cơ bản như sau:
Trang 30- Int, String, Float, Bool, Array, Dictionary, Binary, Octal, Hexadecimal
3.2.4 Từ khoá thông dụng trong Swift
- Class: Khai báo class
- Func: Khai báo hàm
- Protocol: Khai báo 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ể hiện được khai báo
- Public: Không giới hạn phạm vi truy xuất
- Selector: Trả về một selector đã được biên dịch mà được định nghĩa thông qua tên phương thức
3.2.5 Khai báo biến trong Swift
Hình 3-0 Khai báo biến không cần gán thuộc tính
Trang 31Hình 3-7 Khai báo biến gán thuộc tính,do “hang” là hằng nên sẽ bị lỗi
- Bạn có thể sử dụng bất kỳ ký tự nào bạn thích để đặt tên cho biến và hằng, baogồm cả những ký tự Unicode
- Phần kiểu dữ liệu [type] trong câu lệnh khai báo biến, hằng có thể có hoặckhông, nếu bạn không khai báo kiểu dữ liệu thì swift sẽ tự động xác định kiểu
dự liệu cho biết đó tại thời điểm biên dịch chương trình
- Giá trị không tự đổng chuyển sang 1 kiểu dữ liệu khác Nếu bạn bạn muốnchuyển đổi kiểu dữ liệu của 1 giá trị nào đó thì bản phải viết chính sát thể hiệncủa kiểu dữ liệu đó
3.2.6 Chuyển kiểu dữ liệu
Hình 3-8 Chuyển dữ liệu bất kỳ sang String
- Có 1 cách đơn giản hơn để chuyển đổi kiểu dữ liệu sáng String đó là viết giá trịcủa biết đó và trong dấu "\()"
Trang 323.2.7 Array, Dictionary
Hình 3-9 Khai báo array và cách sử dụng
- Tạo mảng array và dictionary bằng cách sử dụng dấu ngoặc vuông , việc truy cập từng phần tử của nó ta chỉ cần ghi vị trí và key vào dấu ngoặc vuông
- Để tạo mảng rỗng ta dung cú pháp:
Hình 3-10 Khai báo array rỗng
Các hàm xử lý thao tác mảng cơ bản :
- Append (Thêm một phần tử vào mảng)
- count (Đếm số phần tử trong mảng)
- first (Lấy phần tử đầu tiên trong mảng)
- last (Lấy phần tử cuối cung trong mảng)
- removeAll (Xoá tất cả phần tử trong mảng)
- removeAtIndex (Xoá phần tử tại vị trí index)
- ……
Các hàm xử lý thao tác Dictionary cơ bản:
- updateValue (cập nhật giá trị theo key)
- removeValue (xoá value đó ra khỏi dictionary)
Trang 33- key (Lấy mảng key của dictionary)
- value (Lấy mảng value của dictionary)
3.2.8 Chuỗi
Cách khai báo: var s: String = “Hello World”
Các hàm xử lý chuỗi với String:
- Lengh : độ dài của chuỗi (s)
- Character[index] ( Lấy vị trí từng chữ cái)
- ComponentsSeparatedByString(Cắt chuỗi thành mảng)
- SubstringFromIndex ( Cắt chuỗi từ vị trí index đến cuối)
- SubstringtoIndex (Cắt chuỗi từ vị trí index đến đầu)
- rangeOfString: Tìm xem có chuỗi nào tồn tại trong chuỗi cho trước không
- stringByReplacingOccurrencesOfString: thay thế ký tự thành 1 ký tự cho trước
- compare : so sánh 2 chuỗi
3.2.9 Kiểm tra kiểu dữ liệu
Những phương thức dưới đây sẽ kiểm tra kiểu:
- isKindOfClass: đối tượng là hậu duệ hoặc thể hiện class ấy
- is: Kiểm tra có phải đối tương lớp đó k
- performSelector: gọi chính sách selector trên đối tượng
Trang 34Hình 3-11 Chuyển dữ liệu bất kỳ sang String
3.2.10 Ép kiểu dữ liệu
Hình 3-12 Chuyển dữ liệu bất kỳ sang String
3.2.11 Khai báo vòng lặp,câu điều kiện
- Sử dụng if à switch dùng cho câu điều kiện, và sử dụng for-in, for, while và repeat-while để làm vòng lặp
Trang 35Hình 3-13 Khai báo vòng lặp while
- Trong câu điều kiện phải bắt buộc biểu thức dạng Boolean, nghĩa là trong if luôn luôn giá trị true hoặc false (vd: if index {} sẽ là lỗi vì không có so sánh)
Hình 3-14 Khai báo vòng lặp for và câu điều kiện
- Có thể sử dụng if và let cùng nhau để tránh giá trị nil
- Một giá trị optional (giá trị có dấu chấm hỏi) là một giá trị có thể chứa giá trị và
có thể không có giá trị (nil) Việc ghi dấu ? sau kiểu dữ liệu được xem làoptional
Trang 36Hình 3-15 Khai báo vòng lặp và câu điều kiện
- Switch – case hỗ trợ bất kỳ kiểu dữ liệu nào và mở rộng việc so sánh giá trị,nó không giới hạn kiểu int và so sánh bằng
Hình 3-16 Khai báo switch case
Trang 373.2.12 Hàm và Class , Object
- Sử dụng “func” để khai báo hàm Gọi hàm theo tên mình đã đặt với các tham số truyền vào Sử dụng “->” + kiểu dữ liệu để xác định kiểu trả về
Hình 3-17 Khai báo hàm
- Tạo class với tên class đứng sau “class” được bao trong {}.những giá trị được khai báo trong class cũng tương tự như trên,hàm cũng vậy
Hình 3-18 Khai báo class
Trang 38Hình 3-19 Khởi tạo class
Việc khởi tạo 1 class cũng tương tự như 1 hàm Tên class + giá trị truyền vào Gọithuộc tính, hàm bằng dấu chấm quen thuộc như mọi ngôn ngữ khác
Hình 3-20 Khai báo class , khời tạo có tham số
từ khóa thì mặc định là required
Protocol được sử dụng trong các trường hợp:
o Khai báo các method dự kiến sẽ được thực thi
o Khai báo một interface cho một object trong khi ẩn đi class của nó
Trang 39o Khảo sát tương đồng giữa các class mà không liên quan đến cấu trúc thứbậc
3.3 Mô hình MVC (Model – View – View Controller)
Hình 3-21 Mô hình MVC
MVC là một kiến trúc phần mềm, hay còn được coi là kiến trúc mô hình được sử dụngtrong kỹ thuật phần mềm Mô hình này phân biệt những phạm vị logic (logic chonhững ứng dụng cho user) từ giao diện người dùng, cho phép phát triển độc lập, kiểmchứng và bảo trì mỗi phần
Model-View-Controller là design pattern quan trọng nhất
Model-View-Controller là một design pattern ứng dụng trong quá trình phát triển cácứng dụng iOS mà theo đó các đối tượng được tạo ra sẽ gán cho một trong ba nhóm vaitrò sau: model, view hoặc controller
Trang 40Hình 3-22 Model – View – View Controller
MVC là trung tâm của một thiết kế tốt cho một ứng dụng Những lợi ích của việc ápdụng mô hình này là rất nhiều Trong ứng dụng, có nhiều đối tượng có xu hướng có thểtái sử dụng lại và giao diện Các ứng dụng xây dựng theo thiết kế MVC cũng dễ dàng
mở rộng hơn so với các ứng dụng khác Hơn thế nữa rất nhiều công nghệ và kiến trúccủa ứng dụng đều dựa trên mô hình MVC
MVC kiểm soát luồng như sau:
- Controller xử lý các sự kiện đầu vào từ các giao diện người dùng, và chuyển đổicác sự kiện vào một hành động sử dụng thích hợp, có thể hiểu đây là Model
- Model quản lý hành vi và dữ liệu của miền ứng dụng, đáp ứng yêu cầu thông tinvề trạng thái (thường là từ View), và đáp ứng các hướng dẫn để thay đổi trạngthái (thường là từ View Controller) Trong hệ thống điều khiển sự kiện, Modelthông báo cho các bộ quan sát (thường là các View) khi thông tin thay đổi họ cóthể phản ứng
- View làm cho Model thành một hình thức thích hợp cho tương tác, thường làmột phần tử giao diện người dùng Nhiều View có thể tồn tại một Model duynhất cho những mục đích khác nhau Một khung nhìn thường có một sự tươngứng 1-1 với một bề mặt hiển thị và biết cách làm thế nào để diễn tả cho nó