Bài giảng lập trình java cơ bản chương 7 lê tân

26 248 0
Bài giảng lập trình java cơ bản  chương 7   lê tân

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LẬP TRÌNH JAVA CƠ BẢN Chương LỚP VÀ PHƯƠNG THỨC Lê Tân Bộ môn: Lập trình máy tính Nội dung chương  Đóng gói  Thiết kế giao diện lớp  Mô tả liệu nội  Cú pháp khai báo lớp  Khai báo phương thức  Gói 2/26 7.1 Đóng gói        Chi tiết thi hành lớp ẩn người sử dụng lớp → đóng gói (encapsulation) Đóng gói thiết kế lớp cho thực bảo vệ khỏi tác động mã ngoài, trừ qua giao diện hình thức (formal interface) Các phương thức dùng chung (public methods) lớp cung cấp giao diện mã ứng dụng đối tượng lớp Đóng gói giúp giấu chi tiết cài đặt liệu cục Công bố cần thiết để trao đổi với đối tượng khác Đơn vị đóng gói lớp (class) Lớp định rõ thành phần liệu đoạn mã cài đặt thao tác xử lý đối tượng liệu 3/26 7.1 Đóng gói  Các ưu điểm đóng gói: • Bảo vệ nội dung lớp khỏi bị hư hỏng tác dụng mã • Đơn giản hoá việc thiết kế chương trình lớn cách phát triển phần riêng biệt với • Cho phép thay đổi việc thực thi lớp sau tạo phát triển chúng • Cho phép tái sử dụng lớp từ ứng dụng khác, mở rộng lớp để tạo nên lớp có liên quan 4/26 7.1 Đóng gói   Trừu tượng: trừu tượng liệu trừu tượng điều khiển • Trừu tượng liệu: tách biệt biểu diễn logic miền giá trị từ sử dụng • Trừu tượng điều khiển: tách biệt thuộc tính logic phương thức đối tượng từ thực Trạng thái đối tượng: tập giá trị mà chứa 5/26 7.1 Đóng gói     Đối tượng biểu diễn trạng thái khởi tạo Đối tượng thay đổi trạng thái gọi thay đổi (mutable) Đối tượng thay đổi trạng thái tạo gọi đối tượng thay đổi (immutable) Bộ biến đổi (transformer): Phương thức làm thay đổi trạng thái đối tượng 6/26 7.2 Thiết kế giao diện lớp   Các đối tượng xây dựng lớp → thể lớp (class instance) Ví dụ lớp Name: 7/26 7.2 Thiết kế giao diện lớp   Chuyển thẻ CRC thành thiết kế: chuyển đáp ứng từ dạng mệnh đề câu thành tên để biểu diễn đáp ứng Thiết kế giao diện chung: Có hai cách • Các giá trị trường chung: Lưu trữ phần tên chuỗi khai báo trường, ví dụ String first; String middle; String last; • Các đáp ứng phương thức: Mỗi đáp ứng thực phương thức lớp 8/26 7.3 Mô tả liệu nội     Đầu tiên: định việc biểu diễn bên liệu Phương thức thực hiện: Các đáp ứng thẻ CRC phương thức thực Đáp ứng tham chiếu đến đối tượng thực phương thức cụ thể (thể hiện), phải gọi thông qua tên đối tượng (không gọi thông qua tên lớp), khai báo từ khóa static Các dạng liệu: liệu thể hiện, liệu lớp liệu cục • Dữ liệu thể hiện: biểu diễn bên đối tượng cụ thể, biểu diễn trạng thái đối tượng, khai báo từ khóa static Ví dụ: public class Name{ String first; String middle; String last; } 9/26 7.3 Mô tả liệu nội • Dữ liệu lớp (class data): Có thể truy cập tất đối tượng lớp, khai báo với từ khóa static Ví dụ: public class Name{ // Class constant static final String PUNCT = “, ”; } • Dữ liệu cục (local data): truy cập khối lệnh khai báo Ví dụ: public int compareTo(Name otherName) { int result; // Biến cục return result; } 10/26 7.4 Cú pháp khai báo lớp       Khai báo: Một lớp bao gồm phần đầu (heading): khai báo gói nạp gói có Tiếp theo khối chứa khai báo lớp Bao gồm khai báo tên lớp phạm vi truy cập Khai báo liệu Khai báo phương thức 12/26 7.4 Cú pháp khai báo lớp  Ví dụ: khai báo lớp Circle (hình tròn) sau class Circle { double radius = 1.0; Circle(){ } Circle(double newRadius){ radius = newRadius; } double findArea(){ return radius * radius * 3.14159; } } 13/26 7.4 Cú pháp khai báo lớp    Khai báo biến tham chiếu đối tượng:ClassName objectReference; • Ví dụ: Circle myCircle;//myCircle biến tham chiếu đối tượng lớp Circle Tạo đối tượng: objectReference = new ClassName(); • Ví dụ: myCircle = new Circle();//Tham chiếu đối tượng gán cho biến myCircle Khai báo/Tạo đối tượng lệnh: ClassName objectReference = new ClassName(); • Ví dụ: Circle myCircle = new Circle(); 14/26 7.4 Cú pháp khai báo lớp  Truy cập đối tượng: • Tham chiếu liệu đối tượng:  objectReference.data  vd: myCircle.radius • Gọi phương thức đối tượng:  objectReference.method  vd: myCircle.findArea() 15/26 7.5 Khai báo phương thức      Constructor (phương thức tạo): dạng đặc biệt phương thức, gọi để xây dựng đối tượng Một constructor tham số gọi default constructor Các constructor phải có tên với tên lớp Các constructor kiểu liệu trả về, kể kiểu void Nó gọi sử dụng toán tử new tạo đối tượng đóng vai trò tạo đối tượng Ví dụ: Circle(double r) { radius = r; } Circle() { radius = 1.0; } myCircle = new Circle(5.0); 16/26 7.5 Khai báo phương thức   Cú pháp khai báo phương thức: (){ ; } Từ bổ nghĩa: xác định phạm vi truy cập đối tượng khác phương thức lớp 17/26 7.5 Khai báo phương thức • public: phương thức truy cập từ bên lớp khai báo • protected: truy cập từ lớp khai báo lớp dẫn xuất từ • private: truy cập bên thân lớp khai báo • static: phương thức lớp dùng chung cho tất thể lớp, có nghĩa phương thức thực kể đối tượng lớp chứa phương thức • final: không khai báo chồng lớp dẫn xuất • abstract: phương thức không cần cài đặt (không có phần thân), thực lớp dẫn xuất từ lớp • synchoronized: ngăn tác động đối tượng khác lên đối tượng xét đồng hóa, sử dụng lập trình đa tuyến 18/26 7.5 Khai báo phương thức     : kiểu void, kiểu sở hay lớp : đặt theo qui ước giống tên biến : rỗng Lưu ý: • Các phương thức nên khai báo dùng từ khóa public, • Dữ liệu thường dùng tiền tố private mục đích an toàn • Các biến cục (local) nên khởi tạo sau khai báo 19/26 7.5 Khai báo phương thức  Ví dụ khai báo phương thức: public class XeMay{ public String nhasx; public String model; private float chiphisx; protected int thoigiansx; // so luong so cua xe may: 3, so protected int so; // biến tĩnh có giá trị tất // thể tạo từ lớp xemay public static int sobanhxe = 2; //Khai báo phương thức public float tinhgiaban(){ return 1.5 * chiphisx; } } 20/26 7.5 Khai báo phương thức  Gọi phương thức: tên phương thức, theo sau cặp dấu ngoặc tròn, bao quanh danh sách đối số Ví dụ:  Một lời gọi phương thức tạm thời chuyển điều khiển cho phương thức gọi để thực nhiệm vụ Cú pháp gọi phương thức: • tên_phương_thức(danh sách đối số) • Danh sách đối số sử dụng để truyền giá trị đến phương thức • Danh sách đối số có 0, nhiều thông tin, tách biệt dấu phẩy  21/26 7.5 Khai báo phương thức   Tham số Java: Với kiểu liệu nguyên thuỷ (int, double, boolean …), tham số nhận giá trị đối số • Các tác vụ thực tham số không ảnh hưởng đến đối số Với kiểu liệu tham chiếu (như chuỗi lớp), tham số nhận địa chỉ, nơi đối tượng lưu trữ • Những thay đổi tạo thuộc tính đối tượng tham chiếu đến tham số ảnh hưởng đến đối tượng đối số • Là thực tế lập trình không tốt 22/26 7.6 Gói   Gói bao gồm nhiều lớp có đặc tính chung Cú pháp khai báo gói: package tên_gói; khai báo nạp gói; khai báo lớp; 23/26 7.6 Gói  Ví dụ: Tạo gói lưu vào thư mục name với tên Name.java, dịch javac name\Name.java // Tạo lớp Name lưu trữ gói name package name; public class Name { // Hằng lớp static final String PUNCT = “, ”; // Khai báo Biến thể String first; … // Khai báo phương thức … } // để định dạng 24/26 7.6 Gói  Để sử dụng gói: Tạo file lưu với tên NameDriver.java // Sử dụng gói name vừa tạo import name.*; public class NameDriver{ static Name testName; // Đối tượng Name để kiểm tra public static void main (String[ ] args) { //Khai báo thân phương thức } } 25/26 Câu hỏi tập Trừu tượng hoá gì? Mục đích constructor lớp gì? Sự khác kiểu nguyên thuỷ kiểu tham chiếu? Một đối tượng có đối tượng khác làm thành phần không? Viết phần heading constructor copy lớp AddressLabel mà thay đổi trường address Viết phần heading constructor lớp AddressLabel mà có bốn biến String name, address, city, state, biến long zipCode Trường country thiết lập mặc định “United States” 26/26 [...]... đến bởi tham số sẽ ảnh hưởng đến đối tượng đối số • Là một thực tế lập trình không tốt 22/26 7. 6 Gói   Gói bao gồm một hoặc nhiều lớp có cùng đặc tính chung nào đó Cú pháp khai báo gói: package tên_gói; khai báo nạp gói; khai báo lớp; 23/26 7. 6 Gói  Ví dụ: Tạo gói và lưu vào thư mục con name với tên Name .java, dịch javac name\Name .java // Tạo lớp Name được lưu trữ trong gói name package name; public... thân), sẽ được hiện thực trong các lớp dẫn xuất từ lớp này • synchoronized: ngăn các tác động của các đối tượng khác lên đối tượng đang xét trong khi đang đồng bộ hóa, được sử dụng trong lập trình đa tuyến 18/26 7. 5 Khai báo phương thức     : có thể là kiểu void, kiểu cơ sở hay một lớp : đặt theo qui ước giống tên biến : có thể rỗng Lưu ý: • Các... có 0, 1 hoặc nhiều thông tin, tách biệt bởi dấu phẩy  21/26 7. 5 Khai báo phương thức   Tham số trong Java: Với kiểu dữ liệu nguyên thuỷ (int, double, boolean …), tham số nhận một bản sao của giá trị của đối số • Các tác vụ thực hiện trên tham số không ảnh hưởng đến đối số Với kiểu dữ liệu tham chiếu (như chuỗi hoặc lớp), tham số nhận một bản sao của địa chỉ, nơi đối tượng được lưu trữ • Những thay... r) { radius = r; } Circle() { radius = 1.0; } myCircle = new Circle(5.0); 16/26 7. 5 Khai báo phương thức   Cú pháp khai báo phương thức: (){ ; } Từ bổ nghĩa: xác định phạm vi truy cập của các đối tượng khác đối với các phương thức của lớp 17/ 26 7. 5 Khai báo phương thức • public: phương thức có thể truy cập được từ bên ngoài... Garbage Collector): Java chứa một bộ gom rác tự động Một cách có chu kỳ, nó tìm và trả về cho heap mọi đối tượng không được tham chiếu 11/26 7. 4 Cú pháp khai báo lớp       Khai báo: Một lớp bao gồm một phần đầu (heading): khai báo gói và nạp gói nếu có Tiếp theo là một khối chứa các khai báo lớp Bao gồm khai báo tên lớp và phạm vi truy cập Khai báo dữ liệu Khai báo phương thức 12/26 7. 4 Cú pháp khai... first; … // Khai báo các phương thức … } // để định dạng 24/26 7. 6 Gói  Để sử dụng gói: Tạo file và lưu với tên NameDriver .java // Sử dụng gói name vừa tạo import name.*; public class NameDriver{ static Name testName; // Đối tượng Name để kiểm tra public static void main (String[ ] args) { //Khai báo thân phương thức chính } } 25/26 Câu hỏi và bài tập 1 Trừu tượng hoá là gì? 2 Mục đích của constructor... ClassName objectReference = new ClassName(); • Ví dụ: Circle myCircle = new Circle(); 14/26 7. 4 Cú pháp khai báo lớp  Truy cập đối tượng: • Tham chiếu dữ liệu của đối tượng:  objectReference.data  vd: myCircle.radius • Gọi phương thức của đối tượng:  objectReference.method  vd: myCircle.findArea() 15/26 7. 5 Khai báo phương thức      Constructor (phương thức tạo): là một dạng đặc biệt của phương... thể rỗng Lưu ý: • Các phương thức nên được khai báo dùng từ khóa public, • Dữ liệu thường là dùng tiền tố private vì mục đích an toàn • Các biến cục bộ (local) nên được khởi tạo sau khi khai báo 19/26 7. 5 Khai báo phương thức  Ví dụ về khai báo phương thức: public class XeMay{ public String nhasx; public String model; private float chiphisx; protected int thoigiansx; // so luong so cua xe may: 3, 4... so; // là biến tĩnh có giá trị là 2 trong tất cả // các thể hiện tạo ra từ lớp xemay public static int sobanhxe = 2; //Khai báo phương thức public float tinhgiaban(){ return 1.5 * chiphisx; } } 20/26 7. 5 Khai báo phương thức  Gọi phương thức: tên của phương thức, theo sau là cặp dấu ngoặc tròn, bao quanh danh sách các đối số Ví dụ:  Một lời gọi phương thức sẽ tạm thời chuyển điều khiển cho phương... dụ: khai báo lớp Circle (hình tròn) như sau class Circle { double radius = 1.0; Circle(){ } Circle(double newRadius){ radius = newRadius; } double findArea(){ return radius * radius * 3.14159; } } 13/26 7. 4 Cú pháp khai báo lớp    Khai báo biến tham chiếu đối tượng:ClassName objectReference; • Ví dụ: Circle myCircle;//myCircle là một biến tham chiếu đối tượng của lớp Circle Tạo đối tượng: objectReference ... lớp dẫn xuất từ lớp • synchoronized: ngăn tác động đối tượng khác lên đối tượng xét đồng hóa, sử dụng lập trình đa tuyến 18/26 7. 5 Khai báo phương thức     : kiểu void, kiểu sở... đối số • Là thực tế lập trình không tốt 22/26 7. 6 Gói   Gói bao gồm nhiều lớp có đặc tính chung Cú pháp khai báo gói: package tên_gói; khai báo nạp gói; khai báo lớp; 23/26 7. 6 Gói  Ví dụ: Tạo... thao tác xử lý đối tượng liệu 3/26 7. 1 Đóng gói  Các ưu điểm đóng gói: • Bảo vệ nội dung lớp khỏi bị hư hỏng tác dụng mã • Đơn giản hoá việc thiết kế chương trình lớn cách phát triển phần riêng

Ngày đăng: 03/12/2015, 18:19

Mục lục

  • LẬP TRÌNH JAVA CƠ BẢN

  • Nội dung chương 7

  • 7.1 Đóng gói

  • Slide 4

  • Slide 5

  • Slide 6

  • 7.2 Thiết kế giao diện lớp

  • Slide 8

  • 7.3 Mô tả dữ liệu nội bộ

  • Slide 10

  • Slide 11

  • 7.4 Cú pháp khai báo lớp

  • Slide 13

  • Slide 14

  • Slide 15

  • 7.5 Khai báo phương thức

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan