Bài giảng Lập trình Hướng đối tượng (Object Oriented Programming) - Chương 2: Những khái niệm cơ bản của Lập trình HĐT

2.7. Cách viết class trong Java

2.7.1. Lớp trong Java

2.7.2. Khai báo định nghĩa lớp

2.7.3. Thuộc tính của lớp

2.7.4. Phương thức của lớp

2.7.5. Tạo đối tượng của lớp

2.7.6. this

2.7.7. Phương thức chồng overloading

2.7.8. Encapsulation (che dấu thông tin trong lớp)

 

pptx 39 trang phuongnguyen 6360
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Hướng đối tượng (Object Oriented Programming) - Chương 2: Những khái niệm cơ bản của Lập trình HĐT", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình Hướng đối tượng (Object Oriented Programming) - Chương 2: Những khái niệm cơ bản của Lập trình HĐT

Bài giảng Lập trình Hướng đối tượng (Object Oriented Programming) - Chương 2: Những khái niệm cơ bản của Lập trình HĐT
Môn: Lập trình Hướng đối tượng(Object Oriented Programming) 
Chương 2. Những khái niệm cơ bản của Lập trình HĐT 
Nội dung 
2.1. Khái niệm đối tượng 
2.2. So sánh classes và structures 
2.3. Mô tả thành phần Private và Public của classes 
2.4. Định nghĩa các hàm của classes 
2.5. Phương pháp sử dụng các đối tượng và các hàm thành viên của classes 
2.6. Các ngôn ngữ lập trình hướng đối tượng thông dụng hiện nay 
2.7. Cách viết class trong Java 
2 
2.7. Cách viết class trong Java 
2.7.1. Lớp trong Java 
2.7.2. Khai báo định nghĩa lớp 
2.7.3. Thuộc tính của lớp 
2.7.4. Phương thức của lớp 
2.7.5. Tạo đối tượng của lớp 
2.7.6. this 
2.7.7. Phương thức chồng overloading 
2.7.8. Encapsulation (che dấu thông tin trong lớp) 
3 
2.7.1. Lớp trong Java 
C ó thể xem lớp (class) như một khuôn mẫu (template) của đối tượng ( o bject ). 
Trong lớp bao gồm dữ liệu của đối tượng (fields hay properties) và các phương thức (methods) tác động lên thành phần dữ liệu đó gọi là các phương thức của lớp . 
Các đối tượng được xây dựng bởi các lớp nên được gọi là các thể hiện của lớp (class instance ). 
Các lớp được gom nhóm lại thành package. 
4 
2.7.2. Khai báo định nghĩa lớp 
class   
{      ; // thuộc tính của lớp      ;     constructor // hàm khởi tạo      method_1 // phương thức của lớp      method_2 
} 
class : là từ khóa của J ava 
ClassName : là tên của lớp 
field_1 , field_2 : các thuộc tính, các biến, hay các thành phần dữ liệu của lớp. 
constructor : là hàm xây dựng, khởi tạo đối tượng lớp. 
method_1 , method_2 : là các phương thức/hàm thể hiện các thao tác xử lý, tác động lên các thành phần dữ liệu của lớp . 
5 
2.7.2. Khai báo định nghĩa lớp (tt) 
UML (Unified Model Language) là một ngôn ngữ dùng cho phân tích thiết kế hướng đối tượng (OOAD – Object Oriented Analysis and Design ) 
UML thể hiện phương pháp phân tích hướng đối tượng nên không lệ thuộc ngôn ngữ LT. 
Dùng UML để biểu diễn 1 lớp trong Java 
Biểu diễn ở mức phân tích (analysis) 
Biểu diễn ở mức thiết kế chi tiết (design) 
6 
2.7.2. Khai báo định nghĩa lớp (tt) 
Ví dụ UML để biểu diễn 1 lớp trong Java 
7 
Bỏ qua các chi tiết không cần thiết 
Phải đầy đủ & chi tiết các thành phần 
Tên lớp 
Thuộc tính 
Phương thức 
2.7.3. Thuộc tính của lớp 
Thuộc tính của lớp được khai báo bên trong lớp 
	class   
	 { 	 //  khai báo những thuộc tính của  lớp 
	 //   field1 ; 
	 //    
	} 
