SlideShare une entreprise Scribd logo
1  sur  26
Giới thiệu về Lập trình hướng
đối tượng
Lập trình hướng đối tượng
2
Nội dung
• Lịch sử phát triển của kỹ thuật lập trình
• Hạn chế của kỹ thuật lập trình truyền thống
• Khái niệm lập trình hướng đối tượng
– Đóng gói/Che giấu thông tin
3
Tài liệu tham khảo
• Giáo trình Lập trình HĐT, chương 3
Tổng quan về NNLT
• https://www.youtube.com/watch?v=Og847HVw
RSI
9/25/2022 4
Ngôn ngữ lập trình tốt?
• Khả năng thể hiện (Expressive power): Phần lớn các ngôn ngữ là
Turing-complete. Nhưng ngôn ngữ tốt sẽ giúp cho lập trình viên viết
các đoạn mã rõ ràng, chính xác, dễ bảo trì (đặc biệt cho các hệ thống
lớn)
• Dễ cho người mới học
• Dễ cài đặt: chạy trên máy nhỏ, cài đặt nền tảng dễ dàng, miễn phí
• Chuẩn hóa
• Mã nguồn mở (trình biên dịch/thông dịch)
• Có hệ sinh thái tốt
9/25/2022 5
Phân loại NNLT
• Declarative (khai báo)
– Functional: Lisp/Scheme, ML, Haskell, Erlang
– Logic, constraint-based: Prolog, SQL
• Imperative (mệnh lệnh)
– Procedural: C, Ada, Fortran, . . .
– Object-oriented: Smalltalk, Eiffel, Java, . . .
9/25/2022 6
Lập trình thủ tục
9/25/2022 7
Lập trình hàm
9/25/2022 8
Lập trình logic
9
?-gcd(18,63,9)
?-gcd(15,25,X)
Biên dịch và thông dịch
9/25/2022 10
Biên dịch và thông dịch
9/25/2022 11
Biên dịch và thông dịch
9/25/2022 12
13
Phần mềm ngày càng phức tạp
• Kích thước ngày càng lớn*
– LibreOffice: 9.5M dòng lệnh
– Chromium: 25.6M dòng lệnh
– NetBeans IDE: 95.4M dòng lệnh
• Số lượng người tham gia phát triển lớn
• Người dùng ngày càng đòi hỏi nhiều chức
năng => phần mềm luôn cần được sửa đổi
Nguồn: https://www.openhub.net, 8/2020
14
Dữ liệu trong lập trình thủ tục
struct MyDate {
int year, month, day;
};
...
print_date(MyDate d) {
printf(”%d / %d / %dn”, d.day,
d.month, d.year);
}
15
Dữ liệu trong lập trình thủ tục
struct MyDate {
int year; int month; int day;
}
MyDate d;
d.day = 32; // invalid day
d.day = 31; d.month = 2; // how to check?
d.day = d.day + 1; //
16
Dữ liệu trong lập trình thủ tục
Thay đổi cấu trúc dữ liệu:
struct MyDate {
int year, month, day;
}
struct MyDate {
public short year;
public short mon_n_day;
}
17
Giải pháp
• Che giấu dữ liệu (che giấu cấu trúc)
• Truy cập dữ liệu thông qua giao diện xác
định
class MyDate {
private int year, mon, day;
public int getDay() {...}
public boolean setDay(int) {...}
...
}
18
Sử dụng giao diện
MyCalendar.java:
MyDate d = new MyDate();
...
d.day = 32; // error
d.setDay(31);
d.setMonth(2); // should return False
19
Data
Method 1 Method 2 Method 3
Data
Method 1 Method 2 Method 3
an object
another object
Function 1 Function 2
Global data
Function 4 Function 3
20
Đóng gói và che giấu thông tin
• Đóng gói: Đóng gói dữ liệu và các thao tác
tác động lên dữ liệu thành một thể thống
nhất (lớp đối tượng) thuận tiện cho sử dụng
lại
• Che giấu thông tin
– thao tác với dữ liệu thông qua các giao diện xác
định
– che giấu cấu trúc dữ liệu khỏi đoạn mã sử dụng
21
Lớp và đối tượng
• Lớp đối tượng (class) là khuôn mẫu để sinh
ra đối tượng
• Đối tượng là thể hiện (instance) của một
lớp. Đối tượng có
– thuộc tính (dữ liệu)
– hành vi (phương thức)
22
Hệ thống hướng đối tượng
• Bao gồm một tập các đối tượng
– mỗi đối tượng chịu trách nhiệm một công việc
• Các đối tượng tương tác thông qua trao đổi
thông điệp (message passing)
• Các đối tượng có thể tồn tại phân tán/có thể
hoạt động song song
Mô hình hóa đối tượng
MyDate
-year
-month
-day
+ getDay()
+ setDay(int)
+ getMonth()
+ setMonth(int)
+ getYear()
+ setYear(int)
- validDate(int, int, int)
23
24
Lợi ích của lập trình hướng đối tượng
• năng suất lập trình (năng suất phát triển)
• chất lượng phần mềm
• tính hiểu được của phần mềm
• vòng đời của phần mềm
25
OOP và OOL
• Có thể thể hiện phần nào tư tưởng đóng
gói/che giấu thông tin trên ngôn ngữ thủ tục
– không triệt để, khó kiểm soát
• Ngôn ngữ hướng đối tượng cung cấp khả
năng kiểm soát truy cập; ngoài ra
– kế thừa
– đa hình
26

