Lập trình Java toàn tập_P1: Khái niệm cơ bản

Nội dung: - Định nghĩa lớp, đối tượng - Thuộc tính - Phương thức - Kiểm soát truy cập - Phương thức khởi tạo - Thao tác với đối tượng

ppt32 trang | Chia sẻ: diunt88 | Lượt xem: 3533 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Lập trình Java toàn tập_P1: Khái niệm cơ bản, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Các khái niệm cơ bản trong Java Nội dung Định nghĩa lớp, đối tượng Thuộc tính Phương thức Kiểm soát truy cập Phương thức khởi tạo Thao tác với đối tượng Đố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… 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 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,… 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 Đố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; 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 Lớp(2) Ví dụ: Lớp(3) Lớp được định nghĩa bởi Ví dụ: class MyDate { } class class_name { ... } 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 đó 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 So sánh đối tượng và lớp(3) 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 } Access specifiers public private protected package private Method Modifiers static abstract final native synchronized volatile Thuộc tính, phương thức và kiểm soát truy cập class MyDate { private int year, mon, day; public int getYear() { return year; } public void setYear(int y) { this.year = y; } ... } Phương thức getter, setter Thuộc tính MyDate d = new MyDate(); ... d.year = 2005; // compile error d.setYear(2005); System.out.println(”Year=” + d.getYear()); Những phương thức được nạp chồng : (Methods Overloading) Những phương thức được nạp chồng : Cùng ở trong một lớp Có cùng tên Khác nhau về danh sách tham số Là một hình thức đa hình (polymorphism) trong quá trình biên dịch (compile time) class MyDate { … public boolean setMonth(int m) { …} public boolean setMonth(String s) { …} } d.setMonth(9); d.setMonth(”September”); Ghi đè phương thức (Methods Overriding) Những phương thức được ghi đè: Có mặt trong lớp cha (superclass) cũng như lớp kế thừa (subclass) Được định nghĩa lại trong lớp kế thừa (subclass) Cũng là một hình thức đa hình (polymorphism) Phương thức equals(), toString() 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 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 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 { protected String id; protected int birthYear; public Person(String id, int birthYear) { this.id = id; this.birthYear = birthYear; } } public class Student extends Person { private double marks; public Student(String id, int birthYear, double marks) { super(id, birthYear); this.marks = marks; } } Ví dụ: Constructor rỗng class SayMsg { } … SayMsg msg = new SayMsg(); Ví dụ: Constructor mặc định class SayMsg { SayMsg() { System.out.println(”Hello”); } } ... SayMsg msg = new SayMsg(); 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”); Ví dụ: class SayMsg { SayMsg(String s) { System.out.println(s); } } ... SayMsg msg1 = new SayMsg(); // error SayMsg msg2 = new SayMsg(””); Copy constructor Khởi tạo đối tượng bằng một đối tượng khác public class MyDate { private int year, month, day; public MyDate() {...} public MyDate(MyDate d) { year = d.year; month = d.month; day = d.day; } ... } MyDate d = new MyDate(); d.setYear(2005); d.setMonth(9); d.setDay(12); MyDate openDay = new MyDate(d); MyDate dd = d; dd = new MyDate(); Kiểm soát truy cập public class MyDate { private int year, month, day; public MyDate() {...} public MyDate(MyDate d) { year = d.year; // year = d.getYear(); month = d.month; day = d.day; } ... } Test Hàm main() JUnit test Summary
Tài liệu liên quan