1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng Lập trình di động

528 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nhập môn
Tác giả Trương Xuân Nam
Người hướng dẫn Trương Xuân Nam, Giảng viên
Trường học Khoa Công Nghệ Thông Tin
Chuyên ngành Lập trình di động
Thể loại Bài giảng
Định dạng
Số trang 528
Dung lượng 11,71 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

LẬP TRÌNH DI ĐỘNG Bài 1 Nhập Môn Nội dung 1 Giới thiệu môn học 2 Công cụ học tập 3 Giới thiêu về ngôn ngữ java  Ngôn ngữ lập trình Java  Lập trình hướng đối tượng  Công cụ phát triển Java  Các loạ[.]

Trang 1

LẬP TRÌNH DI ĐỘNG

Bài 1: Nhập Môn

Trang 2

 Lập trình hướng đối tượng

 Công cụ phát triển Java

 Các loại chương trình Java

 “Hello, World!” – phiên bản Java

 Quá trình thực thi ứng dụng Java

Trang 3

Giới thiệu môn học

Phần 1

Trang 5

Tài liệu học tập

 Raymond Gallardo, Scott Hommel, Sowmya Kannan,

Joni Gordon, Sharon Biocca Zakhour The Java

Tutorial: A Short Course on the Basics, 6th edition

Online version: https://docs.oracle.com/javase/tutorial/

 Dave MacLean, Satya Komatineni, Grant Allen Pro

Android 5 Apress, 2015

 Online: bài giảng, tài liệu đọc thêm, điểm số, thông báo,… sẽ được đưa lên website http://txnam.net,

mục BÀI GIẢNG

Trang 6

Kiến thức yêu cầu / nên biết

Trang 8

Học môn này có lợi gì?

 Có kiến thức về lập trình cho thiết bị di động

 Có hiểu biết sâu sắc hơn về hoạt động của các thiết

bị di động và phần mềm trên các thiết bị đó, khai thác tốt hơn các thiết bị đó

thiết bị di động

Trang 9

Nội dung môn học (1/2)

 Cơ bản về ngôn ngữ lập trình Java

Trang 10

Nội dung môn học (2/2)

 Intent, Notification và Menu

 Lưu trữ, SQLite và content provider

Trang 11

Công cụ học tập

Phần 2

Trang 12

Công cụ học tập

 Miễn phí, mạnh mẽ, tương thích tốt

 Dùng được cho cả 2 phần nội dung lập trình (java và

android) trong môn học

 Netbeans (dùng cho lập trình java)

 Android Studio (dùng cho lập trình android)

 Tất cả các công cụ trên đều cần bộ phát triển ứng dụng java: JDK (java development kit)

 Đề xuất sử dụng phiên bản 8

Trang 13

Giới thiệu về ngôn ngữ java

Phần 3

Trang 14

Ngôn ngữ lập trình Java

 Được phát triển liên tục:

Trang 15

Ngôn ngữ lập trình Java

phức tạp: Đơn giản, dễ học và dễ dùng hơn

Trang 16

Lập trình hướng đối tượng

 Tiếng Anh: Object-Oriented Programming (OOP)

phần mềm thành các module tương tác với nhau

class), mô phỏng tương tự các đối tượng thực ngoài đời

Trang 17

Lập trình hướng đối tượng

 Data abstraction (sự trừu tượng hóa dữ liệu)

 Data encapsulation (sự đóng gói dữ liệu)

 Inheritance (sự kế thừa)

 Polymorphism (sự đa hình)

 Khả năng tái sử dụng cao

 Giảm chi phí phát triển và bảo trì sản phẩm

 Gần gũi giữa lập trình và bài toán thực tế

Trang 18

Lập trình hướng đối tượng

Trang 19

Công cụ phát triển Java (1/3)

 Thường thì mỗi phiên bản lớn của JDK ứng với một

phiên bản của ngôn ngữ Java Ví dụ: JDK 1.7 ứng với phiên bản Java 7

 JDK là bộ công cụ bắt buộc phải có đối với việc phát

triển ứng dụng Java

 JDK bao gồm:

• Máy ảo Java (JVM)

• Các thư viện lập trình

• Một số công cụ cơ bản cho nhà phát triển

 JRE (Java Runtime Environment): Để chạy Java Apps

Trang 20

Công cụ phát triển Java (2/3)

Trang 21

Công cụ phát triển Java (3/3)

triển, thực thi, gỡ lỗi, bảo trì,… các ứng dụng Java

Trang 22

