Chuong 01 - Tong quan ve OOP-java
Bé m«n C«ng nghÖ phÇn mÒm KHOA CÔNG NGHỆ THÔNG TIN TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI JAVA
Chương 1. Tổng quan về lập trình hướng đối tượng (OOP)
Chương 1. Tổng quan về lập trình hướng đối tượng (LTHĐT)
1. Lịch sử phát triển của các NNLT
2. Giới thiệu về LTHĐT
3. Phân tích và thiết kế HĐT
4. Các khái niệm cơ bản trong LTHĐT
NguyễnThị Thu Trang [email protected]
LTHDT 1
Department of Software Engineering 2
Chương 1. Tổng quan về lập trình hướng đối tượng (LTHĐT)
1. Lịch sử phát triển của các NNLT
2. Giới thiệu về LTHĐT
3. Phân tích và thiết kế HĐT
4. Các khái niệm cơ bản trong LTHĐT
1. Lịch sử phát triển của các NNLT
a. Hợp ngữ (Assembly language): Là một ngôn ngữ lập trình tuần tự, gần với tập các lệnh mã máy của CPU. Khó nhớ, khó viết, nhất là với những bài toán phức tạp. Khó sửa lỗi, bảo trì.
Department of Software Engineering 3
Department of Software Engineering 4
1
1. Lịch sử phát triển của các NNLT
1. Lịch sử phát triển của các NNLT
b. NNLT cấu trúc/thủ tục:
b. NNLT cấutrúc/thủ tục (tiếp): Tư tưởng chính: Tìm ra cách thể hiện bài toán cần giải quyết bằng những cấu trúc lập trình có trong các ngôn ngữ tương ứng. Tập trung chủ yếu vào việc viết phần mềm dựa trên các hàm/thủ tục/chương trình con. Dữ liệu và các hàm xử lý dữ liệu được tách rời nhau. Các thủ tục không bắt buộc một cách thức chung truy nhập vào dữ liệu.
Department of Software Engineering 5
Department of Software Engineering 6
1. Lịch sử phát triển của các NNLT
1. Lịch sử phát triển của các NNLT
c. NNLT hướng đốitượng: Giải quyết chung được số lượng lớn các bài toán Thể hiện các thành phần của bài toán là các "đốitượng" (object).
c. NNLT hướng đốitượng (tiếp): Mỗi đối tượng có thể coi như một "thành phần sống", tạo nên bởi dữ liệu và các hàm thao tác dữ liệuchứa ngay bên trong nó: Trạng thái: Dữ liệu của đối tượng Các hoạt động: Các hàm thao tác dữ liệu Thực hiện các thao tác nào đó. Các thao tác này thực hiện các chức năng của hệ thống.
Department of Software Engineering 7
Department of Software Engineering 8
2
Lập trình cấu trúc vs. OOP?
Lập trình cấu trúc: data structures + algorithms = Program (cấu trúc dữ liệu + giải thuật = Chương trình) OOP : objects + messages = Program (đối tượng + thông điệp = Chương trình)
Chương 1. Tổng quan về lập trình hướng đối tượng (LTHĐT)
1. Lịch sử phát triển của các NNLT
2. Giới thiệu về LTHĐT
3. Phân tích và thiết kế HĐT
4. Các khái niệm cơ bản trong LTHĐT
Department of Software Engineering 9
Department of Software Engineering 10
2. Giới thiệu về LTHĐT
Lịch sử củacôngnghệ hướng đốitượng
Đối tượng là gì?
Đối tượng trong thế giới thực, ví dụ một chiếc ô tô Liên quan đến chiếc ô tô: Các thông tin về chiếc xe như: màu sắc, tốc độ, số km đã đi được,... Các hoạt động của chiếc xe như: tăng tốc khi nhấn ga, giảm tốc khi đạp phanh,...
Các đối tượng trong thế giới thực có thể được mô hình hóa trong các ngôn ngữ lập trình, gọi là đối tượng (object).
Department of Software Engineering 11
Department ofent of Softftwwaar ree Engi Engi neeringg 12
3
Đối tượng là gì?
Đối tượng là gì?
Đối tượng diễn tả một thực thể, có thể là vật chất, khái niệmhoặcphầnmềm. Thực thể vật chất
Thực thể khái niệm
Thực thể phần mềm
Là một thựcthể được đóng gói thành trạng thái (state) và hành vi (behavior). Trạng thái được biểu diễn bởi các thuộc tính (attributes) và các mối quan hệ (relationships). Hành vi được biểu diễn bởi các thao tác (operations), phương thức (methods).
Department of Software Engineering 13
Department of Software Engineering 14
Một đối tượng có trạng thái
Trạng thái củamột đốitượng là một trong các điềukiệnchứng tỏ đốitượng đótồn tại. Trạng thái củamột đốitượng thường thay đổi theo thờigian.
Một đối tượng có hành vi
Hành vi quyết định đốitượng đóhành động và đáp trả như thế nào đốivới bên ngoài. Hành vi nhìn thấy được củamột đối tượng được mô hình thành một tập các thông điệpnócóthể đáp trả (các thao tác mà đốitượng đóthực hiện).
Department of Software Engineering 15
Department of Software Engineering 16
4
Một đối tượng có định danh duy nhất
Mỗi đối tượng đều có định danh duy nhất, dù trạng thái củanócóthể giống với đối tượng khác.
Chương 1. Tổng quan về lập trình hướng đối tượng (LTHĐT)
1. Lịch sử phát triển của các NNLT
2. Giới thiệu về LTHĐT
3. Phân tích và thiết kế HĐT
4. Các khái niệm cơ bản trong LTHĐT
Department of Software Engineering 17
Department of Software Engineering 18
3. Phân tích và thiết kế hướng đối tượng
Phân tích và thiết kế hướng đối tượng (Object-oriented Analysis and Design - OOAD) là một trong các phương pháp hiệu quả nhất để phát triển phần mềm. Sử dụng ngôn ngữ mô hình hóa UML (Unified Modeling Language).
Chương 1. Tổng quan về lập trình hướng đối tượng (LTHĐT)
1. Lịch sử phát triển của các NNLT
2. Giới thiệu về LTHĐT
3. Phân tích và thiết kế HĐT
4. Các khái niệm cơ bản trong LTHĐT
Department of Software Engineering 19
Department of Software Engineering 20
5
4. Các khái niệm cơ bản trong LTHĐT
Trừu tượng hóa (Abstraction) Đóng gói (Encapsulation) Mô đun hóa (Modularity) Tái sử dụng (Re-usability) Kế thừa (Inheritance) Đa hình (Polymophism)
4.1. Trừu tượng hóa
Các đặc tính cần thiết của mộtthực thể phân biệtnó với các thựcthể khác cùng loại Thành các lớp (class).
Department of Software Engineering 21
Department of Software Engineering 22
4.2. Đóng gói
Đóng gói (Encapsulation) hay che giấu dữ liệu (Data Hiding): Cho phép quy định những người sử dụng chỉ được phép truy nhập và sử dụng những gì đã quy định cho họ. Một phần lớp được che dấu và không cho người sử dụng được quyền truy nhập. Cho phép những người thiết kế các lớp có khả năng thay đổi hay định nghĩa lại lớp mà vẫn chắc chắn rằng không ảnh hưởng tới chương trình của những người sử dụng lớp này.
Ví dụ về tính đóng gói
Giáo sư Clark có khả năng dạy4 lớp trong kỳ học tới.
Department of Software Engineering 23
Department of Software Engineering 24
6
Tính đóng gói trong Java
4.3. Mô đun hóa
Java sử dụng các từ khóa để xác định khả năng truy nhập các thông tin dữ liệutừ bên ngoài lớp: public, private, và protected. public private protected
Mô đun hóalàchiamột hệ thống phức tạp thành những phầncóthể quảnlý được. Mô đun hóagiúptacóthể hiểu được những hệ thống phức tạp.
Department of Software Engineering 25
Department of Software Engineering 26
Ví dụ về mô đun hóa
Ví dụ về việcchiahệ thống phức tạp thành các hệ thống nhỏ hơn:
4.4. Kế thừa
Khả năng cho phép chúng ta có thể xây dựng được các lớp mới dựa trên các lớp đã có sẵn, chúng ta chỉ cần thêm vào đó những gì chưa có, những gì chưa đủ. Định nghĩa phân cấpcủacác trừu tượng hóa mà các lớp con kế thừa từ mộthoặc nhiều lớpcha. Đơnkế thừa (Single Inheritance) Đakế thừa (Multiple Inheritance) Mốiquanhệ "Là", "Là một loại".
Department of Software Engineering 27
Department of Software Engineering 28
7
Ví dụ về đơn kế thừa
Một lớp kế thừatừ 1 lớp khác
Ví dụ về đa kế thừa
Một lớp có thể kế thừa từ nhiềulớp khác
Java chỉ cho phép đơn kế thừa
C++ cho phép đakế thừa
Department of Software Engineering 29
Department of Software Engineering 30
4.5. Tái sử dụng
Sử dụng lạicác lớp đã viết mã 3cách để sử dụng lạilớp: Sử dụng trực tiếp các đối tượng của lớp này như là các biến cần thiết để giải quyết bài toán Dễ nhất. Sử dụng các biến - đối tượng thuộc một lớp để xây dựng nên các lớp mới (tức là đối tượng nằm bên trong lớp mới Liên kết, kết tập hay hợp thành. Kế thừa.
4.6. Đa hình
Mộtphương thứccócác cách thể hiện khác nhau trên nhiềuloại đối tượng khác nhau Đa hình (Polymorphism). Tính đahìnhlàmộttrong những đặctính quan trọng nhấtcủahệ thống hướng đối tượng.
Department of Software Engineering 31
Department of Software Engineering 32
8
Ví dụ về đa hình
Department of Software Engineering 33
9
Bạn đang đọc truyện trên: AzTruyen.Top