Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 40 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
40
Dung lượng
226,5 KB
Nội dung
ChươngLậptrìnhhướngđốitượng Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN Nội dung Phương pháp tiếp cận lậptrìnhhướngđốitượng (OOP) Các đặc trưng OOP Lịch sử đời OOP Giới thiệu số ngônngữ OOP Xu hướng phát triển OOP Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 5.1 Phương pháp tiếp cận OOP Phương pháp tiếp cận lậptrình truyền thống – Lậptrình tuyến tính: Lậptrình tuyến tính tư theo lối Chươngtrình thực lệnh từ đầu đến lúc kết thúc chươngtrình – Lậptrình cấu trúc: Trong lậptrìnhhướng cấu trúc, chương trìnhh chia nhỏ thành chươngtrìnhchươngtrình thực công việc xác định Chươngtrình gọi đến chươngtrình theo giải thuật cấu trúc xác định Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN Lậptrình tuyến tính Ưu điểm: đơn giản, dễ hiểu, có luồng công việc Nhược điểm: không tái sử dụng đoạn mã lệnh, liệu liệu toàn cục, khó khăn việc viết chươngtrình dài, phức tạp Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN Lậptrình cấu trúc Đặc trưng: Chương trình= Cấu trúc liệu + Giải thuật Vấn đề lậptrình cấu trúc phân chia chươngtrình thành chươngtrình cho phù hợp với yêu cầu, theo chiến lược thiết kế chươngtrình top-down (làm mịn dần) Lậptrình có cấu trúc dựa tảng trừu tượng hóa chức Ưu điểm: chươngtrình có bố cục sáng sủa, dễ viết, dễ hiểu, dễ bảo dưỡng chươngtrình cấu trúc Nhược điểm: – Giải thuật chươngtrình phù thuộc chặt chẽ vào cấu trúc liệu – Có thể ẩn chứa xung đột truy cập liệu toàn cục trao đổi liệu – Tư giải thuật phù hợp với toán nhỏ Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN Sự trừu tượng hóa mặt liệu Sự trừu tượng hóa mặt liệu việc định nghĩa kiểu liệu trừu tượng nhằm che dấu thông tin cấu trúc liệu Một kiểu liệu trừu tượng mô hình toán học với tập hợp phép toán Kiểu liệu trừu tượng người lậptrình tự định nghĩa Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN Lậptrìnhhướngđốitượng Lậptrìnhhướngđốitượng (OOP) xây dựng từ tảng khái niệm lậptrình có cấu trúc trừu tượng hóa liệu OOP lấy đốitượng làm tảng để xây dựng giải thuật chươngtrình Xây dựng chươngtrình theo hướng tiếp cận OOP theo chiến lược bottom-up Cách tư duy: “với số đốitượng có phải làm để giải công việc đặt ra, hay làm từ tập đốitượng có” Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN Ưu điểm OOP Không nguy liệu bị thay đổi tự chươngtrình Dữ liệu đóng gói vào đối tượng, muốn truy nhập phải thông qua phương thức cho phép đốitượng Khi thay đổi cấu trúc liệu đối tượng, không cần thay đổi mã nguồn đốitượng khác, mà cần thay đổi số hàm thành phần đốitượng bị thay đổi Có thể sử dụng lại mã nguồn, tiết kiệm tài nguyên (chẳng hạn tính chất kế thừa) Phù hợp với dự án phần mềm lớn, phức tạp Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN Câu hỏi? So sánh cách tiếp cận hướng cấu trúc hướngđốitượng theo mặt: – Phương pháp tiếp cận thiết kế mô hình hóa toán – Cách thức đóng gói liệu, che dấu thông tin – Ưu / nhược điểm – Lĩnh vực ứng dụng Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN Đốitượng OOP Trong OOP, tất thực thể hệ thống coi đốitượng cụ thể Đốitượng thực thể hoạt động chươngtrình chạy VD: sinh viên, lớp, giáo viên, môn học, điểm, Một đốitượng thực thể tồn hệ thống xác định ba yếu tố: – Định danh đối tượng: id – Trạng thái đối tượng: giá trị thuộc tính – Hoạt động đối tượng: thao tác đốitượng Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 10 Con trỏ this Con trỏ this bên khai báo lớp đại diện cho đốitượng lớp thực nhớ Nó trỏ có giá trị địa đốitượng Con trỏ this tham số ẩn mà phương thức lớp truy cập Nó trỏ tới đốitượng mà phương thức gọi Có số trường hợp, việc sử dụng trỏ this bắt buộc để cài đặt chức phương thức lớp Câu hỏi: Những trường hợp bắt buộc phải sử dụng trỏ this? Lấy ví dụ Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 26 5.3 Lịch sử phát triển ngônngữ OOP Xuất phát từ định hướngngônngữ Simula67, trung tâm Palo Alto hãng XEROR nghiên cứu cho đờingônngữ OOP Smalltalk Sau ngônngữ OOP đời Eiffel, Clos, Loops, Flavors, Object Pascal, Object C, C++, Delphi, Java,… Lậptrìnhhướngđốitượng phát triển phương pháp lậptrình chủ đạo từ thập niên 1980 việc ảnh hưởng đáng kể C++ với tính GUI Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 27 Lịch sử phát triển ngônngữ OOP (tiếp) Các chức định hướngđốitượng thêm vào nhiều ngônngữ suốt thời gian qua như: ADA, BASIC , Lisp, Fortran, Pascal,… Việc thêm chức không chủ định từ thiết kế ban đầu dẫn tới khó khăn việc tương thích bảo trì mã nguồn Trong thời gian gần ngônngữ OOP ưa chuộng Java, Microsoft.NET Gần đây, hai ngônngữ OOP xuất với chức định hướngđốitượngtương thích với phương pháp thủ tục Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 28 5.4 Một số ngônngữ OOP C++ C# Java PHP Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 29 C++ C++, đời vào năm 1980, ngônngữlậptrình OOP mở rộng từ ngônngữlậptrình cấu trúc C Cho nên C++ ngônngữlậptrình nửa hướng cấu trúc, nửa hướngđốitượng Những đặc trưng hướngđốitượng C++ – Cho phép định nghĩa lớp đốitượng – Cho phép đóng gói liệu vào lớp đốitượng Cho phép định nghĩa từ khóa phạm vi truy nhập vào thành phần lớp – Cho phép kế thừa lớp với kiểu kế thừa – Cho phép chồng phương thức lớp kế thừa Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 30 C++ (tiếp) Những vi phạm hướngđốitượng C++ – Cho phép định nghĩa sử dụng biến liệu tự – Cho phép định nghĩa sử dụng hàm tự – Ngay liệu đóng gói vào lớp, liệu truy nhập trực tiếp liệu tự hàm bạn, lớp bạn (friend) Tính hỗ trợ hướngđốitượng C++ thấp, không sáng, dễ gây nhầm lẫn Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 31 ASP.NET C#.NET Các ngônngữlậptrình NET Microsoft đời vào cuối năm 1990 để cạnh tranh với ngônngữlậptrình Java Một số đặc điểm ngônngữ NET – Là ngônngữ hoàn toàn hướngđốitượng – Cung cấp giao diện lậptrình đồ họa thân thiện đẹp mắt – Cho phép lậptrình viên tạo thư viện UserControl Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 32 Java Java ngônngữ OOP Sun Microsystems giới thiệu vào tháng năm 1995 Java xây dựng dựa tảng C C++: Java sử dụng cú pháp C đặc trưng hướngđốitượng C++ Đặc điểm Java – Là ngônngữ hoàn toàn hướngđốitượng – Java ngônngữ vừa biên dịch vừa thông dịch – Java cho phép người sử dụng tự tạo đốitượng thư viện JavaBeans Ứng dụng viết Java thường có tính ổn định, tin cậy cao, dễ bảo trì nâng cấp Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 33 PHP PHP ngônngữlậptrình kịch chủ yếu dùng để phát triển ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát PHP thích hợp cho việc viết ứng dụng web nhúng vào trang HTML PHP có tốc độ nhanh, nhỏ gọn, cú pháp gần giống C Java, dễ học thời gian xây dựng ứng dụng tươngđối ngắn so với ngônngữ khác nên PHP nhanh chóng trở thành ngônngữlậptrình web phổ biến giới Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 34 PHP (Tiếp) Các phiên PHP – PHP/FI (Personal Home Page/Forms Interpreter , 1995) – PHP/FI 2.0 (1997) – PHP (1998): bắt đầu hỗ trợ cú pháp hướngđốitượng hỗ trợ nhiều tính mạnh mẽ (hỗ trợ nhiều CSDL giao diện lậptrình ứng dụng - API) – PHP (2000): cải thiện tốc độ xử lý, hỗ trợ nhiều máy chủ web hơn, hỗ trợ phiên làm việc http, tạo đệm thông tin đầu ra,… – PHP (2004): cải tiến khả hỗ trợ OOP, xử lý XML, quán truy cập CSDL (MySQL) – PHP 6(hiện tại) Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 35 Câu hỏi? So sánh sức mạnh ngônngữ C++, NET, Java, PHP? Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 36 5.5 Xu hướng phát triển OOP Lậptrìnhhướng thành phần (component-oriented programming) Ý tưởng: – Xây dựng thư viện thành phần, thành phần thực công việc xác định – Khi cần phát triển phần mềm cụ thể cần chọn thành phần có sẵn ghép lại với – Người lậptrình phát triển thêm thành phần chưa có thư viện Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 37 Xu hướng phát triển OOP (tiếp) Lậptrìnhhướng agent: xem mức trừu tượng cao lậptrìnhhướng thành phần Đặc điểm: – Các agent có khả làm việc độc lập, tự chủ để hoàn thành công việc – Các agent có khả chủ động liên lạc với agent khác để phối hợp, cộng tác hay cạnh tranh nhằm hoàn thành nhiệm vụ Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 38 Xu hướng phát triển OOP (tiếp) Lậptrìnhhướng aspect: xu hướnglậptrìnhhướng thành phần Đặc điểm: – Tính đóng gói theo luồng công việc, đóng gói theo khía cạnh vấn đề – Tính đơn điệu theo luồng, luồng công việc , nhiệm vụ thực liên tiếp nhau, lậptrình tuyến tính Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 39 Phương pháp phân tích thiết kế hệ thống hướngđốitượng Cách tiếp cận phân tích thiết kế hệ thống hướngđốitượng Cơ sở liệu hướngđốitượng Lậptrìnhhướngđốitượng Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN 40 ... tiếp cận lập trình truyền thống – Lập trình tuyến tính: Lập trình tuyến tính tư theo lối Chương trình thực lệnh từ đầu đến lúc kết thúc chương trình – Lập trình cấu trúc: Trong lập trình hướng cấu... liệu trừu tượng người lập trình tự định nghĩa Nguyễn Thị Hạnh – Bộ môn CNPM - Khoa CNTT - ĐH SPHN Lập trình hướng đối tượng Lập trình hướng đối tượng (OOP) xây dựng từ tảng khái niệm lập trình. .. Cho nên C++ ngôn ngữ lập trình nửa hướng cấu trúc, nửa hướng đối tượng Những đặc trưng hướng đối tượng C++ – Cho phép định nghĩa lớp đối tượng – Cho phép đóng gói liệu vào lớp đối tượng Cho phép