You are on page 1of 21

6.10.

Object-oriented programming

Tên sinh viên: Đinh Vũ Mạnh


Lớp CNPM6
Khoa công nghệ thông tin
Trường Đại học Điện Lực
vObject-oriented programming (Lập trình hướng đối tượng)

In this form of programming, methods and data that are strongly


related are grouped together into an object. This matches exactly the
ideas of information hiding and encap-sulation discussed above. The
items within an object are strongly coupled and the object as a whole
possesses high cohesion.

Trong dạng lập trình này, một đối tượng được tổ hợp từ các
phương thức và dữ liệu có liên quan chặt chẽ với nhau. Điều này chính
xác với ý kiến về vấn đề ẩn và đóng gói thông được thảo luận ở trên.
Các mục trong một đối tượng được phụ thuộc mạnh mẽ và tất cả đối
tượng sở hữu độ liên kết cao.
A well-designed object presents a few simple interfaces to its
clients. The interfaces are those public methods that are
declared to be accessible out-side of the object. Thus a well-
designed object displays loose coupling with other objects
–method calls with pure data parameters to methods with
functional cohesion.

Một đối tượng được thiết kế tốt biểu thị một vài giao diện đơn
giản cho các máy khách của nó. Những phương thức công khai
được khai báo có thể truy cập được bên ngoài đối tượng là các
giao diện người dùng. Do đó, một đối tượng được thiết kế tốt sẽ
hiển thị liên kết yếu với các đối tượng khác – các cuộc gọi
phương thức có tham số dữ liệu thuần túy đến các phương thức
có sự gắn kết chức năng.
It is possible to code an object that allows clients direct access
to its variables, but this is regarded as poor practice and is
heavily discouraged because it is essentially making data global.
Có thể viết mã một đối tượng cho phép khách hàng truy cập trực
tiếp vào các biến của nó, nhưng điều này được coi là thực hành
kém và không được khuyến khích nhiều vì về cơ bản, nó làm
cho dữ liệu trở nên phổ biến.

Object-oriented languages encourage the programmer to


describe classes rather than individual objects. For example,
here is the description, in Java, of a graphical object, a ball,
which has x and y screen coordinates:
Các ngôn ngữ hướng đối tượng khuyến khích lập trình
viên mô tả các lớp hơn là các đối tượng riêng lẻ. Ví dụ, đây là
hình ảnh, bằng Java, của một đối tượng đồ họa, một quả bóng,
có tọa độ trên màn hình x và y:
Here the private and public elements are clearly
distinguished. A third description, protected, means that the item
is not accessible to clients but is accessible to subclasses, as we
shall see shortly. Not shown in this example are private methods
that are used by a class as necessary to carry out its work.

Các yếu tố riêng tư và công cộng ở đây được phân biệt rõ


ràng.hình ảnh thứ ba, đã được bảo vệ, có nghĩa là mục này
người dùng không thể truy cập được nhưng người dùng có thể
truy cập được đối với các lớp con, như chúng ta sẽ thấy ngay sau
đây. các phương thức riêng tư được sử dụng bởi một lớp khi cần
thiết để thực hiện công việc của nó không hiển thị trong ví du này.
It is of course possible to misuse objects, by grouping
ingredients that are not related. However it is the purpose of a
good design approach to ensure that this does not arise (see
Chapter 11).
Tất nhiên, với cách nhóm các thành phần không liên quan
chúng ta có thể sử dụng sai các đối tượng. Tuy nhiên, mục đích
của một phương pháp thiết kế tốt là đảm bảo rằng điều này
không phát sinh (xem Chương 11).

Object-oriented programming (OOP) completely eliminates


global data; all data is encapsulated within objects.
Lập trình hướng đối tượng (OOP) loại bỏ hoàn toàn dữ
liệu toàn cục; tất cả dữ liệu được gói gọn trong các đối tượng.
vThe open-closed principle (Nguyên tắc đóng mở)
If you need to modify a class (or object), there is no need to
make a separate edited copy. Instead you can use the inheritance
mechanism of OOP. So the original copy of the class remains intact,
but is reused with additional or changed methods. This is called the
open-closed principle. Using the example above, we can create a
new class called MovingBall with additional methods that cause the
ball to move left and right:

Nếu bạn cần sửa đổi một lớp (hoặc đối tượng), không cần
phải tạo một bản sao đã chỉnh sửa riêng. Thay vào đó bạn có thể
sử dụng cơ chế kế thừa của OOP. Vì vậy, lớp vẫn còn nguyên vẹn
bản gốc, nhưng được sử dụng lại với các phương thức bổ sung
hoặc thay đổi. Đây được gọi là nguyên tắc mở-đóng. Sử dụng ví dụ
trên, chúng ta có thể tạo một lớp mới có tên là MovingBall với các
phương thức bổ sung để di chuyển quả bóng sang trái và phải:
The new class “MovingBall” has all the features of the class
“Ball”, but as the keyword extends denotes, the new class has
additional methods. The variables x and y in the superclass are
accessible in this subclass because they were declared as
protected. MovingBall makes use of Ball without altering it. Thus
the modularity and integrity of the original component remain intact.

