OOAD - Mô hình đối tượng

Mô hình đối tượng trực quan hóa các phần tử trong một ứng dụng phần mềm dưới dạng các đối tượng. Trong chương này, chúng ta sẽ xem xét các khái niệm và thuật ngữ cơ bản của hệ thống hướng đối tượng.

Đối tượng và Lớp

Các khái niệm về đối tượng và các lớp được liên kết với nhau về bản chất và tạo thành nền tảng của mô hình hướng đối tượng.

Vật

Đối tượng là một phần tử trong thế giới thực trong môi trường hướng đối tượng có thể tồn tại vật chất hoặc khái niệm. Mỗi đối tượng có -

  • Nhận dạng phân biệt nó với các đối tượng khác trong hệ thống.

  • Trạng thái xác định các thuộc tính đặc trưng của một đối tượng cũng như các giá trị của các thuộc tính mà đối tượng đó nắm giữ.

  • Hành vi thể hiện các hoạt động có thể nhìn thấy bên ngoài được thực hiện bởi một đối tượng trong điều kiện thay đổi trạng thái của nó.

Các đối tượng có thể được mô hình hóa theo nhu cầu của ứng dụng. Một đối tượng có thể tồn tại vật chất, chẳng hạn như khách hàng, ô tô, v.v.; hoặc một tồn tại khái niệm vô hình, như một dự án, một quy trình, v.v.

Lớp học

Một lớp đại diện cho một tập hợp các đối tượng có cùng các thuộc tính đặc trưng thể hiện hành vi chung. Nó cung cấp bản thiết kế hoặc mô tả của các đối tượng có thể được tạo ra từ nó. Việc tạo một đối tượng với tư cách là một thành viên của một lớp được gọi là khởi tạo. Vì vậy, đối tượng là một thể hiện của một lớp.

Các thành phần của một lớp là -

  • Một tập hợp các thuộc tính cho các đối tượng sẽ được khởi tạo từ lớp. Nói chung, các đối tượng khác nhau của một lớp có một số khác biệt về giá trị của các thuộc tính. Các thuộc tính thường được gọi là dữ liệu lớp.

  • Một tập hợp các hoạt động mô tả hành vi của các đối tượng của lớp. Các hoạt động cũng được gọi là chức năng hoặc phương thức.

Example

Chúng ta hãy xem xét một lớp đơn giản, Circle, đại diện cho hình tròn hình học trong không gian hai chiều. Các thuộc tính của lớp này có thể được xác định như sau:

  • x – coord, để biểu thị tọa độ x của tâm
  • y – coord, để biểu thị tọa độ y của tâm
  • a, để biểu thị bán kính của hình tròn

Một số hoạt động của nó có thể được định nghĩa như sau:

  • findArea (), phương thức tính diện tích
  • findCircumference (), phương pháp tính chu vi
  • scale (), phương thức tăng hoặc giảm bán kính

Trong quá trình khởi tạo, các giá trị được gán cho ít nhất một số thuộc tính. Nếu chúng ta tạo một đối tượng my_circle, chúng ta có thể gán các giá trị như x-coord: 2, y-coord: 3 và a: 4 để mô tả trạng thái của nó. Bây giờ, nếu hoạt động scale () được thực hiện trên my_circle với hệ số tỷ lệ là 2, giá trị của biến a sẽ trở thành 8. Phép toán này mang lại sự thay đổi trong trạng thái của my_circle, tức là đối tượng đã thể hiện một số hành vi nhất định.

Đóng gói và ẩn dữ liệu

Đóng gói

Đóng gói là quá trình liên kết cả hai thuộc tính và phương thức với nhau trong một lớp. Thông qua tính năng đóng gói, các chi tiết bên trong của một lớp có thể được ẩn từ bên ngoài. Nó cho phép các phần tử của lớp chỉ được truy cập từ bên ngoài thông qua giao diện do lớp cung cấp.

Ẩn dữ liệu

Thông thường, một lớp được thiết kế sao cho dữ liệu (thuộc tính) của nó chỉ có thể được truy cập bằng các phương thức của lớp và được cách ly khỏi truy cập trực tiếp từ bên ngoài. Quá trình cách ly dữ liệu của một đối tượng này được gọi là ẩn dữ liệu hoặc ẩn thông tin.

Example

Trong lớp Circle, ẩn dữ liệu có thể được kết hợp bằng cách làm cho các thuộc tính ẩn từ bên ngoài lớp và thêm hai phương thức nữa vào lớp để truy cập dữ liệu lớp, đó là:

  • setValues ​​(), phương thức để gán giá trị cho x-coord, y-coord và a
  • getValues ​​(), phương thức để truy xuất các giá trị của x-coord, y-coord và a

