Em có 3 bài tập Java lập trình hướng đối tượng, mong mọi người giúp đỡ, em rất cám ơn!
Bài 1: Hãy thiết kế sơ đồ lớp và coding cho bài toán tính định thức cấp n sao cho có thể tái sử
dụng code cho bài toán giải hệ phương trình tuyến cấp m bằng phương pháp Cramer?
(Bài 1 thừa kế bài sau: Hãy thiết kế sơ đồ lớp và coding cho bài toán tính định thức cấp n.
)
Bài 2: Định nghĩa một lớp ABC là lớp bất kỳ có chứa ít nhất 03 biến trường có kiểu chuỗi ký
tự, số thực và kiểu ngày tháng năm (Chẳng hạn lớp MamNon, các bé học Mầm non, có các
trường: Họ tên kiểu chuỗi, ngày sinh kiểu ngày tháng năm, cân nặng và/hoặc chiều cao kiểu số
thực). Hãy viết chương trình:
a. Nhập danh sách thông tin đầy đủ cho n đối tượng khác nhau thộc vào lớp ABC này vào
tập tin (text file/ object file/…) được lưu vào [drive:][path]<filename> tùy ý.
b. Đọc nội dung tập tin vừa tạo/cập nhật ở trên và hiển thị lên màn hình
c. Lấy ví dụ là lớp MamNon, hãy tìm và hiển thị thông tin đầy đủ của các bé có cân nặng
từ w1 đến w2 và/hoặc chiều cao từ h1 đến h2 (với w1, w2, h1, h2 là các giá trị được
nhập từ người dùng)
d. Tương tự câu c, hãy liệt kê các bé có ngày sinh từ ngày d1 đến d2
Bài 3: Cho sơ đồ các lớp cụ thể như hình sau
Với các thuộc tính:
#name: Họ tên sinh viên (Đại học: Undergraduate, Sau đại học: Graduate)
#test: Mảng 3 phần tử chứa điểm của 3 bài kiểm tra (test1, test2, test3)
#courseGrade: Kết quả là đạt hay không đạt (“Pass”/ “No Pass”)
17
/*
File: Student.java
*/
class Student {
protected final static int NUM_OF_TESTS = 3;
protected String name;
protected int[] test;
protected String courseGrade;
public Student( ) {
this("No Name");
}
public Student(String studentName){
name = studentName;
test = new int[NUM_OF_TESTS];
courseGrade = ""; //Chưa xét kết quả đạt “Pass”, hay không đạt “No pass”
}
public String getCourseGrade( ) { return courseGrade; }
public String getName( ) {return name;}
public int getTestScore(int testNumber){
return test[testNumber-1];
}
public void setName(String newName){
name = newName;
}
//Phương thức thiết lập (nhập) điểm (testScore) cho test1, test2 và test 3 (testNumber)
public void setTestScore(int testNumber, int testScore){
test[testNumber-1] = testScore;
}
public void computeCourseGrade(){
//do nothing - override this method in the subclass
}
}
Với công thức xét kết quả khóa học là “Pass” hoặc “No Pass” cho SV đại và sau đại học:
class GraduateStudent extends Student { //Sinh viên sau đại học
public void computeCourseGrade() {
int total = 0;
for (int i = 0; i < NUM_OF_TESTS; i++){
total += test;
}
if (total/NUM_OF_TESTS >= 80){
courseGrade = "Pass"; // Đạt
} else {
courseGrade = "No Pass"; // Không đạt
}
}
}
18
class UndergraduateStudent extends Student { //Sinh viên đại học
public void computeCourseGrade() {
int total = 0;
for (int i = 0; i < NUM_OF_TESTS; i++){
total += test;
}
if (total/NUM_OF_TESTS >= 70){
courseGrade = "Pass";
} else {
courseGrade = "No Pass";
}
}
}
Khai báo và tạo một mảng roster có kiểu phần tử thuộc lớp Student như sau:
a. Hãy viết chương trình nhập vào n=5 sinh viên (Đại học - nếu Type =”U”, hoặc Sau đại
học – Type =”G”) vào mảng roster như bảng sau. Sau đó tính và in kết quả cho những
sinh viên lên màn hình.
b. Như câu a, nhưng sử dụng I/O streams trong Java để tạo mới/cập nhật tập tin chứa
thông tin của các sinh viên như bảng trên, sau đó đọc hiển thị chúng lên màn hình theo
hai danh sách riêng biệt: Đại học và Sau đại học.
Bài 1: Hãy thiết kế sơ đồ lớp và coding cho bài toán tính định thức cấp n sao cho có thể tái sử
dụng code cho bài toán giải hệ phương trình tuyến cấp m bằng phương pháp Cramer?
(Bài 1 thừa kế bài sau: Hãy thiết kế sơ đồ lớp và coding cho bài toán tính định thức cấp n.
)
Bài 2: Định nghĩa một lớp ABC là lớp bất kỳ có chứa ít nhất 03 biến trường có kiểu chuỗi ký
tự, số thực và kiểu ngày tháng năm (Chẳng hạn lớp MamNon, các bé học Mầm non, có các
trường: Họ tên kiểu chuỗi, ngày sinh kiểu ngày tháng năm, cân nặng và/hoặc chiều cao kiểu số
thực). Hãy viết chương trình:
a. Nhập danh sách thông tin đầy đủ cho n đối tượng khác nhau thộc vào lớp ABC này vào
tập tin (text file/ object file/…) được lưu vào [drive:][path]<filename> tùy ý.
b. Đọc nội dung tập tin vừa tạo/cập nhật ở trên và hiển thị lên màn hình
c. Lấy ví dụ là lớp MamNon, hãy tìm và hiển thị thông tin đầy đủ của các bé có cân nặng
từ w1 đến w2 và/hoặc chiều cao từ h1 đến h2 (với w1, w2, h1, h2 là các giá trị được
nhập từ người dùng)
d. Tương tự câu c, hãy liệt kê các bé có ngày sinh từ ngày d1 đến d2
Bài 3: Cho sơ đồ các lớp cụ thể như hình sau
Với các thuộc tính:
#name: Họ tên sinh viên (Đại học: Undergraduate, Sau đại học: Graduate)
#test: Mảng 3 phần tử chứa điểm của 3 bài kiểm tra (test1, test2, test3)
#courseGrade: Kết quả là đạt hay không đạt (“Pass”/ “No Pass”)
17
/*
File: Student.java
*/
class Student {
protected final static int NUM_OF_TESTS = 3;
protected String name;
protected int[] test;
protected String courseGrade;
public Student( ) {
this("No Name");
}
public Student(String studentName){
name = studentName;
test = new int[NUM_OF_TESTS];
courseGrade = ""; //Chưa xét kết quả đạt “Pass”, hay không đạt “No pass”
}
public String getCourseGrade( ) { return courseGrade; }
public String getName( ) {return name;}
public int getTestScore(int testNumber){
return test[testNumber-1];
}
public void setName(String newName){
name = newName;
}
//Phương thức thiết lập (nhập) điểm (testScore) cho test1, test2 và test 3 (testNumber)
public void setTestScore(int testNumber, int testScore){
test[testNumber-1] = testScore;
}
public void computeCourseGrade(){
//do nothing - override this method in the subclass
}
}
Với công thức xét kết quả khóa học là “Pass” hoặc “No Pass” cho SV đại và sau đại học:
class GraduateStudent extends Student { //Sinh viên sau đại học
public void computeCourseGrade() {
int total = 0;
for (int i = 0; i < NUM_OF_TESTS; i++){
total += test;
}
if (total/NUM_OF_TESTS >= 80){
courseGrade = "Pass"; // Đạt
} else {
courseGrade = "No Pass"; // Không đạt
}
}
}
18
class UndergraduateStudent extends Student { //Sinh viên đại học
public void computeCourseGrade() {
int total = 0;
for (int i = 0; i < NUM_OF_TESTS; i++){
total += test;
}
if (total/NUM_OF_TESTS >= 70){
courseGrade = "Pass";
} else {
courseGrade = "No Pass";
}
}
}
Khai báo và tạo một mảng roster có kiểu phần tử thuộc lớp Student như sau:
a. Hãy viết chương trình nhập vào n=5 sinh viên (Đại học - nếu Type =”U”, hoặc Sau đại
học – Type =”G”) vào mảng roster như bảng sau. Sau đó tính và in kết quả cho những
sinh viên lên màn hình.
b. Như câu a, nhưng sử dụng I/O streams trong Java để tạo mới/cập nhật tập tin chứa
thông tin của các sinh viên như bảng trên, sau đó đọc hiển thị chúng lên màn hình theo
hai danh sách riêng biệt: Đại học và Sau đại học.