Lớp MovingBall mới có tất cả các tính năng của lớp Ball,
nhưng khi biểu thị từ khóa extends , lớp mới có các phương thức
bổ sung. Trong lớp cha, các biến x và y có thể truy cập được trong
lớp con này vì chúng được khai báo là được bảo vệ. “MovingBall”
sử dụng “Ball” mà không thay đổi nó. Do đó, tính mô-đun và tính
toàn vẹn của thành phần ban đầu không thay đổi.
There is a snag: inheritance creates an additional type
of coupling between a class and its superclasses. Thus if a
subclass is changed, the programmer needs to re-examine
all the superclasses.

Có một nhược điểm: tính kế thừa tạo ra một kiểu liên


kết bổ sung giữa một lớp và các lớp cha của nó. Do đó, nếu
một lớp con bị thay đổi, lập trình viên cần kiểm tra lại tất cả
các lớp cha.
6.11.Discussion
In this chapter we have discussed a range of considerations
about the design of components. The ideas can be grouped into two
areas:
Trong chương này, chúng ta đã thảo luận về một loạt các chú ý về
vấn đề thiết kế các thành phần. Các ý kiến có thể được chia thành hai
nhóm phạm vi:

1 . those that deal with interactions within components – length,


cohesion
Những cách xử lý với các tương tác bên trong các thành phần - chiều
dài, liên kết

2 . those that deal with interactions between components –


information hiding, coupling,shared components
Những cash xử lý tương tác giữa các thành phần - ẩn thông tin, sự
phụ thuộc,thành phần chung
These guidelines help us in three ways:
Những hướng dẫn này giúp chúng tôi theo ba cách:
1 . they help us decide what to do during the act of design, guiding
us to software that is clear, simple and flexible
chúng giúp chúng ta quyết định phải làm gì trong quá trình thiết kế,
hướng dẫn chúng ta sử dụng phần mềm rõ ràng, đơn giản và linh
hoạt
2 . they provide us with criteria for assessing the structure of some
completed software
chúng cung cấp cho ta tiêu chí đánh giá cấu trúc của một số phần
mềm hoàn chỉnh
3 . they assist us in refactoring (restructuring) software in order to
improve it.
chúng hỗ trợ chúng tôi tái cấu trúc (tái cơ cấu) phần mềm để cải
thiện nó.
This book describes a number of methods for software
design – creating a structure for the software. Unfortunately no
method can claim to lead the designer to an ideal structure, and so
guidelines for modularity supplement design methods in providing
guidance during the process of design. In addition, they enable us
to make judgments on the quality of a piece of software that has
been designed.They may enable the designer to improve the
software structure.
Cuốn sách này mô tả một số phương pháp thiết kế phần
mềm – tạo cấu trúc cho phần mềm.Thật không may, không có
phương pháp nào có thể khẳng định đưa đến cho người thiết kế
đến một cấu trúc lý tưởng, cho nên các hướng dẫn cho phương
pháp thiết kế bổ sung mô-đun được đưa vào trong quá trình
hướng dẫn thiết kế.Ngoài ra, chúng cho phép chúng tôi đưa ra
đánh giá về chất lượng của một phần mềm đã được thiết kế.
Chúng có thể cho phép người thiết kế cải tiến cấu trúc phần mềm.
A problem with these guidelines is that they are largely
qualitative rather than quan-titative. In Chapter 29 on metrics we
look at one attempt to establish a quantitative measure for the
complexity of a component.
Một vấn đề với những hướng dẫn này là chúng phần lớn là
định tính hơn là định lượng. Trong Chương 29 về các phép đo,
chúng ta nỗ lực tìm kiếm để xây dựng một phép đo định lượng cho
độ phức tạp của một thành phần.
We shall see more on the nature of the relationships between
components in Chapter 12 on patterns.
Chúng ta sẽ xem thêm về bản chất của các mối quan hệ giữa
các thành phần trong bài giảng ở Chương 12.
Summary
Modularity is important throughout software development
including design, testing and maintenance.
Tính mô đun rất quan trọng trong suốt quá trình phát triển phần
mềm bao gồm thiết kế, thử nghiệm và bảo trì.

Restricting component size is one crude way of reducing


complexity. An extreme view is to restrict all components to no more
than seven statements.
Hạn chế kích thước thành phần là một cách đơn giản để giảm
độ phức tạp.hạn chế tất cả các thành phần không quá bảy câu lệnh
là một cách nhìn nhận cực đoan.
The principle of information hiding is that data should be
inaccessible other than by means of the methods that are specially
provided for accessing the data.
Nguyên tắc ẩn thông tin là không thể truy cập dữ liệu trừ khi
được cung cấp phương pháp truy cập dữ liệu đặc biệt.

Coupling and cohesion are terms that describe the character of


the interaction between components and within components,
respectively. Coupling and cohesion are complementary.
Phụ thuộc và liên kết lần lượt là các thuật ngữ mô tả đặc tính
của sự tương tác giữa các thành phần và bên trong các thành phần.
Phụ thuộc và liên kết bổ khuyết cho nhau.
Strong coupling and weak cohesion are bad; weak coupling and
strong cohesion are good. Thus coupling and cohesion provide a
terminology and a qualitative analysis of modularity.
Phụ thuộc mạnh mà liên kết yếu thì không hay; phụ thuộc yếu
nhưng liên kết mạnh thì ổn định. Do đó, phụ thuộc và liên kết cung
cấp một thuật ngữ và phân tích định tính về tính mô đun.

Object-oriented programming explicitly supports information


hiding, weak couplingand strong cohesion.
Lập trình hướng đối tượng hỗ trợ trực tiếp việc ẩn thông tin,
phụ thuộc yếu và liên kết mạnh.

You might also like