Ở đây, dữ liệu riêng tư của đối tượng my_circle không thể được truy cập trực tiếp bằng bất kỳ phương thức nào không được đóng gói trong lớp Circle. Thay vào đó, nó phải được truy cập thông qua các phương thức setValues ​​() và getValues ​​().

Thông qua

Bất kỳ ứng dụng nào cũng yêu cầu một số đối tượng tương tác một cách hài hòa. Các đối tượng trong một hệ thống có thể giao tiếp với nhau bằng cách truyền thông điệp. Giả sử một hệ thống có hai đối tượng: obj1 và obj2. Đối tượng obj1 gửi thông báo đến đối tượng obj2, nếu obj1 muốn obj2 thực thi một trong các phương thức của nó.

Các tính năng của truyền tin là -

  • Thông điệp truyền giữa hai đối tượng thường là một chiều.
  • Truyền thông điệp cho phép tất cả các tương tác giữa các đối tượng.
  • Việc truyền thông điệp về cơ bản liên quan đến việc gọi các phương thức của lớp.
  • Các đối tượng trong các quy trình khác nhau có thể tham gia vào quá trình truyền thông điệp.

Di sản

Kế thừa là cơ chế cho phép các lớp mới được tạo ra từ các lớp hiện có bằng cách mở rộng và tinh chỉnh các khả năng của nó. Các lớp hiện có được gọi là lớp cơ sở / lớp cha / lớp siêu và các lớp mới được gọi là lớp dẫn xuất / lớp con / lớp con. Lớp con có thể kế thừa hoặc dẫn xuất các thuộc tính và phương thức của (các) lớp siêu với điều kiện lớp siêu cho phép như vậy. Bên cạnh đó, lớp con có thể thêm các thuộc tính và phương thức của riêng nó và có thể sửa đổi bất kỳ phương thức siêu lớp nào. Thừa kế xác định mối quan hệ “là - một”.

Example

Từ một lớp Động vật có vú, một số lớp có thể được suy ra như Người, Mèo, Chó, Bò, ... Con người, mèo, chó và bò đều có những đặc điểm riêng biệt của động vật có vú. Ngoài ra, mỗi loại đều có những đặc điểm riêng. Có thể nói bò “là - một loài động vật có vú”.

Các loại thừa kế

  • Single Inheritance - Một lớp con dẫn xuất từ ​​một siêu lớp duy nhất.

  • Multiple Inheritance - Một lớp con dẫn xuất từ ​​nhiều hơn một lớp siêu.

  • Multilevel Inheritance - Một lớp con dẫn xuất từ ​​một siêu lớp mà đến lượt nó được dẫn xuất từ ​​một lớp khác, v.v.

  • Hierarchical Inheritance - Một lớp có một số lớp con, mỗi lớp có thể có các lớp con tiếp theo, tiếp tục cho một số cấp, để tạo thành cấu trúc cây.

  • Hybrid Inheritance - Sự kết hợp của sự kế thừa đa cấp và đa cấp để tạo thành cấu trúc mạng tinh thể.

Hình dưới đây mô tả các ví dụ về các kiểu thừa kế khác nhau.

Tính đa hình

Đa hình nguyên gốc là một từ Hy Lạp có nghĩa là khả năng có nhiều dạng. Trong mô hình hướng đối tượng, tính đa hình ngụ ý sử dụng các hoạt động theo những cách khác nhau, tùy thuộc vào trường hợp mà chúng đang hoạt động. Tính đa hình cho phép các đối tượng có cấu trúc bên trong khác nhau có một giao diện bên ngoài chung. Tính đa hình đặc biệt hiệu quả trong khi thực hiện kế thừa.

Example

Chúng ta hãy xem xét hai lớp, Circle và Square, mỗi lớp có một phương thức findArea (). Mặc dù tên và mục đích của các phương thức trong các lớp là giống nhau, nhưng việc triển khai bên trong, tức là thủ tục tính diện tích là khác nhau đối với mỗi lớp. Khi một đối tượng của lớp Circle gọi phương thức findArea () của nó, phép toán tìm diện tích của hình tròn mà không có bất kỳ xung đột nào với phương thức findArea () của lớp Square.

Tổng quát hóa và Chuyên môn hóa

Tổng quát hóa và đặc biệt hóa đại diện cho một hệ thống phân cấp các mối quan hệ giữa các lớp, trong đó các lớp con kế thừa từ các siêu lớp.

Sự khái quát

