Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 146 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
146
Dung lượng
1,35 MB
Nội dung
30.11.2016 TRƢỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN VIệN CÔNG NGHệ THÔNG TIN KINH Tế TS Phạm Minh Hoàn LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG OOP – OBJECT ORIENTED PROGRAMMING TS Phạm Minh Hoàn Viện Công nghệ thông tin Kinh tế – Đại học Kinh tế Quốc dân Email: hoanpm@neu.edu.vn THÔNG TIN GIẢNG VIÊN Nhóm GV: TS Phạm Minh Hoàn TS Phạm Minh Hoàn TS Nguyễn Trung Tuấn ThS Nguyễn Quỳnh Mai Địa chỉ: BM Công nghệ thông tin - C100, ĐH Kinh tế Quốc dân, 207 Đường Giải Phóng, Hai Bà Trưng, Hà Nội Website: http://cntt.neu.edu.vn Số điện thoại: (84-4) 36 280280 / 6689 Email: hoanpm@neu.edu.vn 30.11.2016 KẾ HOẠCH GIẢNG DẠY Trong Nội dung Tổng số tiết Lý thuyết Bài tập, thực hành, kiểm tra Chƣơng Chƣơng 3 Chƣơng Chƣơng Chƣơng 6 Chƣơng 0 45 30 15 Cộng Ghi TS Phạm Minh Hoàn STT Học phòng máy tính CHƢƠNG 1: KHÁI NIỆM CƠ BẢN 1.1 Lập trình hƣớng đối tƣợng Khái niệm lập trình hƣớng đối tƣợng Phân biệt phƣơng pháp lập trình hƣớng đối tƣợng với phƣơng pháp lập trình kiểu cấu trúc Mục tiêu lập trình hƣớng đối tƣợng Các đặc điểm lập trình hƣớng đối tƣợng Giới thiệu ngôn ngữ lập trình hƣớng đối tƣợng: Ngôn ngữ C++ Phƣơng pháp phân tích toán theo cách tiếp cận hƣớng đối tƣợng TS Phạm Minh Hoàn 1.2 Sự mở rộng C++ Khả khai báo linh hoạt Toán tử ép kiểu Khả vào/ra C++ Bổ sung toán tử quản lý nhớ động: new, delete Hàm inline Nạp chồng hàm Nạp chồng toán tử 30.11.2016 CHƢƠNG 2: LỚP VÀ ĐỐI TƢỢNG 2.1 Lớp Định nghĩa lớp Các thành phần liệu Các hàm thành phần (Phƣơng thức) Từ khoá xác định phạm vi truy xuất (private, protected, public) Con trỏ this Hàm bạn Hàm tạo hàm hủy TS Phạm Minh Hoàn 2.2 Đối tƣợng Đối tƣợng Biến, mảng đối tƣợng Cấp phát nhớ cho đối tƣợng 2.3 Các thành phần tĩnh Khái niệm thành phần tĩnh Khai báo khởi tạo giá trị cho thành phần tĩnh Phƣơng thức tĩnh lớp CHƢƠNG 3: TÍNH KẾ THỪA 3.1 Sự dẫn xuất tính kế thừa Lớp sở lớp dẫn xuất Cách xây dựng lớp dẫn xuất Kế thừa private public Kế thừa thành phần liệu Kế thừa phƣơng thức Phạm vi truy nhập đến thành phần lớp sở TS Phạm Minh Hoàn 3.2 Hàm tạo, hàm huỷ tính kế thừa Hàm tạo lớp dẫn xuất Hàm huỷ lớp dẫn xuất 30.11.2016 CHƢƠNG 4: TÍNH ĐA HÌNH TS Phạm Minh Hoàn 4.1 Phƣơng thức ảo tƣơng ứng bội Định nghĩa phƣơng thức ảo Quy tắc gọi phƣơng thức ảo Tƣơng ứng bội Liên kết động 4.2 Lớp sở ảo Lớp sở ảo phƣơng thức ảo Hàm tạo, hàm hủy lớp sở ảo 4.3 Khuôn hình Khuôn hình hàm Khuôn hình lớp CHƢƠNG 5: DÕNG DỮ LIỆU NHẬP XUẤT TS Phạm Minh Hoàn 5.1 Mô hình tổng quát I/O streams C++ Các lớp STREAM Hệ thống lớp STREAM 5.2 Các thao tác nhập/xuất thông qua I/O streams Dòng CIN toán tử nhập Nhập ký tự chuỗi lý tự từ bàn phím Dòng COUT toán tử xuất Các phƣơng thức định dạng Cờ định dạng Các phận định dạng hàm định dạng 5.3 Thao tác với tệp Mở tệp Đọc liệu từ tệp Ghi liệu lên tệp 30.11.2016 CHƢƠNG 6: XỬ LÝ NGOẠI LỆ 6.1 Xử lý ngoại lệ C++ Xử lý lỗi theo kiểu truyền thống Giới thiệu ngoại lệ Cú pháp Các kiểu ngoại lệ Cơ chế ngoại lệ TS Phạm Minh Hoàn 6.2 Thao tác với ngoại lệ Sử dụng try catch Ném ngoại lệ 6.3 Xây dựng lớp ngoại lệ Khai báo lớp ngoại lệ Hàm tạo, hàm hủy lớp ngoại lệ PHƢƠNG PHÁP ĐÁNH GIÁ HỌC PHẦN Đánh giá giảng viên: 10% số điểm Kiểm tra kỳ: 20% số điểm Hình thức: kiểm tra, lập trình máy tính TS Phạm Minh Hoàn Hình thức: tham dự học, làm tập nhà hàng tuần tham gia thảo luận lớp Thi kết thúc học phần: 70% số điểm Hình thức: lập trình máy tính Điều kiện dự thi: Sinh viên phải có mặt lớp tối thiểu 80% số tiết học 10 30.11.2016 TÀI LIỆU THAM KHẢO TS Phạm Minh Hoàn Phạm Minh Hoàn, Bài giảng môn lập trình hƣớng đối tƣợng, Bộ môn Công nghệ thông tin, trƣờng Đại học Kinh tế Quốc dân Phạm Văn Ất, C++ Lập trình hƣớng đối tƣợng, NXB Khoa học Kỹ thuật, 1999 Đoàn Văn Ban, Phân tích thiết kế hƣớng đối tƣợng, NXB Khoa học Kỹ thuật, 1997 Nguyễn Thanh Thủy, Lập trình hƣớng đối tƣợng với C++, NXB Khoa học Kỹ thuật, 1999 11 TÀI LIỆU THAM KHẢO TS Phạm Minh Hoàn Bruce Eckel, President, Thinking in C++, Volume and 2, 2nd Edition, January 13, 2000 Ivar Jacobson, Object - Oriented Software Engineering, Addison-Wesley Publishing Company, 1992 Michael Blaha, William Premerlani, Object Oriented Modeling and Design for Database Applications, Prentice Hall, 1998 Jim Keogh & Mario Giannini Biên dịch Ngọc Tuấn (2004) Lập trình hƣớng đối tƣợng NXB Thống Kê 12 30.11.2016 TS Phạm Minh Hoàn CHƢƠNG KHÁI NIỆM CƠ BẢN 13 TS Phạm Minh Hoàn Viện Công nghệ thông tin Kinh tế – Đại học Kinh tế Quốc dân Email: hoanpm@neu.edu.vn MỤC TIÊU bày nhược điểm phương pháp lập trình cấu trúc, cách tiếp cận hướng đối tượng Trình bày đặc điểm, khái niệm lập trình hướng đối tượng phương pháp phân tích toán theo cách tiếp cận hướng đối tượng Trình bày khái niệm ngôn ngữ lập trình hướng vài mở rộng ngôn ngữ lập trình C++ Trình TS Phạm Minh Hoàn 14 30.11.2016 NỘI DUNG CHƢƠNG 1.1 Lập trình hƣớng đối tƣợng Tiếp cận hƣớng đối tƣợng Nhƣợc điểm phƣơng pháp lập trình hƣớng thủ tục Định nghĩa lập trình hƣớng đối tƣợng Khái niệm lập trình hƣớng đối tƣợng Các bƣớc giải toán theo phƣơng pháp lập trình hƣớng đối tƣợng Giới thiệu ngôn ngữ lập trình hƣớng đối tƣợng 1.2 Mở rộng ngôn ngữ C++ TS Phạm Minh Hoàn Khai báo linh hoạt Toán tử ép kiểu Xuất/nhập liệu (Vào/ra liệu) Toán tử quản lý nhớ động: new, delete Hàm inline Hàm tải bội (Function overloading) 15 LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG TIếP CậN HƢớNG ĐốI TƢợNG giới thực, vật chất tồn dƣới dạng đối tƣợng, thực thể có mối quan hệ với Đối với việc tổ chức chƣơng trình, ứng dụng đƣợc định nghĩa nhƣ tập thực thể - đối tƣợng, cho trình tái tạo suy nghĩa gần sát giới thực Cách tiếp cận hƣớng đối tƣợng Trong TS Phạm Minh Hoàn 16 30.11.2016 LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG NHƢợC ĐIểM CủA LậP TRÌNH HƢớNG THủ TụC Lập trình hướng thủ tục (LTHTT) cách tiếp cận theo hàm chức Một hệ thống phần mềm gồm dãy công việc cần thực nhƣ đọc liệu, tính toán, xử lý, lập báo cáo in ấn kết v.v Mỗi công việc đƣợc thực số hàm định Chương trình khó kiểm soát khó khăn việc bổ sung, nâng cấp chương trình Mô hình xây dựng theo cách tiếp cận hướng thủ tục không mô tả đầy đủ, trung thực hệ thống thực tế Phương pháp LTHTT đặt trọng tâm vào hàm hướng tới hoạt động không thực tương ứng với thực thể hệ thống giới thực TS Phạm Minh Hoàn 17 LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG ĐịNH NGHĨA o Lập TS Phạm Minh Hoàn trình hướng đối tượng (Object Oriented Programming - OOP) phương pháp lập trình lấy đối tượng làm tảng để xây dựng thuật giải, xây dựng chương trình o Phương pháp OOP thiết kế chương trình xoay quanh liệu hệ thống o OOP không cho phép liệu chuyển động tự hệ thống 18 30.11.2016 LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG KHÁI NIệM CƠ BảN Đối tƣợng Trong giới thực: đối tượng hiểu thực thể, ngƣời, vật bảng liệu cần xử lý chƣơng trình, … TS Phạm Minh Hoàn Ví dụ: sinh_viên, máy_tính, … Trong LTHĐT: đối tượng biến thể lớp 19 LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG KHÁI NIệM CƠ BảN Lớp TS Phạm Minh Hoàn Lớp khái niệm LTHĐT so với kỹ thuật LTHTT Lớp mẫu mô tả thông tin cấu trúc liệu thao tác hợp lệ phần tử liệu Ví dụ: lớp_sinh_viên, lớp_máy_tính, … Đối tƣợng = Dữ liệu + Phƣơng thức 20 10 30.11.2016 NỘI DUNG CHƢƠNG Mô hình tổng quát I/O streams C++ Các thao tác nhập/xuất thông qua I/O streams Các lớp STREAM Hệ thống lớp STREAM Dòng CIN toán tử nhập Nhập ký tự chuỗi lý tự từ bàn phím Dòng COUT toán tử xuất Các phƣơng thức định dạng Cờ định dạng Các phận định dạng hàm định dạng TS Phạm Minh Hoàn Thao tác với tệp tin Mở tệp Đọc liệu từ tệp Ghi liệu lên tệp 285 MÔ HÌNH TỔNG QUÁT CỦA I/O STREAMS CÁC LớP STREAM Lớp ios: định nghĩa thuộc tính đƣợc sử dụng làm cờ định dạng cho việc xuất nhập cờ kiểm tra lỗi, phƣơng thức lớp ios phục vụ việc định dạng liệu nhập xuất, kiểm tra lỗi Lớp iostream: cung cấp toán tử nhập >> nhiều phƣơng thức nhập khác, chẳng hạn phƣơng thức: get, getline, read,ignore, peek, seekg, tellg, Lớp ostream: cung cấp toán tử xuất >biến 1>>biến 2>> >>biến n; TS Phạm Minh Hoàn tử trích >> đƣợc sử dụng để đọc liệu từ dòng cin Cú pháp sau: 289 CÁC THAO TÁC NHẬP/XUẤT NHậP KÝ Tự VÀ CHUỗI KÝ Tự Dạng TS Phạm Minh Hoàn 1: int cin.get(); // Đọc ký tự (kể khoảng trắng) Dạng 2: istream& cin.get(char &ch); // Đọc ký tự (kể khoảng trắng) đặt vào biến kiểu char đƣợc tham chiếu ch Dạng 3: istream& cin.get(char *str, int n, char d = „\n‟); // Đọc dãy ký tự (kể khoảng trắng) đƣa vào vùng nhớ str trỏ tới 290 134 30.11.2016 CÁC THAO TÁC NHẬP/XUẤT NHậP KÝ Tự VÀ CHUỗI KÝ Tự Chú Ký tự kết thúc chuỗi „\0‟ đƣợc bổ sung vào cuối chuối nhận đƣợc Ký tự giới hạn lại dòng nhập để dành cho lệnh nhận Ký tự lại dòng nhập làm trôi phƣơng thức get() dạng TS Phạm Minh Hoàn ý: 291 CÁC THAO TÁC NHẬP/XUẤT NHậP KÝ Tự VÀ CHUỗI KÝ Tự Phƣơng Dùng phƣơng thức get() dạng dạng để lấy ký tự dòng nhập trƣớc dùng get (dạng 3) Dùng phƣơng thức ignore để lấy số ký tự không cần thiết dòng nhập trƣớc dùng get dạng Phƣơng thức viết nhƣ sau: cin.ignore(n) ; // Lấy (loại hay loại bỏ) n ký tự dòng nhập TS Phạm Minh Hoàn pháp loại bỏ ký tự Enter: 292 135 30.11.2016 CÁC THAO TÁC NHẬP/XUẤT NHậP KÝ Tự VÀ CHUỗI KÝ Tự Phƣơng istream& cin.getline(char *str, int n, char d = „\n‟); TS Phạm Minh Hoàn thức getline để nhập dãy ký tự từ bàn phím Cú pháp: 293 CÁC THAO TÁC NHẬP/XUẤT DÕNG COUT VÀ TOÁN Tử XUấT TS Phạm Minh Hoàn cout đối tƣợng kiểu ostream Thao tác xuất dòng cout đồng nghĩa với xuất liệu hình 294 136 30.11.2016 CÁC THAO TÁC NHẬP/XUẤT DÕNG COUT VÀ TOÁN Tử XUấT C++ TS Phạm Minh Hoàn định nghĩa chồng toán tử dịch trái