Contenu connexe

Similaire à 1.OOP Introduction (1).pptx

Lecture01_Phan mem va ky nghe phan mem.pdf
Lecture01_Phan mem va ky nghe phan mem.pdfLecture01_Phan mem va ky nghe phan mem.pdf
Lecture01_Phan mem va ky nghe phan mem.pdfMai Hieu
 
T d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuongT d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuongtoiseden91
 
Lap trinh huong doi tuong voi java tran dinh que
Lap trinh huong doi tuong voi java   tran dinh queLap trinh huong doi tuong voi java   tran dinh que
Lap trinh huong doi tuong voi java tran dinh queNguyễn Công Hoàng
 
Lập trình hướng đối tượng với Java - Trần Đình Quế
Lập trình hướng đối tượng với Java  - Trần Đình QuếLập trình hướng đối tượng với Java  - Trần Đình Quế
Lập trình hướng đối tượng với Java - Trần Đình Quếf3vthd
 
05_Project_management.ppt
05_Project_management.ppt05_Project_management.ppt
05_Project_management.ppttienlqtienlq
 
Quản lý dự án phần mềm dasssssssssaasdasdasd
Quản lý dự án phần mềm dasssssssssaasdasdasdQuản lý dự án phần mềm dasssssssssaasdasdasd
Quản lý dự án phần mềm dasssssssssaasdasdasdLNhtQuang11
 
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao nataliej4
 
Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...
Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...
Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...Son Le
 
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm; Người hướng dẫn: -; ...
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm;  Người hướng dẫn: -; ...Windows Programming Tác giả: Bộ môn Công nghệ phần mềm;  Người hướng dẫn: -; ...
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm; Người hướng dẫn: -; ...VTrung46
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGTrường Phạm
 
Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1volll
 
Oop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượngOop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượngTráng Hà Viết
 
Lập trình hướng đối tượng với java
Lập trình hướng đối tượng với javaLập trình hướng đối tượng với java
Lập trình hướng đối tượng với javaNgô Đăng Tân
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programmingDucLe868608
 
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...tPhan78
 
Các phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptxCác phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptxdong92356
 
Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#Văn Dũng
 

Similaire à 1.OOP Introduction (1).pptx (20)

Lecture01_Phan mem va ky nghe phan mem.pdf
Lecture01_Phan mem va ky nghe phan mem.pdfLecture01_Phan mem va ky nghe phan mem.pdf
Lecture01_Phan mem va ky nghe phan mem.pdf
 
