Lập trình hướng đối tượng Phần 1

Phép toán nhập

#include <iostream.h>

main(){

int age;

cout << "When were you born? ";

cin >> age;

cout << "After 10 years, you will be "

<< 2008 – age + 10 << "years old\n"

return 1;

}

pdf13 trang | Chia sẻ: thienmai908 | Lượt xem: 1315 | Lượt tải: 0download
Nội dung tài liệu Lập trình hướng đối tượng Phần 1, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
11 Lập trình hướng đối tượng (Object – Oriented Programming) PGS. TS. Trần Văn Lăng KHOA CÔNG NGHỆ THÔNG TIN TRƯỜNG ĐẠI HỌC LẠC HỒNG Email: lang@lhu.edu.vn 2 Mục tiêu Phương pháp viết chương trình hướng về với các đối tượng Sử dụng ngôn ngữ lập trình hướng đối tượng C++ 3 Nội dung Một số khái niệm chung Ngôn ngữ C++ Cách thức xây dựng lớp Vấn đề tạo đối tượng Kiểu dữ liệu lớp trong C++ Tính thừa kế Tính đa hình 4 Giáo trình Trần Văn Lăng, Lập trình hướng đối tượng sử dụng C++, Nxb. Thống kê, 2004. 25 Tài liệu tham khảo John Hubbard, Programming with C++, McGraw-Hill, 1996. Bjarne Stroustrup, The C++ Programing Language, Addison-Wesley, 1997 6 Chương 1 Khái niệm về lập trình hướng đối tượng 7 Lập trình hướng đối tượng là gì Object-Oriented Programming – OOP Lập trình cấu trúc: Procedural Programming  Phân công việc  những việc nhỏ hơn  Là các chương trình con  Thiết kế top-down Chương trình = Dữ liệu + Thuật toán 8 Lập trình hướng đối tượng  Từ những đối tượng, sự vật, sự kiện, ... tạo nên chương trình  Thiết kế bottom-up Đối tượng = Dữ liệu + Hành vi = + 39 Sự khác biệt  Theo thủ tục Rút tiền (withdraw), gửi tiền (deposit), chuyển tiền (transfer)  Hướng đối tượng Khách hàng (customer), tiền (money), tài khoản (account) 10 Đối tượng là gì ? Một đối tượng như là một hộp đen, mà chi tiết bên trong được dấu kín Các đối tượng giao tiếp với nhau thông qua việc truyền các thông điệp (messages) Thông điệp được nhận bởi các hành vi của đối tượng 11 Đối tượng Lan Cúc TrúcMai girlclassobject 12 Như vậy, Trong đối tượng bao gồm:  Hành vi (behavior), và  Dữ liệu (data) 413 Hành vi của đối tượng là gì? Thao tác (operation) Phương thức (method) Hàm (function) Thủ tục (procedure) 14 Dữ liệu Thông tin (information) Tính chất (property) Thuộc tính (attribute) Trường (field) 15 Những gì là đối tượng  Vật có thể sờ mó được (Tangible things)  Vai trò (Roles)  Sự việc xảy ra, tình tiết (Incidents)  Sự tương tác (Interactions)  Sự mô tả (Specifications)  Như là xe hơi, máy in, ...  Công nhân, người chủ, ...  Chuyến bay, tràn số, ...  Ký kết thỏa ước, mua hàng, ...  Màu, hình dạng 16 Một số đặc tính All information in an object-oriented system is stored within its objects and can only be manipulated when the objects are ordered to perform operations Ivar Jacobson 517 Như vậy, Tính đóng gói (encapsulation)  Dữ liệu và thao tác được nhóm lại cùng nhau Account Withdraw Deposit Transfer Thực chất là sự ghép chung những hiểu biết về thế giới thực  Có sự đồng nhất giữa dữ liệu và thao tác trên dữ liệu 18 Tính thừa kế (inheritance) Tạo ra một kiểu dữ liệu mới từ kiểu đã có Nhằm sử dụng lại, và bổ sung những gì cần thiết Thực chất là sự phân lớp (classification) trong việc thiết kế hệ thống theo hướng đối tượng 19 Theo ngôn ngữ lớp, sự thừa kế có nghĩa là một lớp thừa kế các đặc tính của lớp khác. Đây chính là quan hệ “là một” (“is a”) A car is a vehicle A teacher is a person A dog is an animal 20 Tính đa hình (polymorphism) Nhiều đối tượng cùng chia sẻ đặc tính chung, nhưng có những tác động khác nhau. Có cùng yêu cầu, nhưng mỗi đối tượng có đáp ứng khác nhau. Thực chất là tính đa dạng (many form) Để hiện thực được tính đa hình, ngôn ngữ đối tượng có đặc tính như overload, override. 621 Overloaded và Overridden methods ? Overloaded methods:  Nhằm cung cấp các dạng khác nhau của hành vi, nhưng vẫn có cùng tên gọi. Overridden methods:  Hiện thực lại hành vi đã có của tổ tiên  Phải có cùng tên và trùng mọi yếu tố tạo nên hành vi này. 22 Ngôn ngữ lập trình hướng đối tượng SmallTalk (Palo Alto Research Center - PARC) Eiffel Object Pascal C++ Java 23 Programming Languages Phylogeny Fortran (1954) Algol (1958) LISP (1957) Scheme (1975) CPL (1963), U Cambridge Combined Programming Language BCPL (1967), MIT Basic Combined Programming Language B (1969), Bell Labs C (1970), Bell Labs C++ (1983), Bell Labs Java (1995), Sun Objective C 24 Viết chương trình Có 2 bước cơ bản để viết chương trình theo hướng đối tượng:  Tạo các lớp: Tạo ra, mở rộng hoặc sử dụng lại các kiểu dữ liệu trừu tượng.  Tạo tương tác giữa các đối tượng: Tạo các đối tượng từ các lớp và xác định mối quan hệ giữa chúng. 725 Chương 2 Ngôn ngữ C++ 26 Khái quát về ngôn ngữ C++ Kiểu dữ liệu cơ bản, phép toán Các cấu trúc điều khiển Hàm Mảng và mẫu tin Con trỏ và tham chiếu Nhâp xuất và tập tin 27 Khái quát về ngôn ngữ C++ 1970, Denis Ritchie (Bell Lab.) phát triển ngôn ngữ C.  Dạng System Implementation Language (SIL)  Phát triển từ ngôn ngữ CPL (Combined Programming Language), BCPL (Basic CPL) và ngôn ngữ B.  Brian Kernighan, D. Ritchie (1978), The C Programming Language, Prentice-Hall 28 Đầu 1980, Bjarne Stroustrup phát triển ngôn ngữ C++  Trên sơ sở ngôn ngữ Simula 67  Tương thích hoàn toàn với C Mở rộng C với cấu trúc OOP  Tên gọi “C with Classes”  Năm 1983, Ricj Mascitti đề nghị C++  Bjarne Stroustrup (1985), The C++ Programming Language, Prentice-Hall 829 Cấu trúc chương trình C++ #include // Output string into display main() { cout << "Hello, World.\n" return 1; } 30 Biến, đối tượng Có thể khai báo ở bất kỳ vị trí nào (trước khi sử dụng)  Khai báo biến còn mang ý nghĩa thực thi câu lệnh, tạo đối tượng 31 Viết chương trình Trên môi trường Windows, có thể sử dụng Visual C++, hoặc DJGPP, v.v... Trên Linux, có thể sử dụng GNU C++ 32 Dùng Visual C++ 6.0 Chọn chức năng File/New/Projects Đưa vào tên của Project Và vị trí lưu trữ trên đĩa  Lưu ý, chọn Win32 Console Application 933  Sau khi đưa vào Project Name và Location, hộp hội thoại xuất hiện Chọn Finish 34 Đưa các tập tin nguồn vào để sử dụng, bằng cách  Project/Add to Project/New/Files. Chọn C++ Source file Đưa vào tên file 35  Sau khi chọn, có màn hình để soạn thảo tập tin One.cpp. Vào menu Build để biên dịch và thực thi chương trình. 36 Một số phép toán  Phép toán nhập #include main(){ int age; cout << "When were you born? "; cin >> age; cout << "After 10 years, you will be " << 2008 – age + 10 << "years old\n" return 1; } 10 37 Phép toán gán int y, x; y = (x = 100); Hay y = x = 100; 38 int n, m = 10; n = m++; cout << n++ << endl; int n,m = 10; n = ++m; cout << ++n << endl; int n, m = 10; n = m; m = m + 1; cout << n << endl; n = n + 1; int n,m = 10; m = m + 1; n = m; n = n + 1; cout << n << endl;  Phép toán tăng, giảm 39 Phép toán điều kiện if ( a > 100.0 ) m = 5; else m = a > 100.0 ? 5 : a + 10; m = a + 10; if ( a > b ) max = a; max = a > b ? a : b; else max = b; 40 Độ ưu tiên phép toán n--- nt -- nt -16Giảm sau-- n++1Phải sang16Tăng sau++ int(ch)- nt -16Chuyển đổi kiểu() - nt -16Gọi hàm() a[i]- nt -- nt -16Truy cập chỉ số[] obj->n- nt -- nt -16Truy cập đến thành phần của con trỏ đối tượng (hoặc mẩu tin) -> obj.n- nt -- nt -16Truy cập thành phần của đối tượng hay mẩu tin . NAME::x2Trái sang17Phân định thành phần của lớp:: ::x1Phải sang17Truy cập biến toàn cục:: Ví dụToán hạng Thứ tự trong biểu thức Ưu tiênMô tảPhép toán 11 41 &x- nt -- nt -15Truy cập địa chỉ& *ptr- nt -Phải sang15Lấy giá trị tại địa chỉ* -n- nt -- nt -15Chuyển thành âm- +n- nt -- nt -15Chuyển thành dương+ !q1- nt -15Phủ định! ~s- nt -- nt -15Bitwise NOT~ --n- nt -- nt -15Giảm trước-- ++n- nt -- nt -15Tăng trước++ sizeof(a)- nt -- nt -15Kích thước của đối tượng hoặc của kiểu dữ liệu sizeof Ví dụToán hạng Thứ tự trong biểu thức Ưu tiên Mô tảPhép toán 42 m-n- nt -- nt -12Trừ- m+n- nt -- nt -12Cộng+ m%n- nt -- nt -13Chia lấy phần dư% m/n- nt -- nt -13Chia/ a*b- nt -- nt -13Nhân* p->*ptr- nt -- nt -14Truy cập đến thành phần của con trỏ đối tượng (hoặc mẩu tin) ->* x.*ptr2Trái sang14Truy cập đến thành phần của đối tượng hay của mẩu tin .* (int)ch- nt -- nt -15Chuyển đổi kiểu() delete p- nt -- nt -15Thu hồi bộ nhớdelete new p- nt -- nt -15Cấp phát bộ nhớnew Ví dụToán hạng Thứ tự trong biểu thức Ưu tiên Mô tảPhép toán 43 p || q- nt -- nt -4Phép toán OR|| p && q- nt -- nt -5Phép toán AND&& m | n- nt -- nt -6Bitwise OR| m ^ n- nt -- nt -7Bitwise XOR^ m & n- nt -- nt -8Bitwise AND& x != y2- nt -9Không bằng!= x == y- nt -- nt -9So sánh bằng== x >= y- nt -- nt -10Lớn hơn hay bằng>= x > y- nt -- nt -10Lớn hơn> x <= y- nt -- nt -10Nhỏ hơn hay bằng<= x < y- nt -- nt -10Nhỏ hơn< - nt -- nt -11Bit shift right>> - nt -- nt -11Bit shift left<< Ví dụToán hạngThứ tự trong biểu thức Ưu tiên Mô tảPhép toán 44 ++m,--n2Trái sang0Dấu phẩy, throw(20)1- nt -1Throw exceptionthrow n >>= 1- nt -- nt -2Gán Bit shift right>>= n <<= 1- nt -- nt -2Gán Bit shift left<<= n |= mask- nt -- nt -2Gán Bitwise OR|= n ^= mask- nt -- nt -2Gán Bitwise XOR^= n &= mask- nt -- nt -2Gán Bitwise AND&= n %= 2- nt -- nt -2Gán modulo%= n /= 5- nt -- nt -2Gán chia/= n *= 2- nt -- nt -2Gán nhân*= n -= 10- nt -- nt -2Gán trừ dồn-= n += 10- nt -- nt -2Gán cộng dồn+= n = 10- nt -- nt -2Gán= q ? x : y- nt -Phải sang3Điều kiện?: Ví dụToán hạng Thứ tự trong biểu thức Ưu tiên Mô tảPhép toán 12 45 Cấu trúc điều khiển Tuần tự Cấu trúc điều kiện Cấu trúc lặp 46 Cấu trúc điều kiện, dùng câu lệnh:  if ( condition ) st1 else st2  switch ( expression ){ case value1: st1; case value2: st2; ... default: stn;  } 47 Lưu ý, trong C/C++ không có kiểu luận lý, nên các biểu thức có giá trị nguyên. Giá trị khác không, mang ý nghĩa đúng. Ngược lại, mang ý nghĩa sai 48 Cấu trúc lặp có các dạng thể hiện:  while (condition ) st;  do st while (condition );  for ( init; condition; update) st; Ngoài ra,  break: để thoát khỏi chu trình lặp  continue: chuyển qua lần lặp kế tiếp 13 49 Yêu cầu Sử dụng được một trình biên dịch C/C++ nào đó để viết chương trình. Viết được chương trình cơ bản dùng các cấu trúc điều khiển trên các kiểu dữ liệu cơ bản

Các file đính kèm theo tài liệu này:

  • pdfjyksagupierh'iufgoasidu[ps (1).pdf
Tài liệu liên quan