Bài giảng Lập trình hướng đối tượng (dùng Java) Chương 1 Tổng quan về lập trình hướng đối tượng cung cấp cho người học các kiến thức về lịch sử các phương pháp lập trình; phương pháp lập trình hướng cấu trúc, thủ tục; các đặc trưng cơ bản của lập trình hướng đối tượng; một số ngôn ngữ lập trình hướng đối tượng. Mời các bạn cùng tham khảo.
Trang 1LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
( O bject O riented P rogramming)
Trang 2Tài liệu tham khảo
1. Trần Minh Thái, Bài giảng & Bài tập Lập trình hướng đối tượng trên Website: www.minhthai.edu.vn
2 Liang, Y Daniel, “Introduction to Java programming”, 6th edition, Pearson Prentice Hall,
2007
3 Richard L Halterman, “Object Oriented Programming in Java”, 2008
4 Bruce Eckel, “Thinking in Java”, 4th edition, 2006
5 J Barker, “Beginning Java Objects – From concept to code”, 2nd edition, 2005
6. C.S.Horsmann, G Cornell, “Core Java 2”, 2002
Trang 3Chương 5 Lập trình giao diện với Java
Chương 6 Lập trình đa luồng
Trang 4Đánh giá môn học
Thực hiện đồ án và vấn đáp (1 – 2 sinh viên/ đồ án)
Quyển báo cáo (file word): 3đ
Trang 5Đăng ký nhóm và đề tài
Thời gian: Chậm nhất ngày 24/02/2017
Cách thức đăng ký: Điền thông tin theo mẫu trên web www.minhthai.edu.vn Các đề tài:
Ứng dụng
Game
Các tiện ích
Trang 6Cấu trúc quyển báo cáo
Thứ tự nội dung (trình bày ở các trang khác nhau)
Trang 7Font chữ: Times New Roman
Kích thước font chữ: Tên chương: 15 (in đậm, canh center), tiêu đề: 13 (in đậm, canh left), nội dung: 13 (in thường, canh justify)
Đánh số nội dung: Sử dụng số tự nhiên (tối đa 3 cấp) Ví dụ: Chương 1, mục 1: 1.1, cấp 2 của 1.1
là 1.1.1, cấp 3 là 1.1.1.1
Lưu ý: Các mục lục, danh mục các bảng, danh mục các hình, đánh tài liệu tham khảo phải dùng tool tự động của MS Word
Trang 8Nội dung các chương
Tối thiểu phải gồm các chương sau
1. Mở đầu
2. Phân tích
3. Thiết kế
4. Thử nghiệm kết quả
Trang 93. Phương pháp lập trình hướng cấu trúc, thủ tục
4. Các đặc trưng cơ bản của lập trình hướng đối tượng
5. Một số ngôn ngữ lập trình hướng đối tượng
Trang 10Vì sao học lập trình hướng đối tượng?
• Object Oriented Programming (OOP) là phương pháp lập trình quan trọng
• Tất cả ngôn ngữ hiện đại đều object oriented hay hỗ trợ object và class
• Các framework, library, API hiện đại đều object oriented
• NET Framework Class Library (C#), Java API classes (Java),
• Laravel (PHP), Rails (Ruby),
• STL (C++), Django (Python), Android, …
• Bất kỳ ai bắt đầu công việc phát triển phần mềm nên làm quen với OOP và OO modeling
Trang 11CÁC PHƯƠNG PHÁP LẬP TRÌNH
Trang 12Phương pháp lập trình (PPLT)
• Các hướng dẫn, các bước để viết một chương trình trên máy tính
• Có cách “nhìn” về việc xây dựng các chương trình máy tính
Trang 14Lịch sử của PPLT
• C++/C#/Java/v.v… là NNLT để viết chương trình
• PPLT là hệ thống hướng dẫn các giai đoạn cần thiết, cấu trúc của một chương trình
• PPLT là các cách tiếp cận giúp cho quá trình cài đặt hiệu quả hơn
Trang 17Lập trình tuyến tính
Không mang tính thiết kế
Tiêu biểu là ngôn ngữ Basic, Fortran
Chương trình là một dãy các lệnh
Lập trình là viết các lệnh trong dãy
lệnh
Trang 18Lập trình tuyến tính: Đặc điểm
Chương trình đơn giản, số dòng lệnh ít
Thực hiện trình tự từ đầu đến cuối
Không có cấu trúc
Dùng các lệnh “goto/ gosub” để nhảy đến một vị trí nào đó trong chương trình
Có những đoạn lệnh được viết lặp đi lặp lại nhiều lần
Trang 19• Các cấu trúc lệnh: lệnh điều kiện, lệnh lặp
• Trừu tượng hóa (abstraction) theo chức năng: Làm được gì, không quan tâm chi tiết bên trong
• Loại bỏ/ hạn chế lệnh goto
Trang 20Lập trình có cấu trúc
• Khuyết điểm:
• Khó phân công cho nhiều người cùng viết
• Dữ liệu được “thả tự do”
• Có những đoạn lệnh được viết lặp đi lặp lại nhiều lần
Trang 21Lập trình thủ tục
Chương trình là một hệ thống các thủ tục/ hàm Mỗi thủ tục/ hàm là một dãy các lệnh
Lập trình là xây dựng các thủ tục/ hàm
Kết quả là hệ thống cấu trúc và mối quan hệ giữa các hàm/ thủ tục
Tiêu biểu là ngôn ngữ Pascal, C
Trang 22Lập trình thủ tục
Phân chia công việc thành các chức năng đơn giản hơn gọi là lập trình đơn thể (module)
Tiếp cận theo phương pháp top-down
Trang 23Lập trình thủ tục: Đặc điểm
Ưu điểm
Đơn giản hóa quá trình thiết kế và cài đặt
Dễ đọc chương trình, hiểu chi tiết bài toán
Các chương trình con tương đối độc lập, dễ phân công cho từng nhóm
Trang 24Lập trình thủ tục: Đặc điểm
Khuyết điểm
Khi thay đổi dữ liệu thì phải thực hiện các thay đổi ở mọi đơn thể có tác động trên chúng
Hàm và dữ liệu không có quan hệ với nhau
Hàm không hạn chế truy nhập tới các biến toàn cục
Trang 25Lập trình thủ tục: Đặc điểm
Khuyết điểm
Sai sót trong việc trao đổi thông tin giữa các thành viên trong nhóm có thể mất nhiều thời gian
để sửa chữa chương trình
Phần xử lý nằm rải rác và phải hiểu rõ cấu trúc dữ liệu
Khó bảo trì chương trình
Trang 26Lập trình Hướng đối tượng
(Object-oriented Programming)
Tư duy mới, tiếp cận theo hướng đối tượng để giải các bài toán trên máy tính
Thiết kế và phát triển phần mềm dựa trên kiến trúc lớp và đối tượng
Inheritance
OOP
Reusability Extensibility
Security Flexibility
Trang 27Mục tiêu
• Loại bỏ những thiếu sót của tiếp cận theo thủ tục
• Tiếp cận theo hướng trừu tượng hoá (abstraction)
• Dữ liệu được xem là phần trung tâm và được bảo vệ
• Hàm gắn kết với dữ liệu
Lập trình Hướng đối tượng
(Object-oriented Programming)
Trang 28Mục tiêu
Phân tách bài toán thành nhiều đối tượng và yêu cầu chúng thực hiện hành động của mình
Tăng cường khả năng tái sử dụng code
Tiếp cận bottom-up
Lập trình Hướng đối tượng
(Object-oriented Programming)
Trang 29Ưu điểm
• Cung cấp một cấu trúc module rõ ràng: Giao diện định nghĩa rõ ràng và chi tiết cài đặt ẩn
• Duy trì và sửa đổi mã nguồn dễ dàng
• Cung cấp framework tốt với các thư viện mã nguồn
Lập trình Hướng đối tượng
(Object-oriented Programming)
Trang 30LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Trang 31Sự trừu tượng hóa (Abstraction)?
• Trừu tượng hóa
Giao diện – Cài đặt
Trang 33Sự trừu tượng hoá
Thế giới thực PPLT Ngôn ngữ lập trình
Đối tượng trong thế giới thực Đối tượng Biến có kiểu cấu trúc
Khái niệm chung về đối tượng Lớp đối tượng Kiểu dữ liệu cấu trúc
Các thông tin được quan tâm về 1 đối tượng Thuộc tính Thành phần thuộc tính của kiểu cấu
trúc
Các khả năng của đối tượng Phương thức Các phương thức
Tương tác giữa các đối tượng Truyền thông điệp Gọi thực hiện phương thức
Trang 34Đối tượng (Object)?
Trang 366.36
Đối tượng Phần mềm
(Software Object)
Dùng để biểu diễn các đối tượng thế giới thực
Trạng thái: thuộc tính (attribute/
property)
Hành động: phương thức (method)
Trang 37Đối tượng Phần mềm
Đối tượng (object) là một thực thể phần
mềm bao bọc các thuộc tính và các
phương thức liên quan
Đối tượng phần mềm Đối tượng phần mềm Xe Đạp
Thuộc tính được xác định bởi giá trị cụ thể gọi là thuộc tính thể hiện
Một đối tượng cụ thể được gọi là một thể hiện.
Trang 38KHÁI NIỆM LỚP (class)
VÀ ĐỐI TƯỢNG (object)
Trang 39Lớp?
• Nhiều đối tượng cùng loại lớp
• Nhiều đối tượng cùng loại chia sẻ những đặc điểm chung
Trang 40Lớp?
Một lớp là một thiết kế (blueprint) hay mẫu (prototype) cho các đối tượng cùng kiểu
VD: lớp XeDap là một thiết kế chung cho nhiều đối tượng xe đạp được tạo ra
Lớp định nghĩa các thuộc tính và các phương thức chung cho tất cả các đối tượng của cùng một loại
Trang 41Đối tượng?
• Một đối tượng là một thể hiện (instance) cụ thể của một lớp
• VD: mỗi đối tượng xe đạp là một thể hiện của lớp XeDap
• Mỗi thể hiện có thể có những giá trị thuộc tính khác nhau
• VD: một xe đạp có thể đang chạy ở vận tốc 15 mph/ một xe khác có thể là đang chạy ở vận tốc 10 mph
Trang 426.42
Ví dụ
Khai báo cho lớp XeDap
Đối tượng của lớp XeDap
Trang 43Các thành phần trong lớp
Thuộc tính (attribute) là dữ liệu trình bày các đặc điểm về một đối tượng
Phương thức (method) có liên quan tới những việc mà đối tượng có thể làm Một phương thức
đáp ứng một chức năng tác động lên dữ liệu của đối tượng (thuộc tính)
Trang 44Tương tác giữa các đối tượng
Thông điệp (message) là một yêu cầu một hoạt động
Đối tượng nhận thông điệp
Tên của phương thức thực hiện
Các tham số mà phương thức cần
Truyền thông điệp: một đối tượng gọi một hay nhiều phương thức của đối tượng khác để yêu cầu
thông tin
Trang 45CÁC ĐẶC TÍNH CỦA
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Trang 46Các đặc tính của hướng đối tượng
1. Tính đóng gói (Encapsulation)
• Ẩn thông tin (Information Hiding)
• Giao tiếp (Interface)
2. Tính thừa kế (Inheritance)
3. Tính đa hình (Polymorphism)
Trang 47Tính đóng gói
Che giấu việc thực thi chi tiết của một đối tượng
Trang 48Tính đóng gói
Giao tiếp: Cung cấp các phương thức cần thiết
để sử dụng đối tượng
Trang 49Ẩn thông tin
Cách thức thuộc tính được lưu trữ hay phương thức được cài đặt như thế nào được che giấu khỏi các đối tượng khác
Trang 50Tính thừa kế
Animals
Trang 516.51
Tính thừa kế
• Cho phép các lớp được định nghĩa kế thừa từ các lớp khác
• VD: lớp xe đạp leo núi và xe đạp đua là những lớp con (subclass) của lớp xe đạp
• Thừa kế nghĩa là các phương thức và các thuộc tính được định nghĩa trong một lớp có thể được
thừa kế hoặc được sử dụng lại bởi lớp khác
Trang 54Các bước thiết kế đối tượng
Bước 1: Xây dựng sơ đồ đối tượng
Trang 55Q&A