Tải bản đầy đủ (.pptx) (117 trang)

Bài giảng Lập trình nâng cao: Hướng đối tượng - Nguyễn Thị Tú Mi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.15 MB, 117 trang )

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


×