bài giảng kỹ thuật lập trình ths. trần xuân thanh - khoa cntt, đh thành đô

105 343 1
bài giảng kỹ thuật lập trình ths. trần xuân thanh - khoa cntt, đh thành đô

Đ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

Bài giảng Kỹ thuật lập trình Chương 1.1 NHẬP MƠN VỀ MÁY TÍNH VÀ LẬP TRÌNH Phần cứng phần mềm 1.1.1 Phần cứng (hardware) Phần cứng, gọi cương liệu (hardware), thành phần (vật lý) cụ thể máy tính hay hệ thống máy tính hình, chuột, bàn phím, máy in, máy quét, vỏ máy tính, nguồn, vi xử lý CPU, bo mạch chủ, loại dây nối, loa, ổ đĩa mềm, ổ đĩa cứng, ổ CDROM, ổ DVD, Dựa chức cách thức hoạt động người ta phân biệt phần cứng thành: - Nhập hay đầu vào (Input): Các phận thu nhập liệu hay mệnh lệnh bàn phím, chuột - Xuất hay đầu (Output): Các phận trả lời, phát tín hiệu, hay thực thi lệnh bên ngồi hình, máy in, loa, Ngồi phận nêu liên quan tới phần cứng máy tính cịn có khái niệm quan trọng sau đây: - Bus: chuyển liệu thiết bị phần cứng - BIOS (Basic Input Output System): gọi hệ thống xuất nhập nhằm khởi động, kiểm tra, cài đặt mệnh lệnh cho phần cứng giao quyền điều khiển cho hệ điều hành - CPU: phân vi xử lý điều khiển tồn máy tính - Kho lưu trữ liệu: lưu giữ, cung cấp, thu nhận liệu - Các loại chíp hỗ trợ: nằm bên bo mạch chủ hay nằm thiết bị ngoại vi máy tính chip quan trọng giữ vai trò điều khiển thiết bị liên lạc với hệ điều hành qua điều vận hay qua phần sụn - Bộ nhớ: thiết bị bên bo mạch chủ giữ nhiệm vụ trung gian cung cấp mệnh lệnh cho CPU liệu từ phận BIOS, phần mềm, kho lưu trữ, chuột đồng thời tải cho phận vừa kể kết tính tốn, phép tốn hay liệu đã/đang xử lý Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đô Bài giảng Kỹ thuật lập trình - Các cổng vào/ra: USB (Universal Serial Bus), Máy in, hình, chuột phím , … 1.1.2 Phần mềm (Sotfware) Phần mềm hay nhu liệu (software) tập hợp câu lệnh viết nhiều ngơn ngữ lập trình theo trật tự xác định nhằm tự động thực số chức giải tốn - Đặc điểm Trước đây, để tạo chương trình máy tính người ta phải làm việc trực tiếp với số 1, hay cịn gọi ngơn ngữ máy Cơng việc vơ khó khăn, chiếm nhiều thời gian, cơng sức đặc biệt dễ gây lỗi Để khắc phục nhược điểm này, người ta đề xuất hợp ngữ, ngôn ngữ cho phép thay dãy từ gợi nhớ tiếng Anh Tuy nhiên, cải tiến cịn chưa thật thích hợp với đa số người dùng máy tính, người ln mong muốn lệnh ý nghĩa thao tác mà mơ tả Vì vậy, từ năm 1950, người ta xây dựng ngôn ngữ lập trình mà câu lệnh gần với ngơn ngữ tự nhiên Các ngôn ngữ gọi ngơn ngữ lập trình bậc cao Chương trình máy tính thường tạo người, người gọi lập trình viên, nhiên tồn chương trình sinh chương trình khác - Phân loại + Theo phương thức hoạt động Phần mềm hệ thống: dùng để vận hành máy tính phần cứng máy tính, ví dụ hệ điều hành máy tính Windows XP, Linux, Unix, thư viện động (còn gọi thư viện liên kết động: dynamic linked library - DLL) hệ điều hành, trình điều khiển (driver), phần sụn (firmware) BIOS Đây loại phần mềm mà hệ điều hành liên lạc với chúng để điều khiển quản lý thiết bị phần cứng Phần mềm ứng dụng: để người sử dụng hồn thành hay nhiều cơng việc đó, ví dụ phần mềm văn phòng (Microsoft Office, Lotus 1-2-3, FoxPro, …), phần mềm doanh nghiệp, phần mềm quản lý nguồn nhân lực XETA, phần mềm giáo dục, sở liệu, phần mềm trị chơi, chương trình tiện ích, hay loại phần mềm ác tính Các phần mềm dịch mã: bao gồm trình biên dịch trình thơng dịch: loại chương trình đọc câu lệnh từ mã nguồn viết lập trình viên theo ngơn ngữ lập trình dịch sang dạng ngơn ngữ máy mà máy tính hiểu đưọc, hay dịch sang dạng khác tập tin đối tượng (object file) tập tin thư viện (library file) mà phần mềm khác (như hệ điều hành chẳng hạn) hiểu để vận hành máy tính thực thi lệnh Theo khả ứng dụng: Những phần mềm khơng phụ thuộc, bán cho khách hàng thị trường tự Ví dụ: phần mềm sở liệu Oracle, đồ họa Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đô Bài giảng Kỹ thuật lập trình Photoshop, Corel Draw, soạn thảo xử lý văn bản, bảng tính Ưu điểm: Thơng thường phần mềm có khả ứng dụng rộng rãi cho nhiều nhóm người sử dụng Khuyết điểm: Thiếu tính uyển chuyển, tùy biến Những phần mềm viết theo đơn đặt hàng hay hợp đồng khách hàng cụ thể (một cơng ty, bệnh viện, trường học ) Ví dụ: phần mềm điều khiển, phần mềm hỗ trợ bán hàng Ưu điểm: Có tính uyển chuyển, tùy biến cao để đáp ứng nhu cầu nhóm người sử dụng Khuyết điểm: Thơng thường phần mềm ứng dụng chuyên ngành hẹp + Các loại khác: Cũng người viết nên để phục vụ mục đích đó, Virus (máy tính) virus, trojan viết để chạy với mục đích riêng một nhóm người nhằn lừa đảo, quảng cáo, ăn cắp, phá hoại thông tin, phá hoại phần cứng để trêu chọc người dùng vi tính - Quá trình tạo phần mềm Về mặt thiết kế Tùy theo mức độ phức tạp phần mềm làm ra, người thiết kế phần mềm nhiều dùng đến phương tiện để tạo mẫu thiết kế theo ý muốn (chẳng hạn sơ đồ khối, lưu đồ, thuật toán mã giả), sau mẫu mã hố ngơn ngữ lập trình trình dịch chuyển thành khối lệnh (module) hay/và tệp khả thi Tập hợp tệp khả thi khối lệnh làm thành phần mềm Thường phần mềm tạo thành, hồn hảo phần mềm phải đưọc điều chỉnh hay sửa chữa từ khâu thiết kế khâu tạo thành phiên phần mềm số lần Một phần mềm thông thường tương thích với hay vài hệ điều hành, tùy theo cách thiết kế, cách viết mã nguồn ngơn ngữ lập trình dùng Sản xuất phát triển Việc phát triển đưa thị trường phần mềm đối tượng nghiên cứu mơn kỹ nghệ phần mềm hay cịn gọi cơng nghệ phần mềm (software engineering) Bộ môn nghiên cứu phương pháp tổ chức, cách thức sử dụng nguồn tài ngun, vịng quy trình sản xuất, với mối liên hệ với thị trường, liên hệ yếu tố với Tối ưu hoá qui trình sản xuất phần mềm đối tượng đưọc cứu xét môn 1.2 Các ngôn ngữ lập trình 1.2.1 Khái niệm ngơn ngữ lập trình Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đơ Bài giảng Kỹ thuật lập trình Ngơn ngữ lập trình (programming language) tập ngơn ngữ máy tính Đây dạng ngơn ngữ chuẩn hóa Nó dùng để miêu tả trình, ngữ cảnh cách chi tiết Định nghĩa (theo [Loud 94], T.3): Ngơn ngữ lập trình hệ thống ký hiệu hóa để miêu tả tính tốn (qua máy tính) dạng mà người máy đọc hiểu Theo định nghĩa ngơn ngữ lập trình phải thỏa mãn hai điều kiện là: Nó phải dễ hiểu dễ sử dụng người lập trình, để người dùng giải tốn khác Nó phải miêu tả cách đầy đủ rõ ràng tiến trình (process), để chạy máy tính khác Một tập hợp thị biểu thị nhờ ngơn ngữ lập trình để thực thao tác máy tính thơng qua chương trình Các tên khác khái niệm khơng bị lầm lẫn chương trình máy tính hay chương trình điện tốn Lưu ý: Khái niệm chương trình (program) viết cho máy vi tính nhằm giải vấn đế thường gọi phần mềm máy tính (Thí dụ chương trình MS Word cách gọi chung chung, xác phần mềm MS Word rõ chương trình ứng dụng.) Chữ lập trình dùng để thao tác người nhằm kiến tạo nên chương trình máy tính thơng qua ngơn ngữ lập trình Người ta cịn gọi q trình lập trình q trình mã hố thơng tin tự nhiên thành ngơn ngữ máy Trong trường hợp xác định chữ lập trình cịn viết "viết mã" (cho chương trình máy tính) Như vậy, theo định nghĩa, ngơn ngữ lập trình chương trình, dùng để tạo nên chương trình khác Một chương trình máy tính viết ngơn ngữ lập trình thị (của riêng ngơn ngữ ấy) góp phần tạo nên chương trình gọi mã nguồn chương trình Thao tác chuyển dạng từ mã nguồn sang thành chuỗi thị máy tính thực hồn tồn tương tự việc chuyển dịch ngôn ngữ tự nhiên người Các thao tác gọi biên dịch (hay ngắn gọn dịch) Người ta phân việc biên dịch làm hai loại tùy theo trình dịch xảy trước trình thực thi tính tốn hay xảy lúc với q trình tính tốn: Một phần mềm thơng dịch phần mềm có khả đọc, chuyển dịch mã nguồn ngôn ngữ lệnh cho máy tính tiến hành tính tốn dựa theo cú pháp ngôn ngữ Một phần mềm biên dịch hay ngắn gọn trình dịch phần mềm có khả chuyển dịch mã nguồn ngôn ngữ ban đầu sang dạng mã thuộc ngôn ngữ cấp thấp Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đô Bài giảng Kỹ thuật lập trình Ngơn ngữ cấp thấp chuỗi thị máy tính mà thực trực tiếp máy tính (thơng qua thao tác vùng nhớ) Trước đây, hầu hết trình dịch cũ thường phải thơng dịch từ mã nguồn sang mã phụ (các tệp có dang *.obj), sau đó, biên dịch tiếp sang tập tin thi hành Ngày nay, hầu hết trình dịch có khả biên dịch mã nguồn trực tiếp sang thành tập tin thi hành hay biên dịch sang dạng mã khác thấp tuỳ theo yêu cầu người lập trình Điểm khác thơng dịch biên dịch là: Trình thơng dịch dịch câu lệnh chương trình đích khơng lưu lại Cịn trình biên dịch dịch tồn chương trình, cho chương trình đích lưu lại máy tính thực chương trình Một chương trình máy tính thực thi cách tổ hợp việc biên dịch thông dịch Vì u cầu địi hỏi độ xác chi tiết cao nên việc viết mã thường gây khó khăn cho người đọc để theo dõi đơi gây khó cho lập trình viên tạo mã nguồn Do đó, lời khuyên nên dùng thêm nhiều giải lúc lập trình Các giải thường quan trọng cho người khác đọc hiểu mã nguồn 1.2.2 Phân loại ngôn ngữ lập trình Sau cách phân loại phổ biến: Logic Programming (Lập trình logic - LTL): Một phương pháp tiếp cận việc biểu diễn tri thức giải tốn lơgic từ sở tri thức cho trước máy tính Một sở tri thức tập kiện luật biểu diễn quan hệ lơgic kiện LTL xuất phát từ sở tri thức câu hỏi, tiến hành lập luận lôgic để tìm lời giải cho câu hỏi (VD: prolog,…) Functional Programming (lập trình hàm): sử dụng hàm hiểu theo nghĩa toán học làm cấu trúc điều khiển chương trình (VD: Lisp,…) Structural Programming (Lập trình có cấu trúc): Kĩ thuật lập trình dựa quan niệm phân tích chức xử lí thơng tin thành chức nhỏ hơn, làm mịn dần trình xây dựng đơn thể Chương trình dùng cấu trúc điều khiển bản: tuần tự, rẽ nhánh, lặp khỏi lặp Lập trình có cấu trúc sử dụng cách tiếp cận từ xuống, tức phân tách từ toàn thể đến phận, lại từ phận đến phận nhỏ Các đơn thể chương trình có cấu trúc có tính độc lập tương đối cao, giao tiếp với thông qua giao diện xác lập trước, Lập trình có cấu trúc có số ưu điểm: dễ phân công nhiều người lập chương trình, dễ thử hiệu chỉnh chương trình (VD: C, Pascal,…) Concurrent Programming (Lập trình song song): Chia vấn đề làm phần giải song song với (VD: Ada, Erlang, Java v.v.) Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đơ Bài giảng Kỹ thuật lập trình Object-Oriented Programming - OOP (Lập trình hướng đối tượng): phát minh năm 1965 Ole-Johan Dahl Kristen Nygaard ngơn ngữ Simula So với phương pháp lập trình cổ điển, triết lý bên loại ngơn ngữ loại để tái dụng khối mã nguồn cung ứng cho khối khả mới: chúng có hàm (gọi phương thức) liệu (gọi thuộc tính) nội Khối mã gọi đối tượng Các đối tượng độc lập với mơi trường có khả trả lời với yêu cầu bên ngồi tùy theo thiết kế người lập trình Với cách xây dựng này, đối tượng tương đương với chương trình riêng có nhiều đặc tính mà quan trọng tính đa hình, tính đóng, tính trừu tượng tính thừa kế (VD: Java, Ruby, C++ , C#, v.v.) Concurrency oriented programs (Lập trình hướng thành phần): Ý tưởng xây dựng phần mềm kết hợp modul lại với nhau, giống nhà máy lắp ráp oto (VD: Java, ) Agent oriented programs (Lập trình hướng Agent): Mỗi chương trình tạo có khả tự chủ, tự thực thi tùy thuộc vào mơi trường mà tồn (VD: Java, C#,…) Một ngôn ngữ không thiết phép thuộc loại trên, mà hỗ trợ nhiều kiểu tư khác 1.3 Giải vấn đề phát triển phần mềm - Các mơ hình phát triển sản phẩm phần mềm Q trình phát triển phần mềm tập hợp thao tác kết tương quan để sản xuất sản phẩm phần mềm Hầu hết thao tác tiến hành kỹ sư phần mềm Các cơng cụ hỗ trợ máy tính kỹ thuật phần mềm dùng để giúp số thao tác Có thao tác tảng hầu hết trình phần mềm là: + Đặc tả phần mềm: Các chức phần mềm điều kiện để hoạt động phải định nghĩa + Sự phát triển phần mềm: Để phần mềm đạt đặc tả phải có q trình phát triển + Đánh giá phần mềm: Phần mềm phải đánh giá để chắn làm mà khách hàng muốn + Sự tiến hóa phần mềm: Phần mềm phải tiến hóa để thỏa mãn thay đổi yêu cầu khách hàng - Mơ hình thác nước Mơ hình làm cho ý nghĩa việc sản xuất phần thấy rõ Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đơ Bài giảng Kỹ thuật lập trình + Phân tích yêu cầu định nghĩa: hệ thống dịch vụ, khó khăn mục tiêu hình thành trợ ý hệ thống người tiêu dùng Sau yếu tố định nghĩa cho hiểu người phát triển người tiêu dùng + Thiết kế phần mềm hệ thống: Thiết kế hệ thống trình, phận yêu cầu phần mềm lẫn phần cứng Hoàn tất tất kiến trúc hệ thống Thiết kế phần mềm tham gia vào việc biểu thị chức hệ thống phần mềm mà chuyển dạng thành hay nhiều chương trình khả thi + Thực thử nghiệm đơn vị: Trong giai đoạn này, thiết kế phần mềm phải chứng thực tập họp nhiều chương trình hay nhiều đơn vị nhỏ Thử nghiệm đơn vị bao gồm xác minh đơn vị thỏa mãn đặc tả + Tổng hợp thử nghiệm tồn bộ: Các đơn vị chương trình riêng lẻ hay chương trình tích hợp lại thử nghiệm hệ thống hoàn tất chứng tỏ yêu cầu phần mềm thỏa mãn Sau thử nghiệm phần mềm cung ứng cho người tiêu dùng + Sản xuất bảo trì: Thơng thường (nhưng khơng bắt buộc) pha lâu chu kỳ sống (của sản phẩm) Phần mềm cài đặt dùng thực tế Bảo trì bao gồm điều chỉnh lỗi mà chưa phát giai đọan trước chu kì sống; nâng cấp thực hệ thống đơn vị nâng cao hệ thống dịch vụ cho phát vê u cầu Điểm hạn chế mơ hình khơng linh hoạt Các phận đề án chia thành phần riêng giai đoạn Hệ thống phân phối không dùng khơng thỏa mãn u cầu khách hàng Mặc dù mơ hình phản ảnh thực tế công nghệ Như hệ mơ hình sở cho đa số hệ thống phát triển phần mềm - phần cứng - Mô hình phát triển tiến hố phần mềm Phân loại phát triển tiến hóa + Lập trình thăm dị: đối tượng trình cách làm việc với khách hàng để thăm dò yêu cầu phân phối phần mềm dứt diểm Sự phát triển nên bắt đầu với phần hiểu Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đơ Bài giảng Kỹ thuật lập trình rõ Phần mềm thêm vào chức mà đề nghị cho khách hàng (và nhận thơng tin) + Mẫu thăm dị: đối tượng phát triển tiến hoá nhằm hiểu yêu cầu khách hàng phát triển định nghĩa yêu cầu tốt cho phần mềm Các mẫu tập trung thí nghiệm với phần địi hỏi khách hàng mà gây khó hiểu hay ngộ nhận Phát triển phần mềm theo mơ hình tiến hố Phân tích mơ hình: Mơ hình phát triển tiến hóa hiệu mơ hình thác nước Tuy nhiên, cịn khuyết điểm: + Q trình khơng nhìn thấy rõ được: Các nhà quản lý cần phân phối thường xuyên để đo lường tiến Nó khơng kinh tế việc làm hồ sơ cho phần mềm + Phần mềm thường dược cấu trúc nghèo nàn: Sự thay đổi liên tục dễ làm đổ vỡ cấu trúc phần mềm, tạo khó khăn tốn phí + Thường địi hỏi kỹ đặc biệt: Hầu hết hệ thống theo cách tiến hành nhóm nhỏ có kỹ cao cá nhân phải động Mô hình thích hợp với: + Phát triển loại phần mềm tương đối nhỏ + Phát triển loại phần mềm có đời sống tương đối ngắn + Tiến hành hệ thống lớn chỗ mà biểu thị đặc tả chi tiết lúc tiến hành Thí dụ trường hợp hệ thống thông minh nhân tạo (AI) giao diện cho người dùng - Mơ hình xoắn ốc Boehm Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đô Bài giảng Kỹ thuật lập trình Phát triển phần mềm theo kiểu Boehm Đây mơ hình phát triển từ mơ hình thác nước cho thấy mức độ tổng quát pha sản xuất sản phẩm Mơ hình đề nghị Boehm vào năm 1988 Mơ hình rủi ro hình thành mơ hình q trình (sản xuất) tổng qt Mơ hình Boehm có dạng xoắn ốc Mỗi vòng lặp đại diện cho pha trình phần mềm Vịng tập trung tính khả thi, vòng kế lo định nghĩa yêu cầu, thiết kế, Khơng có pha xem cố định vòng xoắn Mỗi vịng có phần tương ứng với pha + Cài đặt đối tượng: Chỉ đối tượng pha đề án Những khó khăn hay cưỡng trình sản phẩm xác định lên kế hoạch chi tiết Xác định yếu tố rủi ro đề án Các phương án thay tùy theo rủi ro dự trù + Lượng định giảm thiểu rủi ro Tiến hành phân tích yếu tố rủi ro xác định Các bước đặt để giảm thiểu rủi ro + Phát triển đánh giá: Sau đánh giá yếu tố rủi ro, mô hình phát triển cho hệ thống chọn + Lên kế hoạch: Đề án xem xét định có nên hay khơng tiếp tục pha vịng lặp Các trình linh hoạt Là trình mà cấu trúc khởi động nhỏ linh động lớn dần đề án phần mềm nhằm tìm khó khăn trước trở thành vấn đề dẫn tới hủy hoại Quá trình nhấn mạnh gọn nhẹ tập trung phương pháp truyền thống Các trình linh hoạt Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đô Bài giảng Kỹ thuật lập trình dùng thơng tin phản hồi thay dùng kế hoạch, chế diều khiển Các thơng tin phản hồi có từ thử nghiệm phiên phát hành phần mềm tham gia Các trình linh hoạt thưịng có hiệu phương pháp cũ, dùng thời gian lập trình để sản xuất nhiều chức hơn, chất lượng cao hơn, không cung cấp khả kế hoạch lâu dài Một cách ngắn gọn phuơng pháp cung ứng hiệu cao cho vốn đầu tư, lại khơng định rõ hiệu Lập trình cực hạn, gọi tắt XP, loại trình linh hoạt biết đến nhiều Trong XP, pha xúc tiến bước cực nhỏ (hay liên tục) so với trình kiểu cũ, gọi "toán" xử lý Bước (với chủ định khơng hồn tất) bước tốn ngày hay tuần, thay phải tốn nhiều tháng phương pháp thác nước Đầu tiên, người viết thử nghiệm tự động để cung cấp mục tiêu cụ thể cho phát triển Kế đến giai đoạn viết mã (bởi cặp lập trình viên); giai đoạn hồn tất mà mã viết qua tất thử nghiệm người lập trình khơng tìm thêm thử nghiệm cần thiết Thiết kế kiến trúc điều chỉnh nâng cao sau giai đoạn viết mã người viết mã giai đoạn trước Hệ thống chưa hoàn tất hoạt động khai thác hay đem minh họa cho (một phần) người tiêu dùng mà số có người đội phát triển phần mềm Thời điểm người thực nghiệm lại bắt đầu viết thử nghiệm cho phần quan trọng hệ thống 1.4 Giải thuật Thuật toán, gọi giải thuật, tập hợp hữu hạn thị hay phương cách định nghĩa rõ ràng cho việc hoàn tất số việc từ trạng thái ban đầu cho trước; thị áp dụng triệt để dẫn đến kết sau dự đốn Nói cách khác, thuật tốn qui tắc hay qui trình cụ thể nhằm giải vấn đề số bước hữu hạn, nhằm cung cấp kết từ tập hợp kiện đưa vào Ví dụ: thuật tốn để giải phương trình bậc P(x): ax + b = c, (a, b, c số thực), tập hợp số thực bước sau đây: Nếu a = o b = c P(x) có nghiệm o b ≠ c P(c) vơ nghiệm Nếu a ≠ o P(x) có nghiệm x = (c - b)/a Lưu ý Khi thuật toán hình thành ta khơng xét đến việc chứng minh thuật tốn mà trọng đến việc áp dụng bước theo hướng dẫn có kết Việc chứng minh tính đầy đủ Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đơ 10 Bài giảng Kỹ thuật lập trình // lỗi dịng việc cài giá trị lên MyNoon } Lưu ý: Việc khai báo kiểu liệu nói chung hay thành viên lớp nói riêng có nhiều điểm phức tạp kết hợp với kiểu tham chiếu hay trỏ (xem thêm Const Correctness in C++, The C++ 'const' Declaration: Why & How en:Const correctness cách sử dụng từ khóa const cho có hiệu quả) Hàm ảo (virtual function) Hàm ảo thường định nghĩa lớp sở cho phép lớp dẫn xuất từ định nghĩa lại hàm ảo Giả sử FIGURE lớp sở, có sẵn phương thức Draw() Lớp SQUARE lớp CIRCLE dẫn xuất từ lớp FIGURE Tất nhiên ta phải định nghĩa lại hai phương thức SQUARE::Draw() CIRCLE::Draw() lớp cho phù hợp Giả sử ptr trỏ trỏ đối tượng thuộc lớp FIGURE, s c tương ứng hai đối tượng thuộc lớp SQUARE CIRCLE Ta muốn rằng, cho ptr trỏ tới s lời gọi prt->Draw() vẽ hình vng, cịn cho ptr trỏ tới c lời gọi prt>Draw() vẽ hình trịn Cách giải C++ định nghĩa FIGURE::Draw() hàm ảo Ta xem ví dụ sau: #include #include class FIGURE { int Xc, Yc; public: FIGURE (int x=0, int y=0){Xc=x;Yc=y;} virtual void Draw(){ cout

Ngày đăng: 17/10/2014, 07:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan