lab01 – java cơ bản - ptuddd.weebly.com · 3.2 problem 2: kế thừa Ứng dụng highschool...
TRANSCRIPT
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
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.
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
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);
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
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);
}
}
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.
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:
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.
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;
}
}
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);
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----