Các loại chương trình Java

 Command line application: ứng dụng đơn giản nhất, chạy trực tiếp từ dòng lệnh

 GUI application: ứng dụng dùng giao diện đồ họa tương tác người sử dụng

 Applet: ứng dụng java nhúng trong các trang web, tương tác như một thành phần của trang

 Servlet: ứng dụng phía server, chạy trên các web

server, xử lý các yêu cầu người dùng web

 Add-on app (plug-in app): các thành phần mở rộng chức năng của những phần mềm có hỗ trợ java

Trang 23

“Hello, World!” – phiên bản Java

 Viết bằng bất kì trình soạn thảo nào

Trang 24

Quá trình thực thi ứng dụng Java

 Bước 1: Mã Java được dịch thành mã trung gian

(mã bytecode) Mã này được xây dựng bởi SUN,

độc lập với mã máy Các đoạn mã được lưu trong các file “.class”

 Bước 2: Máy ảo Java nạp các file “.class” và kiểm tra tính toàn vẹn của các file này Thực hiện một số bước chuẩn bị như khởi tạo bộ nhớ, nạp các thư

viện mặc định

 Bước 3: Máy ảo Java đọc và thực hiện từng lệnh

một trong mã bytecode cho đến khi kết thúc ứng

dụng

Trang 25

LẬP TRÌNH DI ĐỘNG

Bài 2: Cơ Bản Về Ngôn Ngữ Java

Trang 26

Nội dung

Trang 27

Cấu trúc chương trình java đơn giản

Phần 1

Trang 28

Nhập a, b từ bàn phím và tính a b

import java.io.*;

public class vidu {

public static void main ( String [] args) {

Console console = System console();

if ( console == null) System exit(0);

System out print("Nhap so A: ");

int a = Integer parseInt( console readLine());

System out print("Nhap so B: ");

int b = Integer parseInt( console readLine());

System out println("a^b = " + Math pow(a, b));

}

}

Trang 29

Vào ra dữ liệu trong ứng dụng

console

Phần 2

Trang 31

Nhập dữ liệu từ bàn phím

Scanner scanner = new Scanner(System.in);

System.out.print("Enter your name: ");

String name = scanner.nextLine();

BufferedReader reader = new BufferedReader(

new InputStreamReader(System.in) );

System.out.print("Enter your name: ");

String name = reader.readLine();

Trang 32

Kiểu dữ liệu

Phần 3

Trang 33

Kiểu dữ liệu

 Kiểu dữ liệu trong java chia làm 2 loại:

 Kiểu Primitive (cơ sở)

 Kiểu Reference (tham chiếu)

 Ngoài ra còn một loại đặc biệt: immutable (là kiểu tham chiếu nhưng hoạt động như kiểu cơ sở), ví dụ như kiểu chuỗi (String)

 Số nguyên: byte, short, int (*), long

 Số thực: float, double (*)

 Kí tự: char (16-bit unicode)

 Logic: boolean (false/true)

Trang 34

 Kiểu nhỏ hơn có thể chuyển về kiểu lớn hơn

 Trường hợp ngược lại cần ép kiểu tường minh

int abc = 100;

long xyz = abc;

abc = ( int ) xyz

Trang 36

Phần 4

Trang 37

 Biến: ô nhớ được đặt tên để dễ dàng thao tác trong các phép toán, biểu thức, câu lệnh,…

 Quy tắc đặt tên trong java:

 Phân biệt chữ hoa và chữ thường (case-sensitive)

 Bao gồm các chữ cái, chữ số, dấu $ và dấu _

 Chữ số không được đứng đầu tên

 Không được trùng với từ khóa hoặc từ dành riêng

 Đặt tên có nghĩa, gợi nhớ

 Không quá dài

Trang 38

 Từ khóa của java, tên package: luôn viết chữ thường

 Tên biến và hàm: Viết hoa các chữ đầu của từ, trừ từ đầu tiên

 Tên class và interface: Viết hoa các chữ đầu của từ

 Tên hằng số: Viết hoa hoàn toàn

Trang 39

 Biến có thể khai báo hoặc khai báo và khởi trị luôn cho nó

khởi trị trước khi sử dụng, nếu không sẽ gây lỗi

biên dịch

tự động gán giá trị mặc định (bằng dãy các bit 0)

 Ví dụ:

float PI = 3.14f; // khai báo + khởi trị double pi; // khai báo

pi = PI; // gán giá trị

Trang 40

 Mảng: dãy các biến có cùng kiểu dữ liệu, cùng tên

