Là khái niệm cơ bản, quan trọng nhất của lập trình hướng đối tượng (Object-oriented programming – OOP).
Mỗi đối tượng được xác định bởi định danh (Identifier)
Gồm 2 thành phần: thuộc tính và phương thức.
VD: Person, car, bicycle,
Được xem như một cấu trúc gộp cả dữ liệu với phương thức thao tác trên dữ liệu đó.
12 trang |
Chia sẻ: lylyngoc | Lượt xem: 1849 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Lập trình hướng đối tượng trong JAVA - Hoàng Mạnh Hà, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Click to edit Master title style Click to edit Master text styles Second level Third level Fourth level Fifth level 2/23/2014 SGU - CNTT - Lập Trình JAVA ‹#› Lập trình hướng đối tượng trong JAVA ThS. Hoàng Mạnh Hà hoangha84@gmail.com https://sites.google.com/site/hoangha84 Đối tượng (Object) SGU - CNTT - Lập Trình JAVA 2 Là khái niệm cơ bản, quan trọng nhất của lập trình hướng đối tượng (Object-oriented programming – OOP). Mỗi đối tượng được xác định bởi định danh (Identifier) Gồm 2 thành phần: thuộc tính và phương thức. VD: Person, car, bicycle, … Được xem như một cấu trúc gộp cả dữ liệu với phương thức thao tác trên dữ liệu đó. Class và Instances SGU - CNTT - Lập Trình JAVA 3 Class (Lớp) là một kiểu chung cho tất cả các đối tượng có cùng đặc trưng. Instances (Thể hiện): là các đối tượng cụ thể trong lớp. VD: Lớp Student có các thể hiện là “Bắc”, “Nam”, “Đông”, … 4 tính chất của OOP SGU - CNTT - Lập Trình JAVA 4 Tính trừu tượng (Abstraction): bỏ qua các tính chất phức tạp, chỉ đưa ra các thuộc tính và phương thức cần thiết cho đối tượng. Tính đóng gói (Encapsulation): sự truy xuất các thành phần dữ liệu của đối tượng chỉ được phép khi thông qua các phương thức của đối tượng. Tính kế thừa (Inheritance): cho phép xây dựng một lớp dựa trên lớp có sẵn. Tính đa hình (Polymorphism): cho phép thực hiện các xử lý khác nhau tương ứng cho các đối tượng khác nhau với cùng một thông điệp Overloading: các phương thức cùng tên, khác tham số Overriding: các phương thức cùng tên của các lớp kế thừa Static Method SGU - CNTT - Lập Trình JAVA 5 Đa số các phương thức được chạy bằng cách gọi chúng từ các đối tượng cụ thể (gọi từ Instance) Một số phương thức được gắn trực tiếp với class bằng từ khóa static. Thường dùng cho các phương thức phổ biến, được sử dụng thường xuyên của class. Khi đó có thể gọi phương thức trực tiếp thông qua class: Class.methodName(parameters) Method Overloading SGU - CNTT - Lập Trình JAVA 6 Các method có thể có cùng tên trong cùng class nếu chúng khác tham số đầu vào, gọi là Method Overloading. Khi đó, trình biên dịch sẽ lựa chọn phương thức phù hợp dựa trên tập tham số đầu vào: số lượng, kiểu, thứ tự tham số. Thường dùng để tạo các phương thức có chức năng tương tự nhau dựa trên các tham số đầu vào khác nhau. Tính kế thừa (Inheritance) SGU - CNTT - Lập Trình JAVA 7 Một class kế thừa từ một class khác. Class cha: superclass Class con: subclass Direct superclass / Indirect superclass Trong Java tất cả mọi class đều kế thừa từ class Object. Trong Java chỉ có kế thừa đơn. Access modifier public, private, protected SGU - CNTT - Lập Trình JAVA 8 public: truy xuất từ tất cả các đối tượng của class. private: chỉ cho phép truy xuất trong chính class. protected: cho phép truy xuất trong chính class đó, class con kế thừa nó hoặc những class trong cùng package. Abstract Classes and Methods SGU - CNTT - Lập Trình JAVA 9 Trong một số trường hợp, ta cần tạo ra class mà không cần tạo đối tượng từ nó: Abstract Class Những lớp kế thừa từ Abstract Class phải xây dựng bổ sung những phương thức cụ thể để có thể tạo object nếu không thì class kế thừa đó vẫn là một abstract class. Thường dùng để tạo ra các khuôn mẫu cho các class con. final methods and classes SGU - CNTT - Lập Trình JAVA 10 Các final method không được phép override ở class con. Các final class không thể có class con. Abstract Classes Compared to Interfaces SGU - CNTT - Lập Trình JAVA 11 Abstract classes are similar to interfaces. With abstract classes, you can declare fields that are not static and final, and define public, protected, and private concrete methods. With interfaces, all fields are automatically public, static, and final, and all methods that you declare or define (as default methods) are public. In addition, you can extend only one class, whether or not it is abstract, whereas you can implement any number of interfaces. Abstract classes or interfaces? SGU - CNTT - Lập Trình JAVA 12 Consider using abstract classes if any of these statements apply to your situation: You want to share code among several closely related classes. You expect that classes that extend your abstract class have many common methods or fields, or require access modifiers other than public (such as protected and private). You want to declare non-static or non-final fields. This enables you to define methods that can access and modify the state of the object to which they belong. Abstract classes or interfaces? SGU - CNTT - Lập Trình JAVA 13 Consider using interfaces if any of these statements apply to your situation: You expect that unrelated classes would implement your interface. For example, the interfaces Comparable and Clone-able are implemented by many unrelated classes. You want to specify the behavior of a particular data type, but not concerned about who implements its behavior. You want to take advantage of multiple inheritance of type.