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

Bài giảng Nhập môn công nghệ phần mềm: Chương 2 - TS. Nguyễn Văn Hiệp

15 6 0

Đ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 15
Dung lượng 154,27 KB

Nội dung

Bài giảng Nhập môn công nghệ phần mềm - Chương 2: Tổ chức cấu trúc phần mềm hướng đối tượng cung cấp cho người học các kiến thức: Sự phát triển trong cấu trúc tổ chức phần mềm, cấu trúc của 1 ứng dụng hướng đối tượng; đối tượng, thuộc tính, tác vụ, abstract type, alass, tính bao đóng,... Mời các bạn cùng tham khảo.

Chương Tổ chức cấu trúc phần mềm hướng ₫ối tượng 2.1 Sự phát triển cấu trúc tổ chức phần mềm 2.2 Cấu trúc ứng dụng hướng ₫ối tượng 2.3 Đối tượng, thuộc tính, tác vụ 2.4 Abstract type 2.5 Class 2.6 Tính bao ₫óng 2.7 Tính thừa kế & chế 'override' 2.8 Tính bao gộp 2.9 Thơng ₫iệp, tính ₫a xạ kiểm tra kiểu 2.10 Tính tổng qt hóa 2.11 Kết chương Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 2.1 Sự phát triển cấu trúc tổ chức phần mềm ƒ ƒ Ban ₫ầu, chương trình thường ngắn, giải vấn ₫ề nhỏ, rõ ràng, ₫ơn giản Lúc này, chương trình danh sách ngắn lệnh, lệnh xử lý tập liệu (số lượng ít) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Lệnh Lệnh Lệnh … Lệnh i … Lệnh j … Lệnh n Dữ liệu Dữ liệu Dữ liệu … Dữ liệu n Môn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 2.1 Sự phát triển cấu trúc tổ chức phần mềm ƒ ƒ ƒ Nếu phân tích kỹ hơn, ta thấy danh sách lệnh chương trình có tượng sau : ₫oạn lệnh giải vần nhỏ ₫ó xuất nhiều lần chương trình cần thực nhiều lần Ta viết ₫oạn lệnh lần, gán cho tên nhận dạng Ta gọi chương trình Trong họ ngơn ngữ C, ta dùng thuật ngữ function Function giúp ta tổ chức chương trình quán hơn, gọn nhẹ hơn, dễ bảo trì phát triển Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Dữ liệu Dữ liệu Dữ liệu … Dữ liệu n Môn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 2.1 Sự phát triển cấu trúc tổ chức phần mềm ƒ ƒ Trong chương trình bên phải, ta thấy chức tính cos(x) cần lần chương trình, ta ₫ịnh nghĩa hàm cos(x) lần với tham số x Mỗi cần tính cos(x) chương trình, ta cần viết lệnh gọi hàm ₫ơn giản Cos(0) Cos(90) Cos(45) Dữ liệu Dữ liệu Dữ liệu … Dữ liệu n Cos(x) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 2.1 Sự phát triển cấu trúc tổ chức phần mềm ƒ ƒ ƒ Trong thực tế nay, chương trình thường giải nhiều vấn ₫ề lớn, phức tạp, tương ứng với số lượng lớn hàm liệu Lúc ₫ể chúng module (file) bất tiện, khó trì Ta phải tìm cách khác tổ chức phần mềm : phân rã module lớn phức tạp ban ₫ầu thành nhiều module nhỏ : module chứa hàm chức liệu có mối quan hệ mật thiết ₫ó Đây cách tổ chức phần mềm hướng cấu trúc cổ ₫iển trước ₫ây Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Môn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 2.1 Sự phát triển cấu trúc tổ chức phần mềm Chương trình = tập module chức năng, module chứa số hàm + liệu có liên quan liệu Module module (file) ₫ược truy xuất tự Điểm nhập ₫âu chương trình (hàm liệu cục Main) hàm Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 2.1 Sự phát triển cấu trúc tổ chức phần mềm ƒ ƒ ƒ Mặc dù hàm hay liệu ₫ược ₫ặt module xác ₫ịnh, mặc ₫ịnh chúng ₫ược truy xuất tự bới ₫âu chương trình Đây khuyết ₫iểm lớn, ta khắc phục cách miêu tả tầm vực riêng cho phần tử : mặc ₫ịnh ngôn ngữ C, C++, phần tử ₫ều có tầm vực cơng cộng, nghĩa ₫âu chương trình ₫ều truy xuất ₫ược Nếu muốn hạn chế việc truy xuất từ ngồi module, ta dùng từ khóa static kết hợp với phần tử cần bao ₫óng, phần tử có tầm vực cục bộ, bên ngồi module khơng truy xuất ₫ược Một phương pháp khác ₫ể hạn chế tầm vực truy xuất phần tử ₫ịnh nghĩa theo cấu trúc lồng dạng phân cấp : A chức B B ₫ược truy xuất A, nơi khác bên A không thấy truy xuất ₫ược B Pascal ngơn ngữ ₫iển hình hỗ trợ khả Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 2.1 Sự phát triển cấu trúc tổ chức phần mềm ƒ ƒ Cho dù ₫ã dùng số biện pháp slide trước cấu trúc tổ chức phần mềm hướng cấu trúc cịn số khuyết ₫iểm khác Thí dụ, phần mềm ta cần nhiều module có chức A, số lượng ₫ộng chưa biết trước Cấu trúc hướng cấu trúc cho phép nhân module A với số lượng tĩnh biết trước phần mềm chạy Do ₫ó ta cần tìm cấu trúc tổ chức phần mềm khác : ₫ó cấu trúc tổ chức phần mềm hướng ₫ối tượng mà ta dùng chủ yếu Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 2.2 Cấu trúc tổ chức chương trình OOP Chương trình = tập ₫ối tượng sống ₫ộc lập, tương tác cần thiết ₫ể hoàn thành nhiệm vụ chương trình (ứng dụng) Đối tượng (object) liệu cục ₫ối tượng Điểm nhập chương trình (hàm Main) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 liệu cục hàm Môn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 2.2 Cấu trúc tổ chức chương trình OOP ƒ ƒ ƒ Cấu trúc chương trình hướng ₫ối tượng nhất, chứa loại thành phần : ₫ối tượng Các ₫ối tượng có tính ₫ộc lập cao ⇒ quản lý, kiểm sốt chương trình dễ (cho dù chương trình lớn) ⇒ dễ nâng cấp, bảo trì Khơng thể tạo liệu tồn cục chương trình ⇒ ₫iểm yếu chương trình cấu trúc khơng tồn Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 10 2.3 Đối tượng (Object) ‰ ‰ Đối tượng nguyên tử cấu thành ứng dụng Đối tượng bao gồm loại thành phần yếu : ƒ Tập tác vụ (operation) : tác vụ thực chức rõ ràng ₫ơn giản ₫ó mà bên ngồi cần dùng ƒ Tập thuộc tính liệu (attribute) : thuộc tính có kiểu liệu cụ thể, chứa giá trị cụ thể thuộc kiểu tương ứng thời ₫iểm Các thuộc tính phục vụ cho tác vụ ₫ối tượng xử lý tác vụ, ₫ó nên bao ₫óng ẩn dấu chúng ₫ối tượng, khơng cho bên ngồi thấy truy xuất trực tiếp Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 11 2.3 Đối tượng (Object) ‰ ‰ Viết phần mềm hướng ₫ối tượng qui trình ₫ặc tả loại ₫ối tượng cấu thành ứng dụng Đặc tả loại ₫ối tượng ₫ặc tả góc nhìn khác ₫ối tượng : ƒ Góc nhìn sử dụng : dùng phát biểu interface ƒ Góc nhìn thực cụ thể : dùng phát biểu class Implementation (class) Interface (abstract type) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 12 2.4 Kiểu trừu tượng (Abstract type) hay interface ‰ ‰ ‰ Phát biểu interface ₫ịnh nghĩa thông tin sử dụng ₫ối tượng mà bên ngồi thấy, kết hợp thơng tin với tên gọi, tên ₫ược gọi tên kiểu trừu tượng (Abstract type) hay ngắn gọn type Interface tập hợp ₫iểm nhập (entry) mà bên giao tiếp với ₫ối tượng C# cho phép ₫ịnh nghĩa nhiều loại ₫iểm nhập, phổ biến tác vụ chức (operation) Ta dùng chữ ký (signature) ₫ể ₫ịnh nghĩa phân biệt ₫iểm nhập Chữ ký tác vụ gồm : tên tác vụ (operation) danh sách tham số hình thức, tham số ₫ược ₫ặc tả thuộc tính : tên, type chiều di chuyển (IN, OUT, INOUT) ₫ặc tả chức tác vụ (thường dạng thích) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 13 2.4 Kiểu trừu tượng (Abstract type) hay interface ‰ ‰ ‰ ‰ Muốn làm việc với ₫ối tượng ₫ó, ta thường dùng biến ₫ối tượng Biến ₫ối tượng nên ₫ược ₫ặc tả kiểu tên interface, hạn chế dùng tên class cụ thể Biến ₫ối tượng biến tham khảo, khơng chứa trực tiếp ₫ối tượng, chứa thông tin ₫ể truy xuất ₫ược ₫ối tượng, bất chấp ₫ối tượng ₫ang nằm ₫âu Biến ₫ối tượng thuộc kiểu interface tham khảo ₫ến nhiều ₫ối tượng thuộc class cụ thể khác ₫ối tượng hỗ trợ ₫ược interface tương ứng Như vậy, ta dùng ₫ối tượng thông qua biến thuộc kiểu interface ta khơng cần biết thông tin thực chi tiết ₫ối tượng mà ₫ang dùng, nhờ code ứng dụng ₫ộc lập hoàn toàn với class thực ₫ối tượng ₫ược sử dụng ứng dụng Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 14 Thí dụ interface ‰ Thí dụ sau ₫ây miêu tả interface ₫ối tượng mà hỗ trợ tác vụ chuẩn hóa chuỗi tiếng Việt dạng tổ hợp dựng sẵn Thông qua interface, người dùng không thấy biết chi tiết thực tác vụ, ₫iều không ngăn cản họ việc dùng ₫ối tượng ₫ó có interface IVietLib interface IVietLib { //tác vụ chuẩn hóa chuỗi tiếng Việt dạng tổ hợp int VnPre2Comp(String src, int len, ref String dst); //tác vụ chuẩn hóa chuỗi tiếng Việt dạng dựng sẵn int VnComp2Pre(String src, int len, ref String dst); } Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 15 2.5 Class (Implementation) ‰ ‰ Phát biểu class ₫ịnh nghĩa chi tiết thực ₫ối tượng : ƒ ₫ịnh nghĩa thuộc tính, thuộc tính ₫ược ₫ặc tả thơng tin tên nhận dạng, kiểu liệu, tầm vực truy xuất, Kiểu thuộc tính type cổ ₫iển (kiểu giá trị : số nguyên, thực, ký tự, chuỗi ký tự, ) hay kiểu ₫ối tượng (kiểu tham khảo), trường hợp sau thuộc tính tham khảo ₫ến ₫ối tượng khác Trạng thái ₫ối tượng tập giá trị tất thuộc tính ₫ối tượng thời ₫iểm tương ứng ƒ 'coding' tác vụ (miêu tả giải thuật chi tiết hoạt ₫ộng tác vụ), hàm nội class thành phần khác Ngoài thành phần chức năng, ta phải ₫ịnh nghĩa tác vụ quản lý ₫ối tượng : khởi tạo trạng thái ban ₫ầu (constructor), dọn dẹp phần tử liên quan ₫ến ₫ối tượng ₫ối tượng bị xóa (destructor) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 16 Thí dụ class ‰ Thí dụ sau ₫ây miêu tả class thực interface IVietLib : class MyVietLib : IVietLib { //₫ịnh nghĩa thuộc tính cần dùng cho tác vụ //₫ịnh nghĩa tác vụ quản lý ₫ối tượng MyVietLib() {…} ~MyVietLib() {…} //₫ịnh nghĩa thuật giải tác vụ chuẩn hóa chuỗi tiếng Việt dạng tổ hợp int VnPre2Comp(String src, int len, ref String dst) {….} //₫ịnh nghĩa thuật giải tác vụ chuẩn hóa chuỗi tiếng Việt dạng dựng sẵn int VnComp2Pre(String src, int len, ref String dst) {…} } Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 17 2.6 Tính bao ₫óng (encapsulation) ‰ ‰ Bao ₫óng : che dấu chi tiết thực ₫ối tượng, khơng cho bên ngồi thấy truy xuất ⇒ tạo ₫ộ ₫ộc lập cao ₫ối tượng (tính nối ghép — coupling — hay phụ thuộc ₫ối tượng thấp), nhờ việc quản lý, hiệu chỉnh nâng cấp thành phần phần mềm dễ dàng, không ảnh hưởng ₫ến thành phần khác ƒ che dấu thuộc tính liệu : cần cho phép bên ngồi truy xuất thuộc tính vật lý, ta tạo thuộc tính luận lý (2 tác vụ get/set tương ứng) ₫ể giám sát kiểm soát việc truy xuất ƒ che dấu chi tiết thực tác vụ ƒ che dấu local function thực chúng C# cung cấp từ khóa private, protected, internal, public (slide 5, chương 3) ₫ể xác ₫ịnh tầm vực truy xuất thành phần class Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 18 2.7 Tính thừa kế (inheritance) ‰ ‰ ‰ Tính thừa kế cho phép giảm nhẹ cơng sức ₫ịnh nghĩa interface/class : ta ₫ịnh nghĩa interface/class từ ₫ầu mà cách kế thừa interface/class có sẵn gần giống với : ƒ Miêu tả tên cha : thành phần cha trở thành ƒ override số method class cha, kết override tác dụng ₫ối tượng class ƒ ₫ịnh nghĩa thêm chi tiết (thường ít) Đa thừa kế hay ₫ơn thừa kế C# cho phép ₫a thừa kế interface (₫a thực), hỗ trợ ₫ơn thừa kế class Thừa kế tạo mối quan hệ cha/con : phần tử ₫ã có cha, phần tử thừa kế cha ₫ược gọi Cha/con trực tiếp hay gián tiếp Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Môn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 19 2.7 Tính thừa kế (inheritance) ‰ Với tính chất thừa kế slide trước, ta rút ₫ược số kết luận : ƒ Đối tượng class ln lớn hay hay ₫ối tượng class cha ƒ Và thế, ₫ối tượng class hồn tồn ₫óng vai trò ₫ối tượng class cha thay ₫ối tượng class cha cần thiết, ngược lại thường khơng ₫ược Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 20 2.8 Tính bao gộp (aggregation) ‰ ‰ ₫ối tượng chứa nhiều ₫ối tượng khác ⇒ tạo nên mối quan hệ bao gộp cách ₫ệ quy ₫ối tượng Thí dụ ₫ối tượng quốc gia chứa nhiều ₫ối tượng tỉnh, ₫ối tượng tỉnh chứa nhiều ₫ối tượng quận/huyện,… Có góc nhìn tính bao gộp : ngữ nghĩa & thực Góc nhìn ngữ nghĩa Góc nhìn thực O2 O2 O1 O1 O3 Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 O3 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 21 Ví dụ bao gộp //₫ịnh nghĩa class miêu tả ₫ối tượng ₫ồ họa abstract class Geometry { // abstract base class public abstract void Draw (Graphics g); // abstract operation protected int xPos, yPos; protected COLORREF color; }; //₫ịnh nghĩa class ₫ồ họa phức hợp = tập ₫ối tượng ₫ồ họa ₫ã có class GeoGroup : Geometry { public override void Draw (Graphics g) { } ; // override private Geometry [] objList; //danh sách ₫ối tượng thành phần; int count; //số lượng ₫ối tượng thành phần }; Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 22 2.9 Thông ₫iệp (Message), ₫a xạ (Polymorphism) ‰ ‰ Thông ₫iệp phương tiện giao tiếp (hay tương tác) ₫ối tượng, cho phép gọi tác vụ chức ₫ối tượng từ tham khảo ₫ến ₫ối tượng Thông ₫iệp bao gồm thành phần : ƒ tham khảo ₫ến ₫ối tượng cần nhờ ƒ tên tác vụ muốn gọi ƒ danh sách tham số thực cần truyền cho (hay nhận từ) tác vụ public override void Draw (Graphics g) { for (int i=0; i < count; i++) objList[i].Draw(g); //gởi thông ₫iệp nhờ ₫ối tượng objList[i] // tự hiển thị lên ₫ối tượng vẽ g } Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 23 2.9 Thông ₫iệp (Message), ₫a xạ (Polymorphism) ‰ ‰ Xét ₫oạn lệnh sau : C1 obj = new C1(); obj.func(); //lần obj = new C2(); obj.func(); //lần Lệnh gởi thơng ₫iệp obj.func() kích hoạt tác vụ func() class C1 hay tác vụ func() class C2 ? Dùng kỹ thuật xác ₫ịnh hàm liên kết tĩnh : Dựa vào thông tin thời ₫iểm dịch, biến obj thuộc kiểu C1 máy dịch lời gởi thông ₫iệp obj.func() thành lời gọi hàm C1_func() Như máy chạy lệnh này, hàm C1_func() chạy, bất chấp thời ₫iểm chạy, obj ₫ang tham khảo ₫ối tượng class khác (C2) Điều không ₫úng với ý muốn người lập trình Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Môn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 24 2.9 Thông ₫iệp (Message), ₫a xạ (Polymorphism) ‰ Dùng kỹ thuật xác ₫ịnh hàm liên kết ₫ộng : Lệnh gởi thông ₫iệp obj.func() không ₫ược dịch lời gọi hàm mà ₫ược dịch thành ₫oạn lệnh máy với chức sau : xác ₫ịnh biến obj ₫ang tham khảo ₫ến ₫ối tượng nào, thuộc class nào, gọi hàm func() class ₫ó chạy Như vậy, obj ₫ang tham khảo ₫ối tượng thuộc class C1 hàm C1_func() ₫ược gọi, cịn obj ₫ang tham khảo ₫ối tượng thuộc class C2 hàm C2_func() ₫ược gọi Ta nói lời gởi thơng ₫iệp obj.func() có tính ₫a xạ Điều giải ₫úng ý muốn người lập trình Tính ₫a xạ : lệnh gởi thông ₫iệp ₫ến ₫ối tượng thơng qua tham khảo vị trí/thời ₫iểm khác kích hoạt việc thực thi tác vụ khác ₫ối tượng khác Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 25 Kiểm tra kiểu (type check) ‰ ‰ ‰ ‰ Khi lập trình, ta thường phạm nhiều lỗi : lỗi từ vựng, cú pháp, lỗi thuật giải Trong lỗi lỗi việc gán liệu khác kiểu thường xảy Để phát triệt ₫ể sớm lỗi sai kiểu, máy dùng chế kiểm tra kiểu chặt sớm thời ₫iểm dịch Trong lúc dịch, hoạt ₫ộng gán liệu (lệnh gán, truyền tham số) ₫ều ₫ược kiểm tra kỹ lưỡng, liệu biến lưu trữ không "tương thích" báo sai Tiêu chí khơng "tương thích" ? ƒ dùng kỹ thuật so trùng tên kiểu : tên kiểu không trùng không tương thích Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 26 Kiểm tra kiểu (type check) dùng mối quan hệ 'conformity' (tương thích tổng quát) Kiểu A 'conformity' với kiểu B A cung cấp tác vụ mà B có, tác vụ A cung cấp tương thích với tác vụ tương ứng B Nói nơm na A lớn hay B A 'conformity' với B Như vậy, quan hệ so trùng hay quan hệ con/cha (sub/super) trường hợp ₫ặc biệt quan hệ tương thích tổng quát Nhờ dùng mối quan hệ 'conformity', biến obj thuộc kiểu C1 chứa tham khảo ₫ến nhiều ₫ối tượng thuộc nhiều class khác nhau, class tương thích với class ₫ược dùng ₫ể ₫ịnh nghĩa biến obj ƒ ‰ ‰ Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Môn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 27 2.10 Tính tổng qt hóa (Generalization) ‰ ‰ ‰ Viết phần mềm hướng ₫ối tượng trình lặp : viết phát biểu interface/class ₫ể ₫ặc tả loại ₫ối tượng cấu thành phần mềm Nếu số lượng class cấu thành ứng dụng lớn việc viết phần mềm khó khăn, tốn nhiều thời gian công sức Làm giảm nhẹ thời gian, công sức lập trình ứng dụng lớn ? sử dụng chế thừa kế ₫ịnh nghĩa interface/class thay trực tiếp viết class cụ thể ₫ặc tả cho ₫ối tượng phần mềm, ta viết class tổng quát hóa, nhờ class sinh tự ₫ộng mã nguồn class cụ thể Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập mơn Cơng nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 28 2.10 Tính tổng quát hóa (Generalization) ‰ ‰ Thí dụ, thay phải viết n class gần giống danh sách số nguyên, danh sách số thực, danh sách chuỗi, danh sách record Sinhvien, danh sách ₫ối tượng ₫ồ họa, ta cần viết class tổng quát hóa : danh sách phần tử có kiểu hình thức T Khi cần tạo class danh sách phần tử thuộc kiểu cụ thể ₫ó, ta viết lệnh gọi class tổng quát hóa truyền tên kiểu cụ thể phần tử danh sách Mỗi ngơn ngữ hướng ₫ối tượng (C++, Java, C#) có khả năng, tính chất, mức ₫ộ hỗ trợ tổng quát hóa khác Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 29 2.11 Kết chương ‰ ‰ ‰ Chương ₫ã giới thiệu cấu trúc chương trình hướng ₫ối tượng, phương tiện ₫ặc tả ₫ối tượng interface, class Chương ₫ã giới thiệu tính chất liên quan ₫ến việc ₫ặc tả sử dụng ₫ối tượng thừa kế, bao ₫óng, bao gộp, tổng quát hóa Chương ₫ã giới thiệu phương tiện giao tiếp ₫ối tượng thông ₫iệp, nhu cầu cần phải có tính ₫a xạ việc thực lệnh gởi thông ₫iệp Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Mơn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 30 ... ĐH Bách Khoa Tp.HCM © 20 10 Môn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 29 2. 11 Kết chương ‰ ‰ ‰ Chương ₫ã giới thiệu cấu trúc chương trình hướng ₫ối... Trường ĐH Bách Khoa Tp.HCM © 20 10 Môn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 2. 2 Cấu trúc tổ chức chương trình OOP Chương trình = tập ₫ối tượng... © 20 10 Dữ liệu Dữ liệu Dữ liệu … Dữ liệu n Môn : Nhập môn Công nghệ phần mềm Chương : Tổ chức cấu trúc phần mềm hướng ₫ối tượng Slide 2. 1 Sự phát triển cấu trúc tổ chức phần mềm ƒ ƒ Trong chương

Ngày đăng: 08/05/2021, 13:07

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN