Bài giảng Lập trình hướng đối tượng - Thiết kế hướng đối tượng
Mô hình hướng đối tượng – Object-oriented Paradigm
Phân loại các đối tượng tương tự
Mô hình hoá đối tượng – Object modelling
Sơ đồ quan hệ đối tượng – Object relationship diagrams
Các hành vi của đối tượng – Object behaviors
Lập trình hướng đối tượng
Tiếp theo?
Thiết kế Hướng Đối tượng Lập trình Hướng Đối tượng Tài liệu đọc Eckel Bruce. Thinking in C++, 2nd. Vol 1. Chapter 1: Introduction to Objects Analysis and Design Extreme Programming Thiết kế hướng đối tượng Mô hình hướng đối tượng – Object-oriented Paradigm Phân loại các đối tượng tương tự Mô hình hoá đối tượng – Object modelling Sơ đồ quan hệ đối tượng – Object relationship diagrams Các hành vi của đối tượng – Object behaviors Lập trình hướng đối tượng Tiếp theo? Thiết kế hướng đối tượng để làm gì? Lập trình hướng đối tượng là quy trình tạo một chương trình dựa theo một thiết kế hướng đối tượng là cái gì? Thiết kế hướng đối tượng là quy trình thiết kế một hệ thống sử dụng các nguyên lý thiết kế hướng đối tượng C++ được coi là một ngôn ngữ hướng đối tượng vì nó cung cấp các tiện ích đặc biệt cho việc tổ chức chương trình và dữ liệu theo mô hình hướng đối tượng Trừu tượng hóa các đối tượng lớp/kiểu dữ liệu Trừu tượng hóa cách nhìn đơn giản hóa về một đối tượng mà trong đó chỉ bao gồm các đặc điểm được quan tâm và bỏ qua những chi tiết không cần thiết. Mô hình hướng đối tượng Đối tượng là gì? Một người, một địa điểm, một sự kiện, một sự vật… Ta mô tả một đối tượng bằng các thuộc tính của nó Một cái xe máy có mầu, hãng, kiểu, v.v. Một sinh viên có tên, mã sinh viên, ngày sinh… Ta sẽ gọi tập hợp giá trị các thuộc tính của một đối tượng cụ thể tại một thời điểm nào đó là trạng thái (state) của nó Mô hình hướng đối tượng Ta còn có thể nói về hành vi của một đối tượng Một hành vi là cái mà đối tượng có thể thực hiện, và sẽ bằng cách nào đó tác động tới một hoặc nhiều thuộc tính của đối tượng (do đó ảnh hưởng đến trạng thái của đối tượng) Xét một người có một thuộc tính tư thế - một trong các giá trị {đứng, ngồi, nằm, quỳ} Một hành vi “đứng” có thể dẫn đến kết quả là người đó đứng dậy (nếu người đó đang không ở tư thế đứng) Mô hình hướng đối tượng "Đối tượng" là gì? Một đối tượng là một người, địa điểm, sự kiện, hoặc sự vật Một đối tượng có thể được đặc trưng bởi một tập các thuộc tính và một tập hành vi hoạt động trên các thuộc tính đó Mô hình hướng đối tượng Các đối tượng liên lạc với nhau bằng các thông điệp (message) Một thông điệp là một yêu cầu một đối tượng thực hiện một hành vi Ví dụ, nếu ta muốn một người nào đó đứng dậy, ta có thể gửi một thông điệp đến cho người đó để đề nghị người đó đứng dậy Đối với con người, phần lớn việc “truyền thông điệp” (message-passing) của ta được thực hiện qua đường tiếng nói Ta sẽ thấy rằng cơ chế “truyền thông điệp” đó xảy ra trong lập trình hướng đối tượng qua các lời gọi hàm Mô hình hướng đối tượng Hoạt động của hệ thống hướng đối tượng: các đối tượng tương tác với nhau để thực hiện nhiệm vụ. Mô hình hướng đối tượng Hoạt động của hệ thống hướng đối tượng: các đối tượng tương tác với nhau để thực hiện nhiệm vụ. Mô hình hướng đối tượng phân loại đối tượng khả năng phân loại bẩm sinh của con người khả năng trừu tượng hoá này cho phép ta đơn giản hoá và tổ chức cuộc sống của mình, và hiểu về một thế giới rất phức tạp Hai cách phân loại đối tượng mà ta hay dùng nhất: phân loại các đối tượng tương tự (vd. các xe tải, các sinh viên) phân loại các đối tượng theo thành phần (vd. cấu tạo một xe tải gồm có một động cơ, một kính chắn gió, bốn bánh xe, v.v...) Phân loại các đối tượng tương tự Ta đã nói rằng một đối tượng có thể được mô tả bằng một tập các thuộc tính và một tập các hành vi. Phân loại các đối tượng tương tự: nhóm các đối tượng có cùng các thuộc tính và hành vi lại với nhau ví dụ, trong loại “ô tô”, ta có thể đưa vào đó các đối tượng có các thuộc tính mầu sắc, nhãn hiệu, kiểu, và các hành vi lái, dừng, rẽ. Lưu ý: phân loại theo "có hay không một thuộc tính", KHÔNG phân loại theo giá trị của thuộc tính ở đây, ta không lập nhóm các xe ô tô có giá trị “đỏ” cho thuộc tính mầu và giá trị “Honda” cho thuộc tính nhãn hiệu đối tượng chỉ cần có các thuộc tính đó là đủ để thuộc nhóm. Phân loại các đối tượng tương tự Ta sẽ gọi một nhóm các đối tượng tương tự là một lớp đối tượng – object class Vậy, một lớp là “một tập các đối tượng có cùng thuộc tính và hành vi” Mỗi đối tượng thuộc một lớp là một thể hiện (instance) của lớp đó Mỗi xe ô tô là một thể hiện của lớp ô tô Các thể hiện của một lớp phân biệt nhau bởi một số thuộc tính nhất định có giá trị duy nhất trong toàn lớp - định danh duy nhất định danh của sinh viên là mã sinh viên – không có hai sinh viên nào có mã giống nhau đôi khi không dễ tìm được cách phân biệt giữa các thể hiện Phân loại theo cấu tạo Thuộc tính của một lớp nào đó có thể có giá trị là một đối tượng thuộc một lớp nào đó Phân loại đối tượng theo cấu tạo là một trong các kiểu quan hệ có thể tồn tại giữa các đối tượng Kiểu quan hệ này thường được gọi là quan hệ chứa “has-a” a car has a windshield (xe ô tô có một kính chắn gió) Thuộc tính của lớp A có thể thuộc một lớp B khác, hoặc cũng thuộc chính lớp A đối với lớp Student, giá trị cho thuộc tính birthday là thể hiện của lớp Date, nhưng giá trị cho thuộc tính labPartner lại là các thể hiện của chính lớp Student Mô hình hoá đối tượng Một mô hình là một biểu diễn của một thứ có thật (đối tượng) mô hình máy bay là biểu diễn của máy bay thật sơ đồ thiết kế là mô hình của các toà nhà thật Trong tất cả các đặc điểm của đối tượng, chỉ quan tâm biểu diễn những đặc điểm có liên quan đến ngữ cảnh mà ta đang tạo mô hình đối với mô hình máy bay, ta muốn biểu diễn kích thước cánh theo tỷ lệ tương đối với thân máy bay, và không quan tâm đến chuyện máy bay sử dụng loại nhiên liệu nào. Mô hình hoá đối tượng Ta có thể dùng mô hình để mô tả ba khía cạnh của một “hệ thống” hướng đối tượng cấu trúc của các lớp đối tượng (các thuộc tính và hành vi) và mối liên quan giữa chúng (các quan hệ chứa, thừa kế) chuỗi các thông điệp truyền giữa các đối tượng theo thời gian hành vi của các thể hiện tổng quát của một lớp theo thời gian. Ta sẽ lập trung vào loại mô hình thứ nhất. Để mô tả cấu trúc của các lớp đối tượng và quan hệ giữa chúng, ta sẽ sử dụng một loại mô hình có tên Sơ đồ Quan hệ Đối tượng (Object Relationship Diagram – ORD) Trong UML (Unified Modeling Language), đây chính là sơ đồ lớp – class diagram Sơ đồ quan hệ đối tượng Bước đầu tiên khi mô hình hoá một hệ thống gồm các lớp đối tượng, ta xác định xem: có các lớp đối tượng nào? chúng có các thuộc tính gì? chúng có liên quan đến nhau như thế nào? Việc xác định hành vi của các lớp sẽ để sau ổn định tập thuộc tính cho mỗi lớp trước khi xác định các hành vi dùng để truy nhập các thuộc tính này Sơ đồ quan hệ đối tượng Mỗi lớp đối tượng biểu diễn bằng một hình chữ nhật với phía trên là tên lớp các thuộc tính được liệt kê tại nửa trên dùng dấu * để đánh dấu (các) thuộc tính hợp thành định danh duy nhất cho các thể hiện của lớp (đặt các thuộc tính này tại đầu danh sách) dấu - đặt trước các thuộc tính khác sẽ được giải thích sau Sơ đồ quan hệ đối tượng Các quan hệ giữa các lớp được thể hiện bằng các đường nối giữa hai lớp Quan hệ chứa (“has-a”) thể hiện bằng đường nối có ô quả trám tại đầu gắn với lớp có vai trò sở hữu Mỗi xe ca có 1 động cơ – each car has one engine Sơ đồ quan hệ đối tượng Quan hệ chứa - Aggregation sơ đồ cho thấy: Car có thuộc tính engine (tuy không cần liệt kê engine trong hình chữ nhật của lớp Car) lực lượng của một lớp tham gia quan hệ cho biết mỗi thể hiện của quan hệ có bao nhiêu đối tượng thuộc lớp đó tham gia (ví dụ, có bao nhiêu động cơ liên quan đến một cái ô tô) 1 có đúng một đối tượng tham gia m..n có từ m đến n 1..* có một hoặc nhiều 0..1 có một hoặc không Sơ đồ quan hệ đối tượng Quan hệ liên quan - Association sơ đồ biểu diễn quan hệ "lái" giữa người lái xe(driver) và xe (car). chiều từ DRIVER tới CAR ký hiêu lực lượng tương tự quan hệ chứa Ý nghĩa: mỗi thể hiện của quan hệ có từ 0 đến 2 đối tượng driver và 1 đối tượng car tham gia trong đó đối tượng driver có thể truyền thông điệp tới đối tượng car để điều khiển (lái) nó Sơ đồ quan hệ đối tượng Hành vi Khi đã xác định được tất cả các lớp đối tượng cần thiết, các thuộc tính và quan hệ giữa chúng, bước tiếp theo là chỉ ra các hành vi của các lớp đối tượng đó Nhớ lại rằng các hành vi được “gọi” bằng cách truyền thông điệp giữa các đối tượng (chẳng hạn một người bảo một người khác đứng dậy) Có những hành vi nào? Các lớp đối tượng có thể cần những hành vi nào để có thể sử dụng các thuộc tính của mình? Các lớp đối tượng cần thực hiện những nhiệm vụ nào cho các đối tượng khác? Sơ đồ quan hệ đối tượng Khi biểu diễn trong sơ đồ, các hành vi được liệt kê tại phần dưới của hình chữ nhật, ngăn cách với các thuộc tính bởi một đường kẻ ngang Lưu ý: các thuộc tính và hành vi trên sơ đồ chỉ là tiếng Anh đơn giản, không thể dùng thẳng vào C++ Khi nói về bước chuyển từ thiết kế hướng đối tượng thành chương trình hướng đối tượng, ta sẽ quay lại với quan hệ giữa các thuộc tính, hành vi, và biễu diễn của chúng trong C++ Các hành vi của đối tượng Constructor hành vi mô tả quy trình tạo một thể hiện mới của lớp Query (truy vấn) hành vi dùng để xác định giá trị hiện tại của thuộc tính của một đối tượng nào đó (trạng thái của đối tượng đó) Update (cập nhật) hành vi dùng để thay đổi trạng thái của một đối tượng cụ thể nào đó Loại thứ tư, destructor sẽ được bàn đến khi ta nói về lập trình hướng đối tượng Tiếp theo? Ta đã có kiến thức cơ bản về thiết kế hướng đối tượng và quan hệ của nó đối với lập trình hướng đối tượng, ta sẽ bắt đầu tìm hiểu cách xây dựng một chương trình hướng đối tượng bằng C++ Tuy nhiên, đây chưa phải kết thúc về thiết kế hướng đối tượng khi tiếp tục tìm hiểu về mô hình hướng đối tượng, ta sẽ quay lại vấn đề hướng đối tượng ở mức trừu tượng cao để giới thiệu các khái niệm mới ta sẽ tìm hiểu các khái niệm một cách tổng quát trước khi nói đến chuyện chúng được cài đặt trong C++ như thế nào
File đính kèm:
- Bài giảng Lập trình hướng đối tượng - Thiết kế hướng đối tượng.ppt