T d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuongT d que_lap_trinh_huong_doi_tuong
T d que_lap_trinh_huong_doi_tuong
 
Lap trinh huong doi tuong voi java tran dinh que
Lap trinh huong doi tuong voi java   tran dinh queLap trinh huong doi tuong voi java   tran dinh que
Lap trinh huong doi tuong voi java tran dinh que
 
Lập trình hướng đối tượng với Java - Trần Đình Quế
Lập trình hướng đối tượng với Java  - Trần Đình QuếLập trình hướng đối tượng với Java  - Trần Đình Quế
Lập trình hướng đối tượng với Java - Trần Đình Quế
 
Lthdt
LthdtLthdt
Lthdt
 
05_Project_management.ppt
05_Project_management.ppt05_Project_management.ppt
05_Project_management.ppt
 
Quản lý dự án phần mềm dasssssssssaasdasdasd
Quản lý dự án phần mềm dasssssssssaasdasdasdQuản lý dự án phần mềm dasssssssssaasdasdasd
Quản lý dự án phần mềm dasssssssssaasdasdasd
 
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao
 
Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...
Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...
Một số ngôn ngữ lập trình phổ biến hiện nay - Popular programming languages n...
 
Phan 1 sv
Phan 1   svPhan 1   sv
Phan 1 sv
 
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm; Người hướng dẫn: -; ...
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm;  Người hướng dẫn: -; ...Windows Programming Tác giả: Bộ môn Công nghệ phần mềm;  Người hướng dẫn: -; ...
Windows Programming Tác giả: Bộ môn Công nghệ phần mềm; Người hướng dẫn: -; ...
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
 
Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1Lap trinhhuongdoituong v3.1
Lap trinhhuongdoituong v3.1
 
Oop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượngOop unit 01 tổng quan lập trình hướng đối tượng
Oop unit 01 tổng quan lập trình hướng đối tượng
 
OOP
OOPOOP
OOP
 
Lập trình hướng đối tượng với java
Lập trình hướng đối tượng với javaLập trình hướng đối tượng với java
Lập trình hướng đối tượng với java
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programming
 
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
lap-trinh-huong-doi-tuong_nguyen-manh-son_lthdt_ptit - [cuuduongthancong.com]...
 
Các phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptxCác phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptx
 
Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#
 

Dernier

THUYẾT MINH DỰ ÁN NHÀ Ở XÃ HỘI 0918755356
THUYẾT MINH DỰ ÁN NHÀ Ở XÃ HỘI 0918755356THUYẾT MINH DỰ ÁN NHÀ Ở XÃ HỘI 0918755356
THUYẾT MINH DỰ ÁN NHÀ Ở XÃ HỘI 0918755356LẬP DỰ ÁN VIỆT
 
THUYẾT MINH DỰ ÁN NÔNG NGHIỆP CÔNG NGHỆ CAO.docx
THUYẾT MINH DỰ ÁN NÔNG NGHIỆP CÔNG NGHỆ CAO.docxTHUYẾT MINH DỰ ÁN NÔNG NGHIỆP CÔNG NGHỆ CAO.docx
THUYẾT MINH DỰ ÁN NÔNG NGHIỆP CÔNG NGHỆ CAO.docxLẬP DỰ ÁN VIỆT
 
THuyết minh dự án nông nghiệp công nghệ cao kết hợp.docx
THuyết minh dự án nông nghiệp công nghệ cao kết hợp.docxTHuyết minh dự án nông nghiệp công nghệ cao kết hợp.docx
THuyết minh dự án nông nghiệp công nghệ cao kết hợp.docxLẬP DỰ ÁN VIỆT
 
Thuyết minh dự án chăn nuôi công nghệ cao
Thuyết minh dự án chăn nuôi công nghệ caoThuyết minh dự án chăn nuôi công nghệ cao
Thuyết minh dự án chăn nuôi công nghệ caoLẬP DỰ ÁN VIỆT
 
