1. Trang chủ
  2. » Công Nghệ Thông Tin

BÀI GIẢNG: MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG pptx

108 539 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 108
Dung lượng 583,61 KB

Nội dung

BÀI GIẢNG: MƠN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG MƠN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Đối tượng : SV ₫ại học quy ngành CNTT Tài liệu tham khảo : Tập slide giảng & thực hành môn học The C++ Programming Language (special 3rd edition), Bjarne Stroustrup, 2000 CD MSDN Microsoft Visual Studio Online-Help môi trường JBuilder Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Slide MƠN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Nội dung gồm 10 chương : Ơn lại tính chất lập trình cấu trúc Các khái niệm lập trình OOP Cơ chế dịch mã OOP sang mã máy Tổng quát mức ₫ộ hỗ trợ OOP VC++ & Java Đặc tả class & tính chất ₫ối tượng VC++ Đặc tả class & tính chất ₫ối tượng Java Chi tiết gọi hàm, gởi thông ₫iệp & ₫a xạ VC++ Chi tiết gọi hàm, gởi thông ₫iệp & ₫a xạ Java Chi tiết thường trú, serialization, COM, Generalization & Template VC++ 10 Chi tiết thường trú, serialization, Generalization Java Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình hướng ₫ối tượng Slide MƠN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Chương ƠN LẠI CÁC TÍNH CHẤT CỦA LẬP TRÌNH CẤU TRÚC Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương 1: Ơn lại tính chất lập trình cấu trúc Slide Phương pháp phân tích từ-trên-xuống Mỗi vật môi trường xung quanh ta ₫ều ₫ược cấu thành từ nhiều phần tử nhỏ hơn, phần tử nhỏ lại ₫ược cấu thành từ nhiều phần tử nhỏ Thí dụ, người gồm ₫ầu, mình, tứ chi Tứ chi gồm tay chân Mỗi công việc cần giải máy tính ₫ược cấu thành từ nhiều cơng việc nhỏ hơn, công việc nhỏ lại ₫ược cấu thành từ nhiều công việc nhỏ Phương pháp phân tích từ-trên-xuống (top-down analysis) phương pháp thường sử dụng ₫ể phân tích cơng việc, nội dung phương pháp cố gắng xác ₫ịnh xem công việc cần giải ₫ược cấu thành từ công việc nhỏ nào, công việc nhỏ ₫ược cấu thành từ công việc nhỏ nào, cho ₫ến công việc xác ₫ịnh ₫ược cơng việc thật ₫ơn giản, thực dễ dàng Thí dụ việc học lấy kỹ sư CNTT khoa CNTT ĐHBK TP.HCM bao gồm cơng việc nhỏ học học kỳ từ tới 9, học học kỳ i học n môn học học kỳ ₫ó, học mơn học học m chương mơn ₫ó, Hình vẽ slide kế cho thấy trực quan phương pháp phân tích top-down Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương 1: Ơn lại tính chất lập trình cấu trúc Slide Phương pháp phân tích từ-trên-xuống (tt) Cơng việc cần giải (A) chia thành nhiều công việc nhỏ hơn, ₫ơn giản ₫ể giải Công việc A1 Công việc A11 Công việc A12 Các công việc ₫ủ nhỏ ₫ể ₫ược miêu tả lệnh hay lời gọi hàm/thủ tục ₫ã có Khoa Cơng nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Công việc A2 Công việc A1n Công việc An Công việc An1 Công việc An2 Công việc Ann Mơn : Lập trình hướng ₫ối tượng Chương 1: Ơn lại tính chất lập trình cấu trúc Slide Tầm vực truy xuất biến Tầm vực biến tập lệnh ₫ược phép truy xuất biến ₫ó C C++ cho phép cấp ₫ộ tầm vực sau : o cục function : lệnh function ₫ều truy xuất ₫ược biến cục function ₫ó void Command1_Click() { char strGreeting[256]; // Khai báo cục } o cục module : lệnh module ₫ều truy xuất ₫ược biến cục module ₫ó static char strAddr[256]; // biến cục module char strName[256]; // biến toàn cục o tồn cục : lệnh chương trình truy xuất ₫ược biến tồn cục Trong ngữ cảnh (cùng function, module, hay cấp tồn cục), khơng thể dùng hai biến tên (C phân biệt chữ HOA chữ thường) Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình hướng ₫ối tượng Chương 1: Ơn lại tính chất lập trình cấu trúc Slide Cấu trúc chương trình hướng cấu trúc Chương trình = cấu trúc liệu + giải thuật module (package) entry 'start' global data local data of module local data of function Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương 1: Ơn lại tính chất lập trình cấu trúc Slide Cấu trúc chương trình hướng cấu trúc Thành phần “giải thuật” bao gồm code ₫ược viết module Trong module, code ₫ược gom nhóm thành hàm chức năng, hàm ₫ược nhận dạng truy xuất thông qua tên hàm Thành phần “dữ liệu” bao gồm biến liệu ₫ược ₫ịnh nghĩa module Trong module, mặt tầm vực truy xuất, biến ₫ược ₫ịnh nghĩa cấp tầm vực : Public : lệnh chương trình ₫ều truy xuất ₫ược Private : có lệnh module hành truy xuất Ngồi hàm chức năng, người ta ₫ịnh nghĩa biến cục bộ, biến ₫ược truy xuất cục lệnh hàm tương ứng Ngoại lệ, số ngôn ngữ C, người ta cho phép ₫ịnh nghĩa biến lệnh thực thi (block — compose), biến ₫ược truy xuất cục lệnh thân lệnh block tương ứng ₫iểm yếu ngôn ngữ hướng cấu trúc cho phép ₫ịnh nghĩa biến toàn cục, biến bị lỗi, ta khó xác ₫ịnh nguyên nhân gây lỗi Việc mang hàm hay module ứng dụng sang ứng dụng khác khó khăn thường gây hiệu ứng “dây chuyền” Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình hướng ₫ối tượng Chương 1: Ơn lại tính chất lập trình cấu trúc Slide Cấu trúc chương trình hướng cấu trúc Xét Turbo Pascal, ứng dụng gồm module chương trình nhiều module dịch vụ ₫ược gọi Unit Để sử dụng thành phần module ₫ó, ta phải dùng lệnh Use Xét C, ứng dụng gồm nhiều module ngang hàng, module file gồm nhiều hàm chức Điểm nhập ứng dụng hàm main() Module C file thư viện liên kết tĩnh (*.lib) hay ₫ộng (*.dll) Để sử dụng thành phần module ₫ó, ta phải dùng lệnh #include Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương 1: Ơn lại tính chất lập trình cấu trúc Slide T nh t ̉ng quat hoa (tt) Hàm tổng quát hóa (function template) cho phép ta ₫ặc tả tập hàm mà dùng chung ₫oạn lệnh thực thi tác ₫ộng liệu thuộc kiểu hay class khác và/hoặc với số lượng khác Class tổng quát hóa (class template) cho phép ta ₫ặc tả tập class có tính chất giao diện giống tác ₫ộng liệu thuộc kiểu hay class khác và/hoặc với số lượng khác Class tổng quát hóa cho phép sản sinh tự ₫ộng class bình thường, class bình thường tự tạo ₫ối tượng Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 93 Function template Function template cho phép ta ₫ặc tả tập hàm mà dùng chung ₫oạn lệnh thực thi tác ₫ộng liệu thuộc kiểu hay class khác Thí dụ hàm IntSwap() sau ₫ây : void IntSwap(int& a, int& b ) { int c = a; a = b; b = c; } cho phép swap số nguyên, template MySwap() sau : template void MySwap( T& a, T& b ) { T c (a); a = b; b = c; } ₫ịnh nghĩa họ hàm swap liệu có kiểu Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 94 Function template (tt) Ta gọi hàm “template function” y gọi hàm bình thường, khơng có khác biệt : int i, j; char k; MySwap (i, j); //Ok MySwap (i, k); //Sai khác kiểu Ta ₫ặc tả tham số rõ ràng gọi hàm “template function”, thí dụ : MySwap(i,j); //tạo hàm MySwap (int&, int&) gọi với (i,j) Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 95 Class template Class template cho phép ta ₫ặc tả tập class mà dùng chung interface cấu trúc liệu tác ₫ộng liệu thuộc kiểu hay class khác Thí dụ class IntStack sau ₫ây : class IntStack { int StackBuffer[100]; int cItems; public: void IntStack( void ) : cItems( 100 ) {}; void push( const int item ); int pop( void ); }; int IntStack::pop ( void ) { if ( cItems < 100) void IntStack::push( const int item ) { return StackBuffer[cItems++]; if ( cItems > ) StackBuffer[ cItems] = item; else else throw "Stack overflow error."; throw "Stack underflow error."; return; } } Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 96 Class template Class IntStack ₫ược ₫ặc tả slide trước tạo ₫ối tượng stack chứa số nguyên Nếu muốn stack chứa số thực, ta phải ₫ịnh nghĩa class khác (gần giống với class IntStack) Tương tự, muốn stack chứa chuỗi, ta lại phải ₫ịnh nghĩa class khác (gần giống với class IntStack) Class template cho phép ta khắc phục ₫ược phiền hà Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 97 Class template Cú pháp khai báo class template : template-declaration : template < template-argument-list > declaration template-argument-list : template-argument template-argument-list , template-argument template-argument : type-argument argument-declaration type-argument : class identifier typename identifier declaration : ₫ặc tả class bình thường có nhiều vị trí có dùng tham số template Khoa Cơng nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 98 Class template (tt) template class MyStack { T StackBuffer[i]; int cItems; public: void MyStack( void ) : cItems( i ) {}; void push( const T item ); T pop( void ); }; template void MyStack< T, i >::push( const T item ) { if( cItems > ) StackBuffer[ cItems] = item; else throw "Stack overflow error."; return; } Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 99 Class template (tt) template T MyStack< T, i >::pop( void ) { if( cItems < i ) return StackBuffer[cItems++]; else throw "Stack underflow error."; } Cho phép ₫ặc tả class miêu tả stack gồm nhiều liệu ₫ó, thí dụ : MyStack intstack; // biến quản lý stack có tối ₫a 20 số nguyên MyStack strstack; // biến quản lý stack có tối ₫a 40 chuỗi MyStack dblstack; // biến quản lý stack có tối ₫a 100 số thực Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 100 Class template (tt) Xem phần phụ lục chương ₫ể biết chi tiết, cụ thể template MFC ₫ược dùng phổ biến CArray CList Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 101 Định nghĩa class "serializable" Đọc/ghi liệu biến thuộc kiểu cổ ₫iển (int, double, char[], ) rấr dễ nội dung biến không chứa tham khảo ₫ến thành phần khác Ngược lại, việc ₫ọc/ghi nội dung ₫ối tượng thường khó khăn ₫ối tượng chứa nhiều tham khảo ₫ến ₫ối tượng khác ₫ối tượng tham khảo vịng lẫn Để hỗ trợ phần việc ₫ọc/ghi nội dung ₫ối tượng, VC++ ₫ề nghị kỹ thuật "Serialization" Để ₫ịnh nghĩa class "serializable", ta cần thực tác vụ : ₫ịnh nghĩa class class CObject (gián tiếp hay trực tiếp) Overriding tác vụ "Serialize" Dùng macro DECLARE_SERIAL phát biểu ₫ặc tả class Định nghĩa hàm constructor không tham số Dùng macro IMPLEMENT_SERIAL thực class Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình hướng ₫ối tượng Chương : Tổng qt hóa xây dựng hàm & class Slide 102 Định nghĩa class "serializable" //1 thừa kế class CObject class MyClass : public CObject { public : //3 dùng macro DECLARE_SERIAL DECLARE_SERIAL( MyClass); //4 ₫ịnh nghĩa constructor không tham số MyClass(); virtual void Serialize( CArchive& archive ); }; //5 dùng macro IMPLEMENT_SERIAL IMPLEMENT_SERIAL(MyClass, CObject, ) //2 Override hàm Serialize void MyClass::Serialize( CArchive& ar ) { } Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 103 Định nghĩa hàm Serialize void MyClass::Serialize (CArchive& ar ) { //1 gọi hàm Serialize class cha CObject::Serialize(ar); //2 gọi hàm Serialize ₫ối tượng ₫ược chứa vật lý ba.Serialize( ar ); //3 Serialize ₫ối tượng ₫ược tạo ₫ộng thuộc tính cổ ₫iển if ( ar.IsStoring() ) { //ở chế ₫ộ ghi ₫ối tượng ar pba; // Polymorphic reconstruction of persistent object //load other members ar >> b1; ar >> b2; } } Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 104 Ghi ₫ối tượng Để ghi ₫ối tượng thuộc class "serializable", ta cần thực tác vụ : Định nghĩa ₫ối tượng CFile miêu tả file chứa thông tin Định nghĩa ₫ối tượng CArchive ổ chế ₫ộ "store" Gọi tác vụ Serialize cần ghi ₫ối tượng Đóng ₫ối tượng CArchive Đóng file //1 Định nghĩa ₫ối tượng CFile CFile theFile; theFile.Open("c:\\persist.bin", CFile::modeCreate | CFile::modeWrite); //2 Định nghĩa ₫ối tượng CArchive CArchive archive(&theFile, CArchive::store); MyClass obj; //3 Gọi tác vụ Serialize ₫ể ghi ₫ối tượng obj.Serialize(archive); //4 Gọi tác vụ Close ₫ể ₫óng ₫ối tượng archive archive.Close(); //5 Gọi tác vụ Close ₫ể ₫óng ₫ối tượng file theFile.Close(); Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 105 Đọc lại ₫ối tượng Để ₫ọc lại ₫ối tượng thuộc class "serializable", ta cần thực tác vụ : Định nghĩa ₫ối tượng CFile miêu tả file chứa thông tin Định nghĩa ₫ối tượng CArchive ổ chế ₫ộ "load" Gọi tác vụ Serialize cần ghi ₫ối tượng Đóng ₫ối tượng CArchive Đóng file //1 Định nghĩa ₫ối tượng CFile CFile theFile; theFile.Open("c:\\persist.bin", CFile::modeRead); //2 Định nghĩa ₫ối tượng CArchive CArchive archive(&theFile, CArchive::load); MyClass obj; //3 Gọi tác vụ Serialize ₫ể ₫ọc lại ₫ối tượng obj.Serialize(archive); //4 Gọi tác vụ Close ₫ể ₫óng ₫ối tượng archive archive.Close(); //5 Gọi tác vụ Close ₫ể ₫óng ₫ối tượng file theFile.Close(); Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 106 Thí dụ ₫ọc/ghi ₫ối tượng intB1 = dblB2 = 2.345 ba intA1 = dblA2 = 1.234 pab pba pba1 intA1 = dblA2 = 3.456 pab intA1 = dblA2 = 4.567 pab ₫ối tượng class B ₫ối tượng class A Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương : Tổng quát hóa xây dựng hàm & class Slide 107 ... Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương 1: Ơn lại tính chất lập trình cấu trúc Slide 11 MƠN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Chương CÁC KHÁI NIỆM CHÍNH CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Khoa Cơng... Bách Khoa Tp.HCM Mơn : Lập trình hướng ₫ối tượng Chương : Các khái niệm lập trình hướng ₫ối tượng Slide 31 MƠN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Chương CƠ CHẾ DỊCH MÃ HƯỚNG ĐỐI TƯỢNG SANG MÃ MÁY Khoa... Tp.HCM Môn : Lập trình hướng ₫ối tượng Slide MƠN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Chương ƠN LẠI CÁC TÍNH CHẤT CỦA LẬP TRÌNH CẤU TRÚC Khoa Cơng nghệ Thơng tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình hướng

Ngày đăng: 12/07/2014, 10:21

TỪ KHÓA LIÊN QUAN

w