lab01 – java cơ bản - ptuddd.weebly.com · 3.2 problem 2: kế thừa Ứng dụng highschool...

12
Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 JAVA CƠ BẢN Ths. Lương Trần Hy Hiến, KHOA CNTT TRƯỜNG ĐH SƯ PHẠM TP. HCM 1 MỤC LỤC 1 Java cơ bản .......................................................................................................................... 2 1.1 Kiu dliu ................................................................................................................. 2 1.2 Khai báo biến ............................................................................................................... 3 1.3 Hàm & Mng ............................................................................................................... 4 1.3.1 Hàm ...................................................................................................................... 4 1.3.2 Mảng động - ArrayList ......................................................................................... 4 2 Hướng đối tượng ................................................................................................................. 5 2.1 To mi class ............................................................................................................... 6 2.2 Getters và setters .......................................................................................................... 7 2.3 Inheritance Kế tha................................................................................................... 7 3 Bài tp ................................................................................................................................. 8 3.1 Problem 1: Bài tp vAuthor và Book........................................................................ 8 3.2 Problem 2: Kế tha .................................................................................................... 10 3.3 Problem 3: Đa hình .................................................................................................... 12 4 Luyn tp .......................................................................................................................... 12

Upload: others

Post on 10-Oct-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 1

MỤC LỤC 1 Java cơ bản .......................................................................................................................... 2

1.1 Kiểu dữ liệu ................................................................................................................. 2

1.2 Khai báo biến ............................................................................................................... 3

1.3 Hàm & Mảng ............................................................................................................... 4

1.3.1 Hàm ...................................................................................................................... 4

1.3.2 Mảng động - ArrayList ......................................................................................... 4

2 Hướng đối tượng ................................................................................................................. 5

2.1 Tạo mới class ............................................................................................................... 6

2.2 Getters và setters .......................................................................................................... 7

2.3 Inheritance – Kế thừa ................................................................................................... 7

3 Bài tập ................................................................................................................................. 8

3.1 Problem 1: Bài tập về Author và Book ........................................................................ 8

3.2 Problem 2: Kế thừa .................................................................................................... 10

3.3 Problem 3: Đa hình .................................................................................................... 12

4 Luyện tập .......................................................................................................................... 12

Page 2: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 2

1 Java cơ bản

Xem thêm các tài liệu về Lập trình Java cơ bản trên mạng.

https://www3.ntu.edu.sg/home/ehchua/programming/java/J2_Basics.html.

1.1 Kiểu dữ liệu

Java supports eight different primitive data types:

1. byte: The byte data type is an 8-bit signed integer.

2. short: The short data type is a 16-bit signed integer.

3. int: The int data type is a 32-bit signed integer. It has a maximum value of

2,147,483,647.

4. long: The long data type is a 64-bit signed integer.

5. float: The float data type is a single-precision 32-bit floating point.

6. double: The double data type is a double-precision 64-bit floating point.

7. boolean: The boolean data type has only two possible values: true and false.

8. char: The char data type is a single 16-bit Unicode character.

Page 3: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 3

1.2 Khai báo biến

Page 4: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 4

1.3 Hàm & Mảng

1.3.1 Hàm

1.3.2 Mảng động - ArrayList

Thư viện: import java.util.ArrayList;

/*Tạo mảng*/ ArrayList<String> obj = new ArrayList<String>(); /*Thêm phần tử*/ obj.add("Ajeet"); obj.add("Harry"); obj.add("Chaitanya"); obj.add("Steve"); obj.add("Anuj"); /* In mảng */ System.out.println("Danh sach hien tai : " + obj); /*Thêm phần tử vào vị trí*/ obj.add(0, "Rahul"); obj.add(1, "Justin"); /*Xóa phần tử*/ obj.remove("Chaitanya"); obj.remove("Harry"); System.out.println("Danh sach hien tai : " + obj); /*Xóa phần tử dựa vào vị trí*/ obj.remove(1);

Page 5: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 5

// Duyệt mảng for ( String s : obj ){

