Chương 2 Tổng quan lập trình hướng đối tượng

1.Tổng quan về phát triển phần mềm 2.Các phương pháp lập trình cổ điển ▫ PP lập trình tuyến tính ▫ PP lập trình thủ tục/hàm ▫ PP lập trình đơn thể 3.Phương pháp lập trình hướng đối tượng ▫ Các khái niệm ▫ Đặc điểm ▫ Các bước thực hiện

pdf25 trang | Chia sẻ: lylyngoc | Lượt xem: 1635 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Chương 2 Tổng quan lập trình hướng đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Tổng Quan Lập Trình Hướng Đối Tượng Môn Lập Trình Hướng Đối Tượng – Chương 2 Nguyễn Minh Thành [M] : Thanhnm@itc.edu.vn 1 Giới thiệu  Học một ngôn ngữ lập trình mới là quan trọng. Tuy nhiên việc hiểu ý nghĩa của 1 khái niệm, 1 cách suy nghĩ mới còn quan trọng hơn gấp nhiều lần.  Hiểu được “hướng đối tượng” không phải thông qua cách học 1 ngôn ngữ hay một bộ công cụ nào đó  Mà đó là 1 cách tiếp cận, 1 cách suy nghĩ khác 2 Nội dung 1. Tổng quan về phát triển phần mềm 2. Các phương pháp lập trình cổ điển ▫ PP lập trình tuyến tính ▫ PP lập trình thủ tục/hàm ▫ PP lập trình đơn thể 3. Phương pháp lập trình hướng đối tượng ▫ Các khái niệm ▫ Đặc điểm ▫ Các bước thực hiện 3 1. Phần Mềm  Viết 1 phần mềm bao gồm rất nhiều công đoạn: phân tích & thiết kế, cài đặt, kiểm tra/thử nghiệm và bảo trì.  Cài đặt (programming/coding) chỉ là 1 phần trong quá trình trên.  C++/C#/Java v.v… là ngôn ngữ lập trình để cài đặt.  PP lập trình là các cách tiếp cận giúp cho quá trình cài đặt hiệu quả hơn. 4 Phần mềm (tt)  Phương pháp lập trình phải có :  Tính tái sử dụng (reusability): thiết kế các thành phần có thể được sử dụng trong nhiều phần mềm khác nhau  Tính mở rộng (extensibility): hỗ trợ các plug-ins.  Tính mềm dẻo (flexibility):  Có thể dễ dàng thay đổi khi thêm mới dữ liệu hay tính năng.  Các thay đổi không làm ảnh hưởng nhiều đến toàn bộ hệ thống 5 2. Các pp lập trình cổ điển 1.Lập trình tuyến tính  Chương trình là một dãy các lệnh.  Lập trình là xây dựng các lệnh trong dãy lệnh.  Không mang tính tái sử dụng, mở rộng & mềm dẻo. 2.Lập trình thủ tục / hàm  Chương trình là một hệ thống các thủ tục và hàm. Mỗi thủ tục và hàm là một dãy các lệnh.  Lập trình là xác định xem chương trình gồm bao nhiêu thủ tục và hàm, và sau đó xác định các lệnh trong từng thủ tục và 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 6 Các pp lập trình cổ điển (tt) 3. Lập trình đơn thể  Chương trình là một hệ thống những đơn thể. Đơn thể là một hệ thống các thủ tục và hàm có liên quan mật thiết với nhau. Mỗi thủ tục và hàm là một dãy các lệnh. Các đơn thể được lưu trên các tập tin đặc biệt và được biên dịch các tập tin khác nhau.  Phân tích và tìm ra các đơn thể bao gồm thành phần dữ liệu và các hàm/thủ tục liên quan.  Cách thực hiện dựa vào việc gom nhóm các thành phần tương tự nhau về ý nghĩa, phạm vi… 7 Các pp lập trình cổ điển (tt) • Ví dụ 1: Xét chương trình nhập vào họ tên, điểm văn, điểm toán của một học sinh và xuất điểm trung bình tương ứng. Hãy viết chương trình trên bằng các cách viết có thể có. 8 Các pp lập trình cổ điển (tt) • Cài đặt với pp lập trình tuyến tính (chỉ dùng 1 hàm main và biến toàn cục) 9 class Program { static string hoten; static int van, toan; static float dtb; static void Main(string[] args) { Console.Write("Nhap ho ten: "); hoten = Console.ReadLine(); Console.Write("Nhap diem toan: "); toan = int.Parse(Console.ReadLine()); Console.Write("Nhap diem van: "); van = int.Parse(Console.ReadLine()); dtb = (float)(toan + van) / 2; Console.WriteLine("Diem trung binh: {0: 0.00}", dtb); } } Các pp lập trình cổ điển (tt) • Cài đặt với pp lập trình tuyến tính (chỉ dùng 1 hàm main và biến cục bộ) 10 class Program { static void Main(string[] args) { string hoten; int van, toan; float dtb; Console.Write("Nhap ho ten: "); hoten = Console.ReadLine(); Console.Write("Nhap diem toan: "); toan = int.Parse(Console.ReadLine()); Console.Write("Nhap diem van: "); van = int.Parse(Console.ReadLine()); dtb = (float)(toan + van) / 2; Console.WriteLine("Diem trung binh: {0: 0.00}", dtb); } } Các pp lập trình cổ điển (tt) • Cài đặt với pp lập trình tuyến tính (chỉ dùng 1 hàm main và cấu trúc toàn cục) 11 class Program { static HOCSINH hs; static void Main(string[] args) { Console.Write("Nhap ho ten: "); hs.hoten = Console.ReadLine(); Console.Write("Nhap diem toan: "); hs.toan = int.Parse(Console.ReadLine()); Console.Write("Nhap diem van: "); hs.van = int.Parse(Console.ReadLine()); hs.dtb = (float)(hs.toan + hs.van) / 2; Console.WriteLine("Diem trung binh: {0: 0.00}", hs.dtb); } } struct HOCSINH { public string hoten; public int van, toan; public float dtb; } Các pp lập trình cổ điển (tt) • Cài đặt với pp lập trình tuyến tính (chỉ dùng 1 hàm main và cấu trúc cục bộ) 12 class Program { static void Main(string[] args) { HOCSINH hs; Console.Write("Nhap ho ten: "); hs.hoten = Console.ReadLine(); Console.Write("Nhap diem toan: "); hs.toan = int.Parse(Console.ReadLine()); Console.Write("Nhap diem van: "); hs.van = int.Parse(Console.ReadLine()); hs.dtb = (float)(hs.toan + hs.van) / 2; Console.WriteLine("Diem trung binh: {0: 0.00}", hs.dtb); } } struct HOCSINH { public string hoten; public int van, toan; public float dtb; } Các pp lập trình cổ điển (tt) • Cài đặt với pp lập trình thủ tục (dùng biến toàn cục) 13 class Program { static string hoten; static int van, toan; static float dtb; static void Main(string[] args) { Nhap(); TinhTrungBinh(); Xuat(); } static void Nhap() { Console.Write("Nhap ho ten: "); hoten = Console.ReadLine(); Console.Write("Nhap diem toan: "); toan = int.Parse(Console.ReadLine()); Console.Write("Nhap diem van: "); van = int.Parse(Console.ReadLine()); } static void Xuat() { Console.WriteLine("Diem trung binh: {0: 0.00}", dtb); } static void TinhTrungBinh() { dtb = (float)(toan + van) / 2; } } Các pp lập trình cổ điển (tt) • Cài đặt với pp lập trình thủ tục (dùng biến cục bộ) 14 static void Xuat(string hoten, int van, int toan, float dtb) { Console.WriteLine("Diem trung binh: {0: 0.00}", dtb); } static float TinhTrungBinh(int van, int toan) { return (float)(toan + van) / 2; } } class Program { static void Main(string[] args) { string hoten; int van, toan; float dtb; Nhap(out hoten, out van, out toan); dtb = TinhTrungBinh(van, toan); Xuat(hoten, van, toan, dtb); } static void Nhap(out string hoten, out int van, out int toan) { Console.Write("Nhap ho ten: "); hoten = Console.ReadLine(); Console.Write("Nhap diem toan: "); toan = int.Parse(Console.ReadLine()); Console.Write("Nhap diem van: "); van = int.Parse(Console.ReadLine()); }  Phải quan tâm đến tham số: Trị, chiếu và giá trị trả về của mỗi phương thức. Các pp lập trình cổ điển (tt) • Cài đặt với pp lập trình thủ tục (dùng biến cấu trúc cục bộ) 15 struct HOCSINH { public string hoten; public int van, toan; public float dtb; } class Program { static void Main(string[] args) { HOCSINH hs; Nhap(out hs); Xuat(hs); } static void Nhap(out HOCSINH hs) { Console.Write("Nhap ho ten: "); hs.hoten = Console.ReadLine(); Console.Write("Nhap diem toan: "); hs.toan = int.Parse(Console.ReadLine()); Console.Write("Nhap diem van: "); hs.van = int.Parse(Console.ReadLine()); hs.dtb = (float)(hs.toan + hs.van) / 2; } static void Xuat(HOCSINH hs) { Console.WriteLine("Diem trung binh: {0: 0.00}", hs.dtb); } } Các pp lập trình cổ điển (tt) • Cài đặt với pp lập trình thủ tục (dùng biến cấu trúc toàn cục) 16 struct HOCSINH { public string hoten; public int van, toan; public float dtb; } class Program { static HOCSINH hs; static void Main(string[] args) { Nhap(); Xuat(); } static void Nhap() { Console.Write("Nhap ho ten: "); hs.hoten = Console.ReadLine(); Console.Write("Nhap diem toan: "); hs.toan = int.Parse(Console.ReadLine()); Console.Write("Nhap diem van: "); hs.van = int.Parse(Console.ReadLine()); hs.dtb = (float)(hs.toan + hs.van) / 2; } static void Xuat() { Console.WriteLine("Diem trung binh: {0: 0.00}", hs.dtb); } } 3. PP Lập trình hướng đối tượng  Phương pháp lấy đối tượng làm nền tảng để xây dựng chương trình.  Chương trình là một hệ thống những lớp đối tượng. Mỗi một lớp đối tượng tương ứng với những đối tượng có xuất hiện trong thực tế mà chương trình cần quản lý.  Lập trình hướng đối tượng là xây dựng những lớp đối tượng, từ đó tạo ra các đối tượng cần quản lý.  Lập trình hướng đối tượng là phương pháp lập trình dựa trên kiến trúc lớp (class) và đối tượng (object) 17 3. Lập trình hướng đối tượng (tt) • Đối tượng là sự gắn kết giữa dữ liệu của đối tượng và các hàm (còn gọi là phương thức) thao tác trên các dữ liệu này. Đối tượng = Dữ liệu + Phương thức • Khi viết chương trình theo phương pháp hướng đối tượng ta phải trả lời các câu hỏi: ▫ Chương trình liên quan tới những lớp đối tượng nào? ▫ Mỗi đối tượng cần có những dữ liệu và thao tác nào? ▫ Các đối tượng quan hệ với nhau như thế nào trong chương trình? • Ví dụ : Chương trình quản lý đào tạo có những lớp đói tượng nào ? Đối tượng nào ? 18 Sự trừu tượng hoá 19 Thực thể Thuộc tính Hành động Thế giới thực Trừu tượng hóa Phần mềm Dữ liệu hàm Đặc điểm của pp lập trình HĐT • Tính đóng gói (Encapsulation): Đây là quan điểm trung tâm trong lập trình hướng đối tượng với việc che dấu dữ liệu thông qua sự đóng gói. Sự đóng gói chính là khả năng cất giữ riêng biệt dữ liệu và phương thức tác động lên dữ liệu đó. Do vậy chúng ta không phải quan tâm tới việc “phải làm như thế nào” mà chỉ điều khiển bằng “làm việc gì”. Sự đóng gói không chỉ đơn thuần là gom chung dữ liệu và chương trình vào trong một khối mà phải có sự đồng nhất giữa dữ liệu và các thao tác tác động lên dữ liệu đó. 20 Đặc điểm của pp lập trình HĐT • Tính thừa kế (inheritance): Mục tiêu của lập trình hướng đối tượng là sử dụng lại những gì đã được xây dựng. Với tính thừa kế chúng ta không phải mất công xây dựng lại từ đầu những đối tượng mới, chỉ cần bổ sung để có được những đặc tính cần thiết trong đối tượng mới. Những lớp đối tượng đã có được sử dụng lại gọi là lớp cơ sở. Những lớp thừa kế những hành vi và dữ liệu của lớp cơ sở gọi là lớp dẫn xuất, ngoài những đặc điểm của lớp cơ sở chúng còn có những tính chất riêng của mình. Cứ như vậy lớp dẫn xuất lại đóng vai trò lớp cơ sở của các lớp dẫn xuất khác. • Tính đa hình (pholymorphism): Cho phép gởi cùng một thông điệp đến những đối tượng khác nhau cùng có chung một đặc điểm 21 Một số khái niệm Thế giới thực Phương pháp lập trình 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 Hành động Các phương thức Phân công giữa các đối tượng Yêu cầu Gọi thực hiện phương thức 22 Một đối tượng phải có: •Một tên gọi. •Có chu trình sống (sinh ra, hoạt động và mất đi). Một số ngôn ngữ lập trình HĐT • C++ • C#, VB.Net, J#, VC++ • Java • JavaScript • PHP • … 23 FAQs 24 Hết Chương 2 Môn Lập Trình Hướng Đối Tượng 25
Tài liệu liên quan