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