Trong quá trình khái quát hóa, các đặc điểm chung của các lớp được kết hợp với nhau để tạo thành một lớp ở mức cao hơn của hệ thống phân cấp, tức là các lớp con được kết hợp để tạo thành một siêu lớp tổng quát hóa. Nó thể hiện mối quan hệ “là - một - loại - của”. Ví dụ: “ô tô là một loại phương tiện trên bộ” hoặc “tàu là một loại phương tiện thủy”.

Chuyên môn hóa

Chuyên môn hóa là quá trình ngược lại của tổng quát hóa. Ở đây, các đặc điểm phân biệt của các nhóm đối tượng được sử dụng để tạo thành các lớp chuyên biệt từ các lớp hiện có. Có thể nói, các lớp con là phiên bản chuyên biệt của siêu lớp.

Hình sau đây cho thấy một ví dụ về tổng quát hóa và đặc biệt hóa.

Liên kết và Liên kết

Liên kết

Một liên kết biểu thị một kết nối mà qua đó một đối tượng cộng tác với các đối tượng khác. Rumbaugh đã định nghĩa nó là “một kết nối vật lý hoặc khái niệm giữa các đối tượng”. Thông qua một liên kết, một đối tượng có thể gọi các phương thức hoặc điều hướng qua một đối tượng khác. Một liên kết mô tả mối quan hệ giữa hai hoặc nhiều đối tượng.

Hiệp hội

Liên kết là một nhóm liên kết có cấu trúc chung và hành vi chung. Mối quan hệ mô tả mối quan hệ giữa các đối tượng của một hoặc nhiều lớp. Một liên kết có thể được định nghĩa là một thể hiện của một liên kết.

Bằng cấp của một Hiệp hội

Mức độ của một liên kết biểu thị số lượng các lớp tham gia vào một kết nối. Mức độ có thể là một bậc, nhị phân hoặc bậc ba.

  • A unary relationship kết nối các đối tượng cùng lớp.

  • A binary relationship kết nối các đối tượng của hai lớp.

  • A ternary relationship kết nối các đối tượng của ba hoặc nhiều lớp.

Tỷ lệ Cardinality của các Hiệp hội

Cardinality của một liên kết nhị phân biểu thị số lượng cá thể tham gia vào một liên kết. Có ba loại tỷ lệ bản số, đó là -

  • One–to–One - Một đối tượng duy nhất của lớp A được liên kết với một đối tượng duy nhất của lớp B.

  • One–to–Many - Một đối tượng duy nhất của lớp A được liên kết với nhiều đối tượng của lớp B.

  • Many–to–Many - Một đối tượng lớp A có thể liên kết với nhiều đối tượng lớp B và ngược lại một đối tượng lớp B có thể liên kết với nhiều đối tượng lớp A.

Tổng hợp hoặc Thành phần

Tập hợp hoặc thành phần là mối quan hệ giữa các lớp mà một lớp có thể được tạo thành từ bất kỳ sự kết hợp nào của các đối tượng của các lớp khác. Nó cho phép các đối tượng được đặt trực tiếp trong phần thân của các lớp khác. Tổng hợp được gọi là mối quan hệ “part – of” hoặc “has – a”, với khả năng điều hướng từ tổng thể sang các bộ phận của nó. Đối tượng tổng hợp là đối tượng được cấu tạo bởi một hoặc nhiều đối tượng khác.

Example

Trong mối quan hệ, “ô tô có – động cơ”, ô tô là toàn bộ vật thể hoặc tổng thể, và động cơ là “bộ phận” của ô tô. Tổng hợp có thể biểu thị -

  • Physical containment - Ví dụ, một máy tính bao gồm màn hình, CPU, chuột, bàn phím, v.v.

  • Conceptual containment - Ví dụ, cổ đông có – một cổ phần.

Lợi ích của mô hình đối tượng

Bây giờ chúng ta đã đi qua các khái niệm cốt lõi liên quan đến hướng đối tượng, sẽ đáng giá để lưu ý những lợi thế mà mô hình này mang lại.

Lợi ích của việc sử dụng mô hình đối tượng là:

  • Nó giúp phát triển phần mềm nhanh hơn.

  • Nó rất dễ dàng để bảo trì. Giả sử một mô-đun phát triển lỗi, thì một lập trình viên có thể sửa mô-đun cụ thể đó, trong khi các phần khác của phần mềm vẫn hoạt động.

  • Nó hỗ trợ nâng cấp tương đối phức tạp.

  • Nó cho phép tái sử dụng các đối tượng, thiết kế và chức năng.

  • Nó làm giảm rủi ro phát triển, đặc biệt là trong việc tích hợp các hệ thống phức tạp.