Q uyền truy xuất của các đối tượng khác đối với thuộc tính của lớp : 
public :  có thể truy xuất từ tất cả các đối tượng khác . 
private :  một lớp không thể truy xuất vùng private của 1 lớp khác . 
protected :  vùng protected của 1 lớp chỉ cho phép bản thân lớp đó và những lớp thừa kế từ lớp đó truy cập đến. 
8 
2.7.3. Thuộc tính của lớp (tt) 
Ví dụ: Lớp sinh viên 
class  SinhVien 
{      public String  hoTen;     private int     namSinh;    protected String lopHoc;    public static String tenTruong =  “DHCN”; 
	 //   } 
9 
2.7.3. Thuộc tính của lớp (tt) 
Biến lớp (Class Variables) - (Biến tĩnh - Static Variables ) 
Là biến được truy xuất mà không có sử dụng đối tượng của lớp đó. 
Khai báo dùng thêm từ khóa static keyword. 
Chỉ có 1 bản copy biến này được chia sẻ cho tất cả các đối tượng của lớp 
Sự thay đổi giá trị của biến này sẽ ảnh hưởng tới tất cả các đối tượng của lớp. 
10 
2.7.3. Thuộc tính của lớp (tt) 
Ví dụ: Biến của lớp 
11 
2.7.4. Phương thức của lớp 
Có hai loại phương thức trong ngôn ngữ Java: 
Hàm khởi tạo (Constructor) 
Các phương thức /hàm khác 
Phương thức thể hiện (Instance Method ) 
Gọi phương thức và truyền tham số kiểu trị (Passing Arguments by Value ). 
Gọi phương thức và truyền tham số kiểu tham chiếu (Passing Arguments by Reference ). 
Phương thức tĩnh (Static Methods ) 
Phương thức tham số biến (Variable Argument Methods) 
12 
2.7.4. Phương thức của lớp (tt) 
Hàm khởi tạo (Constructor) 
Constructor là phương thức đặc biệt được gọi khi tạo object 
Mục đích: Khởi động trị cho biến instance của class . 
A constructor phải thỏa 2 điều kiện: 
Cùng tên class 
Không giá trị trả về 
Một lớp có thể có nhiều Constructors 
Nếu không viết Constructor , t rình biên dịch tạo default constructor 
Default constructor không thông số và không làm gì cả. 
13 
2.7.4. Phương thức của lớp (tt) 
Phương thức thể hiện (Instance Method) 
Là hàm định nghĩa trong lớp 
Định nghĩa hành vi của đối tượng 
Ta có thể làm được gì với đối tượng này? 
Những phương thức có thể áp dụng? 
Cung cấp cách thức truy xuất tới các dữ liệu riêng của đối tượng 
Truy xuất thông qua tên đối tượng 
14 
2.7.4. Phương thức của lớp (tt) 
Gọi phương thức và truyền tham số kiểu trị 
Các giá trị từ phương thức gọi (calling method) sẽ được truyền như đối số tới phương thức được gọi (called method ). 
Bất kỳ sự thay đổi của đối số trong phương thức được gọi đề không ảnh hưởng đến các giá trị được truyển từ phương thức gọi . 
Các biến có giá trị kiểu nguyên thủy (primitive types int, float ) sẽ được truyền theo kiểu này. 
15 
2.7.4. Phương thức của lớp (tt) 
16 
2.7.4. Phương thức của lớp (tt) 
Gọi phương thức và truyền tham số kiểu tham biến 
Sự thay đổi giá trị trong phương thức được gọi sẽ ảnh hưởng tới giá trị truyền từ phương thức gọi. 
Khi các tham chiếu được truyền như đối số tới phương thức được gọi, các giá trị của đối số có thể thay đổi nhưng tham chiếu sẽ không thay đổi. 
17 
2.7.4. Phương thức của lớp (tt) 
18 
2.7.4. Phương thức của lớp (tt) 
Phương thức tĩnh (Static Methods ) 
Là những phương thức được gọi thông qua tên Lớp (không cần đối tượng). 
Khai báo phương thức thêm từ khóa static . 
Chỉ có thể truy xuất 1 cách trực tiếp tới các biến tĩnh(static) và các phương thức tĩnh khác của lớp. 
Không thể truy xuất đến các phương thức và biến không tĩnh (non-static). 
19 
2.7.4. Phương thức của lớp (tt) 
Việc sử dụng phương thức tĩnh 
Khi phương thức không truy xuất tới các trạng thái của đối tượng. 
Khi phương thức chỉ quan tâm đến các biến tĩnh. 
20 
2.7.4. Phương thức của lớp (tt) 
Phương thức tham số biến. Phương thức này cho phép gọi phương thức với số tham số thay đổi. 
21 
2.7.5. Tạo đối tượng của lớp 
Tạo đối tượng (object) dùng toán tử new 
Cú pháp 
	 // gọi tới contructor mặc định 
	 ClassName objectName = new ClassName (); 
	 // gọi tới constructor có tham số 
	 ClassName objectName 1 = new ClassName( ts1, ts2,  ); 
Truy xuất các thuộc tính và phương thức 
Khi tạo object bằng toán tử new , vùng nhớ được cấp phát cho mỗi thuộc tính và phương thức của class. 
Để truy cập các thuộc tính và phương thức của đối tượng dùng toán tử dấu chấm ( dot operator ). 
22 
2.7.5. Tạo đối tượng của lớp (tt) 
Nếu một class không có constructor, trình biên dịch tạo ra constructor mặc định không có tham số. 
Nếu class có một hoặc nhiều constructor, bất kể tham số kiểu gì, trình biên dịch sẽ không thêm mặc định constructor nữa. 
Ví dụ: lớp không có constructor mặc định 
23 
Ví dụ lớp Hình chữ nhật 
24 
HinhChuNhat n ; // khai báo đối tượng 
// khởi tạo, cấp vùng nhớ bằng toán tử new 
n = new HinhChuNhat(3,6 ); 
Ví dụ lớp Hình chữ nhật (No default Constructor) 
25 
// khai báo đối tượng HCN_NoDefaultConstructor n, n2; 
// khởi tạo, cấp vùng nhớ bằng toán tử new 
// dung Constructor 2 tham số 
n = new HCN_NoDefaultConstructor(3,6 ); 
// khởi tạo dung constructor default 
n2 = new HCN_NoDefaultConstructor (); 
Ví dụ lớp Hình tròn 
26 
HinhTron n1, n2; // khai báo đối tượng 
// khởi tạo, cấp vùng nhớ bằng toán tử new 
// khởi tạo dung constructor 1 tham số 
n1 = new HinhTron(3); 
// khởi tạo dung constructor không tham số 
n2 = new HinhTron (); 
Ví dụ lớp Sinh Viên 
27 
2.7.6. this 
Từ khóa this được dùng như biến đại diện cho object hiện tại. 
Để tránh lặp lại code, có thể có constructor gọi một constructor khác trong cùng class. Khi đó sử dụng từ khóa this để gọi constructor khác trong cùng class. 
Nếu một constructor gọi constructor khác bằng từ khóa this , thì từ khóa this phải là dòng lệnh đầu tiên trong constructor đó. (Nếu không, sẽ bị lỗi biên dịch). 
28 
2.7.6. this (tt) 
Dùng this trong hàm khởi tạo contructor 
29 
2.7.6. this (tt) 
Dùng this đại diện cho đối tượng 
Đại diện cho đối tượng, dùng để truy xuất một thành phần của đối tượng this.tênThànhPhần . 
Khi tham số trùng với tên thuộc tính thì nhờ từ khóa this để phân biệt rõ thuộc tính với tham số. 
30 
2.7.6. this (tt) 
31 
2.7.6. this (tt) 
32 
Truy cập thành phần qua từ khóa this 
Truy cập thành phần không qua từ khóa this 
2.7.7. Phương thức chồng overloading 
Phương thức Overloading : 
Các phương thức trong cùng class có cùng tên 
Danh sách tham số phải khác nhau (includes the number, type, and order of the parameters) 
Trình biên dịch so sánh danh sách thông số thực để quyết định gọi phương thức nào. 
Kiểu giá trị trả về của phương thức không được tính vào dấu hiệu của overloading method 
Các constructors có thể được overloaded. Một overloaded constructor cho ta nhiều cách khác nhau để tạo ra một đối tượng mới. 
33 
2.7.7. Phương thức chồng overloading(tt) 
34 
float tryMe (int x) 
{ 
 return x + .375; 
} 
Version 1 
float tryMe (int x, float y) 
{ 
 return x*y; 
} 
Version 2 
result = tryMe (25, 4.32) 
Invocation 
float tryMe (int x) 
{ 
 return x + .375; 
} 
Version 1 
int tryMe (int k) 
{ 
 return k*k; 
} 
Version 2 
Not Overloading method 
2.7.7. Phương thức chồng overloading(tt) 
Ví dụ: 
The println method is overloaded: 
 println (String s) 
 println (int i) 
 println (double d )  
Những dòng lệnh sau sẽ gọi các versions khác nhau của phương thức println : 
 System.out.println ("The total is:"); 
 System.out.println (total ); 
35 
2.7.8. Encapsulation 
Encapsulation là kỹ thuật làm cho các field trong một class thành private và cung cấp truy cập đến field đó thông qua public method. 
Encapsulation còn được gọi là che dấu dữ liệu. 
Encapsulation là một trong bốn khái niệm cơ bản của OOP. 
In Java, hiện thực encapsulation bằng cách sử dụng phù hợp các bổ từ truy xuất ( visibility modifiers) 
Java có 3 bổ từ cho thành phần (visibility modifiers): public , private , protected 
36 
2.7.8. Encapsulation (tt) 
Visibility Modifiers 
Thành phần của class được khai báo có bổ từ public visibility được truy cập ở bất cứ đâu. 
Thành phần được khai báo private visibility chỉ được truy cập bên trong class, bên ngoài lớp không truy xuất được. 
Thành phần được khai báo mặc định (không có visibility modifier) được truy cập bởi bất cứ class nào bên trong cùng một gói (package). 
37 
2.7.8. Encapsulation (tt) 
Dữ liệu nên được định nghĩa với bổ từ private 
Dữ liệu private chỉ có thể được truy cập bởi các phương thức của class. 
Các method có thể được định nghĩa public hoặc private 
public method: cung cấp dịch vụ cho lớp khác dùng class này, phương thức này có thể gọi là: service methods 
private method: không thể được gọi từ bên ngoài class. Mục đích duy nhất của private method là để giúp cho những phương thức khác trong cùng một class để làm công việc của nó, c ác phương thức này còn gọi là phương thức hỗ trợ ( support methods ) . 
38 
39 

File đính kèm:

  • pptxbai_giang_lap_trinh_huong_doi_tuong_object_oriented_programm.pptx