Chương Tổ chức cấu trúc phần mềm hướng ₫ối tượng ne C om 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 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Si 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) nh Vi 2.1 Sự phát triển cấu trúc tổ chức phần mềm Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 2.1 Sự phát triển cấu trúc tổ chức phần mềm om Dữ liệu Dữ liệu Dữ liệu … Dữ liệu n C 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 ne 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 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 Si nh Vi 2.1 Sự phát triển cấu trúc tổ chức phần mềm 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 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 2.1 Sự phát triển cấu trúc tổ chức phần mềm ne C 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 om 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi 2.1 Sự phát triển cấu trúc tổ chức phần mềm Si nh 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 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 2.1 Sự phát triển cấu trúc tổ chức phần mềm ne C 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ả om 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Si 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 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 nh Vi 2.1 Sự phát triển cấu trúc tổ chức phần mềm Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 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) om liệu cục ₫ối tượng ne C Điểm nhập chương trình (hàm Main) 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Si 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 nh Vi 2.2 Cấu trúc tổ chức chương trình OOP Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 2.3 Đối tượng (Object) ne C om Đố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 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Si 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 nh Vi 2.3 Đối tượng (Object) (class) Interface (abstract type) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 2.4 Kiểu trừu tượng (Abstract type) hay interface ne C 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 ngồi 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) om 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Si 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 nh Vi 2.4 Kiểu trừu tượng (Abstract type) hay interface Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 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); } ne C om 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 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) Si nh Vi 2.5 Class (Implementation) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 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) {…} } ne C om 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Bao ₫óng : che dấu chi tiết thực ₫ối tượng, không cho bên 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 Si nh Vi 2.6 Tính bao ₫óng (encapsulation) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 2.7 Tính thừa kế (inheritance) om C 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 khơng phải 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 ne 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 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 Si nh Vi 2.7 Tính thừa kế (inheritance) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 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 om C O1 O3 ne 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Vi Ví dụ bao gộp Si nh //₫ị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 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 2.9 Thông ₫iệp (Message), ₫a xạ (Polymorphism) ne C om 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 } 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 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 Si nh Vi 2.9 Thơng ₫iệp (Message), ₫a xạ (Polymorphism) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 2.9 Thông ₫iệp (Message), ₫a xạ (Polymorphism) om C ne 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, 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 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Si 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 nh Vi Kiểm tra kiểu (type check) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 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 ne C om 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Si 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ể nh Vi 2.10 Tính tổng qt hóa (Generalization) Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 SinhVienZone.com 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 https://fb.com/sinhvienzonevn 2.10 Tính tổng quát hóa (Generalization) ne C 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 qt hóa khác om 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 en Zo Khoa Khoa học & Kỹ thuật Máy tính Trường ĐH Bách Khoa Tp.HCM © 2010 Si 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 nh Vi 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 SinhVienZone.com 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 https://fb.com/sinhvienzonevn ... © 2010 SinhVienZone. com 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 https://fb .com/ sinhvienzonevn 2.1 Sự phát triển cấu trúc tổ chức phần mềm ne... 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 nh Vi 2.1 Sự phát triển cấu trúc tổ chức phần mềm Khoa... Khoa Tp.HCM © 2010 SinhVienZone. com 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 https://fb .com/ sinhvienzonevn 2.2 Cấu trúc tổ chức chương trình OOP