Lập trình hướng đối tượng
Đối tượng và lớp
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
Đối tượng
Trừu tượng hóa đối tượng thành lớp
Khai báo lớp trong Java
Khai báo và sử dụng đối tượng
Bài tập
2
Đối tượng và lớp
Đối tượng (1)
Một chiếc CIVIC:
Hãng: HONDA
Màu:
bạc
Dung tích xilanh: 2.4
Giá : 30 000$
Chạy theo hướng xác định
Dừng lại
Tự động báo động
Kính chống đạn
Túi hơi
4
Đối tượng (2)
Một chiếc CIVIC:
Hãng: HONDA
Màu:
bạc
Dung tích xilanh: 2.4
Giá : 30 000$
Tự động báo động
Chạy theo hướng xác định
Dừng lại
Kính chống đạn
Túi hơi
Tên đối tượng: CIVIC
Các đặc điểm:
Hãng: HONDA
Màu:
bạc
Dung tích xilanh: 2.4
Giá : 30 000$
Các tính năng:
Tự động báo động
Chạy theo hướng xác định
Dừng lại
Kính chống đạn
Túi hơi
5
Trừu tượng hóa đối tượng (1)
Tên đối tượng: CIVIC
Tên chung: Xe hơi
Các đặc điểm:
Hãng: HONDA
Màu:
bạc
Dung tích xilanh: 2.4
Giá : 30 000$
Các đặc điểm chung:
Hãng sản xuất:
Màu xe:
Dung tích xilanh:
Giá :
Các tính năng:
Tự động báo động
Chạy theo hướng xác định
Dừng lại
Kính chống đạn
Túi hơi
Các tính năng chung:
Chạy theo hướng xác định
Dừng lại
6
Trừu tượng hóa đối tượng (2)
Tên chung: Xe hơi
Tên: Xe hơi
Các đặc điểm chung:
Hãng sản xuất:
Màu xe:
Dung tích xilanh:
Giá :
Các thuộc tính:
Hãng sản xuất:
Màu xe:
Dung tích xilanh:
Giá :
Các tính năng chung:
Chạy theo hướng xác định
Dừng lại
Các hành động:
Chạy theo hướng xác định
Dừng lại
7
Bài tập
Trừu tượng hóa các đối tượng để thành lớp:
Người
Sinh viên
Môn học
8
Khai báo lớp trong Java
Khai báo lớp
public class Car{
...
}
Khai báo phạm vi
Khai báo tên lớp
Từ khóa cho
khai báo lớp
10
Khai báo thuộc tính cho lớp
public class Car{
private String productor;
private String color;
private float capacity;
private int price;
}
//
//
//
//
//
lớp xe ô tô
tên nhà sản xuất
màu xe
dung tích xilanh
giá xe
11
Hàm khởi tạo
public class Car{
private String productor;
private String color;
private float capacity;
private int price;
//
//
//
//
//
lớp xe ô tô
tên nhà sản xuất
màu xe
dung tích xilanh
giá xe
public Car(){
productor = "";
color = "";
capacity = 0.0;
price = 0;
}
}
12
Nạp chồng hàm khởi tạo
public class Car{
private String productor;
private String color;
private float capacity;
private int price;
//
//
//
//
//
lớp xe ô tô
tên nhà sản xuất
màu xe
dung tích xilanh
giá xe
public Car(){
productor = "";
color = "";
capacity = 0.0;
price = 0;
}
public Car(String v1, String v2, float v3, int v4){
productor = v1;
color = v2;
capacity = v3;
price = v4;
}
}
13
Biến this
public class Car{
private String productor;
private String color;
private float capacity;
private int price;
//
//
//
//
//
lớp xe ô tô
tên nhà sản xuất
màu xe
dung tích xilanh
giá xe
public Car(){
productor = "";
color = "";
capacity = 0.0;
price = 0;
}
public Car(String productor, String color, float capacity,
int price){
this.productor = productor;
this.color = color;
this.capacity = capacity;
this.price = price;
}
}
14
Phương thức của lớp
public class Car{
private String productor;
private String color;
private float capacity;
private int price;
//
//
//
//
//
lớp xe ô tô
tên nhà sản xuất
màu xe
dung tích xilanh
giá xe
public void setProductor(String productor){
this.productor = productor;
}
public String getProductor(){
return productor;
}
}
15
Đóng gói dữ liệu
public class Car{
private String productor;
private String color;
private float capacity;
private int price;
//
//
//
//
//
lớp xe ô tô
tên nhà sản xuất
màu xe
dung tích xilanh
giá xe
public void setProductor(String productor){
this.productor = productor;
}
public String getProductor(){
return productor;
}
}
Không cho truy nhập
trực tiếp vào dữ liệu
Chỉ cho truy nhập
gián tiếp qua phương
thức
16
Bài tập
Định nghĩa lớp sinh viên với các thuộc tính:
mã sinh viên
Họ và tên
Tuổi
Điểm tổng kết
Mức học bổng
Viết phương thức xác định mức học bổng
của sinh viên
17
Khai báo và sử dụng đối tượng
Khai báo/khởi tạo đối tượng
public class Test{
public static void main(String args[]){
Car myCar; // khai báo đối tượng
// khởi tạo đối tượng
myCar = new Car();
System.out.println(myCar.getProductor());
// khởi tạo lại đối tượng
myCar = new Car("HONDA", "White", 2.4, 30000);
System.out.println(myCar.getProductor());
}
}
Chạy chương trình:
>java Test
kết quả là gì?
19
Biến static
public class Car{
// lớp xe ô tô
private String productor; // tên nhà sản xuất
private String color;
// màu xe
private float capacity;
// dung tích xilanh
private int price;
// giá xe
static int sold;
// số xe đã bán
}
public class Test{
public static void main(String args[]){
Car myCar, hisCar;
System.out.println(Car.sold);
hisCar = new Car();
hisCar.sold++;
myCar = new Car("HONDA", "White", 2.4, 30000);
myCar.sold++;
System.out.println(Car.sold);
}
}
20
Lệnh nào lỗi?
public class Test{
public static void main(String args[]){
1:
Car myCar, hisCar;
2:
System.out.println(myCar.getProductor());
3:
myCar = new Car("HONDA", "White", 2.4, 30000);
4:
System.out.println(myCar.productor);
5:
hisCar = myCar;
6:
System.out.println(hisCar.getProductor());
7:
System.out.println(myCar.setProductor("HONDA"));
}
}
21
Bài tập
Viết chương trình nhập dữ liệu sinh viên,
theo lớp đã định nghĩa, từ bàn phím
In thông tin sinh viên ra màn hình, bao gồm
cả mức học bổng
22
Questions?