Tài liệu Lập trình Kotlin toàn tập - Trần Duy Thanh
Kotlin và Java là song kiếm hợp bích, để học tốt Kotlin thì theo Tui các bạn nên học tốt Java trước. Hai ngôn ngữ này sẽ tương hỗ cho nhau trong quá trình viết mã lệnh. Google đã công Kotlin trở thành ngôn ngữ chính thống cho việc triển khai các dự án Android, do đó tương lai nó có tiềm năng rất lớn.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Tài liệu Lập trình Kotlin toàn tập - Trần Duy Thanh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Tài liệu Lập trình Kotlin toàn tập - Trần Duy Thanh
1 | P a g e Tài liệu Lập trình Kotlin toàn tập Thông tin tác giả: Trần Duy Thanh (Profile https://duythanhcse.wordpress.com/contact/ ) Blog chia sẻ kiến thức: Website khóa học trực tuyến: https://communityuni.com/ Phone: 0987773061 Email: duythanhcse@gmail.com TPHCM-2017 2 | P a g e Mục Lục Lời giới thiệu ................................................................................................................................. 4 Bài 1: Có nên học Kotlin? ........................................................................................................... 5 Bài 2-Cài đặt công cụ lập trình Kotlin ..................................................................................... 10 Bài 3-Tạo ứng dụng Kotlin đầu tiên......................................................................................... 20 Bài 4-Cách xuất dữ liệu ra màn hình Kotlin ........................................................................... 27 Bài 5 – Các cách ghi chú quan trọng khi lập trình Kotlin ..................................................... 29 Bài 6-Kiểu dữ liệu và cách khai báo biến trong Kotlin ......................................................... 32 Bài 7 – Ép kiểu dữ liệu trong Kotlin ........................................................................................ 35 Bài 8 – Các toán tử quan trọng trong Kotlin ........................................................................... 38 Bài 9- Nhập dữ liệu từ bàn phím với Kotlin ........................................................................... 47 Bài 10- Cấu trúc điều khiển if else trong Kotlin..................................................................... 51 Bài 11-Biểu thức when trong Kotlin ........................................................................................ 56 Bài 12-Vòng lặp for trong Kotlin ............................................................................................. 62 Bài 13-Vòng lặp while trong Kotlin......................................................................................... 69 Bài 14-Vòng lặp do while trong Kotlin ................................................................................... 73 Bài 15-Xử lý biệt lệ trong Kotlin.............................................................................................. 78 Bài 16-Cách gỡ lỗi Kotlin bằng công cụ Debug..................................................................... 82 Bài 17-Các thư viện quan trọng thường dùng trong Kotlin .................................................. 89 Bài 18- Xử lý chuỗi trong Kotlin.............................................................................................. 98 Bài 19- Xử lý mảng một chiều trong Kotlin .........................................................................106 Bài 20- Xử lý mảng hai chiều trong Kotlin ...........................................................................111 Bài 21-Collections trong Kotlin..............................................................................................115 Bài 22-Lập trình hướng đối tượng trong Kotlin – phần 1 ...................................................121 Bài 23-Lập trình hướng đối tượng trong Kotlin – phần 2 ...................................................129 Bài 24-Lập trình hướng đối tượng trong Kotlin – phần 3 ...................................................139 Bài 25-Lập trình hướng đối tượng trong Kotlin – phần 4 ...................................................146 Bài 26-Lập trình hướng đối tượng trong Kotlin – phần 5 ...................................................150 Bài 27-Alias và cơ chế gom rác tự động trong Kotlin-OOP phần 6 ..................................157 Bài 28-Extensions Method trong Kotlin-OOP phần 7 .........................................................162 Bài 29-Xử lý Text File trong Kotlin.......................................................................................167 3 | P a g e Bài 30-Xử lý Serialize File trong Kotlin ...............................................................................172 Bài 31-Xử lý XML File trong Kotlin .....................................................................................176 Bài 32-Xử lý JSon trong Kotlin – Bài 1 ................................................................................182 Bài 33-Xử lý JSon trong Kotlin – Bài 2 ................................................................................190 Bài 34-Đọc JSon tỉ giá hối đoái của Ngân Hàng Đông Á trong Kotlin – Bài 3 ...............196 Bài 35-Thiết kế giao diện trong Kotlin – phần 1 ..................................................................202 Bài 36-Thiết kế giao diện trong Kotlin – phần 2 ..................................................................208 Bài 37-Thiết kế giao diện trong Kotlin – phần 3 ..................................................................214 Bài 38-Thiết kế giao diện trong Kotlin – phần 4 ..................................................................224 Bài 39-Thiết kế giao diện trong Kotlin – phần 5 ..................................................................255 Bài 40-Kết xuất Executable cho Kotlin [Kết thúc khóa học Kotlin] .................................263 Tài liệu tham khảo ....................................................................................................................271 4 | P a g e Lời giới thiệu Theo nhiều lời đề nghị của mọi người, Tui soạn thảo lại các bài lập trình Kotlin trên Blog https://duythanhcse.wordpress.com/kotlin/kotlin-co-ban-den-nang-cao/ thành Ebook để giúp các bạn dễ học tại máy. Kotlin và Java là song kiếm hợp bích, để học tốt Kotlin thì theo Tui các bạn nên học tốt Java trước. Hai ngôn ngữ này sẽ tương hỗ cho nhau trong quá trình viết mã lệnh. Google đã công Kotlin trở thành ngôn ngữ chính thống cho việc triển khai các dự án Android, do đó tương ... e public void actionPerformed(ActionEvent e) { fileFactory=new JSonFileFactory(); if(fileChooser.showOpenDialog(null)==JFileChooser.APPROVE_OPTION ) { sanPhamPanel.database=fileFactory.DocFile(fileChooser.getSelecte dFile().getAbsolutePath()); sanPhamPanel.showDataOnJTable(); } } }); mnuSystemSaveJSonFile.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //xử lý lưu TextFile ở đây fileFactory=new JSonFileFactory(); if(fileChooser.showSaveDialog(null)==JFileChooser.APPROVE_OPTION ) { boolean kq=fileFactory.LuuFile(sanPhamPanel.database,fileChooser.getSele ctedFile().getAbsolutePath()); if(kq==true) 252 | P a g e { JOptionPane.showMessageDialog(null,"Lưu Json File thành công"); } else { JOptionPane.showMessageDialog(null,"Lưu JSon File thất bại"); } } } }); } public void createMenu() { mnuBar=new JMenuBar(); setJMenuBar(mnuBar); mnuSystem=new JMenu("Hệ thống"); mnuBar.add(mnuSystem); mnuSystemSave=new JMenu("Lưu file"); mnuSystem.add(mnuSystemSave); mnuSystemSaveTextFile=new JMenuItem("Text file"); mnuSystemSave.add(mnuSystemSaveTextFile); mnuSystemSave.addSeparator(); mnuSystemSaveSerializeFile=new JMenuItem("Serialize file"); mnuSystemSave.add(mnuSystemSaveSerializeFile); mnuSystemSave.addSeparator(); mnuSystemSaveXMLFile=new JMenuItem("XML file"); mnuSystemSave.add(mnuSystemSaveXMLFile); mnuSystemSave.addSeparator(); mnuSystemSaveJSonFile=new JMenuItem("JSON file"); mnuSystemSave.add(mnuSystemSaveJSonFile); mnuSystem.addSeparator(); mnuSystemOpen=new JMenu("Đọc File"); mnuSystem.add(mnuSystemOpen); mnuSystemOpenTextFile=new JMenuItem("Text file"); mnuSystemOpen.add(mnuSystemOpenTextFile); mnuSystemOpen.addSeparator(); mnuSystemOpenSerializeFile=new JMenuItem("Serialize file"); mnuSystemOpen.add(mnuSystemOpenSerializeFile); mnuSystemOpen.addSeparator(); 253 | P a g e mnuSystemOpenXMLFile=new JMenuItem("XML file"); mnuSystemOpen.add(mnuSystemOpenXMLFile); mnuSystemOpen.addSeparator(); mnuSystemOpenJSonFile=new JMenuItem("JSON file"); mnuSystemOpen.add(mnuSystemOpenJSonFile); mnuSystem.addSeparator(); mnuSystemExit=new JMenuItem("Thoát"); mnuSystem.add(mnuSystemExit); } private void createICon() { mnuSystem.setIcon(new ImageIcon("hinh/system.png")); mnuSystemSave.setIcon(new ImageIcon("hinh/save.png")); mnuSystemSaveTextFile.setIcon(new ImageIcon("hinh/textfile.png")); mnuSystemSaveSerializeFile.setIcon(new ImageIcon("hinh/serializefile.png")); mnuSystemSaveXMLFile.setIcon(new ImageIcon("hinh/xmlfile.png")); mnuSystemSaveJSonFile.setIcon(new ImageIcon("hinh/jsonfile.png")); mnuSystemOpen.setIcon(new ImageIcon("hinh/open.png")); mnuSystemOpenTextFile.setIcon(new ImageIcon("hinh/textfile.png")); mnuSystemOpenSerializeFile.setIcon(new ImageIcon("hinh/serializefile.png")); mnuSystemOpenXMLFile.setIcon(new ImageIcon("hinh/xmlfile.png")); mnuSystemOpenJSonFile.setIcon(new ImageIcon("hinh/jsonfile.png")); mnuSystemExit.setIcon(new ImageIcon("hinh/exit.png")); } public void showWindow() { setSize(500,500); setLocationRelativeTo(null); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setVisible(true); } } So sánh định dạng dữ liệu kết quả 4 loại: 254 | P a g e Như vậy Tui đã hướng dẫn xong toàn bộ phần mềm quản lý sản phẩm theo HƯỚNG ĐỐI TƯỢNG, thao tác với các control cơ bản và nâng của trong Kotlin. Kết xuất dữ liệu ra 4 loại tập tin, dễ dàng triệu gọi coding giữa Kotlin vs Java rất hay. Bài Sau Tui sẽ làm minh họa về JTree trong Kotlin, các bạn chú ý theo dõi nhé. Các bạn có thể tải source code bài này ở đây: Hẹn gặp các bạn ở những bài tiếp theo Chúc các bạn thành công! Trần Duy Thanh ( 255 | P a g e Bài 39-Thiết kế giao diện trong Kotlin – phần 5 Chúc mừng các bạn đã vượt qua 4 cửa ải GUI trong Kotlin, đây là cửa ải cuối cùng Tui muốn các bạn vượt qua. Phần này Tui sẽ nói về JTree, một trong những Control phổ biến được dùng rất nhiều trong các dự án để hiển thị dữ liệu dạng phân cấp cây thư mục: Bài học này các bạn sẽ biết cách tạo 1 JTree, đưa được DefaultMutableTreeNode vào JTree. Đặc biệt sử dụng lập trình Hướng Đối Tượng để đưa dữ liệu lên Cây cối này, cũng như biết cách xử lý sự kiện khi người dùng nhấn vào từng Node trên Cây. Bạn tạo một Project có cấu trúc như sau: 256 | P a g e Lớp Nhân Viên (NhanVien) có cấu trúc (Mã, tên): package communityuni.com.model /** * Created by cafe on 04/06/2017. */ class NhanVien { var Ma:Int=0 var Ten:String="" constructor() constructor(Ma: Int, Ten: String) { this.Ma = Ma this.Ten = Ten } override fun toString(): String { return Ten } } Lớp Phòng Ban (PhongBan) có cấu trúc (mã, tên, danh sách nhân viên): package communityuni.com.model /** * Created by cafe on 04/06/2017. */ class PhongBan { var Ma:Int=0 var Ten:String="" var NhanViens:MutableList<NhanVien> = mutableListOf() constructor() constructor(Ma: Int, Ten: String) { this.Ma = Ma this.Ten = Ten } override fun toString(): String { return Ten } } Tiếp theo thiết kế màn hình NhanSuPanel.form như hình dưới: 257 | P a g e Chỉnh pnMain có layout manager là BorderLayout, kéo JScrollPane vào phần Center => sau đó kéo JTree vào bên trong JScrollPane. Nhớ chọn JTree rồi checked Custom Create để nó ra hàm createUIComponents() Sau đó Chỉnh sửa source code của NhanSuPanel, giả lập một số dữ liệu: package communityuni.com.ui; import communityuni.com.model.NhanVien; import communityuni.com.model.PhongBan; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; import java.util.ArrayList; import java.util.List; /** * Created by cafe on 04/06/2017. */ public class NhanSuPanel { private JPanel pnMain; private JTree treePhongBan; DefaultMutableTreeNode root; List<PhongBan>database=null; private void loadSampleDatabaseToGUI() { 258 | P a g e root=new DefaultMutableTreeNode(""); treePhongBan=new JTree(root); for (int i=0;i<database.size();i++) { PhongBan pb=database.get(i); DefaultMutableTreeNode pbNode=new DefaultMutableTreeNode(pb); root.add(pbNode); for (int j=0;j<pb.getNhanViens().size();j++) { NhanVien nv=pb.getNhanViens().get(j); DefaultMutableTreeNode nvNode=new DefaultMutableTreeNode(nv); pbNode.add(nvNode); } } } private void createSampleDatabase() { database=new ArrayList<>(); PhongBan pns=new PhongBan(1,"Phòng tổ chức hành chánh"); PhongBan phc=new PhongBan(2,"Phòng Kế hoạch tài chính"); PhongBan pkhcn=new PhongBan(3,"Phòng Khách hàng cá nhân"); PhongBan pkhdn=new PhongBan(4,"Phòng Khách hàng doanh nghiệp"); database.add(pns);database.add(phc);database.add(pkhcn);database .add(pkhdn); pns.getNhanViens().add(new NhanVien(1,"Trần Thị Giải")); pns.getNhanViens().add(new NhanVien(2,"Nguyễn Thị Thoát")); pns.getNhanViens().add(new NhanVien(3,"Hồ Văn Hạnh")); pns.getNhanViens().add(new NhanVien(4,"Đinh Thị Phúc")); phc.getNhanViens().add(new NhanVien(5,"Trần Văn Yên")); phc.getNhanViens().add(new NhanVien(6,"Hoàng thị Giấc")); phc.getNhanViens().add(new NhanVien(7,"Nguyễn Ngọc Ngàn")); phc.getNhanViens().add(new NhanVien(8,"Ma Văn Thu")); } public JPanel getPnMain() { return pnMain; 259 | P a g e } private void createUIComponents() { createSampleDatabase(); loadSampleDatabaseToGUI(); } } Chạy chương trình lên ta sẽ có giao diện như Tui cung cấp ở trên. Bây giờ để gán sự kiện cho JTree ta bấm chuột phải vào JTree rồi chọn Create Listener: Sau đó chọn TreeSelectionListener: 260 | P a g e Chọn valueChanged trong màn hình Select Methods to Implement: Nhấn OK ta thấy sự kiện xuất hiện: public NhanSuPanel() { treePhongBan.addTreeSelectionListener(new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { } }); } 261 | P a g e Bổ sung coding để kiểm tra Node nào được nhấn: public NhanSuPanel() { treePhongBan.addTreeSelectionListener(new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { DefaultMutableTreeNode node= (DefaultMutableTreeNode) treePhongBan.getLastSelectedPathComponent(); switch (node.getLevel()) { case 0: JOptionPane.showMessageDialog(null,"Bạn nhấn Root="+node.getUserObject()); break; case 1: PhongBan pb= (PhongBan) node.getUserObject(); JOptionPane.showMessageDialog(null,pb.getTen()); break; case 2: NhanVien nv= (NhanVien) node.getUserObject(); JOptionPane.showMessageDialog(null,nv.getTen()); break; } } }); } Như vậy ta dùng treePhongBan.getLastSelectedPathComponent(); để biết được Node nào được chọn, dùng node.getLevel() để lấy chính xác cấp (thực ra là lấy đối tượng), ứng với mỗi level ta sẽ kiểm tra để lấy Đối tượng. 262 | P a g e Như vậy Tui đã hướng dẫn xong cách dùng JTree trong Kotlin. các bạn nhớ kế hợp nó với JTable để hiển thị chi tiết dữ liệu. Các bạn có thể tải source code bài này ở đây: Hẹn gặp các bạn ở cuối cùng, bài 40 của khóa học Kotlin này. Chúc các bạn thành công! Trần Duy Thanh ( 263 | P a g e Bài 40-Kết xuất Executable cho Kotlin [Kết thúc khóa học Kotlin] Chào các bạn! Chúng ta Say Goodbye ngôn ngữ lập trình Kotlin ở đây nhé, Tui phải Busy cho nhiều tasks khác. Toàn bộ các bài giảng về Kotlin Tui đã tổng hợp trong link https://duythanhcse.wordpress.com/kotlin/kotlin-co-ban-den-nang-cao/ các bạn vào đây học nhé. Ráng học cho tốt vì sắp tới Android Studio 3.0 ra đời nó sẽ đính kém lập trình Kotlin For Android, Tui gọi tắt là KfA. Nếu bạn học tới bài 40 này tức là đã đi trước nhiều người một số bước rồi. Theo Tui tham khảo từ nhiều nguồn, thì trong tương lai sẽ bùng nổ các dự án liên quan tới Machine Learning (Máy học). Có nhiều ngôn ngữ để lập trình cho Machine Learning chẳng hạn như Python, R, Matlab Nhiều Đại Học lớn trên thế giới hiện nay đã dùng ngôn ngữ lập trình Python vào giảng dạy kỹ thuật lập trình thay thế cho C++ và Java Trước đó Tui có viết được một số bài về Python https://duythanhcse.wordpress.com/python/ nhưng do Busy quá phải tạm Pause, Nếu các bạn còn trẻ, khỏe, nhanh nhẹn(xấu trai cũng được) thì hãy tiếp tục nghiên cứu Python, R để về sau có nhiều cơ hội tham gia các dự án Machine Learning. OK OK OK Giờ Tui kết thúc khóa học Kotlin với bài hướng dẫn cách Kết xuất Kotlin ra Jar file để người sử dụng có thể bấm 1 phát là chạy luôn mà không cần mở công cụ lập trình. IntelliZ IDEA cung cấp sẵn cho chúng ta Tool để làm điều này, vô cùng đơn giản đến mức chúng ta không thể nghĩ ra được. Cách làm chi tiết như sau: 1)Bước 1: Chọn 1 Project nào đó, trong hướng dẫn này Tui chọn bài Quản Lý Sản Phẩm tại link https://duythanhcse.wordpress.com/2017/06/04/bai-38-thiet-ke-giao-dien- trong-kotlin-phan-4/ Tui hướng dẫn thêm 1 cách tạo class có chứa hàm main để chạy: -Cách Cũ chúng ta đang làm (tập tin AppTestSanPhamUI.kt): 264 | P a g e package communityuni.com.test import communityuni.com.ui.SanPhamUI /** * Created by cafe on 04/06/2017. */ fun main(args: Array) { var gui:SanPhamUI= SanPhamUI("Trần Duy Thanh- Chương trình quản lý Sản phẩm") gui.showWindow() } -Cách mới Ta có thể tạo thành một lớp theo cấu trúc dùng companion object và notation @JvmStatic: package communityuni.com.test import communityuni.com.ui.SanPhamUI /** * Created by cafe on 06/06/2017. */ class SanPhamApp { companion object { @JvmStatic fun main(args: Array) { var gui: SanPhamUI = SanPhamUI("Trần Duy Thanh- Chương trình quản lý Sản phẩm") gui.showWindow() } } } Vì sao lại phải biết thêm cách mới này để chạy hàm main? Bạn cứ làm nhiều đi rồi sẽ biết (thiên cơ bất khả lộ) 2)Bước 2: Vào File/ chọn Project Structure: 265 | P a g e 3)Bước 3: Chọn artifacts/ bấm vào dấu + màu xanh / chọn JAR/ chọn From Modules with dependencies Lúc này màn hình yêu cầu chọn Main Class xuất hiện: 266 | P a g e Ta bấm vào nút chọn Main Class: ở trên bạn chọn cái nào cũng được (2 cách tạo hàm main mà Tui trình bày ở trên) rồi nhấn nút OK Bấm OK tiếp: 267 | P a g e Mục 1 là tên jar được tạo ra, mục 2 là nơi lưu trữ Jar này. Ta chọn OK để quay lại màn hình chính Tiến hành chạy lại phần mềm ta thấy nó tạo ra thư mục artifacts trong out folder: Vào bên trong artifacts có thư mục lưu file jar đó là HocGUIPhan4_jar: Vào bên trong thư mục này ta thấy file jar: 268 | P a g e Bạn double click để chạy nó lên: Bạn thấy nó mất tiêu mấy cái hình rồi đúng không? vì Project này Tui hướng dẫn trước đó có hình ảnh, các hình ảnh được lưu trong thư mục hinh, bây giờ bạn chỉ cần sao chép thư mục đó vào ngay chỗ file jar này là OK: Bây giờ chạy lại file jar ta có kết quả: 269 | P a g e Hình ảnh đã được hiển thị lên===> Ngon như cơm mẹ nấu đúng không các bạn Giờ thử vào Menu Hệ thống/ chọn mở File bất kỳ xem nó hiển thị được không nhé: 270 | P a g e Như vậy là đã tải file thành công. Bạn đã hoàn thành các bước để tạo file Jar trong Intellij IDEA. Các bạn cố gắng học tốt các ngôn ngữ lập trình nhé, hãy tự đào tạo mình để có nhiều kiến thức về công nghệ. Tạo ra nhiều cơ hội trong tương lai để tìm tới những Công ty có cơ hội làm việc tốt hơn, lương bổng ổn định hơn. Để học lập trình tốt các bạn phải chịu khó cày, học ngày học đêm và bắt buộc phải Practice thật nhiều. Chúc các bạn thành công Trần Duy Thanh ( 271 | P a g e Tài liệu tham khảo 1. 2. Kotlin in Action 3. Fundamental Kotlin 4. Programming Kotlin 5. Kotlin for Android Developers 6. Modern Web Development with Kotlin ---HẾT---
File đính kèm:
- tai_lieu_lap_trinh_kotlin_toan_tap_tran_duy_thanh.pdf