System.out.println( s ); }

Các hàm khác:

set(int index, Object o): update phần tử

int indexOf(Object o): trả về vị trí

Object get(int index): lấy phần tử tại vị trí

int size(): lấy số phần tử

boolean contains(Object o): kiểm tra phần tử có hay không?

clear(): xóa mảng

2 Hướng đối tượng

Page 6: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 6

2.1 Tạo mới class

Code Java:

public class Vehicle {

public Vehicle() {

// TODO Auto-generated constructor stub

}

int speed = 0;

int gear = 1;

void changeGear(int newGear) {

gear = newGear;

}

void speedUp(int increment) {

speed = speed + increment;

}

void printStates() {

System.out.println(" speed:" + speed + " gear:" + gear);

}

}

Page 7: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 7

2.2 Getters và setters

Để truy cập các Field, cần phải định nghĩa các phương thức get() và set(). Để phát sinh getter

và setter trong Eclipse, chuột phải chỗ trống trong class chọn Source Generate Getters

and Setters…

2.3 Inheritance – Kế thừa

Tạo 2 lớp Truck và Car kế thừa lớp Vehicle.

Page 8: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 8

3 Bài tập

3.1 Problem 1: Bài tập về Author và Book

Tạo class Author được mô tả như sau:

Page 9: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 9

Trong đó

Các thuộc tính private: name (String), email (String), và gender ( ‘m’ hoặc ‘f’);

Một hàm constructor để khởi tạo name, email và gender với giá trị cho sẵn;

Getters and setters: getName(), getEmail() và getGender(). Không có setters cho

name và gender vì nó không thay đổi giá trị sau khi khởi tạo.

Định nghĩa class Author. Sau đó viết lớp test đặt tênTestAuthor để test hàm tạo của Author

và gọi các phương thức public của lớp Author (bao gồm cả phương thức toString()).

Author anAuthor = new Author(“Tan Ah Teck”, “[email protected]”, ‘m’);

Tạo mới lớp Book với thông tin mô tả như sau:

Bao gồm:

Bốn thuộc tính provate: name (String), author (kiểu Author vừa tạo ở), price

(double), và qtyInStock (int). Giả sử mỗi cuốn sách được viết bởi 1 tác giả duy

nhất.

Một hàm tạo để khởi tạo thông tin đối tượng.

Page 10: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 10

Các Getters và setters: getName(), getAuthor(), getPrice(), setPrice(),

getQtyInStock(), setQtyInStock().

Định nghĩa lớp TestBook để test các trường hợp. Ví dụ:

Author anAuthor = new Author(……);

Book aBook = new Book(“Java for dummy”, anAuthor, 19.95, 1000);

Book anotherBook = new Book(“more Java for dummy”, new Author(……), 29.95, 888);

Hãy:

1. In thông tin cuốn sách gồm name, price và qtyInStock.

2. In thông tin tác giả của cuốn sách trên Author (name, email & gender).

3.2 Problem 2: Kế thừa

Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa,

hãy tạo 2 lớp mới Teacher và CollegeStudent (như hình dưới). Teacher giống như Person

nhưng có thêm các thuộc tính như salary (the amount the teacher earns) và subject (e.g.

“Computer Science”, “Chemistry”, “English”, “Other”). Lớp CollegeStudent kế thừa từ lớp

Student và thêm các thuộc tính year (current level in college) và major (e.g. “Electrical

Engineering”, “Communications”, “Undeclared”).

Một số code gợi ý:

class Person {

protected String myName ; // name of the person

protected int myAge; // person’s age

protected String myGender; // “M” for male, “F” for female

public Person(String name, int age, String gender) {

myName = name; myAge = age ; myGender = gender; }

public String toString() {

return myName + “, age: ” + myAge + “, gender: ” +myGender;

}

}

Page 11: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 11

class Student extends Person {

protected String myIdNum; // Student Id Number

protected double myGPA; // grade point average

public Student(String name, int age, String gender, String idNum, double gpa) {

// use the super class’ constructor

super(name, age, gender);

// initialize what’s new to Student

myIdNum = idNum;

myGPA = gpa;

}

}

