Lập trình hướng đối tượng
Mảng các đối tượng
Giảng viên: TS. Nguyễn Mạnh Hùng
Học viện Công nghệ Bưu chính Viễn thông (PTIT)
Nội dung
Mảng các đối tượng
Quan hệ liên kết giữa các lớp
Bài tập
2
Mảng các đối tượng
Khai báo lớp (1)
public class Human{
private String name;
private String birthday;
private int gende;
}
//
//
//
//
lớp người
tên
ngày sinh
giới tính
// lớp sinh viên kế thừa từ lớp người
public class Student extends Human{
private float finalNote;
// điểm trung bình chung
}
4
Khai báo lớp (2)
public class Human{
private String name;
private String birthday;
private int gende;
//
//
//
//
lớp người
tên
ngày sinh
giới tính
public Human(String name, String birthday, int gende){
...
}
}
// lớp sinh viên kế thừa từ lớp người
public class Student extends Human{
private float finalNote;
// điểm trung bình
public Student(String name, String birthday, int gende, float
finalNote){
super(name, birthday, gende);
this.finalNote = finalNote;
}
}
5
Khai báo lớp (3)
public class Human{
private String name;
private String birthday;
private int gende;
//
//
//
//
lớp người
tên
ngày sinh
giới tính
public void show(){
System.out.println("name: " + name + " birthday: " +
birthday + " gende: " + gende);
}
}
// lớp sinh viên kế thừa từ lớp người
public class Student extends Human{
private float finalNote;
// điểm trung bình
public void show(){
System.out.println("name: " + getName() + " birthday: " +
getBirthday() + " gende: " + getGende() + " note: " + finalNote);
}
}
6
Mảng đối tượng
public class Test{
public static void main(String args[]){
// khai báo các đối tượng của lớp sinh viên
Student[] myStudents = new Student[10];
for(int i=0; i
myStudents[i] = new Student("A", "1/1/2011", 1, 7.64);
...// do something more
myStudents[i].show();
}
}
}
Chạy chương trình:
>java Test
Kết quả là gì?
7
Bài tập
Định nghĩa mỗi ô trong trò sudoku như một
lớp đối tượng
Cả ô số là một mảng hai chiều các đối
tượng
8
Liên kết giữa các đối tượng
Ví dụ (1)
Bài toán quản lí điểm của sinh viên:
Mỗi sinh viên có thể học nhiều môn học
Mỗi môn học có thể có nhiều sinh viên
Mỗi sinh viên, với mỗi môn học, có điểm
của môn học đó
Làm thế nào thiết kế các lớp tương ứng?
10
Ví dụ (2)
Sinh viên:
Tên
Ngày sinh
Giới tính
Chức năng:
get/set tên
get/set ngày sinh
get/set giới tính
Show thông tin cá nhân
Môn học:
Tên
Hệ số
Phòng học
Chức năng:
get/set tên
get/set hệ số
get/set phòng học
Show thông tin môn học
Điểm:
Sinh viên
Môn học
Điểm
Chức năng:
get/set Sinh viên
get/set Môn học
get/set điểm
11
Ví dụ (3)
12
Lớp Student
public class Student{
private String name;
private String birthday;
private int gende;
//
//
//
//
lớp sinh viên
tên
ngày sinh
giới tính
// các phương thức khởi tạo
// các phương thức get/set
public void show(){
System.out.println("name: " + name + " birthday: " +
birthday + " gende: " + gende);
}
}
13
Lớp Subject
public class Subject{
private String name;
private String room;
private int coefficient;
//
//
//
//
lớp môn học
tên
phòng học
hệ số tín chỉ
// các phương thức khởi tạo
// các phương thức get/set
public void show(){
System.out.println("name: " + name + " room: " + room + "
coefficient: " + coefficient);
}
}
14
Lớp Note
public class Note{
private Student student;
private Subject subject;
private int note;
//
//
//
//
lớp điểm
sinh viên
môn học
điểm môn học
// các phương thức khởi tạo
// các phương thức get/set
}
15
Bài tập (1)
Viết các phương thức get/set cho các
thuộc tính student và subject
Viết chương trình nhập điểm cho 1 sinh
viên học 5 môn học
Viết chương trình nhập điểm cho một môn
học có 5 sinh viên
16
Bài tập (2)
Vẽ sơ đồ quan hệ và viết các thuộc tính của
lớp cho: Bài toán đặt phòng khách sạn
Mỗi khách sạn có nhiều phòng
Mỗi phòng có thể có nhiều khách hàng
khác nhau ở các thời điểm khác nhau
Mỗi khách hàng có thể ở nhiều phòng khác
nhau ở các thời điểm khác nhau
Mỗi khách hàng chỉ ở một phòng khách
sạn tại một thời điểm nhất định
17
Questions?