và phân biệt bởi chỉ số

Trang 41

Phép toán

Phần 5

Trang 42

Phép toán

 5 phép cơ bản: cộng (+), trừ (-), nhân (*), chia (/), chia lấy dư (%)

 Thứ tự ưu tiên như trong toán học

 Phép % chỉ thực hiện với kiểu nguyên

 Phép / trả về thương nếu cả hai phía đều nguyên

 Phép tăng (++) và giảm ( ) chỉ làm việc với kiểu nguyên (chú ý kết quả trả về)

Trang 43

 Phép hai ngôi đoản-mạch: Và (&&), Hoặc (||)

 Phép hai ngôi toàn-mạch: Và (&), Hoặc (|)

Trang 44

Phép toán

 Phép kiểm tra kiểu: x instanceof y - trả về đúng

(true) nếu biến x có kiểu y

 Phép toán bit: coi các số như là dãy bit và thao tác theo từng bit

 Phép môt ngôi: phép Đảo (~) - đảo giá trị của các bit

 Phép hai ngôi: phép Và (&), phép Hoăc (|), phép hoặc nghịch đảo (^)

Trang 45

Phép toán

 Dịch bit: dịch trái (<<), dịch phải (>>), dịch phải

dương (>>>)

(điều kiện) ? giá trị A : giá trị B

a = a + b a += b;

Trang 46

Câu lệnh lựa chọn

Phần 6

Trang 48

default: monthString = "Invalid month"; }

 Chú ý: từ Java 7, switch có thể sử dụng với kiểu dữ liệu String

Trang 49

Phần 7

Trang 51

for (initialization; termination; increment) {

statement(s) }

for (int i: number) {

statement(s) }

Trang 52

Điều khiển lặp

kỳ mới

chấm dứt vòng lặp)

và continue có thể có tham số vị trị nhảy đến (tương

tự goto – không nên sử dụng)

Trang 53

Thử và ngoại lệ

Phần 8

Trang 54

Thử và Ngoại lệ

 Java cung cấp cơ chế cho phép lập trình viên kiểm soát các đoạn mã có thể sinh lỗi, cơ chế này khá thông dụng trong nhiều ngôn ngữ lập trình hiện đại

Trang 55

Thử và Ngoại lệ

 Cần theo đúng thứ tự try-catch-finally

 Có thể không có hoặc có nhiều khối catch

 Có thể không có khối finally

 Khối finally luôn được thực thi

 Lập trình viên có thể sinh lỗi bằng câu lệnh

throw X; // X là một biến chứa lỗi, bị bắt bởi catch

 Lạm dụng khối TCF có thể làm chậm ứng dụng một cách không cần thiết

Trang 56

Thử và Ngoại lệ

 Kết nối CSDL

 Kết nối mạng

 Làm việc với file, vào/ra/chuyển đổi dữ liệu

 Không có phân biệt rõ ràng, tùy vào lập trình viên

 TCF: lỗi không mong muốn, có thể khắc phục và tiếp tục công việc

 Lỗi: công việc không thể tiếp tục thực hiện bình thường, cần hủy bỏ

Trang 57

LẬP TRÌNH DI ĐỘNG

Bài 3: Java OOP & Collections

Trang 58

 Giao diện (interface)

 Kiểm soát truy cập

Trang 59

Java OOP

Phần 1

Trang 60

Lớp (class)

ngôn ngữ lập trình hướng đối tượng

hợp với bài toán thực tế

 Trong java, tất cả các class đều kế thừa từ class Object hoặc con cháu của Object

 Java cung cấp thư viện rất lớn các class có sẵn

 Lập trình viên: sử dụng, thay đổi, kết hợp các class

đó để phù hợp với mục đích của mình

Trang 61

Lớp (class)

 Ví dụ: cần làm việc với kiểu dữ liệu phân số

 Tử số lưu ở biến a

 Mẫu số lưu ở biến b

 Viết các hàm toán học làm việc với a và b

 Tạo một kiểu dữ liệu mới: PhanSo , bên trong có 2 thành phần tử số và mẫu số

 Viết các hàm đính kèm với kiểu PhanSo để thực hiện các phép toán

Trang 62

Lớp (class)

// khai báo

class PhanSo {

int tuso, mauso;

public PhanSo() { tuso = 0; mauso = 1; }

public PhanSo ( int tu, int mau) {

tuso = tu; mauso = mau;

}

}

// sử dụng

PhanSo x = new PhanSo (); // phân số x = 0/1

PhanSo y = new PhanSo (1, 3); // phân số y = 1/3

