HƯỚNG ĐỐI TƯỢNG
GV: Nguyễn Thị Tú Mi
Email:
Nội dung
Định nghĩa lớp, đối tượng
Thuộc tính
Phương thức
Kiểm sốt truy cập
Phương thức khởi tạo
Thao tác với đối tượng
2
Đối tượng trong thế giới thực(1)
Một đối tượng là sự miêu tả phần mềm của thực thể trong thế giới
thực
Ví dụ: ô tô, xe máy, con người, hoa…
Mỗi một thực thể có một số đặc tính và có khả năng thực hiện các
hành động nào đó:
Ví dụ: Xe ơ tơ:
Có các đặc tính như: màu, cấu tạo, kiểu dáng…
Có các hành động là: lái, tăng ga…
3
Thực thể thực & đối tượng
Một thực thể trong thế giới thực có 2 đặc điểm quan trọng là:
Các đặc tính
Các hành động
Một đối tượng phần mềm tương ứng cũng được đặt trưng bởi: thuộc tính và phương thức:
Thuộc tính là những đặc tính thuộc về đối tượng đó
Phương thức định nghĩa các hành động của đối tượng
4
Thực thể thực đối tượng(1)
Một thực thể được ánh xạ thành 1 đối tượng phần mềm.
Ví dụ: đối tượng ô tô:
Thuộc tính: màu, nơi sản xuất, đời xe
Hành động: lái, thay đổi phụ tùng, tăng tốc, thêm phanh,…
5
Thực thể thực đối tượng(2)
Kết quả: 1 đối tượng là 1 thực thể trong thế giới thực với các thuộc tính và hành động tương ứng
Thuộc tính được lưu trong các trường, cũng còn gọi là các biến
Các hành động là các phương thức được định nghĩa, nó cũng cịn được gọi là các hàm
Ích lợi của việc sử dụng đối tượng:
Hiểu được các thực thể trong thế giới thực
Ánh xạ các thuộc tính và hành động của các thực thể trong thế giới thực vào các đối tượng phần mềm
6
Đối tượng
Đối tượng được thao tác thông qua tham chiếu
Tham chiếu đóng vai trị gần giống như một con trỏ
Đối tượng phải được tạo ra một cách tường minh bằng toán tử new
MyDate d;
d = new MyDate();
MyDate myBirthday = d;
7
Lớp(1)
Mỗi lớp là một tập hợp các đối tượng riêng lẻ.
Mỗi lớp là một khuôn mẫu hoặc bản thiết kế mà nó định nghĩa trạng thái, hành vi cho tất cả các đối
tượng phụ thuộc lớp đó.
Các trạng thái, hành vi có thể được ấn định sau khi đối tượng đã được tạo
8
Lớp(2)
Ví dụ:
9
Lớp(3)
Lớp được định nghĩa bởi
class class_name {
...
Ví dụ:
}
class MyDate {
}
10
So sánh đối tượng và lớp(1)
Lớp mô tả 1 thực thể trong khi đối tượng là một thực thể thực sự
Đối tượng thì có thực trong khi lớp là 1 mơ hình khái niệm
Lớp dùng để định nghĩa tất cả các trạng thái hành động cần thiết cho1 đối tượng của lớp đó
11
So sánh đối tượng và lớp(2)
Lớp là 1 nguyên mẫu (prototype) của đối tượng
Lớp là lớp tĩnh (static): các thuộc tính của lớp đó khơng được thay đổi
Dữ liệu chứa trong 1 đối tượng là động
Khi một đối tượng được tạo ra, nó là 1 khởi tạo riêng biệt của lớp
Nó tồn tại độc lập với các đối tượng khác và có các trạng thái riêng
12
So sánh đối tượng và lớp(3)
13
Phương thức
(Methods in Classes)
Phương thức được định nghĩa như là một hành động hoặc một tác vụ thật sự của đối tượng
Cú pháp
access_specifier modifier datatype method_name(parameter_list)
{
//body of method
}
14
Access specifiers
Đặc tả truy
Lớp
Gói
Lớp con
Tồn thể
√
√
√
√
√
√
√
√
√
xuất
public
protected
package private
private
√
15
Data field
Method
Constructor
Class top
Class nested
level
Inteface top
Interface
level
nested
abstract
No
Yes
No
Yes
Yes
Yes
Yes
final
Yes
Yes
No
Yes
Yes
Yes
Yes
native
No
Yes
No
No
No
No
No
private
Yes
Yes
Yes
No
Yes
No
Yes
protected
Yes
Yes
Yes
No
Yes
No
Yes
public
Yes
Yes
Yes
Yes
Yes
Yes
Yes
static
Yes
Yes
No
No
Yes
No
Yes
synchronized
No
Yes
No
No
No
No
No
transient
Yes
No
No
No
No
No
No
volatite
Yes
No
No
No
No
No
No
strictfp
No
Yes
No
Yes
Yes
Yes
Yes
Thuộc tính, phương thức và kiểm sốt truy cập
class MyDate {
private int year, mon, day;
Thuộc tính
public int getYear() {
return year;
}
public void setYear(int y) {
this.year = y;
}
...
}
Phương thức getter, setter
17
MyDate d = new MyDate();
...
d.year = 2005;
// compile error
d.setYear(2005);
System.out.println(”Year=” + d.getYear());
18
Phương thức khởi tạo (1) (constructor)
Dữ liệu nên được khởi tạo trước khi sử dụng
lỗi khởi tạo là một trong các lỗi phổ biến (NullPointerException)
Phương thức khởi tạo
là phương thức đặc biệt được gọi tự động sau khi tạo ra đối tượng
nhằm mục đích chính là khởi tạo cho các thuộc tính của đối tượng
19
Phương thức khởi tạo (2)
Có tên trùng với tên lớp
Khơng nhận giá trị trả về
Mỗi khi đối tượng được tạo ra bởi toán tử new, hệ thống sẽ tự động gọi phương thức khởi tạo.
nếu không khai báo, hệ thống sẽ gọi constructor mặc định là một phương thức rỗng
20
Phương thức khởi tạo của lớp dẫn xuất
(Derived class constructors)
Có cùng tên với lớp dẫn xuất (subclass)
Mệnh đề gọi constructor của lớp cha (superclass) phải là mệnh đề đầu tiên trong
constructor của lớp dẫn xuất (subclass)
public abstract class Person {
public class Student extends Person {
protected String id;
private double marks;
protected int birthYear;
public Student(String id, int birthYear, double marks) {
public Person(String id, int birthYear) {
super(id, birthYear);
this.id = id;
this.marks = marks;
this.birthYear = birthYear;
}
}
}
}
21
Ví dụ: Constructor rỗng
class SayMsg {
}
…
SayMsg msg = new SayMsg();
22
Ví dụ: Constructor mặc định
class SayMsg {
SayMsg() {
System.out.println(”Hello”);
}
}
...
SayMsg msg = new SayMsg();
23
Ví dụ:
class SayMsg {
SayMsg() {
System.out.println(”Hello”);
}
SayMsg(String s) {
System.out.println(s);
}
}
...
SayMsg msg1 = new SayMsg();
SayMsg msg2 = new SayMsg(”Java”);
24
Ví dụ:
class SayMsg {
SayMsg(String s) {
System.out.println(s);
}
}
...
SayMsg msg1 = new SayMsg();
// error
SayMsg msg2 = new SayMsg(””);
25