Thuyết minh dự án trồng chuối công nghệ cao.docx
Thuyết minh dự án trồng chuối công nghệ cao.docxThuyết minh dự án trồng chuối công nghệ cao.docx
Thuyết minh dự án trồng chuối công nghệ cao.docxLẬP DỰ ÁN VIỆT
 
THuyết minh dự án trung tâm thương mại.docx
THuyết minh dự án trung tâm thương mại.docxTHuyết minh dự án trung tâm thương mại.docx
THuyết minh dự án trung tâm thương mại.docxLẬP DỰ ÁN VIỆT
 

Dernier (6)

THUYẾT MINH DỰ ÁN NHÀ Ở XÃ HỘI 0918755356
THUYẾT MINH DỰ ÁN NHÀ Ở XÃ HỘI 0918755356THUYẾT MINH DỰ ÁN NHÀ Ở XÃ HỘI 0918755356
THUYẾT MINH DỰ ÁN NHÀ Ở XÃ HỘI 0918755356
 
THUYẾT MINH DỰ ÁN NÔNG NGHIỆP CÔNG NGHỆ CAO.docx
THUYẾT MINH DỰ ÁN NÔNG NGHIỆP CÔNG NGHỆ CAO.docxTHUYẾT MINH DỰ ÁN NÔNG NGHIỆP CÔNG NGHỆ CAO.docx
THUYẾT MINH DỰ ÁN NÔNG NGHIỆP CÔNG NGHỆ CAO.docx
 
THuyết minh dự án nông nghiệp công nghệ cao kết hợp.docx
THuyết minh dự án nông nghiệp công nghệ cao kết hợp.docxTHuyết minh dự án nông nghiệp công nghệ cao kết hợp.docx
THuyết minh dự án nông nghiệp công nghệ cao kết hợp.docx
 
Thuyết minh dự án chăn nuôi công nghệ cao
Thuyết minh dự án chăn nuôi công nghệ caoThuyết minh dự án chăn nuôi công nghệ cao
Thuyết minh dự án chăn nuôi công nghệ cao
 
Thuyết minh dự án trồng chuối công nghệ cao.docx
Thuyết minh dự án trồng chuối công nghệ cao.docxThuyết minh dự án trồng chuối công nghệ cao.docx
Thuyết minh dự án trồng chuối công nghệ cao.docx
 
THuyết minh dự án trung tâm thương mại.docx
THuyết minh dự án trung tâm thương mại.docxTHuyết minh dự án trung tâm thương mại.docx
THuyết minh dự án trung tâm thương mại.docx
 