Yêu cầu:

1. Thêm các phương thức “set” và “get” tương ứng các field của lớp Person, bao gồm:

getName, getAge, getGender, setName, setAge, và setGender.

2. Thêm các phương thức “set” và “get” tương ứng các field của lớp Student class, bao

gồm: getIdNum, getGPA, setIdNum, và setGPA.

3. Viết lớp Teacher kế thừa từ lớp Person.

a. Thêm field subject (e.g. “Computer Science”, “Chemistry”,, “English”, “Other”) kiểu

String và field salary (the teachers annual salary) kiểu double.

b. Viết hàm tạo 5 tham số cho lớp Teacher bao gồm myName, myAge,

myGender, subject, và salary.

c. Viết phương thức “setter” và “getter” cho các field vừa tạo. Ví dụ: getSubject,

getSalary, setSubject, và setSalary.

d. Viết phương thức toString() cho lớp Teacher.

4. Viết lớp con CollegeStudent kế thừa từ lớp Student.

a. Thêm field major (e.g. “Electrical Engineering”, “Communications”, “Undeclared”)

kiểu String và field year (e.g. FROSH = 1, SOPH = 2, …) kiểu int.

b. Viết hàm tạo cho lớp CollegeStudent gồm 7 tham số myName, myAge,

myGender, myIdNum, myGPA, year, và major.

c. Viết phương thức “setter” và “getter” cho các field vừa tạo. Ví dụ: getYear, getMajor,

setYear, và setMajor.

d. Viết phương thức toString() cho lớp Teacher.

5. Viết lớp test chứa hàm main() để demo các lớp đã viết (Person, Student, Teacher, and

CollegeStudent) và gọi phương thức toString() tương ứng:

Person bob = new Person(“Coach Bob”, 27, “M”);

System.out.println(bob);

Student lynne = new Student(“Lynne Brooke”, 16, “F”, “HS95129″, 3.5);

System.out.println(lynne);

Teacher mrJava = new Teacher(“Duke Java”, 34, “M”, “Computer Science”, 50000);

System.out.println(mrJava);

CollegeStudent ima = new CollegeStudent(“Ima Frosh”, 18, “F”, “UCB123″, 4.0, 1,

“English”);

System.out.println(ima);

Page 12: LAB01 – Java cơ bản - ptuddd.weebly.com · 3.2 Problem 2: Kế thừa Ứng dụng HighSchool gồm 2 class: lớp cha Person và lớp con Student. Áp dụng kế thừa, hãy

Ver 2015, FIT - HCMUP Lập trình Di động : LAB01 – JAVA CƠ BẢN

Ths. Lương Trần Hy Hiến, KHOA CNTT – TRƯỜNG ĐH SƯ PHẠM TP. HCM 12

3.3 Problem 3: Đa hình

Xây dựng các lớp Shape (hình), Circle (hình tròn) và Triangle (tam giác) như mô tả của phân cấp thừa

kế sau:

Shape là lớp trừu tượng (abstract) mô tả một hình 2D gồm một trường name (tên hình) và 2 phương

thức abstract là getArea() để lấy diện tích và getPrimeter() để lấy chu vi của hình. Lớp này chứa một

hàm tạo (constructor) để nhận vào tên hình. Trường name và hàm tạo chỉ cho phép kế thừa nên cần được

khai báo với từ khóa protected.

Các lớp con Circle và Triangle override các phương thức getArea(), getPrimeter() và printInfo() để thực

hiện công việc phù hợp với một hình cụ thể. Chú ý sử dụng từ khóa super để gọi hàm tạo và phân biệt

phương thức của lớp cha.

Viết chương trình nhập vào mảng 5 hình từ bàn phím và xuất thông tin đã nhập ra màn hình.

4 Luyện tập

https://www3.ntu.edu.sg/home/ehchua/programming/java/J3f_OOPExercises.html

----Kết thúc Lab----