Trang 63

Đối tượng (object)

 Ví dụ: class PhanSo => biến x có kiểu PhanSo => x

là một đối tượng

1 Khai báo (chưa dùng được)

2 Khai sinh (cấp phát bộ nhớ + constructor)

3 Sử dụng

4 Khai tử (destructor + thu hồi bộ nhớ đã cấp)

hiện việc hủy đối tượng và thu hồi bộ nhớ (bước 4)

Trang 64

Đối tượng (object)

// định nghĩa lớp PhanSo

class PhanSo {

}

// sử dụng các object có kiểu PhanSo

PhanSo x, y; // khai báo

x = new PhanSo(1, 3); // khai sinh

Trang 65

 Nếu có thì phải đặt ở đầu file

 Tên gói quy ước như tên biến trong java

 Sau khi dịch thành file class, các file này phải được đặt trong thư mục khớp với tên của gói, nếu không sẽ không nạp được

Trang 66

Gói (package)

mới có thể sử dụng ngoài package đó

 Giải quyết vấn đề có quá nhiều class trong ứng dụng

 Nhóm các class thuộc cùng một mục đích, giúp việc

nghiên cứu/sử dụng/bảo trì mã tốt hơn

 Giải quyết việc trùng tên của class

 Tăng hiệu suất làm việc của máy ảo Java

Trang 67

Các thành phần trong class

 Biến

 Biến của class

 Biến của object

Trang 68

Sự kế thừa

tất cả những đặc điểm của kiểu dữ liệu cũ và thêm một số đặc điểm mới

class MyApp extends MyDefaultApp {

}

class kế thừa từ class Object (lớp gốc của mọi class trong java)

Trang 69

Sự kế thừa

“phù hợp với tình hình mới”

MyDefaultApp x = new MyApp();

tương hợp với biến, không phụ thuộc vào kiểu biến (polymorphism)

 super

 this

Trang 70

Giao diện (interface)

 Mô tả các đặc trưng mà đối tượng sẽ có

 Các hàm bên trong không có phần thân và luôn là public

 Một class có thể kế thừa nhiều interface thông qua từ khóa

implements

 Một interface có thể kế thừa nhiều interface khác thông qua

từ khóa extends

Trang 71

Giao diện (interface)

dữ liệu mới

 Một class kế thừa interface thì phải viết lại

(override) tất cả các hàm bên trong nó hoặc phải

khai báo là abstract

không thể khởi tạo biến đó

 Có thể sử dụng kĩ thuật anonymous class để viết lại trực tiếp một interface

Trang 72

Kiểm soát truy cập

 Java có 4 kiểu kiểm soát truy cập:

con cháu

nếu cùng package

 private (riêng tư): chỉ có thể truy cập bởi chính class

đảm bảo tính logic của chương trình không bị phá

vỡ một cách vô ý

Trang 73

Java Collections

Phần 2

Trang 74

 Kiểu dữ liệu cơ bản, dùng thường xuyên nhất

 Là kiểu reference : chú ý khi làm tham số của hàm

 Đặc biệt chú ý việc khởi tạo trước khi dùng

// Tạo mảng 100 String, sau đó phải khởi tạo String String[] a = new String [100];

// Tạo mảng 2 chiều 20 dòng 30 cột

int[][] b = new int [20][30];

// Tạo mảng 2 chiều 20 dòng, sau đó phải khởi tạo // từng cột, mỗi cột có thể có kích thước riêng

int[][] c = new int [20][];

for (int i = 0; i < c.length; i++)

c[i] = new int [10];

Trang 75

mỗi phần tử là một mảng N-1 chiều

 Phải khởi tạo các phần tử khi sử dụng

 Không ràng buộc kích thước các phần tử phải như nhau

static tiện ích khi làm việc với mảng

 Hàm sort : sắp xếp các phần tử của mảng

 Hàm equals : so sánh hai mảng

 Hàm binarySearch : tìm kiếm nhị phân trong mảng

 Hàm fill : điền giá trị vào mảng

 Chú ý: Arrays chỉ làm việc với mảng object

Trang 76

 String có thể được tạo ra từ:

Trang 79

đối tượng khác (ví dụ như mảng)

có tính chất tương tự:

 Danh sách sinh viên

 Danh bạ điện thoại

 Kết quả thi đại học

 Tập hợp các hình trong một trò chơi

 Danh sách các bộ phim cần xem

Trang 80

Iterator itr = myList.iterator();

while(itr.hasNext())

System.out.println(itr.next());