1.OOP Introduction (1).pptx

  • 1. Giới thiệu về Lập trình hướng đối tượng Lập trình hướng đối tượng
  • 2. 2 Nội dung • Lịch sử phát triển của kỹ thuật lập trình • Hạn chế của kỹ thuật lập trình truyền thống • Khái niệm lập trình hướng đối tượng – Đóng gói/Che giấu thông tin
  • 3. 3 Tài liệu tham khảo • Giáo trình Lập trình HĐT, chương 3
  • 4. Tổng quan về NNLT • https://www.youtube.com/watch?v=Og847HVw RSI 9/25/2022 4
  • 5. Ngôn ngữ lập trình tốt? • Khả năng thể hiện (Expressive power): Phần lớn các ngôn ngữ là Turing-complete. Nhưng ngôn ngữ tốt sẽ giúp cho lập trình viên viết các đoạn mã rõ ràng, chính xác, dễ bảo trì (đặc biệt cho các hệ thống lớn) • Dễ cho người mới học • Dễ cài đặt: chạy trên máy nhỏ, cài đặt nền tảng dễ dàng, miễn phí • Chuẩn hóa • Mã nguồn mở (trình biên dịch/thông dịch) • Có hệ sinh thái tốt 9/25/2022 5
  • 6. Phân loại NNLT • Declarative (khai báo) – Functional: Lisp/Scheme, ML, Haskell, Erlang – Logic, constraint-based: Prolog, SQL • Imperative (mệnh lệnh) – Procedural: C, Ada, Fortran, . . . – Object-oriented: Smalltalk, Eiffel, Java, . . . 9/25/2022 6
  • 7. Lập trình thủ tục 9/25/2022 7
  • 10. Biên dịch và thông dịch 9/25/2022 10
  • 11. Biên dịch và thông dịch 9/25/2022 11
  • 12. Biên dịch và thông dịch 9/25/2022 12
  • 13. 13 Phần mềm ngày càng phức tạp • Kích thước ngày càng lớn* – LibreOffice: 9.5M dòng lệnh – Chromium: 25.6M dòng lệnh – NetBeans IDE: 95.4M dòng lệnh • Số lượng người tham gia phát triển lớn • Người dùng ngày càng đòi hỏi nhiều chức năng => phần mềm luôn cần được sửa đổi Nguồn: https://www.openhub.net, 8/2020
  • 14. 14 Dữ liệu trong lập trình thủ tục struct MyDate { int year, month, day; }; ... print_date(MyDate d) { printf(”%d / %d / %dn”, d.day, d.month, d.year); }
  • 15. 15 Dữ liệu trong lập trình thủ tục struct MyDate { int year; int month; int day; } MyDate d; d.day = 32; // invalid day d.day = 31; d.month = 2; // how to check? d.day = d.day + 1; //
  • 16. 16 Dữ liệu trong lập trình thủ tục Thay đổi cấu trúc dữ liệu: struct MyDate { int year, month, day; } struct MyDate { public short year; public short mon_n_day; }
  • 17. 17 Giải pháp • Che giấu dữ liệu (che giấu cấu trúc) • Truy cập dữ liệu thông qua giao diện xác định class MyDate { private int year, mon, day; public int getDay() {...} public boolean setDay(int) {...} ... }
  • 18. 18 Sử dụng giao diện MyCalendar.java: MyDate d = new MyDate(); ... d.day = 32; // error d.setDay(31); d.setMonth(2); // should return False
  • 19. 19 Data Method 1 Method 2 Method 3 Data Method 1 Method 2 Method 3 an object another object Function 1 Function 2 Global data Function 4 Function 3
  • 20. 20 Đóng gói và che giấu thông tin • Đóng gói: Đóng gói dữ liệu và các thao tác tác động lên dữ liệu thành một thể thống nhất (lớp đối tượng) thuận tiện cho sử dụng lại • Che giấu thông tin – thao tác với dữ liệu thông qua các giao diện xác định – che giấu cấu trúc dữ liệu khỏi đoạn mã sử dụng
  • 21. 21 Lớp và đối tượng • Lớp đối tượng (class) là khuôn mẫu để sinh ra đối tượng • Đối tượng là thể hiện (instance) của một lớp. Đối tượng có – thuộc tính (dữ liệu) – hành vi (phương thức)
  • 22. 22 Hệ thống hướng đối tượng • Bao gồm một tập các đối tượng – mỗi đối tượng chịu trách nhiệm một công việc • Các đối tượng tương tác thông qua trao đổi thông điệp (message passing) • Các đối tượng có thể tồn tại phân tán/có thể hoạt động song song
  • 23. Mô hình hóa đối tượng MyDate -year -month -day + getDay() + setDay(int) + getMonth() + setMonth(int) + getYear() + setYear(int) - validDate(int, int, int) 23
  • 24. 24 Lợi ích của lập trình hướng đối tượng • năng suất lập trình (năng suất phát triển) • chất lượng phần mềm • tính hiểu được của phần mềm • vòng đời của phần mềm
  • 25. 25 OOP và OOL • Có thể thể hiện phần nào tư tưởng đóng gói/che giấu thông tin trên ngôn ngữ thủ tục – không triệt để, khó kiểm soát • Ngôn ngữ hướng đối tượng cung cấp khả năng kiểm soát truy cập; ngoài ra – kế thừa – đa hình
  • 26. 26