Trang 81

số (tức là tương tự như mảng):

 elementAt(index)

bằng ArrayList

Trang 82

 Lưu trữ các cặp <khóa> - <giá trị>

 Các <khóa> không được trùng nhau

 Có nhiều kĩ thuật để giải quyết bài toán trên,

Trang 84

tuy nhiên không tự động đồng bộ (như vậy chạy

nhanh hơn khi không bị truy cập bởi nhiều thread)

 HashMap<key,value> chứa các cặp key-value

tương ứng (giống như từ điển), trong đó các key

không được trùng nhau

thông qua giá trị các key với tốc độ nhanh

Trang 85

 Hàm clear(): Xóa nội dung HashMap

 Hàm containsKey(key): Trả về true nếu chứa key

 Hàm containsKey(value): Trả về true nếu chứa ít nhất 1 value

 Hàm get(key): Trả về value ứng với key

 Hàm put(key, value): Chèn cặp (key, value) vào

HashMap

 Hàm size(): Trả về số cặp trong HashMap

 Hàm remove(key): Xóa cặp (key,value) khỏi HashMap

 Hàm keySet(): Trả về tập các key

Trang 86

LẬP TRÌNH DI ĐỘNG

Bài 4: Bắt Đầu Lập Trình Cho Android OS

Trang 88

Thiết bị di động vs thiết bị cố

định

Phần 1

Trang 89

Di động vs Cố định

Thiết bị di động (với ý nghĩa là giao tiếp không

dây) đã xuất hiện từ rất lâu

Tăng trưởng về số lượng khi xuất hiện thiết bị dành cho cá nhân (nhỏ, gọn, nhiều khách hàng)

Bùng nổ khi giá thiết bị giảm (nhiều khách hàng có khả năng mua)

Xu hướng: thiết bị di động dần thay thế cho thiết bị

cố định do việc mua để thay thế thiết bị cũ

Xuất hiện những chức năng mới, dịch vụ mới và

cuối cùng là những loại thiết bị mới

Trang 90

Chức năng mới

Giao tiếp kiểu chạm-vuốt (bàn phím hạn chế)

Tích hợp chụp ảnh, máy chơi nhạc, máy điện thoại

và thêm nhiều thiết bị nữa trong tương lai

Tích hợp các cảm biến, thiết bị có khả năng tương tác tốt hơn do “nhận ra” môi trường xung quanh

Ghi nhận được độ nghiêng của thiết bị

Ghi nhận được gia tốc và hướng di chuyển của thiết bị Ghi nhận được âm thanh, nhiệt độ, ánh sáng xung quanh

Nhiều giao tiếp không dây: bluetooth, wifi, nfc,…Tích năng các dịch vụ online (GPS, OTT,…)

Trang 92

Loại thiết bị mới

Trang 93

Thị trường ứng dụng cho di

động

Phần 2

Trang 94

Bối cảnh

Sự phát triển của các thiết bị di động thông minh

Nhu cầu giải trí qua thiết bị di động tăng cao

Các tương tác kiểu mới xuất hiện

Sự phát triển của kênh phân phối

Sự phát triển của kênh thanh toán

Trang 95

Cơ hội cho lập trình viên

Thị trường ứng dụng cho di động tăng trưởng nóng

Chuyển đổi các ứng dụng đã có lên di động

Chuyển đổi các ứng dụng di động sang loại thiết bị mới Phát triển những ứng dụng mới hoàn toàn, khai thác khả năng đặc biệt của di động

Nhu cầu nhân lực viết phần mềm cho di động cao

Tăng trưởng về lương cho người làm di động

Đỡ nhàm chán vì xuất hiện những công nghệ mới

Cơ hội thực hiện các ý tưởng mới

Tự viết và bán ứng dụng: không còn quá khó như trước

Trang 96

(2012) Firefox OS (2013) Ubuntu Touch (2013) Sailfish OS (2013) Tizen

Trang 97

Thị phần các nền tảng toàn cầu

Trang 98

Thị phần các nền tảng toàn cầu

Nền tảng android thống trị về số lượng

Nền tảng iOS giảm nhưng chậm

Không có nhiều cơ hội cho các tay chơi khác ngoại trừ xuất hiện một loại thiết bị có tính đột phá (như iPhone trước kia)

Trang 99

Thị phần các nền tảng tại Mỹ

Trang 100

Thu nhập trên mỗi app/month

Trang 101

So sánh 3 chợ ứng dụng

Ngày đăng: 02/10/2023, 13:39

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w